aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/sysctl/kernel.txt1
-rw-r--r--MAINTAINERS9
-rw-r--r--drivers/Kconfig2
-rw-r--r--drivers/Makefile1
-rw-r--r--drivers/staging/Kconfig46
-rw-r--r--drivers/staging/Makefile15
-rw-r--r--drivers/staging/at76_usb/Kconfig8
-rw-r--r--drivers/staging/at76_usb/Makefile1
-rw-r--r--drivers/staging/at76_usb/TODO2
-rw-r--r--drivers/staging/at76_usb/at76_usb.c5559
-rw-r--r--drivers/staging/at76_usb/at76_usb.h619
-rw-r--r--drivers/staging/echo/Kconfig9
-rw-r--r--drivers/staging/echo/Makefile1
-rw-r--r--drivers/staging/echo/TODO10
-rw-r--r--drivers/staging/echo/bit_operations.h253
-rw-r--r--drivers/staging/echo/echo.c632
-rw-r--r--drivers/staging/echo/echo.h220
-rw-r--r--drivers/staging/echo/fir.h369
-rw-r--r--drivers/staging/echo/mmx.h288
-rw-r--r--drivers/staging/et131x/Kconfig18
-rw-r--r--drivers/staging/et131x/Makefile18
-rw-r--r--drivers/staging/et131x/README25
-rw-r--r--drivers/staging/et131x/et1310_address_map.h2399
-rw-r--r--drivers/staging/et131x/et1310_eeprom.c480
-rw-r--r--drivers/staging/et131x/et1310_eeprom.h89
-rw-r--r--drivers/staging/et131x/et1310_jagcore.c220
-rw-r--r--drivers/staging/et131x/et1310_jagcore.h112
-rw-r--r--drivers/staging/et131x/et1310_mac.c792
-rw-r--r--drivers/staging/et131x/et1310_mac.h93
-rw-r--r--drivers/staging/et131x/et1310_phy.c1281
-rw-r--r--drivers/staging/et131x/et1310_phy.h910
-rw-r--r--drivers/staging/et131x/et1310_pm.c207
-rw-r--r--drivers/staging/et131x/et1310_pm.h125
-rw-r--r--drivers/staging/et131x/et1310_rx.c1391
-rw-r--r--drivers/staging/et131x/et1310_rx.h373
-rw-r--r--drivers/staging/et131x/et1310_tx.c1525
-rw-r--r--drivers/staging/et131x/et1310_tx.h242
-rw-r--r--drivers/staging/et131x/et131x_adapter.h347
-rw-r--r--drivers/staging/et131x/et131x_config.c325
-rw-r--r--drivers/staging/et131x/et131x_config.h67
-rw-r--r--drivers/staging/et131x/et131x_debug.c218
-rw-r--r--drivers/staging/et131x/et131x_debug.h201
-rw-r--r--drivers/staging/et131x/et131x_defs.h128
-rw-r--r--drivers/staging/et131x/et131x_initpci.c1046
-rw-r--r--drivers/staging/et131x/et131x_initpci.h73
-rw-r--r--drivers/staging/et131x/et131x_isr.c488
-rw-r--r--drivers/staging/et131x/et131x_isr.h65
-rw-r--r--drivers/staging/et131x/et131x_netdev.c856
-rw-r--r--drivers/staging/et131x/et131x_netdev.h64
-rw-r--r--drivers/staging/et131x/et131x_version.h81
-rw-r--r--drivers/staging/go7007/Kconfig25
-rw-r--r--drivers/staging/go7007/Makefile18
-rw-r--r--drivers/staging/go7007/README11
-rw-r--r--drivers/staging/go7007/go7007-driver.c688
-rw-r--r--drivers/staging/go7007/go7007-fw.c1639
-rw-r--r--drivers/staging/go7007/go7007-i2c.c309
-rw-r--r--drivers/staging/go7007/go7007-priv.h279
-rw-r--r--drivers/staging/go7007/go7007-usb.c1229
-rw-r--r--drivers/staging/go7007/go7007-v4l2.c1499
-rw-r--r--drivers/staging/go7007/go7007.h114
-rw-r--r--drivers/staging/go7007/saa7134-go7007.c484
-rw-r--r--drivers/staging/go7007/snd-go7007.c305
-rw-r--r--drivers/staging/go7007/wis-i2c.h55
-rw-r--r--drivers/staging/go7007/wis-ov7640.c130
-rw-r--r--drivers/staging/go7007/wis-saa7113.c358
-rw-r--r--drivers/staging/go7007/wis-saa7115.c491
-rw-r--r--drivers/staging/go7007/wis-sony-tuner.c742
-rw-r--r--drivers/staging/go7007/wis-tw2804.c380
-rw-r--r--drivers/staging/go7007/wis-tw9903.c362
-rw-r--r--drivers/staging/go7007/wis-uda1342.c136
-rw-r--r--drivers/staging/me4000/Kconfig10
-rw-r--r--drivers/staging/me4000/Makefile1
-rw-r--r--drivers/staging/me4000/README13
-rw-r--r--drivers/staging/me4000/me4000.c6133
-rw-r--r--drivers/staging/me4000/me4000.h954
-rw-r--r--drivers/staging/me4000/me4000_firmware.h10033
-rw-r--r--drivers/staging/me4000/me4610_firmware.h5409
-rw-r--r--drivers/staging/slicoss/Kconfig14
-rw-r--r--drivers/staging/slicoss/Makefile1
-rw-r--r--drivers/staging/slicoss/README19
-rw-r--r--drivers/staging/slicoss/gbdownload.h8215
-rw-r--r--drivers/staging/slicoss/gbrcvucode.h238
-rw-r--r--drivers/staging/slicoss/oasisdbgdownload.h6850
-rw-r--r--drivers/staging/slicoss/oasisdownload.h6848
-rw-r--r--drivers/staging/slicoss/oasisrcvucode.h205
-rw-r--r--drivers/staging/slicoss/slic.h598
-rw-r--r--drivers/staging/slicoss/slic_os.h84
-rw-r--r--drivers/staging/slicoss/slicbuild.h96
-rw-r--r--drivers/staging/slicoss/slicdbg.h100
-rw-r--r--drivers/staging/slicoss/slicdump.h278
-rw-r--r--drivers/staging/slicoss/slichw.h845
-rw-r--r--drivers/staging/slicoss/slicinc.h185
-rw-r--r--drivers/staging/slicoss/slicoss.c5936
-rw-r--r--drivers/staging/staging.c19
-rw-r--r--drivers/staging/sxg/Kconfig10
-rw-r--r--drivers/staging/sxg/Makefile1
-rw-r--r--drivers/staging/sxg/README13
-rw-r--r--drivers/staging/sxg/saharadbgdownload.h4854
-rw-r--r--drivers/staging/sxg/sxg.c3624
-rw-r--r--drivers/staging/sxg/sxg.h773
-rw-r--r--drivers/staging/sxg/sxg_os.h154
-rw-r--r--drivers/staging/sxg/sxgdbg.h190
-rw-r--r--drivers/staging/sxg/sxghif.h861
-rw-r--r--drivers/staging/sxg/sxghw.h734
-rw-r--r--drivers/staging/sxg/sxgphycode.h349
-rw-r--r--drivers/staging/usbip/Kconfig36
-rw-r--r--drivers/staging/usbip/Makefile12
-rw-r--r--drivers/staging/usbip/README6
-rw-r--r--drivers/staging/usbip/stub.h95
-rw-r--r--drivers/staging/usbip/stub_dev.c483
-rw-r--r--drivers/staging/usbip/stub_main.c300
-rw-r--r--drivers/staging/usbip/stub_rx.c615
-rw-r--r--drivers/staging/usbip/stub_tx.c371
-rw-r--r--drivers/staging/usbip/usbip_common.c997
-rw-r--r--drivers/staging/usbip/usbip_common.h406
-rw-r--r--drivers/staging/usbip/usbip_event.c141
-rw-r--r--drivers/staging/usbip/vhci.h142
-rw-r--r--drivers/staging/usbip/vhci_hcd.c1275
-rw-r--r--drivers/staging/usbip/vhci_rx.c251
-rw-r--r--drivers/staging/usbip/vhci_sysfs.c250
-rw-r--r--drivers/staging/usbip/vhci_tx.c239
-rw-r--r--drivers/staging/winbond/Kconfig7
-rw-r--r--drivers/staging/winbond/Makefile18
-rw-r--r--drivers/staging/winbond/README10
-rw-r--r--drivers/staging/winbond/adapter.h23
-rw-r--r--drivers/staging/winbond/bss_f.h59
-rw-r--r--drivers/staging/winbond/bssdscpt.h156
-rw-r--r--drivers/staging/winbond/ds_tkip.h33
-rw-r--r--drivers/staging/winbond/gl_80211.h125
-rw-r--r--drivers/staging/winbond/ioctls.h678
-rw-r--r--drivers/staging/winbond/linux/common.h143
-rw-r--r--drivers/staging/winbond/linux/sysdef.h73
-rw-r--r--drivers/staging/winbond/linux/wb35reg.c747
-rw-r--r--drivers/staging/winbond/linux/wb35reg_f.h56
-rw-r--r--drivers/staging/winbond/linux/wb35reg_s.h170
-rw-r--r--drivers/staging/winbond/linux/wb35rx.c337
-rw-r--r--drivers/staging/winbond/linux/wb35rx_f.h17
-rw-r--r--drivers/staging/winbond/linux/wb35rx_s.h48
-rw-r--r--drivers/staging/winbond/linux/wb35tx.c313
-rw-r--r--drivers/staging/winbond/linux/wb35tx_f.h20
-rw-r--r--drivers/staging/winbond/linux/wb35tx_s.h47
-rw-r--r--drivers/staging/winbond/linux/wbusb.c404
-rw-r--r--drivers/staging/winbond/linux/wbusb_f.h34
-rw-r--r--drivers/staging/winbond/linux/wbusb_s.h42
-rw-r--r--drivers/staging/winbond/localpara.h275
-rw-r--r--drivers/staging/winbond/mac_structures.h670
-rw-r--r--drivers/staging/winbond/mds.c630
-rw-r--r--drivers/staging/winbond/mds_f.h33
-rw-r--r--drivers/staging/winbond/mds_s.h183
-rw-r--r--drivers/staging/winbond/mlme_mib.h84
-rw-r--r--drivers/staging/winbond/mlme_s.h195
-rw-r--r--drivers/staging/winbond/mlmetxrx.c150
-rw-r--r--drivers/staging/winbond/mlmetxrx_f.h52
-rw-r--r--drivers/staging/winbond/mto.c1229
-rw-r--r--drivers/staging/winbond/mto.h265
-rw-r--r--drivers/staging/winbond/mto_f.h7
-rw-r--r--drivers/staging/winbond/os_common.h2
-rw-r--r--drivers/staging/winbond/phy_calibration.c1759
-rw-r--r--drivers/staging/winbond/phy_calibration.h101
-rw-r--r--drivers/staging/winbond/reg.c2683
-rw-r--r--drivers/staging/winbond/rxisr.c30
-rw-r--r--drivers/staging/winbond/scan_s.h115
-rw-r--r--drivers/staging/winbond/sme_api.c13
-rw-r--r--drivers/staging/winbond/sme_api.h265
-rw-r--r--drivers/staging/winbond/sme_s.h228
-rw-r--r--drivers/staging/winbond/wb35_ver.h30
-rw-r--r--drivers/staging/winbond/wbhal.c878
-rw-r--r--drivers/staging/winbond/wbhal_f.h122
-rw-r--r--drivers/staging/winbond/wbhal_s.h615
-rw-r--r--drivers/staging/winbond/wblinux.c277
-rw-r--r--drivers/staging/winbond/wblinux_f.h23
-rw-r--r--drivers/staging/winbond/wblinux_s.h45
-rw-r--r--drivers/staging/wlan-ng/Kconfig10
-rw-r--r--drivers/staging/wlan-ng/Makefile9
-rw-r--r--drivers/staging/wlan-ng/README8
-rw-r--r--drivers/staging/wlan-ng/hfa384x.c4018
-rw-r--r--drivers/staging/wlan-ng/hfa384x.h3067
-rw-r--r--drivers/staging/wlan-ng/hfa384x_usb.c5027
-rw-r--r--drivers/staging/wlan-ng/p80211conv.c683
-rw-r--r--drivers/staging/wlan-ng/p80211conv.h186
-rw-r--r--drivers/staging/wlan-ng/p80211hdr.h299
-rw-r--r--drivers/staging/wlan-ng/p80211ioctl.h123
-rw-r--r--drivers/staging/wlan-ng/p80211meta.h169
-rw-r--r--drivers/staging/wlan-ng/p80211metadef.h2524
-rw-r--r--drivers/staging/wlan-ng/p80211metamib.h105
-rw-r--r--drivers/staging/wlan-ng/p80211metamsg.h105
-rw-r--r--drivers/staging/wlan-ng/p80211metastruct.h644
-rw-r--r--drivers/staging/wlan-ng/p80211mgmt.h575
-rw-r--r--drivers/staging/wlan-ng/p80211mod.c216
-rw-r--r--drivers/staging/wlan-ng/p80211msg.h102
-rw-r--r--drivers/staging/wlan-ng/p80211netdev.c1502
-rw-r--r--drivers/staging/wlan-ng/p80211netdev.h336
-rw-r--r--drivers/staging/wlan-ng/p80211req.c329
-rw-r--r--drivers/staging/wlan-ng/p80211req.h68
-rw-r--r--drivers/staging/wlan-ng/p80211types.h675
-rw-r--r--drivers/staging/wlan-ng/p80211wep.c317
-rw-r--r--drivers/staging/wlan-ng/p80211wext.c2048
-rw-r--r--drivers/staging/wlan-ng/prism2_cs.c1487
-rw-r--r--drivers/staging/wlan-ng/prism2_pci.c332
-rw-r--r--drivers/staging/wlan-ng/prism2_plx.c472
-rw-r--r--drivers/staging/wlan-ng/prism2_usb.c361
-rw-r--r--drivers/staging/wlan-ng/prism2mgmt.c2956
-rw-r--r--drivers/staging/wlan-ng/prism2mgmt.h182
-rw-r--r--drivers/staging/wlan-ng/prism2mib.c3799
-rw-r--r--drivers/staging/wlan-ng/prism2sta.c2502
-rw-r--r--drivers/staging/wlan-ng/version.h64
-rw-r--r--drivers/staging/wlan-ng/wlan_compat.h757
-rw-r--r--include/linux/kernel.h1
-rw-r--r--kernel/module.c11
-rw-r--r--kernel/panic.c2
-rw-r--r--scripts/mod/modpost.c9
211 files changed, 152422 insertions, 1 deletions
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
index e1ff0d920a5..bde799e0659 100644
--- a/Documentation/sysctl/kernel.txt
+++ b/Documentation/sysctl/kernel.txt
@@ -369,4 +369,5 @@ can be ORed together:
369 2 - A module was force loaded by insmod -f. 369 2 - A module was force loaded by insmod -f.
370 Set by modutils >= 2.4.9 and module-init-tools. 370 Set by modutils >= 2.4.9 and module-init-tools.
371 4 - Unsafe SMP processors: SMP with CPUs not designed for SMP. 371 4 - Unsafe SMP processors: SMP with CPUs not designed for SMP.
372 64 - A module from drivers/staging was loaded.
372 373
diff --git a/MAINTAINERS b/MAINTAINERS
index 52702b057c0..355c192d699 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3937,7 +3937,7 @@ M: jbglaw@lug-owl.de
3937L: linux-kernel@vger.kernel.org 3937L: linux-kernel@vger.kernel.org
3938S: Maintained 3938S: Maintained
3939 3939
3940STABLE BRANCH: 3940STABLE BRANCH
3941P: Greg Kroah-Hartman 3941P: Greg Kroah-Hartman
3942M: greg@kroah.com 3942M: greg@kroah.com
3943P: Chris Wright 3943P: Chris Wright
@@ -3945,6 +3945,13 @@ M: chrisw@sous-sol.org
3945L: stable@kernel.org 3945L: stable@kernel.org
3946S: Maintained 3946S: Maintained
3947 3947
3948STAGING SUBSYSTEM
3949P: Greg Kroah-Hartman
3950M: gregkh@suse.de
3951L: linux-kernel@vger.kernel.org
3952T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
3953S: Maintained
3954
3948STARFIRE/DURALAN NETWORK DRIVER 3955STARFIRE/DURALAN NETWORK DRIVER
3949P: Ion Badulescu 3956P: Ion Badulescu
3950M: ionut@cs.columbia.edu 3957M: ionut@cs.columbia.edu
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 59f33fa6af3..d19b6f5a110 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -101,4 +101,6 @@ source "drivers/auxdisplay/Kconfig"
101source "drivers/uio/Kconfig" 101source "drivers/uio/Kconfig"
102 102
103source "drivers/xen/Kconfig" 103source "drivers/xen/Kconfig"
104
105source "drivers/staging/Kconfig"
104endmenu 106endmenu
diff --git a/drivers/Makefile b/drivers/Makefile
index 2735bde7347..46c8681a07f 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -99,3 +99,4 @@ obj-$(CONFIG_OF) += of/
99obj-$(CONFIG_SSB) += ssb/ 99obj-$(CONFIG_SSB) += ssb/
100obj-$(CONFIG_VIRTIO) += virtio/ 100obj-$(CONFIG_VIRTIO) += virtio/
101obj-$(CONFIG_REGULATOR) += regulator/ 101obj-$(CONFIG_REGULATOR) += regulator/
102obj-$(CONFIG_STAGING) += staging/
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
new file mode 100644
index 00000000000..2a79decd7df
--- /dev/null
+++ b/drivers/staging/Kconfig
@@ -0,0 +1,46 @@
1menuconfig STAGING
2 bool "Staging drivers"
3 default n
4 ---help---
5 This option allows you to select a number of drivers that are
6 not of the "normal" Linux kernel quality level. These drivers
7 are placed here in order to get a wider audience for use of
8 them. Please note that these drivers are under heavy
9 development, may or may not work, and may contain userspace
10 interfaces that most likely will be changed in the near
11 future.
12
13 Using any of these drivers will taint your kernel which might
14 affect support options from both the community, and various
15 commercial support orginizations.
16
17 If you wish to work on these drivers, to help improve them, or
18 to report problems you have with them, please see the
19 driver_name.README file in the drivers/staging/ directory to
20 see what needs to be worked on, and who to contact.
21
22 If in doubt, say N here.
23
24if STAGING
25
26source "drivers/staging/et131x/Kconfig"
27
28source "drivers/staging/slicoss/Kconfig"
29
30source "drivers/staging/sxg/Kconfig"
31
32source "drivers/staging/me4000/Kconfig"
33
34source "drivers/staging/go7007/Kconfig"
35
36source "drivers/staging/usbip/Kconfig"
37
38source "drivers/staging/winbond/Kconfig"
39
40source "drivers/staging/wlan-ng/Kconfig"
41
42source "drivers/staging/echo/Kconfig"
43
44source "drivers/staging/at76_usb/Kconfig"
45
46endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
new file mode 100644
index 00000000000..325bca4f71c
--- /dev/null
+++ b/drivers/staging/Makefile
@@ -0,0 +1,15 @@
1# Makefile for staging directory
2
3# fix for build system bug...
4obj-$(CONFIG_STAGING) += staging.o
5
6obj-$(CONFIG_ET131X) += et131x/
7obj-$(CONFIG_SLICOSS) += slicoss/
8obj-$(CONFIG_SXG) += sxg/
9obj-$(CONFIG_ME4000) += me4000/
10obj-$(CONFIG_VIDEO_GO7007) += go7007/
11obj-$(CONFIG_USB_IP_COMMON) += usbip/
12obj-$(CONFIG_W35UND) += winbond/
13obj-$(CONFIG_PRISM2_USB) += wlan-ng/
14obj-$(CONFIG_ECHO) += echo/
15obj-$(CONFIG_USB_ATMEL) += at76_usb/
diff --git a/drivers/staging/at76_usb/Kconfig b/drivers/staging/at76_usb/Kconfig
new file mode 100644
index 00000000000..8606f962162
--- /dev/null
+++ b/drivers/staging/at76_usb/Kconfig
@@ -0,0 +1,8 @@
1config USB_ATMEL
2 tristate "Atmel at76c503/at76c505/at76c505a USB cards"
3 depends on WLAN_80211 && USB
4 default N
5 select FW_LOADER
6 ---help---
7 Enable support for USB Wireless devices using Atmel at76c503,
8 at76c505 or at76c505a chips.
diff --git a/drivers/staging/at76_usb/Makefile b/drivers/staging/at76_usb/Makefile
new file mode 100644
index 00000000000..6a47e887230
--- /dev/null
+++ b/drivers/staging/at76_usb/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_USB_ATMEL) += at76_usb.o
diff --git a/drivers/staging/at76_usb/TODO b/drivers/staging/at76_usb/TODO
new file mode 100644
index 00000000000..6911ca71a41
--- /dev/null
+++ b/drivers/staging/at76_usb/TODO
@@ -0,0 +1,2 @@
1rewrite the driver to use the proper in-kernel wireless stack
2instead of using its own.
diff --git a/drivers/staging/at76_usb/at76_usb.c b/drivers/staging/at76_usb/at76_usb.c
new file mode 100644
index 00000000000..52df0c66518
--- /dev/null
+++ b/drivers/staging/at76_usb/at76_usb.c
@@ -0,0 +1,5559 @@
1/*
2 * at76c503/at76c505 USB driver
3 *
4 * Copyright (c) 2002 - 2003 Oliver Kurth
5 * Copyright (c) 2004 Joerg Albert <joerg.albert@gmx.de>
6 * Copyright (c) 2004 Nick Jones
7 * Copyright (c) 2004 Balint Seeber <n0_5p4m_p13453@hotmail.com>
8 * Copyright (c) 2007 Guido Guenther <agx@sigxcpu.org>
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of
13 * the License, or (at your option) any later version.
14 *
15 * This file is part of the Berlios driver for WLAN USB devices based on the
16 * Atmel AT76C503A/505/505A.
17 *
18 * Some iw_handler code was taken from airo.c, (C) 1999 Benjamin Reed
19 */
20
21#include <linux/init.h>
22#include <linux/kernel.h>
23#include <linux/sched.h>
24#include <linux/errno.h>
25#include <linux/slab.h>
26#include <linux/module.h>
27#include <linux/spinlock.h>
28#include <linux/list.h>
29#include <linux/usb.h>
30#include <linux/netdevice.h>
31#include <linux/if_arp.h>
32#include <linux/etherdevice.h>
33#include <linux/ethtool.h>
34#include <linux/wireless.h>
35#include <net/iw_handler.h>
36#include <net/ieee80211_radiotap.h>
37#include <linux/firmware.h>
38#include <linux/leds.h>
39#include <net/ieee80211.h>
40
41#include "at76_usb.h"
42
43/* Version information */
44#define DRIVER_NAME "at76_usb"
45#define DRIVER_VERSION "0.17"
46#define DRIVER_DESC "Atmel at76x USB Wireless LAN Driver"
47
48/* at76_debug bits */
49#define DBG_PROGRESS 0x00000001 /* authentication/accociation */
50#define DBG_BSS_TABLE 0x00000002 /* show BSS table after scans */
51#define DBG_IOCTL 0x00000004 /* ioctl calls / settings */
52#define DBG_MAC_STATE 0x00000008 /* MAC state transitions */
53#define DBG_TX_DATA 0x00000010 /* tx header */
54#define DBG_TX_DATA_CONTENT 0x00000020 /* tx content */
55#define DBG_TX_MGMT 0x00000040 /* tx management */
56#define DBG_RX_DATA 0x00000080 /* rx data header */
57#define DBG_RX_DATA_CONTENT 0x00000100 /* rx data content */
58#define DBG_RX_MGMT 0x00000200 /* rx mgmt frame headers */
59#define DBG_RX_BEACON 0x00000400 /* rx beacon */
60#define DBG_RX_CTRL 0x00000800 /* rx control */
61#define DBG_RX_MGMT_CONTENT 0x00001000 /* rx mgmt content */
62#define DBG_RX_FRAGS 0x00002000 /* rx data fragment handling */
63#define DBG_DEVSTART 0x00004000 /* fw download, device start */
64#define DBG_URB 0x00008000 /* rx urb status, ... */
65#define DBG_RX_ATMEL_HDR 0x00010000 /* Atmel-specific Rx headers */
66#define DBG_PROC_ENTRY 0x00020000 /* procedure entries/exits */
67#define DBG_PM 0x00040000 /* power management settings */
68#define DBG_BSS_MATCH 0x00080000 /* BSS match failures */
69#define DBG_PARAMS 0x00100000 /* show configured parameters */
70#define DBG_WAIT_COMPLETE 0x00200000 /* command completion */
71#define DBG_RX_FRAGS_SKB 0x00400000 /* skb header of Rx fragments */
72#define DBG_BSS_TABLE_RM 0x00800000 /* purging bss table entries */
73#define DBG_MONITOR_MODE 0x01000000 /* monitor mode */
74#define DBG_MIB 0x02000000 /* dump all MIBs on startup */
75#define DBG_MGMT_TIMER 0x04000000 /* dump mgmt_timer ops */
76#define DBG_WE_EVENTS 0x08000000 /* dump wireless events */
77#define DBG_FW 0x10000000 /* firmware download */
78#define DBG_DFU 0x20000000 /* device firmware upgrade */
79
80#define DBG_DEFAULTS 0
81
82/* Use our own dbg macro */
83#define at76_dbg(bits, format, arg...) \
84 do { \
85 if (at76_debug & (bits)) \
86 printk(KERN_DEBUG DRIVER_NAME ": " format "\n" , ## arg); \
87 } while (0)
88
89static int at76_debug = DBG_DEFAULTS;
90
91/* Protect against concurrent firmware loading and parsing */
92static struct mutex fw_mutex;
93
94static struct fwentry firmwares[] = {
95 [0] = {""},
96 [BOARD_503_ISL3861] = {"atmel_at76c503-i3861.bin"},
97 [BOARD_503_ISL3863] = {"atmel_at76c503-i3863.bin"},
98 [BOARD_503] = {"atmel_at76c503-rfmd.bin"},
99 [BOARD_503_ACC] = {"atmel_at76c503-rfmd-acc.bin"},
100 [BOARD_505] = {"atmel_at76c505-rfmd.bin"},
101 [BOARD_505_2958] = {"atmel_at76c505-rfmd2958.bin"},
102 [BOARD_505A] = {"atmel_at76c505a-rfmd2958.bin"},
103 [BOARD_505AMX] = {"atmel_at76c505amx-rfmd.bin"},
104};
105
106#define USB_DEVICE_DATA(__ops) .driver_info = (kernel_ulong_t)(__ops)
107
108static struct usb_device_id dev_table[] = {
109 /*
110 * at76c503-i3861
111 */
112 /* Generic AT76C503/3861 device */
113 {USB_DEVICE(0x03eb, 0x7603), USB_DEVICE_DATA(BOARD_503_ISL3861)},
114 /* Linksys WUSB11 v2.1/v2.6 */
115 {USB_DEVICE(0x066b, 0x2211), USB_DEVICE_DATA(BOARD_503_ISL3861)},
116 /* Netgear MA101 rev. A */
117 {USB_DEVICE(0x0864, 0x4100), USB_DEVICE_DATA(BOARD_503_ISL3861)},
118 /* Tekram U300C / Allnet ALL0193 */
119 {USB_DEVICE(0x0b3b, 0x1612), USB_DEVICE_DATA(BOARD_503_ISL3861)},
120 /* HP HN210W J7801A */
121 {USB_DEVICE(0x03f0, 0x011c), USB_DEVICE_DATA(BOARD_503_ISL3861)},
122 /* Sitecom/Z-Com/Zyxel M4Y-750 */
123 {USB_DEVICE(0x0cde, 0x0001), USB_DEVICE_DATA(BOARD_503_ISL3861)},
124 /* Dynalink/Askey WLL013 (intersil) */
125 {USB_DEVICE(0x069a, 0x0320), USB_DEVICE_DATA(BOARD_503_ISL3861)},
126 /* EZ connect 11Mpbs Wireless USB Adapter SMC2662W v1 */
127 {USB_DEVICE(0x0d5c, 0xa001), USB_DEVICE_DATA(BOARD_503_ISL3861)},
128 /* BenQ AWL300 */
129 {USB_DEVICE(0x04a5, 0x9000), USB_DEVICE_DATA(BOARD_503_ISL3861)},
130 /* Addtron AWU-120, Compex WLU11 */
131 {USB_DEVICE(0x05dd, 0xff31), USB_DEVICE_DATA(BOARD_503_ISL3861)},
132 /* Intel AP310 AnyPoint II USB */
133 {USB_DEVICE(0x8086, 0x0200), USB_DEVICE_DATA(BOARD_503_ISL3861)},
134 /* Dynalink L11U */
135 {USB_DEVICE(0x0d8e, 0x7100), USB_DEVICE_DATA(BOARD_503_ISL3861)},
136 /* Arescom WL-210, FCC id 07J-GL2411USB */
137 {USB_DEVICE(0x0d8e, 0x7110), USB_DEVICE_DATA(BOARD_503_ISL3861)},
138 /* I-O DATA WN-B11/USB */
139 {USB_DEVICE(0x04bb, 0x0919), USB_DEVICE_DATA(BOARD_503_ISL3861)},
140 /* BT Voyager 1010 */
141 {USB_DEVICE(0x069a, 0x0821), USB_DEVICE_DATA(BOARD_503_ISL3861)},
142 /*
143 * at76c503-i3863
144 */
145 /* Generic AT76C503/3863 device */
146 {USB_DEVICE(0x03eb, 0x7604), USB_DEVICE_DATA(BOARD_503_ISL3863)},
147 /* Samsung SWL-2100U */
148 {USB_DEVICE(0x055d, 0xa000), USB_DEVICE_DATA(BOARD_503_ISL3863)},
149 /*
150 * at76c503-rfmd
151 */
152 /* Generic AT76C503/RFMD device */
153 {USB_DEVICE(0x03eb, 0x7605), USB_DEVICE_DATA(BOARD_503)},
154 /* Dynalink/Askey WLL013 (rfmd) */
155 {USB_DEVICE(0x069a, 0x0321), USB_DEVICE_DATA(BOARD_503)},
156 /* Linksys WUSB11 v2.6 */
157 {USB_DEVICE(0x077b, 0x2219), USB_DEVICE_DATA(BOARD_503)},
158 /* Network Everywhere NWU11B */
159 {USB_DEVICE(0x077b, 0x2227), USB_DEVICE_DATA(BOARD_503)},
160 /* Netgear MA101 rev. B */
161 {USB_DEVICE(0x0864, 0x4102), USB_DEVICE_DATA(BOARD_503)},
162 /* D-Link DWL-120 rev. E */
163 {USB_DEVICE(0x2001, 0x3200), USB_DEVICE_DATA(BOARD_503)},
164 /* Actiontec 802UAT1, HWU01150-01UK */
165 {USB_DEVICE(0x1668, 0x7605), USB_DEVICE_DATA(BOARD_503)},
166 /* AirVast W-Buddie WN210 */
167 {USB_DEVICE(0x03eb, 0x4102), USB_DEVICE_DATA(BOARD_503)},
168 /* Dick Smith Electronics XH1153 802.11b USB adapter */
169 {USB_DEVICE(0x1371, 0x5743), USB_DEVICE_DATA(BOARD_503)},
170 /* CNet CNUSB611 */
171 {USB_DEVICE(0x1371, 0x0001), USB_DEVICE_DATA(BOARD_503)},
172 /* FiberLine FL-WL200U */
173 {USB_DEVICE(0x1371, 0x0002), USB_DEVICE_DATA(BOARD_503)},
174 /* BenQ AWL400 USB stick */
175 {USB_DEVICE(0x04a5, 0x9001), USB_DEVICE_DATA(BOARD_503)},
176 /* 3Com 3CRSHEW696 */
177 {USB_DEVICE(0x0506, 0x0a01), USB_DEVICE_DATA(BOARD_503)},
178 /* Siemens Santis ADSL WLAN USB adapter WLL 013 */
179 {USB_DEVICE(0x0681, 0x001b), USB_DEVICE_DATA(BOARD_503)},
180 /* Belkin F5D6050, version 2 */
181 {USB_DEVICE(0x050d, 0x0050), USB_DEVICE_DATA(BOARD_503)},
182 /* iBlitzz, BWU613 (not *B or *SB) */
183 {USB_DEVICE(0x07b8, 0xb000), USB_DEVICE_DATA(BOARD_503)},
184 /* Gigabyte GN-WLBM101 */
185 {USB_DEVICE(0x1044, 0x8003), USB_DEVICE_DATA(BOARD_503)},
186 /* Planex GW-US11S */
187 {USB_DEVICE(0x2019, 0x3220), USB_DEVICE_DATA(BOARD_503)},
188 /* Internal WLAN adapter in h5[4,5]xx series iPAQs */
189 {USB_DEVICE(0x049f, 0x0032), USB_DEVICE_DATA(BOARD_503)},
190 /* Corega Wireless LAN USB-11 mini */
191 {USB_DEVICE(0x07aa, 0x0011), USB_DEVICE_DATA(BOARD_503)},
192 /* Corega Wireless LAN USB-11 mini2 */
193 {USB_DEVICE(0x07aa, 0x0018), USB_DEVICE_DATA(BOARD_503)},
194 /* Uniden PCW100 */
195 {USB_DEVICE(0x05dd, 0xff35), USB_DEVICE_DATA(BOARD_503)},
196 /*
197 * at76c503-rfmd-acc
198 */
199 /* SMC2664W */
200 {USB_DEVICE(0x083a, 0x3501), USB_DEVICE_DATA(BOARD_503_ACC)},
201 /* Belkin F5D6050, SMC2662W v2, SMC2662W-AR */
202 {USB_DEVICE(0x0d5c, 0xa002), USB_DEVICE_DATA(BOARD_503_ACC)},
203 /*
204 * at76c505-rfmd
205 */
206 /* Generic AT76C505/RFMD */
207 {USB_DEVICE(0x03eb, 0x7606), USB_DEVICE_DATA(BOARD_505)},
208 /*
209 * at76c505-rfmd2958
210 */
211 /* Generic AT76C505/RFMD, OvisLink WL-1130USB */
212 {USB_DEVICE(0x03eb, 0x7613), USB_DEVICE_DATA(BOARD_505_2958)},
213 /* Fiberline FL-WL240U */
214 {USB_DEVICE(0x1371, 0x0014), USB_DEVICE_DATA(BOARD_505_2958)},
215 /* CNet CNUSB-611G */
216 {USB_DEVICE(0x1371, 0x0013), USB_DEVICE_DATA(BOARD_505_2958)},
217 /* Linksys WUSB11 v2.8 */
218 {USB_DEVICE(0x1915, 0x2233), USB_DEVICE_DATA(BOARD_505_2958)},
219 /* Xterasys XN-2122B, IBlitzz BWU613B/BWU613SB */
220 {USB_DEVICE(0x12fd, 0x1001), USB_DEVICE_DATA(BOARD_505_2958)},
221 /* Corega WLAN USB Stick 11 */
222 {USB_DEVICE(0x07aa, 0x7613), USB_DEVICE_DATA(BOARD_505_2958)},
223 /* Microstar MSI Box MS6978 */
224 {USB_DEVICE(0x0db0, 0x1020), USB_DEVICE_DATA(BOARD_505_2958)},
225 /*
226 * at76c505a-rfmd2958
227 */
228 /* Generic AT76C505A device */
229 {USB_DEVICE(0x03eb, 0x7614), USB_DEVICE_DATA(BOARD_505A)},
230 /* Generic AT76C505AS device */
231 {USB_DEVICE(0x03eb, 0x7617), USB_DEVICE_DATA(BOARD_505A)},
232 /* Siemens Gigaset USB WLAN Adapter 11 */
233 {USB_DEVICE(0x1690, 0x0701), USB_DEVICE_DATA(BOARD_505A)},
234 /*
235 * at76c505amx-rfmd
236 */
237 /* Generic AT76C505AMX device */
238 {USB_DEVICE(0x03eb, 0x7615), USB_DEVICE_DATA(BOARD_505AMX)},
239 {}
240};
241
242MODULE_DEVICE_TABLE(usb, dev_table);
243
244/* Supported rates of this hardware, bit 7 marks basic rates */
245static const u8 hw_rates[] = { 0x82, 0x84, 0x0b, 0x16 };
246
247/* Frequency of each channel in MHz */
248static const long channel_frequency[] = {
249 2412, 2417, 2422, 2427, 2432, 2437, 2442,
250 2447, 2452, 2457, 2462, 2467, 2472, 2484
251};
252
253#define NUM_CHANNELS ARRAY_SIZE(channel_frequency)
254
255static const char *const preambles[] = { "long", "short", "auto" };
256
257static const char *const mac_states[] = {
258 [MAC_INIT] = "INIT",
259 [MAC_SCANNING] = "SCANNING",
260 [MAC_AUTH] = "AUTH",
261 [MAC_ASSOC] = "ASSOC",
262 [MAC_JOINING] = "JOINING",
263 [MAC_CONNECTED] = "CONNECTED",
264 [MAC_OWN_IBSS] = "OWN_IBSS"
265};
266
267/* Firmware download */
268/* DFU states */
269#define STATE_IDLE 0x00
270#define STATE_DETACH 0x01
271#define STATE_DFU_IDLE 0x02
272#define STATE_DFU_DOWNLOAD_SYNC 0x03
273#define STATE_DFU_DOWNLOAD_BUSY 0x04
274#define STATE_DFU_DOWNLOAD_IDLE 0x05
275#define STATE_DFU_MANIFEST_SYNC 0x06
276#define STATE_DFU_MANIFEST 0x07
277#define STATE_DFU_MANIFEST_WAIT_RESET 0x08
278#define STATE_DFU_UPLOAD_IDLE 0x09
279#define STATE_DFU_ERROR 0x0a
280
281/* DFU commands */
282#define DFU_DETACH 0
283#define DFU_DNLOAD 1
284#define DFU_UPLOAD 2
285#define DFU_GETSTATUS 3
286#define DFU_CLRSTATUS 4
287#define DFU_GETSTATE 5
288#define DFU_ABORT 6
289
290#define FW_BLOCK_SIZE 1024
291
292struct dfu_status {
293 unsigned char status;
294 unsigned char poll_timeout[3];
295 unsigned char state;
296 unsigned char string;
297} __attribute__((packed));
298
299static inline int at76_is_intersil(enum board_type board)
300{
301 return (board == BOARD_503_ISL3861 || board == BOARD_503_ISL3863);
302}
303
304static inline int at76_is_503rfmd(enum board_type board)
305{
306 return (board == BOARD_503 || board == BOARD_503_ACC);
307}
308
309static inline int at76_is_505a(enum board_type board)
310{
311 return (board == BOARD_505A || board == BOARD_505AMX);
312}
313
314/* Load a block of the first (internal) part of the firmware */
315static int at76_load_int_fw_block(struct usb_device *udev, int blockno,
316 void *block, int size)
317{
318 return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), DFU_DNLOAD,
319 USB_TYPE_CLASS | USB_DIR_OUT |
320 USB_RECIP_INTERFACE, blockno, 0, block, size,
321 USB_CTRL_GET_TIMEOUT);
322}
323
324static int at76_dfu_get_status(struct usb_device *udev,
325 struct dfu_status *status)
326{
327 int ret;
328
329 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), DFU_GETSTATUS,
330 USB_TYPE_CLASS | USB_DIR_IN | USB_RECIP_INTERFACE,
331 0, 0, status, sizeof(struct dfu_status),
332 USB_CTRL_GET_TIMEOUT);
333 return ret;
334}
335
336static u8 at76_dfu_get_state(struct usb_device *udev, u8 *state)
337{
338 int ret;
339
340 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), DFU_GETSTATE,
341 USB_TYPE_CLASS | USB_DIR_IN | USB_RECIP_INTERFACE,
342 0, 0, state, 1, USB_CTRL_GET_TIMEOUT);
343 return ret;
344}
345
346/* Convert timeout from the DFU status to jiffies */
347static inline unsigned long at76_get_timeout(struct dfu_status *s)
348{
349 return msecs_to_jiffies((s->poll_timeout[2] << 16)
350 | (s->poll_timeout[1] << 8)
351 | (s->poll_timeout[0]));
352}
353
354/* Load internal firmware from the buffer. If manifest_sync_timeout > 0, use
355 * its value in jiffies in the MANIFEST_SYNC state. */
356static int at76_usbdfu_download(struct usb_device *udev, u8 *buf, u32 size,
357 int manifest_sync_timeout)
358{
359 u8 *block;
360 struct dfu_status dfu_stat_buf;
361 int ret = 0;
362 int need_dfu_state = 1;
363 int is_done = 0;
364 u8 dfu_state = 0;
365 u32 dfu_timeout = 0;
366 int bsize = 0;
367 int blockno = 0;
368
369 at76_dbg(DBG_DFU, "%s( %p, %u, %d)", __func__, buf, size,
370 manifest_sync_timeout);
371
372 if (!size) {
373 dev_printk(KERN_ERR, &udev->dev, "FW buffer length invalid!\n");
374 return -EINVAL;
375 }
376
377 block = kmalloc(FW_BLOCK_SIZE, GFP_KERNEL);
378 if (!block)
379 return -ENOMEM;
380
381 do {
382 if (need_dfu_state) {
383 ret = at76_dfu_get_state(udev, &dfu_state);
384 if (ret < 0) {
385 dev_printk(KERN_ERR, &udev->dev,
386 "cannot get DFU state: %d\n", ret);
387 goto exit;
388 }
389 need_dfu_state = 0;
390 }
391
392 switch (dfu_state) {
393 case STATE_DFU_DOWNLOAD_SYNC:
394 at76_dbg(DBG_DFU, "STATE_DFU_DOWNLOAD_SYNC");
395 ret = at76_dfu_get_status(udev, &dfu_stat_buf);
396 if (ret >= 0) {
397 dfu_state = dfu_stat_buf.state;
398 dfu_timeout = at76_get_timeout(&dfu_stat_buf);
399 need_dfu_state = 0;
400 } else
401 dev_printk(KERN_ERR, &udev->dev,
402 "at76_dfu_get_status returned %d\n",
403 ret);
404 break;
405
406 case STATE_DFU_DOWNLOAD_BUSY:
407 at76_dbg(DBG_DFU, "STATE_DFU_DOWNLOAD_BUSY");
408 need_dfu_state = 1;
409
410 at76_dbg(DBG_DFU, "DFU: Resetting device");
411 schedule_timeout_interruptible(dfu_timeout);
412 break;
413
414 case STATE_DFU_DOWNLOAD_IDLE:
415 at76_dbg(DBG_DFU, "DOWNLOAD...");
416 /* fall through */
417 case STATE_DFU_IDLE:
418 at76_dbg(DBG_DFU, "DFU IDLE");
419
420 bsize = min_t(int, size, FW_BLOCK_SIZE);
421 memcpy(block, buf, bsize);
422 at76_dbg(DBG_DFU, "int fw, size left = %5d, "
423 "bsize = %4d, blockno = %2d", size, bsize,
424 blockno);
425 ret =
426 at76_load_int_fw_block(udev, blockno, block, bsize);
427 buf += bsize;
428 size -= bsize;
429 blockno++;
430
431 if (ret != bsize)
432 dev_printk(KERN_ERR, &udev->dev,
433 "at76_load_int_fw_block "
434 "returned %d\n", ret);
435 need_dfu_state = 1;
436 break;
437
438 case STATE_DFU_MANIFEST_SYNC:
439 at76_dbg(DBG_DFU, "STATE_DFU_MANIFEST_SYNC");
440
441 ret = at76_dfu_get_status(udev, &dfu_stat_buf);
442 if (ret < 0)
443 break;
444
445 dfu_state = dfu_stat_buf.state;
446 dfu_timeout = at76_get_timeout(&dfu_stat_buf);
447 need_dfu_state = 0;
448
449 /* override the timeout from the status response,
450 needed for AT76C505A */
451 if (manifest_sync_timeout > 0)
452 dfu_timeout = manifest_sync_timeout;
453
454 at76_dbg(DBG_DFU, "DFU: Waiting for manifest phase");
455 schedule_timeout_interruptible(dfu_timeout);
456 break;
457
458 case STATE_DFU_MANIFEST:
459 at76_dbg(DBG_DFU, "STATE_DFU_MANIFEST");
460 is_done = 1;
461 break;
462
463 case STATE_DFU_MANIFEST_WAIT_RESET:
464 at76_dbg(DBG_DFU, "STATE_DFU_MANIFEST_WAIT_RESET");
465 is_done = 1;
466 break;
467
468 case STATE_DFU_UPLOAD_IDLE:
469 at76_dbg(DBG_DFU, "STATE_DFU_UPLOAD_IDLE");
470 break;
471
472 case STATE_DFU_ERROR:
473 at76_dbg(DBG_DFU, "STATE_DFU_ERROR");
474 ret = -EPIPE;
475 break;
476
477 default:
478 at76_dbg(DBG_DFU, "DFU UNKNOWN STATE (%d)", dfu_state);
479 ret = -EINVAL;
480 break;
481 }
482 } while (!is_done && (ret >= 0));
483
484exit:
485 kfree(block);
486 if (ret >= 0)
487 ret = 0;
488
489 return ret;
490}
491
492/* Report that the scan results are ready */
493static inline void at76_iwevent_scan_complete(struct net_device *netdev)
494{
495 union iwreq_data wrqu;
496 wrqu.data.length = 0;
497 wrqu.data.flags = 0;
498 wireless_send_event(netdev, SIOCGIWSCAN, &wrqu, NULL);
499 at76_dbg(DBG_WE_EVENTS, "%s: SIOCGIWSCAN sent", netdev->name);
500}
501
502static inline void at76_iwevent_bss_connect(struct net_device *netdev,
503 u8 *bssid)
504{
505 union iwreq_data wrqu;
506 wrqu.data.length = 0;
507 wrqu.data.flags = 0;
508 memcpy(wrqu.ap_addr.sa_data, bssid, ETH_ALEN);
509 wrqu.ap_addr.sa_family = ARPHRD_ETHER;
510 wireless_send_event(netdev, SIOCGIWAP, &wrqu, NULL);
511 at76_dbg(DBG_WE_EVENTS, "%s: %s: SIOCGIWAP sent", netdev->name,
512 __func__);
513}
514
515static inline void at76_iwevent_bss_disconnect(struct net_device *netdev)
516{
517 union iwreq_data wrqu;
518 wrqu.data.length = 0;
519 wrqu.data.flags = 0;
520 memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
521 wrqu.ap_addr.sa_family = ARPHRD_ETHER;
522 wireless_send_event(netdev, SIOCGIWAP, &wrqu, NULL);
523 at76_dbg(DBG_WE_EVENTS, "%s: %s: SIOCGIWAP sent", netdev->name,
524 __func__);
525}
526
527#define HEX2STR_BUFFERS 4
528#define HEX2STR_MAX_LEN 64
529#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
530
531/* Convert binary data into hex string */
532static char *hex2str(void *buf, int len)
533{
534 static atomic_t a = ATOMIC_INIT(0);
535 static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
536 char *ret = bufs[atomic_inc_return(&a) & (HEX2STR_BUFFERS - 1)];
537 char *obuf = ret;
538 u8 *ibuf = buf;
539
540 if (len > HEX2STR_MAX_LEN)
541 len = HEX2STR_MAX_LEN;
542
543 if (len <= 0) {
544 ret[0] = '\0';
545 return ret;
546 }
547
548 while (len--) {
549 *obuf++ = BIN2HEX(*ibuf >> 4);
550 *obuf++ = BIN2HEX(*ibuf & 0xf);
551 *obuf++ = '-';
552 ibuf++;
553 }
554 *(--obuf) = '\0';
555
556 return ret;
557}
558
559#define MAC2STR_BUFFERS 4
560
561static inline char *mac2str(u8 *mac)
562{
563 static atomic_t a = ATOMIC_INIT(0);
564 static char bufs[MAC2STR_BUFFERS][6 * 3];
565 char *str;
566
567 str = bufs[atomic_inc_return(&a) & (MAC2STR_BUFFERS - 1)];
568 sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
569 mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
570 return str;
571}
572
573/* LED trigger */
574static int tx_activity;
575static void at76_ledtrig_tx_timerfunc(unsigned long data);
576static DEFINE_TIMER(ledtrig_tx_timer, at76_ledtrig_tx_timerfunc, 0, 0);
577DEFINE_LED_TRIGGER(ledtrig_tx);
578
579static void at76_ledtrig_tx_timerfunc(unsigned long data)
580{
581 static int tx_lastactivity;
582
583 if (tx_lastactivity != tx_activity) {
584 tx_lastactivity = tx_activity;
585 led_trigger_event(ledtrig_tx, LED_FULL);
586 mod_timer(&ledtrig_tx_timer, jiffies + HZ / 4);
587 } else
588 led_trigger_event(ledtrig_tx, LED_OFF);
589}
590
591static void at76_ledtrig_tx_activity(void)
592{
593 tx_activity++;
594 if (!timer_pending(&ledtrig_tx_timer))
595 mod_timer(&ledtrig_tx_timer, jiffies + HZ / 4);
596}
597
598/* Check if the given ssid is hidden */
599static inline int at76_is_hidden_ssid(u8 *ssid, int length)
600{
601 static const u8 zeros[32];
602
603 if (length == 0)
604 return 1;
605
606 if (length == 1 && ssid[0] == ' ')
607 return 1;
608
609 return (memcmp(ssid, zeros, length) == 0);
610}
611
612static inline void at76_free_bss_list(struct at76_priv *priv)
613{
614 struct list_head *next, *ptr;
615 unsigned long flags;
616
617 spin_lock_irqsave(&priv->bss_list_spinlock, flags);
618
619 priv->curr_bss = NULL;
620
621 list_for_each_safe(ptr, next, &priv->bss_list) {
622 list_del(ptr);
623 kfree(list_entry(ptr, struct bss_info, list));
624 }
625
626 spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
627}
628
629static int at76_remap(struct usb_device *udev)
630{
631 int ret;
632 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x0a,
633 USB_TYPE_VENDOR | USB_DIR_OUT |
634 USB_RECIP_INTERFACE, 0, 0, NULL, 0,
635 USB_CTRL_GET_TIMEOUT);
636 if (ret < 0)
637 return ret;
638 return 0;
639}
640
641static int at76_get_op_mode(struct usb_device *udev)
642{
643 int ret;
644 u8 op_mode;
645
646 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x33,
647 USB_TYPE_VENDOR | USB_DIR_IN |
648 USB_RECIP_INTERFACE, 0x01, 0, &op_mode, 1,
649 USB_CTRL_GET_TIMEOUT);
650 if (ret < 0)
651 return ret;
652 else if (ret < 1)
653 return -EIO;
654 else
655 return op_mode;
656}
657
658/* Load a block of the second ("external") part of the firmware */
659static inline int at76_load_ext_fw_block(struct usb_device *udev, int blockno,
660 void *block, int size)
661{
662 return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x0e,
663 USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
664 0x0802, blockno, block, size,
665 USB_CTRL_GET_TIMEOUT);
666}
667
668static inline int at76_get_hw_cfg(struct usb_device *udev,
669 union at76_hwcfg *buf, int buf_size)
670{
671 return usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x33,
672 USB_TYPE_VENDOR | USB_DIR_IN |
673 USB_RECIP_INTERFACE, 0x0a02, 0,
674 buf, buf_size, USB_CTRL_GET_TIMEOUT);
675}
676
677/* Intersil boards use a different "value" for GetHWConfig requests */
678static inline int at76_get_hw_cfg_intersil(struct usb_device *udev,
679 union at76_hwcfg *buf, int buf_size)
680{
681 return usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x33,
682 USB_TYPE_VENDOR | USB_DIR_IN |
683 USB_RECIP_INTERFACE, 0x0902, 0,
684 buf, buf_size, USB_CTRL_GET_TIMEOUT);
685}
686
687/* Get the hardware configuration for the adapter and put it to the appropriate
688 * fields of 'priv' (the GetHWConfig request and interpretation of the result
689 * depends on the board type) */
690static int at76_get_hw_config(struct at76_priv *priv)
691{
692 int ret;
693 union at76_hwcfg *hwcfg = kmalloc(sizeof(*hwcfg), GFP_KERNEL);
694
695 if (!hwcfg)
696 return -ENOMEM;
697
698 if (at76_is_intersil(priv->board_type)) {
699 ret = at76_get_hw_cfg_intersil(priv->udev, hwcfg,
700 sizeof(hwcfg->i));
701 if (ret < 0)
702 goto exit;
703 memcpy(priv->mac_addr, hwcfg->i.mac_addr, ETH_ALEN);
704 priv->regulatory_domain = hwcfg->i.regulatory_domain;
705 } else if (at76_is_503rfmd(priv->board_type)) {
706 ret = at76_get_hw_cfg(priv->udev, hwcfg, sizeof(hwcfg->r3));
707 if (ret < 0)
708 goto exit;
709 memcpy(priv->mac_addr, hwcfg->r3.mac_addr, ETH_ALEN);
710 priv->regulatory_domain = hwcfg->r3.regulatory_domain;
711 } else {
712 ret = at76_get_hw_cfg(priv->udev, hwcfg, sizeof(hwcfg->r5));
713 if (ret < 0)
714 goto exit;
715 memcpy(priv->mac_addr, hwcfg->r5.mac_addr, ETH_ALEN);
716 priv->regulatory_domain = hwcfg->r5.regulatory_domain;
717 }
718
719exit:
720 kfree(hwcfg);
721 if (ret < 0)
722 printk(KERN_ERR "%s: cannot get HW Config (error %d)\n",
723 priv->netdev->name, ret);
724
725 return ret;
726}
727
728static struct reg_domain const *at76_get_reg_domain(u16 code)
729{
730 int i;
731 static struct reg_domain const fd_tab[] = {
732 {0x10, "FCC (USA)", 0x7ff}, /* ch 1-11 */
733 {0x20, "IC (Canada)", 0x7ff}, /* ch 1-11 */
734 {0x30, "ETSI (most of Europe)", 0x1fff}, /* ch 1-13 */
735 {0x31, "Spain", 0x600}, /* ch 10-11 */
736 {0x32, "France", 0x1e00}, /* ch 10-13 */
737 {0x40, "MKK (Japan)", 0x2000}, /* ch 14 */
738 {0x41, "MKK1 (Japan)", 0x3fff}, /* ch 1-14 */
739 {0x50, "Israel", 0x3fc}, /* ch 3-9 */
740 {0x00, "<unknown>", 0xffffffff} /* ch 1-32 */
741 };
742
743 /* Last entry is fallback for unknown domain code */
744 for (i = 0; i < ARRAY_SIZE(fd_tab) - 1; i++)
745 if (code == fd_tab[i].code)
746 break;
747
748 return &fd_tab[i];
749}
750
751static inline int at76_get_mib(struct usb_device *udev, u16 mib, void *buf,
752 int buf_size)
753{
754 int ret;
755
756 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x33,
757 USB_TYPE_VENDOR | USB_DIR_IN |
758 USB_RECIP_INTERFACE, mib << 8, 0, buf, buf_size,
759 USB_CTRL_GET_TIMEOUT);
760 if (ret >= 0 && ret != buf_size)
761 return -EIO;
762 return ret;
763}
764
765/* Return positive number for status, negative for an error */
766static inline int at76_get_cmd_status(struct usb_device *udev, u8 cmd)
767{
768 u8 stat_buf[40];
769 int ret;
770
771 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x22,
772 USB_TYPE_VENDOR | USB_DIR_IN |
773 USB_RECIP_INTERFACE, cmd, 0, stat_buf,
774 sizeof(stat_buf), USB_CTRL_GET_TIMEOUT);
775 if (ret < 0)
776 return ret;
777
778 return stat_buf[5];
779}
780
781static int at76_set_card_command(struct usb_device *udev, int cmd, void *buf,
782 int buf_size)
783{
784 int ret;
785 struct at76_command *cmd_buf = kmalloc(sizeof(struct at76_command) +
786 buf_size, GFP_KERNEL);
787
788 if (!cmd_buf)
789 return -ENOMEM;
790
791 cmd_buf->cmd = cmd;
792 cmd_buf->reserved = 0;
793 cmd_buf->size = cpu_to_le16(buf_size);
794 memcpy(cmd_buf->data, buf, buf_size);
795
796 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x0e,
797 USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
798 0, 0, cmd_buf,
799 sizeof(struct at76_command) + buf_size,
800 USB_CTRL_GET_TIMEOUT);
801 kfree(cmd_buf);
802 return ret;
803}
804
805#define MAKE_CMD_STATUS_CASE(c) case (c): return #c
806static const char *at76_get_cmd_status_string(u8 cmd_status)
807{
808 switch (cmd_status) {
809 MAKE_CMD_STATUS_CASE(CMD_STATUS_IDLE);
810 MAKE_CMD_STATUS_CASE(CMD_STATUS_COMPLETE);
811 MAKE_CMD_STATUS_CASE(CMD_STATUS_UNKNOWN);
812 MAKE_CMD_STATUS_CASE(CMD_STATUS_INVALID_PARAMETER);
813 MAKE_CMD_STATUS_CASE(CMD_STATUS_FUNCTION_NOT_SUPPORTED);
814 MAKE_CMD_STATUS_CASE(CMD_STATUS_TIME_OUT);
815 MAKE_CMD_STATUS_CASE(CMD_STATUS_IN_PROGRESS);
816 MAKE_CMD_STATUS_CASE(CMD_STATUS_HOST_FAILURE);
817 MAKE_CMD_STATUS_CASE(CMD_STATUS_SCAN_FAILED);
818 }
819
820 return "UNKNOWN";
821}
822
823/* Wait until the command is completed */
824static int at76_wait_completion(struct at76_priv *priv, int cmd)
825{
826 int status = 0;
827 unsigned long timeout = jiffies + CMD_COMPLETION_TIMEOUT;
828
829 do {
830 status = at76_get_cmd_status(priv->udev, cmd);
831 if (status < 0) {
832 printk(KERN_ERR "%s: at76_get_cmd_status failed: %d\n",
833 priv->netdev->name, status);
834 break;
835 }
836
837 at76_dbg(DBG_WAIT_COMPLETE,
838 "%s: Waiting on cmd %d, status = %d (%s)",
839 priv->netdev->name, cmd, status,
840 at76_get_cmd_status_string(status));
841
842 if (status != CMD_STATUS_IN_PROGRESS
843 && status != CMD_STATUS_IDLE)
844 break;
845
846 schedule_timeout_interruptible(HZ / 10); /* 100 ms */
847 if (time_after(jiffies, timeout)) {
848 printk(KERN_ERR
849 "%s: completion timeout for command %d\n",
850 priv->netdev->name, cmd);
851 status = -ETIMEDOUT;
852 break;
853 }
854 } while (1);
855
856 return status;
857}
858
859static int at76_set_mib(struct at76_priv *priv, struct set_mib_buffer *buf)
860{
861 int ret;
862
863 ret = at76_set_card_command(priv->udev, CMD_SET_MIB, buf,
864 offsetof(struct set_mib_buffer,
865 data) + buf->size);
866 if (ret < 0)
867 return ret;
868
869 ret = at76_wait_completion(priv, CMD_SET_MIB);
870 if (ret != CMD_STATUS_COMPLETE) {
871 printk(KERN_INFO
872 "%s: set_mib: at76_wait_completion failed "
873 "with %d\n", priv->netdev->name, ret);
874 ret = -EIO;
875 }
876
877 return ret;
878}
879
880/* Return < 0 on error, == 0 if no command sent, == 1 if cmd sent */
881static int at76_set_radio(struct at76_priv *priv, int enable)
882{
883 int ret;
884 int cmd;
885
886 if (priv->radio_on == enable)
887 return 0;
888
889 cmd = enable ? CMD_RADIO_ON : CMD_RADIO_OFF;
890
891 ret = at76_set_card_command(priv->udev, cmd, NULL, 0);
892 if (ret < 0)
893 printk(KERN_ERR "%s: at76_set_card_command(%d) failed: %d\n",
894 priv->netdev->name, cmd, ret);
895 else
896 ret = 1;
897
898 priv->radio_on = enable;
899 return ret;
900}
901
902/* Set current power save mode (AT76_PM_OFF/AT76_PM_ON/AT76_PM_SMART) */
903static int at76_set_pm_mode(struct at76_priv *priv)
904{
905 int ret = 0;
906
907 priv->mib_buf.type = MIB_MAC_MGMT;
908 priv->mib_buf.size = 1;
909 priv->mib_buf.index = offsetof(struct mib_mac_mgmt, power_mgmt_mode);
910 priv->mib_buf.data.byte = priv->pm_mode;
911
912 ret = at76_set_mib(priv, &priv->mib_buf);
913 if (ret < 0)
914 printk(KERN_ERR "%s: set_mib (pm_mode) failed: %d\n",
915 priv->netdev->name, ret);
916
917 return ret;
918}
919
920/* Set the association id for power save mode */
921static int at76_set_associd(struct at76_priv *priv, u16 id)
922{
923 int ret = 0;
924
925 priv->mib_buf.type = MIB_MAC_MGMT;
926 priv->mib_buf.size = 2;
927 priv->mib_buf.index = offsetof(struct mib_mac_mgmt, station_id);
928 priv->mib_buf.data.word = cpu_to_le16(id);
929
930 ret = at76_set_mib(priv, &priv->mib_buf);
931 if (ret < 0)
932 printk(KERN_ERR "%s: set_mib (associd) failed: %d\n",
933 priv->netdev->name, ret);
934
935 return ret;
936}
937
938/* Set the listen interval for power save mode */
939static int at76_set_listen_interval(struct at76_priv *priv, u16 interval)
940{
941 int ret = 0;
942
943 priv->mib_buf.type = MIB_MAC;
944 priv->mib_buf.size = 2;
945 priv->mib_buf.index = offsetof(struct mib_mac, listen_interval);
946 priv->mib_buf.data.word = cpu_to_le16(interval);
947
948 ret = at76_set_mib(priv, &priv->mib_buf);
949 if (ret < 0)
950 printk(KERN_ERR
951 "%s: set_mib (listen_interval) failed: %d\n",
952 priv->netdev->name, ret);
953
954 return ret;
955}
956
957static int at76_set_preamble(struct at76_priv *priv, u8 type)
958{
959 int ret = 0;
960
961 priv->mib_buf.type = MIB_LOCAL;
962 priv->mib_buf.size = 1;
963 priv->mib_buf.index = offsetof(struct mib_local, preamble_type);
964 priv->mib_buf.data.byte = type;
965
966 ret = at76_set_mib(priv, &priv->mib_buf);
967 if (ret < 0)
968 printk(KERN_ERR "%s: set_mib (preamble) failed: %d\n",
969 priv->netdev->name, ret);
970
971 return ret;
972}
973
974static int at76_set_frag(struct at76_priv *priv, u16 size)
975{
976 int ret = 0;
977
978 priv->mib_buf.type = MIB_MAC;
979 priv->mib_buf.size = 2;
980 priv->mib_buf.index = offsetof(struct mib_mac, frag_threshold);
981 priv->mib_buf.data.word = cpu_to_le16(size);
982
983 ret = at76_set_mib(priv, &priv->mib_buf);
984 if (ret < 0)
985 printk(KERN_ERR "%s: set_mib (frag threshold) failed: %d\n",
986 priv->netdev->name, ret);
987
988 return ret;
989}
990
991static int at76_set_rts(struct at76_priv *priv, u16 size)
992{
993 int ret = 0;
994
995 priv->mib_buf.type = MIB_MAC;
996 priv->mib_buf.size = 2;
997 priv->mib_buf.index = offsetof(struct mib_mac, rts_threshold);
998 priv->mib_buf.data.word = cpu_to_le16(size);
999
1000 ret = at76_set_mib(priv, &priv->mib_buf);
1001 if (ret < 0)
1002 printk(KERN_ERR "%s: set_mib (rts) failed: %d\n",
1003 priv->netdev->name, ret);
1004
1005 return ret;
1006}
1007
1008static int at76_set_autorate_fallback(struct at76_priv *priv, int onoff)
1009{
1010 int ret = 0;
1011
1012 priv->mib_buf.type = MIB_LOCAL;
1013 priv->mib_buf.size = 1;
1014 priv->mib_buf.index = offsetof(struct mib_local, txautorate_fallback);
1015 priv->mib_buf.data.byte = onoff;
1016
1017 ret = at76_set_mib(priv, &priv->mib_buf);
1018 if (ret < 0)
1019 printk(KERN_ERR "%s: set_mib (autorate fallback) failed: %d\n",
1020 priv->netdev->name, ret);
1021
1022 return ret;
1023}
1024
1025static int at76_add_mac_address(struct at76_priv *priv, void *addr)
1026{
1027 int ret = 0;
1028
1029 priv->mib_buf.type = MIB_MAC_ADDR;
1030 priv->mib_buf.size = ETH_ALEN;
1031 priv->mib_buf.index = offsetof(struct mib_mac_addr, mac_addr);
1032 memcpy(priv->mib_buf.data.addr, addr, ETH_ALEN);
1033
1034 ret = at76_set_mib(priv, &priv->mib_buf);
1035 if (ret < 0)
1036 printk(KERN_ERR "%s: set_mib (MAC_ADDR, mac_addr) failed: %d\n",
1037 priv->netdev->name, ret);
1038
1039 return ret;
1040}
1041
1042static void at76_dump_mib_mac_addr(struct at76_priv *priv)
1043{
1044 int i;
1045 int ret;
1046 struct mib_mac_addr *m = kmalloc(sizeof(struct mib_mac_addr),
1047 GFP_KERNEL);
1048
1049 if (!m)
1050 return;
1051
1052 ret = at76_get_mib(priv->udev, MIB_MAC_ADDR, m,
1053 sizeof(struct mib_mac_addr));
1054 if (ret < 0) {
1055 printk(KERN_ERR "%s: at76_get_mib (MAC_ADDR) failed: %d\n",
1056 priv->netdev->name, ret);
1057 goto exit;
1058 }
1059
1060 at76_dbg(DBG_MIB, "%s: MIB MAC_ADDR: mac_addr %s res 0x%x 0x%x",
1061 priv->netdev->name,
1062 mac2str(m->mac_addr), m->res[0], m->res[1]);
1063 for (i = 0; i < ARRAY_SIZE(m->group_addr); i++)
1064 at76_dbg(DBG_MIB, "%s: MIB MAC_ADDR: group addr %d: %s, "
1065 "status %d", priv->netdev->name, i,
1066 mac2str(m->group_addr[i]), m->group_addr_status[i]);
1067exit:
1068 kfree(m);
1069}
1070
1071static void at76_dump_mib_mac_wep(struct at76_priv *priv)
1072{
1073 int i;
1074 int ret;
1075 int key_len;
1076 struct mib_mac_wep *m = kmalloc(sizeof(struct mib_mac_wep), GFP_KERNEL);
1077
1078 if (!m)
1079 return;
1080
1081 ret = at76_get_mib(priv->udev, MIB_MAC_WEP, m,
1082 sizeof(struct mib_mac_wep));
1083 if (ret < 0) {
1084 printk(KERN_ERR "%s: at76_get_mib (MAC_WEP) failed: %d\n",
1085 priv->netdev->name, ret);
1086 goto exit;
1087 }
1088
1089 at76_dbg(DBG_MIB, "%s: MIB MAC_WEP: priv_invoked %u def_key_id %u "
1090 "key_len %u excl_unencr %u wep_icv_err %u wep_excluded %u "
1091 "encr_level %u key %d", priv->netdev->name,
1092 m->privacy_invoked, m->wep_default_key_id,
1093 m->wep_key_mapping_len, m->exclude_unencrypted,
1094 le32_to_cpu(m->wep_icv_error_count),
1095 le32_to_cpu(m->wep_excluded_count), m->encryption_level,
1096 m->wep_default_key_id);
1097
1098 key_len = (m->encryption_level == 1) ?
1099 WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN;
1100
1101 for (i = 0; i < WEP_KEYS; i++)
1102 at76_dbg(DBG_MIB, "%s: MIB MAC_WEP: key %d: %s",
1103 priv->netdev->name, i,
1104 hex2str(m->wep_default_keyvalue[i], key_len));
1105exit:
1106 kfree(m);
1107}
1108
1109static void at76_dump_mib_mac_mgmt(struct at76_priv *priv)
1110{
1111 int ret;
1112 struct mib_mac_mgmt *m = kmalloc(sizeof(struct mib_mac_mgmt),
1113 GFP_KERNEL);
1114
1115 if (!m)
1116 return;
1117
1118 ret = at76_get_mib(priv->udev, MIB_MAC_MGMT, m,
1119 sizeof(struct mib_mac_mgmt));
1120 if (ret < 0) {
1121 printk(KERN_ERR "%s: at76_get_mib (MAC_MGMT) failed: %d\n",
1122 priv->netdev->name, ret);
1123 goto exit;
1124 }
1125
1126 at76_dbg(DBG_MIB, "%s: MIB MAC_MGMT: beacon_period %d CFP_max_duration "
1127 "%d medium_occupancy_limit %d station_id 0x%x ATIM_window %d "
1128 "CFP_mode %d privacy_opt_impl %d DTIM_period %d CFP_period %d "
1129 "current_bssid %s current_essid %s current_bss_type %d "
1130 "pm_mode %d ibss_change %d res %d "
1131 "multi_domain_capability_implemented %d "
1132 "international_roaming %d country_string %.3s",
1133 priv->netdev->name, le16_to_cpu(m->beacon_period),
1134 le16_to_cpu(m->CFP_max_duration),
1135 le16_to_cpu(m->medium_occupancy_limit),
1136 le16_to_cpu(m->station_id), le16_to_cpu(m->ATIM_window),
1137 m->CFP_mode, m->privacy_option_implemented, m->DTIM_period,
1138 m->CFP_period, mac2str(m->current_bssid),
1139 hex2str(m->current_essid, IW_ESSID_MAX_SIZE),
1140 m->current_bss_type, m->power_mgmt_mode, m->ibss_change,
1141 m->res, m->multi_domain_capability_implemented,
1142 m->multi_domain_capability_enabled, m->country_string);
1143exit:
1144 kfree(m);
1145}
1146
1147static void at76_dump_mib_mac(struct at76_priv *priv)
1148{
1149 int ret;
1150 struct mib_mac *m = kmalloc(sizeof(struct mib_mac), GFP_KERNEL);
1151
1152 if (!m)
1153 return;
1154
1155 ret = at76_get_mib(priv->udev, MIB_MAC, m, sizeof(struct mib_mac));
1156 if (ret < 0) {
1157 printk(KERN_ERR "%s: at76_get_mib (MAC) failed: %d\n",
1158 priv->netdev->name, ret);
1159 goto exit;
1160 }
1161
1162 at76_dbg(DBG_MIB, "%s: MIB MAC: max_tx_msdu_lifetime %d "
1163 "max_rx_lifetime %d frag_threshold %d rts_threshold %d "
1164 "cwmin %d cwmax %d short_retry_time %d long_retry_time %d "
1165 "scan_type %d scan_channel %d probe_delay %u "
1166 "min_channel_time %d max_channel_time %d listen_int %d "
1167 "desired_ssid %s desired_bssid %s desired_bsstype %d",
1168 priv->netdev->name, le32_to_cpu(m->max_tx_msdu_lifetime),
1169 le32_to_cpu(m->max_rx_lifetime),
1170 le16_to_cpu(m->frag_threshold), le16_to_cpu(m->rts_threshold),
1171 le16_to_cpu(m->cwmin), le16_to_cpu(m->cwmax),
1172 m->short_retry_time, m->long_retry_time, m->scan_type,
1173 m->scan_channel, le16_to_cpu(m->probe_delay),
1174 le16_to_cpu(m->min_channel_time),
1175 le16_to_cpu(m->max_channel_time),
1176 le16_to_cpu(m->listen_interval),
1177 hex2str(m->desired_ssid, IW_ESSID_MAX_SIZE),
1178 mac2str(m->desired_bssid), m->desired_bsstype);
1179exit:
1180 kfree(m);
1181}
1182
1183static void at76_dump_mib_phy(struct at76_priv *priv)
1184{
1185 int ret;
1186 struct mib_phy *m = kmalloc(sizeof(struct mib_phy), GFP_KERNEL);
1187
1188 if (!m)
1189 return;
1190
1191 ret = at76_get_mib(priv->udev, MIB_PHY, m, sizeof(struct mib_phy));
1192 if (ret < 0) {
1193 printk(KERN_ERR "%s: at76_get_mib (PHY) failed: %d\n",
1194 priv->netdev->name, ret);
1195 goto exit;
1196 }
1197
1198 at76_dbg(DBG_MIB, "%s: MIB PHY: ed_threshold %d slot_time %d "
1199 "sifs_time %d preamble_length %d plcp_header_length %d "
1200 "mpdu_max_length %d cca_mode_supported %d operation_rate_set "
1201 "0x%x 0x%x 0x%x 0x%x channel_id %d current_cca_mode %d "
1202 "phy_type %d current_reg_domain %d",
1203 priv->netdev->name, le32_to_cpu(m->ed_threshold),
1204 le16_to_cpu(m->slot_time), le16_to_cpu(m->sifs_time),
1205 le16_to_cpu(m->preamble_length),
1206 le16_to_cpu(m->plcp_header_length),
1207 le16_to_cpu(m->mpdu_max_length),
1208 le16_to_cpu(m->cca_mode_supported), m->operation_rate_set[0],
1209 m->operation_rate_set[1], m->operation_rate_set[2],
1210 m->operation_rate_set[3], m->channel_id, m->current_cca_mode,
1211 m->phy_type, m->current_reg_domain);
1212exit:
1213 kfree(m);
1214}
1215
1216static void at76_dump_mib_local(struct at76_priv *priv)
1217{
1218 int ret;
1219 struct mib_local *m = kmalloc(sizeof(struct mib_phy), GFP_KERNEL);
1220
1221 if (!m)
1222 return;
1223
1224 ret = at76_get_mib(priv->udev, MIB_LOCAL, m, sizeof(struct mib_local));
1225 if (ret < 0) {
1226 printk(KERN_ERR "%s: at76_get_mib (LOCAL) failed: %d\n",
1227 priv->netdev->name, ret);
1228 goto exit;
1229 }
1230
1231 at76_dbg(DBG_MIB, "%s: MIB LOCAL: beacon_enable %d "
1232 "txautorate_fallback %d ssid_size %d promiscuous_mode %d "
1233 "preamble_type %d", priv->netdev->name, m->beacon_enable,
1234 m->txautorate_fallback, m->ssid_size, m->promiscuous_mode,
1235 m->preamble_type);
1236exit:
1237 kfree(m);
1238}
1239
1240static void at76_dump_mib_mdomain(struct at76_priv *priv)
1241{
1242 int ret;
1243 struct mib_mdomain *m = kmalloc(sizeof(struct mib_mdomain), GFP_KERNEL);
1244
1245 if (!m)
1246 return;
1247
1248 ret = at76_get_mib(priv->udev, MIB_MDOMAIN, m,
1249 sizeof(struct mib_mdomain));
1250 if (ret < 0) {
1251 printk(KERN_ERR "%s: at76_get_mib (MDOMAIN) failed: %d\n",
1252 priv->netdev->name, ret);
1253 goto exit;
1254 }
1255
1256 at76_dbg(DBG_MIB, "%s: MIB MDOMAIN: channel_list %s",
1257 priv->netdev->name,
1258 hex2str(m->channel_list, sizeof(m->channel_list)));
1259
1260 at76_dbg(DBG_MIB, "%s: MIB MDOMAIN: tx_powerlevel %s",
1261 priv->netdev->name,
1262 hex2str(m->tx_powerlevel, sizeof(m->tx_powerlevel)));
1263exit:
1264 kfree(m);
1265}
1266
1267static int at76_get_current_bssid(struct at76_priv *priv)
1268{
1269 int ret = 0;
1270 struct mib_mac_mgmt *mac_mgmt =
1271 kmalloc(sizeof(struct mib_mac_mgmt), GFP_KERNEL);
1272
1273 if (!mac_mgmt) {
1274 ret = -ENOMEM;
1275 goto exit;
1276 }
1277
1278 ret = at76_get_mib(priv->udev, MIB_MAC_MGMT, mac_mgmt,
1279 sizeof(struct mib_mac_mgmt));
1280 if (ret < 0) {
1281 printk(KERN_ERR "%s: at76_get_mib failed: %d\n",
1282 priv->netdev->name, ret);
1283 goto error;
1284 }
1285 memcpy(priv->bssid, mac_mgmt->current_bssid, ETH_ALEN);
1286 printk(KERN_INFO "%s: using BSSID %s\n", priv->netdev->name,
1287 mac2str(priv->bssid));
1288error:
1289 kfree(mac_mgmt);
1290exit:
1291 return ret;
1292}
1293
1294static int at76_get_current_channel(struct at76_priv *priv)
1295{
1296 int ret = 0;
1297 struct mib_phy *phy = kmalloc(sizeof(struct mib_phy), GFP_KERNEL);
1298
1299 if (!phy) {
1300 ret = -ENOMEM;
1301 goto exit;
1302 }
1303 ret = at76_get_mib(priv->udev, MIB_PHY, phy, sizeof(struct mib_phy));
1304 if (ret < 0) {
1305 printk(KERN_ERR "%s: at76_get_mib(MIB_PHY) failed: %d\n",
1306 priv->netdev->name, ret);
1307 goto error;
1308 }
1309 priv->channel = phy->channel_id;
1310error:
1311 kfree(phy);
1312exit:
1313 return ret;
1314}
1315
1316/**
1317 * at76_start_scan - start a scan
1318 *
1319 * @use_essid - use the configured ESSID in non passive mode
1320 */
1321static int at76_start_scan(struct at76_priv *priv, int use_essid)
1322{
1323 struct at76_req_scan scan;
1324
1325 memset(&scan, 0, sizeof(struct at76_req_scan));
1326 memset(scan.bssid, 0xff, ETH_ALEN);
1327
1328 if (use_essid) {
1329 memcpy(scan.essid, priv->essid, IW_ESSID_MAX_SIZE);
1330 scan.essid_size = priv->essid_size;
1331 } else
1332 scan.essid_size = 0;
1333
1334 /* jal: why should we start at a certain channel? we do scan the whole
1335 range allowed by reg domain. */
1336 scan.channel = priv->channel;
1337
1338 /* atmelwlandriver differs between scan type 0 and 1 (active/passive)
1339 For ad-hoc mode, it uses type 0 only. */
1340 scan.scan_type = priv->scan_mode;
1341
1342 /* INFO: For probe_delay, not multiplying by 1024 as this will be
1343 slightly less than min_channel_time
1344 (per spec: probe delay < min. channel time) */
1345 scan.min_channel_time = cpu_to_le16(priv->scan_min_time);
1346 scan.max_channel_time = cpu_to_le16(priv->scan_max_time);
1347 scan.probe_delay = cpu_to_le16(priv->scan_min_time * 1000);
1348 scan.international_scan = 0;
1349
1350 /* other values are set to 0 for type 0 */
1351
1352 at76_dbg(DBG_PROGRESS, "%s: start_scan (use_essid = %d, intl = %d, "
1353 "channel = %d, probe_delay = %d, scan_min_time = %d, "
1354 "scan_max_time = %d)",
1355 priv->netdev->name, use_essid,
1356 scan.international_scan, scan.channel,
1357 le16_to_cpu(scan.probe_delay),
1358 le16_to_cpu(scan.min_channel_time),
1359 le16_to_cpu(scan.max_channel_time));
1360
1361 return at76_set_card_command(priv->udev, CMD_SCAN, &scan, sizeof(scan));
1362}
1363
1364/* Enable monitor mode */
1365static int at76_start_monitor(struct at76_priv *priv)
1366{
1367 struct at76_req_scan scan;
1368 int ret;
1369
1370 memset(&scan, 0, sizeof(struct at76_req_scan));
1371 memset(scan.bssid, 0xff, ETH_ALEN);
1372
1373 scan.channel = priv->channel;
1374 scan.scan_type = SCAN_TYPE_PASSIVE;
1375 scan.international_scan = 0;
1376
1377 ret = at76_set_card_command(priv->udev, CMD_SCAN, &scan, sizeof(scan));
1378 if (ret >= 0)
1379 ret = at76_get_cmd_status(priv->udev, CMD_SCAN);
1380
1381 return ret;
1382}
1383
1384static int at76_start_ibss(struct at76_priv *priv)
1385{
1386 struct at76_req_ibss bss;
1387 int ret;
1388
1389 WARN_ON(priv->mac_state != MAC_OWN_IBSS);
1390 if (priv->mac_state != MAC_OWN_IBSS)
1391 return -EBUSY;
1392
1393 memset(&bss, 0, sizeof(struct at76_req_ibss));
1394 memset(bss.bssid, 0xff, ETH_ALEN);
1395 memcpy(bss.essid, priv->essid, IW_ESSID_MAX_SIZE);
1396 bss.essid_size = priv->essid_size;
1397 bss.bss_type = ADHOC_MODE;
1398 bss.channel = priv->channel;
1399
1400 ret = at76_set_card_command(priv->udev, CMD_START_IBSS, &bss,
1401 sizeof(struct at76_req_ibss));
1402 if (ret < 0) {
1403 printk(KERN_ERR "%s: start_ibss failed: %d\n",
1404 priv->netdev->name, ret);
1405 return ret;
1406 }
1407
1408 ret = at76_wait_completion(priv, CMD_START_IBSS);
1409 if (ret != CMD_STATUS_COMPLETE) {
1410 printk(KERN_ERR "%s: start_ibss failed to complete, %d\n",
1411 priv->netdev->name, ret);
1412 return ret;
1413 }
1414
1415 ret = at76_get_current_bssid(priv);
1416 if (ret < 0)
1417 return ret;
1418
1419 ret = at76_get_current_channel(priv);
1420 if (ret < 0)
1421 return ret;
1422
1423 /* not sure what this is good for ??? */
1424 priv->mib_buf.type = MIB_MAC_MGMT;
1425 priv->mib_buf.size = 1;
1426 priv->mib_buf.index = offsetof(struct mib_mac_mgmt, ibss_change);
1427 priv->mib_buf.data.byte = 0;
1428
1429 ret = at76_set_mib(priv, &priv->mib_buf);
1430 if (ret < 0) {
1431 printk(KERN_ERR "%s: set_mib (ibss change ok) failed: %d\n",
1432 priv->netdev->name, ret);
1433 return ret;
1434 }
1435
1436 netif_carrier_on(priv->netdev);
1437 netif_start_queue(priv->netdev);
1438 return 0;
1439}
1440
1441/* Request card to join BSS in managed or ad-hoc mode */
1442static int at76_join_bss(struct at76_priv *priv, struct bss_info *ptr)
1443{
1444 struct at76_req_join join;
1445
1446 BUG_ON(!ptr);
1447
1448 memset(&join, 0, sizeof(struct at76_req_join));
1449 memcpy(join.bssid, ptr->bssid, ETH_ALEN);
1450 memcpy(join.essid, ptr->ssid, ptr->ssid_len);
1451 join.essid_size = ptr->ssid_len;
1452 join.bss_type = (priv->iw_mode == IW_MODE_ADHOC ? 1 : 2);
1453 join.channel = ptr->channel;
1454 join.timeout = cpu_to_le16(2000);
1455
1456 at76_dbg(DBG_PROGRESS,
1457 "%s join addr %s ssid %s type %d ch %d timeout %d",
1458 priv->netdev->name, mac2str(join.bssid), join.essid,
1459 join.bss_type, join.channel, le16_to_cpu(join.timeout));
1460 return at76_set_card_command(priv->udev, CMD_JOIN, &join,
1461 sizeof(struct at76_req_join));
1462}
1463
1464/* Calculate padding from txbuf->wlength (which excludes the USB TX header),
1465 likely to compensate a flaw in the AT76C503A USB part ... */
1466static inline int at76_calc_padding(int wlen)
1467{
1468 /* add the USB TX header */
1469 wlen += AT76_TX_HDRLEN;
1470
1471 wlen = wlen % 64;
1472
1473 if (wlen < 50)
1474 return 50 - wlen;
1475
1476 if (wlen >= 61)
1477 return 64 + 50 - wlen;
1478
1479 return 0;
1480}
1481
1482/* We are doing a lot of things here in an interrupt. Need
1483 a bh handler (Watching TV with a TV card is probably
1484 a good test: if you see flickers, we are doing too much.
1485 Currently I do see flickers... even with our tasklet :-( )
1486 Maybe because the bttv driver and usb-uhci use the same interrupt
1487*/
1488/* Or maybe because our BH handler is preempting bttv's BH handler.. BHs don't
1489 * solve everything.. (alex) */
1490static void at76_rx_callback(struct urb *urb)
1491{
1492 struct at76_priv *priv = urb->context;
1493
1494 priv->rx_tasklet.data = (unsigned long)urb;
1495 tasklet_schedule(&priv->rx_tasklet);
1496 return;
1497}
1498
1499static void at76_tx_callback(struct urb *urb)
1500{
1501 struct at76_priv *priv = urb->context;
1502 struct net_device_stats *stats = &priv->stats;
1503 unsigned long flags;
1504 struct at76_tx_buffer *mgmt_buf;
1505 int ret;
1506
1507 switch (urb->status) {
1508 case 0:
1509 stats->tx_packets++;
1510 break;
1511 case -ENOENT:
1512 case -ECONNRESET:
1513 /* urb has been unlinked */
1514 return;
1515 default:
1516 at76_dbg(DBG_URB, "%s - nonzero tx status received: %d",
1517 __func__, urb->status);
1518 stats->tx_errors++;
1519 break;
1520 }
1521
1522 spin_lock_irqsave(&priv->mgmt_spinlock, flags);
1523 mgmt_buf = priv->next_mgmt_bulk;
1524 priv->next_mgmt_bulk = NULL;
1525 spin_unlock_irqrestore(&priv->mgmt_spinlock, flags);
1526
1527 if (!mgmt_buf) {
1528 netif_wake_queue(priv->netdev);
1529 return;
1530 }
1531
1532 /* we don't copy the padding bytes, but add them
1533 to the length */
1534 memcpy(priv->bulk_out_buffer, mgmt_buf,
1535 le16_to_cpu(mgmt_buf->wlength) + AT76_TX_HDRLEN);
1536 usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe,
1537 priv->bulk_out_buffer,
1538 le16_to_cpu(mgmt_buf->wlength) + mgmt_buf->padding +
1539 AT76_TX_HDRLEN, at76_tx_callback, priv);
1540 ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
1541 if (ret)
1542 printk(KERN_ERR "%s: error in tx submit urb: %d\n",
1543 priv->netdev->name, ret);
1544
1545 kfree(mgmt_buf);
1546}
1547
1548/* Send a management frame on bulk-out. txbuf->wlength must be set */
1549static int at76_tx_mgmt(struct at76_priv *priv, struct at76_tx_buffer *txbuf)
1550{
1551 unsigned long flags;
1552 int ret;
1553 int urb_status;
1554 void *oldbuf = NULL;
1555
1556 netif_carrier_off(priv->netdev); /* stop netdev watchdog */
1557 netif_stop_queue(priv->netdev); /* stop tx data packets */
1558
1559 spin_lock_irqsave(&priv->mgmt_spinlock, flags);
1560
1561 urb_status = priv->tx_urb->status;
1562 if (urb_status == -EINPROGRESS) {
1563 /* cannot transmit now, put in the queue */
1564 oldbuf = priv->next_mgmt_bulk;
1565 priv->next_mgmt_bulk = txbuf;
1566 }
1567 spin_unlock_irqrestore(&priv->mgmt_spinlock, flags);
1568
1569 if (oldbuf) {
1570 /* a data/mgmt tx is already pending in the URB -
1571 if this is no error in some situations we must
1572 implement a queue or silently modify the old msg */
1573 printk(KERN_ERR "%s: removed pending mgmt buffer %s\n",
1574 priv->netdev->name, hex2str(oldbuf, 64));
1575 kfree(oldbuf);
1576 return 0;
1577 }
1578
1579 txbuf->tx_rate = TX_RATE_1MBIT;
1580 txbuf->padding = at76_calc_padding(le16_to_cpu(txbuf->wlength));
1581 memset(txbuf->reserved, 0, sizeof(txbuf->reserved));
1582
1583 if (priv->next_mgmt_bulk)
1584 printk(KERN_ERR "%s: URB status %d, but mgmt is pending\n",
1585 priv->netdev->name, urb_status);
1586
1587 at76_dbg(DBG_TX_MGMT,
1588 "%s: tx mgmt: wlen %d tx_rate %d pad %d %s",
1589 priv->netdev->name, le16_to_cpu(txbuf->wlength),
1590 txbuf->tx_rate, txbuf->padding,
1591 hex2str(txbuf->packet, le16_to_cpu(txbuf->wlength)));
1592
1593 /* txbuf was not consumed above -> send mgmt msg immediately */
1594 memcpy(priv->bulk_out_buffer, txbuf,
1595 le16_to_cpu(txbuf->wlength) + AT76_TX_HDRLEN);
1596 usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe,
1597 priv->bulk_out_buffer,
1598 le16_to_cpu(txbuf->wlength) + txbuf->padding +
1599 AT76_TX_HDRLEN, at76_tx_callback, priv);
1600 ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
1601 if (ret)
1602 printk(KERN_ERR "%s: error in tx submit urb: %d\n",
1603 priv->netdev->name, ret);
1604
1605 kfree(txbuf);
1606
1607 return ret;
1608}
1609
1610/* Go to the next information element */
1611static inline void next_ie(struct ieee80211_info_element **ie)
1612{
1613 *ie = (struct ieee80211_info_element *)(&(*ie)->data[(*ie)->len]);
1614}
1615
1616/* Challenge is the challenge string (in TLV format)
1617 we got with seq_nr 2 for shared secret authentication only and
1618 send in seq_nr 3 WEP encrypted to prove we have the correct WEP key;
1619 otherwise it is NULL */
1620static int at76_auth_req(struct at76_priv *priv, struct bss_info *bss,
1621 int seq_nr, struct ieee80211_info_element *challenge)
1622{
1623 struct at76_tx_buffer *tx_buffer;
1624 struct ieee80211_hdr_3addr *mgmt;
1625 struct ieee80211_auth *req;
1626 int buf_len = (seq_nr != 3 ? AUTH_FRAME_SIZE :
1627 AUTH_FRAME_SIZE + 1 + 1 + challenge->len);
1628
1629 BUG_ON(!bss);
1630 BUG_ON(seq_nr == 3 && !challenge);
1631 tx_buffer = kmalloc(buf_len + MAX_PADDING_SIZE, GFP_ATOMIC);
1632 if (!tx_buffer)
1633 return -ENOMEM;
1634
1635 req = (struct ieee80211_auth *)tx_buffer->packet;
1636 mgmt = &req->header;
1637
1638 /* make wireless header */
1639 /* first auth msg is not encrypted, only the second (seq_nr == 3) */
1640 mgmt->frame_ctl =
1641 cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH |
1642 (seq_nr == 3 ? IEEE80211_FCTL_PROTECTED : 0));
1643
1644 mgmt->duration_id = cpu_to_le16(0x8000);
1645 memcpy(mgmt->addr1, bss->bssid, ETH_ALEN);
1646 memcpy(mgmt->addr2, priv->netdev->dev_addr, ETH_ALEN);
1647 memcpy(mgmt->addr3, bss->bssid, ETH_ALEN);
1648 mgmt->seq_ctl = cpu_to_le16(0);
1649
1650 req->algorithm = cpu_to_le16(priv->auth_mode);
1651 req->transaction = cpu_to_le16(seq_nr);
1652 req->status = cpu_to_le16(0);
1653
1654 if (seq_nr == 3)
1655 memcpy(req->info_element, challenge, 1 + 1 + challenge->len);
1656
1657 /* init. at76_priv tx header */
1658 tx_buffer->wlength = cpu_to_le16(buf_len - AT76_TX_HDRLEN);
1659 at76_dbg(DBG_TX_MGMT, "%s: AuthReq bssid %s alg %d seq_nr %d",
1660 priv->netdev->name, mac2str(mgmt->addr3),
1661 le16_to_cpu(req->algorithm), le16_to_cpu(req->transaction));
1662 if (seq_nr == 3)
1663 at76_dbg(DBG_TX_MGMT, "%s: AuthReq challenge: %s ...",
1664 priv->netdev->name, hex2str(req->info_element, 18));
1665
1666 /* either send immediately (if no data tx is pending
1667 or put it in pending list */
1668 return at76_tx_mgmt(priv, tx_buffer);
1669}
1670
1671static int at76_assoc_req(struct at76_priv *priv, struct bss_info *bss)
1672{
1673 struct at76_tx_buffer *tx_buffer;
1674 struct ieee80211_hdr_3addr *mgmt;
1675 struct ieee80211_assoc_request *req;
1676 struct ieee80211_info_element *ie;
1677 char *essid;
1678 int essid_len;
1679 u16 capa;
1680
1681 BUG_ON(!bss);
1682
1683 tx_buffer = kmalloc(ASSOCREQ_MAX_SIZE + MAX_PADDING_SIZE, GFP_ATOMIC);
1684 if (!tx_buffer)
1685 return -ENOMEM;
1686
1687 req = (struct ieee80211_assoc_request *)tx_buffer->packet;
1688 mgmt = &req->header;
1689 ie = req->info_element;
1690
1691 /* make wireless header */
1692 mgmt->frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT |
1693 IEEE80211_STYPE_ASSOC_REQ);
1694
1695 mgmt->duration_id = cpu_to_le16(0x8000);
1696 memcpy(mgmt->addr1, bss->bssid, ETH_ALEN);
1697 memcpy(mgmt->addr2, priv->netdev->dev_addr, ETH_ALEN);
1698 memcpy(mgmt->addr3, bss->bssid, ETH_ALEN);
1699 mgmt->seq_ctl = cpu_to_le16(0);
1700
1701 /* we must set the Privacy bit in the capabilities to assure an
1702 Agere-based AP with optional WEP transmits encrypted frames
1703 to us. AP only set the Privacy bit in their capabilities
1704 if WEP is mandatory in the BSS! */
1705 capa = bss->capa;
1706 if (priv->wep_enabled)
1707 capa |= WLAN_CAPABILITY_PRIVACY;
1708 if (priv->preamble_type != PREAMBLE_TYPE_LONG)
1709 capa |= WLAN_CAPABILITY_SHORT_PREAMBLE;
1710 req->capability = cpu_to_le16(capa);
1711
1712 req->listen_interval = cpu_to_le16(2 * bss->beacon_interval);
1713
1714 /* write TLV data elements */
1715
1716 ie->id = MFIE_TYPE_SSID;
1717 ie->len = bss->ssid_len;
1718 memcpy(ie->data, bss->ssid, bss->ssid_len);
1719 next_ie(&ie);
1720
1721 ie->id = MFIE_TYPE_RATES;
1722 ie->len = sizeof(hw_rates);
1723 memcpy(ie->data, hw_rates, sizeof(hw_rates));
1724 next_ie(&ie); /* ie points behind the supp_rates field */
1725
1726 /* init. at76_priv tx header */
1727 tx_buffer->wlength = cpu_to_le16((u8 *)ie - (u8 *)mgmt);
1728
1729 ie = req->info_element;
1730 essid = ie->data;
1731 essid_len = min_t(int, IW_ESSID_MAX_SIZE, ie->len);
1732
1733 next_ie(&ie); /* points to IE of rates now */
1734 at76_dbg(DBG_TX_MGMT,
1735 "%s: AssocReq bssid %s capa 0x%04x ssid %.*s rates %s",
1736 priv->netdev->name, mac2str(mgmt->addr3),
1737 le16_to_cpu(req->capability), essid_len, essid,
1738 hex2str(ie->data, ie->len));
1739
1740 /* either send immediately (if no data tx is pending
1741 or put it in pending list */
1742 return at76_tx_mgmt(priv, tx_buffer);
1743}
1744
1745/* We got to check the bss_list for old entries */
1746static void at76_bss_list_timeout(unsigned long par)
1747{
1748 struct at76_priv *priv = (struct at76_priv *)par;
1749 unsigned long flags;
1750 struct list_head *lptr, *nptr;
1751 struct bss_info *ptr;
1752
1753 spin_lock_irqsave(&priv->bss_list_spinlock, flags);
1754
1755 list_for_each_safe(lptr, nptr, &priv->bss_list) {
1756
1757 ptr = list_entry(lptr, struct bss_info, list);
1758
1759 if (ptr != priv->curr_bss
1760 && time_after(jiffies, ptr->last_rx + BSS_LIST_TIMEOUT)) {
1761 at76_dbg(DBG_BSS_TABLE_RM,
1762 "%s: bss_list: removing old BSS %s ch %d",
1763 priv->netdev->name, mac2str(ptr->bssid),
1764 ptr->channel);
1765 list_del(&ptr->list);
1766 kfree(ptr);
1767 }
1768 }
1769 spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
1770 /* restart the timer */
1771 mod_timer(&priv->bss_list_timer, jiffies + BSS_LIST_TIMEOUT);
1772}
1773
1774static inline void at76_set_mac_state(struct at76_priv *priv,
1775 enum mac_state mac_state)
1776{
1777 at76_dbg(DBG_MAC_STATE, "%s state: %s", priv->netdev->name,
1778 mac_states[mac_state]);
1779 priv->mac_state = mac_state;
1780}
1781
1782static void at76_dump_bss_table(struct at76_priv *priv)
1783{
1784 struct bss_info *ptr;
1785 unsigned long flags;
1786 struct list_head *lptr;
1787
1788 spin_lock_irqsave(&priv->bss_list_spinlock, flags);
1789
1790 at76_dbg(DBG_BSS_TABLE, "%s BSS table (curr=%p):", priv->netdev->name,
1791 priv->curr_bss);
1792
1793 list_for_each(lptr, &priv->bss_list) {
1794 ptr = list_entry(lptr, struct bss_info, list);
1795 at76_dbg(DBG_BSS_TABLE, "0x%p: bssid %s channel %d ssid %.*s "
1796 "(%s) capa 0x%04x rates %s rssi %d link %d noise %d",
1797 ptr, mac2str(ptr->bssid), ptr->channel, ptr->ssid_len,
1798 ptr->ssid, hex2str(ptr->ssid, ptr->ssid_len),
1799 ptr->capa, hex2str(ptr->rates, ptr->rates_len),
1800 ptr->rssi, ptr->link_qual, ptr->noise_level);
1801 }
1802 spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
1803}
1804
1805/* Called upon successful association to mark interface as connected */
1806static void at76_work_assoc_done(struct work_struct *work)
1807{
1808 struct at76_priv *priv = container_of(work, struct at76_priv,
1809 work_assoc_done);
1810
1811 mutex_lock(&priv->mtx);
1812
1813 WARN_ON(priv->mac_state != MAC_ASSOC);
1814 WARN_ON(!priv->curr_bss);
1815 if (priv->mac_state != MAC_ASSOC || !priv->curr_bss)
1816 goto exit;
1817
1818 if (priv->iw_mode == IW_MODE_INFRA) {
1819 if (priv->pm_mode != AT76_PM_OFF) {
1820 /* calculate the listen interval in units of
1821 beacon intervals of the curr_bss */
1822 u32 pm_period_beacon = (priv->pm_period >> 10) /
1823 priv->curr_bss->beacon_interval;
1824
1825 pm_period_beacon = max(pm_period_beacon, 2u);
1826 pm_period_beacon = min(pm_period_beacon, 0xffffu);
1827
1828 at76_dbg(DBG_PM,
1829 "%s: pm_mode %d assoc id 0x%x listen int %d",
1830 priv->netdev->name, priv->pm_mode,
1831 priv->assoc_id, pm_period_beacon);
1832
1833 at76_set_associd(priv, priv->assoc_id);
1834 at76_set_listen_interval(priv, (u16)pm_period_beacon);
1835 }
1836 schedule_delayed_work(&priv->dwork_beacon, BEACON_TIMEOUT);
1837 }
1838 at76_set_pm_mode(priv);
1839
1840 netif_carrier_on(priv->netdev);
1841 netif_wake_queue(priv->netdev);
1842 at76_set_mac_state(priv, MAC_CONNECTED);
1843 at76_iwevent_bss_connect(priv->netdev, priv->curr_bss->bssid);
1844 at76_dbg(DBG_PROGRESS, "%s: connected to BSSID %s",
1845 priv->netdev->name, mac2str(priv->curr_bss->bssid));
1846
1847exit:
1848 mutex_unlock(&priv->mtx);
1849}
1850
1851/* We only store the new mac address in netdev struct,
1852 it gets set when the netdev is opened. */
1853static int at76_set_mac_address(struct net_device *netdev, void *addr)
1854{
1855 struct sockaddr *mac = addr;
1856 memcpy(netdev->dev_addr, mac->sa_data, ETH_ALEN);
1857 return 1;
1858}
1859
1860static struct net_device_stats *at76_get_stats(struct net_device *netdev)
1861{
1862 struct at76_priv *priv = netdev_priv(netdev);
1863 return &priv->stats;
1864}
1865
1866static struct iw_statistics *at76_get_wireless_stats(struct net_device *netdev)
1867{
1868 struct at76_priv *priv = netdev_priv(netdev);
1869
1870 at76_dbg(DBG_IOCTL, "RETURN qual %d level %d noise %d updated %d",
1871 priv->wstats.qual.qual, priv->wstats.qual.level,
1872 priv->wstats.qual.noise, priv->wstats.qual.updated);
1873
1874 return &priv->wstats;
1875}
1876
1877static void at76_set_multicast(struct net_device *netdev)
1878{
1879 struct at76_priv *priv = netdev_priv(netdev);
1880 int promisc;
1881
1882 promisc = ((netdev->flags & IFF_PROMISC) != 0);
1883 if (promisc != priv->promisc) {
1884 /* This gets called in interrupt, must reschedule */
1885 priv->promisc = promisc;
1886 schedule_work(&priv->work_set_promisc);
1887 }
1888}
1889
1890/* Stop all network activity, flush all pending tasks */
1891static void at76_quiesce(struct at76_priv *priv)
1892{
1893 unsigned long flags;
1894
1895 netif_stop_queue(priv->netdev);
1896 netif_carrier_off(priv->netdev);
1897
1898 at76_set_mac_state(priv, MAC_INIT);
1899
1900 cancel_delayed_work(&priv->dwork_get_scan);
1901 cancel_delayed_work(&priv->dwork_beacon);
1902 cancel_delayed_work(&priv->dwork_auth);
1903 cancel_delayed_work(&priv->dwork_assoc);
1904 cancel_delayed_work(&priv->dwork_restart);
1905
1906 spin_lock_irqsave(&priv->mgmt_spinlock, flags);
1907 kfree(priv->next_mgmt_bulk);
1908 priv->next_mgmt_bulk = NULL;
1909 spin_unlock_irqrestore(&priv->mgmt_spinlock, flags);
1910}
1911
1912/*******************************************************************************
1913 * at76_priv implementations of iw_handler functions:
1914 */
1915static int at76_iw_handler_commit(struct net_device *netdev,
1916 struct iw_request_info *info,
1917 void *null, char *extra)
1918{
1919 struct at76_priv *priv = netdev_priv(netdev);
1920
1921 at76_dbg(DBG_IOCTL, "%s %s: restarting the device", netdev->name,
1922 __func__);
1923
1924 if (priv->mac_state != MAC_INIT)
1925 at76_quiesce(priv);
1926
1927 /* Wait half second before the restart to process subsequent
1928 * requests from the same iwconfig in a single restart */
1929 schedule_delayed_work(&priv->dwork_restart, HZ / 2);
1930
1931 return 0;
1932}
1933
1934static int at76_iw_handler_get_name(struct net_device *netdev,
1935 struct iw_request_info *info,
1936 char *name, char *extra)
1937{
1938 strcpy(name, "IEEE 802.11b");
1939 at76_dbg(DBG_IOCTL, "%s: SIOCGIWNAME - name %s", netdev->name, name);
1940 return 0;
1941}
1942
1943static int at76_iw_handler_set_freq(struct net_device *netdev,
1944 struct iw_request_info *info,
1945 struct iw_freq *freq, char *extra)
1946{
1947 struct at76_priv *priv = netdev_priv(netdev);
1948 int chan = -1;
1949 int ret = -EIWCOMMIT;
1950 at76_dbg(DBG_IOCTL, "%s: SIOCSIWFREQ - freq.m %d freq.e %d",
1951 netdev->name, freq->m, freq->e);
1952
1953 if ((freq->e == 0) && (freq->m <= 1000))
1954 /* Setting by channel number */
1955 chan = freq->m;
1956 else {
1957 /* Setting by frequency - search the table */
1958 int mult = 1;
1959 int i;
1960
1961 for (i = 0; i < (6 - freq->e); i++)
1962 mult *= 10;
1963
1964 for (i = 0; i < NUM_CHANNELS; i++) {
1965 if (freq->m == (channel_frequency[i] * mult))
1966 chan = i + 1;
1967 }
1968 }
1969
1970 if (chan < 1 || !priv->domain)
1971 /* non-positive channels are invalid
1972 * we need a domain info to set the channel
1973 * either that or an invalid frequency was
1974 * provided by the user */
1975 ret = -EINVAL;
1976 else if (!(priv->domain->channel_map & (1 << (chan - 1)))) {
1977 printk(KERN_INFO "%s: channel %d not allowed for domain %s\n",
1978 priv->netdev->name, chan, priv->domain->name);
1979 ret = -EINVAL;
1980 }
1981
1982 if (ret == -EIWCOMMIT) {
1983 priv->channel = chan;
1984 at76_dbg(DBG_IOCTL, "%s: SIOCSIWFREQ - ch %d", netdev->name,
1985 chan);
1986 }
1987
1988 return ret;
1989}
1990
1991static int at76_iw_handler_get_freq(struct net_device *netdev,
1992 struct iw_request_info *info,
1993 struct iw_freq *freq, char *extra)
1994{
1995 struct at76_priv *priv = netdev_priv(netdev);
1996
1997 freq->m = priv->channel;
1998 freq->e = 0;
1999
2000 if (priv->channel)
2001 at76_dbg(DBG_IOCTL, "%s: SIOCGIWFREQ - freq %ld x 10e%d",
2002 netdev->name, channel_frequency[priv->channel - 1], 6);
2003
2004 at76_dbg(DBG_IOCTL, "%s: SIOCGIWFREQ - ch %d", netdev->name,
2005 priv->channel);
2006
2007 return 0;
2008}
2009
2010static int at76_iw_handler_set_mode(struct net_device *netdev,
2011 struct iw_request_info *info,
2012 __u32 *mode, char *extra)
2013{
2014 struct at76_priv *priv = netdev_priv(netdev);
2015
2016 at76_dbg(DBG_IOCTL, "%s: SIOCSIWMODE - %d", netdev->name, *mode);
2017
2018 if ((*mode != IW_MODE_ADHOC) && (*mode != IW_MODE_INFRA) &&
2019 (*mode != IW_MODE_MONITOR))
2020 return -EINVAL;
2021
2022 priv->iw_mode = *mode;
2023 if (priv->iw_mode != IW_MODE_INFRA)
2024 priv->pm_mode = AT76_PM_OFF;
2025
2026 return -EIWCOMMIT;
2027}
2028
2029static int at76_iw_handler_get_mode(struct net_device *netdev,
2030 struct iw_request_info *info,
2031 __u32 *mode, char *extra)
2032{
2033 struct at76_priv *priv = netdev_priv(netdev);
2034
2035 *mode = priv->iw_mode;
2036
2037 at76_dbg(DBG_IOCTL, "%s: SIOCGIWMODE - %d", netdev->name, *mode);
2038
2039 return 0;
2040}
2041
2042static int at76_iw_handler_get_range(struct net_device *netdev,
2043 struct iw_request_info *info,
2044 struct iw_point *data, char *extra)
2045{
2046 /* inspired by atmel.c */
2047 struct at76_priv *priv = netdev_priv(netdev);
2048 struct iw_range *range = (struct iw_range *)extra;
2049 int i;
2050
2051 data->length = sizeof(struct iw_range);
2052 memset(range, 0, sizeof(struct iw_range));
2053
2054 /* TODO: range->throughput = xxxxxx; */
2055
2056 range->min_nwid = 0x0000;
2057 range->max_nwid = 0x0000;
2058
2059 /* this driver doesn't maintain sensitivity information */
2060 range->sensitivity = 0;
2061
2062 range->max_qual.qual = 100;
2063 range->max_qual.level = 100;
2064 range->max_qual.noise = 0;
2065 range->max_qual.updated = IW_QUAL_NOISE_INVALID;
2066
2067 range->avg_qual.qual = 50;
2068 range->avg_qual.level = 50;
2069 range->avg_qual.noise = 0;
2070 range->avg_qual.updated = IW_QUAL_NOISE_INVALID;
2071
2072 range->bitrate[0] = 1000000;
2073 range->bitrate[1] = 2000000;
2074 range->bitrate[2] = 5500000;
2075 range->bitrate[3] = 11000000;
2076 range->num_bitrates = 4;
2077
2078 range->min_rts = 0;
2079 range->max_rts = MAX_RTS_THRESHOLD;
2080
2081 range->min_frag = MIN_FRAG_THRESHOLD;
2082 range->max_frag = MAX_FRAG_THRESHOLD;
2083
2084 range->pmp_flags = IW_POWER_PERIOD;
2085 range->pmt_flags = IW_POWER_ON;
2086 range->pm_capa = IW_POWER_PERIOD | IW_POWER_ALL_R;
2087
2088 range->encoding_size[0] = WEP_SMALL_KEY_LEN;
2089 range->encoding_size[1] = WEP_LARGE_KEY_LEN;
2090 range->num_encoding_sizes = 2;
2091 range->max_encoding_tokens = WEP_KEYS;
2092
2093 /* both WL-240U and Linksys WUSB11 v2.6 specify 15 dBm as output power
2094 - take this for all (ignore antenna gains) */
2095 range->txpower[0] = 15;
2096 range->num_txpower = 1;
2097 range->txpower_capa = IW_TXPOW_DBM;
2098
2099 range->we_version_source = WIRELESS_EXT;
2100 range->we_version_compiled = WIRELESS_EXT;
2101
2102 /* same as the values used in atmel.c */
2103 range->retry_capa = IW_RETRY_LIMIT;
2104 range->retry_flags = IW_RETRY_LIMIT;
2105 range->r_time_flags = 0;
2106 range->min_retry = 1;
2107 range->max_retry = 255;
2108
2109 range->num_channels = NUM_CHANNELS;
2110 range->num_frequency = 0;
2111
2112 for (i = 0; i < NUM_CHANNELS; i++) {
2113 /* test if channel map bit is raised */
2114 if (priv->domain->channel_map & (0x1 << i)) {
2115 range->num_frequency += 1;
2116
2117 range->freq[i].i = i + 1;
2118 range->freq[i].m = channel_frequency[i] * 100000;
2119 range->freq[i].e = 1; /* freq * 10^1 */
2120 }
2121 }
2122
2123 at76_dbg(DBG_IOCTL, "%s: SIOCGIWRANGE", netdev->name);
2124
2125 return 0;
2126}
2127
2128static int at76_iw_handler_set_spy(struct net_device *netdev,
2129 struct iw_request_info *info,
2130 struct iw_point *data, char *extra)
2131{
2132 struct at76_priv *priv = netdev_priv(netdev);
2133 int ret = 0;
2134
2135 at76_dbg(DBG_IOCTL, "%s: SIOCSIWSPY - number of addresses %d",
2136 netdev->name, data->length);
2137
2138 spin_lock_bh(&priv->spy_spinlock);
2139 ret = iw_handler_set_spy(priv->netdev, info, (union iwreq_data *)data,
2140 extra);
2141 spin_unlock_bh(&priv->spy_spinlock);
2142
2143 return ret;
2144}
2145
2146static int at76_iw_handler_get_spy(struct net_device *netdev,
2147 struct iw_request_info *info,
2148 struct iw_point *data, char *extra)
2149{
2150
2151 struct at76_priv *priv = netdev_priv(netdev);
2152 int ret = 0;
2153
2154 spin_lock_bh(&priv->spy_spinlock);
2155 ret = iw_handler_get_spy(priv->netdev, info,
2156 (union iwreq_data *)data, extra);
2157 spin_unlock_bh(&priv->spy_spinlock);
2158
2159 at76_dbg(DBG_IOCTL, "%s: SIOCGIWSPY - number of addresses %d",
2160 netdev->name, data->length);
2161
2162 return ret;
2163}
2164
2165static int at76_iw_handler_set_thrspy(struct net_device *netdev,
2166 struct iw_request_info *info,
2167 struct iw_point *data, char *extra)
2168{
2169 struct at76_priv *priv = netdev_priv(netdev);
2170 int ret;
2171
2172 at76_dbg(DBG_IOCTL, "%s: SIOCSIWTHRSPY - number of addresses %d)",
2173 netdev->name, data->length);
2174
2175 spin_lock_bh(&priv->spy_spinlock);
2176 ret = iw_handler_set_thrspy(netdev, info, (union iwreq_data *)data,
2177 extra);
2178 spin_unlock_bh(&priv->spy_spinlock);
2179
2180 return ret;
2181}
2182
2183static int at76_iw_handler_get_thrspy(struct net_device *netdev,
2184 struct iw_request_info *info,
2185 struct iw_point *data, char *extra)
2186{
2187 struct at76_priv *priv = netdev_priv(netdev);
2188 int ret;
2189
2190 spin_lock_bh(&priv->spy_spinlock);
2191 ret = iw_handler_get_thrspy(netdev, info, (union iwreq_data *)data,
2192 extra);
2193 spin_unlock_bh(&priv->spy_spinlock);
2194
2195 at76_dbg(DBG_IOCTL, "%s: SIOCGIWTHRSPY - number of addresses %d)",
2196 netdev->name, data->length);
2197
2198 return ret;
2199}
2200
2201static int at76_iw_handler_set_wap(struct net_device *netdev,
2202 struct iw_request_info *info,
2203 struct sockaddr *ap_addr, char *extra)
2204{
2205 struct at76_priv *priv = netdev_priv(netdev);
2206
2207 at76_dbg(DBG_IOCTL, "%s: SIOCSIWAP - wap/bssid %s", netdev->name,
2208 mac2str(ap_addr->sa_data));
2209
2210 /* if the incoming address == ff:ff:ff:ff:ff:ff, the user has
2211 chosen any or auto AP preference */
2212 if (is_broadcast_ether_addr(ap_addr->sa_data)
2213 || is_zero_ether_addr(ap_addr->sa_data))
2214 priv->wanted_bssid_valid = 0;
2215 else {
2216 /* user wants to set a preferred AP address */
2217 priv->wanted_bssid_valid = 1;
2218 memcpy(priv->wanted_bssid, ap_addr->sa_data, ETH_ALEN);
2219 }
2220
2221 return -EIWCOMMIT;
2222}
2223
2224static int at76_iw_handler_get_wap(struct net_device *netdev,
2225 struct iw_request_info *info,
2226 struct sockaddr *ap_addr, char *extra)
2227{
2228 struct at76_priv *priv = netdev_priv(netdev);
2229
2230 ap_addr->sa_family = ARPHRD_ETHER;
2231 memcpy(ap_addr->sa_data, priv->bssid, ETH_ALEN);
2232
2233 at76_dbg(DBG_IOCTL, "%s: SIOCGIWAP - wap/bssid %s", netdev->name,
2234 mac2str(ap_addr->sa_data));
2235
2236 return 0;
2237}
2238
2239static int at76_iw_handler_set_scan(struct net_device *netdev,
2240 struct iw_request_info *info,
2241 union iwreq_data *wrqu, char *extra)
2242{
2243 struct at76_priv *priv = netdev_priv(netdev);
2244 int ret = 0;
2245
2246 at76_dbg(DBG_IOCTL, "%s: SIOCSIWSCAN", netdev->name);
2247
2248 if (mutex_lock_interruptible(&priv->mtx))
2249 return -EINTR;
2250
2251 if (!netif_running(netdev)) {
2252 ret = -ENETDOWN;
2253 goto exit;
2254 }
2255
2256 /* jal: we don't allow "iwlist ethX scan" while we are
2257 in monitor mode */
2258 if (priv->iw_mode == IW_MODE_MONITOR) {
2259 ret = -EBUSY;
2260 goto exit;
2261 }
2262
2263 /* Discard old scan results */
2264 if ((jiffies - priv->last_scan) > (20 * HZ))
2265 priv->scan_state = SCAN_IDLE;
2266 priv->last_scan = jiffies;
2267
2268 /* Initiate a scan command */
2269 if (priv->scan_state == SCAN_IN_PROGRESS) {
2270 ret = -EBUSY;
2271 goto exit;
2272 }
2273
2274 priv->scan_state = SCAN_IN_PROGRESS;
2275
2276 at76_quiesce(priv);
2277
2278 /* Try to do passive or active scan if WE asks as. */
2279 if (wrqu->data.length
2280 && wrqu->data.length == sizeof(struct iw_scan_req)) {
2281 struct iw_scan_req *req = (struct iw_scan_req *)extra;
2282
2283 if (req->scan_type == IW_SCAN_TYPE_PASSIVE)
2284 priv->scan_mode = SCAN_TYPE_PASSIVE;
2285 else if (req->scan_type == IW_SCAN_TYPE_ACTIVE)
2286 priv->scan_mode = SCAN_TYPE_ACTIVE;
2287
2288 /* Sanity check values? */
2289 if (req->min_channel_time > 0)
2290 priv->scan_min_time = req->min_channel_time;
2291
2292 if (req->max_channel_time > 0)
2293 priv->scan_max_time = req->max_channel_time;
2294 }
2295
2296 /* change to scanning state */
2297 at76_set_mac_state(priv, MAC_SCANNING);
2298 schedule_work(&priv->work_start_scan);
2299
2300exit:
2301 mutex_unlock(&priv->mtx);
2302 return ret;
2303}
2304
2305static int at76_iw_handler_get_scan(struct net_device *netdev,
2306 struct iw_request_info *info,
2307 struct iw_point *data, char *extra)
2308{
2309 struct at76_priv *priv = netdev_priv(netdev);
2310 unsigned long flags;
2311 struct list_head *lptr, *nptr;
2312 struct bss_info *curr_bss;
2313 struct iw_event *iwe = kmalloc(sizeof(struct iw_event), GFP_KERNEL);
2314 char *curr_val, *curr_pos = extra;
2315 int i;
2316
2317 at76_dbg(DBG_IOCTL, "%s: SIOCGIWSCAN", netdev->name);
2318
2319 if (!iwe)
2320 return -ENOMEM;
2321
2322 if (priv->scan_state != SCAN_COMPLETED)
2323 /* scan not yet finished */
2324 return -EAGAIN;
2325
2326 spin_lock_irqsave(&priv->bss_list_spinlock, flags);
2327
2328 list_for_each_safe(lptr, nptr, &priv->bss_list) {
2329 curr_bss = list_entry(lptr, struct bss_info, list);
2330
2331 iwe->cmd = SIOCGIWAP;
2332 iwe->u.ap_addr.sa_family = ARPHRD_ETHER;
2333 memcpy(iwe->u.ap_addr.sa_data, curr_bss->bssid, 6);
2334 curr_pos = iwe_stream_add_event(info, curr_pos,
2335 extra + IW_SCAN_MAX_DATA, iwe,
2336 IW_EV_ADDR_LEN);
2337
2338 iwe->u.data.length = curr_bss->ssid_len;
2339 iwe->cmd = SIOCGIWESSID;
2340 iwe->u.data.flags = 1;
2341
2342 curr_pos = iwe_stream_add_point(info, curr_pos,
2343 extra + IW_SCAN_MAX_DATA, iwe,
2344 curr_bss->ssid);
2345
2346 iwe->cmd = SIOCGIWMODE;
2347 iwe->u.mode = (curr_bss->capa & WLAN_CAPABILITY_IBSS) ?
2348 IW_MODE_ADHOC :
2349 (curr_bss->capa & WLAN_CAPABILITY_ESS) ?
2350 IW_MODE_MASTER : IW_MODE_AUTO;
2351 /* IW_MODE_AUTO = 0 which I thought is
2352 * the most logical value to return in this case */
2353 curr_pos = iwe_stream_add_event(info, curr_pos,
2354 extra + IW_SCAN_MAX_DATA, iwe,
2355 IW_EV_UINT_LEN);
2356
2357 iwe->cmd = SIOCGIWFREQ;
2358 iwe->u.freq.m = curr_bss->channel;
2359 iwe->u.freq.e = 0;
2360 curr_pos = iwe_stream_add_event(info, curr_pos,
2361 extra + IW_SCAN_MAX_DATA, iwe,
2362 IW_EV_FREQ_LEN);
2363
2364 iwe->cmd = SIOCGIWENCODE;
2365 if (curr_bss->capa & WLAN_CAPABILITY_PRIVACY)
2366 iwe->u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY;
2367 else
2368 iwe->u.data.flags = IW_ENCODE_DISABLED;
2369
2370 iwe->u.data.length = 0;
2371 curr_pos = iwe_stream_add_point(info, curr_pos,
2372 extra + IW_SCAN_MAX_DATA, iwe,
2373 NULL);
2374
2375 /* Add quality statistics */
2376 iwe->cmd = IWEVQUAL;
2377 iwe->u.qual.noise = 0;
2378 iwe->u.qual.updated =
2379 IW_QUAL_NOISE_INVALID | IW_QUAL_LEVEL_UPDATED;
2380 iwe->u.qual.level = (curr_bss->rssi * 100 / 42);
2381 if (iwe->u.qual.level > 100)
2382 iwe->u.qual.level = 100;
2383 if (at76_is_intersil(priv->board_type))
2384 iwe->u.qual.qual = curr_bss->link_qual;
2385 else {
2386 iwe->u.qual.qual = 0;
2387 iwe->u.qual.updated |= IW_QUAL_QUAL_INVALID;
2388 }
2389 /* Add new value to event */
2390 curr_pos = iwe_stream_add_event(info, curr_pos,
2391 extra + IW_SCAN_MAX_DATA, iwe,
2392 IW_EV_QUAL_LEN);
2393
2394 /* Rate: stuffing multiple values in a single event requires
2395 * a bit more of magic - Jean II */
2396 curr_val = curr_pos + IW_EV_LCP_LEN;
2397
2398 iwe->cmd = SIOCGIWRATE;
2399 /* Those two flags are ignored... */
2400 iwe->u.bitrate.fixed = 0;
2401 iwe->u.bitrate.disabled = 0;
2402 /* Max 8 values */
2403 for (i = 0; i < curr_bss->rates_len; i++) {
2404 /* Bit rate given in 500 kb/s units (+ 0x80) */
2405 iwe->u.bitrate.value =
2406 ((curr_bss->rates[i] & 0x7f) * 500000);
2407 /* Add new value to event */
2408 curr_val = iwe_stream_add_value(info, curr_pos,
2409 curr_val,
2410 extra +
2411 IW_SCAN_MAX_DATA, iwe,
2412 IW_EV_PARAM_LEN);
2413 }
2414
2415 /* Check if we added any event */
2416 if ((curr_val - curr_pos) > IW_EV_LCP_LEN)
2417 curr_pos = curr_val;
2418
2419 /* more information may be sent back using IWECUSTOM */
2420
2421 }
2422
2423 spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
2424
2425 data->length = (curr_pos - extra);
2426 data->flags = 0;
2427
2428 kfree(iwe);
2429 return 0;
2430}
2431
2432static int at76_iw_handler_set_essid(struct net_device *netdev,
2433 struct iw_request_info *info,
2434 struct iw_point *data, char *extra)
2435{
2436 struct at76_priv *priv = netdev_priv(netdev);
2437
2438 at76_dbg(DBG_IOCTL, "%s: SIOCSIWESSID - %s", netdev->name, extra);
2439
2440 if (data->flags) {
2441 memcpy(priv->essid, extra, data->length);
2442 priv->essid_size = data->length;
2443 } else
2444 priv->essid_size = 0; /* Use any SSID */
2445
2446 return -EIWCOMMIT;
2447}
2448
2449static int at76_iw_handler_get_essid(struct net_device *netdev,
2450 struct iw_request_info *info,
2451 struct iw_point *data, char *extra)
2452{
2453 struct at76_priv *priv = netdev_priv(netdev);
2454
2455 if (priv->essid_size) {
2456 /* not the ANY ssid in priv->essid */
2457 data->flags = 1;
2458 data->length = priv->essid_size;
2459 memcpy(extra, priv->essid, data->length);
2460 } else {
2461 /* the ANY ssid was specified */
2462 if (priv->mac_state == MAC_CONNECTED && priv->curr_bss) {
2463 /* report the SSID we have found */
2464 data->flags = 1;
2465 data->length = priv->curr_bss->ssid_len;
2466 memcpy(extra, priv->curr_bss->ssid, data->length);
2467 } else {
2468 /* report ANY back */
2469 data->flags = 0;
2470 data->length = 0;
2471 }
2472 }
2473
2474 at76_dbg(DBG_IOCTL, "%s: SIOCGIWESSID - %.*s", netdev->name,
2475 data->length, extra);
2476
2477 return 0;
2478}
2479
2480static int at76_iw_handler_set_rate(struct net_device *netdev,
2481 struct iw_request_info *info,
2482 struct iw_param *bitrate, char *extra)
2483{
2484 struct at76_priv *priv = netdev_priv(netdev);
2485 int ret = -EIWCOMMIT;
2486
2487 at76_dbg(DBG_IOCTL, "%s: SIOCSIWRATE - %d", netdev->name,
2488 bitrate->value);
2489
2490 switch (bitrate->value) {
2491 case -1:
2492 priv->txrate = TX_RATE_AUTO;
2493 break; /* auto rate */
2494 case 1000000:
2495 priv->txrate = TX_RATE_1MBIT;
2496 break;
2497 case 2000000:
2498 priv->txrate = TX_RATE_2MBIT;
2499 break;
2500 case 5500000:
2501 priv->txrate = TX_RATE_5_5MBIT;
2502 break;
2503 case 11000000:
2504 priv->txrate = TX_RATE_11MBIT;
2505 break;
2506 default:
2507 ret = -EINVAL;
2508 }
2509
2510 return ret;
2511}
2512
2513static int at76_iw_handler_get_rate(struct net_device *netdev,
2514 struct iw_request_info *info,
2515 struct iw_param *bitrate, char *extra)
2516{
2517 struct at76_priv *priv = netdev_priv(netdev);
2518 int ret = 0;
2519
2520 switch (priv->txrate) {
2521 /* return max rate if RATE_AUTO */
2522 case TX_RATE_AUTO:
2523 bitrate->value = 11000000;
2524 break;
2525 case TX_RATE_1MBIT:
2526 bitrate->value = 1000000;
2527 break;
2528 case TX_RATE_2MBIT:
2529 bitrate->value = 2000000;
2530 break;
2531 case TX_RATE_5_5MBIT:
2532 bitrate->value = 5500000;
2533 break;
2534 case TX_RATE_11MBIT:
2535 bitrate->value = 11000000;
2536 break;
2537 default:
2538 ret = -EINVAL;
2539 }
2540
2541 bitrate->fixed = (priv->txrate != TX_RATE_AUTO);
2542 bitrate->disabled = 0;
2543
2544 at76_dbg(DBG_IOCTL, "%s: SIOCGIWRATE - %d", netdev->name,
2545 bitrate->value);
2546
2547 return ret;
2548}
2549
2550static int at76_iw_handler_set_rts(struct net_device *netdev,
2551 struct iw_request_info *info,
2552 struct iw_param *rts, char *extra)
2553{
2554 struct at76_priv *priv = netdev_priv(netdev);
2555 int ret = -EIWCOMMIT;
2556 int rthr = rts->value;
2557
2558 at76_dbg(DBG_IOCTL, "%s: SIOCSIWRTS - value %d disabled %s",
2559 netdev->name, rts->value, (rts->disabled) ? "true" : "false");
2560
2561 if (rts->disabled)
2562 rthr = MAX_RTS_THRESHOLD;
2563
2564 if ((rthr < 0) || (rthr > MAX_RTS_THRESHOLD))
2565 ret = -EINVAL;
2566 else
2567 priv->rts_threshold = rthr;
2568
2569 return ret;
2570}
2571
2572static int at76_iw_handler_get_rts(struct net_device *netdev,
2573 struct iw_request_info *info,
2574 struct iw_param *rts, char *extra)
2575{
2576 struct at76_priv *priv = netdev_priv(netdev);
2577
2578 rts->value = priv->rts_threshold;
2579 rts->disabled = (rts->value >= MAX_RTS_THRESHOLD);
2580 rts->fixed = 1;
2581
2582 at76_dbg(DBG_IOCTL, "%s: SIOCGIWRTS - value %d disabled %s",
2583 netdev->name, rts->value, (rts->disabled) ? "true" : "false");
2584
2585 return 0;
2586}
2587
2588static int at76_iw_handler_set_frag(struct net_device *netdev,
2589 struct iw_request_info *info,
2590 struct iw_param *frag, char *extra)
2591{
2592 struct at76_priv *priv = netdev_priv(netdev);
2593 int ret = -EIWCOMMIT;
2594 int fthr = frag->value;
2595
2596 at76_dbg(DBG_IOCTL, "%s: SIOCSIWFRAG - value %d, disabled %s",
2597 netdev->name, frag->value,
2598 (frag->disabled) ? "true" : "false");
2599
2600 if (frag->disabled)
2601 fthr = MAX_FRAG_THRESHOLD;
2602
2603 if ((fthr < MIN_FRAG_THRESHOLD) || (fthr > MAX_FRAG_THRESHOLD))
2604 ret = -EINVAL;
2605 else
2606 priv->frag_threshold = fthr & ~0x1; /* get an even value */
2607
2608 return ret;
2609}
2610
2611static int at76_iw_handler_get_frag(struct net_device *netdev,
2612 struct iw_request_info *info,
2613 struct iw_param *frag, char *extra)
2614{
2615 struct at76_priv *priv = netdev_priv(netdev);
2616
2617 frag->value = priv->frag_threshold;
2618 frag->disabled = (frag->value >= MAX_FRAG_THRESHOLD);
2619 frag->fixed = 1;
2620
2621 at76_dbg(DBG_IOCTL, "%s: SIOCGIWFRAG - value %d, disabled %s",
2622 netdev->name, frag->value,
2623 (frag->disabled) ? "true" : "false");
2624
2625 return 0;
2626}
2627
2628static int at76_iw_handler_get_txpow(struct net_device *netdev,
2629 struct iw_request_info *info,
2630 struct iw_param *power, char *extra)
2631{
2632 power->value = 15;
2633 power->fixed = 1; /* No power control */
2634 power->disabled = 0;
2635 power->flags = IW_TXPOW_DBM;
2636
2637 at76_dbg(DBG_IOCTL, "%s: SIOCGIWTXPOW - txpow %d dBm", netdev->name,
2638 power->value);
2639
2640 return 0;
2641}
2642
2643/* jal: short retry is handled by the firmware (at least 0.90.x),
2644 while long retry is not (?) */
2645static int at76_iw_handler_set_retry(struct net_device *netdev,
2646 struct iw_request_info *info,
2647 struct iw_param *retry, char *extra)
2648{
2649 struct at76_priv *priv = netdev_priv(netdev);
2650 int ret = -EIWCOMMIT;
2651
2652 at76_dbg(DBG_IOCTL, "%s: SIOCSIWRETRY disabled %d flags 0x%x val %d",
2653 netdev->name, retry->disabled, retry->flags, retry->value);
2654
2655 if (!retry->disabled && (retry->flags & IW_RETRY_LIMIT)) {
2656 if ((retry->flags & IW_RETRY_MIN) ||
2657 !(retry->flags & IW_RETRY_MAX))
2658 priv->short_retry_limit = retry->value;
2659 else
2660 ret = -EINVAL;
2661 } else
2662 ret = -EINVAL;
2663
2664 return ret;
2665}
2666
2667/* Adapted (ripped) from atmel.c */
2668static int at76_iw_handler_get_retry(struct net_device *netdev,
2669 struct iw_request_info *info,
2670 struct iw_param *retry, char *extra)
2671{
2672 struct at76_priv *priv = netdev_priv(netdev);
2673
2674 at76_dbg(DBG_IOCTL, "%s: SIOCGIWRETRY", netdev->name);
2675
2676 retry->disabled = 0; /* Can't be disabled */
2677 retry->flags = IW_RETRY_LIMIT;
2678 retry->value = priv->short_retry_limit;
2679
2680 return 0;
2681}
2682
2683static int at76_iw_handler_set_encode(struct net_device *netdev,
2684 struct iw_request_info *info,
2685 struct iw_point *encoding, char *extra)
2686{
2687 struct at76_priv *priv = netdev_priv(netdev);
2688 int index = (encoding->flags & IW_ENCODE_INDEX) - 1;
2689 int len = encoding->length;
2690
2691 at76_dbg(DBG_IOCTL, "%s: SIOCSIWENCODE - enc.flags %08x "
2692 "pointer %p len %d", netdev->name, encoding->flags,
2693 encoding->pointer, encoding->length);
2694 at76_dbg(DBG_IOCTL,
2695 "%s: SIOCSIWENCODE - old wepstate: enabled %s key_id %d "
2696 "auth_mode %s", netdev->name,
2697 (priv->wep_enabled) ? "true" : "false", priv->wep_key_id,
2698 (priv->auth_mode ==
2699 WLAN_AUTH_SHARED_KEY) ? "restricted" : "open");
2700
2701 /* take the old default key if index is invalid */
2702 if ((index < 0) || (index >= WEP_KEYS))
2703 index = priv->wep_key_id;
2704
2705 if (len > 0) {
2706 if (len > WEP_LARGE_KEY_LEN)
2707 len = WEP_LARGE_KEY_LEN;
2708
2709 memset(priv->wep_keys[index], 0, WEP_KEY_LEN);
2710 memcpy(priv->wep_keys[index], extra, len);
2711 priv->wep_keys_len[index] = (len <= WEP_SMALL_KEY_LEN) ?
2712 WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN;
2713 priv->wep_enabled = 1;
2714 }
2715
2716 priv->wep_key_id = index;
2717 priv->wep_enabled = ((encoding->flags & IW_ENCODE_DISABLED) == 0);
2718
2719 if (encoding->flags & IW_ENCODE_RESTRICTED)
2720 priv->auth_mode = WLAN_AUTH_SHARED_KEY;
2721 if (encoding->flags & IW_ENCODE_OPEN)
2722 priv->auth_mode = WLAN_AUTH_OPEN;
2723
2724 at76_dbg(DBG_IOCTL,
2725 "%s: SIOCSIWENCODE - new wepstate: enabled %s key_id %d "
2726 "key_len %d auth_mode %s", netdev->name,
2727 (priv->wep_enabled) ? "true" : "false", priv->wep_key_id + 1,
2728 priv->wep_keys_len[priv->wep_key_id],
2729 (priv->auth_mode ==
2730 WLAN_AUTH_SHARED_KEY) ? "restricted" : "open");
2731
2732 return -EIWCOMMIT;
2733}
2734
2735static int at76_iw_handler_get_encode(struct net_device *netdev,
2736 struct iw_request_info *info,
2737 struct iw_point *encoding, char *extra)
2738{
2739 struct at76_priv *priv = netdev_priv(netdev);
2740 int index = (encoding->flags & IW_ENCODE_INDEX) - 1;
2741
2742 if ((index < 0) || (index >= WEP_KEYS))
2743 index = priv->wep_key_id;
2744
2745 encoding->flags =
2746 (priv->auth_mode == WLAN_AUTH_SHARED_KEY) ?
2747 IW_ENCODE_RESTRICTED : IW_ENCODE_OPEN;
2748
2749 if (!priv->wep_enabled)
2750 encoding->flags |= IW_ENCODE_DISABLED;
2751
2752 if (encoding->pointer) {
2753 encoding->length = priv->wep_keys_len[index];
2754
2755 memcpy(extra, priv->wep_keys[index], priv->wep_keys_len[index]);
2756
2757 encoding->flags |= (index + 1);
2758 }
2759
2760 at76_dbg(DBG_IOCTL, "%s: SIOCGIWENCODE - enc.flags %08x "
2761 "pointer %p len %d", netdev->name, encoding->flags,
2762 encoding->pointer, encoding->length);
2763 at76_dbg(DBG_IOCTL,
2764 "%s: SIOCGIWENCODE - wepstate: enabled %s key_id %d "
2765 "key_len %d auth_mode %s", netdev->name,
2766 (priv->wep_enabled) ? "true" : "false", priv->wep_key_id + 1,
2767 priv->wep_keys_len[priv->wep_key_id],
2768 (priv->auth_mode ==
2769 WLAN_AUTH_SHARED_KEY) ? "restricted" : "open");
2770
2771 return 0;
2772}
2773
2774static int at76_iw_handler_set_power(struct net_device *netdev,
2775 struct iw_request_info *info,
2776 struct iw_param *prq, char *extra)
2777{
2778 int err = -EIWCOMMIT;
2779 struct at76_priv *priv = netdev_priv(netdev);
2780
2781 at76_dbg(DBG_IOCTL,
2782 "%s: SIOCSIWPOWER - disabled %s flags 0x%x value 0x%x",
2783 netdev->name, (prq->disabled) ? "true" : "false", prq->flags,
2784 prq->value);
2785
2786 if (prq->disabled)
2787 priv->pm_mode = AT76_PM_OFF;
2788 else {
2789 switch (prq->flags & IW_POWER_MODE) {
2790 case IW_POWER_ALL_R:
2791 case IW_POWER_ON:
2792 break;
2793 default:
2794 err = -EINVAL;
2795 goto exit;
2796 }
2797 if (prq->flags & IW_POWER_PERIOD)
2798 priv->pm_period = prq->value;
2799
2800 if (prq->flags & IW_POWER_TIMEOUT) {
2801 err = -EINVAL;
2802 goto exit;
2803 }
2804 priv->pm_mode = AT76_PM_ON;
2805 }
2806exit:
2807 return err;
2808}
2809
2810static int at76_iw_handler_get_power(struct net_device *netdev,
2811 struct iw_request_info *info,
2812 struct iw_param *power, char *extra)
2813{
2814 struct at76_priv *priv = netdev_priv(netdev);
2815
2816 power->disabled = (priv->pm_mode == AT76_PM_OFF);
2817 if (!power->disabled) {
2818 power->flags = IW_POWER_PERIOD | IW_POWER_ALL_R;
2819 power->value = priv->pm_period;
2820 }
2821
2822 at76_dbg(DBG_IOCTL, "%s: SIOCGIWPOWER - %s flags 0x%x value 0x%x",
2823 netdev->name, power->disabled ? "disabled" : "enabled",
2824 power->flags, power->value);
2825
2826 return 0;
2827}
2828
2829/*******************************************************************************
2830 * Private IOCTLS
2831 */
2832static int at76_iw_set_short_preamble(struct net_device *netdev,
2833 struct iw_request_info *info, char *name,
2834 char *extra)
2835{
2836 struct at76_priv *priv = netdev_priv(netdev);
2837 int val = *((int *)name);
2838 int ret = -EIWCOMMIT;
2839
2840 at76_dbg(DBG_IOCTL, "%s: AT76_SET_SHORT_PREAMBLE, %d",
2841 netdev->name, val);
2842
2843 if (val < PREAMBLE_TYPE_LONG || val > PREAMBLE_TYPE_AUTO)
2844 ret = -EINVAL;
2845 else
2846 priv->preamble_type = val;
2847
2848 return ret;
2849}
2850
2851static int at76_iw_get_short_preamble(struct net_device *netdev,
2852 struct iw_request_info *info,
2853 union iwreq_data *wrqu, char *extra)
2854{
2855 struct at76_priv *priv = netdev_priv(netdev);
2856
2857 snprintf(wrqu->name, sizeof(wrqu->name), "%s (%d)",
2858 preambles[priv->preamble_type], priv->preamble_type);
2859 return 0;
2860}
2861
2862static int at76_iw_set_debug(struct net_device *netdev,
2863 struct iw_request_info *info,
2864 struct iw_point *data, char *extra)
2865{
2866 char *ptr;
2867 u32 val;
2868
2869 if (data->length > 0) {
2870 val = simple_strtol(extra, &ptr, 0);
2871
2872 if (ptr == extra)
2873 val = DBG_DEFAULTS;
2874
2875 at76_dbg(DBG_IOCTL, "%s: AT76_SET_DEBUG input %d: %s -> 0x%x",
2876 netdev->name, data->length, extra, val);
2877 } else
2878 val = DBG_DEFAULTS;
2879
2880 at76_dbg(DBG_IOCTL, "%s: AT76_SET_DEBUG, old 0x%x, new 0x%x",
2881 netdev->name, at76_debug, val);
2882
2883 /* jal: some more output to pin down lockups */
2884 at76_dbg(DBG_IOCTL, "%s: netif running %d queue_stopped %d "
2885 "carrier_ok %d", netdev->name, netif_running(netdev),
2886 netif_queue_stopped(netdev), netif_carrier_ok(netdev));
2887
2888 at76_debug = val;
2889
2890 return 0;
2891}
2892
2893static int at76_iw_get_debug(struct net_device *netdev,
2894 struct iw_request_info *info,
2895 union iwreq_data *wrqu, char *extra)
2896{
2897 snprintf(wrqu->name, sizeof(wrqu->name), "0x%08x", at76_debug);
2898 return 0;
2899}
2900
2901static int at76_iw_set_powersave_mode(struct net_device *netdev,
2902 struct iw_request_info *info, char *name,
2903 char *extra)
2904{
2905 struct at76_priv *priv = netdev_priv(netdev);
2906 int val = *((int *)name);
2907 int ret = -EIWCOMMIT;
2908
2909 at76_dbg(DBG_IOCTL, "%s: AT76_SET_POWERSAVE_MODE, %d (%s)",
2910 netdev->name, val,
2911 val == AT76_PM_OFF ? "active" : val == AT76_PM_ON ? "save" :
2912 val == AT76_PM_SMART ? "smart save" : "<invalid>");
2913 if (val < AT76_PM_OFF || val > AT76_PM_SMART)
2914 ret = -EINVAL;
2915 else
2916 priv->pm_mode = val;
2917
2918 return ret;
2919}
2920
2921static int at76_iw_get_powersave_mode(struct net_device *netdev,
2922 struct iw_request_info *info,
2923 union iwreq_data *wrqu, char *extra)
2924{
2925 struct at76_priv *priv = netdev_priv(netdev);
2926 int *param = (int *)extra;
2927
2928 param[0] = priv->pm_mode;
2929 return 0;
2930}
2931
2932static int at76_iw_set_scan_times(struct net_device *netdev,
2933 struct iw_request_info *info, char *name,
2934 char *extra)
2935{
2936 struct at76_priv *priv = netdev_priv(netdev);
2937 int mint = *((int *)name);
2938 int maxt = *((int *)name + 1);
2939 int ret = -EIWCOMMIT;
2940
2941 at76_dbg(DBG_IOCTL, "%s: AT76_SET_SCAN_TIMES - min %d max %d",
2942 netdev->name, mint, maxt);
2943 if (mint <= 0 || maxt <= 0 || mint > maxt)
2944 ret = -EINVAL;
2945 else {
2946 priv->scan_min_time = mint;
2947 priv->scan_max_time = maxt;
2948 }
2949
2950 return ret;
2951}
2952
2953static int at76_iw_get_scan_times(struct net_device *netdev,
2954 struct iw_request_info *info,
2955 union iwreq_data *wrqu, char *extra)
2956{
2957 struct at76_priv *priv = netdev_priv(netdev);
2958 int *param = (int *)extra;
2959
2960 param[0] = priv->scan_min_time;
2961 param[1] = priv->scan_max_time;
2962 return 0;
2963}
2964
2965static int at76_iw_set_scan_mode(struct net_device *netdev,
2966 struct iw_request_info *info, char *name,
2967 char *extra)
2968{
2969 struct at76_priv *priv = netdev_priv(netdev);
2970 int val = *((int *)name);
2971 int ret = -EIWCOMMIT;
2972
2973 at76_dbg(DBG_IOCTL, "%s: AT76_SET_SCAN_MODE - mode %s",
2974 netdev->name, (val = SCAN_TYPE_ACTIVE) ? "active" :
2975 (val = SCAN_TYPE_PASSIVE) ? "passive" : "<invalid>");
2976
2977 if (val != SCAN_TYPE_ACTIVE && val != SCAN_TYPE_PASSIVE)
2978 ret = -EINVAL;
2979 else
2980 priv->scan_mode = val;
2981
2982 return ret;
2983}
2984
2985static int at76_iw_get_scan_mode(struct net_device *netdev,
2986 struct iw_request_info *info,
2987 union iwreq_data *wrqu, char *extra)
2988{
2989 struct at76_priv *priv = netdev_priv(netdev);
2990 int *param = (int *)extra;
2991
2992 param[0] = priv->scan_mode;
2993 return 0;
2994}
2995
2996#define AT76_SET_HANDLER(h, f) [h - SIOCIWFIRST] = (iw_handler) f
2997
2998/* Standard wireless handlers */
2999static const iw_handler at76_handlers[] = {
3000 AT76_SET_HANDLER(SIOCSIWCOMMIT, at76_iw_handler_commit),
3001 AT76_SET_HANDLER(SIOCGIWNAME, at76_iw_handler_get_name),
3002 AT76_SET_HANDLER(SIOCSIWFREQ, at76_iw_handler_set_freq),
3003 AT76_SET_HANDLER(SIOCGIWFREQ, at76_iw_handler_get_freq),
3004 AT76_SET_HANDLER(SIOCSIWMODE, at76_iw_handler_set_mode),
3005 AT76_SET_HANDLER(SIOCGIWMODE, at76_iw_handler_get_mode),
3006 AT76_SET_HANDLER(SIOCGIWRANGE, at76_iw_handler_get_range),
3007 AT76_SET_HANDLER(SIOCSIWSPY, at76_iw_handler_set_spy),
3008 AT76_SET_HANDLER(SIOCGIWSPY, at76_iw_handler_get_spy),
3009 AT76_SET_HANDLER(SIOCSIWTHRSPY, at76_iw_handler_set_thrspy),
3010 AT76_SET_HANDLER(SIOCGIWTHRSPY, at76_iw_handler_get_thrspy),
3011 AT76_SET_HANDLER(SIOCSIWAP, at76_iw_handler_set_wap),
3012 AT76_SET_HANDLER(SIOCGIWAP, at76_iw_handler_get_wap),
3013 AT76_SET_HANDLER(SIOCSIWSCAN, at76_iw_handler_set_scan),
3014 AT76_SET_HANDLER(SIOCGIWSCAN, at76_iw_handler_get_scan),
3015 AT76_SET_HANDLER(SIOCSIWESSID, at76_iw_handler_set_essid),
3016 AT76_SET_HANDLER(SIOCGIWESSID, at76_iw_handler_get_essid),
3017 AT76_SET_HANDLER(SIOCSIWRATE, at76_iw_handler_set_rate),
3018 AT76_SET_HANDLER(SIOCGIWRATE, at76_iw_handler_get_rate),
3019 AT76_SET_HANDLER(SIOCSIWRTS, at76_iw_handler_set_rts),
3020 AT76_SET_HANDLER(SIOCGIWRTS, at76_iw_handler_get_rts),
3021 AT76_SET_HANDLER(SIOCSIWFRAG, at76_iw_handler_set_frag),
3022 AT76_SET_HANDLER(SIOCGIWFRAG, at76_iw_handler_get_frag),
3023 AT76_SET_HANDLER(SIOCGIWTXPOW, at76_iw_handler_get_txpow),
3024 AT76_SET_HANDLER(SIOCSIWRETRY, at76_iw_handler_set_retry),
3025 AT76_SET_HANDLER(SIOCGIWRETRY, at76_iw_handler_get_retry),
3026 AT76_SET_HANDLER(SIOCSIWENCODE, at76_iw_handler_set_encode),
3027 AT76_SET_HANDLER(SIOCGIWENCODE, at76_iw_handler_get_encode),
3028 AT76_SET_HANDLER(SIOCSIWPOWER, at76_iw_handler_set_power),
3029 AT76_SET_HANDLER(SIOCGIWPOWER, at76_iw_handler_get_power)
3030};
3031
3032#define AT76_SET_PRIV(h, f) [h - SIOCIWFIRSTPRIV] = (iw_handler) f
3033
3034/* Private wireless handlers */
3035static const iw_handler at76_priv_handlers[] = {
3036 AT76_SET_PRIV(AT76_SET_SHORT_PREAMBLE, at76_iw_set_short_preamble),
3037 AT76_SET_PRIV(AT76_GET_SHORT_PREAMBLE, at76_iw_get_short_preamble),
3038 AT76_SET_PRIV(AT76_SET_DEBUG, at76_iw_set_debug),
3039 AT76_SET_PRIV(AT76_GET_DEBUG, at76_iw_get_debug),
3040 AT76_SET_PRIV(AT76_SET_POWERSAVE_MODE, at76_iw_set_powersave_mode),
3041 AT76_SET_PRIV(AT76_GET_POWERSAVE_MODE, at76_iw_get_powersave_mode),
3042 AT76_SET_PRIV(AT76_SET_SCAN_TIMES, at76_iw_set_scan_times),
3043 AT76_SET_PRIV(AT76_GET_SCAN_TIMES, at76_iw_get_scan_times),
3044 AT76_SET_PRIV(AT76_SET_SCAN_MODE, at76_iw_set_scan_mode),
3045 AT76_SET_PRIV(AT76_GET_SCAN_MODE, at76_iw_get_scan_mode),
3046};
3047
3048/* Names and arguments of private wireless handlers */
3049static const struct iw_priv_args at76_priv_args[] = {
3050 /* 0 - long, 1 - short */
3051 {AT76_SET_SHORT_PREAMBLE,
3052 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_preamble"},
3053
3054 {AT76_GET_SHORT_PREAMBLE,
3055 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | 10, "get_preamble"},
3056
3057 /* we must pass the new debug mask as a string, because iwpriv cannot
3058 * parse hex numbers starting with 0x :-( */
3059 {AT76_SET_DEBUG,
3060 IW_PRIV_TYPE_CHAR | 10, 0, "set_debug"},
3061
3062 {AT76_GET_DEBUG,
3063 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | 10, "get_debug"},
3064
3065 /* 1 - active, 2 - power save, 3 - smart power save */
3066 {AT76_SET_POWERSAVE_MODE,
3067 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_powersave"},
3068
3069 {AT76_GET_POWERSAVE_MODE,
3070 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_powersave"},
3071
3072 /* min_channel_time, max_channel_time */
3073 {AT76_SET_SCAN_TIMES,
3074 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "set_scan_times"},
3075
3076 {AT76_GET_SCAN_TIMES,
3077 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, "get_scan_times"},
3078
3079 /* 0 - active, 1 - passive scan */
3080 {AT76_SET_SCAN_MODE,
3081 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_scan_mode"},
3082
3083 {AT76_GET_SCAN_MODE,
3084 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_scan_mode"},
3085};
3086
3087static const struct iw_handler_def at76_handler_def = {
3088 .num_standard = ARRAY_SIZE(at76_handlers),
3089 .num_private = ARRAY_SIZE(at76_priv_handlers),
3090 .num_private_args = ARRAY_SIZE(at76_priv_args),
3091 .standard = at76_handlers,
3092 .private = at76_priv_handlers,
3093 .private_args = at76_priv_args,
3094 .get_wireless_stats = at76_get_wireless_stats,
3095};
3096
3097static const u8 snapsig[] = { 0xaa, 0xaa, 0x03 };
3098
3099/* RFC 1042 encapsulates Ethernet frames in 802.2 SNAP (0xaa, 0xaa, 0x03) with
3100 * a SNAP OID of 0 (0x00, 0x00, 0x00) */
3101static const u8 rfc1042sig[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 };
3102
3103static int at76_tx(struct sk_buff *skb, struct net_device *netdev)
3104{
3105 struct at76_priv *priv = netdev_priv(netdev);
3106 struct net_device_stats *stats = &priv->stats;
3107 int ret = 0;
3108 int wlen;
3109 int submit_len;
3110 struct at76_tx_buffer *tx_buffer = priv->bulk_out_buffer;
3111 struct ieee80211_hdr_3addr *i802_11_hdr =
3112 (struct ieee80211_hdr_3addr *)tx_buffer->packet;
3113 u8 *payload = i802_11_hdr->payload;
3114 struct ethhdr *eh = (struct ethhdr *)skb->data;
3115
3116 if (netif_queue_stopped(netdev)) {
3117 printk(KERN_ERR "%s: %s called while netdev is stopped\n",
3118 netdev->name, __func__);
3119 /* skip this packet */
3120 dev_kfree_skb(skb);
3121 return 0;
3122 }
3123
3124 if (priv->tx_urb->status == -EINPROGRESS) {
3125 printk(KERN_ERR "%s: %s called while tx urb is pending\n",
3126 netdev->name, __func__);
3127 /* skip this packet */
3128 dev_kfree_skb(skb);
3129 return 0;
3130 }
3131
3132 if (skb->len < ETH_HLEN) {
3133 printk(KERN_ERR "%s: %s: skb too short (%d)\n",
3134 netdev->name, __func__, skb->len);
3135 dev_kfree_skb(skb);
3136 return 0;
3137 }
3138
3139 at76_ledtrig_tx_activity(); /* tell ledtrigger we send a packet */
3140
3141 /* we can get rid of memcpy if we set netdev->hard_header_len to
3142 reserve enough space, but we would need to keep the skb around */
3143
3144 if (ntohs(eh->h_proto) <= ETH_DATA_LEN) {
3145 /* this is a 802.3 packet */
3146 if (skb->len >= ETH_HLEN + sizeof(rfc1042sig)
3147 && skb->data[ETH_HLEN] == rfc1042sig[0]
3148 && skb->data[ETH_HLEN + 1] == rfc1042sig[1]) {
3149 /* higher layer delivered SNAP header - keep it */
3150 memcpy(payload, skb->data + ETH_HLEN,
3151 skb->len - ETH_HLEN);
3152 wlen = IEEE80211_3ADDR_LEN + skb->len - ETH_HLEN;
3153 } else {
3154 printk(KERN_ERR "%s: dropping non-SNAP 802.2 packet "
3155 "(DSAP 0x%02x SSAP 0x%02x cntrl 0x%02x)\n",
3156 priv->netdev->name, skb->data[ETH_HLEN],
3157 skb->data[ETH_HLEN + 1],
3158 skb->data[ETH_HLEN + 2]);
3159 dev_kfree_skb(skb);
3160 return 0;
3161 }
3162 } else {
3163 /* add RFC 1042 header in front */
3164 memcpy(payload, rfc1042sig, sizeof(rfc1042sig));
3165 memcpy(payload + sizeof(rfc1042sig), &eh->h_proto,
3166 skb->len - offsetof(struct ethhdr, h_proto));
3167 wlen = IEEE80211_3ADDR_LEN + sizeof(rfc1042sig) + skb->len -
3168 offsetof(struct ethhdr, h_proto);
3169 }
3170
3171 /* make wireless header */
3172 i802_11_hdr->frame_ctl =
3173 cpu_to_le16(IEEE80211_FTYPE_DATA |
3174 (priv->wep_enabled ? IEEE80211_FCTL_PROTECTED : 0) |
3175 (priv->iw_mode ==
3176 IW_MODE_INFRA ? IEEE80211_FCTL_TODS : 0));
3177
3178 if (priv->iw_mode == IW_MODE_ADHOC) {
3179 memcpy(i802_11_hdr->addr1, eh->h_dest, ETH_ALEN);
3180 memcpy(i802_11_hdr->addr2, eh->h_source, ETH_ALEN);
3181 memcpy(i802_11_hdr->addr3, priv->bssid, ETH_ALEN);
3182 } else if (priv->iw_mode == IW_MODE_INFRA) {
3183 memcpy(i802_11_hdr->addr1, priv->bssid, ETH_ALEN);
3184 memcpy(i802_11_hdr->addr2, eh->h_source, ETH_ALEN);
3185 memcpy(i802_11_hdr->addr3, eh->h_dest, ETH_ALEN);
3186 }
3187
3188 i802_11_hdr->duration_id = cpu_to_le16(0);
3189 i802_11_hdr->seq_ctl = cpu_to_le16(0);
3190
3191 /* setup 'Atmel' header */
3192 tx_buffer->wlength = cpu_to_le16(wlen);
3193 tx_buffer->tx_rate = priv->txrate;
3194 /* for broadcast destination addresses, the firmware 0.100.x
3195 seems to choose the highest rate set with CMD_STARTUP in
3196 basic_rate_set replacing this value */
3197
3198 memset(tx_buffer->reserved, 0, sizeof(tx_buffer->reserved));
3199
3200 tx_buffer->padding = at76_calc_padding(wlen);
3201 submit_len = wlen + AT76_TX_HDRLEN + tx_buffer->padding;
3202
3203 at76_dbg(DBG_TX_DATA_CONTENT, "%s skb->data %s", priv->netdev->name,
3204 hex2str(skb->data, 32));
3205 at76_dbg(DBG_TX_DATA, "%s tx: wlen 0x%x pad 0x%x rate %d hdr %s",
3206 priv->netdev->name,
3207 le16_to_cpu(tx_buffer->wlength),
3208 tx_buffer->padding, tx_buffer->tx_rate,
3209 hex2str(i802_11_hdr, sizeof(*i802_11_hdr)));
3210 at76_dbg(DBG_TX_DATA_CONTENT, "%s payload %s", priv->netdev->name,
3211 hex2str(payload, 48));
3212
3213 /* send stuff */
3214 netif_stop_queue(netdev);
3215 netdev->trans_start = jiffies;
3216
3217 usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe, tx_buffer,
3218 submit_len, at76_tx_callback, priv);
3219 ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
3220 if (ret) {
3221 stats->tx_errors++;
3222 printk(KERN_ERR "%s: error in tx submit urb: %d\n",
3223 netdev->name, ret);
3224 if (ret == -EINVAL)
3225 printk(KERN_ERR
3226 "%s: -EINVAL: tx urb %p hcpriv %p complete %p\n",
3227 priv->netdev->name, priv->tx_urb,
3228 priv->tx_urb->hcpriv, priv->tx_urb->complete);
3229 } else {
3230 stats->tx_bytes += skb->len;
3231 dev_kfree_skb(skb);
3232 }
3233
3234 return ret;
3235}
3236
3237static void at76_tx_timeout(struct net_device *netdev)
3238{
3239 struct at76_priv *priv = netdev_priv(netdev);
3240
3241 if (!priv)
3242 return;
3243 dev_warn(&netdev->dev, "tx timeout.");
3244
3245 usb_unlink_urb(priv->tx_urb);
3246 priv->stats.tx_errors++;
3247}
3248
3249static int at76_submit_rx_urb(struct at76_priv *priv)
3250{
3251 int ret;
3252 int size;
3253 struct sk_buff *skb = priv->rx_skb;
3254
3255 if (!priv->rx_urb) {
3256 printk(KERN_ERR "%s: %s: priv->rx_urb is NULL\n",
3257 priv->netdev->name, __func__);
3258 return -EFAULT;
3259 }
3260
3261 if (!skb) {
3262 skb = dev_alloc_skb(sizeof(struct at76_rx_buffer));
3263 if (!skb) {
3264 printk(KERN_ERR "%s: cannot allocate rx skbuff\n",
3265 priv->netdev->name);
3266 ret = -ENOMEM;
3267 goto exit;
3268 }
3269 priv->rx_skb = skb;
3270 } else {
3271 skb_push(skb, skb_headroom(skb));
3272 skb_trim(skb, 0);
3273 }
3274
3275 size = skb_tailroom(skb);
3276 usb_fill_bulk_urb(priv->rx_urb, priv->udev, priv->rx_pipe,
3277 skb_put(skb, size), size, at76_rx_callback, priv);
3278 ret = usb_submit_urb(priv->rx_urb, GFP_ATOMIC);
3279 if (ret < 0) {
3280 if (ret == -ENODEV)
3281 at76_dbg(DBG_DEVSTART,
3282 "usb_submit_urb returned -ENODEV");
3283 else
3284 printk(KERN_ERR "%s: rx, usb_submit_urb failed: %d\n",
3285 priv->netdev->name, ret);
3286 }
3287
3288exit:
3289 if (ret < 0 && ret != -ENODEV)
3290 printk(KERN_ERR "%s: cannot submit rx urb - please unload the "
3291 "driver and/or power cycle the device\n",
3292 priv->netdev->name);
3293
3294 return ret;
3295}
3296
3297static int at76_open(struct net_device *netdev)
3298{
3299 struct at76_priv *priv = netdev_priv(netdev);
3300 int ret = 0;
3301
3302 at76_dbg(DBG_PROC_ENTRY, "%s(): entry", __func__);
3303
3304 if (mutex_lock_interruptible(&priv->mtx))
3305 return -EINTR;
3306
3307 /* if netdev->dev_addr != priv->mac_addr we must
3308 set the mac address in the device ! */
3309 if (compare_ether_addr(netdev->dev_addr, priv->mac_addr)) {
3310 if (at76_add_mac_address(priv, netdev->dev_addr) >= 0)
3311 at76_dbg(DBG_PROGRESS, "%s: set new MAC addr %s",
3312 netdev->name, mac2str(netdev->dev_addr));
3313 }
3314
3315 priv->scan_state = SCAN_IDLE;
3316 priv->last_scan = jiffies;
3317
3318 ret = at76_submit_rx_urb(priv);
3319 if (ret < 0) {
3320 printk(KERN_ERR "%s: open: submit_rx_urb failed: %d\n",
3321 netdev->name, ret);
3322 goto error;
3323 }
3324
3325 schedule_delayed_work(&priv->dwork_restart, 0);
3326
3327 at76_dbg(DBG_PROC_ENTRY, "%s(): end", __func__);
3328error:
3329 mutex_unlock(&priv->mtx);
3330 return ret < 0 ? ret : 0;
3331}
3332
3333static int at76_stop(struct net_device *netdev)
3334{
3335 struct at76_priv *priv = netdev_priv(netdev);
3336
3337 at76_dbg(DBG_DEVSTART, "%s: ENTER", __func__);
3338
3339 if (mutex_lock_interruptible(&priv->mtx))
3340 return -EINTR;
3341
3342 at76_quiesce(priv);
3343
3344 if (!priv->device_unplugged) {
3345 /* We are called by "ifconfig ethX down", not because the
3346 * device is not available anymore. */
3347 at76_set_radio(priv, 0);
3348
3349 /* We unlink rx_urb because at76_open() re-submits it.
3350 * If unplugged, at76_delete_device() takes care of it. */
3351 usb_kill_urb(priv->rx_urb);
3352 }
3353
3354 /* free the bss_list */
3355 at76_free_bss_list(priv);
3356
3357 mutex_unlock(&priv->mtx);
3358 at76_dbg(DBG_DEVSTART, "%s: EXIT", __func__);
3359
3360 return 0;
3361}
3362
3363static void at76_ethtool_get_drvinfo(struct net_device *netdev,
3364 struct ethtool_drvinfo *info)
3365{
3366 struct at76_priv *priv = netdev_priv(netdev);
3367
3368 strncpy(info->driver, DRIVER_NAME, sizeof(info->driver));
3369 strncpy(info->version, DRIVER_VERSION, sizeof(info->version));
3370
3371 usb_make_path(priv->udev, info->bus_info, sizeof(info->bus_info));
3372
3373 snprintf(info->fw_version, sizeof(info->fw_version), "%d.%d.%d-%d",
3374 priv->fw_version.major, priv->fw_version.minor,
3375 priv->fw_version.patch, priv->fw_version.build);
3376}
3377
3378static u32 at76_ethtool_get_link(struct net_device *netdev)
3379{
3380 struct at76_priv *priv = netdev_priv(netdev);
3381 return priv->mac_state == MAC_CONNECTED;
3382}
3383
3384static struct ethtool_ops at76_ethtool_ops = {
3385 .get_drvinfo = at76_ethtool_get_drvinfo,
3386 .get_link = at76_ethtool_get_link,
3387};
3388
3389/* Download external firmware */
3390static int at76_load_external_fw(struct usb_device *udev, struct fwentry *fwe)
3391{
3392 int ret;
3393 int op_mode;
3394 int blockno = 0;
3395 int bsize;
3396 u8 *block;
3397 u8 *buf = fwe->extfw;
3398 int size = fwe->extfw_size;
3399
3400 if (!buf || !size)
3401 return -ENOENT;
3402
3403 op_mode = at76_get_op_mode(udev);
3404 at76_dbg(DBG_DEVSTART, "opmode %d", op_mode);
3405
3406 if (op_mode != OPMODE_NORMAL_NIC_WITHOUT_FLASH) {
3407 dev_printk(KERN_ERR, &udev->dev, "unexpected opmode %d\n",
3408 op_mode);
3409 return -EINVAL;
3410 }
3411
3412 block = kmalloc(FW_BLOCK_SIZE, GFP_KERNEL);
3413 if (!block)
3414 return -ENOMEM;
3415
3416 at76_dbg(DBG_DEVSTART, "downloading external firmware");
3417
3418 /* for fw >= 0.100, the device needs an extra empty block */
3419 do {
3420 bsize = min_t(int, size, FW_BLOCK_SIZE);
3421 memcpy(block, buf, bsize);
3422 at76_dbg(DBG_DEVSTART,
3423 "ext fw, size left = %5d, bsize = %4d, blockno = %2d",
3424 size, bsize, blockno);
3425 ret = at76_load_ext_fw_block(udev, blockno, block, bsize);
3426 if (ret != bsize) {
3427 dev_printk(KERN_ERR, &udev->dev,
3428 "loading %dth firmware block failed: %d\n",
3429 blockno, ret);
3430 goto exit;
3431 }
3432 buf += bsize;
3433 size -= bsize;
3434 blockno++;
3435 } while (bsize > 0);
3436
3437 if (at76_is_505a(fwe->board_type)) {
3438 at76_dbg(DBG_DEVSTART, "200 ms delay for 505a");
3439 schedule_timeout_interruptible(HZ / 5 + 1);
3440 }
3441
3442exit:
3443 kfree(block);
3444 if (ret < 0)
3445 dev_printk(KERN_ERR, &udev->dev,
3446 "downloading external firmware failed: %d\n", ret);
3447 return ret;
3448}
3449
3450/* Download internal firmware */
3451static int at76_load_internal_fw(struct usb_device *udev, struct fwentry *fwe)
3452{
3453 int ret;
3454 int need_remap = !at76_is_505a(fwe->board_type);
3455
3456 ret = at76_usbdfu_download(udev, fwe->intfw, fwe->intfw_size,
3457 need_remap ? 0 : 2 * HZ);
3458
3459 if (ret < 0) {
3460 dev_printk(KERN_ERR, &udev->dev,
3461 "downloading internal fw failed with %d\n", ret);
3462 goto exit;
3463 }
3464
3465 at76_dbg(DBG_DEVSTART, "sending REMAP");
3466
3467 /* no REMAP for 505A (see SF driver) */
3468 if (need_remap) {
3469 ret = at76_remap(udev);
3470 if (ret < 0) {
3471 dev_printk(KERN_ERR, &udev->dev,
3472 "sending REMAP failed with %d\n", ret);
3473 goto exit;
3474 }
3475 }
3476
3477 at76_dbg(DBG_DEVSTART, "sleeping for 2 seconds");
3478 schedule_timeout_interruptible(2 * HZ + 1);
3479 usb_reset_device(udev);
3480
3481exit:
3482 return ret;
3483}
3484
3485static int at76_match_essid(struct at76_priv *priv, struct bss_info *ptr)
3486{
3487 /* common criteria for both modi */
3488
3489 int ret = (priv->essid_size == 0 /* ANY ssid */ ||
3490 (priv->essid_size == ptr->ssid_len &&
3491 !memcmp(priv->essid, ptr->ssid, ptr->ssid_len)));
3492 if (!ret)
3493 at76_dbg(DBG_BSS_MATCH,
3494 "%s bss table entry %p: essid didn't match",
3495 priv->netdev->name, ptr);
3496 return ret;
3497}
3498
3499static inline int at76_match_mode(struct at76_priv *priv, struct bss_info *ptr)
3500{
3501 int ret;
3502
3503 if (priv->iw_mode == IW_MODE_ADHOC)
3504 ret = ptr->capa & WLAN_CAPABILITY_IBSS;
3505 else
3506 ret = ptr->capa & WLAN_CAPABILITY_ESS;
3507 if (!ret)
3508 at76_dbg(DBG_BSS_MATCH,
3509 "%s bss table entry %p: mode didn't match",
3510 priv->netdev->name, ptr);
3511 return ret;
3512}
3513
3514static int at76_match_rates(struct at76_priv *priv, struct bss_info *ptr)
3515{
3516 int i;
3517
3518 for (i = 0; i < ptr->rates_len; i++) {
3519 u8 rate = ptr->rates[i];
3520
3521 if (!(rate & 0x80))
3522 continue;
3523
3524 /* this is a basic rate we have to support
3525 (see IEEE802.11, ch. 7.3.2.2) */
3526 if (rate != (0x80 | hw_rates[0])
3527 && rate != (0x80 | hw_rates[1])
3528 && rate != (0x80 | hw_rates[2])
3529 && rate != (0x80 | hw_rates[3])) {
3530 at76_dbg(DBG_BSS_MATCH,
3531 "%s: bss table entry %p: basic rate %02x not "
3532 "supported", priv->netdev->name, ptr, rate);
3533 return 0;
3534 }
3535 }
3536
3537 /* if we use short preamble, the bss must support it */
3538 if (priv->preamble_type == PREAMBLE_TYPE_SHORT &&
3539 !(ptr->capa & WLAN_CAPABILITY_SHORT_PREAMBLE)) {
3540 at76_dbg(DBG_BSS_MATCH,
3541 "%s: %p does not support short preamble",
3542 priv->netdev->name, ptr);
3543 return 0;
3544 } else
3545 return 1;
3546}
3547
3548static inline int at76_match_wep(struct at76_priv *priv, struct bss_info *ptr)
3549{
3550 if (!priv->wep_enabled && ptr->capa & WLAN_CAPABILITY_PRIVACY) {
3551 /* we have disabled WEP, but the BSS signals privacy */
3552 at76_dbg(DBG_BSS_MATCH,
3553 "%s: bss table entry %p: requires encryption",
3554 priv->netdev->name, ptr);
3555 return 0;
3556 }
3557 /* otherwise if the BSS does not signal privacy it may well
3558 accept encrypted packets from us ... */
3559 return 1;
3560}
3561
3562static inline int at76_match_bssid(struct at76_priv *priv, struct bss_info *ptr)
3563{
3564 if (!priv->wanted_bssid_valid ||
3565 !compare_ether_addr(ptr->bssid, priv->wanted_bssid))
3566 return 1;
3567
3568 at76_dbg(DBG_BSS_MATCH,
3569 "%s: requested bssid - %s does not match",
3570 priv->netdev->name, mac2str(priv->wanted_bssid));
3571 at76_dbg(DBG_BSS_MATCH,
3572 " AP bssid - %s of bss table entry %p",
3573 mac2str(ptr->bssid), ptr);
3574 return 0;
3575}
3576
3577/**
3578 * at76_match_bss - try to find a matching bss in priv->bss
3579 *
3580 * last - last bss tried
3581 *
3582 * last == NULL signals a new round starting with priv->bss_list.next
3583 * this function must be called inside an acquired priv->bss_list_spinlock
3584 * otherwise the timeout on bss may remove the newly chosen entry
3585 */
3586static struct bss_info *at76_match_bss(struct at76_priv *priv,
3587 struct bss_info *last)
3588{
3589 struct bss_info *ptr = NULL;
3590 struct list_head *curr;
3591
3592 curr = last ? last->list.next : priv->bss_list.next;
3593 while (curr != &priv->bss_list) {
3594 ptr = list_entry(curr, struct bss_info, list);
3595 if (at76_match_essid(priv, ptr) && at76_match_mode(priv, ptr)
3596 && at76_match_wep(priv, ptr) && at76_match_rates(priv, ptr)
3597 && at76_match_bssid(priv, ptr))
3598 break;
3599 curr = curr->next;
3600 }
3601
3602 if (curr == &priv->bss_list)
3603 ptr = NULL;
3604 /* otherwise ptr points to the struct bss_info we have chosen */
3605
3606 at76_dbg(DBG_BSS_TABLE, "%s %s: returned %p", priv->netdev->name,
3607 __func__, ptr);
3608 return ptr;
3609}
3610
3611/* Start joining a matching BSS, or create own IBSS */
3612static void at76_work_join(struct work_struct *work)
3613{
3614 struct at76_priv *priv = container_of(work, struct at76_priv,
3615 work_join);
3616 int ret;
3617 unsigned long flags;
3618
3619 mutex_lock(&priv->mtx);
3620
3621 WARN_ON(priv->mac_state != MAC_JOINING);
3622 if (priv->mac_state != MAC_JOINING)
3623 goto exit;
3624
3625 /* secure the access to priv->curr_bss ! */
3626 spin_lock_irqsave(&priv->bss_list_spinlock, flags);
3627 priv->curr_bss = at76_match_bss(priv, priv->curr_bss);
3628 spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
3629
3630 if (!priv->curr_bss) {
3631 /* here we haven't found a matching (i)bss ... */
3632 if (priv->iw_mode == IW_MODE_ADHOC) {
3633 at76_set_mac_state(priv, MAC_OWN_IBSS);
3634 at76_start_ibss(priv);
3635 goto exit;
3636 }
3637 /* haven't found a matching BSS in infra mode - try again */
3638 at76_set_mac_state(priv, MAC_SCANNING);
3639 schedule_work(&priv->work_start_scan);
3640 goto exit;
3641 }
3642
3643 ret = at76_join_bss(priv, priv->curr_bss);
3644 if (ret < 0) {
3645 printk(KERN_ERR "%s: join_bss failed with %d\n",
3646 priv->netdev->name, ret);
3647 goto exit;
3648 }
3649
3650 ret = at76_wait_completion(priv, CMD_JOIN);
3651 if (ret != CMD_STATUS_COMPLETE) {
3652 if (ret != CMD_STATUS_TIME_OUT)
3653 printk(KERN_ERR "%s: join_bss completed with %d\n",
3654 priv->netdev->name, ret);
3655 else
3656 printk(KERN_INFO "%s: join_bss ssid %s timed out\n",
3657 priv->netdev->name,
3658 mac2str(priv->curr_bss->bssid));
3659
3660 /* retry next BSS immediately */
3661 schedule_work(&priv->work_join);
3662 goto exit;
3663 }
3664
3665 /* here we have joined the (I)BSS */
3666 if (priv->iw_mode == IW_MODE_ADHOC) {
3667 struct bss_info *bptr = priv->curr_bss;
3668 at76_set_mac_state(priv, MAC_CONNECTED);
3669 /* get ESSID, BSSID and channel for priv->curr_bss */
3670 priv->essid_size = bptr->ssid_len;
3671 memcpy(priv->essid, bptr->ssid, bptr->ssid_len);
3672 memcpy(priv->bssid, bptr->bssid, ETH_ALEN);
3673 priv->channel = bptr->channel;
3674 at76_iwevent_bss_connect(priv->netdev, bptr->bssid);
3675 netif_carrier_on(priv->netdev);
3676 netif_start_queue(priv->netdev);
3677 /* just to be sure */
3678 cancel_delayed_work(&priv->dwork_get_scan);
3679 cancel_delayed_work(&priv->dwork_auth);
3680 cancel_delayed_work(&priv->dwork_assoc);
3681 } else {
3682 /* send auth req */
3683 priv->retries = AUTH_RETRIES;
3684 at76_set_mac_state(priv, MAC_AUTH);
3685 at76_auth_req(priv, priv->curr_bss, 1, NULL);
3686 at76_dbg(DBG_MGMT_TIMER,
3687 "%s:%d: starting mgmt_timer + HZ", __func__, __LINE__);
3688 schedule_delayed_work(&priv->dwork_auth, AUTH_TIMEOUT);
3689 }
3690
3691exit:
3692 mutex_unlock(&priv->mtx);
3693}
3694
3695/* Reap scan results */
3696static void at76_dwork_get_scan(struct work_struct *work)
3697{
3698 int status;
3699 int ret;
3700 struct at76_priv *priv = container_of(work, struct at76_priv,
3701 dwork_get_scan.work);
3702
3703 mutex_lock(&priv->mtx);
3704 WARN_ON(priv->mac_state != MAC_SCANNING);
3705 if (priv->mac_state != MAC_SCANNING)
3706 goto exit;
3707
3708 status = at76_get_cmd_status(priv->udev, CMD_SCAN);
3709 if (status < 0) {
3710 printk(KERN_ERR "%s: %s: at76_get_cmd_status failed with %d\n",
3711 priv->netdev->name, __func__, status);
3712 status = CMD_STATUS_IN_PROGRESS;
3713 /* INFO: Hope it was a one off error - if not, scanning
3714 further down the line and stop this cycle */
3715 }
3716 at76_dbg(DBG_PROGRESS,
3717 "%s %s: got cmd_status %d (state %s, need_any %d)",
3718 priv->netdev->name, __func__, status,
3719 mac_states[priv->mac_state], priv->scan_need_any);
3720
3721 if (status != CMD_STATUS_COMPLETE) {
3722 if ((status != CMD_STATUS_IN_PROGRESS) &&
3723 (status != CMD_STATUS_IDLE))
3724 printk(KERN_ERR "%s: %s: Bad scan status: %s\n",
3725 priv->netdev->name, __func__,
3726 at76_get_cmd_status_string(status));
3727
3728 /* the first cmd status after scan start is always a IDLE ->
3729 start the timer to poll again until COMPLETED */
3730 at76_dbg(DBG_MGMT_TIMER,
3731 "%s:%d: starting mgmt_timer for %d ticks",
3732 __func__, __LINE__, SCAN_POLL_INTERVAL);
3733 schedule_delayed_work(&priv->dwork_get_scan,
3734 SCAN_POLL_INTERVAL);
3735 goto exit;
3736 }
3737
3738 if (at76_debug & DBG_BSS_TABLE)
3739 at76_dump_bss_table(priv);
3740
3741 if (priv->scan_need_any) {
3742 ret = at76_start_scan(priv, 0);
3743 if (ret < 0)
3744 printk(KERN_ERR
3745 "%s: %s: start_scan (ANY) failed with %d\n",
3746 priv->netdev->name, __func__, ret);
3747 at76_dbg(DBG_MGMT_TIMER,
3748 "%s:%d: starting mgmt_timer for %d ticks", __func__,
3749 __LINE__, SCAN_POLL_INTERVAL);
3750 schedule_delayed_work(&priv->dwork_get_scan,
3751 SCAN_POLL_INTERVAL);
3752 priv->scan_need_any = 0;
3753 } else {
3754 priv->scan_state = SCAN_COMPLETED;
3755 /* report the end of scan to user space */
3756 at76_iwevent_scan_complete(priv->netdev);
3757 at76_set_mac_state(priv, MAC_JOINING);
3758 schedule_work(&priv->work_join);
3759 }
3760
3761exit:
3762 mutex_unlock(&priv->mtx);
3763}
3764
3765/* Handle loss of beacons from the AP */
3766static void at76_dwork_beacon(struct work_struct *work)
3767{
3768 struct at76_priv *priv = container_of(work, struct at76_priv,
3769 dwork_beacon.work);
3770
3771 mutex_lock(&priv->mtx);
3772 if (priv->mac_state != MAC_CONNECTED || priv->iw_mode != IW_MODE_INFRA)
3773 goto exit;
3774
3775 /* We haven't received any beacons from out AP for BEACON_TIMEOUT */
3776 printk(KERN_INFO "%s: lost beacon bssid %s\n",
3777 priv->netdev->name, mac2str(priv->curr_bss->bssid));
3778
3779 netif_carrier_off(priv->netdev);
3780 netif_stop_queue(priv->netdev);
3781 at76_iwevent_bss_disconnect(priv->netdev);
3782 at76_set_mac_state(priv, MAC_SCANNING);
3783 schedule_work(&priv->work_start_scan);
3784
3785exit:
3786 mutex_unlock(&priv->mtx);
3787}
3788
3789/* Handle authentication response timeout */
3790static void at76_dwork_auth(struct work_struct *work)
3791{
3792 struct at76_priv *priv = container_of(work, struct at76_priv,
3793 dwork_auth.work);
3794
3795 mutex_lock(&priv->mtx);
3796 WARN_ON(priv->mac_state != MAC_AUTH);
3797 if (priv->mac_state != MAC_AUTH)
3798 goto exit;
3799
3800 at76_dbg(DBG_PROGRESS, "%s: authentication response timeout",
3801 priv->netdev->name);
3802
3803 if (priv->retries-- >= 0) {
3804 at76_auth_req(priv, priv->curr_bss, 1, NULL);
3805 at76_dbg(DBG_MGMT_TIMER, "%s:%d: starting mgmt_timer + HZ",
3806 __func__, __LINE__);
3807 schedule_delayed_work(&priv->dwork_auth, AUTH_TIMEOUT);
3808 } else {
3809 /* try to get next matching BSS */
3810 at76_set_mac_state(priv, MAC_JOINING);
3811 schedule_work(&priv->work_join);
3812 }
3813
3814exit:
3815 mutex_unlock(&priv->mtx);
3816}
3817
3818/* Handle association response timeout */
3819static void at76_dwork_assoc(struct work_struct *work)
3820{
3821 struct at76_priv *priv = container_of(work, struct at76_priv,
3822 dwork_assoc.work);
3823
3824 mutex_lock(&priv->mtx);
3825 WARN_ON(priv->mac_state != MAC_ASSOC);
3826 if (priv->mac_state != MAC_ASSOC)
3827 goto exit;
3828
3829 at76_dbg(DBG_PROGRESS, "%s: association response timeout",
3830 priv->netdev->name);
3831
3832 if (priv->retries-- >= 0) {
3833 at76_assoc_req(priv, priv->curr_bss);
3834 at76_dbg(DBG_MGMT_TIMER, "%s:%d: starting mgmt_timer + HZ",
3835 __func__, __LINE__);
3836 schedule_delayed_work(&priv->dwork_assoc, ASSOC_TIMEOUT);
3837 } else {
3838 /* try to get next matching BSS */
3839 at76_set_mac_state(priv, MAC_JOINING);
3840 schedule_work(&priv->work_join);
3841 }
3842
3843exit:
3844 mutex_unlock(&priv->mtx);
3845}
3846
3847/* Read new bssid in ad-hoc mode */
3848static void at76_work_new_bss(struct work_struct *work)
3849{
3850 struct at76_priv *priv = container_of(work, struct at76_priv,
3851 work_new_bss);
3852 int ret;
3853 struct mib_mac_mgmt mac_mgmt;
3854
3855 mutex_lock(&priv->mtx);
3856
3857 ret = at76_get_mib(priv->udev, MIB_MAC_MGMT, &mac_mgmt,
3858 sizeof(struct mib_mac_mgmt));
3859 if (ret < 0) {
3860 printk(KERN_ERR "%s: at76_get_mib failed: %d\n",
3861 priv->netdev->name, ret);
3862 goto exit;
3863 }
3864
3865 at76_dbg(DBG_PROGRESS, "ibss_change = 0x%2x", mac_mgmt.ibss_change);
3866 memcpy(priv->bssid, mac_mgmt.current_bssid, ETH_ALEN);
3867 at76_dbg(DBG_PROGRESS, "using BSSID %s", mac2str(priv->bssid));
3868
3869 at76_iwevent_bss_connect(priv->netdev, priv->bssid);
3870
3871 priv->mib_buf.type = MIB_MAC_MGMT;
3872 priv->mib_buf.size = 1;
3873 priv->mib_buf.index = offsetof(struct mib_mac_mgmt, ibss_change);
3874 priv->mib_buf.data.byte = 0;
3875
3876 ret = at76_set_mib(priv, &priv->mib_buf);
3877 if (ret < 0)
3878 printk(KERN_ERR "%s: set_mib (ibss change ok) failed: %d\n",
3879 priv->netdev->name, ret);
3880
3881exit:
3882 mutex_unlock(&priv->mtx);
3883}
3884
3885static int at76_startup_device(struct at76_priv *priv)
3886{
3887 struct at76_card_config *ccfg = &priv->card_config;
3888 int ret;
3889
3890 at76_dbg(DBG_PARAMS,
3891 "%s param: ssid %.*s (%s) mode %s ch %d wep %s key %d "
3892 "keylen %d", priv->netdev->name, priv->essid_size, priv->essid,
3893 hex2str(priv->essid, IW_ESSID_MAX_SIZE),
3894 priv->iw_mode == IW_MODE_ADHOC ? "adhoc" : "infra",
3895 priv->channel, priv->wep_enabled ? "enabled" : "disabled",
3896 priv->wep_key_id, priv->wep_keys_len[priv->wep_key_id]);
3897 at76_dbg(DBG_PARAMS,
3898 "%s param: preamble %s rts %d retry %d frag %d "
3899 "txrate %s auth_mode %d", priv->netdev->name,
3900 preambles[priv->preamble_type], priv->rts_threshold,
3901 priv->short_retry_limit, priv->frag_threshold,
3902 priv->txrate == TX_RATE_1MBIT ? "1MBit" : priv->txrate ==
3903 TX_RATE_2MBIT ? "2MBit" : priv->txrate ==
3904 TX_RATE_5_5MBIT ? "5.5MBit" : priv->txrate ==
3905 TX_RATE_11MBIT ? "11MBit" : priv->txrate ==
3906 TX_RATE_AUTO ? "auto" : "<invalid>", priv->auth_mode);
3907 at76_dbg(DBG_PARAMS,
3908 "%s param: pm_mode %d pm_period %d auth_mode %s "
3909 "scan_times %d %d scan_mode %s",
3910 priv->netdev->name, priv->pm_mode, priv->pm_period,
3911 priv->auth_mode == WLAN_AUTH_OPEN ? "open" : "shared_secret",
3912 priv->scan_min_time, priv->scan_max_time,
3913 priv->scan_mode == SCAN_TYPE_ACTIVE ? "active" : "passive");
3914
3915 memset(ccfg, 0, sizeof(struct at76_card_config));
3916 ccfg->promiscuous_mode = 0;
3917 ccfg->short_retry_limit = priv->short_retry_limit;
3918
3919 if (priv->wep_enabled) {
3920 if (priv->wep_keys_len[priv->wep_key_id] > WEP_SMALL_KEY_LEN)
3921 ccfg->encryption_type = 2;
3922 else
3923 ccfg->encryption_type = 1;
3924
3925 /* jal: always exclude unencrypted if WEP is active */
3926 ccfg->exclude_unencrypted = 1;
3927 } else {
3928 ccfg->exclude_unencrypted = 0;
3929 ccfg->encryption_type = 0;
3930 }
3931
3932 ccfg->rts_threshold = cpu_to_le16(priv->rts_threshold);
3933 ccfg->fragmentation_threshold = cpu_to_le16(priv->frag_threshold);
3934
3935 memcpy(ccfg->basic_rate_set, hw_rates, 4);
3936 /* jal: really needed, we do a set_mib for autorate later ??? */
3937 ccfg->auto_rate_fallback = (priv->txrate == TX_RATE_AUTO ? 1 : 0);
3938 ccfg->channel = priv->channel;
3939 ccfg->privacy_invoked = priv->wep_enabled;
3940 memcpy(ccfg->current_ssid, priv->essid, IW_ESSID_MAX_SIZE);
3941 ccfg->ssid_len = priv->essid_size;
3942
3943 ccfg->wep_default_key_id = priv->wep_key_id;
3944 memcpy(ccfg->wep_default_key_value, priv->wep_keys, 4 * WEP_KEY_LEN);
3945
3946 ccfg->short_preamble = priv->preamble_type;
3947 ccfg->beacon_period = cpu_to_le16(priv->beacon_period);
3948
3949 ret = at76_set_card_command(priv->udev, CMD_STARTUP, &priv->card_config,
3950 sizeof(struct at76_card_config));
3951 if (ret < 0) {
3952 printk(KERN_ERR "%s: at76_set_card_command failed: %d\n",
3953 priv->netdev->name, ret);
3954 return ret;
3955 }
3956
3957 at76_wait_completion(priv, CMD_STARTUP);
3958
3959 /* remove BSSID from previous run */
3960 memset(priv->bssid, 0, ETH_ALEN);
3961
3962 if (at76_set_radio(priv, 1) == 1)
3963 at76_wait_completion(priv, CMD_RADIO_ON);
3964
3965 ret = at76_set_preamble(priv, priv->preamble_type);
3966 if (ret < 0)
3967 return ret;
3968
3969 ret = at76_set_frag(priv, priv->frag_threshold);
3970 if (ret < 0)
3971 return ret;
3972
3973 ret = at76_set_rts(priv, priv->rts_threshold);
3974 if (ret < 0)
3975 return ret;
3976
3977 ret = at76_set_autorate_fallback(priv,
3978 priv->txrate == TX_RATE_AUTO ? 1 : 0);
3979 if (ret < 0)
3980 return ret;
3981
3982 ret = at76_set_pm_mode(priv);
3983 if (ret < 0)
3984 return ret;
3985
3986 if (at76_debug & DBG_MIB) {
3987 at76_dump_mib_mac(priv);
3988 at76_dump_mib_mac_addr(priv);
3989 at76_dump_mib_mac_mgmt(priv);
3990 at76_dump_mib_mac_wep(priv);
3991 at76_dump_mib_mdomain(priv);
3992 at76_dump_mib_phy(priv);
3993 at76_dump_mib_local(priv);
3994 }
3995
3996 return 0;
3997}
3998
3999/* Restart the interface */
4000static void at76_dwork_restart(struct work_struct *work)
4001{
4002 struct at76_priv *priv = container_of(work, struct at76_priv,
4003 dwork_restart.work);
4004
4005 mutex_lock(&priv->mtx);
4006
4007 netif_carrier_off(priv->netdev); /* stop netdev watchdog */
4008 netif_stop_queue(priv->netdev); /* stop tx data packets */
4009
4010 at76_startup_device(priv);
4011
4012 if (priv->iw_mode != IW_MODE_MONITOR) {
4013 priv->netdev->type = ARPHRD_ETHER;
4014 at76_set_mac_state(priv, MAC_SCANNING);
4015 schedule_work(&priv->work_start_scan);
4016 } else {
4017 priv->netdev->type = ARPHRD_IEEE80211_RADIOTAP;
4018 at76_start_monitor(priv);
4019 }
4020
4021 mutex_unlock(&priv->mtx);
4022}
4023
4024/* Initiate scanning */
4025static void at76_work_start_scan(struct work_struct *work)
4026{
4027 struct at76_priv *priv = container_of(work, struct at76_priv,
4028 work_start_scan);
4029 int ret;
4030
4031 mutex_lock(&priv->mtx);
4032
4033 WARN_ON(priv->mac_state != MAC_SCANNING);
4034 if (priv->mac_state != MAC_SCANNING)
4035 goto exit;
4036
4037 /* only clear the bss list when a scan is actively initiated,
4038 * otherwise simply rely on at76_bss_list_timeout */
4039 if (priv->scan_state == SCAN_IN_PROGRESS) {
4040 at76_free_bss_list(priv);
4041 priv->scan_need_any = 1;
4042 } else
4043 priv->scan_need_any = 0;
4044
4045 ret = at76_start_scan(priv, 1);
4046
4047 if (ret < 0)
4048 printk(KERN_ERR "%s: %s: start_scan failed with %d\n",
4049 priv->netdev->name, __func__, ret);
4050 else {
4051 at76_dbg(DBG_MGMT_TIMER,
4052 "%s:%d: starting mgmt_timer for %d ticks",
4053 __func__, __LINE__, SCAN_POLL_INTERVAL);
4054 schedule_delayed_work(&priv->dwork_get_scan,
4055 SCAN_POLL_INTERVAL);
4056 }
4057
4058exit:
4059 mutex_unlock(&priv->mtx);
4060}
4061
4062/* Enable or disable promiscuous mode */
4063static void at76_work_set_promisc(struct work_struct *work)
4064{
4065 struct at76_priv *priv = container_of(work, struct at76_priv,
4066 work_set_promisc);
4067 int ret = 0;
4068
4069 mutex_lock(&priv->mtx);
4070
4071 priv->mib_buf.type = MIB_LOCAL;
4072 priv->mib_buf.size = 1;
4073 priv->mib_buf.index = offsetof(struct mib_local, promiscuous_mode);
4074 priv->mib_buf.data.byte = priv->promisc ? 1 : 0;
4075
4076 ret = at76_set_mib(priv, &priv->mib_buf);
4077 if (ret < 0)
4078 printk(KERN_ERR "%s: set_mib (promiscuous_mode) failed: %d\n",
4079 priv->netdev->name, ret);
4080
4081 mutex_unlock(&priv->mtx);
4082}
4083
4084/* Submit Rx urb back to the device */
4085static void at76_work_submit_rx(struct work_struct *work)
4086{
4087 struct at76_priv *priv = container_of(work, struct at76_priv,
4088 work_submit_rx);
4089
4090 mutex_lock(&priv->mtx);
4091 at76_submit_rx_urb(priv);
4092 mutex_unlock(&priv->mtx);
4093}
4094
4095/* We got an association response */
4096static void at76_rx_mgmt_assoc(struct at76_priv *priv,
4097 struct at76_rx_buffer *buf)
4098{
4099 struct ieee80211_assoc_response *resp =
4100 (struct ieee80211_assoc_response *)buf->packet;
4101 u16 assoc_id = le16_to_cpu(resp->aid);
4102 u16 status = le16_to_cpu(resp->status);
4103
4104 at76_dbg(DBG_RX_MGMT, "%s: rx AssocResp bssid %s capa 0x%04x status "
4105 "0x%04x assoc_id 0x%04x rates %s", priv->netdev->name,
4106 mac2str(resp->header.addr3), le16_to_cpu(resp->capability),
4107 status, assoc_id, hex2str(resp->info_element->data,
4108 resp->info_element->len));
4109
4110 if (priv->mac_state != MAC_ASSOC) {
4111 printk(KERN_INFO "%s: AssocResp in state %s ignored\n",
4112 priv->netdev->name, mac_states[priv->mac_state]);
4113 return;
4114 }
4115
4116 BUG_ON(!priv->curr_bss);
4117
4118 cancel_delayed_work(&priv->dwork_assoc);
4119 if (status == WLAN_STATUS_SUCCESS) {
4120 struct bss_info *ptr = priv->curr_bss;
4121 priv->assoc_id = assoc_id & 0x3fff;
4122 /* update iwconfig params */
4123 memcpy(priv->bssid, ptr->bssid, ETH_ALEN);
4124 memcpy(priv->essid, ptr->ssid, ptr->ssid_len);
4125 priv->essid_size = ptr->ssid_len;
4126 priv->channel = ptr->channel;
4127 schedule_work(&priv->work_assoc_done);
4128 } else {
4129 at76_set_mac_state(priv, MAC_JOINING);
4130 schedule_work(&priv->work_join);
4131 }
4132}
4133
4134/* Process disassociation request from the AP */
4135static void at76_rx_mgmt_disassoc(struct at76_priv *priv,
4136 struct at76_rx_buffer *buf)
4137{
4138 struct ieee80211_disassoc *resp =
4139 (struct ieee80211_disassoc *)buf->packet;
4140 struct ieee80211_hdr_3addr *mgmt = &resp->header;
4141
4142 at76_dbg(DBG_RX_MGMT,
4143 "%s: rx DisAssoc bssid %s reason 0x%04x destination %s",
4144 priv->netdev->name, mac2str(mgmt->addr3),
4145 le16_to_cpu(resp->reason), mac2str(mgmt->addr1));
4146
4147 /* We are not connected, ignore */
4148 if (priv->mac_state == MAC_SCANNING || priv->mac_state == MAC_INIT
4149 || !priv->curr_bss)
4150 return;
4151
4152 /* Not our BSSID, ignore */
4153 if (compare_ether_addr(mgmt->addr3, priv->curr_bss->bssid))
4154 return;
4155
4156 /* Not for our STA and not broadcast, ignore */
4157 if (compare_ether_addr(priv->netdev->dev_addr, mgmt->addr1)
4158 && !is_broadcast_ether_addr(mgmt->addr1))
4159 return;
4160
4161 if (priv->mac_state != MAC_ASSOC && priv->mac_state != MAC_CONNECTED
4162 && priv->mac_state != MAC_JOINING) {
4163 printk(KERN_INFO "%s: DisAssoc in state %s ignored\n",
4164 priv->netdev->name, mac_states[priv->mac_state]);
4165 return;
4166 }
4167
4168 if (priv->mac_state == MAC_CONNECTED) {
4169 netif_carrier_off(priv->netdev);
4170 netif_stop_queue(priv->netdev);
4171 at76_iwevent_bss_disconnect(priv->netdev);
4172 }
4173 cancel_delayed_work(&priv->dwork_get_scan);
4174 cancel_delayed_work(&priv->dwork_beacon);
4175 cancel_delayed_work(&priv->dwork_auth);
4176 cancel_delayed_work(&priv->dwork_assoc);
4177 at76_set_mac_state(priv, MAC_JOINING);
4178 schedule_work(&priv->work_join);
4179}
4180
4181static void at76_rx_mgmt_auth(struct at76_priv *priv,
4182 struct at76_rx_buffer *buf)
4183{
4184 struct ieee80211_auth *resp = (struct ieee80211_auth *)buf->packet;
4185 struct ieee80211_hdr_3addr *mgmt = &resp->header;
4186 int seq_nr = le16_to_cpu(resp->transaction);
4187 int alg = le16_to_cpu(resp->algorithm);
4188 int status = le16_to_cpu(resp->status);
4189
4190 at76_dbg(DBG_RX_MGMT,
4191 "%s: rx AuthFrame bssid %s alg %d seq_nr %d status %d "
4192 "destination %s", priv->netdev->name, mac2str(mgmt->addr3),
4193 alg, seq_nr, status, mac2str(mgmt->addr1));
4194
4195 if (alg == WLAN_AUTH_SHARED_KEY && seq_nr == 2)
4196 at76_dbg(DBG_RX_MGMT, "%s: AuthFrame challenge %s ...",
4197 priv->netdev->name, hex2str(resp->info_element, 18));
4198
4199 if (priv->mac_state != MAC_AUTH) {
4200 printk(KERN_INFO "%s: ignored AuthFrame in state %s\n",
4201 priv->netdev->name, mac_states[priv->mac_state]);
4202 return;
4203 }
4204 if (priv->auth_mode != alg) {
4205 printk(KERN_INFO "%s: ignored AuthFrame for alg %d\n",
4206 priv->netdev->name, alg);
4207 return;
4208 }
4209
4210 BUG_ON(!priv->curr_bss);
4211
4212 /* Not our BSSID or not for our STA, ignore */
4213 if (compare_ether_addr(mgmt->addr3, priv->curr_bss->bssid)
4214 || compare_ether_addr(priv->netdev->dev_addr, mgmt->addr1))
4215 return;
4216
4217 cancel_delayed_work(&priv->dwork_auth);
4218 if (status != WLAN_STATUS_SUCCESS) {
4219 /* try to join next bss */
4220 at76_set_mac_state(priv, MAC_JOINING);
4221 schedule_work(&priv->work_join);
4222 return;
4223 }
4224
4225 if (priv->auth_mode == WLAN_AUTH_OPEN || seq_nr == 4) {
4226 priv->retries = ASSOC_RETRIES;
4227 at76_set_mac_state(priv, MAC_ASSOC);
4228 at76_assoc_req(priv, priv->curr_bss);
4229 at76_dbg(DBG_MGMT_TIMER,
4230 "%s:%d: starting mgmt_timer + HZ", __func__, __LINE__);
4231 schedule_delayed_work(&priv->dwork_assoc, ASSOC_TIMEOUT);
4232 return;
4233 }
4234
4235 WARN_ON(seq_nr != 2);
4236 at76_auth_req(priv, priv->curr_bss, seq_nr + 1, resp->info_element);
4237 at76_dbg(DBG_MGMT_TIMER, "%s:%d: starting mgmt_timer + HZ", __func__,
4238 __LINE__);
4239 schedule_delayed_work(&priv->dwork_auth, AUTH_TIMEOUT);
4240}
4241
4242static void at76_rx_mgmt_deauth(struct at76_priv *priv,
4243 struct at76_rx_buffer *buf)
4244{
4245 struct ieee80211_disassoc *resp =
4246 (struct ieee80211_disassoc *)buf->packet;
4247 struct ieee80211_hdr_3addr *mgmt = &resp->header;
4248
4249 at76_dbg(DBG_RX_MGMT | DBG_PROGRESS,
4250 "%s: rx DeAuth bssid %s reason 0x%04x destination %s",
4251 priv->netdev->name, mac2str(mgmt->addr3),
4252 le16_to_cpu(resp->reason), mac2str(mgmt->addr1));
4253
4254 if (priv->mac_state != MAC_AUTH && priv->mac_state != MAC_ASSOC
4255 && priv->mac_state != MAC_CONNECTED) {
4256 printk(KERN_INFO "%s: DeAuth in state %s ignored\n",
4257 priv->netdev->name, mac_states[priv->mac_state]);
4258 return;
4259 }
4260
4261 BUG_ON(!priv->curr_bss);
4262
4263 /* Not our BSSID, ignore */
4264 if (compare_ether_addr(mgmt->addr3, priv->curr_bss->bssid))
4265 return;
4266
4267 /* Not for our STA and not broadcast, ignore */
4268 if (compare_ether_addr(priv->netdev->dev_addr, mgmt->addr1)
4269 && !is_broadcast_ether_addr(mgmt->addr1))
4270 return;
4271
4272 if (priv->mac_state == MAC_CONNECTED)
4273 at76_iwevent_bss_disconnect(priv->netdev);
4274
4275 at76_set_mac_state(priv, MAC_JOINING);
4276 schedule_work(&priv->work_join);
4277 cancel_delayed_work(&priv->dwork_get_scan);
4278 cancel_delayed_work(&priv->dwork_beacon);
4279 cancel_delayed_work(&priv->dwork_auth);
4280 cancel_delayed_work(&priv->dwork_assoc);
4281}
4282
4283static void at76_rx_mgmt_beacon(struct at76_priv *priv,
4284 struct at76_rx_buffer *buf)
4285{
4286 int varpar_len;
4287 /* beacon content */
4288 struct ieee80211_beacon *bdata = (struct ieee80211_beacon *)buf->packet;
4289 struct ieee80211_hdr_3addr *mgmt = &bdata->header;
4290
4291 struct list_head *lptr;
4292 struct bss_info *match; /* entry matching addr3 with its bssid */
4293 int new_entry = 0;
4294 int len;
4295 struct ieee80211_info_element *ie;
4296 int have_ssid = 0;
4297 int have_rates = 0;
4298 int have_channel = 0;
4299 int keep_going = 1;
4300 unsigned long flags;
4301
4302 spin_lock_irqsave(&priv->bss_list_spinlock, flags);
4303 if (priv->mac_state == MAC_CONNECTED) {
4304 /* in state MAC_CONNECTED we use the mgmt_timer to control
4305 the beacon of the BSS */
4306 BUG_ON(!priv->curr_bss);
4307
4308 if (!compare_ether_addr(priv->curr_bss->bssid, mgmt->addr3)) {
4309 /* We got our AP's beacon, defer the timeout handler.
4310 Kill pending work first, as schedule_delayed_work()
4311 won't do it. */
4312 cancel_delayed_work(&priv->dwork_beacon);
4313 schedule_delayed_work(&priv->dwork_beacon,
4314 BEACON_TIMEOUT);
4315 priv->curr_bss->rssi = buf->rssi;
4316 priv->beacons_received++;
4317 goto exit;
4318 }
4319 }
4320
4321 /* look if we have this BSS already in the list */
4322 match = NULL;
4323
4324 if (!list_empty(&priv->bss_list)) {
4325 list_for_each(lptr, &priv->bss_list) {
4326 struct bss_info *bss_ptr =
4327 list_entry(lptr, struct bss_info, list);
4328 if (!compare_ether_addr(bss_ptr->bssid, mgmt->addr3)) {
4329 match = bss_ptr;
4330 break;
4331 }
4332 }
4333 }
4334
4335 if (!match) {
4336 /* BSS not in the list - append it */
4337 match = kzalloc(sizeof(struct bss_info), GFP_ATOMIC);
4338 if (!match) {
4339 at76_dbg(DBG_BSS_TABLE,
4340 "%s: cannot kmalloc new bss info (%zd byte)",
4341 priv->netdev->name, sizeof(struct bss_info));
4342 goto exit;
4343 }
4344 new_entry = 1;
4345 list_add_tail(&match->list, &priv->bss_list);
4346 }
4347
4348 match->capa = le16_to_cpu(bdata->capability);
4349 match->beacon_interval = le16_to_cpu(bdata->beacon_interval);
4350 match->rssi = buf->rssi;
4351 match->link_qual = buf->link_quality;
4352 match->noise_level = buf->noise_level;
4353 memcpy(match->bssid, mgmt->addr3, ETH_ALEN);
4354 at76_dbg(DBG_RX_BEACON, "%s: bssid %s", priv->netdev->name,
4355 mac2str(match->bssid));
4356
4357 ie = bdata->info_element;
4358
4359 /* length of var length beacon parameters */
4360 varpar_len = min_t(int, le16_to_cpu(buf->wlength) -
4361 sizeof(struct ieee80211_beacon),
4362 BEACON_MAX_DATA_LENGTH);
4363
4364 /* This routine steps through the bdata->data array to get
4365 * some useful information about the access point.
4366 * Currently, this implementation supports receipt of: SSID,
4367 * supported transfer rates and channel, in any order, with some
4368 * tolerance for intermittent unknown codes (although this
4369 * functionality may not be necessary as the useful information will
4370 * usually arrive in consecutively, but there have been some
4371 * reports of some of the useful information fields arriving in a
4372 * different order).
4373 * It does not support any more IE types although MFIE_TYPE_TIM may
4374 * be supported (on my AP at least).
4375 * The bdata->data array is about 1500 bytes long but only ~36 of those
4376 * bytes are useful, hence the have_ssid etc optimizations. */
4377
4378 while (keep_going &&
4379 ((&ie->data[ie->len] - (u8 *)bdata->info_element) <=
4380 varpar_len)) {
4381
4382 switch (ie->id) {
4383
4384 case MFIE_TYPE_SSID:
4385 if (have_ssid)
4386 break;
4387
4388 len = min_t(int, IW_ESSID_MAX_SIZE, ie->len);
4389
4390 /* we copy only if this is a new entry,
4391 or the incoming SSID is not a hidden SSID. This
4392 will protect us from overwriting a real SSID read
4393 in a ProbeResponse with a hidden one from a
4394 following beacon. */
4395 if (!new_entry && at76_is_hidden_ssid(ie->data, len)) {
4396 have_ssid = 1;
4397 break;
4398 }
4399
4400 match->ssid_len = len;
4401 memcpy(match->ssid, ie->data, len);
4402 at76_dbg(DBG_RX_BEACON, "%s: SSID - %.*s",
4403 priv->netdev->name, len, match->ssid);
4404 have_ssid = 1;
4405 break;
4406
4407 case MFIE_TYPE_RATES:
4408 if (have_rates)
4409 break;
4410
4411 match->rates_len =
4412 min_t(int, sizeof(match->rates), ie->len);
4413 memcpy(match->rates, ie->data, match->rates_len);
4414 have_rates = 1;
4415 at76_dbg(DBG_RX_BEACON, "%s: SUPPORTED RATES %s",
4416 priv->netdev->name,
4417 hex2str(ie->data, ie->len));
4418 break;
4419
4420 case MFIE_TYPE_DS_SET:
4421 if (have_channel)
4422 break;
4423
4424 match->channel = ie->data[0];
4425 have_channel = 1;
4426 at76_dbg(DBG_RX_BEACON, "%s: CHANNEL - %d",
4427 priv->netdev->name, match->channel);
4428 break;
4429
4430 case MFIE_TYPE_CF_SET:
4431 case MFIE_TYPE_TIM:
4432 case MFIE_TYPE_IBSS_SET:
4433 default:
4434 at76_dbg(DBG_RX_BEACON, "%s: beacon IE id %d len %d %s",
4435 priv->netdev->name, ie->id, ie->len,
4436 hex2str(ie->data, ie->len));
4437 break;
4438 }
4439
4440 /* advance to the next informational element */
4441 next_ie(&ie);
4442
4443 /* Optimization: after all, the bdata->data array is
4444 * varpar_len bytes long, whereas we get all of the useful
4445 * information after only ~36 bytes, this saves us a lot of
4446 * time (and trouble as the remaining portion of the array
4447 * could be full of junk)
4448 * Comment this out if you want to see what other information
4449 * comes from the AP - although little of it may be useful */
4450 }
4451
4452 at76_dbg(DBG_RX_BEACON, "%s: Finished processing beacon data",
4453 priv->netdev->name);
4454
4455 match->last_rx = jiffies; /* record last rx of beacon */
4456
4457exit:
4458 spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
4459}
4460
4461/* Calculate the link level from a given rx_buffer */
4462static void at76_calc_level(struct at76_priv *priv, struct at76_rx_buffer *buf,
4463 struct iw_quality *qual)
4464{
4465 /* just a guess for now, might be different for other chips */
4466 int max_rssi = 42;
4467
4468 qual->level = (buf->rssi * 100 / max_rssi);
4469 if (qual->level > 100)
4470 qual->level = 100;
4471 qual->updated |= IW_QUAL_LEVEL_UPDATED;
4472}
4473
4474/* Calculate the link quality from a given rx_buffer */
4475static void at76_calc_qual(struct at76_priv *priv, struct at76_rx_buffer *buf,
4476 struct iw_quality *qual)
4477{
4478 if (at76_is_intersil(priv->board_type))
4479 qual->qual = buf->link_quality;
4480 else {
4481 unsigned long elapsed;
4482
4483 /* Update qual at most once a second */
4484 elapsed = jiffies - priv->beacons_last_qual;
4485 if (elapsed < 1 * HZ)
4486 return;
4487
4488 qual->qual = qual->level * priv->beacons_received *
4489 msecs_to_jiffies(priv->beacon_period) / elapsed;
4490
4491 priv->beacons_last_qual = jiffies;
4492 priv->beacons_received = 0;
4493 }
4494 qual->qual = (qual->qual > 100) ? 100 : qual->qual;
4495 qual->updated |= IW_QUAL_QUAL_UPDATED;
4496}
4497
4498/* Calculate the noise quality from a given rx_buffer */
4499static void at76_calc_noise(struct at76_priv *priv, struct at76_rx_buffer *buf,
4500 struct iw_quality *qual)
4501{
4502 qual->noise = 0;
4503 qual->updated |= IW_QUAL_NOISE_INVALID;
4504}
4505
4506static void at76_update_wstats(struct at76_priv *priv,
4507 struct at76_rx_buffer *buf)
4508{
4509 struct iw_quality *qual = &priv->wstats.qual;
4510
4511 if (buf->rssi && priv->mac_state == MAC_CONNECTED) {
4512 qual->updated = 0;
4513 at76_calc_level(priv, buf, qual);
4514 at76_calc_qual(priv, buf, qual);
4515 at76_calc_noise(priv, buf, qual);
4516 } else {
4517 qual->qual = 0;
4518 qual->level = 0;
4519 qual->noise = 0;
4520 qual->updated = IW_QUAL_ALL_INVALID;
4521 }
4522}
4523
4524static void at76_rx_mgmt(struct at76_priv *priv, struct at76_rx_buffer *buf)
4525{
4526 struct ieee80211_hdr_3addr *mgmt =
4527 (struct ieee80211_hdr_3addr *)buf->packet;
4528 u16 framectl = le16_to_cpu(mgmt->frame_ctl);
4529
4530 /* update wstats */
4531 if (priv->mac_state != MAC_INIT && priv->mac_state != MAC_SCANNING) {
4532 /* jal: this is a dirty hack needed by Tim in ad-hoc mode */
4533 /* Data packets always seem to have a 0 link level, so we
4534 only read link quality info from management packets.
4535 Atmel driver actually averages the present, and previous
4536 values, we just present the raw value at the moment - TJS */
4537 if (priv->iw_mode == IW_MODE_ADHOC
4538 || (priv->curr_bss
4539 && !compare_ether_addr(mgmt->addr3,
4540 priv->curr_bss->bssid)))
4541 at76_update_wstats(priv, buf);
4542 }
4543
4544 at76_dbg(DBG_RX_MGMT_CONTENT, "%s rx mgmt framectl 0x%x %s",
4545 priv->netdev->name, framectl,
4546 hex2str(mgmt, le16_to_cpu(buf->wlength)));
4547
4548 switch (framectl & IEEE80211_FCTL_STYPE) {
4549 case IEEE80211_STYPE_BEACON:
4550 case IEEE80211_STYPE_PROBE_RESP:
4551 at76_rx_mgmt_beacon(priv, buf);
4552 break;
4553
4554 case IEEE80211_STYPE_ASSOC_RESP:
4555 at76_rx_mgmt_assoc(priv, buf);
4556 break;
4557
4558 case IEEE80211_STYPE_DISASSOC:
4559 at76_rx_mgmt_disassoc(priv, buf);
4560 break;
4561
4562 case IEEE80211_STYPE_AUTH:
4563 at76_rx_mgmt_auth(priv, buf);
4564 break;
4565
4566 case IEEE80211_STYPE_DEAUTH:
4567 at76_rx_mgmt_deauth(priv, buf);
4568 break;
4569
4570 default:
4571 printk(KERN_DEBUG "%s: ignoring frame with framectl 0x%04x\n",
4572 priv->netdev->name, framectl);
4573 }
4574
4575 return;
4576}
4577
4578/* Convert the 802.11 header into an ethernet-style header, make skb
4579 * ready for consumption by netif_rx() */
4580static void at76_ieee80211_to_eth(struct sk_buff *skb, int iw_mode)
4581{
4582 struct ieee80211_hdr_3addr *i802_11_hdr;
4583 struct ethhdr *eth_hdr_p;
4584 u8 *src_addr;
4585 u8 *dest_addr;
4586
4587 i802_11_hdr = (struct ieee80211_hdr_3addr *)skb->data;
4588
4589 /* That would be the ethernet header if the hardware converted
4590 * the frame for us. Make sure the source and the destination
4591 * match the 802.11 header. Which hardware does it? */
4592 eth_hdr_p = (struct ethhdr *)skb_pull(skb, IEEE80211_3ADDR_LEN);
4593
4594 dest_addr = i802_11_hdr->addr1;
4595 if (iw_mode == IW_MODE_ADHOC)
4596 src_addr = i802_11_hdr->addr2;
4597 else
4598 src_addr = i802_11_hdr->addr3;
4599
4600 if (!compare_ether_addr(eth_hdr_p->h_source, src_addr) &&
4601 !compare_ether_addr(eth_hdr_p->h_dest, dest_addr))
4602 /* Yes, we already have an ethernet header */
4603 skb_reset_mac_header(skb);
4604 else {
4605 u16 len;
4606
4607 /* Need to build an ethernet header */
4608 if (!memcmp(skb->data, snapsig, sizeof(snapsig))) {
4609 /* SNAP frame - decapsulate, keep proto */
4610 skb_push(skb, offsetof(struct ethhdr, h_proto) -
4611 sizeof(rfc1042sig));
4612 len = 0;
4613 } else {
4614 /* 802.3 frame, proto is length */
4615 len = skb->len;
4616 skb_push(skb, ETH_HLEN);
4617 }
4618
4619 skb_reset_mac_header(skb);
4620 eth_hdr_p = eth_hdr(skb);
4621 /* This needs to be done in this order (eth_hdr_p->h_dest may
4622 * overlap src_addr) */
4623 memcpy(eth_hdr_p->h_source, src_addr, ETH_ALEN);
4624 memcpy(eth_hdr_p->h_dest, dest_addr, ETH_ALEN);
4625 if (len)
4626 eth_hdr_p->h_proto = htons(len);
4627 }
4628
4629 skb->protocol = eth_type_trans(skb, skb->dev);
4630}
4631
4632/* Check for fragmented data in priv->rx_skb. If the packet was no fragment
4633 or it was the last of a fragment set a skb containing the whole packet
4634 is returned for further processing. Otherwise we get NULL and are
4635 done and the packet is either stored inside the fragment buffer
4636 or thrown away. Every returned skb starts with the ieee802_11 header
4637 and contains _no_ FCS at the end */
4638static struct sk_buff *at76_check_for_rx_frags(struct at76_priv *priv)
4639{
4640 struct sk_buff *skb = priv->rx_skb;
4641 struct at76_rx_buffer *buf = (struct at76_rx_buffer *)skb->data;
4642 struct ieee80211_hdr_3addr *i802_11_hdr =
4643 (struct ieee80211_hdr_3addr *)buf->packet;
4644 /* seq_ctrl, fragment_number, sequence number of new packet */
4645 u16 sctl = le16_to_cpu(i802_11_hdr->seq_ctl);
4646 u16 fragnr = sctl & 0xf;
4647 u16 seqnr = sctl >> 4;
4648 u16 frame_ctl = le16_to_cpu(i802_11_hdr->frame_ctl);
4649
4650 /* Length including the IEEE802.11 header, but without the trailing
4651 * FCS and without the Atmel Rx header */
4652 int length = le16_to_cpu(buf->wlength) - IEEE80211_FCS_LEN;
4653
4654 /* where does the data payload start in skb->data ? */
4655 u8 *data = i802_11_hdr->payload;
4656
4657 /* length of payload, excl. the trailing FCS */
4658 int data_len = length - IEEE80211_3ADDR_LEN;
4659
4660 int i;
4661 struct rx_data_buf *bptr, *optr;
4662 unsigned long oldest = ~0UL;
4663
4664 at76_dbg(DBG_RX_FRAGS,
4665 "%s: rx data frame_ctl %04x addr2 %s seq/frag %d/%d "
4666 "length %d data %d: %s ...", priv->netdev->name, frame_ctl,
4667 mac2str(i802_11_hdr->addr2), seqnr, fragnr, length, data_len,
4668 hex2str(data, 32));
4669
4670 at76_dbg(DBG_RX_FRAGS_SKB, "%s: incoming skb: head %p data %p "
4671 "tail %p end %p len %d", priv->netdev->name, skb->head,
4672 skb->data, skb_tail_pointer(skb), skb_end_pointer(skb),
4673 skb->len);
4674
4675 if (data_len < 0) {
4676 /* make sure data starts in the buffer */
4677 printk(KERN_INFO "%s: data frame too short\n",
4678 priv->netdev->name);
4679 return NULL;
4680 }
4681
4682 WARN_ON(length <= AT76_RX_HDRLEN);
4683 if (length <= AT76_RX_HDRLEN)
4684 return NULL;
4685
4686 /* remove the at76_rx_buffer header - we don't need it anymore */
4687 /* we need the IEEE802.11 header (for the addresses) if this packet
4688 is the first of a chain */
4689 skb_pull(skb, AT76_RX_HDRLEN);
4690
4691 /* remove FCS at end */
4692 skb_trim(skb, length);
4693
4694 at76_dbg(DBG_RX_FRAGS_SKB, "%s: trimmed skb: head %p data %p tail %p "
4695 "end %p len %d data %p data_len %d", priv->netdev->name,
4696 skb->head, skb->data, skb_tail_pointer(skb),
4697 skb_end_pointer(skb), skb->len, data, data_len);
4698
4699 if (fragnr == 0 && !(frame_ctl & IEEE80211_FCTL_MOREFRAGS)) {
4700 /* unfragmented packet received */
4701 /* Use a new skb for the next receive */
4702 priv->rx_skb = NULL;
4703 at76_dbg(DBG_RX_FRAGS, "%s: unfragmented", priv->netdev->name);
4704 return skb;
4705 }
4706
4707 /* look if we've got a chain for the sender address.
4708 afterwards optr points to first free or the oldest entry,
4709 or, if i < NR_RX_DATA_BUF, bptr points to the entry for the
4710 sender address */
4711 /* determining the oldest entry doesn't cope with jiffies wrapping
4712 but I don't care to delete a young entry at these rare moments ... */
4713
4714 bptr = priv->rx_data;
4715 optr = NULL;
4716 for (i = 0; i < NR_RX_DATA_BUF; i++, bptr++) {
4717 if (!bptr->skb) {
4718 optr = bptr;
4719 oldest = 0UL;
4720 continue;
4721 }
4722
4723 if (!compare_ether_addr(i802_11_hdr->addr2, bptr->sender))
4724 break;
4725
4726 if (!optr) {
4727 optr = bptr;
4728 oldest = bptr->last_rx;
4729 } else if (bptr->last_rx < oldest)
4730 optr = bptr;
4731 }
4732
4733 if (i < NR_RX_DATA_BUF) {
4734
4735 at76_dbg(DBG_RX_FRAGS, "%s: %d. cacheentry (seq/frag = %d/%d) "
4736 "matched sender addr",
4737 priv->netdev->name, i, bptr->seqnr, bptr->fragnr);
4738
4739 /* bptr points to an entry for the sender address */
4740 if (bptr->seqnr == seqnr) {
4741 int left;
4742 /* the fragment has the current sequence number */
4743 if (((bptr->fragnr + 1) & 0xf) != fragnr) {
4744 /* wrong fragment number -> ignore it */
4745 /* is & 0xf necessary above ??? */
4746 at76_dbg(DBG_RX_FRAGS,
4747 "%s: frag nr mismatch: %d + 1 != %d",
4748 priv->netdev->name, bptr->fragnr,
4749 fragnr);
4750 return NULL;
4751 }
4752 bptr->last_rx = jiffies;
4753 /* the next following fragment number ->
4754 add the data at the end */
4755
4756 /* for test only ??? */
4757 left = skb_tailroom(bptr->skb);
4758 if (left < data_len)
4759 printk(KERN_INFO
4760 "%s: only %d byte free (need %d)\n",
4761 priv->netdev->name, left, data_len);
4762 else
4763 memcpy(skb_put(bptr->skb, data_len), data,
4764 data_len);
4765
4766 bptr->fragnr = fragnr;
4767 if (frame_ctl & IEEE80211_FCTL_MOREFRAGS)
4768 return NULL;
4769
4770 /* this was the last fragment - send it */
4771 skb = bptr->skb;
4772 bptr->skb = NULL; /* free the entry */
4773 at76_dbg(DBG_RX_FRAGS, "%s: last frag of seq %d",
4774 priv->netdev->name, seqnr);
4775 return skb;
4776 }
4777
4778 /* got another sequence number */
4779 if (fragnr == 0) {
4780 /* it's the start of a new chain - replace the
4781 old one by this */
4782 /* bptr->sender has the correct value already */
4783 at76_dbg(DBG_RX_FRAGS,
4784 "%s: start of new seq %d, removing old seq %d",
4785 priv->netdev->name, seqnr, bptr->seqnr);
4786 bptr->seqnr = seqnr;
4787 bptr->fragnr = 0;
4788 bptr->last_rx = jiffies;
4789 /* swap bptr->skb and priv->rx_skb */
4790 skb = bptr->skb;
4791 bptr->skb = priv->rx_skb;
4792 priv->rx_skb = skb;
4793 } else {
4794 /* it from the middle of a new chain ->
4795 delete the old entry and skip the new one */
4796 at76_dbg(DBG_RX_FRAGS,
4797 "%s: middle of new seq %d (%d) "
4798 "removing old seq %d",
4799 priv->netdev->name, seqnr, fragnr,
4800 bptr->seqnr);
4801 dev_kfree_skb(bptr->skb);
4802 bptr->skb = NULL;
4803 }
4804 return NULL;
4805 }
4806
4807 /* if we didn't find a chain for the sender address, optr
4808 points either to the first free or the oldest entry */
4809
4810 if (fragnr != 0) {
4811 /* this is not the begin of a fragment chain ... */
4812 at76_dbg(DBG_RX_FRAGS,
4813 "%s: no chain for non-first fragment (%d)",
4814 priv->netdev->name, fragnr);
4815 return NULL;
4816 }
4817
4818 BUG_ON(!optr);
4819 if (optr->skb) {
4820 /* swap the skb's */
4821 skb = optr->skb;
4822 optr->skb = priv->rx_skb;
4823 priv->rx_skb = skb;
4824
4825 at76_dbg(DBG_RX_FRAGS,
4826 "%s: free old contents: sender %s seq/frag %d/%d",
4827 priv->netdev->name, mac2str(optr->sender),
4828 optr->seqnr, optr->fragnr);
4829
4830 } else {
4831 /* take the skb from priv->rx_skb */
4832 optr->skb = priv->rx_skb;
4833 /* let at76_submit_rx_urb() allocate a new skb */
4834 priv->rx_skb = NULL;
4835
4836 at76_dbg(DBG_RX_FRAGS, "%s: use a free entry",
4837 priv->netdev->name);
4838 }
4839 memcpy(optr->sender, i802_11_hdr->addr2, ETH_ALEN);
4840 optr->seqnr = seqnr;
4841 optr->fragnr = 0;
4842 optr->last_rx = jiffies;
4843
4844 return NULL;
4845}
4846
4847/* Rx interrupt: we expect the complete data buffer in priv->rx_skb */
4848static void at76_rx_data(struct at76_priv *priv)
4849{
4850 struct net_device *netdev = priv->netdev;
4851 struct net_device_stats *stats = &priv->stats;
4852 struct sk_buff *skb = priv->rx_skb;
4853 struct at76_rx_buffer *buf = (struct at76_rx_buffer *)skb->data;
4854 struct ieee80211_hdr_3addr *i802_11_hdr;
4855 int length = le16_to_cpu(buf->wlength);
4856
4857 at76_dbg(DBG_RX_DATA, "%s received data packet: %s", netdev->name,
4858 hex2str(skb->data, AT76_RX_HDRLEN));
4859
4860 at76_dbg(DBG_RX_DATA_CONTENT, "rx packet: %s",
4861 hex2str(skb->data + AT76_RX_HDRLEN, length));
4862
4863 skb = at76_check_for_rx_frags(priv);
4864 if (!skb)
4865 return;
4866
4867 /* Atmel header and the FCS are already removed */
4868 i802_11_hdr = (struct ieee80211_hdr_3addr *)skb->data;
4869
4870 skb->dev = netdev;
4871 skb->ip_summed = CHECKSUM_NONE; /* TODO: should check CRC */
4872
4873 if (is_broadcast_ether_addr(i802_11_hdr->addr1)) {
4874 if (!compare_ether_addr(i802_11_hdr->addr1, netdev->broadcast))
4875 skb->pkt_type = PACKET_BROADCAST;
4876 else
4877 skb->pkt_type = PACKET_MULTICAST;
4878 } else if (compare_ether_addr(i802_11_hdr->addr1, netdev->dev_addr))
4879 skb->pkt_type = PACKET_OTHERHOST;
4880
4881 at76_ieee80211_to_eth(skb, priv->iw_mode);
4882
4883 netdev->last_rx = jiffies;
4884 netif_rx(skb);
4885 stats->rx_packets++;
4886 stats->rx_bytes += length;
4887
4888 return;
4889}
4890
4891static void at76_rx_monitor_mode(struct at76_priv *priv)
4892{
4893 struct at76_rx_radiotap *rt;
4894 u8 *payload;
4895 int skblen;
4896 struct net_device *netdev = priv->netdev;
4897 struct at76_rx_buffer *buf =
4898 (struct at76_rx_buffer *)priv->rx_skb->data;
4899 /* length including the IEEE802.11 header and the trailing FCS,
4900 but not at76_rx_buffer */
4901 int length = le16_to_cpu(buf->wlength);
4902 struct sk_buff *skb = priv->rx_skb;
4903 struct net_device_stats *stats = &priv->stats;
4904
4905 if (length < IEEE80211_FCS_LEN) {
4906 /* buffer contains no data */
4907 at76_dbg(DBG_MONITOR_MODE,
4908 "%s: MONITOR MODE: rx skb without data",
4909 priv->netdev->name);
4910 return;
4911 }
4912
4913 skblen = sizeof(struct at76_rx_radiotap) + length;
4914
4915 skb = dev_alloc_skb(skblen);
4916 if (!skb) {
4917 printk(KERN_ERR "%s: MONITOR MODE: dev_alloc_skb for radiotap "
4918 "header returned NULL\n", priv->netdev->name);
4919 return;
4920 }
4921
4922 skb_put(skb, skblen);
4923
4924 rt = (struct at76_rx_radiotap *)skb->data;
4925 payload = skb->data + sizeof(struct at76_rx_radiotap);
4926
4927 rt->rt_hdr.it_version = 0;
4928 rt->rt_hdr.it_pad = 0;
4929 rt->rt_hdr.it_len = cpu_to_le16(sizeof(struct at76_rx_radiotap));
4930 rt->rt_hdr.it_present = cpu_to_le32(AT76_RX_RADIOTAP_PRESENT);
4931
4932 rt->rt_tsft = cpu_to_le64(le32_to_cpu(buf->rx_time));
4933 rt->rt_rate = hw_rates[buf->rx_rate] & (~0x80);
4934 rt->rt_signal = buf->rssi;
4935 rt->rt_noise = buf->noise_level;
4936 rt->rt_flags = IEEE80211_RADIOTAP_F_FCS;
4937 if (buf->fragmentation)
4938 rt->rt_flags |= IEEE80211_RADIOTAP_F_FRAG;
4939
4940 memcpy(payload, buf->packet, length);
4941 skb->dev = netdev;
4942 skb->ip_summed = CHECKSUM_NONE;
4943 skb_reset_mac_header(skb);
4944 skb->pkt_type = PACKET_OTHERHOST;
4945 skb->protocol = htons(ETH_P_802_2);
4946
4947 netdev->last_rx = jiffies;
4948 netif_rx(skb);
4949 stats->rx_packets++;
4950 stats->rx_bytes += length;
4951}
4952
4953/* Check if we spy on the sender address in buf and update stats */
4954static void at76_iwspy_update(struct at76_priv *priv,
4955 struct at76_rx_buffer *buf)
4956{
4957 struct ieee80211_hdr_3addr *hdr =
4958 (struct ieee80211_hdr_3addr *)buf->packet;
4959 struct iw_quality qual;
4960
4961 /* We can only set the level here */
4962 qual.updated = IW_QUAL_QUAL_INVALID | IW_QUAL_NOISE_INVALID;
4963 qual.level = 0;
4964 qual.noise = 0;
4965 at76_calc_level(priv, buf, &qual);
4966
4967 spin_lock_bh(&priv->spy_spinlock);
4968
4969 if (priv->spy_data.spy_number > 0)
4970 wireless_spy_update(priv->netdev, hdr->addr2, &qual);
4971
4972 spin_unlock_bh(&priv->spy_spinlock);
4973}
4974
4975static void at76_rx_tasklet(unsigned long param)
4976{
4977 struct urb *urb = (struct urb *)param;
4978 struct at76_priv *priv = urb->context;
4979 struct net_device *netdev = priv->netdev;
4980 struct at76_rx_buffer *buf;
4981 struct ieee80211_hdr_3addr *i802_11_hdr;
4982 u16 frame_ctl;
4983
4984 if (priv->device_unplugged) {
4985 at76_dbg(DBG_DEVSTART, "device unplugged");
4986 if (urb)
4987 at76_dbg(DBG_DEVSTART, "urb status %d", urb->status);
4988 return;
4989 }
4990
4991 if (!priv->rx_skb || !netdev || !priv->rx_skb->data)
4992 return;
4993
4994 buf = (struct at76_rx_buffer *)priv->rx_skb->data;
4995
4996 i802_11_hdr = (struct ieee80211_hdr_3addr *)buf->packet;
4997
4998 frame_ctl = le16_to_cpu(i802_11_hdr->frame_ctl);
4999
5000 if (urb->status != 0) {
5001 if (urb->status != -ENOENT && urb->status != -ECONNRESET)
5002 at76_dbg(DBG_URB,
5003 "%s %s: - nonzero Rx bulk status received: %d",
5004 __func__, netdev->name, urb->status);
5005 return;
5006 }
5007
5008 at76_dbg(DBG_RX_ATMEL_HDR,
5009 "%s: rx frame: rate %d rssi %d noise %d link %d %s",
5010 priv->netdev->name, buf->rx_rate, buf->rssi, buf->noise_level,
5011 buf->link_quality, hex2str(i802_11_hdr, 48));
5012 if (priv->iw_mode == IW_MODE_MONITOR) {
5013 at76_rx_monitor_mode(priv);
5014 goto exit;
5015 }
5016
5017 /* there is a new bssid around, accept it: */
5018 if (buf->newbss && priv->iw_mode == IW_MODE_ADHOC) {
5019 at76_dbg(DBG_PROGRESS, "%s: rx newbss", netdev->name);
5020 schedule_work(&priv->work_new_bss);
5021 }
5022
5023 switch (frame_ctl & IEEE80211_FCTL_FTYPE) {
5024 case IEEE80211_FTYPE_DATA:
5025 at76_rx_data(priv);
5026 break;
5027
5028 case IEEE80211_FTYPE_MGMT:
5029 /* jal: TODO: find out if we can update iwspy also on
5030 other frames than management (might depend on the
5031 radio chip / firmware version !) */
5032
5033 at76_iwspy_update(priv, buf);
5034
5035 at76_rx_mgmt(priv, buf);
5036 break;
5037
5038 case IEEE80211_FTYPE_CTL:
5039 at76_dbg(DBG_RX_CTRL, "%s: ignored ctrl frame: %04x",
5040 priv->netdev->name, frame_ctl);
5041 break;
5042
5043 default:
5044 printk(KERN_DEBUG "%s: ignoring frame with framectl 0x%04x\n",
5045 priv->netdev->name, frame_ctl);
5046 }
5047exit:
5048 at76_submit_rx_urb(priv);
5049}
5050
5051/* Load firmware into kernel memory and parse it */
5052static struct fwentry *at76_load_firmware(struct usb_device *udev,
5053 enum board_type board_type)
5054{
5055 int ret;
5056 char *str;
5057 struct at76_fw_header *fwh;
5058 struct fwentry *fwe = &firmwares[board_type];
5059
5060 mutex_lock(&fw_mutex);
5061
5062 if (fwe->loaded) {
5063 at76_dbg(DBG_FW, "re-using previously loaded fw");
5064 goto exit;
5065 }
5066
5067 at76_dbg(DBG_FW, "downloading firmware %s", fwe->fwname);
5068 ret = request_firmware(&fwe->fw, fwe->fwname, &udev->dev);
5069 if (ret < 0) {
5070 dev_printk(KERN_ERR, &udev->dev, "firmware %s not found!\n",
5071 fwe->fwname);
5072 dev_printk(KERN_ERR, &udev->dev,
5073 "you may need to download the firmware from "
5074 "http://developer.berlios.de/projects/at76c503a/");
5075 goto exit;
5076 }
5077
5078 at76_dbg(DBG_FW, "got it.");
5079 fwh = (struct at76_fw_header *)(fwe->fw->data);
5080
5081 if (fwe->fw->size <= sizeof(*fwh)) {
5082 dev_printk(KERN_ERR, &udev->dev,
5083 "firmware is too short (0x%zx)\n", fwe->fw->size);
5084 goto exit;
5085 }
5086
5087 /* CRC currently not checked */
5088 fwe->board_type = le32_to_cpu(fwh->board_type);
5089 if (fwe->board_type != board_type) {
5090 dev_printk(KERN_ERR, &udev->dev,
5091 "board type mismatch, requested %u, got %u\n",
5092 board_type, fwe->board_type);
5093 goto exit;
5094 }
5095
5096 fwe->fw_version.major = fwh->major;
5097 fwe->fw_version.minor = fwh->minor;
5098 fwe->fw_version.patch = fwh->patch;
5099 fwe->fw_version.build = fwh->build;
5100
5101 str = (char *)fwh + le32_to_cpu(fwh->str_offset);
5102 fwe->intfw = (u8 *)fwh + le32_to_cpu(fwh->int_fw_offset);
5103 fwe->intfw_size = le32_to_cpu(fwh->int_fw_len);
5104 fwe->extfw = (u8 *)fwh + le32_to_cpu(fwh->ext_fw_offset);
5105 fwe->extfw_size = le32_to_cpu(fwh->ext_fw_len);
5106
5107 fwe->loaded = 1;
5108
5109 dev_printk(KERN_DEBUG, &udev->dev,
5110 "using firmware %s (version %d.%d.%d-%d)\n",
5111 fwe->fwname, fwh->major, fwh->minor, fwh->patch, fwh->build);
5112
5113 at76_dbg(DBG_DEVSTART, "board %u, int %d:%d, ext %d:%d", board_type,
5114 le32_to_cpu(fwh->int_fw_offset), le32_to_cpu(fwh->int_fw_len),
5115 le32_to_cpu(fwh->ext_fw_offset), le32_to_cpu(fwh->ext_fw_len));
5116 at76_dbg(DBG_DEVSTART, "firmware id %s", str);
5117
5118exit:
5119 mutex_unlock(&fw_mutex);
5120
5121 if (fwe->loaded)
5122 return fwe;
5123 else
5124 return NULL;
5125}
5126
5127/* Allocate network device and initialize private data */
5128static struct at76_priv *at76_alloc_new_device(struct usb_device *udev)
5129{
5130 struct net_device *netdev;
5131 struct at76_priv *priv;
5132 int i;
5133
5134 /* allocate memory for our device state and initialize it */
5135 netdev = alloc_etherdev(sizeof(struct at76_priv));
5136 if (!netdev) {
5137 dev_printk(KERN_ERR, &udev->dev, "out of memory\n");
5138 return NULL;
5139 }
5140
5141 priv = netdev_priv(netdev);
5142
5143 priv->udev = udev;
5144 priv->netdev = netdev;
5145
5146 mutex_init(&priv->mtx);
5147 INIT_WORK(&priv->work_assoc_done, at76_work_assoc_done);
5148 INIT_WORK(&priv->work_join, at76_work_join);
5149 INIT_WORK(&priv->work_new_bss, at76_work_new_bss);
5150 INIT_WORK(&priv->work_start_scan, at76_work_start_scan);
5151 INIT_WORK(&priv->work_set_promisc, at76_work_set_promisc);
5152 INIT_WORK(&priv->work_submit_rx, at76_work_submit_rx);
5153 INIT_DELAYED_WORK(&priv->dwork_restart, at76_dwork_restart);
5154 INIT_DELAYED_WORK(&priv->dwork_get_scan, at76_dwork_get_scan);
5155 INIT_DELAYED_WORK(&priv->dwork_beacon, at76_dwork_beacon);
5156 INIT_DELAYED_WORK(&priv->dwork_auth, at76_dwork_auth);
5157 INIT_DELAYED_WORK(&priv->dwork_assoc, at76_dwork_assoc);
5158
5159 spin_lock_init(&priv->mgmt_spinlock);
5160 priv->next_mgmt_bulk = NULL;
5161 priv->mac_state = MAC_INIT;
5162
5163 /* initialize empty BSS list */
5164 priv->curr_bss = NULL;
5165 INIT_LIST_HEAD(&priv->bss_list);
5166 spin_lock_init(&priv->bss_list_spinlock);
5167
5168 init_timer(&priv->bss_list_timer);
5169 priv->bss_list_timer.data = (unsigned long)priv;
5170 priv->bss_list_timer.function = at76_bss_list_timeout;
5171
5172 spin_lock_init(&priv->spy_spinlock);
5173
5174 /* mark all rx data entries as unused */
5175 for (i = 0; i < NR_RX_DATA_BUF; i++)
5176 priv->rx_data[i].skb = NULL;
5177
5178 priv->rx_tasklet.func = at76_rx_tasklet;
5179 priv->rx_tasklet.data = 0;
5180
5181 priv->pm_mode = AT76_PM_OFF;
5182 priv->pm_period = 0;
5183
5184 return priv;
5185}
5186
5187static int at76_alloc_urbs(struct at76_priv *priv,
5188 struct usb_interface *interface)
5189{
5190 struct usb_endpoint_descriptor *endpoint, *ep_in, *ep_out;
5191 int i;
5192 int buffer_size;
5193 struct usb_host_interface *iface_desc;
5194
5195 at76_dbg(DBG_PROC_ENTRY, "%s: ENTER", __func__);
5196
5197 at76_dbg(DBG_URB, "%s: NumEndpoints %d ", __func__,
5198 interface->altsetting[0].desc.bNumEndpoints);
5199
5200 ep_in = NULL;
5201 ep_out = NULL;
5202 iface_desc = interface->cur_altsetting;
5203 for (i = 0; i < iface_desc->desc.bNumEndpoints; i++) {
5204 endpoint = &iface_desc->endpoint[i].desc;
5205
5206 at76_dbg(DBG_URB, "%s: %d. endpoint: addr 0x%x attr 0x%x",
5207 __func__, i, endpoint->bEndpointAddress,
5208 endpoint->bmAttributes);
5209
5210 if (!ep_in && usb_endpoint_is_bulk_in(endpoint))
5211 ep_in = endpoint;
5212
5213 if (!ep_out && usb_endpoint_is_bulk_out(endpoint))
5214 ep_out = endpoint;
5215 }
5216
5217 if (!ep_in || !ep_out) {
5218 dev_printk(KERN_ERR, &interface->dev,
5219 "bulk endpoints missing\n");
5220 return -ENXIO;
5221 }
5222
5223 priv->rx_pipe = usb_rcvbulkpipe(priv->udev, ep_in->bEndpointAddress);
5224 priv->tx_pipe = usb_sndbulkpipe(priv->udev, ep_out->bEndpointAddress);
5225
5226 priv->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
5227 priv->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
5228 if (!priv->rx_urb || !priv->tx_urb) {
5229 dev_printk(KERN_ERR, &interface->dev, "cannot allocate URB\n");
5230 return -ENOMEM;
5231 }
5232
5233 buffer_size = sizeof(struct at76_tx_buffer) + MAX_PADDING_SIZE;
5234 priv->bulk_out_buffer = kmalloc(buffer_size, GFP_KERNEL);
5235 if (!priv->bulk_out_buffer) {
5236 dev_printk(KERN_ERR, &interface->dev,
5237 "cannot allocate output buffer\n");
5238 return -ENOMEM;
5239 }
5240
5241 at76_dbg(DBG_PROC_ENTRY, "%s: EXIT", __func__);
5242
5243 return 0;
5244}
5245
5246/* Register network device and initialize the hardware */
5247static int at76_init_new_device(struct at76_priv *priv,
5248 struct usb_interface *interface)
5249{
5250 struct net_device *netdev = priv->netdev;
5251 int ret;
5252
5253 /* set up the endpoint information */
5254 /* check out the endpoints */
5255
5256 at76_dbg(DBG_DEVSTART, "USB interface: %d endpoints",
5257 interface->cur_altsetting->desc.bNumEndpoints);
5258
5259 ret = at76_alloc_urbs(priv, interface);
5260 if (ret < 0)
5261 goto exit;
5262
5263 /* MAC address */
5264 ret = at76_get_hw_config(priv);
5265 if (ret < 0) {
5266 dev_printk(KERN_ERR, &interface->dev,
5267 "cannot get MAC address\n");
5268 goto exit;
5269 }
5270
5271 priv->domain = at76_get_reg_domain(priv->regulatory_domain);
5272 /* init. netdev->dev_addr */
5273 memcpy(netdev->dev_addr, priv->mac_addr, ETH_ALEN);
5274
5275 priv->channel = DEF_CHANNEL;
5276 priv->iw_mode = IW_MODE_INFRA;
5277 priv->rts_threshold = DEF_RTS_THRESHOLD;
5278 priv->frag_threshold = DEF_FRAG_THRESHOLD;
5279 priv->short_retry_limit = DEF_SHORT_RETRY_LIMIT;
5280 priv->txrate = TX_RATE_AUTO;
5281 priv->preamble_type = PREAMBLE_TYPE_LONG;
5282 priv->beacon_period = 100;
5283 priv->beacons_last_qual = jiffies;
5284 priv->auth_mode = WLAN_AUTH_OPEN;
5285 priv->scan_min_time = DEF_SCAN_MIN_TIME;
5286 priv->scan_max_time = DEF_SCAN_MAX_TIME;
5287 priv->scan_mode = SCAN_TYPE_ACTIVE;
5288
5289 netdev->flags &= ~IFF_MULTICAST; /* not yet or never */
5290 netdev->open = at76_open;
5291 netdev->stop = at76_stop;
5292 netdev->get_stats = at76_get_stats;
5293 netdev->ethtool_ops = &at76_ethtool_ops;
5294
5295 /* Add pointers to enable iwspy support. */
5296 priv->wireless_data.spy_data = &priv->spy_data;
5297 netdev->wireless_data = &priv->wireless_data;
5298
5299 netdev->hard_start_xmit = at76_tx;
5300 netdev->tx_timeout = at76_tx_timeout;
5301 netdev->watchdog_timeo = 2 * HZ;
5302 netdev->wireless_handlers = &at76_handler_def;
5303 netdev->set_multicast_list = at76_set_multicast;
5304 netdev->set_mac_address = at76_set_mac_address;
5305 dev_alloc_name(netdev, "wlan%d");
5306
5307 ret = register_netdev(priv->netdev);
5308 if (ret) {
5309 dev_printk(KERN_ERR, &interface->dev,
5310 "cannot register netdevice (status %d)!\n", ret);
5311 goto exit;
5312 }
5313 priv->netdev_registered = 1;
5314
5315 printk(KERN_INFO "%s: USB %s, MAC %s, firmware %d.%d.%d-%d\n",
5316 netdev->name, interface->dev.bus_id, mac2str(priv->mac_addr),
5317 priv->fw_version.major, priv->fw_version.minor,
5318 priv->fw_version.patch, priv->fw_version.build);
5319 printk(KERN_INFO "%s: regulatory domain 0x%02x: %s\n", netdev->name,
5320 priv->regulatory_domain, priv->domain->name);
5321
5322 /* we let this timer run the whole time this driver instance lives */
5323 mod_timer(&priv->bss_list_timer, jiffies + BSS_LIST_TIMEOUT);
5324
5325exit:
5326 return ret;
5327}
5328
5329static void at76_delete_device(struct at76_priv *priv)
5330{
5331 int i;
5332
5333 at76_dbg(DBG_PROC_ENTRY, "%s: ENTER", __func__);
5334
5335 /* The device is gone, don't bother turning it off */
5336 priv->device_unplugged = 1;
5337
5338 if (priv->netdev_registered)
5339 unregister_netdev(priv->netdev);
5340
5341 /* assuming we used keventd, it must quiesce too */
5342 flush_scheduled_work();
5343
5344 kfree(priv->bulk_out_buffer);
5345
5346 if (priv->tx_urb) {
5347 usb_kill_urb(priv->tx_urb);
5348 usb_free_urb(priv->tx_urb);
5349 }
5350 if (priv->rx_urb) {
5351 usb_kill_urb(priv->rx_urb);
5352 usb_free_urb(priv->rx_urb);
5353 }
5354
5355 at76_dbg(DBG_PROC_ENTRY, "%s: unlinked urbs", __func__);
5356
5357 if (priv->rx_skb)
5358 kfree_skb(priv->rx_skb);
5359
5360 at76_free_bss_list(priv);
5361 del_timer_sync(&priv->bss_list_timer);
5362 cancel_delayed_work(&priv->dwork_get_scan);
5363 cancel_delayed_work(&priv->dwork_beacon);
5364 cancel_delayed_work(&priv->dwork_auth);
5365 cancel_delayed_work(&priv->dwork_assoc);
5366
5367 if (priv->mac_state == MAC_CONNECTED)
5368 at76_iwevent_bss_disconnect(priv->netdev);
5369
5370 for (i = 0; i < NR_RX_DATA_BUF; i++)
5371 if (priv->rx_data[i].skb) {
5372 dev_kfree_skb(priv->rx_data[i].skb);
5373 priv->rx_data[i].skb = NULL;
5374 }
5375 usb_put_dev(priv->udev);
5376
5377 at76_dbg(DBG_PROC_ENTRY, "%s: before freeing priv/netdev", __func__);
5378 free_netdev(priv->netdev); /* priv is in netdev */
5379
5380 at76_dbg(DBG_PROC_ENTRY, "%s: EXIT", __func__);
5381}
5382
5383static int at76_probe(struct usb_interface *interface,
5384 const struct usb_device_id *id)
5385{
5386 int ret;
5387 struct at76_priv *priv;
5388 struct fwentry *fwe;
5389 struct usb_device *udev;
5390 int op_mode;
5391 int need_ext_fw = 0;
5392 struct mib_fw_version fwv;
5393 int board_type = (int)id->driver_info;
5394
5395 udev = usb_get_dev(interface_to_usbdev(interface));
5396
5397 /* Load firmware into kernel memory */
5398 fwe = at76_load_firmware(udev, board_type);
5399 if (!fwe) {
5400 ret = -ENOENT;
5401 goto error;
5402 }
5403
5404 op_mode = at76_get_op_mode(udev);
5405
5406 at76_dbg(DBG_DEVSTART, "opmode %d", op_mode);
5407
5408 /* we get OPMODE_NONE with 2.4.23, SMC2662W-AR ???
5409 we get 204 with 2.4.23, Fiberline FL-WL240u (505A+RFMD2958) ??? */
5410
5411 if (op_mode == OPMODE_HW_CONFIG_MODE) {
5412 dev_printk(KERN_ERR, &interface->dev,
5413 "cannot handle a device in HW_CONFIG_MODE\n");
5414 ret = -EBUSY;
5415 goto error;
5416 }
5417
5418 if (op_mode != OPMODE_NORMAL_NIC_WITH_FLASH
5419 && op_mode != OPMODE_NORMAL_NIC_WITHOUT_FLASH) {
5420 /* download internal firmware part */
5421 dev_printk(KERN_DEBUG, &interface->dev,
5422 "downloading internal firmware\n");
5423 ret = at76_load_internal_fw(udev, fwe);
5424 if (ret < 0) {
5425 dev_printk(KERN_ERR, &interface->dev,
5426 "error %d downloading internal firmware\n",
5427 ret);
5428 goto error;
5429 }
5430 usb_put_dev(udev);
5431 return ret;
5432 }
5433
5434 /* Internal firmware already inside the device. Get firmware
5435 * version to test if external firmware is loaded.
5436 * This works only for newer firmware, e.g. the Intersil 0.90.x
5437 * says "control timeout on ep0in" and subsequent
5438 * at76_get_op_mode() fail too :-( */
5439
5440 /* if version >= 0.100.x.y or device with built-in flash we can
5441 * query the device for the fw version */
5442 if ((fwe->fw_version.major > 0 || fwe->fw_version.minor >= 100)
5443 || (op_mode == OPMODE_NORMAL_NIC_WITH_FLASH)) {
5444 ret = at76_get_mib(udev, MIB_FW_VERSION, &fwv, sizeof(fwv));
5445 if (ret < 0 || (fwv.major | fwv.minor) == 0)
5446 need_ext_fw = 1;
5447 } else
5448 /* No way to check firmware version, reload to be sure */
5449 need_ext_fw = 1;
5450
5451 if (need_ext_fw) {
5452 dev_printk(KERN_DEBUG, &interface->dev,
5453 "downloading external firmware\n");
5454
5455 ret = at76_load_external_fw(udev, fwe);
5456 if (ret)
5457 goto error;
5458
5459 /* Re-check firmware version */
5460 ret = at76_get_mib(udev, MIB_FW_VERSION, &fwv, sizeof(fwv));
5461 if (ret < 0) {
5462 dev_printk(KERN_ERR, &interface->dev,
5463 "error %d getting firmware version\n", ret);
5464 goto error;
5465 }
5466 }
5467
5468 priv = at76_alloc_new_device(udev);
5469 if (!priv) {
5470 ret = -ENOMEM;
5471 goto error;
5472 }
5473
5474 SET_NETDEV_DEV(priv->netdev, &interface->dev);
5475 usb_set_intfdata(interface, priv);
5476
5477 memcpy(&priv->fw_version, &fwv, sizeof(struct mib_fw_version));
5478 priv->board_type = board_type;
5479
5480 ret = at76_init_new_device(priv, interface);
5481 if (ret < 0)
5482 at76_delete_device(priv);
5483
5484 return ret;
5485
5486error:
5487 usb_put_dev(udev);
5488 return ret;
5489}
5490
5491static void at76_disconnect(struct usb_interface *interface)
5492{
5493 struct at76_priv *priv;
5494
5495 priv = usb_get_intfdata(interface);
5496 usb_set_intfdata(interface, NULL);
5497
5498 /* Disconnect after loading internal firmware */
5499 if (!priv)
5500 return;
5501
5502 printk(KERN_INFO "%s: disconnecting\n", priv->netdev->name);
5503 at76_delete_device(priv);
5504 dev_printk(KERN_INFO, &interface->dev, "disconnected\n");
5505}
5506
5507/* Structure for registering this driver with the USB subsystem */
5508static struct usb_driver at76_driver = {
5509 .name = DRIVER_NAME,
5510 .probe = at76_probe,
5511 .disconnect = at76_disconnect,
5512 .id_table = dev_table,
5513};
5514
5515static int __init at76_mod_init(void)
5516{
5517 int result;
5518
5519 printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION " loading\n");
5520
5521 mutex_init(&fw_mutex);
5522
5523 /* register this driver with the USB subsystem */
5524 result = usb_register(&at76_driver);
5525 if (result < 0)
5526 printk(KERN_ERR DRIVER_NAME
5527 ": usb_register failed (status %d)\n", result);
5528
5529 led_trigger_register_simple("at76_usb-tx", &ledtrig_tx);
5530 return result;
5531}
5532
5533static void __exit at76_mod_exit(void)
5534{
5535 int i;
5536
5537 printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION " unloading\n");
5538 usb_deregister(&at76_driver);
5539 for (i = 0; i < ARRAY_SIZE(firmwares); i++) {
5540 if (firmwares[i].fw)
5541 release_firmware(firmwares[i].fw);
5542 }
5543 led_trigger_unregister_simple(ledtrig_tx);
5544}
5545
5546module_param_named(debug, at76_debug, int, 0600);
5547MODULE_PARM_DESC(debug, "Debugging level");
5548
5549module_init(at76_mod_init);
5550module_exit(at76_mod_exit);
5551
5552MODULE_AUTHOR("Oliver Kurth <oku@masqmail.cx>");
5553MODULE_AUTHOR("Joerg Albert <joerg.albert@gmx.de>");
5554MODULE_AUTHOR("Alex <alex@foogod.com>");
5555MODULE_AUTHOR("Nick Jones");
5556MODULE_AUTHOR("Balint Seeber <n0_5p4m_p13453@hotmail.com>");
5557MODULE_AUTHOR("Pavel Roskin <proski@gnu.org>");
5558MODULE_DESCRIPTION(DRIVER_DESC);
5559MODULE_LICENSE("GPL");
diff --git a/drivers/staging/at76_usb/at76_usb.h b/drivers/staging/at76_usb/at76_usb.h
new file mode 100644
index 00000000000..b20be9da1fa
--- /dev/null
+++ b/drivers/staging/at76_usb/at76_usb.h
@@ -0,0 +1,619 @@
1/*
2 * Copyright (c) 2002,2003 Oliver Kurth
3 * (c) 2003,2004 Joerg Albert <joerg.albert@gmx.de>
4 * (c) 2007 Guido Guenther <agx@sigxcpu.org>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation; either version 2 of
9 * the License, or (at your option) any later version.
10 *
11 * This driver was based on information from the Sourceforge driver
12 * released and maintained by Atmel:
13 *
14 * http://sourceforge.net/projects/atmelwlandriver/
15 *
16 * Although the code was completely re-written,
17 * it would have been impossible without Atmel's decision to
18 * release an Open Source driver (unfortunately the firmware was
19 * kept binary only). Thanks for that decision to Atmel!
20 */
21
22#ifndef _AT76_USB_H
23#define _AT76_USB_H
24
25/* Board types */
26enum board_type {
27 BOARD_503_ISL3861 = 1,
28 BOARD_503_ISL3863 = 2,
29 BOARD_503 = 3,
30 BOARD_503_ACC = 4,
31 BOARD_505 = 5,
32 BOARD_505_2958 = 6,
33 BOARD_505A = 7,
34 BOARD_505AMX = 8
35};
36
37/* our private ioctl's */
38/* preamble length (0 - long, 1 - short, 2 - auto) */
39#define AT76_SET_SHORT_PREAMBLE (SIOCIWFIRSTPRIV + 0)
40#define AT76_GET_SHORT_PREAMBLE (SIOCIWFIRSTPRIV + 1)
41/* which debug channels are enabled */
42#define AT76_SET_DEBUG (SIOCIWFIRSTPRIV + 2)
43#define AT76_GET_DEBUG (SIOCIWFIRSTPRIV + 3)
44/* power save mode (incl. the Atmel proprietary smart save mode) */
45#define AT76_SET_POWERSAVE_MODE (SIOCIWFIRSTPRIV + 4)
46#define AT76_GET_POWERSAVE_MODE (SIOCIWFIRSTPRIV + 5)
47/* min and max channel times for scan */
48#define AT76_SET_SCAN_TIMES (SIOCIWFIRSTPRIV + 6)
49#define AT76_GET_SCAN_TIMES (SIOCIWFIRSTPRIV + 7)
50/* scan mode (0 - active, 1 - passive) */
51#define AT76_SET_SCAN_MODE (SIOCIWFIRSTPRIV + 8)
52#define AT76_GET_SCAN_MODE (SIOCIWFIRSTPRIV + 9)
53
54#define CMD_STATUS_IDLE 0x00
55#define CMD_STATUS_COMPLETE 0x01
56#define CMD_STATUS_UNKNOWN 0x02
57#define CMD_STATUS_INVALID_PARAMETER 0x03
58#define CMD_STATUS_FUNCTION_NOT_SUPPORTED 0x04
59#define CMD_STATUS_TIME_OUT 0x07
60#define CMD_STATUS_IN_PROGRESS 0x08
61#define CMD_STATUS_HOST_FAILURE 0xff
62#define CMD_STATUS_SCAN_FAILED 0xf0
63
64/* answers to get op mode */
65#define OPMODE_NONE 0x00
66#define OPMODE_NORMAL_NIC_WITH_FLASH 0x01
67#define OPMODE_HW_CONFIG_MODE 0x02
68#define OPMODE_DFU_MODE_WITH_FLASH 0x03
69#define OPMODE_NORMAL_NIC_WITHOUT_FLASH 0x04
70
71#define CMD_SET_MIB 0x01
72#define CMD_GET_MIB 0x02
73#define CMD_SCAN 0x03
74#define CMD_JOIN 0x04
75#define CMD_START_IBSS 0x05
76#define CMD_RADIO_ON 0x06
77#define CMD_RADIO_OFF 0x07
78#define CMD_STARTUP 0x0B
79
80#define MIB_LOCAL 0x01
81#define MIB_MAC_ADDR 0x02
82#define MIB_MAC 0x03
83#define MIB_MAC_MGMT 0x05
84#define MIB_MAC_WEP 0x06
85#define MIB_PHY 0x07
86#define MIB_FW_VERSION 0x08
87#define MIB_MDOMAIN 0x09
88
89#define ADHOC_MODE 1
90#define INFRASTRUCTURE_MODE 2
91
92/* values for struct mib_local, field preamble_type */
93#define PREAMBLE_TYPE_LONG 0
94#define PREAMBLE_TYPE_SHORT 1
95#define PREAMBLE_TYPE_AUTO 2
96
97/* values for tx_rate */
98#define TX_RATE_1MBIT 0
99#define TX_RATE_2MBIT 1
100#define TX_RATE_5_5MBIT 2
101#define TX_RATE_11MBIT 3
102#define TX_RATE_AUTO 4
103
104/* power management modes */
105#define AT76_PM_OFF 1
106#define AT76_PM_ON 2
107#define AT76_PM_SMART 3
108
109struct hwcfg_r505 {
110 u8 cr39_values[14];
111 u8 reserved1[14];
112 u8 bb_cr[14];
113 u8 pidvid[4];
114 u8 mac_addr[ETH_ALEN];
115 u8 regulatory_domain;
116 u8 reserved2[14];
117 u8 cr15_values[14];
118 u8 reserved3[3];
119} __attribute__((packed));
120
121struct hwcfg_rfmd {
122 u8 cr20_values[14];
123 u8 cr21_values[14];
124 u8 bb_cr[14];
125 u8 pidvid[4];
126 u8 mac_addr[ETH_ALEN];
127 u8 regulatory_domain;
128 u8 low_power_values[14];
129 u8 normal_power_values[14];
130 u8 reserved1[3];
131} __attribute__((packed));
132
133struct hwcfg_intersil {
134 u8 mac_addr[ETH_ALEN];
135 u8 cr31_values[14];
136 u8 cr58_values[14];
137 u8 pidvid[4];
138 u8 regulatory_domain;
139 u8 reserved[1];
140} __attribute__((packed));
141
142union at76_hwcfg {
143 struct hwcfg_intersil i;
144 struct hwcfg_rfmd r3;
145 struct hwcfg_r505 r5;
146};
147
148#define WEP_SMALL_KEY_LEN (40 / 8)
149#define WEP_LARGE_KEY_LEN (104 / 8)
150
151struct at76_card_config {
152 u8 exclude_unencrypted;
153 u8 promiscuous_mode;
154 u8 short_retry_limit;
155 u8 encryption_type;
156 __le16 rts_threshold;
157 __le16 fragmentation_threshold; /* 256..2346 */
158 u8 basic_rate_set[4];
159 u8 auto_rate_fallback; /* 0,1 */
160 u8 channel;
161 u8 privacy_invoked;
162 u8 wep_default_key_id; /* 0..3 */
163 u8 current_ssid[32];
164 u8 wep_default_key_value[4][WEP_KEY_LEN];
165 u8 ssid_len;
166 u8 short_preamble;
167 __le16 beacon_period;
168} __attribute__((packed));
169
170struct at76_command {
171 u8 cmd;
172 u8 reserved;
173 __le16 size;
174 u8 data[0];
175} __attribute__((packed));
176
177/* Length of Atmel-specific Rx header before 802.11 frame */
178#define AT76_RX_HDRLEN offsetof(struct at76_rx_buffer, packet)
179
180struct at76_rx_buffer {
181 __le16 wlength;
182 u8 rx_rate;
183 u8 newbss;
184 u8 fragmentation;
185 u8 rssi;
186 u8 link_quality;
187 u8 noise_level;
188 __le32 rx_time;
189 u8 packet[IEEE80211_FRAME_LEN + IEEE80211_FCS_LEN];
190} __attribute__((packed));
191
192/* Length of Atmel-specific Tx header before 802.11 frame */
193#define AT76_TX_HDRLEN offsetof(struct at76_tx_buffer, packet)
194
195struct at76_tx_buffer {
196 __le16 wlength;
197 u8 tx_rate;
198 u8 padding;
199 u8 reserved[4];
200 u8 packet[IEEE80211_FRAME_LEN + IEEE80211_FCS_LEN];
201} __attribute__((packed));
202
203/* defines for scan_type below */
204#define SCAN_TYPE_ACTIVE 0
205#define SCAN_TYPE_PASSIVE 1
206
207struct at76_req_scan {
208 u8 bssid[ETH_ALEN];
209 u8 essid[32];
210 u8 scan_type;
211 u8 channel;
212 __le16 probe_delay;
213 __le16 min_channel_time;
214 __le16 max_channel_time;
215 u8 essid_size;
216 u8 international_scan;
217} __attribute__((packed));
218
219struct at76_req_ibss {
220 u8 bssid[ETH_ALEN];
221 u8 essid[32];
222 u8 bss_type;
223 u8 channel;
224 u8 essid_size;
225 u8 reserved[3];
226} __attribute__((packed));
227
228struct at76_req_join {
229 u8 bssid[ETH_ALEN];
230 u8 essid[32];
231 u8 bss_type;
232 u8 channel;
233 __le16 timeout;
234 u8 essid_size;
235 u8 reserved;
236} __attribute__((packed));
237
238struct set_mib_buffer {
239 u8 type;
240 u8 size;
241 u8 index;
242 u8 reserved;
243 union {
244 u8 byte;
245 __le16 word;
246 u8 addr[ETH_ALEN];
247 } data;
248} __attribute__((packed));
249
250struct mib_local {
251 u16 reserved0;
252 u8 beacon_enable;
253 u8 txautorate_fallback;
254 u8 reserved1;
255 u8 ssid_size;
256 u8 promiscuous_mode;
257 u16 reserved2;
258 u8 preamble_type;
259 u16 reserved3;
260} __attribute__((packed));
261
262struct mib_mac_addr {
263 u8 mac_addr[ETH_ALEN];
264 u8 res[2]; /* ??? */
265 u8 group_addr[4][ETH_ALEN];
266 u8 group_addr_status[4];
267} __attribute__((packed));
268
269struct mib_mac {
270 __le32 max_tx_msdu_lifetime;
271 __le32 max_rx_lifetime;
272 __le16 frag_threshold;
273 __le16 rts_threshold;
274 __le16 cwmin;
275 __le16 cwmax;
276 u8 short_retry_time;
277 u8 long_retry_time;
278 u8 scan_type; /* active or passive */
279 u8 scan_channel;
280 __le16 probe_delay; /* delay before ProbeReq in active scan, RO */
281 __le16 min_channel_time;
282 __le16 max_channel_time;
283 __le16 listen_interval;
284 u8 desired_ssid[32];
285 u8 desired_bssid[ETH_ALEN];
286 u8 desired_bsstype; /* ad-hoc or infrastructure */
287 u8 reserved2;
288} __attribute__((packed));
289
290struct mib_mac_mgmt {
291 __le16 beacon_period;
292 __le16 CFP_max_duration;
293 __le16 medium_occupancy_limit;
294 __le16 station_id; /* assoc id */
295 __le16 ATIM_window;
296 u8 CFP_mode;
297 u8 privacy_option_implemented;
298 u8 DTIM_period;
299 u8 CFP_period;
300 u8 current_bssid[ETH_ALEN];
301 u8 current_essid[32];
302 u8 current_bss_type;
303 u8 power_mgmt_mode;
304 /* rfmd and 505 */
305 u8 ibss_change;
306 u8 res;
307 u8 multi_domain_capability_implemented;
308 u8 multi_domain_capability_enabled;
309 u8 country_string[3];
310 u8 reserved[3];
311} __attribute__((packed));
312
313struct mib_mac_wep {
314 u8 privacy_invoked; /* 0 disable encr., 1 enable encr */
315 u8 wep_default_key_id;
316 u8 wep_key_mapping_len;
317 u8 exclude_unencrypted;
318 __le32 wep_icv_error_count;
319 __le32 wep_excluded_count;
320 u8 wep_default_keyvalue[WEP_KEYS][WEP_KEY_LEN];
321 u8 encryption_level; /* 1 for 40bit, 2 for 104bit encryption */
322} __attribute__((packed));
323
324struct mib_phy {
325 __le32 ed_threshold;
326
327 __le16 slot_time;
328 __le16 sifs_time;
329 __le16 preamble_length;
330 __le16 plcp_header_length;
331 __le16 mpdu_max_length;
332 __le16 cca_mode_supported;
333
334 u8 operation_rate_set[4];
335 u8 channel_id;
336 u8 current_cca_mode;
337 u8 phy_type;
338 u8 current_reg_domain;
339} __attribute__((packed));
340
341struct mib_fw_version {
342 u8 major;
343 u8 minor;
344 u8 patch;
345 u8 build;
346} __attribute__((packed));
347
348struct mib_mdomain {
349 u8 tx_powerlevel[14];
350 u8 channel_list[14]; /* 0 for invalid channels */
351} __attribute__((packed));
352
353struct at76_fw_header {
354 __le32 crc; /* CRC32 of the whole image */
355 __le32 board_type; /* firmware compatibility code */
356 u8 build; /* firmware build number */
357 u8 patch; /* firmware patch level */
358 u8 minor; /* firmware minor version */
359 u8 major; /* firmware major version */
360 __le32 str_offset; /* offset of the copyright string */
361 __le32 int_fw_offset; /* internal firmware image offset */
362 __le32 int_fw_len; /* internal firmware image length */
363 __le32 ext_fw_offset; /* external firmware image offset */
364 __le32 ext_fw_len; /* external firmware image length */
365} __attribute__((packed));
366
367enum mac_state {
368 MAC_INIT,
369 MAC_SCANNING,
370 MAC_AUTH,
371 MAC_ASSOC,
372 MAC_JOINING,
373 MAC_CONNECTED,
374 MAC_OWN_IBSS
375};
376
377/* a description of a regulatory domain and the allowed channels */
378struct reg_domain {
379 u16 code;
380 char const *name;
381 u32 channel_map; /* if bit N is set, channel (N+1) is allowed */
382};
383
384/* how long do we keep a (I)BSS in the bss_list in jiffies
385 this should be long enough for the user to retrieve the table
386 (by iwlist ?) after the device started, because all entries from
387 other channels than the one the device locks on get removed, too */
388#define BSS_LIST_TIMEOUT (120 * HZ)
389/* struct to store BSS info found during scan */
390#define BSS_LIST_MAX_RATE_LEN 32 /* 32 rates should be enough ... */
391
392struct bss_info {
393 struct list_head list;
394
395 u8 bssid[ETH_ALEN]; /* bssid */
396 u8 ssid[IW_ESSID_MAX_SIZE]; /* essid */
397 u8 ssid_len; /* length of ssid above */
398 u8 channel;
399 u16 capa; /* BSS capabilities */
400 u16 beacon_interval; /* beacon interval, Kus (1024 microseconds) */
401 u8 rates[BSS_LIST_MAX_RATE_LEN]; /* supported rates in units of
402 500 kbps, ORed with 0x80 for
403 basic rates */
404 u8 rates_len;
405
406 /* quality of received beacon */
407 u8 rssi;
408 u8 link_qual;
409 u8 noise_level;
410
411 unsigned long last_rx; /* time (jiffies) of last beacon received */
412};
413
414/* a rx data buffer to collect rx fragments */
415struct rx_data_buf {
416 u8 sender[ETH_ALEN]; /* sender address */
417 u16 seqnr; /* sequence number */
418 u16 fragnr; /* last fragment received */
419 unsigned long last_rx; /* jiffies of last rx */
420 struct sk_buff *skb; /* == NULL if entry is free */
421};
422
423#define NR_RX_DATA_BUF 8
424
425/* Data for one loaded firmware file */
426struct fwentry {
427 const char *const fwname;
428 const struct firmware *fw;
429 int extfw_size;
430 int intfw_size;
431 /* pointer to loaded firmware, no need to free */
432 u8 *extfw; /* external firmware, extfw_size bytes long */
433 u8 *intfw; /* internal firmware, intfw_size bytes long */
434 enum board_type board_type; /* board type */
435 struct mib_fw_version fw_version;
436 int loaded; /* Loaded and parsed successfully */
437};
438
439struct at76_priv {
440 struct usb_device *udev; /* USB device pointer */
441 struct net_device *netdev; /* net device pointer */
442 struct net_device_stats stats; /* net device stats */
443 struct iw_statistics wstats; /* wireless stats */
444
445 struct sk_buff *rx_skb; /* skbuff for receiving data */
446 void *bulk_out_buffer; /* buffer for sending data */
447
448 struct urb *tx_urb; /* URB for sending data */
449 struct urb *rx_urb; /* URB for receiving data */
450
451 unsigned int tx_pipe; /* bulk out pipe */
452 unsigned int rx_pipe; /* bulk in pipe */
453
454 struct mutex mtx; /* locks this structure */
455
456 /* work queues */
457 struct work_struct work_assoc_done;
458 struct work_struct work_join;
459 struct work_struct work_new_bss;
460 struct work_struct work_start_scan;
461 struct work_struct work_set_promisc;
462 struct work_struct work_submit_rx;
463 struct delayed_work dwork_restart;
464 struct delayed_work dwork_get_scan;
465 struct delayed_work dwork_beacon;
466 struct delayed_work dwork_auth;
467 struct delayed_work dwork_assoc;
468
469 struct tasklet_struct rx_tasklet;
470
471 /* the WEP stuff */
472 int wep_enabled; /* 1 if WEP is enabled */
473 int wep_key_id; /* key id to be used */
474 u8 wep_keys[WEP_KEYS][WEP_KEY_LEN]; /* the four WEP keys,
475 5 or 13 bytes are used */
476 u8 wep_keys_len[WEP_KEYS]; /* the length of the above keys */
477
478 int channel;
479 int iw_mode;
480 u8 bssid[ETH_ALEN];
481 u8 essid[IW_ESSID_MAX_SIZE];
482 int essid_size;
483 int radio_on;
484 int promisc;
485
486 int preamble_type; /* 0 - long, 1 - short, 2 - auto */
487 int auth_mode; /* authentication type: 0 open, 1 shared key */
488 int txrate; /* 0,1,2,3 = 1,2,5.5,11 Mbps, 4 is auto */
489 int frag_threshold; /* threshold for fragmentation of tx packets */
490 int rts_threshold; /* threshold for RTS mechanism */
491 int short_retry_limit;
492
493 int scan_min_time; /* scan min channel time */
494 int scan_max_time; /* scan max channel time */
495 int scan_mode; /* SCAN_TYPE_ACTIVE, SCAN_TYPE_PASSIVE */
496 int scan_need_any; /* if set, need to scan for any ESSID */
497
498 /* the list we got from scanning */
499 spinlock_t bss_list_spinlock; /* protects bss_list operations */
500 struct list_head bss_list; /* list of BSS we got beacons from */
501 struct timer_list bss_list_timer; /* timer to purge old entries
502 from bss_list */
503 struct bss_info *curr_bss; /* current BSS */
504 u16 assoc_id; /* current association ID, if associated */
505
506 u8 wanted_bssid[ETH_ALEN];
507 int wanted_bssid_valid; /* != 0 if wanted_bssid is to be used */
508
509 /* some data for infrastructure mode only */
510 spinlock_t mgmt_spinlock; /* this spinlock protects access to
511 next_mgmt_bulk */
512
513 struct at76_tx_buffer *next_mgmt_bulk; /* pending management msg to
514 send via bulk out */
515 enum mac_state mac_state;
516 enum {
517 SCAN_IDLE,
518 SCAN_IN_PROGRESS,
519 SCAN_COMPLETED
520 } scan_state;
521 time_t last_scan;
522
523 int retries; /* remaining retries in case of timeout when
524 * sending AuthReq or AssocReq */
525 u8 pm_mode; /* power management mode */
526 u32 pm_period; /* power management period in microseconds */
527
528 struct reg_domain const *domain; /* reg domain description */
529
530 /* iwspy support */
531 spinlock_t spy_spinlock;
532 struct iw_spy_data spy_data;
533
534 struct iw_public_data wireless_data;
535
536 /* These fields contain HW config provided by the device (not all of
537 * these fields are used by all board types) */
538 u8 mac_addr[ETH_ALEN];
539 u8 regulatory_domain;
540
541 struct at76_card_config card_config;
542
543 /* store rx fragments until complete */
544 struct rx_data_buf rx_data[NR_RX_DATA_BUF];
545
546 enum board_type board_type;
547 struct mib_fw_version fw_version;
548
549 unsigned int device_unplugged:1;
550 unsigned int netdev_registered:1;
551 struct set_mib_buffer mib_buf; /* global buffer for set_mib calls */
552
553 /* beacon counting */
554 int beacon_period; /* period of mgmt beacons, Kus */
555 int beacons_received;
556 unsigned long beacons_last_qual; /* time we restarted counting
557 beacons */
558};
559
560struct at76_rx_radiotap {
561 struct ieee80211_radiotap_header rt_hdr;
562 __le64 rt_tsft;
563 u8 rt_flags;
564 u8 rt_rate;
565 s8 rt_signal;
566 s8 rt_noise;
567};
568
569#define AT76_RX_RADIOTAP_PRESENT \
570 ((1 << IEEE80211_RADIOTAP_TSFT) | \
571 (1 << IEEE80211_RADIOTAP_FLAGS) | \
572 (1 << IEEE80211_RADIOTAP_RATE) | \
573 (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL) | \
574 (1 << IEEE80211_RADIOTAP_DB_ANTNOISE))
575
576#define BEACON_MAX_DATA_LENGTH 1500
577
578/* the maximum size of an AssocReq packet */
579#define ASSOCREQ_MAX_SIZE \
580 (AT76_TX_HDRLEN + sizeof(struct ieee80211_assoc_request) + \
581 1 + 1 + IW_ESSID_MAX_SIZE + 1 + 1 + 4)
582
583/* for shared secret auth, add the challenge text size */
584#define AUTH_FRAME_SIZE (AT76_TX_HDRLEN + sizeof(struct ieee80211_auth))
585
586/* Maximal number of AuthReq retries */
587#define AUTH_RETRIES 3
588
589/* Maximal number of AssocReq retries */
590#define ASSOC_RETRIES 3
591
592/* Beacon timeout in managed mode when we are connected */
593#define BEACON_TIMEOUT (10 * HZ)
594
595/* Timeout for authentication response */
596#define AUTH_TIMEOUT (1 * HZ)
597
598/* Timeout for association response */
599#define ASSOC_TIMEOUT (1 * HZ)
600
601/* Polling interval when scan is running */
602#define SCAN_POLL_INTERVAL (HZ / 4)
603
604/* Command completion timeout */
605#define CMD_COMPLETION_TIMEOUT (5 * HZ)
606
607#define DEF_RTS_THRESHOLD 1536
608#define DEF_FRAG_THRESHOLD 1536
609#define DEF_SHORT_RETRY_LIMIT 8
610#define DEF_CHANNEL 10
611#define DEF_SCAN_MIN_TIME 10
612#define DEF_SCAN_MAX_TIME 120
613
614#define MAX_RTS_THRESHOLD (MAX_FRAG_THRESHOLD + 1)
615
616/* the max padding size for tx in bytes (see calc_padding) */
617#define MAX_PADDING_SIZE 53
618
619#endif /* _AT76_USB_H */
diff --git a/drivers/staging/echo/Kconfig b/drivers/staging/echo/Kconfig
new file mode 100644
index 00000000000..f1d41ea9cd4
--- /dev/null
+++ b/drivers/staging/echo/Kconfig
@@ -0,0 +1,9 @@
1config ECHO
2 tristate "Line Echo Canceller support"
3 default n
4 ---help---
5 This driver provides line echo cancelling support for mISDN and
6 Zaptel drivers.
7
8 To compile this driver as a module, choose M here. The module
9 will be called echo.
diff --git a/drivers/staging/echo/Makefile b/drivers/staging/echo/Makefile
new file mode 100644
index 00000000000..7d4caac12a8
--- /dev/null
+++ b/drivers/staging/echo/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_ECHO) += echo.o
diff --git a/drivers/staging/echo/TODO b/drivers/staging/echo/TODO
new file mode 100644
index 00000000000..1ca09afd603
--- /dev/null
+++ b/drivers/staging/echo/TODO
@@ -0,0 +1,10 @@
1TODO:
2 - checkpatch.pl cleanups
3 - Lindent
4 - typedef removals
5 - handle bit_operations.h (merge in or make part of common code?)
6 - remove proc interface, only use echo.h interface (proc interface is
7 racy and not correct.)
8
9Please send patches to Greg Kroah-Hartman <greg@kroah.com> and Cc: Steve
10Underwood <steveu@coppice.org> and David Rowe <david@rowetel.com>
diff --git a/drivers/staging/echo/bit_operations.h b/drivers/staging/echo/bit_operations.h
new file mode 100644
index 00000000000..b32f4bf9939
--- /dev/null
+++ b/drivers/staging/echo/bit_operations.h
@@ -0,0 +1,253 @@
1/*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * bit_operations.h - Various bit level operations, such as bit reversal
5 *
6 * Written by Steve Underwood <steveu@coppice.org>
7 *
8 * Copyright (C) 2006 Steve Underwood
9 *
10 * All rights reserved.
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2, as
14 * published by the Free Software Foundation.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 *
25 * $Id: bit_operations.h,v 1.11 2006/11/28 15:37:03 steveu Exp $
26 */
27
28/*! \file */
29
30#if !defined(_BIT_OPERATIONS_H_)
31#define _BIT_OPERATIONS_H_
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#if defined(__i386__) || defined(__x86_64__)
38/*! \brief Find the bit position of the highest set bit in a word
39 \param bits The word to be searched
40 \return The bit number of the highest set bit, or -1 if the word is zero. */
41static __inline__ int top_bit(unsigned int bits)
42{
43 int res;
44
45 __asm__ (" xorl %[res],%[res];\n"
46 " decl %[res];\n"
47 " bsrl %[bits],%[res]\n"
48 : [res] "=&r" (res)
49 : [bits] "rm" (bits));
50 return res;
51}
52/*- End of function --------------------------------------------------------*/
53
54/*! \brief Find the bit position of the lowest set bit in a word
55 \param bits The word to be searched
56 \return The bit number of the lowest set bit, or -1 if the word is zero. */
57static __inline__ int bottom_bit(unsigned int bits)
58{
59 int res;
60
61 __asm__ (" xorl %[res],%[res];\n"
62 " decl %[res];\n"
63 " bsfl %[bits],%[res]\n"
64 : [res] "=&r" (res)
65 : [bits] "rm" (bits));
66 return res;
67}
68/*- End of function --------------------------------------------------------*/
69#else
70static __inline__ int top_bit(unsigned int bits)
71{
72 int i;
73
74 if (bits == 0)
75 return -1;
76 i = 0;
77 if (bits & 0xFFFF0000)
78 {
79 bits &= 0xFFFF0000;
80 i += 16;
81 }
82 if (bits & 0xFF00FF00)
83 {
84 bits &= 0xFF00FF00;
85 i += 8;
86 }
87 if (bits & 0xF0F0F0F0)
88 {
89 bits &= 0xF0F0F0F0;
90 i += 4;
91 }
92 if (bits & 0xCCCCCCCC)
93 {
94 bits &= 0xCCCCCCCC;
95 i += 2;
96 }
97 if (bits & 0xAAAAAAAA)
98 {
99 bits &= 0xAAAAAAAA;
100 i += 1;
101 }
102 return i;
103}
104/*- End of function --------------------------------------------------------*/
105
106static __inline__ int bottom_bit(unsigned int bits)
107{
108 int i;
109
110 if (bits == 0)
111 return -1;
112 i = 32;
113 if (bits & 0x0000FFFF)
114 {
115 bits &= 0x0000FFFF;
116 i -= 16;
117 }
118 if (bits & 0x00FF00FF)
119 {
120 bits &= 0x00FF00FF;
121 i -= 8;
122 }
123 if (bits & 0x0F0F0F0F)
124 {
125 bits &= 0x0F0F0F0F;
126 i -= 4;
127 }
128 if (bits & 0x33333333)
129 {
130 bits &= 0x33333333;
131 i -= 2;
132 }
133 if (bits & 0x55555555)
134 {
135 bits &= 0x55555555;
136 i -= 1;
137 }
138 return i;
139}
140/*- End of function --------------------------------------------------------*/
141#endif
142
143/*! \brief Bit reverse a byte.
144 \param data The byte to be reversed.
145 \return The bit reversed version of data. */
146static __inline__ uint8_t bit_reverse8(uint8_t x)
147{
148#if defined(__i386__) || defined(__x86_64__)
149 /* If multiply is fast */
150 return ((x*0x0802U & 0x22110U) | (x*0x8020U & 0x88440U))*0x10101U >> 16;
151#else
152 /* If multiply is slow, but we have a barrel shifter */
153 x = (x >> 4) | (x << 4);
154 x = ((x & 0xCC) >> 2) | ((x & 0x33) << 2);
155 return ((x & 0xAA) >> 1) | ((x & 0x55) << 1);
156#endif
157}
158/*- End of function --------------------------------------------------------*/
159
160/*! \brief Bit reverse a 16 bit word.
161 \param data The word to be reversed.
162 \return The bit reversed version of data. */
163uint16_t bit_reverse16(uint16_t data);
164
165/*! \brief Bit reverse a 32 bit word.
166 \param data The word to be reversed.
167 \return The bit reversed version of data. */
168uint32_t bit_reverse32(uint32_t data);
169
170/*! \brief Bit reverse each of the four bytes in a 32 bit word.
171 \param data The word to be reversed.
172 \return The bit reversed version of data. */
173uint32_t bit_reverse_4bytes(uint32_t data);
174
175/*! \brief Find the number of set bits in a 32 bit word.
176 \param x The word to be searched.
177 \return The number of set bits. */
178int one_bits32(uint32_t x);
179
180/*! \brief Create a mask as wide as the number in a 32 bit word.
181 \param x The word to be searched.
182 \return The mask. */
183uint32_t make_mask32(uint32_t x);
184
185/*! \brief Create a mask as wide as the number in a 16 bit word.
186 \param x The word to be searched.
187 \return The mask. */
188uint16_t make_mask16(uint16_t x);
189
190/*! \brief Find the least significant one in a word, and return a word
191 with just that bit set.
192 \param x The word to be searched.
193 \return The word with the single set bit. */
194static __inline__ uint32_t least_significant_one32(uint32_t x)
195{
196 return (x & (-(int32_t) x));
197}
198/*- End of function --------------------------------------------------------*/
199
200/*! \brief Find the most significant one in a word, and return a word
201 with just that bit set.
202 \param x The word to be searched.
203 \return The word with the single set bit. */
204static __inline__ uint32_t most_significant_one32(uint32_t x)
205{
206#if defined(__i386__) || defined(__x86_64__)
207 return 1 << top_bit(x);
208#else
209 x = make_mask32(x);
210 return (x ^ (x >> 1));
211#endif
212}
213/*- End of function --------------------------------------------------------*/
214
215/*! \brief Find the parity of a byte.
216 \param x The byte to be checked.
217 \return 1 for odd, or 0 for even. */
218static __inline__ int parity8(uint8_t x)
219{
220 x = (x ^ (x >> 4)) & 0x0F;
221 return (0x6996 >> x) & 1;
222}
223/*- End of function --------------------------------------------------------*/
224
225/*! \brief Find the parity of a 16 bit word.
226 \param x The word to be checked.
227 \return 1 for odd, or 0 for even. */
228static __inline__ int parity16(uint16_t x)
229{
230 x ^= (x >> 8);
231 x = (x ^ (x >> 4)) & 0x0F;
232 return (0x6996 >> x) & 1;
233}
234/*- End of function --------------------------------------------------------*/
235
236/*! \brief Find the parity of a 32 bit word.
237 \param x The word to be checked.
238 \return 1 for odd, or 0 for even. */
239static __inline__ int parity32(uint32_t x)
240{
241 x ^= (x >> 16);
242 x ^= (x >> 8);
243 x = (x ^ (x >> 4)) & 0x0F;
244 return (0x6996 >> x) & 1;
245}
246/*- End of function --------------------------------------------------------*/
247
248#ifdef __cplusplus
249}
250#endif
251
252#endif
253/*- End of file ------------------------------------------------------------*/
diff --git a/drivers/staging/echo/echo.c b/drivers/staging/echo/echo.c
new file mode 100644
index 00000000000..4a281b14fc5
--- /dev/null
+++ b/drivers/staging/echo/echo.c
@@ -0,0 +1,632 @@
1/*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * echo.c - A line echo canceller. This code is being developed
5 * against and partially complies with G168.
6 *
7 * Written by Steve Underwood <steveu@coppice.org>
8 * and David Rowe <david_at_rowetel_dot_com>
9 *
10 * Copyright (C) 2001, 2003 Steve Underwood, 2007 David Rowe
11 *
12 * Based on a bit from here, a bit from there, eye of toad, ear of
13 * bat, 15 years of failed attempts by David and a few fried brain
14 * cells.
15 *
16 * All rights reserved.
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License version 2, as
20 * published by the Free Software Foundation.
21 *
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
26 *
27 * You should have received a copy of the GNU General Public License
28 * along with this program; if not, write to the Free Software
29 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 *
31 * $Id: echo.c,v 1.20 2006/12/01 18:00:48 steveu Exp $
32 */
33
34/*! \file */
35
36/* Implementation Notes
37 David Rowe
38 April 2007
39
40 This code started life as Steve's NLMS algorithm with a tap
41 rotation algorithm to handle divergence during double talk. I
42 added a Geigel Double Talk Detector (DTD) [2] and performed some
43 G168 tests. However I had trouble meeting the G168 requirements,
44 especially for double talk - there were always cases where my DTD
45 failed, for example where near end speech was under the 6dB
46 threshold required for declaring double talk.
47
48 So I tried a two path algorithm [1], which has so far given better
49 results. The original tap rotation/Geigel algorithm is available
50 in SVN http://svn.rowetel.com/software/oslec/tags/before_16bit.
51 It's probably possible to make it work if some one wants to put some
52 serious work into it.
53
54 At present no special treatment is provided for tones, which
55 generally cause NLMS algorithms to diverge. Initial runs of a
56 subset of the G168 tests for tones (e.g ./echo_test 6) show the
57 current algorithm is passing OK, which is kind of surprising. The
58 full set of tests needs to be performed to confirm this result.
59
60 One other interesting change is that I have managed to get the NLMS
61 code to work with 16 bit coefficients, rather than the original 32
62 bit coefficents. This reduces the MIPs and storage required.
63 I evaulated the 16 bit port using g168_tests.sh and listening tests
64 on 4 real-world samples.
65
66 I also attempted the implementation of a block based NLMS update
67 [2] but although this passes g168_tests.sh it didn't converge well
68 on the real-world samples. I have no idea why, perhaps a scaling
69 problem. The block based code is also available in SVN
70 http://svn.rowetel.com/software/oslec/tags/before_16bit. If this
71 code can be debugged, it will lead to further reduction in MIPS, as
72 the block update code maps nicely onto DSP instruction sets (it's a
73 dot product) compared to the current sample-by-sample update.
74
75 Steve also has some nice notes on echo cancellers in echo.h
76
77
78 References:
79
80 [1] Ochiai, Areseki, and Ogihara, "Echo Canceller with Two Echo
81 Path Models", IEEE Transactions on communications, COM-25,
82 No. 6, June
83 1977.
84 http://www.rowetel.com/images/echo/dual_path_paper.pdf
85
86 [2] The classic, very useful paper that tells you how to
87 actually build a real world echo canceller:
88 Messerschmitt, Hedberg, Cole, Haoui, Winship, "Digital Voice
89 Echo Canceller with a TMS320020,
90 http://www.rowetel.com/images/echo/spra129.pdf
91
92 [3] I have written a series of blog posts on this work, here is
93 Part 1: http://www.rowetel.com/blog/?p=18
94
95 [4] The source code http://svn.rowetel.com/software/oslec/
96
97 [5] A nice reference on LMS filters:
98 http://en.wikipedia.org/wiki/Least_mean_squares_filter
99
100 Credits:
101
102 Thanks to Steve Underwood, Jean-Marc Valin, and Ramakrishnan
103 Muthukrishnan for their suggestions and email discussions. Thanks
104 also to those people who collected echo samples for me such as
105 Mark, Pawel, and Pavel.
106*/
107
108#include <linux/kernel.h> /* We're doing kernel work */
109#include <linux/module.h>
110#include <linux/kernel.h>
111#include <linux/slab.h>
112#define malloc(a) kmalloc((a), GFP_KERNEL)
113#define free(a) kfree(a)
114
115#include "bit_operations.h"
116#include "echo.h"
117
118#define MIN_TX_POWER_FOR_ADAPTION 64
119#define MIN_RX_POWER_FOR_ADAPTION 64
120#define DTD_HANGOVER 600 /* 600 samples, or 75ms */
121#define DC_LOG2BETA 3 /* log2() of DC filter Beta */
122
123/*-----------------------------------------------------------------------*\
124 FUNCTIONS
125\*-----------------------------------------------------------------------*/
126
127/* adapting coeffs using the traditional stochastic descent (N)LMS algorithm */
128
129
130#ifdef __BLACKFIN_ASM__
131static void __inline__ lms_adapt_bg(echo_can_state_t *ec, int clean, int shift)
132{
133 int i, j;
134 int offset1;
135 int offset2;
136 int factor;
137 int exp;
138 int16_t *phist;
139 int n;
140
141 if (shift > 0)
142 factor = clean << shift;
143 else
144 factor = clean >> -shift;
145
146 /* Update the FIR taps */
147
148 offset2 = ec->curr_pos;
149 offset1 = ec->taps - offset2;
150 phist = &ec->fir_state_bg.history[offset2];
151
152 /* st: and en: help us locate the assembler in echo.s */
153
154 //asm("st:");
155 n = ec->taps;
156 for (i = 0, j = offset2; i < n; i++, j++)
157 {
158 exp = *phist++ * factor;
159 ec->fir_taps16[1][i] += (int16_t) ((exp+(1<<14)) >> 15);
160 }
161 //asm("en:");
162
163 /* Note the asm for the inner loop above generated by Blackfin gcc
164 4.1.1 is pretty good (note even parallel instructions used):
165
166 R0 = W [P0++] (X);
167 R0 *= R2;
168 R0 = R0 + R3 (NS) ||
169 R1 = W [P1] (X) ||
170 nop;
171 R0 >>>= 15;
172 R0 = R0 + R1;
173 W [P1++] = R0;
174
175 A block based update algorithm would be much faster but the
176 above can't be improved on much. Every instruction saved in
177 the loop above is 2 MIPs/ch! The for loop above is where the
178 Blackfin spends most of it's time - about 17 MIPs/ch measured
179 with speedtest.c with 256 taps (32ms). Write-back and
180 Write-through cache gave about the same performance.
181 */
182}
183
184/*
185 IDEAS for further optimisation of lms_adapt_bg():
186
187 1/ The rounding is quite costly. Could we keep as 32 bit coeffs
188 then make filter pluck the MS 16-bits of the coeffs when filtering?
189 However this would lower potential optimisation of filter, as I
190 think the dual-MAC architecture requires packed 16 bit coeffs.
191
192 2/ Block based update would be more efficient, as per comments above,
193 could use dual MAC architecture.
194
195 3/ Look for same sample Blackfin LMS code, see if we can get dual-MAC
196 packing.
197
198 4/ Execute the whole e/c in a block of say 20ms rather than sample
199 by sample. Processing a few samples every ms is inefficient.
200*/
201
202#else
203static __inline__ void lms_adapt_bg(echo_can_state_t *ec, int clean, int shift)
204{
205 int i;
206
207 int offset1;
208 int offset2;
209 int factor;
210 int exp;
211
212 if (shift > 0)
213 factor = clean << shift;
214 else
215 factor = clean >> -shift;
216
217 /* Update the FIR taps */
218
219 offset2 = ec->curr_pos;
220 offset1 = ec->taps - offset2;
221
222 for (i = ec->taps - 1; i >= offset1; i--)
223 {
224 exp = (ec->fir_state_bg.history[i - offset1]*factor);
225 ec->fir_taps16[1][i] += (int16_t) ((exp+(1<<14)) >> 15);
226 }
227 for ( ; i >= 0; i--)
228 {
229 exp = (ec->fir_state_bg.history[i + offset2]*factor);
230 ec->fir_taps16[1][i] += (int16_t) ((exp+(1<<14)) >> 15);
231 }
232}
233#endif
234
235/*- End of function --------------------------------------------------------*/
236
237echo_can_state_t *echo_can_create(int len, int adaption_mode)
238{
239 echo_can_state_t *ec;
240 int i;
241 int j;
242
243 ec = kmalloc(sizeof(*ec), GFP_KERNEL);
244 if (ec == NULL)
245 return NULL;
246 memset(ec, 0, sizeof(*ec));
247
248 ec->taps = len;
249 ec->log2taps = top_bit(len);
250 ec->curr_pos = ec->taps - 1;
251
252 for (i = 0; i < 2; i++)
253 {
254 if ((ec->fir_taps16[i] = (int16_t *) malloc((ec->taps)*sizeof(int16_t))) == NULL)
255 {
256 for (j = 0; j < i; j++)
257 kfree(ec->fir_taps16[j]);
258 kfree(ec);
259 return NULL;
260 }
261 memset(ec->fir_taps16[i], 0, (ec->taps)*sizeof(int16_t));
262 }
263
264 fir16_create(&ec->fir_state,
265 ec->fir_taps16[0],
266 ec->taps);
267 fir16_create(&ec->fir_state_bg,
268 ec->fir_taps16[1],
269 ec->taps);
270
271 for(i=0; i<5; i++) {
272 ec->xvtx[i] = ec->yvtx[i] = ec->xvrx[i] = ec->yvrx[i] = 0;
273 }
274
275 ec->cng_level = 1000;
276 echo_can_adaption_mode(ec, adaption_mode);
277
278 ec->snapshot = (int16_t*)malloc(ec->taps*sizeof(int16_t));
279 memset(ec->snapshot, 0, sizeof(int16_t)*ec->taps);
280
281 ec->cond_met = 0;
282 ec->Pstates = 0;
283 ec->Ltxacc = ec->Lrxacc = ec->Lcleanacc = ec->Lclean_bgacc = 0;
284 ec->Ltx = ec->Lrx = ec->Lclean = ec->Lclean_bg = 0;
285 ec->tx_1 = ec->tx_2 = ec->rx_1 = ec->rx_2 = 0;
286 ec->Lbgn = ec->Lbgn_acc = 0;
287 ec->Lbgn_upper = 200;
288 ec->Lbgn_upper_acc = ec->Lbgn_upper << 13;
289
290 return ec;
291}
292/*- End of function --------------------------------------------------------*/
293
294void echo_can_free(echo_can_state_t *ec)
295{
296 int i;
297
298 fir16_free(&ec->fir_state);
299 fir16_free(&ec->fir_state_bg);
300 for (i = 0; i < 2; i++)
301 kfree(ec->fir_taps16[i]);
302 kfree(ec->snapshot);
303 kfree(ec);
304}
305/*- End of function --------------------------------------------------------*/
306
307void echo_can_adaption_mode(echo_can_state_t *ec, int adaption_mode)
308{
309 ec->adaption_mode = adaption_mode;
310}
311/*- End of function --------------------------------------------------------*/
312
313void echo_can_flush(echo_can_state_t *ec)
314{
315 int i;
316
317 ec->Ltxacc = ec->Lrxacc = ec->Lcleanacc = ec->Lclean_bgacc = 0;
318 ec->Ltx = ec->Lrx = ec->Lclean = ec->Lclean_bg = 0;
319 ec->tx_1 = ec->tx_2 = ec->rx_1 = ec->rx_2 = 0;
320
321 ec->Lbgn = ec->Lbgn_acc = 0;
322 ec->Lbgn_upper = 200;
323 ec->Lbgn_upper_acc = ec->Lbgn_upper << 13;
324
325 ec->nonupdate_dwell = 0;
326
327 fir16_flush(&ec->fir_state);
328 fir16_flush(&ec->fir_state_bg);
329 ec->fir_state.curr_pos = ec->taps - 1;
330 ec->fir_state_bg.curr_pos = ec->taps - 1;
331 for (i = 0; i < 2; i++)
332 memset(ec->fir_taps16[i], 0, ec->taps*sizeof(int16_t));
333
334 ec->curr_pos = ec->taps - 1;
335 ec->Pstates = 0;
336}
337/*- End of function --------------------------------------------------------*/
338
339void echo_can_snapshot(echo_can_state_t *ec) {
340 memcpy(ec->snapshot, ec->fir_taps16[0], ec->taps*sizeof(int16_t));
341}
342/*- End of function --------------------------------------------------------*/
343
344/* Dual Path Echo Canceller ------------------------------------------------*/
345
346int16_t echo_can_update(echo_can_state_t *ec, int16_t tx, int16_t rx)
347{
348 int32_t echo_value;
349 int clean_bg;
350 int tmp, tmp1;
351
352 /* Input scaling was found be required to prevent problems when tx
353 starts clipping. Another possible way to handle this would be the
354 filter coefficent scaling. */
355
356 ec->tx = tx; ec->rx = rx;
357 tx >>=1;
358 rx >>=1;
359
360 /*
361 Filter DC, 3dB point is 160Hz (I think), note 32 bit precision required
362 otherwise values do not track down to 0. Zero at DC, Pole at (1-Beta)
363 only real axis. Some chip sets (like Si labs) don't need
364 this, but something like a $10 X100P card does. Any DC really slows
365 down convergence.
366
367 Note: removes some low frequency from the signal, this reduces
368 the speech quality when listening to samples through headphones
369 but may not be obvious through a telephone handset.
370
371 Note that the 3dB frequency in radians is approx Beta, e.g. for
372 Beta = 2^(-3) = 0.125, 3dB freq is 0.125 rads = 159Hz.
373 */
374
375 if (ec->adaption_mode & ECHO_CAN_USE_RX_HPF) {
376 tmp = rx << 15;
377#if 1
378 /* Make sure the gain of the HPF is 1.0. This can still saturate a little under
379 impulse conditions, and it might roll to 32768 and need clipping on sustained peak
380 level signals. However, the scale of such clipping is small, and the error due to
381 any saturation should not markedly affect the downstream processing. */
382 tmp -= (tmp >> 4);
383#endif
384 ec->rx_1 += -(ec->rx_1>>DC_LOG2BETA) + tmp - ec->rx_2;
385
386 /* hard limit filter to prevent clipping. Note that at this stage
387 rx should be limited to +/- 16383 due to right shift above */
388 tmp1 = ec->rx_1 >> 15;
389 if (tmp1 > 16383) tmp1 = 16383;
390 if (tmp1 < -16383) tmp1 = -16383;
391 rx = tmp1;
392 ec->rx_2 = tmp;
393 }
394
395 /* Block average of power in the filter states. Used for
396 adaption power calculation. */
397
398 {
399 int new, old;
400
401 /* efficient "out with the old and in with the new" algorithm so
402 we don't have to recalculate over the whole block of
403 samples. */
404 new = (int)tx * (int)tx;
405 old = (int)ec->fir_state.history[ec->fir_state.curr_pos] *
406 (int)ec->fir_state.history[ec->fir_state.curr_pos];
407 ec->Pstates += ((new - old) + (1<<ec->log2taps)) >> ec->log2taps;
408 if (ec->Pstates < 0) ec->Pstates = 0;
409 }
410
411 /* Calculate short term average levels using simple single pole IIRs */
412
413 ec->Ltxacc += abs(tx) - ec->Ltx;
414 ec->Ltx = (ec->Ltxacc + (1<<4)) >> 5;
415 ec->Lrxacc += abs(rx) - ec->Lrx;
416 ec->Lrx = (ec->Lrxacc + (1<<4)) >> 5;
417
418 /* Foreground filter ---------------------------------------------------*/
419
420 ec->fir_state.coeffs = ec->fir_taps16[0];
421 echo_value = fir16(&ec->fir_state, tx);
422 ec->clean = rx - echo_value;
423 ec->Lcleanacc += abs(ec->clean) - ec->Lclean;
424 ec->Lclean = (ec->Lcleanacc + (1<<4)) >> 5;
425
426 /* Background filter ---------------------------------------------------*/
427
428 echo_value = fir16(&ec->fir_state_bg, tx);
429 clean_bg = rx - echo_value;
430 ec->Lclean_bgacc += abs(clean_bg) - ec->Lclean_bg;
431 ec->Lclean_bg = (ec->Lclean_bgacc + (1<<4)) >> 5;
432
433 /* Background Filter adaption -----------------------------------------*/
434
435 /* Almost always adap bg filter, just simple DT and energy
436 detection to minimise adaption in cases of strong double talk.
437 However this is not critical for the dual path algorithm.
438 */
439 ec->factor = 0;
440 ec->shift = 0;
441 if ((ec->nonupdate_dwell == 0)) {
442 int P, logP, shift;
443
444 /* Determine:
445
446 f = Beta * clean_bg_rx/P ------ (1)
447
448 where P is the total power in the filter states.
449
450 The Boffins have shown that if we obey (1) we converge
451 quickly and avoid instability.
452
453 The correct factor f must be in Q30, as this is the fixed
454 point format required by the lms_adapt_bg() function,
455 therefore the scaled version of (1) is:
456
457 (2^30) * f = (2^30) * Beta * clean_bg_rx/P
458 factor = (2^30) * Beta * clean_bg_rx/P ----- (2)
459
460 We have chosen Beta = 0.25 by experiment, so:
461
462 factor = (2^30) * (2^-2) * clean_bg_rx/P
463
464 (30 - 2 - log2(P))
465 factor = clean_bg_rx 2 ----- (3)
466
467 To avoid a divide we approximate log2(P) as top_bit(P),
468 which returns the position of the highest non-zero bit in
469 P. This approximation introduces an error as large as a
470 factor of 2, but the algorithm seems to handle it OK.
471
472 Come to think of it a divide may not be a big deal on a
473 modern DSP, so its probably worth checking out the cycles
474 for a divide versus a top_bit() implementation.
475 */
476
477 P = MIN_TX_POWER_FOR_ADAPTION + ec->Pstates;
478 logP = top_bit(P) + ec->log2taps;
479 shift = 30 - 2 - logP;
480 ec->shift = shift;
481
482 lms_adapt_bg(ec, clean_bg, shift);
483 }
484
485 /* very simple DTD to make sure we dont try and adapt with strong
486 near end speech */
487
488 ec->adapt = 0;
489 if ((ec->Lrx > MIN_RX_POWER_FOR_ADAPTION) && (ec->Lrx > ec->Ltx))
490 ec->nonupdate_dwell = DTD_HANGOVER;
491 if (ec->nonupdate_dwell)
492 ec->nonupdate_dwell--;
493
494 /* Transfer logic ------------------------------------------------------*/
495
496 /* These conditions are from the dual path paper [1], I messed with
497 them a bit to improve performance. */
498
499 if ((ec->adaption_mode & ECHO_CAN_USE_ADAPTION) &&
500 (ec->nonupdate_dwell == 0) &&
501 (8*ec->Lclean_bg < 7*ec->Lclean) /* (ec->Lclean_bg < 0.875*ec->Lclean) */ &&
502 (8*ec->Lclean_bg < ec->Ltx) /* (ec->Lclean_bg < 0.125*ec->Ltx) */ )
503 {
504 if (ec->cond_met == 6) {
505 /* BG filter has had better results for 6 consecutive samples */
506 ec->adapt = 1;
507 memcpy(ec->fir_taps16[0], ec->fir_taps16[1], ec->taps*sizeof(int16_t));
508 }
509 else
510 ec->cond_met++;
511 }
512 else
513 ec->cond_met = 0;
514
515 /* Non-Linear Processing ---------------------------------------------------*/
516
517 ec->clean_nlp = ec->clean;
518 if (ec->adaption_mode & ECHO_CAN_USE_NLP)
519 {
520 /* Non-linear processor - a fancy way to say "zap small signals, to avoid
521 residual echo due to (uLaw/ALaw) non-linearity in the channel.". */
522
523 if ((16*ec->Lclean < ec->Ltx))
524 {
525 /* Our e/c has improved echo by at least 24 dB (each factor of 2 is 6dB,
526 so 2*2*2*2=16 is the same as 6+6+6+6=24dB) */
527 if (ec->adaption_mode & ECHO_CAN_USE_CNG)
528 {
529 ec->cng_level = ec->Lbgn;
530
531 /* Very elementary comfort noise generation. Just random
532 numbers rolled off very vaguely Hoth-like. DR: This
533 noise doesn't sound quite right to me - I suspect there
534 are some overlfow issues in the filtering as it's too
535 "crackly". TODO: debug this, maybe just play noise at
536 high level or look at spectrum.
537 */
538
539 ec->cng_rndnum = 1664525U*ec->cng_rndnum + 1013904223U;
540 ec->cng_filter = ((ec->cng_rndnum & 0xFFFF) - 32768 + 5*ec->cng_filter) >> 3;
541 ec->clean_nlp = (ec->cng_filter*ec->cng_level*8) >> 14;
542
543 }
544 else if (ec->adaption_mode & ECHO_CAN_USE_CLIP)
545 {
546 /* This sounds much better than CNG */
547 if (ec->clean_nlp > ec->Lbgn)
548 ec->clean_nlp = ec->Lbgn;
549 if (ec->clean_nlp < -ec->Lbgn)
550 ec->clean_nlp = -ec->Lbgn;
551 }
552 else
553 {
554 /* just mute the residual, doesn't sound very good, used mainly
555 in G168 tests */
556 ec->clean_nlp = 0;
557 }
558 }
559 else {
560 /* Background noise estimator. I tried a few algorithms
561 here without much luck. This very simple one seems to
562 work best, we just average the level using a slow (1 sec
563 time const) filter if the current level is less than a
564 (experimentally derived) constant. This means we dont
565 include high level signals like near end speech. When
566 combined with CNG or especially CLIP seems to work OK.
567 */
568 if (ec->Lclean < 40) {
569 ec->Lbgn_acc += abs(ec->clean) - ec->Lbgn;
570 ec->Lbgn = (ec->Lbgn_acc + (1<<11)) >> 12;
571 }
572 }
573 }
574
575 /* Roll around the taps buffer */
576 if (ec->curr_pos <= 0)
577 ec->curr_pos = ec->taps;
578 ec->curr_pos--;
579
580 if (ec->adaption_mode & ECHO_CAN_DISABLE)
581 ec->clean_nlp = rx;
582
583 /* Output scaled back up again to match input scaling */
584
585 return (int16_t) ec->clean_nlp << 1;
586}
587
588/*- End of function --------------------------------------------------------*/
589
590/* This function is seperated from the echo canceller is it is usually called
591 as part of the tx process. See rx HP (DC blocking) filter above, it's
592 the same design.
593
594 Some soft phones send speech signals with a lot of low frequency
595 energy, e.g. down to 20Hz. This can make the hybrid non-linear
596 which causes the echo canceller to fall over. This filter can help
597 by removing any low frequency before it gets to the tx port of the
598 hybrid.
599
600 It can also help by removing and DC in the tx signal. DC is bad
601 for LMS algorithms.
602
603 This is one of the classic DC removal filters, adjusted to provide sufficient
604 bass rolloff to meet the above requirement to protect hybrids from things that
605 upset them. The difference between successive samples produces a lousy HPF, and
606 then a suitably placed pole flattens things out. The final result is a nicely
607 rolled off bass end. The filtering is implemented with extended fractional
608 precision, which noise shapes things, giving very clean DC removal.
609*/
610
611int16_t echo_can_hpf_tx(echo_can_state_t *ec, int16_t tx) {
612 int tmp, tmp1;
613
614 if (ec->adaption_mode & ECHO_CAN_USE_TX_HPF) {
615 tmp = tx << 15;
616#if 1
617 /* Make sure the gain of the HPF is 1.0. The first can still saturate a little under
618 impulse conditions, and it might roll to 32768 and need clipping on sustained peak
619 level signals. However, the scale of such clipping is small, and the error due to
620 any saturation should not markedly affect the downstream processing. */
621 tmp -= (tmp >> 4);
622#endif
623 ec->tx_1 += -(ec->tx_1>>DC_LOG2BETA) + tmp - ec->tx_2;
624 tmp1 = ec->tx_1 >> 15;
625 if (tmp1 > 32767) tmp1 = 32767;
626 if (tmp1 < -32767) tmp1 = -32767;
627 tx = tmp1;
628 ec->tx_2 = tmp;
629 }
630
631 return tx;
632}
diff --git a/drivers/staging/echo/echo.h b/drivers/staging/echo/echo.h
new file mode 100644
index 00000000000..7a91b4390f3
--- /dev/null
+++ b/drivers/staging/echo/echo.h
@@ -0,0 +1,220 @@
1/*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * echo.c - A line echo canceller. This code is being developed
5 * against and partially complies with G168.
6 *
7 * Written by Steve Underwood <steveu@coppice.org>
8 * and David Rowe <david_at_rowetel_dot_com>
9 *
10 * Copyright (C) 2001 Steve Underwood and 2007 David Rowe
11 *
12 * All rights reserved.
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2, as
16 * published by the Free Software Foundation.
17 *
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 *
27 * $Id: echo.h,v 1.9 2006/10/24 13:45:28 steveu Exp $
28 */
29
30#ifndef __ECHO_H
31#define __ECHO_H
32
33/*! \page echo_can_page Line echo cancellation for voice
34
35\section echo_can_page_sec_1 What does it do?
36This module aims to provide G.168-2002 compliant echo cancellation, to remove
37electrical echoes (e.g. from 2-4 wire hybrids) from voice calls.
38
39\section echo_can_page_sec_2 How does it work?
40The heart of the echo cancellor is FIR filter. This is adapted to match the
41echo impulse response of the telephone line. It must be long enough to
42adequately cover the duration of that impulse response. The signal transmitted
43to the telephone line is passed through the FIR filter. Once the FIR is
44properly adapted, the resulting output is an estimate of the echo signal
45received from the line. This is subtracted from the received signal. The result
46is an estimate of the signal which originated at the far end of the line, free
47from echos of our own transmitted signal.
48
49The least mean squares (LMS) algorithm is attributed to Widrow and Hoff, and
50was introduced in 1960. It is the commonest form of filter adaption used in
51things like modem line equalisers and line echo cancellers. There it works very
52well. However, it only works well for signals of constant amplitude. It works
53very poorly for things like speech echo cancellation, where the signal level
54varies widely. This is quite easy to fix. If the signal level is normalised -
55similar to applying AGC - LMS can work as well for a signal of varying
56amplitude as it does for a modem signal. This normalised least mean squares
57(NLMS) algorithm is the commonest one used for speech echo cancellation. Many
58other algorithms exist - e.g. RLS (essentially the same as Kalman filtering),
59FAP, etc. Some perform significantly better than NLMS. However, factors such
60as computational complexity and patents favour the use of NLMS.
61
62A simple refinement to NLMS can improve its performance with speech. NLMS tends
63to adapt best to the strongest parts of a signal. If the signal is white noise,
64the NLMS algorithm works very well. However, speech has more low frequency than
65high frequency content. Pre-whitening (i.e. filtering the signal to flatten its
66spectrum) the echo signal improves the adapt rate for speech, and ensures the
67final residual signal is not heavily biased towards high frequencies. A very
68low complexity filter is adequate for this, so pre-whitening adds little to the
69compute requirements of the echo canceller.
70
71An FIR filter adapted using pre-whitened NLMS performs well, provided certain
72conditions are met:
73
74 - The transmitted signal has poor self-correlation.
75 - There is no signal being generated within the environment being
76 cancelled.
77
78The difficulty is that neither of these can be guaranteed.
79
80If the adaption is performed while transmitting noise (or something fairly
81noise like, such as voice) the adaption works very well. If the adaption is
82performed while transmitting something highly correlative (typically narrow
83band energy such as signalling tones or DTMF), the adaption can go seriously
84wrong. The reason is there is only one solution for the adaption on a near
85random signal - the impulse response of the line. For a repetitive signal,
86there are any number of solutions which converge the adaption, and nothing
87guides the adaption to choose the generalised one. Allowing an untrained
88canceller to converge on this kind of narrowband energy probably a good thing,
89since at least it cancels the tones. Allowing a well converged canceller to
90continue converging on such energy is just a way to ruin its generalised
91adaption. A narrowband detector is needed, so adapation can be suspended at
92appropriate times.
93
94The adaption process is based on trying to eliminate the received signal. When
95there is any signal from within the environment being cancelled it may upset
96the adaption process. Similarly, if the signal we are transmitting is small,
97noise may dominate and disturb the adaption process. If we can ensure that the
98adaption is only performed when we are transmitting a significant signal level,
99and the environment is not, things will be OK. Clearly, it is easy to tell when
100we are sending a significant signal. Telling, if the environment is generating
101a significant signal, and doing it with sufficient speed that the adaption will
102not have diverged too much more we stop it, is a little harder.
103
104The key problem in detecting when the environment is sourcing significant
105energy is that we must do this very quickly. Given a reasonably long sample of
106the received signal, there are a number of strategies which may be used to
107assess whether that signal contains a strong far end component. However, by the
108time that assessment is complete the far end signal will have already caused
109major mis-convergence in the adaption process. An assessment algorithm is
110needed which produces a fairly accurate result from a very short burst of far
111end energy.
112
113\section echo_can_page_sec_3 How do I use it?
114The echo cancellor processes both the transmit and receive streams sample by
115sample. The processing function is not declared inline. Unfortunately,
116cancellation requires many operations per sample, so the call overhead is only
117a minor burden.
118*/
119
120#include "fir.h"
121
122/* Mask bits for the adaption mode */
123#define ECHO_CAN_USE_ADAPTION 0x01
124#define ECHO_CAN_USE_NLP 0x02
125#define ECHO_CAN_USE_CNG 0x04
126#define ECHO_CAN_USE_CLIP 0x08
127#define ECHO_CAN_USE_TX_HPF 0x10
128#define ECHO_CAN_USE_RX_HPF 0x20
129#define ECHO_CAN_DISABLE 0x40
130
131/*!
132 G.168 echo canceller descriptor. This defines the working state for a line
133 echo canceller.
134*/
135typedef struct
136{
137 int16_t tx,rx;
138 int16_t clean;
139 int16_t clean_nlp;
140
141 int nonupdate_dwell;
142 int curr_pos;
143 int taps;
144 int log2taps;
145 int adaption_mode;
146
147 int cond_met;
148 int32_t Pstates;
149 int16_t adapt;
150 int32_t factor;
151 int16_t shift;
152
153 /* Average levels and averaging filter states */
154 int Ltxacc, Lrxacc, Lcleanacc, Lclean_bgacc;
155 int Ltx, Lrx;
156 int Lclean;
157 int Lclean_bg;
158 int Lbgn, Lbgn_acc, Lbgn_upper, Lbgn_upper_acc;
159
160 /* foreground and background filter states */
161 fir16_state_t fir_state;
162 fir16_state_t fir_state_bg;
163 int16_t *fir_taps16[2];
164
165 /* DC blocking filter states */
166 int tx_1, tx_2, rx_1, rx_2;
167
168 /* optional High Pass Filter states */
169 int32_t xvtx[5], yvtx[5];
170 int32_t xvrx[5], yvrx[5];
171
172 /* Parameters for the optional Hoth noise generator */
173 int cng_level;
174 int cng_rndnum;
175 int cng_filter;
176
177 /* snapshot sample of coeffs used for development */
178 int16_t *snapshot;
179} echo_can_state_t;
180
181/*! Create a voice echo canceller context.
182 \param len The length of the canceller, in samples.
183 \return The new canceller context, or NULL if the canceller could not be created.
184*/
185echo_can_state_t *echo_can_create(int len, int adaption_mode);
186
187/*! Free a voice echo canceller context.
188 \param ec The echo canceller context.
189*/
190void echo_can_free(echo_can_state_t *ec);
191
192/*! Flush (reinitialise) a voice echo canceller context.
193 \param ec The echo canceller context.
194*/
195void echo_can_flush(echo_can_state_t *ec);
196
197/*! Set the adaption mode of a voice echo canceller context.
198 \param ec The echo canceller context.
199 \param adapt The mode.
200*/
201void echo_can_adaption_mode(echo_can_state_t *ec, int adaption_mode);
202
203void echo_can_snapshot(echo_can_state_t *ec);
204
205/*! Process a sample through a voice echo canceller.
206 \param ec The echo canceller context.
207 \param tx The transmitted audio sample.
208 \param rx The received audio sample.
209 \return The clean (echo cancelled) received sample.
210*/
211int16_t echo_can_update(echo_can_state_t *ec, int16_t tx, int16_t rx);
212
213/*! Process to high pass filter the tx signal.
214 \param ec The echo canceller context.
215 \param tx The transmitted auio sample.
216 \return The HP filtered transmit sample, send this to your D/A.
217*/
218int16_t echo_can_hpf_tx(echo_can_state_t *ec, int16_t tx);
219
220#endif /* __ECHO_H */
diff --git a/drivers/staging/echo/fir.h b/drivers/staging/echo/fir.h
new file mode 100644
index 00000000000..e1bfc499488
--- /dev/null
+++ b/drivers/staging/echo/fir.h
@@ -0,0 +1,369 @@
1/*
2 * SpanDSP - a series of DSP components for telephony
3 *
4 * fir.h - General telephony FIR routines
5 *
6 * Written by Steve Underwood <steveu@coppice.org>
7 *
8 * Copyright (C) 2002 Steve Underwood
9 *
10 * All rights reserved.
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2, as
14 * published by the Free Software Foundation.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 *
25 * $Id: fir.h,v 1.8 2006/10/24 13:45:28 steveu Exp $
26 */
27
28/*! \page fir_page FIR filtering
29\section fir_page_sec_1 What does it do?
30???.
31
32\section fir_page_sec_2 How does it work?
33???.
34*/
35
36#if !defined(_FIR_H_)
37#define _FIR_H_
38
39/*
40 Blackfin NOTES & IDEAS:
41
42 A simple dot product function is used to implement the filter. This performs
43 just one MAC/cycle which is inefficient but was easy to implement as a first
44 pass. The current Blackfin code also uses an unrolled form of the filter
45 history to avoid 0 length hardware loop issues. This is wasteful of
46 memory.
47
48 Ideas for improvement:
49
50 1/ Rewrite filter for dual MAC inner loop. The issue here is handling
51 history sample offsets that are 16 bit aligned - the dual MAC needs
52 32 bit aligmnent. There are some good examples in libbfdsp.
53
54 2/ Use the hardware circular buffer facility tohalve memory usage.
55
56 3/ Consider using internal memory.
57
58 Using less memory might also improve speed as cache misses will be
59 reduced. A drop in MIPs and memory approaching 50% should be
60 possible.
61
62 The foreground and background filters currenlty use a total of
63 about 10 MIPs/ch as measured with speedtest.c on a 256 TAP echo
64 can.
65*/
66
67#if defined(USE_MMX) || defined(USE_SSE2)
68#include "mmx.h"
69#endif
70
71/*!
72 16 bit integer FIR descriptor. This defines the working state for a single
73 instance of an FIR filter using 16 bit integer coefficients.
74*/
75typedef struct
76{
77 int taps;
78 int curr_pos;
79 const int16_t *coeffs;
80 int16_t *history;
81} fir16_state_t;
82
83/*!
84 32 bit integer FIR descriptor. This defines the working state for a single
85 instance of an FIR filter using 32 bit integer coefficients, and filtering
86 16 bit integer data.
87*/
88typedef struct
89{
90 int taps;
91 int curr_pos;
92 const int32_t *coeffs;
93 int16_t *history;
94} fir32_state_t;
95
96/*!
97 Floating point FIR descriptor. This defines the working state for a single
98 instance of an FIR filter using floating point coefficients and data.
99*/
100typedef struct
101{
102 int taps;
103 int curr_pos;
104 const float *coeffs;
105 float *history;
106} fir_float_state_t;
107
108#ifdef __cplusplus
109extern "C" {
110#endif
111
112static __inline__ const int16_t *fir16_create(fir16_state_t *fir,
113 const int16_t *coeffs,
114 int taps)
115{
116 fir->taps = taps;
117 fir->curr_pos = taps - 1;
118 fir->coeffs = coeffs;
119#if defined(USE_MMX) || defined(USE_SSE2) || defined(__BLACKFIN_ASM__)
120 if ((fir->history = malloc(2*taps*sizeof(int16_t))))
121 memset(fir->history, 0, 2*taps*sizeof(int16_t));
122#else
123 if ((fir->history = (int16_t *) malloc(taps*sizeof(int16_t))))
124 memset(fir->history, 0, taps*sizeof(int16_t));
125#endif
126 return fir->history;
127}
128/*- End of function --------------------------------------------------------*/
129
130static __inline__ void fir16_flush(fir16_state_t *fir)
131{
132#if defined(USE_MMX) || defined(USE_SSE2) || defined(__BLACKFIN_ASM__)
133 memset(fir->history, 0, 2*fir->taps*sizeof(int16_t));
134#else
135 memset(fir->history, 0, fir->taps*sizeof(int16_t));
136#endif
137}
138/*- End of function --------------------------------------------------------*/
139
140static __inline__ void fir16_free(fir16_state_t *fir)
141{
142 free(fir->history);
143}
144/*- End of function --------------------------------------------------------*/
145
146#ifdef __BLACKFIN_ASM__
147static inline int32_t dot_asm(short *x, short *y, int len)
148{
149 int dot;
150
151 len--;
152
153 __asm__
154 (
155 "I0 = %1;\n\t"
156 "I1 = %2;\n\t"
157 "A0 = 0;\n\t"
158 "R0.L = W[I0++] || R1.L = W[I1++];\n\t"
159 "LOOP dot%= LC0 = %3;\n\t"
160 "LOOP_BEGIN dot%=;\n\t"
161 "A0 += R0.L * R1.L (IS) || R0.L = W[I0++] || R1.L = W[I1++];\n\t"
162 "LOOP_END dot%=;\n\t"
163 "A0 += R0.L*R1.L (IS);\n\t"
164 "R0 = A0;\n\t"
165 "%0 = R0;\n\t"
166 : "=&d" (dot)
167 : "a" (x), "a" (y), "a" (len)
168 : "I0", "I1", "A1", "A0", "R0", "R1"
169 );
170
171 return dot;
172}
173#endif
174/*- End of function --------------------------------------------------------*/
175
176static __inline__ int16_t fir16(fir16_state_t *fir, int16_t sample)
177{
178 int32_t y;
179#if defined(USE_MMX)
180 int i;
181 mmx_t *mmx_coeffs;
182 mmx_t *mmx_hist;
183
184 fir->history[fir->curr_pos] = sample;
185 fir->history[fir->curr_pos + fir->taps] = sample;
186
187 mmx_coeffs = (mmx_t *) fir->coeffs;
188 mmx_hist = (mmx_t *) &fir->history[fir->curr_pos];
189 i = fir->taps;
190 pxor_r2r(mm4, mm4);
191 /* 8 samples per iteration, so the filter must be a multiple of 8 long. */
192 while (i > 0)
193 {
194 movq_m2r(mmx_coeffs[0], mm0);
195 movq_m2r(mmx_coeffs[1], mm2);
196 movq_m2r(mmx_hist[0], mm1);
197 movq_m2r(mmx_hist[1], mm3);
198 mmx_coeffs += 2;
199 mmx_hist += 2;
200 pmaddwd_r2r(mm1, mm0);
201 pmaddwd_r2r(mm3, mm2);
202 paddd_r2r(mm0, mm4);
203 paddd_r2r(mm2, mm4);
204 i -= 8;
205 }
206 movq_r2r(mm4, mm0);
207 psrlq_i2r(32, mm0);
208 paddd_r2r(mm0, mm4);
209 movd_r2m(mm4, y);
210 emms();
211#elif defined(USE_SSE2)
212 int i;
213 xmm_t *xmm_coeffs;
214 xmm_t *xmm_hist;
215
216 fir->history[fir->curr_pos] = sample;
217 fir->history[fir->curr_pos + fir->taps] = sample;
218
219 xmm_coeffs = (xmm_t *) fir->coeffs;
220 xmm_hist = (xmm_t *) &fir->history[fir->curr_pos];
221 i = fir->taps;
222 pxor_r2r(xmm4, xmm4);
223 /* 16 samples per iteration, so the filter must be a multiple of 16 long. */
224 while (i > 0)
225 {
226 movdqu_m2r(xmm_coeffs[0], xmm0);
227 movdqu_m2r(xmm_coeffs[1], xmm2);
228 movdqu_m2r(xmm_hist[0], xmm1);
229 movdqu_m2r(xmm_hist[1], xmm3);
230 xmm_coeffs += 2;
231 xmm_hist += 2;
232 pmaddwd_r2r(xmm1, xmm0);
233 pmaddwd_r2r(xmm3, xmm2);
234 paddd_r2r(xmm0, xmm4);
235 paddd_r2r(xmm2, xmm4);
236 i -= 16;
237 }
238 movdqa_r2r(xmm4, xmm0);
239 psrldq_i2r(8, xmm0);
240 paddd_r2r(xmm0, xmm4);
241 movdqa_r2r(xmm4, xmm0);
242 psrldq_i2r(4, xmm0);
243 paddd_r2r(xmm0, xmm4);
244 movd_r2m(xmm4, y);
245#elif defined(__BLACKFIN_ASM__)
246 fir->history[fir->curr_pos] = sample;
247 fir->history[fir->curr_pos + fir->taps] = sample;
248 y = dot_asm((int16_t*)fir->coeffs, &fir->history[fir->curr_pos], fir->taps);
249#else
250 int i;
251 int offset1;
252 int offset2;
253
254 fir->history[fir->curr_pos] = sample;
255
256 offset2 = fir->curr_pos;
257 offset1 = fir->taps - offset2;
258 y = 0;
259 for (i = fir->taps - 1; i >= offset1; i--)
260 y += fir->coeffs[i]*fir->history[i - offset1];
261 for ( ; i >= 0; i--)
262 y += fir->coeffs[i]*fir->history[i + offset2];
263#endif
264 if (fir->curr_pos <= 0)
265 fir->curr_pos = fir->taps;
266 fir->curr_pos--;
267 return (int16_t) (y >> 15);
268}
269/*- End of function --------------------------------------------------------*/
270
271static __inline__ const int16_t *fir32_create(fir32_state_t *fir,
272 const int32_t *coeffs,
273 int taps)
274{
275 fir->taps = taps;
276 fir->curr_pos = taps - 1;
277 fir->coeffs = coeffs;
278 fir->history = (int16_t *) malloc(taps*sizeof(int16_t));
279 if (fir->history)
280 memset(fir->history, '\0', taps*sizeof(int16_t));
281 return fir->history;
282}
283/*- End of function --------------------------------------------------------*/
284
285static __inline__ void fir32_flush(fir32_state_t *fir)
286{
287 memset(fir->history, 0, fir->taps*sizeof(int16_t));
288}
289/*- End of function --------------------------------------------------------*/
290
291static __inline__ void fir32_free(fir32_state_t *fir)
292{
293 free(fir->history);
294}
295/*- End of function --------------------------------------------------------*/
296
297static __inline__ int16_t fir32(fir32_state_t *fir, int16_t sample)
298{
299 int i;
300 int32_t y;
301 int offset1;
302 int offset2;
303
304 fir->history[fir->curr_pos] = sample;
305 offset2 = fir->curr_pos;
306 offset1 = fir->taps - offset2;
307 y = 0;
308 for (i = fir->taps - 1; i >= offset1; i--)
309 y += fir->coeffs[i]*fir->history[i - offset1];
310 for ( ; i >= 0; i--)
311 y += fir->coeffs[i]*fir->history[i + offset2];
312 if (fir->curr_pos <= 0)
313 fir->curr_pos = fir->taps;
314 fir->curr_pos--;
315 return (int16_t) (y >> 15);
316}
317/*- End of function --------------------------------------------------------*/
318
319#ifndef __KERNEL__
320static __inline__ const float *fir_float_create(fir_float_state_t *fir,
321 const float *coeffs,
322 int taps)
323{
324 fir->taps = taps;
325 fir->curr_pos = taps - 1;
326 fir->coeffs = coeffs;
327 fir->history = (float *) malloc(taps*sizeof(float));
328 if (fir->history)
329 memset(fir->history, '\0', taps*sizeof(float));
330 return fir->history;
331}
332/*- End of function --------------------------------------------------------*/
333
334static __inline__ void fir_float_free(fir_float_state_t *fir)
335{
336 free(fir->history);
337}
338/*- End of function --------------------------------------------------------*/
339
340static __inline__ int16_t fir_float(fir_float_state_t *fir, int16_t sample)
341{
342 int i;
343 float y;
344 int offset1;
345 int offset2;
346
347 fir->history[fir->curr_pos] = sample;
348
349 offset2 = fir->curr_pos;
350 offset1 = fir->taps - offset2;
351 y = 0;
352 for (i = fir->taps - 1; i >= offset1; i--)
353 y += fir->coeffs[i]*fir->history[i - offset1];
354 for ( ; i >= 0; i--)
355 y += fir->coeffs[i]*fir->history[i + offset2];
356 if (fir->curr_pos <= 0)
357 fir->curr_pos = fir->taps;
358 fir->curr_pos--;
359 return (int16_t) y;
360}
361/*- End of function --------------------------------------------------------*/
362#endif
363
364#ifdef __cplusplus
365}
366#endif
367
368#endif
369/*- End of file ------------------------------------------------------------*/
diff --git a/drivers/staging/echo/mmx.h b/drivers/staging/echo/mmx.h
new file mode 100644
index 00000000000..b5a3964865b
--- /dev/null
+++ b/drivers/staging/echo/mmx.h
@@ -0,0 +1,288 @@
1/*
2 * mmx.h
3 * Copyright (C) 1997-2001 H. Dietz and R. Fisher
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21#ifndef AVCODEC_I386MMX_H
22#define AVCODEC_I386MMX_H
23
24/*
25 * The type of an value that fits in an MMX register (note that long
26 * long constant values MUST be suffixed by LL and unsigned long long
27 * values by ULL, lest they be truncated by the compiler)
28 */
29
30typedef union {
31 long long q; /* Quadword (64-bit) value */
32 unsigned long long uq; /* Unsigned Quadword */
33 int d[2]; /* 2 Doubleword (32-bit) values */
34 unsigned int ud[2]; /* 2 Unsigned Doubleword */
35 short w[4]; /* 4 Word (16-bit) values */
36 unsigned short uw[4]; /* 4 Unsigned Word */
37 char b[8]; /* 8 Byte (8-bit) values */
38 unsigned char ub[8]; /* 8 Unsigned Byte */
39 float s[2]; /* Single-precision (32-bit) value */
40} mmx_t; /* On an 8-byte (64-bit) boundary */
41
42/* SSE registers */
43typedef union {
44 char b[16];
45} xmm_t;
46
47
48#define mmx_i2r(op,imm,reg) \
49 __asm__ __volatile__ (#op " %0, %%" #reg \
50 : /* nothing */ \
51 : "i" (imm) )
52
53#define mmx_m2r(op,mem,reg) \
54 __asm__ __volatile__ (#op " %0, %%" #reg \
55 : /* nothing */ \
56 : "m" (mem))
57
58#define mmx_r2m(op,reg,mem) \
59 __asm__ __volatile__ (#op " %%" #reg ", %0" \
60 : "=m" (mem) \
61 : /* nothing */ )
62
63#define mmx_r2r(op,regs,regd) \
64 __asm__ __volatile__ (#op " %" #regs ", %" #regd)
65
66
67#define emms() __asm__ __volatile__ ("emms")
68
69#define movd_m2r(var,reg) mmx_m2r (movd, var, reg)
70#define movd_r2m(reg,var) mmx_r2m (movd, reg, var)
71#define movd_r2r(regs,regd) mmx_r2r (movd, regs, regd)
72
73#define movq_m2r(var,reg) mmx_m2r (movq, var, reg)
74#define movq_r2m(reg,var) mmx_r2m (movq, reg, var)
75#define movq_r2r(regs,regd) mmx_r2r (movq, regs, regd)
76
77#define packssdw_m2r(var,reg) mmx_m2r (packssdw, var, reg)
78#define packssdw_r2r(regs,regd) mmx_r2r (packssdw, regs, regd)
79#define packsswb_m2r(var,reg) mmx_m2r (packsswb, var, reg)
80#define packsswb_r2r(regs,regd) mmx_r2r (packsswb, regs, regd)
81
82#define packuswb_m2r(var,reg) mmx_m2r (packuswb, var, reg)
83#define packuswb_r2r(regs,regd) mmx_r2r (packuswb, regs, regd)
84
85#define paddb_m2r(var,reg) mmx_m2r (paddb, var, reg)
86#define paddb_r2r(regs,regd) mmx_r2r (paddb, regs, regd)
87#define paddd_m2r(var,reg) mmx_m2r (paddd, var, reg)
88#define paddd_r2r(regs,regd) mmx_r2r (paddd, regs, regd)
89#define paddw_m2r(var,reg) mmx_m2r (paddw, var, reg)
90#define paddw_r2r(regs,regd) mmx_r2r (paddw, regs, regd)
91
92#define paddsb_m2r(var,reg) mmx_m2r (paddsb, var, reg)
93#define paddsb_r2r(regs,regd) mmx_r2r (paddsb, regs, regd)
94#define paddsw_m2r(var,reg) mmx_m2r (paddsw, var, reg)
95#define paddsw_r2r(regs,regd) mmx_r2r (paddsw, regs, regd)
96
97#define paddusb_m2r(var,reg) mmx_m2r (paddusb, var, reg)
98#define paddusb_r2r(regs,regd) mmx_r2r (paddusb, regs, regd)
99#define paddusw_m2r(var,reg) mmx_m2r (paddusw, var, reg)
100#define paddusw_r2r(regs,regd) mmx_r2r (paddusw, regs, regd)
101
102#define pand_m2r(var,reg) mmx_m2r (pand, var, reg)
103#define pand_r2r(regs,regd) mmx_r2r (pand, regs, regd)
104
105#define pandn_m2r(var,reg) mmx_m2r (pandn, var, reg)
106#define pandn_r2r(regs,regd) mmx_r2r (pandn, regs, regd)
107
108#define pcmpeqb_m2r(var,reg) mmx_m2r (pcmpeqb, var, reg)
109#define pcmpeqb_r2r(regs,regd) mmx_r2r (pcmpeqb, regs, regd)
110#define pcmpeqd_m2r(var,reg) mmx_m2r (pcmpeqd, var, reg)
111#define pcmpeqd_r2r(regs,regd) mmx_r2r (pcmpeqd, regs, regd)
112#define pcmpeqw_m2r(var,reg) mmx_m2r (pcmpeqw, var, reg)
113#define pcmpeqw_r2r(regs,regd) mmx_r2r (pcmpeqw, regs, regd)
114
115#define pcmpgtb_m2r(var,reg) mmx_m2r (pcmpgtb, var, reg)
116#define pcmpgtb_r2r(regs,regd) mmx_r2r (pcmpgtb, regs, regd)
117#define pcmpgtd_m2r(var,reg) mmx_m2r (pcmpgtd, var, reg)
118#define pcmpgtd_r2r(regs,regd) mmx_r2r (pcmpgtd, regs, regd)
119#define pcmpgtw_m2r(var,reg) mmx_m2r (pcmpgtw, var, reg)
120#define pcmpgtw_r2r(regs,regd) mmx_r2r (pcmpgtw, regs, regd)
121
122#define pmaddwd_m2r(var,reg) mmx_m2r (pmaddwd, var, reg)
123#define pmaddwd_r2r(regs,regd) mmx_r2r (pmaddwd, regs, regd)
124
125#define pmulhw_m2r(var,reg) mmx_m2r (pmulhw, var, reg)
126#define pmulhw_r2r(regs,regd) mmx_r2r (pmulhw, regs, regd)
127
128#define pmullw_m2r(var,reg) mmx_m2r (pmullw, var, reg)
129#define pmullw_r2r(regs,regd) mmx_r2r (pmullw, regs, regd)
130
131#define por_m2r(var,reg) mmx_m2r (por, var, reg)
132#define por_r2r(regs,regd) mmx_r2r (por, regs, regd)
133
134#define pslld_i2r(imm,reg) mmx_i2r (pslld, imm, reg)
135#define pslld_m2r(var,reg) mmx_m2r (pslld, var, reg)
136#define pslld_r2r(regs,regd) mmx_r2r (pslld, regs, regd)
137#define psllq_i2r(imm,reg) mmx_i2r (psllq, imm, reg)
138#define psllq_m2r(var,reg) mmx_m2r (psllq, var, reg)
139#define psllq_r2r(regs,regd) mmx_r2r (psllq, regs, regd)
140#define psllw_i2r(imm,reg) mmx_i2r (psllw, imm, reg)
141#define psllw_m2r(var,reg) mmx_m2r (psllw, var, reg)
142#define psllw_r2r(regs,regd) mmx_r2r (psllw, regs, regd)
143
144#define psrad_i2r(imm,reg) mmx_i2r (psrad, imm, reg)
145#define psrad_m2r(var,reg) mmx_m2r (psrad, var, reg)
146#define psrad_r2r(regs,regd) mmx_r2r (psrad, regs, regd)
147#define psraw_i2r(imm,reg) mmx_i2r (psraw, imm, reg)
148#define psraw_m2r(var,reg) mmx_m2r (psraw, var, reg)
149#define psraw_r2r(regs,regd) mmx_r2r (psraw, regs, regd)
150
151#define psrld_i2r(imm,reg) mmx_i2r (psrld, imm, reg)
152#define psrld_m2r(var,reg) mmx_m2r (psrld, var, reg)
153#define psrld_r2r(regs,regd) mmx_r2r (psrld, regs, regd)
154#define psrlq_i2r(imm,reg) mmx_i2r (psrlq, imm, reg)
155#define psrlq_m2r(var,reg) mmx_m2r (psrlq, var, reg)
156#define psrlq_r2r(regs,regd) mmx_r2r (psrlq, regs, regd)
157#define psrlw_i2r(imm,reg) mmx_i2r (psrlw, imm, reg)
158#define psrlw_m2r(var,reg) mmx_m2r (psrlw, var, reg)
159#define psrlw_r2r(regs,regd) mmx_r2r (psrlw, regs, regd)
160
161#define psubb_m2r(var,reg) mmx_m2r (psubb, var, reg)
162#define psubb_r2r(regs,regd) mmx_r2r (psubb, regs, regd)
163#define psubd_m2r(var,reg) mmx_m2r (psubd, var, reg)
164#define psubd_r2r(regs,regd) mmx_r2r (psubd, regs, regd)
165#define psubw_m2r(var,reg) mmx_m2r (psubw, var, reg)
166#define psubw_r2r(regs,regd) mmx_r2r (psubw, regs, regd)
167
168#define psubsb_m2r(var,reg) mmx_m2r (psubsb, var, reg)
169#define psubsb_r2r(regs,regd) mmx_r2r (psubsb, regs, regd)
170#define psubsw_m2r(var,reg) mmx_m2r (psubsw, var, reg)
171#define psubsw_r2r(regs,regd) mmx_r2r (psubsw, regs, regd)
172
173#define psubusb_m2r(var,reg) mmx_m2r (psubusb, var, reg)
174#define psubusb_r2r(regs,regd) mmx_r2r (psubusb, regs, regd)
175#define psubusw_m2r(var,reg) mmx_m2r (psubusw, var, reg)
176#define psubusw_r2r(regs,regd) mmx_r2r (psubusw, regs, regd)
177
178#define punpckhbw_m2r(var,reg) mmx_m2r (punpckhbw, var, reg)
179#define punpckhbw_r2r(regs,regd) mmx_r2r (punpckhbw, regs, regd)
180#define punpckhdq_m2r(var,reg) mmx_m2r (punpckhdq, var, reg)
181#define punpckhdq_r2r(regs,regd) mmx_r2r (punpckhdq, regs, regd)
182#define punpckhwd_m2r(var,reg) mmx_m2r (punpckhwd, var, reg)
183#define punpckhwd_r2r(regs,regd) mmx_r2r (punpckhwd, regs, regd)
184
185#define punpcklbw_m2r(var,reg) mmx_m2r (punpcklbw, var, reg)
186#define punpcklbw_r2r(regs,regd) mmx_r2r (punpcklbw, regs, regd)
187#define punpckldq_m2r(var,reg) mmx_m2r (punpckldq, var, reg)
188#define punpckldq_r2r(regs,regd) mmx_r2r (punpckldq, regs, regd)
189#define punpcklwd_m2r(var,reg) mmx_m2r (punpcklwd, var, reg)
190#define punpcklwd_r2r(regs,regd) mmx_r2r (punpcklwd, regs, regd)
191
192#define pxor_m2r(var,reg) mmx_m2r (pxor, var, reg)
193#define pxor_r2r(regs,regd) mmx_r2r (pxor, regs, regd)
194
195
196/* 3DNOW extensions */
197
198#define pavgusb_m2r(var,reg) mmx_m2r (pavgusb, var, reg)
199#define pavgusb_r2r(regs,regd) mmx_r2r (pavgusb, regs, regd)
200
201
202/* AMD MMX extensions - also available in intel SSE */
203
204
205#define mmx_m2ri(op,mem,reg,imm) \
206 __asm__ __volatile__ (#op " %1, %0, %%" #reg \
207 : /* nothing */ \
208 : "m" (mem), "i" (imm))
209#define mmx_r2ri(op,regs,regd,imm) \
210 __asm__ __volatile__ (#op " %0, %%" #regs ", %%" #regd \
211 : /* nothing */ \
212 : "i" (imm) )
213
214#define mmx_fetch(mem,hint) \
215 __asm__ __volatile__ ("prefetch" #hint " %0" \
216 : /* nothing */ \
217 : "m" (mem))
218
219
220#define maskmovq(regs,maskreg) mmx_r2ri (maskmovq, regs, maskreg)
221
222#define movntq_r2m(mmreg,var) mmx_r2m (movntq, mmreg, var)
223
224#define pavgb_m2r(var,reg) mmx_m2r (pavgb, var, reg)
225#define pavgb_r2r(regs,regd) mmx_r2r (pavgb, regs, regd)
226#define pavgw_m2r(var,reg) mmx_m2r (pavgw, var, reg)
227#define pavgw_r2r(regs,regd) mmx_r2r (pavgw, regs, regd)
228
229#define pextrw_r2r(mmreg,reg,imm) mmx_r2ri (pextrw, mmreg, reg, imm)
230
231#define pinsrw_r2r(reg,mmreg,imm) mmx_r2ri (pinsrw, reg, mmreg, imm)
232
233#define pmaxsw_m2r(var,reg) mmx_m2r (pmaxsw, var, reg)
234#define pmaxsw_r2r(regs,regd) mmx_r2r (pmaxsw, regs, regd)
235
236#define pmaxub_m2r(var,reg) mmx_m2r (pmaxub, var, reg)
237#define pmaxub_r2r(regs,regd) mmx_r2r (pmaxub, regs, regd)
238
239#define pminsw_m2r(var,reg) mmx_m2r (pminsw, var, reg)
240#define pminsw_r2r(regs,regd) mmx_r2r (pminsw, regs, regd)
241
242#define pminub_m2r(var,reg) mmx_m2r (pminub, var, reg)
243#define pminub_r2r(regs,regd) mmx_r2r (pminub, regs, regd)
244
245#define pmovmskb(mmreg,reg) \
246 __asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg)
247
248#define pmulhuw_m2r(var,reg) mmx_m2r (pmulhuw, var, reg)
249#define pmulhuw_r2r(regs,regd) mmx_r2r (pmulhuw, regs, regd)
250
251#define prefetcht0(mem) mmx_fetch (mem, t0)
252#define prefetcht1(mem) mmx_fetch (mem, t1)
253#define prefetcht2(mem) mmx_fetch (mem, t2)
254#define prefetchnta(mem) mmx_fetch (mem, nta)
255
256#define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg)
257#define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd)
258
259#define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm)
260#define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm)
261
262#define sfence() __asm__ __volatile__ ("sfence\n\t")
263
264/* SSE2 */
265#define pshufhw_m2r(var,reg,imm) mmx_m2ri(pshufhw, var, reg, imm)
266#define pshufhw_r2r(regs,regd,imm) mmx_r2ri(pshufhw, regs, regd, imm)
267#define pshuflw_m2r(var,reg,imm) mmx_m2ri(pshuflw, var, reg, imm)
268#define pshuflw_r2r(regs,regd,imm) mmx_r2ri(pshuflw, regs, regd, imm)
269
270#define pshufd_r2r(regs,regd,imm) mmx_r2ri(pshufd, regs, regd, imm)
271
272#define movdqa_m2r(var,reg) mmx_m2r (movdqa, var, reg)
273#define movdqa_r2m(reg,var) mmx_r2m (movdqa, reg, var)
274#define movdqa_r2r(regs,regd) mmx_r2r (movdqa, regs, regd)
275#define movdqu_m2r(var,reg) mmx_m2r (movdqu, var, reg)
276#define movdqu_r2m(reg,var) mmx_r2m (movdqu, reg, var)
277#define movdqu_r2r(regs,regd) mmx_r2r (movdqu, regs, regd)
278
279#define pmullw_r2m(reg,var) mmx_r2m (pmullw, reg, var)
280
281#define pslldq_i2r(imm,reg) mmx_i2r (pslldq, imm, reg)
282#define psrldq_i2r(imm,reg) mmx_i2r (psrldq, imm, reg)
283
284#define punpcklqdq_r2r(regs,regd) mmx_r2r (punpcklqdq, regs, regd)
285#define punpckhqdq_r2r(regs,regd) mmx_r2r (punpckhqdq, regs, regd)
286
287
288#endif /* AVCODEC_I386MMX_H */
diff --git a/drivers/staging/et131x/Kconfig b/drivers/staging/et131x/Kconfig
new file mode 100644
index 00000000000..e11cf340856
--- /dev/null
+++ b/drivers/staging/et131x/Kconfig
@@ -0,0 +1,18 @@
1config ET131X
2 tristate "Agere ET-1310 Gigabit Ethernet support"
3 depends on NETDEV_1000 && PCI
4 default n
5 ---help---
6 This driver supports Agere ET-1310 ethernet adapters.
7
8 To compile this driver as a module, choose M here. The module
9 will be called et131x.
10
11config ET131X_DEBUG
12 bool "Enable et131x debugging"
13 depends on ET131X
14 default n
15 ---help---
16 Say Y for detailed debug information.
17
18 If in doubt, say N.
diff --git a/drivers/staging/et131x/Makefile b/drivers/staging/et131x/Makefile
new file mode 100644
index 00000000000..3ad571d8a68
--- /dev/null
+++ b/drivers/staging/et131x/Makefile
@@ -0,0 +1,18 @@
1#
2# Makefile for the Agere ET-131x ethernet driver
3#
4
5obj-$(CONFIG_ET131X) += et131x.o
6
7et131x-objs := et1310_eeprom.o \
8 et1310_jagcore.o \
9 et1310_mac.o \
10 et1310_phy.o \
11 et1310_pm.o \
12 et1310_rx.o \
13 et1310_tx.o \
14 et131x_config.o \
15 et131x_debug.o \
16 et131x_initpci.o \
17 et131x_isr.o \
18 et131x_netdev.o
diff --git a/drivers/staging/et131x/README b/drivers/staging/et131x/README
new file mode 100644
index 00000000000..28752a50231
--- /dev/null
+++ b/drivers/staging/et131x/README
@@ -0,0 +1,25 @@
1This is a driver for the ET1310 network device.
2
3Based on the driver found at https://sourceforge.net/projects/et131x/
4
5Cleaned up immensely by Olaf Hartman <o.hartmann@telovital.com> and Christoph
6Hellwig <hch@infradead.org>
7
8Note, the powermanagement options were removed from the vendor provided
9driver as they did not build properly at the time.
10
11TODO:
12 - kernel coding style cleanups
13 - forward port for latest network driver changes
14 - kill useless typecasts (e.g. in et1310_phy.c)
15 - alloc_etherdev is initializing memory with zero?!?
16 - add_timer call in et131x_netdev.c is correct?
17 - Add power saving functionality (suspend, sleep, resume)
18 - Implement a few more kernel Parameter (set mac )
19
20Please send patches to:
21 Greg Kroah-Hartman <gregkh@suse.de>
22
23And Cc: Olaf Hartmann <o.hartmann@telovital.com> as he has this device and can
24test any changes.
25
diff --git a/drivers/staging/et131x/et1310_address_map.h b/drivers/staging/et131x/et1310_address_map.h
new file mode 100644
index 00000000000..3c85999d64d
--- /dev/null
+++ b/drivers/staging/et131x/et1310_address_map.h
@@ -0,0 +1,2399 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_address_map.h - Contains the register mapping for the ET1310
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#ifndef _ET1310_ADDRESS_MAP_H_
59#define _ET1310_ADDRESS_MAP_H_
60
61
62/* START OF GLOBAL REGISTER ADDRESS MAP */
63
64typedef union _Q_ADDR_t {
65 u32 value;
66 struct {
67#ifdef _BIT_FIELDS_HTOL
68 u32 unused:22; // bits 10-31
69 u32 addr:10; // bits 0-9
70#else
71 u32 addr:10; // bits 0-9
72 u32 unused:22; // bits 10-31
73#endif
74 } bits;
75} Q_ADDR_t, *PQ_ADDR_t;
76
77/*
78 * structure for tx queue start address reg in global address map
79 * located at address 0x0000
80 * Defined earlier (Q_ADDR_t)
81 */
82
83/*
84 * structure for tx queue end address reg in global address map
85 * located at address 0x0004
86 * Defined earlier (Q_ADDR_t)
87 */
88
89/*
90 * structure for rx queue start address reg in global address map
91 * located at address 0x0008
92 * Defined earlier (Q_ADDR_t)
93 */
94
95/*
96 * structure for rx queue end address reg in global address map
97 * located at address 0x000C
98 * Defined earlier (Q_ADDR_t)
99 */
100
101/*
102 * structure for power management control status reg in global address map
103 * located at address 0x0010
104 */
105typedef union _PM_CSR_t {
106 u32 value;
107 struct {
108#ifdef _BIT_FIELDS_HTOL
109 u32 unused:22; // bits 10-31
110 u32 pm_jagcore_rx_rdy:1; // bit 9
111 u32 pm_jagcore_tx_rdy:1; // bit 8
112 u32 pm_phy_lped_en:1; // bit 7
113 u32 pm_phy_sw_coma:1; // bit 6
114 u32 pm_rxclk_gate:1; // bit 5
115 u32 pm_txclk_gate:1; // bit 4
116 u32 pm_sysclk_gate:1; // bit 3
117 u32 pm_jagcore_rx_en:1; // bit 2
118 u32 pm_jagcore_tx_en:1; // bit 1
119 u32 pm_gigephy_en:1; // bit 0
120#else
121 u32 pm_gigephy_en:1; // bit 0
122 u32 pm_jagcore_tx_en:1; // bit 1
123 u32 pm_jagcore_rx_en:1; // bit 2
124 u32 pm_sysclk_gate:1; // bit 3
125 u32 pm_txclk_gate:1; // bit 4
126 u32 pm_rxclk_gate:1; // bit 5
127 u32 pm_phy_sw_coma:1; // bit 6
128 u32 pm_phy_lped_en:1; // bit 7
129 u32 pm_jagcore_tx_rdy:1; // bit 8
130 u32 pm_jagcore_rx_rdy:1; // bit 9
131 u32 unused:22; // bits 10-31
132#endif
133 } bits;
134} PM_CSR_t, *PPM_CSR_t;
135
136/*
137 * structure for interrupt status reg in global address map
138 * located at address 0x0018
139 */
140typedef union _INTERRUPT_t {
141 u32 value;
142 struct {
143#ifdef _BIT_FIELDS_HTOL
144 u32 unused5:11; // bits 21-31
145 u32 slv_timeout:1; // bit 20
146 u32 mac_stat_interrupt:1; // bit 19
147 u32 rxmac_interrupt:1; // bit 18
148 u32 txmac_interrupt:1; // bit 17
149 u32 phy_interrupt:1; // bit 16
150 u32 wake_on_lan:1; // bit 15
151 u32 watchdog_interrupt:1; // bit 14
152 u32 unused4:4; // bits 10-13
153 u32 rxdma_err:1; // bit 9
154 u32 rxdma_pkt_stat_ring_low:1; // bit 8
155 u32 rxdma_fb_ring1_low:1; // bit 7
156 u32 rxdma_fb_ring0_low:1; // bit 6
157 u32 rxdma_xfr_done:1; // bit 5
158 u32 txdma_err:1; // bit 4
159 u32 txdma_isr:1; // bit 3
160 u32 unused3:1; // bit 2
161 u32 unused2:1; // bit 1
162 u32 unused1:1; // bit 0
163#else
164 u32 unused1:1; // bit 0
165 u32 unused2:1; // bit 1
166 u32 unused3:1; // bit 2
167 u32 txdma_isr:1; // bit 3
168 u32 txdma_err:1; // bit 4
169 u32 rxdma_xfr_done:1; // bit 5
170 u32 rxdma_fb_ring0_low:1; // bit 6
171 u32 rxdma_fb_ring1_low:1; // bit 7
172 u32 rxdma_pkt_stat_ring_low:1; // bit 8
173 u32 rxdma_err:1; // bit 9
174 u32 unused4:4; // bits 10-13
175 u32 watchdog_interrupt:1; // bit 14
176 u32 wake_on_lan:1; // bit 15
177 u32 phy_interrupt:1; // bit 16
178 u32 txmac_interrupt:1; // bit 17
179 u32 rxmac_interrupt:1; // bit 18
180 u32 mac_stat_interrupt:1; // bit 19
181 u32 slv_timeout:1; // bit 20
182 u32 unused5:11; // bits 21-31
183#endif
184 } bits;
185} INTERRUPT_t, *PINTERRUPT_t;
186
187/*
188 * structure for interrupt mask reg in global address map
189 * located at address 0x001C
190 * Defined earlier (INTERRUPT_t), but 'watchdog_interrupt' is not used.
191 */
192
193/*
194 * structure for interrupt alias clear mask reg in global address map
195 * located at address 0x0020
196 * Defined earlier (INTERRUPT_t)
197 */
198
199/*
200 * structure for interrupt status alias reg in global address map
201 * located at address 0x0024
202 * Defined earlier (INTERRUPT_t)
203 */
204
205/*
206 * structure for software reset reg in global address map
207 * located at address 0x0028
208 */
209typedef union _SW_RESET_t {
210 u32 value;
211 struct {
212#ifdef _BIT_FIELDS_HTOL
213 u32 selfclr_disable:1; // bit 31
214 u32 unused:24; // bits 7-30
215 u32 mmc_sw_reset:1; // bit 6
216 u32 mac_stat_sw_reset:1; // bit 5
217 u32 mac_sw_reset:1; // bit 4
218 u32 rxmac_sw_reset:1; // bit 3
219 u32 txmac_sw_reset:1; // bit 2
220 u32 rxdma_sw_reset:1; // bit 1
221 u32 txdma_sw_reset:1; // bit 0
222#else
223 u32 txdma_sw_reset:1; // bit 0
224 u32 rxdma_sw_reset:1; // bit 1
225 u32 txmac_sw_reset:1; // bit 2
226 u32 rxmac_sw_reset:1; // bit 3
227 u32 mac_sw_reset:1; // bit 4
228 u32 mac_stat_sw_reset:1; // bit 5
229 u32 mmc_sw_reset:1; // bit 6
230 u32 unused:24; // bits 7-30
231 u32 selfclr_disable:1; // bit 31
232#endif
233 } bits;
234} SW_RESET_t, *PSW_RESET_t;
235
236/*
237 * structure for SLV Timer reg in global address map
238 * located at address 0x002C
239 */
240typedef union _SLV_TIMER_t {
241 u32 value;
242 struct {
243#ifdef _BIT_FIELDS_HTOL
244 u32 unused:8; // bits 24-31
245 u32 timer_ini:24; // bits 0-23
246#else
247 u32 timer_ini:24; // bits 0-23
248 u32 unused:8; // bits 24-31
249#endif
250 } bits;
251} SLV_TIMER_t, *PSLV_TIMER_t;
252
253/*
254 * structure for MSI Configuration reg in global address map
255 * located at address 0x0030
256 */
257typedef union _MSI_CONFIG_t {
258 u32 value;
259 struct {
260#ifdef _BIT_FIELDS_HTOL
261 u32 unused1:13; // bits 19-31
262 u32 msi_tc:3; // bits 16-18
263 u32 unused2:11; // bits 5-15
264 u32 msi_vector:5; // bits 0-4
265#else
266 u32 msi_vector:5; // bits 0-4
267 u32 unused2:11; // bits 5-15
268 u32 msi_tc:3; // bits 16-18
269 u32 unused1:13; // bits 19-31
270#endif
271 } bits;
272} MSI_CONFIG_t, *PMSI_CONFIG_t;
273
274/*
275 * structure for Loopback reg in global address map
276 * located at address 0x0034
277 */
278typedef union _LOOPBACK_t {
279 u32 value;
280 struct {
281#ifdef _BIT_FIELDS_HTOL
282 u32 unused:30; // bits 2-31
283 u32 dma_loopback:1; // bit 1
284 u32 mac_loopback:1; // bit 0
285#else
286 u32 mac_loopback:1; // bit 0
287 u32 dma_loopback:1; // bit 1
288 u32 unused:30; // bits 2-31
289#endif
290 } bits;
291} LOOPBACK_t, *PLOOPBACK_t;
292
293/*
294 * GLOBAL Module of JAGCore Address Mapping
295 * Located at address 0x0000
296 */
297typedef struct _GLOBAL_t { // Location:
298 Q_ADDR_t txq_start_addr; // 0x0000
299 Q_ADDR_t txq_end_addr; // 0x0004
300 Q_ADDR_t rxq_start_addr; // 0x0008
301 Q_ADDR_t rxq_end_addr; // 0x000C
302 PM_CSR_t pm_csr; // 0x0010
303 u32 unused; // 0x0014
304 INTERRUPT_t int_status; // 0x0018
305 INTERRUPT_t int_mask; // 0x001C
306 INTERRUPT_t int_alias_clr_en; // 0x0020
307 INTERRUPT_t int_status_alias; // 0x0024
308 SW_RESET_t sw_reset; // 0x0028
309 SLV_TIMER_t slv_timer; // 0x002C
310 MSI_CONFIG_t msi_config; // 0x0030
311 LOOPBACK_t loopback; // 0x0034
312 u32 watchdog_timer; // 0x0038
313} GLOBAL_t, *PGLOBAL_t;
314
315/* END OF GLOBAL REGISTER ADDRESS MAP */
316
317
318/* START OF TXDMA REGISTER ADDRESS MAP */
319
320/*
321 * structure for txdma control status reg in txdma address map
322 * located at address 0x1000
323 */
324typedef union _TXDMA_CSR_t {
325 u32 value;
326 struct {
327#ifdef _BIT_FIELDS_HTOL
328 u32 unused2:19; // bits 13-31
329 u32 traffic_class:4; // bits 9-12
330 u32 sngl_epkt_mode:1; // bit 8
331 u32 cache_thrshld:4; // bits 4-7
332 u32 unused1:2; // bits 2-3
333 u32 drop_TLP_disable:1; // bit 1
334 u32 halt:1; // bit 0
335#else
336 u32 halt:1; // bit 0
337 u32 drop_TLP_disable:1; // bit 1
338 u32 unused1:2; // bits 2-3
339 u32 cache_thrshld:4; // bits 4-7
340 u32 sngl_epkt_mode:1; // bit 8
341 u32 traffic_class:4; // bits 9-12
342 u32 unused2:19; // bits 13-31
343#endif
344 } bits;
345} TXDMA_CSR_t, *PTXDMA_CSR_t;
346
347/*
348 * structure for txdma packet ring base address hi reg in txdma address map
349 * located at address 0x1004
350 * Defined earlier (u32)
351 */
352
353/*
354 * structure for txdma packet ring base address low reg in txdma address map
355 * located at address 0x1008
356 * Defined earlier (u32)
357 */
358
359/*
360 * structure for txdma packet ring number of descriptor reg in txdma address
361 * map. Located at address 0x100C
362 */
363typedef union _TXDMA_PR_NUM_DES_t {
364 u32 value;
365 struct {
366#ifdef _BIT_FIELDS_HTOL
367 u32 unused:22; // bits 10-31
368 u32 pr_ndes:10; // bits 0-9
369#else
370 u32 pr_ndes:10; // bits 0-9
371 u32 unused:22; // bits 10-31
372#endif
373 } bits;
374} TXDMA_PR_NUM_DES_t, *PTXDMA_PR_NUM_DES_t;
375
376
377typedef union _DMA10W_t {
378 u32 value;
379 struct {
380#ifdef _BIT_FIELDS_HTOL
381 u32 unused:21; // bits 11-31
382 u32 wrap:1; // bit 10
383 u32 val:10; // bits 0-9
384#else
385 u32 val:10; // bits 0-9
386 u32 wrap:1; // bit 10
387 u32 unused:21; // bits 11-31
388#endif
389 } bits;
390} DMA10W_t, *PDMA10W_t;
391
392/*
393 * structure for txdma tx queue write address reg in txdma address map
394 * located at address 0x1010
395 * Defined earlier (DMA10W_t)
396 */
397
398/*
399 * structure for txdma tx queue write address external reg in txdma address map
400 * located at address 0x1014
401 * Defined earlier (DMA10W_t)
402 */
403
404/*
405 * structure for txdma tx queue read address reg in txdma address map
406 * located at address 0x1018
407 * Defined earlier (DMA10W_t)
408 */
409
410/*
411 * structure for txdma status writeback address hi reg in txdma address map
412 * located at address 0x101C
413 * Defined earlier (u32)
414 */
415
416/*
417 * structure for txdma status writeback address lo reg in txdma address map
418 * located at address 0x1020
419 * Defined earlier (u32)
420 */
421
422/*
423 * structure for txdma service request reg in txdma address map
424 * located at address 0x1024
425 * Defined earlier (DMA10W_t)
426 */
427
428/*
429 * structure for txdma service complete reg in txdma address map
430 * located at address 0x1028
431 * Defined earlier (DMA10W_t)
432 */
433
434typedef union _DMA4W_t {
435 u32 value;
436 struct {
437#ifdef _BIT_FIELDS_HTOL
438 u32 unused:27; // bits 5-31
439 u32 wrap:1; // bit 4
440 u32 val:4; // bit 0-3
441#else
442 u32 val:4; // bits 0-3
443 u32 wrap:1; // bit 4
444 u32 unused:27; // bits 5-31
445#endif
446 } bits;
447} DMA4W_t, *PDMA4W_t;
448
449/*
450 * structure for txdma tx descriptor cache read index reg in txdma address map
451 * located at address 0x102C
452 * Defined earlier (DMA4W_t)
453 */
454
455/*
456 * structure for txdma tx descriptor cache write index reg in txdma address map
457 * located at address 0x1030
458 * Defined earlier (DMA4W_t)
459 */
460
461/*
462 * structure for txdma error reg in txdma address map
463 * located at address 0x1034
464 */
465typedef union _TXDMA_ERROR_t {
466 u32 value;
467 struct {
468#ifdef _BIT_FIELDS_HTOL
469 u32 unused3:22; // bits 10-31
470 u32 WrbkRewind:1; // bit 9
471 u32 WrbkResend:1; // bit 8
472 u32 unused2:2; // bits 6-7
473 u32 DescrRewind:1; // bit 5
474 u32 DescrResend:1; // bit 4
475 u32 unused1:2; // bits 2-3
476 u32 PyldRewind:1; // bit 1
477 u32 PyldResend:1; // bit 0
478#else
479 u32 PyldResend:1; // bit 0
480 u32 PyldRewind:1; // bit 1
481 u32 unused1:2; // bits 2-3
482 u32 DescrResend:1; // bit 4
483 u32 DescrRewind:1; // bit 5
484 u32 unused2:2; // bits 6-7
485 u32 WrbkResend:1; // bit 8
486 u32 WrbkRewind:1; // bit 9
487 u32 unused3:22; // bits 10-31
488#endif
489 } bits;
490} TXDMA_ERROR_t, *PTXDMA_ERROR_t;
491
492/*
493 * Tx DMA Module of JAGCore Address Mapping
494 * Located at address 0x1000
495 */
496typedef struct _TXDMA_t { // Location:
497 TXDMA_CSR_t csr; // 0x1000
498 u32 pr_base_hi; // 0x1004
499 u32 pr_base_lo; // 0x1008
500 TXDMA_PR_NUM_DES_t pr_num_des; // 0x100C
501 DMA10W_t txq_wr_addr; // 0x1010
502 DMA10W_t txq_wr_addr_ext; // 0x1014
503 DMA10W_t txq_rd_addr; // 0x1018
504 u32 dma_wb_base_hi; // 0x101C
505 u32 dma_wb_base_lo; // 0x1020
506 DMA10W_t service_request; // 0x1024
507 DMA10W_t service_complete; // 0x1028
508 DMA4W_t cache_rd_index; // 0x102C
509 DMA4W_t cache_wr_index; // 0x1030
510 TXDMA_ERROR_t TxDmaError; // 0x1034
511 u32 DescAbortCount; // 0x1038
512 u32 PayloadAbortCnt; // 0x103c
513 u32 WriteBackAbortCnt; // 0x1040
514 u32 DescTimeoutCnt; // 0x1044
515 u32 PayloadTimeoutCnt; // 0x1048
516 u32 WriteBackTimeoutCnt; // 0x104c
517 u32 DescErrorCount; // 0x1050
518 u32 PayloadErrorCnt; // 0x1054
519 u32 WriteBackErrorCnt; // 0x1058
520 u32 DroppedTLPCount; // 0x105c
521 DMA10W_t NewServiceComplete; // 0x1060
522 u32 EthernetPacketCount; // 0x1064
523} TXDMA_t, *PTXDMA_t;
524
525/* END OF TXDMA REGISTER ADDRESS MAP */
526
527
528/* START OF RXDMA REGISTER ADDRESS MAP */
529
530/*
531 * structure for control status reg in rxdma address map
532 * Located at address 0x2000
533 */
534typedef union _RXDMA_CSR_t {
535 u32 value;
536 struct {
537#ifdef _BIT_FIELDS_HTOL
538 u32 unused2:14; // bits 18-31
539 u32 halt_status:1; // bit 17
540 u32 pkt_done_flush:1; // bit 16
541 u32 pkt_drop_disable:1; // bit 15
542 u32 unused1:1; // bit 14
543 u32 fbr1_enable:1; // bit 13
544 u32 fbr1_size:2; // bits 11-12
545 u32 fbr0_enable:1; // bit 10
546 u32 fbr0_size:2; // bits 8-9
547 u32 dma_big_endian:1; // bit 7
548 u32 pkt_big_endian:1; // bit 6
549 u32 psr_big_endian:1; // bit 5
550 u32 fbr_big_endian:1; // bit 4
551 u32 tc:3; // bits 1-3
552 u32 halt:1; // bit 0
553#else
554 u32 halt:1; // bit 0
555 u32 tc:3; // bits 1-3
556 u32 fbr_big_endian:1; // bit 4
557 u32 psr_big_endian:1; // bit 5
558 u32 pkt_big_endian:1; // bit 6
559 u32 dma_big_endian:1; // bit 7
560 u32 fbr0_size:2; // bits 8-9
561 u32 fbr0_enable:1; // bit 10
562 u32 fbr1_size:2; // bits 11-12
563 u32 fbr1_enable:1; // bit 13
564 u32 unused1:1; // bit 14
565 u32 pkt_drop_disable:1; // bit 15
566 u32 pkt_done_flush:1; // bit 16
567 u32 halt_status:1; // bit 17
568 u32 unused2:14; // bits 18-31
569#endif
570 } bits;
571} RXDMA_CSR_t, *PRXDMA_CSR_t;
572
573/*
574 * structure for dma writeback lo reg in rxdma address map
575 * located at address 0x2004
576 * Defined earlier (u32)
577 */
578
579/*
580 * structure for dma writeback hi reg in rxdma address map
581 * located at address 0x2008
582 * Defined earlier (u32)
583 */
584
585/*
586 * structure for number of packets done reg in rxdma address map
587 * located at address 0x200C
588 */
589typedef union _RXDMA_NUM_PKT_DONE_t {
590 u32 value;
591 struct {
592#ifdef _BIT_FIELDS_HTOL
593 u32 unused:24; // bits 8-31
594 u32 num_done:8; // bits 0-7
595#else
596 u32 num_done:8; // bits 0-7
597 u32 unused:24; // bits 8-31
598#endif
599 } bits;
600} RXDMA_NUM_PKT_DONE_t, *PRXDMA_NUM_PKT_DONE_t;
601
602/*
603 * structure for max packet time reg in rxdma address map
604 * located at address 0x2010
605 */
606typedef union _RXDMA_MAX_PKT_TIME_t {
607 u32 value;
608 struct {
609#ifdef _BIT_FIELDS_HTOL
610 u32 unused:14; // bits 18-31
611 u32 time_done:18; // bits 0-17
612#else
613 u32 time_done:18; // bits 0-17
614 u32 unused:14; // bits 18-31
615#endif
616 } bits;
617} RXDMA_MAX_PKT_TIME_t, *PRXDMA_MAX_PKT_TIME_t;
618
619/*
620 * structure for rx queue read address reg in rxdma address map
621 * located at address 0x2014
622 * Defined earlier (DMA10W_t)
623 */
624
625/*
626 * structure for rx queue read address external reg in rxdma address map
627 * located at address 0x2018
628 * Defined earlier (DMA10W_t)
629 */
630
631/*
632 * structure for rx queue write address reg in rxdma address map
633 * located at address 0x201C
634 * Defined earlier (DMA10W_t)
635 */
636
637/*
638 * structure for packet status ring base address lo reg in rxdma address map
639 * located at address 0x2020
640 * Defined earlier (u32)
641 */
642
643/*
644 * structure for packet status ring base address hi reg in rxdma address map
645 * located at address 0x2024
646 * Defined earlier (u32)
647 */
648
649/*
650 * structure for packet status ring number of descriptors reg in rxdma address
651 * map. Located at address 0x2028
652 */
653typedef union _RXDMA_PSR_NUM_DES_t {
654 u32 value;
655 struct {
656#ifdef _BIT_FIELDS_HTOL
657 u32 unused:20; // bits 12-31
658 u32 psr_ndes:12; // bit 0-11
659#else
660 u32 psr_ndes:12; // bit 0-11
661 u32 unused:20; // bits 12-31
662#endif
663 } bits;
664} RXDMA_PSR_NUM_DES_t, *PRXDMA_PSR_NUM_DES_t;
665
666/*
667 * structure for packet status ring available offset reg in rxdma address map
668 * located at address 0x202C
669 */
670typedef union _RXDMA_PSR_AVAIL_OFFSET_t {
671 u32 value;
672 struct {
673#ifdef _BIT_FIELDS_HTOL
674 u32 unused:19; // bits 13-31
675 u32 psr_avail_wrap:1; // bit 12
676 u32 psr_avail:12; // bit 0-11
677#else
678 u32 psr_avail:12; // bit 0-11
679 u32 psr_avail_wrap:1; // bit 12
680 u32 unused:19; // bits 13-31
681#endif
682 } bits;
683} RXDMA_PSR_AVAIL_OFFSET_t, *PRXDMA_PSR_AVAIL_OFFSET_t;
684
685/*
686 * structure for packet status ring full offset reg in rxdma address map
687 * located at address 0x2030
688 */
689typedef union _RXDMA_PSR_FULL_OFFSET_t {
690 u32 value;
691 struct {
692#ifdef _BIT_FIELDS_HTOL
693 u32 unused:19; // bits 13-31
694 u32 psr_full_wrap:1; // bit 12
695 u32 psr_full:12; // bit 0-11
696#else
697 u32 psr_full:12; // bit 0-11
698 u32 psr_full_wrap:1; // bit 12
699 u32 unused:19; // bits 13-31
700#endif
701 } bits;
702} RXDMA_PSR_FULL_OFFSET_t, *PRXDMA_PSR_FULL_OFFSET_t;
703
704/*
705 * structure for packet status ring access index reg in rxdma address map
706 * located at address 0x2034
707 */
708typedef union _RXDMA_PSR_ACCESS_INDEX_t {
709 u32 value;
710 struct {
711#ifdef _BIT_FIELDS_HTOL
712 u32 unused:27; // bits 5-31
713 u32 psr_ai:5; // bits 0-4
714#else
715 u32 psr_ai:5; // bits 0-4
716 u32 unused:27; // bits 5-31
717#endif
718 } bits;
719} RXDMA_PSR_ACCESS_INDEX_t, *PRXDMA_PSR_ACCESS_INDEX_t;
720
721/*
722 * structure for packet status ring minimum descriptors reg in rxdma address
723 * map. Located at address 0x2038
724 */
725typedef union _RXDMA_PSR_MIN_DES_t {
726 u32 value;
727 struct {
728#ifdef _BIT_FIELDS_HTOL
729 u32 unused:20; // bits 12-31
730 u32 psr_min:12; // bits 0-11
731#else
732 u32 psr_min:12; // bits 0-11
733 u32 unused:20; // bits 12-31
734#endif
735 } bits;
736} RXDMA_PSR_MIN_DES_t, *PRXDMA_PSR_MIN_DES_t;
737
738/*
739 * structure for free buffer ring base lo address reg in rxdma address map
740 * located at address 0x203C
741 * Defined earlier (u32)
742 */
743
744/*
745 * structure for free buffer ring base hi address reg in rxdma address map
746 * located at address 0x2040
747 * Defined earlier (u32)
748 */
749
750/*
751 * structure for free buffer ring number of descriptors reg in rxdma address
752 * map. Located at address 0x2044
753 */
754typedef union _RXDMA_FBR_NUM_DES_t {
755 u32 value;
756 struct {
757#ifdef _BIT_FIELDS_HTOL
758 u32 unused:22; // bits 10-31
759 u32 fbr_ndesc:10; // bits 0-9
760#else
761 u32 fbr_ndesc:10; // bits 0-9
762 u32 unused:22; // bits 10-31
763#endif
764 } bits;
765} RXDMA_FBR_NUM_DES_t, *PRXDMA_FBR_NUM_DES_t;
766
767/*
768 * structure for free buffer ring 0 available offset reg in rxdma address map
769 * located at address 0x2048
770 * Defined earlier (DMA10W_t)
771 */
772
773/*
774 * structure for free buffer ring 0 full offset reg in rxdma address map
775 * located at address 0x204C
776 * Defined earlier (DMA10W_t)
777 */
778
779/*
780 * structure for free buffer cache 0 full offset reg in rxdma address map
781 * located at address 0x2050
782 */
783typedef union _RXDMA_FBC_RD_INDEX_t {
784 u32 value;
785 struct {
786#ifdef _BIT_FIELDS_HTOL
787 u32 unused:27; // bits 5-31
788 u32 fbc_rdi:5; // bit 0-4
789#else
790 u32 fbc_rdi:5; // bit 0-4
791 u32 unused:27; // bits 5-31
792#endif
793 } bits;
794} RXDMA_FBC_RD_INDEX_t, *PRXDMA_FBC_RD_INDEX_t;
795
796/*
797 * structure for free buffer ring 0 minimum descriptor reg in rxdma address map
798 * located at address 0x2054
799 */
800typedef union _RXDMA_FBR_MIN_DES_t {
801 u32 value;
802 struct {
803#ifdef _BIT_FIELDS_HTOL
804 u32 unused:22; // bits 10-31
805 u32 fbr_min:10; // bits 0-9
806#else
807 u32 fbr_min:10; // bits 0-9
808 u32 unused:22; // bits 10-31
809#endif
810 } bits;
811} RXDMA_FBR_MIN_DES_t, *PRXDMA_FBR_MIN_DES_t;
812
813/*
814 * structure for free buffer ring 1 base address lo reg in rxdma address map
815 * located at address 0x2058 - 0x205C
816 * Defined earlier (RXDMA_FBR_BASE_LO_t and RXDMA_FBR_BASE_HI_t)
817 */
818
819/*
820 * structure for free buffer ring 1 number of descriptors reg in rxdma address
821 * map. Located at address 0x2060
822 * Defined earlier (RXDMA_FBR_NUM_DES_t)
823 */
824
825/*
826 * structure for free buffer ring 1 available offset reg in rxdma address map
827 * located at address 0x2064
828 * Defined Earlier (RXDMA_FBR_AVAIL_OFFSET_t)
829 */
830
831/*
832 * structure for free buffer ring 1 full offset reg in rxdma address map
833 * located at address 0x2068
834 * Defined Earlier (RXDMA_FBR_FULL_OFFSET_t)
835 */
836
837/*
838 * structure for free buffer cache 1 read index reg in rxdma address map
839 * located at address 0x206C
840 * Defined Earlier (RXDMA_FBC_RD_INDEX_t)
841 */
842
843/*
844 * structure for free buffer ring 1 minimum descriptor reg in rxdma address map
845 * located at address 0x2070
846 * Defined Earlier (RXDMA_FBR_MIN_DES_t)
847 */
848
849/*
850 * Rx DMA Module of JAGCore Address Mapping
851 * Located at address 0x2000
852 */
853typedef struct _RXDMA_t { // Location:
854 RXDMA_CSR_t csr; // 0x2000
855 u32 dma_wb_base_lo; // 0x2004
856 u32 dma_wb_base_hi; // 0x2008
857 RXDMA_NUM_PKT_DONE_t num_pkt_done; // 0x200C
858 RXDMA_MAX_PKT_TIME_t max_pkt_time; // 0x2010
859 DMA10W_t rxq_rd_addr; // 0x2014
860 DMA10W_t rxq_rd_addr_ext; // 0x2018
861 DMA10W_t rxq_wr_addr; // 0x201C
862 u32 psr_base_lo; // 0x2020
863 u32 psr_base_hi; // 0x2024
864 RXDMA_PSR_NUM_DES_t psr_num_des; // 0x2028
865 RXDMA_PSR_AVAIL_OFFSET_t psr_avail_offset; // 0x202C
866 RXDMA_PSR_FULL_OFFSET_t psr_full_offset; // 0x2030
867 RXDMA_PSR_ACCESS_INDEX_t psr_access_index; // 0x2034
868 RXDMA_PSR_MIN_DES_t psr_min_des; // 0x2038
869 u32 fbr0_base_lo; // 0x203C
870 u32 fbr0_base_hi; // 0x2040
871 RXDMA_FBR_NUM_DES_t fbr0_num_des; // 0x2044
872 DMA10W_t fbr0_avail_offset; // 0x2048
873 DMA10W_t fbr0_full_offset; // 0x204C
874 RXDMA_FBC_RD_INDEX_t fbr0_rd_index; // 0x2050
875 RXDMA_FBR_MIN_DES_t fbr0_min_des; // 0x2054
876 u32 fbr1_base_lo; // 0x2058
877 u32 fbr1_base_hi; // 0x205C
878 RXDMA_FBR_NUM_DES_t fbr1_num_des; // 0x2060
879 DMA10W_t fbr1_avail_offset; // 0x2064
880 DMA10W_t fbr1_full_offset; // 0x2068
881 RXDMA_FBC_RD_INDEX_t fbr1_rd_index; // 0x206C
882 RXDMA_FBR_MIN_DES_t fbr1_min_des; // 0x2070
883} RXDMA_t, *PRXDMA_t;
884
885/* END OF RXDMA REGISTER ADDRESS MAP */
886
887
888/* START OF TXMAC REGISTER ADDRESS MAP */
889
890/*
891 * structure for control reg in txmac address map
892 * located at address 0x3000
893 */
894typedef union _TXMAC_CTL_t {
895 u32 value;
896 struct {
897#ifdef _BIT_FIELDS_HTOL
898 u32 unused:24; // bits 8-31
899 u32 cklseg_diable:1; // bit 7
900 u32 ckbcnt_disable:1; // bit 6
901 u32 cksegnum:1; // bit 5
902 u32 async_disable:1; // bit 4
903 u32 fc_disable:1; // bit 3
904 u32 mcif_disable:1; // bit 2
905 u32 mif_disable:1; // bit 1
906 u32 txmac_en:1; // bit 0
907#else
908 u32 txmac_en:1; // bit 0
909 u32 mif_disable:1; // bit 1 mac interface
910 u32 mcif_disable:1; // bit 2 mem. contr. interface
911 u32 fc_disable:1; // bit 3
912 u32 async_disable:1; // bit 4
913 u32 cksegnum:1; // bit 5
914 u32 ckbcnt_disable:1; // bit 6
915 u32 cklseg_diable:1; // bit 7
916 u32 unused:24; // bits 8-31
917#endif
918 } bits;
919} TXMAC_CTL_t, *PTXMAC_CTL_t;
920
921/*
922 * structure for shadow pointer reg in txmac address map
923 * located at address 0x3004
924 */
925typedef union _TXMAC_SHADOW_PTR_t {
926 u32 value;
927 struct {
928#ifdef _BIT_FIELDS_HTOL
929 u32 reserved2:5; // bits 27-31
930 u32 txq_rd_ptr:11; // bits 16-26
931 u32 reserved:5; // bits 11-15
932 u32 txq_wr_ptr:11; // bits 0-10
933#else
934 u32 txq_wr_ptr:11; // bits 0-10
935 u32 reserved:5; // bits 11-15
936 u32 txq_rd_ptr:11; // bits 16-26
937 u32 reserved2:5; // bits 27-31
938#endif
939 } bits;
940} TXMAC_SHADOW_PTR_t, *PTXMAC_SHADOW_PTR_t;
941
942/*
943 * structure for error count reg in txmac address map
944 * located at address 0x3008
945 */
946typedef union _TXMAC_ERR_CNT_t {
947 u32 value;
948 struct {
949#ifdef _BIT_FIELDS_HTOL
950 u32 unused:20; // bits 12-31
951 u32 reserved:4; // bits 8-11
952 u32 txq_underrun:4; // bits 4-7
953 u32 fifo_underrun:4; // bits 0-3
954#else
955 u32 fifo_underrun:4; // bits 0-3
956 u32 txq_underrun:4; // bits 4-7
957 u32 reserved:4; // bits 8-11
958 u32 unused:20; // bits 12-31
959#endif
960 } bits;
961} TXMAC_ERR_CNT_t, *PTXMAC_ERR_CNT_t;
962
963/*
964 * structure for max fill reg in txmac address map
965 * located at address 0x300C
966 */
967typedef union _TXMAC_MAX_FILL_t {
968 u32 value;
969 struct {
970#ifdef _BIT_FIELDS_HTOL
971 u32 unused:20; // bits 12-31
972 u32 max_fill:12; // bits 0-11
973#else
974 u32 max_fill:12; // bits 0-11
975 u32 unused:20; // bits 12-31
976#endif
977 } bits;
978} TXMAC_MAX_FILL_t, *PTXMAC_MAX_FILL_t;
979
980/*
981 * structure for cf parameter reg in txmac address map
982 * located at address 0x3010
983 */
984typedef union _TXMAC_CF_PARAM_t {
985 u32 value;
986 struct {
987#ifdef _BIT_FIELDS_HTOL
988 u32 cfep:16; // bits 16-31
989 u32 cfpt:16; // bits 0-15
990#else
991 u32 cfpt:16; // bits 0-15
992 u32 cfep:16; // bits 16-31
993#endif
994 } bits;
995} TXMAC_CF_PARAM_t, *PTXMAC_CF_PARAM_t;
996
997/*
998 * structure for tx test reg in txmac address map
999 * located at address 0x3014
1000 */
1001typedef union _TXMAC_TXTEST_t {
1002 u32 value;
1003 struct {
1004#ifdef _BIT_FIELDS_HTOL
1005 u32 unused2:15; // bits 17-31
1006 u32 reserved1:1; // bit 16
1007 u32 txtest_en:1; // bit 15
1008 u32 unused1:4; // bits 11-14
1009 u32 txqtest_ptr:11; // bits 0-11
1010#else
1011 u32 txqtest_ptr:11; // bits 0-10
1012 u32 unused1:4; // bits 11-14
1013 u32 txtest_en:1; // bit 15
1014 u32 reserved1:1; // bit 16
1015 u32 unused2:15; // bits 17-31
1016#endif
1017 } bits;
1018} TXMAC_TXTEST_t, *PTXMAC_TXTEST_t;
1019
1020/*
1021 * structure for error reg in txmac address map
1022 * located at address 0x3018
1023 */
1024typedef union _TXMAC_ERR_t {
1025 u32 value;
1026 struct {
1027#ifdef _BIT_FIELDS_HTOL
1028 u32 unused2:23; // bits 9-31
1029 u32 fifo_underrun:1; // bit 8
1030 u32 unused1:2; // bits 6-7
1031 u32 ctrl2_err:1; // bit 5
1032 u32 txq_underrun:1; // bit 4
1033 u32 bcnt_err:1; // bit 3
1034 u32 lseg_err:1; // bit 2
1035 u32 segnum_err:1; // bit 1
1036 u32 seg0_err:1; // bit 0
1037#else
1038 u32 seg0_err:1; // bit 0
1039 u32 segnum_err:1; // bit 1
1040 u32 lseg_err:1; // bit 2
1041 u32 bcnt_err:1; // bit 3
1042 u32 txq_underrun:1; // bit 4
1043 u32 ctrl2_err:1; // bit 5
1044 u32 unused1:2; // bits 6-7
1045 u32 fifo_underrun:1; // bit 8
1046 u32 unused2:23; // bits 9-31
1047#endif
1048 } bits;
1049} TXMAC_ERR_t, *PTXMAC_ERR_t;
1050
1051/*
1052 * structure for error interrupt reg in txmac address map
1053 * located at address 0x301C
1054 */
1055typedef union _TXMAC_ERR_INT_t {
1056 u32 value;
1057 struct {
1058#ifdef _BIT_FIELDS_HTOL
1059 u32 unused2:23; // bits 9-31
1060 u32 fifo_underrun:1; // bit 8
1061 u32 unused1:2; // bits 6-7
1062 u32 ctrl2_err:1; // bit 5
1063 u32 txq_underrun:1; // bit 4
1064 u32 bcnt_err:1; // bit 3
1065 u32 lseg_err:1; // bit 2
1066 u32 segnum_err:1; // bit 1
1067 u32 seg0_err:1; // bit 0
1068#else
1069 u32 seg0_err:1; // bit 0
1070 u32 segnum_err:1; // bit 1
1071 u32 lseg_err:1; // bit 2
1072 u32 bcnt_err:1; // bit 3
1073 u32 txq_underrun:1; // bit 4
1074 u32 ctrl2_err:1; // bit 5
1075 u32 unused1:2; // bits 6-7
1076 u32 fifo_underrun:1; // bit 8
1077 u32 unused2:23; // bits 9-31
1078#endif
1079 } bits;
1080} TXMAC_ERR_INT_t, *PTXMAC_ERR_INT_t;
1081
1082/*
1083 * structure for error interrupt reg in txmac address map
1084 * located at address 0x3020
1085 */
1086typedef union _TXMAC_CP_CTRL_t {
1087 u32 value;
1088 struct {
1089#ifdef _BIT_FIELDS_HTOL
1090 u32 unused:30; // bits 2-31
1091 u32 bp_req:1; // bit 1
1092 u32 bp_xonxoff:1; // bit 0
1093#else
1094 u32 bp_xonxoff:1; // bit 0
1095 u32 bp_req:1; // bit 1
1096 u32 unused:30; // bits 2-31
1097#endif
1098 } bits;
1099} TXMAC_BP_CTRL_t, *PTXMAC_BP_CTRL_t;
1100
1101/*
1102 * Tx MAC Module of JAGCore Address Mapping
1103 */
1104typedef struct _TXMAC_t { // Location:
1105 TXMAC_CTL_t ctl; // 0x3000
1106 TXMAC_SHADOW_PTR_t shadow_ptr; // 0x3004
1107 TXMAC_ERR_CNT_t err_cnt; // 0x3008
1108 TXMAC_MAX_FILL_t max_fill; // 0x300C
1109 TXMAC_CF_PARAM_t cf_param; // 0x3010
1110 TXMAC_TXTEST_t tx_test; // 0x3014
1111 TXMAC_ERR_t err; // 0x3018
1112 TXMAC_ERR_INT_t err_int; // 0x301C
1113 TXMAC_BP_CTRL_t bp_ctrl; // 0x3020
1114} TXMAC_t, *PTXMAC_t;
1115
1116/* END OF TXMAC REGISTER ADDRESS MAP */
1117
1118/* START OF RXMAC REGISTER ADDRESS MAP */
1119
1120/*
1121 * structure for rxmac control reg in rxmac address map
1122 * located at address 0x4000
1123 */
1124typedef union _RXMAC_CTRL_t {
1125 u32 value;
1126 struct {
1127#ifdef _BIT_FIELDS_HTOL
1128 u32 reserved:25; // bits 7-31
1129 u32 rxmac_int_disable:1; // bit 6
1130 u32 async_disable:1; // bit 5
1131 u32 mif_disable:1; // bit 4
1132 u32 wol_disable:1; // bit 3
1133 u32 pkt_filter_disable:1; // bit 2
1134 u32 mcif_disable:1; // bit 1
1135 u32 rxmac_en:1; // bit 0
1136#else
1137 u32 rxmac_en:1; // bit 0
1138 u32 mcif_disable:1; // bit 1
1139 u32 pkt_filter_disable:1; // bit 2
1140 u32 wol_disable:1; // bit 3
1141 u32 mif_disable:1; // bit 4
1142 u32 async_disable:1; // bit 5
1143 u32 rxmac_int_disable:1; // bit 6
1144 u32 reserved:25; // bits 7-31
1145#endif
1146 } bits;
1147} RXMAC_CTRL_t, *PRXMAC_CTRL_t;
1148
1149/*
1150 * structure for Wake On Lan Control and CRC 0 reg in rxmac address map
1151 * located at address 0x4004
1152 */
1153typedef union _RXMAC_WOL_CTL_CRC0_t {
1154 u32 value;
1155 struct {
1156#ifdef _BIT_FIELDS_HTOL
1157 u32 crc0:16; // bits 16-31
1158 u32 reserve:4; // bits 12-15
1159 u32 ignore_pp:1; // bit 11
1160 u32 ignore_mp:1; // bit 10
1161 u32 clr_intr:1; // bit 9
1162 u32 ignore_link_chg:1; // bit 8
1163 u32 ignore_uni:1; // bit 7
1164 u32 ignore_multi:1; // bit 6
1165 u32 ignore_broad:1; // bit 5
1166 u32 valid_crc4:1; // bit 4
1167 u32 valid_crc3:1; // bit 3
1168 u32 valid_crc2:1; // bit 2
1169 u32 valid_crc1:1; // bit 1
1170 u32 valid_crc0:1; // bit 0
1171#else
1172 u32 valid_crc0:1; // bit 0
1173 u32 valid_crc1:1; // bit 1
1174 u32 valid_crc2:1; // bit 2
1175 u32 valid_crc3:1; // bit 3
1176 u32 valid_crc4:1; // bit 4
1177 u32 ignore_broad:1; // bit 5
1178 u32 ignore_multi:1; // bit 6
1179 u32 ignore_uni:1; // bit 7
1180 u32 ignore_link_chg:1; // bit 8
1181 u32 clr_intr:1; // bit 9
1182 u32 ignore_mp:1; // bit 10
1183 u32 ignore_pp:1; // bit 11
1184 u32 reserve:4; // bits 12-15
1185 u32 crc0:16; // bits 16-31
1186#endif
1187 } bits;
1188} RXMAC_WOL_CTL_CRC0_t, *PRXMAC_WOL_CTL_CRC0_t;
1189
1190/*
1191 * structure for CRC 1 and CRC 2 reg in rxmac address map
1192 * located at address 0x4008
1193 */
1194typedef union _RXMAC_WOL_CRC12_t {
1195 u32 value;
1196 struct {
1197#ifdef _BIT_FIELDS_HTOL
1198 u32 crc2:16; // bits 16-31
1199 u32 crc1:16; // bits 0-15
1200#else
1201 u32 crc1:16; // bits 0-15
1202 u32 crc2:16; // bits 16-31
1203#endif
1204 } bits;
1205} RXMAC_WOL_CRC12_t, *PRXMAC_WOL_CRC12_t;
1206
1207/*
1208 * structure for CRC 3 and CRC 4 reg in rxmac address map
1209 * located at address 0x400C
1210 */
1211typedef union _RXMAC_WOL_CRC34_t {
1212 u32 value;
1213 struct {
1214#ifdef _BIT_FIELDS_HTOL
1215 u32 crc4:16; // bits 16-31
1216 u32 crc3:16; // bits 0-15
1217#else
1218 u32 crc3:16; // bits 0-15
1219 u32 crc4:16; // bits 16-31
1220#endif
1221 } bits;
1222} RXMAC_WOL_CRC34_t, *PRXMAC_WOL_CRC34_t;
1223
1224/*
1225 * structure for Wake On Lan Source Address Lo reg in rxmac address map
1226 * located at address 0x4010
1227 */
1228typedef union _RXMAC_WOL_SA_LO_t {
1229 u32 value;
1230 struct {
1231#ifdef _BIT_FIELDS_HTOL
1232 u32 sa3:8; // bits 24-31
1233 u32 sa4:8; // bits 16-23
1234 u32 sa5:8; // bits 8-15
1235 u32 sa6:8; // bits 0-7
1236#else
1237 u32 sa6:8; // bits 0-7
1238 u32 sa5:8; // bits 8-15
1239 u32 sa4:8; // bits 16-23
1240 u32 sa3:8; // bits 24-31
1241#endif
1242 } bits;
1243} RXMAC_WOL_SA_LO_t, *PRXMAC_WOL_SA_LO_t;
1244
1245/*
1246 * structure for Wake On Lan Source Address Hi reg in rxmac address map
1247 * located at address 0x4014
1248 */
1249typedef union _RXMAC_WOL_SA_HI_t {
1250 u32 value;
1251 struct {
1252#ifdef _BIT_FIELDS_HTOL
1253 u32 reserved:16; // bits 16-31
1254 u32 sa1:8; // bits 8-15
1255 u32 sa2:8; // bits 0-7
1256#else
1257 u32 sa2:8; // bits 0-7
1258 u32 sa1:8; // bits 8-15
1259 u32 reserved:16; // bits 16-31
1260#endif
1261 } bits;
1262} RXMAC_WOL_SA_HI_t, *PRXMAC_WOL_SA_HI_t;
1263
1264/*
1265 * structure for Wake On Lan mask reg in rxmac address map
1266 * located at address 0x4018 - 0x4064
1267 * Defined earlier (u32)
1268 */
1269
1270/*
1271 * structure for Unicast Paket Filter Address 1 reg in rxmac address map
1272 * located at address 0x4068
1273 */
1274typedef union _RXMAC_UNI_PF_ADDR1_t {
1275 u32 value;
1276 struct {
1277#ifdef _BIT_FIELDS_HTOL
1278 u32 addr1_3:8; // bits 24-31
1279 u32 addr1_4:8; // bits 16-23
1280 u32 addr1_5:8; // bits 8-15
1281 u32 addr1_6:8; // bits 0-7
1282#else
1283 u32 addr1_6:8; // bits 0-7
1284 u32 addr1_5:8; // bits 8-15
1285 u32 addr1_4:8; // bits 16-23
1286 u32 addr1_3:8; // bits 24-31
1287#endif
1288 } bits;
1289} RXMAC_UNI_PF_ADDR1_t, *PRXMAC_UNI_PF_ADDR1_t;
1290
1291/*
1292 * structure for Unicast Paket Filter Address 2 reg in rxmac address map
1293 * located at address 0x406C
1294 */
1295typedef union _RXMAC_UNI_PF_ADDR2_t {
1296 u32 value;
1297 struct {
1298#ifdef _BIT_FIELDS_HTOL
1299 u32 addr2_3:8; // bits 24-31
1300 u32 addr2_4:8; // bits 16-23
1301 u32 addr2_5:8; // bits 8-15
1302 u32 addr2_6:8; // bits 0-7
1303#else
1304 u32 addr2_6:8; // bits 0-7
1305 u32 addr2_5:8; // bits 8-15
1306 u32 addr2_4:8; // bits 16-23
1307 u32 addr2_3:8; // bits 24-31
1308#endif
1309 } bits;
1310} RXMAC_UNI_PF_ADDR2_t, *PRXMAC_UNI_PF_ADDR2_t;
1311
1312/*
1313 * structure for Unicast Paket Filter Address 1 & 2 reg in rxmac address map
1314 * located at address 0x4070
1315 */
1316typedef union _RXMAC_UNI_PF_ADDR3_t {
1317 u32 value;
1318 struct {
1319#ifdef _BIT_FIELDS_HTOL
1320 u32 addr2_1:8; // bits 24-31
1321 u32 addr2_2:8; // bits 16-23
1322 u32 addr1_1:8; // bits 8-15
1323 u32 addr1_2:8; // bits 0-7
1324#else
1325 u32 addr1_2:8; // bits 0-7
1326 u32 addr1_1:8; // bits 8-15
1327 u32 addr2_2:8; // bits 16-23
1328 u32 addr2_1:8; // bits 24-31
1329#endif
1330 } bits;
1331} RXMAC_UNI_PF_ADDR3_t, *PRXMAC_UNI_PF_ADDR3_t;
1332
1333/*
1334 * structure for Multicast Hash reg in rxmac address map
1335 * located at address 0x4074 - 0x4080
1336 * Defined earlier (u32)
1337 */
1338
1339/*
1340 * structure for Packet Filter Control reg in rxmac address map
1341 * located at address 0x4084
1342 */
1343typedef union _RXMAC_PF_CTRL_t {
1344 u32 value;
1345 struct {
1346#ifdef _BIT_FIELDS_HTOL
1347 u32 unused2:9; // bits 23-31
1348 u32 min_pkt_size:7; // bits 16-22
1349 u32 unused1:12; // bits 4-15
1350 u32 filter_frag_en:1; // bit 3
1351 u32 filter_uni_en:1; // bit 2
1352 u32 filter_multi_en:1; // bit 1
1353 u32 filter_broad_en:1; // bit 0
1354#else
1355 u32 filter_broad_en:1; // bit 0
1356 u32 filter_multi_en:1; // bit 1
1357 u32 filter_uni_en:1; // bit 2
1358 u32 filter_frag_en:1; // bit 3
1359 u32 unused1:12; // bits 4-15
1360 u32 min_pkt_size:7; // bits 16-22
1361 u32 unused2:9; // bits 23-31
1362#endif
1363 } bits;
1364} RXMAC_PF_CTRL_t, *PRXMAC_PF_CTRL_t;
1365
1366/*
1367 * structure for Memory Controller Interface Control Max Segment reg in rxmac
1368 * address map. Located at address 0x4088
1369 */
1370typedef union _RXMAC_MCIF_CTRL_MAX_SEG_t {
1371 u32 value;
1372 struct {
1373#ifdef _BIT_FIELDS_HTOL
1374 u32 reserved:22; // bits 10-31
1375 u32 max_size:8; // bits 2-9
1376 u32 fc_en:1; // bit 1
1377 u32 seg_en:1; // bit 0
1378#else
1379 u32 seg_en:1; // bit 0
1380 u32 fc_en:1; // bit 1
1381 u32 max_size:8; // bits 2-9
1382 u32 reserved:22; // bits 10-31
1383#endif
1384 } bits;
1385} RXMAC_MCIF_CTRL_MAX_SEG_t, *PRXMAC_MCIF_CTRL_MAX_SEG_t;
1386
1387/*
1388 * structure for Memory Controller Interface Water Mark reg in rxmac address
1389 * map. Located at address 0x408C
1390 */
1391typedef union _RXMAC_MCIF_WATER_MARK_t {
1392 u32 value;
1393 struct {
1394#ifdef _BIT_FIELDS_HTOL
1395 u32 reserved2:6; // bits 26-31
1396 u32 mark_hi:10; // bits 16-25
1397 u32 reserved1:6; // bits 10-15
1398 u32 mark_lo:10; // bits 0-9
1399#else
1400 u32 mark_lo:10; // bits 0-9
1401 u32 reserved1:6; // bits 10-15
1402 u32 mark_hi:10; // bits 16-25
1403 u32 reserved2:6; // bits 26-31
1404#endif
1405 } bits;
1406} RXMAC_MCIF_WATER_MARK_t, *PRXMAC_MCIF_WATER_MARK_t;
1407
1408/*
1409 * structure for Rx Queue Dialog reg in rxmac address map.
1410 * located at address 0x4090
1411 */
1412typedef union _RXMAC_RXQ_DIAG_t {
1413 u32 value;
1414 struct {
1415#ifdef _BIT_FIELDS_HTOL
1416 u32 reserved2:6; // bits 26-31
1417 u32 rd_ptr:10; // bits 16-25
1418 u32 reserved1:6; // bits 10-15
1419 u32 wr_ptr:10; // bits 0-9
1420#else
1421 u32 wr_ptr:10; // bits 0-9
1422 u32 reserved1:6; // bits 10-15
1423 u32 rd_ptr:10; // bits 16-25
1424 u32 reserved2:6; // bits 26-31
1425#endif
1426 } bits;
1427} RXMAC_RXQ_DIAG_t, *PRXMAC_RXQ_DIAG_t;
1428
1429/*
1430 * structure for space availiable reg in rxmac address map.
1431 * located at address 0x4094
1432 */
1433typedef union _RXMAC_SPACE_AVAIL_t {
1434 u32 value;
1435 struct {
1436#ifdef _BIT_FIELDS_HTOL
1437 u32 reserved2:15; // bits 17-31
1438 u32 space_avail_en:1; // bit 16
1439 u32 reserved1:6; // bits 10-15
1440 u32 space_avail:10; // bits 0-9
1441#else
1442 u32 space_avail:10; // bits 0-9
1443 u32 reserved1:6; // bits 10-15
1444 u32 space_avail_en:1; // bit 16
1445 u32 reserved2:15; // bits 17-31
1446#endif
1447 } bits;
1448} RXMAC_SPACE_AVAIL_t, *PRXMAC_SPACE_AVAIL_t;
1449
1450/*
1451 * structure for management interface reg in rxmac address map.
1452 * located at address 0x4098
1453 */
1454typedef union _RXMAC_MIF_CTL_t {
1455 u32 value;
1456 struct {
1457#ifdef _BIT_FIELDS_HTOL
1458 u32 reserve:14; // bits 18-31
1459 u32 drop_pkt_en:1; // bit 17
1460 u32 drop_pkt_mask:17; // bits 0-16
1461#else
1462 u32 drop_pkt_mask:17; // bits 0-16
1463 u32 drop_pkt_en:1; // bit 17
1464 u32 reserve:14; // bits 18-31
1465#endif
1466 } bits;
1467} RXMAC_MIF_CTL_t, *PRXMAC_MIF_CTL_t;
1468
1469/*
1470 * structure for Error reg in rxmac address map.
1471 * located at address 0x409C
1472 */
1473typedef union _RXMAC_ERROR_REG_t {
1474 u32 value;
1475 struct {
1476#ifdef _BIT_FIELDS_HTOL
1477 u32 reserve:28; // bits 4-31
1478 u32 mif:1; // bit 3
1479 u32 async:1; // bit 2
1480 u32 pkt_filter:1; // bit 1
1481 u32 mcif:1; // bit 0
1482#else
1483 u32 mcif:1; // bit 0
1484 u32 pkt_filter:1; // bit 1
1485 u32 async:1; // bit 2
1486 u32 mif:1; // bit 3
1487 u32 reserve:28; // bits 4-31
1488#endif
1489 } bits;
1490} RXMAC_ERROR_REG_t, *PRXMAC_ERROR_REG_t;
1491
1492/*
1493 * Rx MAC Module of JAGCore Address Mapping
1494 */
1495typedef struct _RXMAC_t { // Location:
1496 RXMAC_CTRL_t ctrl; // 0x4000
1497 RXMAC_WOL_CTL_CRC0_t crc0; // 0x4004
1498 RXMAC_WOL_CRC12_t crc12; // 0x4008
1499 RXMAC_WOL_CRC34_t crc34; // 0x400C
1500 RXMAC_WOL_SA_LO_t sa_lo; // 0x4010
1501 RXMAC_WOL_SA_HI_t sa_hi; // 0x4014
1502 u32 mask0_word0; // 0x4018
1503 u32 mask0_word1; // 0x401C
1504 u32 mask0_word2; // 0x4020
1505 u32 mask0_word3; // 0x4024
1506 u32 mask1_word0; // 0x4028
1507 u32 mask1_word1; // 0x402C
1508 u32 mask1_word2; // 0x4030
1509 u32 mask1_word3; // 0x4034
1510 u32 mask2_word0; // 0x4038
1511 u32 mask2_word1; // 0x403C
1512 u32 mask2_word2; // 0x4040
1513 u32 mask2_word3; // 0x4044
1514 u32 mask3_word0; // 0x4048
1515 u32 mask3_word1; // 0x404C
1516 u32 mask3_word2; // 0x4050
1517 u32 mask3_word3; // 0x4054
1518 u32 mask4_word0; // 0x4058
1519 u32 mask4_word1; // 0x405C
1520 u32 mask4_word2; // 0x4060
1521 u32 mask4_word3; // 0x4064
1522 RXMAC_UNI_PF_ADDR1_t uni_pf_addr1; // 0x4068
1523 RXMAC_UNI_PF_ADDR2_t uni_pf_addr2; // 0x406C
1524 RXMAC_UNI_PF_ADDR3_t uni_pf_addr3; // 0x4070
1525 u32 multi_hash1; // 0x4074
1526 u32 multi_hash2; // 0x4078
1527 u32 multi_hash3; // 0x407C
1528 u32 multi_hash4; // 0x4080
1529 RXMAC_PF_CTRL_t pf_ctrl; // 0x4084
1530 RXMAC_MCIF_CTRL_MAX_SEG_t mcif_ctrl_max_seg; // 0x4088
1531 RXMAC_MCIF_WATER_MARK_t mcif_water_mark; // 0x408C
1532 RXMAC_RXQ_DIAG_t rxq_diag; // 0x4090
1533 RXMAC_SPACE_AVAIL_t space_avail; // 0x4094
1534
1535 RXMAC_MIF_CTL_t mif_ctrl; // 0x4098
1536 RXMAC_ERROR_REG_t err_reg; // 0x409C
1537} RXMAC_t, *PRXMAC_t;
1538
1539/* END OF TXMAC REGISTER ADDRESS MAP */
1540
1541
1542/* START OF MAC REGISTER ADDRESS MAP */
1543
1544/*
1545 * structure for configuration #1 reg in mac address map.
1546 * located at address 0x5000
1547 */
1548typedef union _MAC_CFG1_t {
1549 u32 value;
1550 struct {
1551#ifdef _BIT_FIELDS_HTOL
1552 u32 soft_reset:1; // bit 31
1553 u32 sim_reset:1; // bit 30
1554 u32 reserved3:10; // bits 20-29
1555 u32 reset_rx_mc:1; // bit 19
1556 u32 reset_tx_mc:1; // bit 18
1557 u32 reset_rx_fun:1; // bit 17
1558 u32 reset_tx_fun:1; // bit 16
1559 u32 reserved2:7; // bits 9-15
1560 u32 loop_back:1; // bit 8
1561 u32 reserved1:2; // bits 6-7
1562 u32 rx_flow:1; // bit 5
1563 u32 tx_flow:1; // bit 4
1564 u32 syncd_rx_en:1; // bit 3
1565 u32 rx_enable:1; // bit 2
1566 u32 syncd_tx_en:1; // bit 1
1567 u32 tx_enable:1; // bit 0
1568#else
1569 u32 tx_enable:1; // bit 0
1570 u32 syncd_tx_en:1; // bit 1
1571 u32 rx_enable:1; // bit 2
1572 u32 syncd_rx_en:1; // bit 3
1573 u32 tx_flow:1; // bit 4
1574 u32 rx_flow:1; // bit 5
1575 u32 reserved1:2; // bits 6-7
1576 u32 loop_back:1; // bit 8
1577 u32 reserved2:7; // bits 9-15
1578 u32 reset_tx_fun:1; // bit 16
1579 u32 reset_rx_fun:1; // bit 17
1580 u32 reset_tx_mc:1; // bit 18
1581 u32 reset_rx_mc:1; // bit 19
1582 u32 reserved3:10; // bits 20-29
1583 u32 sim_reset:1; // bit 30
1584 u32 soft_reset:1; // bit 31
1585#endif
1586 } bits;
1587} MAC_CFG1_t, *PMAC_CFG1_t;
1588
1589/*
1590 * structure for configuration #2 reg in mac address map.
1591 * located at address 0x5004
1592 */
1593typedef union _MAC_CFG2_t {
1594 u32 value;
1595 struct {
1596#ifdef _BIT_FIELDS_HTOL
1597 u32 reserved3:16; // bits 16-31
1598 u32 preamble_len:4; // bits 12-15
1599 u32 reserved2:2; // bits 10-11
1600 u32 if_mode:2; // bits 8-9
1601 u32 reserved1:2; // bits 6-7
1602 u32 huge_frame:1; // bit 5
1603 u32 len_check:1; // bit 4
1604 u32 undefined:1; // bit 3
1605 u32 pad_crc:1; // bit 2
1606 u32 crc_enable:1; // bit 1
1607 u32 full_duplex:1; // bit 0
1608#else
1609 u32 full_duplex:1; // bit 0
1610 u32 crc_enable:1; // bit 1
1611 u32 pad_crc:1; // bit 2
1612 u32 undefined:1; // bit 3
1613 u32 len_check:1; // bit 4
1614 u32 huge_frame:1; // bit 5
1615 u32 reserved1:2; // bits 6-7
1616 u32 if_mode:2; // bits 8-9
1617 u32 reserved2:2; // bits 10-11
1618 u32 preamble_len:4; // bits 12-15
1619 u32 reserved3:16; // bits 16-31
1620#endif
1621 } bits;
1622} MAC_CFG2_t, *PMAC_CFG2_t;
1623
1624/*
1625 * structure for Interpacket gap reg in mac address map.
1626 * located at address 0x5008
1627 */
1628typedef union _MAC_IPG_t {
1629 u32 value;
1630 struct {
1631#ifdef _BIT_FIELDS_HTOL
1632 u32 reserved:1; // bit 31
1633 u32 non_B2B_ipg_1:7; // bits 24-30
1634 u32 undefined2:1; // bit 23
1635 u32 non_B2B_ipg_2:7; // bits 16-22
1636 u32 min_ifg_enforce:8; // bits 8-15
1637 u32 undefined1:1; // bit 7
1638 u32 B2B_ipg:7; // bits 0-6
1639#else
1640 u32 B2B_ipg:7; // bits 0-6
1641 u32 undefined1:1; // bit 7
1642 u32 min_ifg_enforce:8; // bits 8-15
1643 u32 non_B2B_ipg_2:7; // bits 16-22
1644 u32 undefined2:1; // bit 23
1645 u32 non_B2B_ipg_1:7; // bits 24-30
1646 u32 reserved:1; // bit 31
1647#endif
1648 } bits;
1649} MAC_IPG_t, *PMAC_IPG_t;
1650
1651/*
1652 * structure for half duplex reg in mac address map.
1653 * located at address 0x500C
1654 */
1655typedef union _MAC_HFDP_t {
1656 u32 value;
1657 struct {
1658#ifdef _BIT_FIELDS_HTOL
1659 u32 reserved2:8; // bits 24-31
1660 u32 alt_beb_trunc:4; // bits 23-20
1661 u32 alt_beb_enable:1; // bit 19
1662 u32 bp_no_backoff:1; // bit 18
1663 u32 no_backoff:1; // bit 17
1664 u32 excess_defer:1; // bit 16
1665 u32 rexmit_max:4; // bits 12-15
1666 u32 reserved1:2; // bits 10-11
1667 u32 coll_window:10; // bits 0-9
1668#else
1669 u32 coll_window:10; // bits 0-9
1670 u32 reserved1:2; // bits 10-11
1671 u32 rexmit_max:4; // bits 12-15
1672 u32 excess_defer:1; // bit 16
1673 u32 no_backoff:1; // bit 17
1674 u32 bp_no_backoff:1; // bit 18
1675 u32 alt_beb_enable:1; // bit 19
1676 u32 alt_beb_trunc:4; // bits 23-20
1677 u32 reserved2:8; // bits 24-31
1678#endif
1679 } bits;
1680} MAC_HFDP_t, *PMAC_HFDP_t;
1681
1682/*
1683 * structure for Maximum Frame Length reg in mac address map.
1684 * located at address 0x5010
1685 */
1686typedef union _MAC_MAX_FM_LEN_t {
1687 u32 value;
1688 struct {
1689#ifdef _BIT_FIELDS_HTOL
1690 u32 reserved:16; // bits 16-31
1691 u32 max_len:16; // bits 0-15
1692#else
1693 u32 max_len:16; // bits 0-15
1694 u32 reserved:16; // bits 16-31
1695#endif
1696 } bits;
1697} MAC_MAX_FM_LEN_t, *PMAC_MAX_FM_LEN_t;
1698
1699/*
1700 * structure for Reserve 1 reg in mac address map.
1701 * located at address 0x5014 - 0x5018
1702 * Defined earlier (u32)
1703 */
1704
1705/*
1706 * structure for Test reg in mac address map.
1707 * located at address 0x501C
1708 */
1709typedef union _MAC_TEST_t {
1710 u32 value;
1711 struct {
1712#ifdef _BIT_FIELDS_HTOL
1713 u32 unused:29; // bits 3-31
1714 u32 mac_test:3; // bits 0-2
1715#else
1716 u32 mac_test:3; // bits 0-2
1717 u32 unused:29; // bits 3-31
1718#endif
1719 } bits;
1720} MAC_TEST_t, *PMAC_TEST_t;
1721
1722/*
1723 * structure for MII Management Configuration reg in mac address map.
1724 * located at address 0x5020
1725 */
1726typedef union _MII_MGMT_CFG_t {
1727 u32 value;
1728 struct {
1729#ifdef _BIT_FIELDS_HTOL
1730 u32 reset_mii_mgmt:1; // bit 31
1731 u32 reserved:25; // bits 6-30
1732 u32 scan_auto_incremt:1; // bit 5
1733 u32 preamble_suppress:1; // bit 4
1734 u32 undefined:1; // bit 3
1735 u32 mgmt_clk_reset:3; // bits 0-2
1736#else
1737 u32 mgmt_clk_reset:3; // bits 0-2
1738 u32 undefined:1; // bit 3
1739 u32 preamble_suppress:1; // bit 4
1740 u32 scan_auto_incremt:1; // bit 5
1741 u32 reserved:25; // bits 6-30
1742 u32 reset_mii_mgmt:1; // bit 31
1743#endif
1744 } bits;
1745} MII_MGMT_CFG_t, *PMII_MGMT_CFG_t;
1746
1747/*
1748 * structure for MII Management Command reg in mac address map.
1749 * located at address 0x5024
1750 */
1751typedef union _MII_MGMT_CMD_t {
1752 u32 value;
1753 struct {
1754#ifdef _BIT_FIELDS_HTOL
1755 u32 reserved:30; // bits 2-31
1756 u32 scan_cycle:1; // bit 1
1757 u32 read_cycle:1; // bit 0
1758#else
1759 u32 read_cycle:1; // bit 0
1760 u32 scan_cycle:1; // bit 1
1761 u32 reserved:30; // bits 2-31
1762#endif
1763 } bits;
1764} MII_MGMT_CMD_t, *PMII_MGMT_CMD_t;
1765
1766/*
1767 * structure for MII Management Address reg in mac address map.
1768 * located at address 0x5028
1769 */
1770typedef union _MII_MGMT_ADDR_t {
1771 u32 value;
1772 struct {
1773#ifdef _BIT_FIELDS_HTOL
1774 u32 reserved2:19; // bit 13-31
1775 u32 phy_addr:5; // bits 8-12
1776 u32 reserved1:3; // bits 5-7
1777 u32 reg_addr:5; // bits 0-4
1778#else
1779 u32 reg_addr:5; // bits 0-4
1780 u32 reserved1:3; // bits 5-7
1781 u32 phy_addr:5; // bits 8-12
1782 u32 reserved2:19; // bit 13-31
1783#endif
1784 } bits;
1785} MII_MGMT_ADDR_t, *PMII_MGMT_ADDR_t;
1786
1787/*
1788 * structure for MII Management Control reg in mac address map.
1789 * located at address 0x502C
1790 */
1791typedef union _MII_MGMT_CTRL_t {
1792 u32 value;
1793 struct {
1794#ifdef _BIT_FIELDS_HTOL
1795 u32 reserved:16; // bits 16-31
1796 u32 phy_ctrl:16; // bits 0-15
1797#else
1798 u32 phy_ctrl:16; // bits 0-15
1799 u32 reserved:16; // bits 16-31
1800#endif
1801 } bits;
1802} MII_MGMT_CTRL_t, *PMII_MGMT_CTRL_t;
1803
1804/*
1805 * structure for MII Management Status reg in mac address map.
1806 * located at address 0x5030
1807 */
1808typedef union _MII_MGMT_STAT_t {
1809 u32 value;
1810 struct {
1811#ifdef _BIT_FIELDS_HTOL
1812 u32 reserved:16; // bits 16-31
1813 u32 phy_stat:16; // bits 0-15
1814#else
1815 u32 phy_stat:16; // bits 0-15
1816 u32 reserved:16; // bits 16-31
1817#endif
1818 } bits;
1819} MII_MGMT_STAT_t, *PMII_MGMT_STAT_t;
1820
1821/*
1822 * structure for MII Management Indicators reg in mac address map.
1823 * located at address 0x5034
1824 */
1825typedef union _MII_MGMT_INDICATOR_t {
1826 u32 value;
1827 struct {
1828#ifdef _BIT_FIELDS_HTOL
1829 u32 reserved:29; // bits 3-31
1830 u32 not_valid:1; // bit 2
1831 u32 scanning:1; // bit 1
1832 u32 busy:1; // bit 0
1833#else
1834 u32 busy:1; // bit 0
1835 u32 scanning:1; // bit 1
1836 u32 not_valid:1; // bit 2
1837 u32 reserved:29; // bits 3-31
1838#endif
1839 } bits;
1840} MII_MGMT_INDICATOR_t, *PMII_MGMT_INDICATOR_t;
1841
1842/*
1843 * structure for Interface Control reg in mac address map.
1844 * located at address 0x5038
1845 */
1846typedef union _MAC_IF_CTRL_t {
1847 u32 value;
1848 struct {
1849#ifdef _BIT_FIELDS_HTOL
1850 u32 reset_if_module:1; // bit 31
1851 u32 reserved4:3; // bit 28-30
1852 u32 tbi_mode:1; // bit 27
1853 u32 ghd_mode:1; // bit 26
1854 u32 lhd_mode:1; // bit 25
1855 u32 phy_mode:1; // bit 24
1856 u32 reset_per_mii:1; // bit 23
1857 u32 reserved3:6; // bits 17-22
1858 u32 speed:1; // bit 16
1859 u32 reset_pe100x:1; // bit 15
1860 u32 reserved2:4; // bits 11-14
1861 u32 force_quiet:1; // bit 10
1862 u32 no_cipher:1; // bit 9
1863 u32 disable_link_fail:1; // bit 8
1864 u32 reset_gpsi:1; // bit 7
1865 u32 reserved1:6; // bits 1-6
1866 u32 enab_jab_protect:1; // bit 0
1867#else
1868 u32 enab_jab_protect:1; // bit 0
1869 u32 reserved1:6; // bits 1-6
1870 u32 reset_gpsi:1; // bit 7
1871 u32 disable_link_fail:1; // bit 8
1872 u32 no_cipher:1; // bit 9
1873 u32 force_quiet:1; // bit 10
1874 u32 reserved2:4; // bits 11-14
1875 u32 reset_pe100x:1; // bit 15
1876 u32 speed:1; // bit 16
1877 u32 reserved3:6; // bits 17-22
1878 u32 reset_per_mii:1; // bit 23
1879 u32 phy_mode:1; // bit 24
1880 u32 lhd_mode:1; // bit 25
1881 u32 ghd_mode:1; // bit 26
1882 u32 tbi_mode:1; // bit 27
1883 u32 reserved4:3; // bit 28-30
1884 u32 reset_if_module:1; // bit 31
1885#endif
1886 } bits;
1887} MAC_IF_CTRL_t, *PMAC_IF_CTRL_t;
1888
1889/*
1890 * structure for Interface Status reg in mac address map.
1891 * located at address 0x503C
1892 */
1893typedef union _MAC_IF_STAT_t {
1894 u32 value;
1895 struct {
1896#ifdef _BIT_FIELDS_HTOL
1897 u32 reserved:22; // bits 10-31
1898 u32 excess_defer:1; // bit 9
1899 u32 clash:1; // bit 8
1900 u32 phy_jabber:1; // bit 7
1901 u32 phy_link_ok:1; // bit 6
1902 u32 phy_full_duplex:1; // bit 5
1903 u32 phy_speed:1; // bit 4
1904 u32 pe100x_link_fail:1; // bit 3
1905 u32 pe10t_loss_carrie:1; // bit 2
1906 u32 pe10t_sqe_error:1; // bit 1
1907 u32 pe10t_jabber:1; // bit 0
1908#else
1909 u32 pe10t_jabber:1; // bit 0
1910 u32 pe10t_sqe_error:1; // bit 1
1911 u32 pe10t_loss_carrie:1; // bit 2
1912 u32 pe100x_link_fail:1; // bit 3
1913 u32 phy_speed:1; // bit 4
1914 u32 phy_full_duplex:1; // bit 5
1915 u32 phy_link_ok:1; // bit 6
1916 u32 phy_jabber:1; // bit 7
1917 u32 clash:1; // bit 8
1918 u32 excess_defer:1; // bit 9
1919 u32 reserved:22; // bits 10-31
1920#endif
1921 } bits;
1922} MAC_IF_STAT_t, *PMAC_IF_STAT_t;
1923
1924/*
1925 * structure for Mac Station Address, Part 1 reg in mac address map.
1926 * located at address 0x5040
1927 */
1928typedef union _MAC_STATION_ADDR1_t {
1929 u32 value;
1930 struct {
1931#ifdef _BIT_FIELDS_HTOL
1932 u32 Octet6:8; // bits 24-31
1933 u32 Octet5:8; // bits 16-23
1934 u32 Octet4:8; // bits 8-15
1935 u32 Octet3:8; // bits 0-7
1936#else
1937 u32 Octet3:8; // bits 0-7
1938 u32 Octet4:8; // bits 8-15
1939 u32 Octet5:8; // bits 16-23
1940 u32 Octet6:8; // bits 24-31
1941#endif
1942 } bits;
1943} MAC_STATION_ADDR1_t, *PMAC_STATION_ADDR1_t;
1944
1945/*
1946 * structure for Mac Station Address, Part 2 reg in mac address map.
1947 * located at address 0x5044
1948 */
1949typedef union _MAC_STATION_ADDR2_t {
1950 u32 value;
1951 struct {
1952#ifdef _BIT_FIELDS_HTOL
1953 u32 Octet2:8; // bits 24-31
1954 u32 Octet1:8; // bits 16-23
1955 u32 reserved:16; // bits 0-15
1956#else
1957 u32 reserved:16; // bit 0-15
1958 u32 Octet1:8; // bits 16-23
1959 u32 Octet2:8; // bits 24-31
1960#endif
1961 } bits;
1962} MAC_STATION_ADDR2_t, *PMAC_STATION_ADDR2_t;
1963
1964/*
1965 * MAC Module of JAGCore Address Mapping
1966 */
1967typedef struct _MAC_t { // Location:
1968 MAC_CFG1_t cfg1; // 0x5000
1969 MAC_CFG2_t cfg2; // 0x5004
1970 MAC_IPG_t ipg; // 0x5008
1971 MAC_HFDP_t hfdp; // 0x500C
1972 MAC_MAX_FM_LEN_t max_fm_len; // 0x5010
1973 u32 rsv1; // 0x5014
1974 u32 rsv2; // 0x5018
1975 MAC_TEST_t mac_test; // 0x501C
1976 MII_MGMT_CFG_t mii_mgmt_cfg; // 0x5020
1977 MII_MGMT_CMD_t mii_mgmt_cmd; // 0x5024
1978 MII_MGMT_ADDR_t mii_mgmt_addr; // 0x5028
1979 MII_MGMT_CTRL_t mii_mgmt_ctrl; // 0x502C
1980 MII_MGMT_STAT_t mii_mgmt_stat; // 0x5030
1981 MII_MGMT_INDICATOR_t mii_mgmt_indicator; // 0x5034
1982 MAC_IF_CTRL_t if_ctrl; // 0x5038
1983 MAC_IF_STAT_t if_stat; // 0x503C
1984 MAC_STATION_ADDR1_t station_addr_1; // 0x5040
1985 MAC_STATION_ADDR2_t station_addr_2; // 0x5044
1986} MAC_t, *PMAC_t;
1987
1988/* END OF MAC REGISTER ADDRESS MAP */
1989
1990/* START OF MAC STAT REGISTER ADDRESS MAP */
1991
1992/*
1993 * structure for Carry Register One and it's Mask Register reg located in mac
1994 * stat address map address 0x6130 and 0x6138.
1995 */
1996typedef union _MAC_STAT_REG_1_t {
1997 u32 value;
1998 struct {
1999#ifdef _BIT_FIELDS_HTOL
2000 u32 tr64:1; // bit 31
2001 u32 tr127:1; // bit 30
2002 u32 tr255:1; // bit 29
2003 u32 tr511:1; // bit 28
2004 u32 tr1k:1; // bit 27
2005 u32 trmax:1; // bit 26
2006 u32 trmgv:1; // bit 25
2007 u32 unused:8; // bits 17-24
2008 u32 rbyt:1; // bit 16
2009 u32 rpkt:1; // bit 15
2010 u32 rfcs:1; // bit 14
2011 u32 rmca:1; // bit 13
2012 u32 rbca:1; // bit 12
2013 u32 rxcf:1; // bit 11
2014 u32 rxpf:1; // bit 10
2015 u32 rxuo:1; // bit 9
2016 u32 raln:1; // bit 8
2017 u32 rflr:1; // bit 7
2018 u32 rcde:1; // bit 6
2019 u32 rcse:1; // bit 5
2020 u32 rund:1; // bit 4
2021 u32 rovr:1; // bit 3
2022 u32 rfrg:1; // bit 2
2023 u32 rjbr:1; // bit 1
2024 u32 rdrp:1; // bit 0
2025#else
2026 u32 rdrp:1; // bit 0
2027 u32 rjbr:1; // bit 1
2028 u32 rfrg:1; // bit 2
2029 u32 rovr:1; // bit 3
2030 u32 rund:1; // bit 4
2031 u32 rcse:1; // bit 5
2032 u32 rcde:1; // bit 6
2033 u32 rflr:1; // bit 7
2034 u32 raln:1; // bit 8
2035 u32 rxuo:1; // bit 9
2036 u32 rxpf:1; // bit 10
2037 u32 rxcf:1; // bit 11
2038 u32 rbca:1; // bit 12
2039 u32 rmca:1; // bit 13
2040 u32 rfcs:1; // bit 14
2041 u32 rpkt:1; // bit 15
2042 u32 rbyt:1; // bit 16
2043 u32 unused:8; // bits 17-24
2044 u32 trmgv:1; // bit 25
2045 u32 trmax:1; // bit 26
2046 u32 tr1k:1; // bit 27
2047 u32 tr511:1; // bit 28
2048 u32 tr255:1; // bit 29
2049 u32 tr127:1; // bit 30
2050 u32 tr64:1; // bit 31
2051#endif
2052 } bits;
2053} MAC_STAT_REG_1_t, *PMAC_STAT_REG_1_t;
2054
2055/*
2056 * structure for Carry Register Two Mask Register reg in mac stat address map.
2057 * located at address 0x613C
2058 */
2059typedef union _MAC_STAT_REG_2_t {
2060 u32 value;
2061 struct {
2062#ifdef _BIT_FIELDS_HTOL
2063 u32 unused:12; // bit 20-31
2064 u32 tjbr:1; // bit 19
2065 u32 tfcs:1; // bit 18
2066 u32 txcf:1; // bit 17
2067 u32 tovr:1; // bit 16
2068 u32 tund:1; // bit 15
2069 u32 tfrg:1; // bit 14
2070 u32 tbyt:1; // bit 13
2071 u32 tpkt:1; // bit 12
2072 u32 tmca:1; // bit 11
2073 u32 tbca:1; // bit 10
2074 u32 txpf:1; // bit 9
2075 u32 tdfr:1; // bit 8
2076 u32 tedf:1; // bit 7
2077 u32 tscl:1; // bit 6
2078 u32 tmcl:1; // bit 5
2079 u32 tlcl:1; // bit 4
2080 u32 txcl:1; // bit 3
2081 u32 tncl:1; // bit 2
2082 u32 tpfh:1; // bit 1
2083 u32 tdrp:1; // bit 0
2084#else
2085 u32 tdrp:1; // bit 0
2086 u32 tpfh:1; // bit 1
2087 u32 tncl:1; // bit 2
2088 u32 txcl:1; // bit 3
2089 u32 tlcl:1; // bit 4
2090 u32 tmcl:1; // bit 5
2091 u32 tscl:1; // bit 6
2092 u32 tedf:1; // bit 7
2093 u32 tdfr:1; // bit 8
2094 u32 txpf:1; // bit 9
2095 u32 tbca:1; // bit 10
2096 u32 tmca:1; // bit 11
2097 u32 tpkt:1; // bit 12
2098 u32 tbyt:1; // bit 13
2099 u32 tfrg:1; // bit 14
2100 u32 tund:1; // bit 15
2101 u32 tovr:1; // bit 16
2102 u32 txcf:1; // bit 17
2103 u32 tfcs:1; // bit 18
2104 u32 tjbr:1; // bit 19
2105 u32 unused:12; // bit 20-31
2106#endif
2107 } bits;
2108} MAC_STAT_REG_2_t, *PMAC_STAT_REG_2_t;
2109
2110/*
2111 * MAC STATS Module of JAGCore Address Mapping
2112 */
2113typedef struct _MAC_STAT_t { // Location:
2114 u32 pad[32]; // 0x6000 - 607C
2115
2116 // Tx/Rx 0-64 Byte Frame Counter
2117 u32 TR64; // 0x6080
2118
2119 // Tx/Rx 65-127 Byte Frame Counter
2120 u32 TR127; // 0x6084
2121
2122 // Tx/Rx 128-255 Byte Frame Counter
2123 u32 TR255; // 0x6088
2124
2125 // Tx/Rx 256-511 Byte Frame Counter
2126 u32 TR511; // 0x608C
2127
2128 // Tx/Rx 512-1023 Byte Frame Counter
2129 u32 TR1K; // 0x6090
2130
2131 // Tx/Rx 1024-1518 Byte Frame Counter
2132 u32 TRMax; // 0x6094
2133
2134 // Tx/Rx 1519-1522 Byte Good VLAN Frame Count
2135 u32 TRMgv; // 0x6098
2136
2137 // Rx Byte Counter
2138 u32 RByt; // 0x609C
2139
2140 // Rx Packet Counter
2141 u32 RPkt; // 0x60A0
2142
2143 // Rx FCS Error Counter
2144 u32 RFcs; // 0x60A4
2145
2146 // Rx Multicast Packet Counter
2147 u32 RMca; // 0x60A8
2148
2149 // Rx Broadcast Packet Counter
2150 u32 RBca; // 0x60AC
2151
2152 // Rx Control Frame Packet Counter
2153 u32 RxCf; // 0x60B0
2154
2155 // Rx Pause Frame Packet Counter
2156 u32 RxPf; // 0x60B4
2157
2158 // Rx Unknown OP Code Counter
2159 u32 RxUo; // 0x60B8
2160
2161 // Rx Alignment Error Counter
2162 u32 RAln; // 0x60BC
2163
2164 // Rx Frame Length Error Counter
2165 u32 RFlr; // 0x60C0
2166
2167 // Rx Code Error Counter
2168 u32 RCde; // 0x60C4
2169
2170 // Rx Carrier Sense Error Counter
2171 u32 RCse; // 0x60C8
2172
2173 // Rx Undersize Packet Counter
2174 u32 RUnd; // 0x60CC
2175
2176 // Rx Oversize Packet Counter
2177 u32 ROvr; // 0x60D0
2178
2179 // Rx Fragment Counter
2180 u32 RFrg; // 0x60D4
2181
2182 // Rx Jabber Counter
2183 u32 RJbr; // 0x60D8
2184
2185 // Rx Drop
2186 u32 RDrp; // 0x60DC
2187
2188 // Tx Byte Counter
2189 u32 TByt; // 0x60E0
2190
2191 // Tx Packet Counter
2192 u32 TPkt; // 0x60E4
2193
2194 // Tx Multicast Packet Counter
2195 u32 TMca; // 0x60E8
2196
2197 // Tx Broadcast Packet Counter
2198 u32 TBca; // 0x60EC
2199
2200 // Tx Pause Control Frame Counter
2201 u32 TxPf; // 0x60F0
2202
2203 // Tx Deferral Packet Counter
2204 u32 TDfr; // 0x60F4
2205
2206 // Tx Excessive Deferral Packet Counter
2207 u32 TEdf; // 0x60F8
2208
2209 // Tx Single Collision Packet Counter
2210 u32 TScl; // 0x60FC
2211
2212 // Tx Multiple Collision Packet Counter
2213 u32 TMcl; // 0x6100
2214
2215 // Tx Late Collision Packet Counter
2216 u32 TLcl; // 0x6104
2217
2218 // Tx Excessive Collision Packet Counter
2219 u32 TXcl; // 0x6108
2220
2221 // Tx Total Collision Packet Counter
2222 u32 TNcl; // 0x610C
2223
2224 // Tx Pause Frame Honored Counter
2225 u32 TPfh; // 0x6110
2226
2227 // Tx Drop Frame Counter
2228 u32 TDrp; // 0x6114
2229
2230 // Tx Jabber Frame Counter
2231 u32 TJbr; // 0x6118
2232
2233 // Tx FCS Error Counter
2234 u32 TFcs; // 0x611C
2235
2236 // Tx Control Frame Counter
2237 u32 TxCf; // 0x6120
2238
2239 // Tx Oversize Frame Counter
2240 u32 TOvr; // 0x6124
2241
2242 // Tx Undersize Frame Counter
2243 u32 TUnd; // 0x6128
2244
2245 // Tx Fragments Frame Counter
2246 u32 TFrg; // 0x612C
2247
2248 // Carry Register One Register
2249 MAC_STAT_REG_1_t Carry1; // 0x6130
2250
2251 // Carry Register Two Register
2252 MAC_STAT_REG_2_t Carry2; // 0x6134
2253
2254 // Carry Register One Mask Register
2255 MAC_STAT_REG_1_t Carry1M; // 0x6138
2256
2257 // Carry Register Two Mask Register
2258 MAC_STAT_REG_2_t Carry2M; // 0x613C
2259} MAC_STAT_t, *PMAC_STAT_t;
2260
2261/* END OF MAC STAT REGISTER ADDRESS MAP */
2262
2263
2264/* START OF MMC REGISTER ADDRESS MAP */
2265
2266/*
2267 * structure for Main Memory Controller Control reg in mmc address map.
2268 * located at address 0x7000
2269 */
2270typedef union _MMC_CTRL_t {
2271 u32 value;
2272 struct {
2273#ifdef _BIT_FIELDS_HTOL
2274 u32 reserved:25; // bits 7-31
2275 u32 force_ce:1; // bit 6
2276 u32 rxdma_disable:1; // bit 5
2277 u32 txdma_disable:1; // bit 4
2278 u32 txmac_disable:1; // bit 3
2279 u32 rxmac_disable:1; // bit 2
2280 u32 arb_disable:1; // bit 1
2281 u32 mmc_enable:1; // bit 0
2282#else
2283 u32 mmc_enable:1; // bit 0
2284 u32 arb_disable:1; // bit 1
2285 u32 rxmac_disable:1; // bit 2
2286 u32 txmac_disable:1; // bit 3
2287 u32 txdma_disable:1; // bit 4
2288 u32 rxdma_disable:1; // bit 5
2289 u32 force_ce:1; // bit 6
2290 u32 reserved:25; // bits 7-31
2291#endif
2292 } bits;
2293} MMC_CTRL_t, *PMMC_CTRL_t;
2294
2295/*
2296 * structure for Main Memory Controller Host Memory Access Address reg in mmc
2297 * address map. Located at address 0x7004
2298 */
2299typedef union _MMC_SRAM_ACCESS_t {
2300 u32 value;
2301 struct {
2302#ifdef _BIT_FIELDS_HTOL
2303 u32 byte_enable:16; // bits 16-31
2304 u32 reserved2:2; // bits 14-15
2305 u32 req_addr:10; // bits 4-13
2306 u32 reserved1:1; // bit 3
2307 u32 is_ctrl_word:1; // bit 2
2308 u32 wr_access:1; // bit 1
2309 u32 req_access:1; // bit 0
2310#else
2311 u32 req_access:1; // bit 0
2312 u32 wr_access:1; // bit 1
2313 u32 is_ctrl_word:1; // bit 2
2314 u32 reserved1:1; // bit 3
2315 u32 req_addr:10; // bits 4-13
2316 u32 reserved2:2; // bits 14-15
2317 u32 byte_enable:16; // bits 16-31
2318#endif
2319 } bits;
2320} MMC_SRAM_ACCESS_t, *PMMC_SRAM_ACCESS_t;
2321
2322/*
2323 * structure for Main Memory Controller Host Memory Access Data reg in mmc
2324 * address map. Located at address 0x7008 - 0x7014
2325 * Defined earlier (u32)
2326 */
2327
2328/*
2329 * Memory Control Module of JAGCore Address Mapping
2330 */
2331typedef struct _MMC_t { // Location:
2332 MMC_CTRL_t mmc_ctrl; // 0x7000
2333 MMC_SRAM_ACCESS_t sram_access; // 0x7004
2334 u32 sram_word1; // 0x7008
2335 u32 sram_word2; // 0x700C
2336 u32 sram_word3; // 0x7010
2337 u32 sram_word4; // 0x7014
2338} MMC_t, *PMMC_t;
2339
2340/* END OF MMC REGISTER ADDRESS MAP */
2341
2342
2343/* START OF EXP ROM REGISTER ADDRESS MAP */
2344
2345/*
2346 * Expansion ROM Module of JAGCore Address Mapping
2347 */
2348
2349/* Take this out until it is not empty */
2350#if 0
2351typedef struct _EXP_ROM_t {
2352
2353} EXP_ROM_t, *PEXP_ROM_t;
2354#endif
2355
2356/* END OF EXP ROM REGISTER ADDRESS MAP */
2357
2358
2359/*
2360 * JAGCore Address Mapping
2361 */
2362typedef struct _ADDRESS_MAP_t {
2363 GLOBAL_t global;
2364 // unused section of global address map
2365 u8 unused_global[4096 - sizeof(GLOBAL_t)];
2366 TXDMA_t txdma;
2367 // unused section of txdma address map
2368 u8 unused_txdma[4096 - sizeof(TXDMA_t)];
2369 RXDMA_t rxdma;
2370 // unused section of rxdma address map
2371 u8 unused_rxdma[4096 - sizeof(RXDMA_t)];
2372 TXMAC_t txmac;
2373 // unused section of txmac address map
2374 u8 unused_txmac[4096 - sizeof(TXMAC_t)];
2375 RXMAC_t rxmac;
2376 // unused section of rxmac address map
2377 u8 unused_rxmac[4096 - sizeof(RXMAC_t)];
2378 MAC_t mac;
2379 // unused section of mac address map
2380 u8 unused_mac[4096 - sizeof(MAC_t)];
2381 MAC_STAT_t macStat;
2382 // unused section of mac stat address map
2383 u8 unused_mac_stat[4096 - sizeof(MAC_STAT_t)];
2384 MMC_t mmc;
2385 // unused section of mmc address map
2386 u8 unused_mmc[4096 - sizeof(MMC_t)];
2387 // unused section of address map
2388 u8 unused_[1015808];
2389
2390/* Take this out until it is not empty */
2391#if 0
2392 EXP_ROM_t exp_rom;
2393#endif
2394
2395 u8 unused_exp_rom[4096]; // MGS-size TBD
2396 u8 unused__[524288]; // unused section of address map
2397} ADDRESS_MAP_t, *PADDRESS_MAP_t;
2398
2399#endif /* _ET1310_ADDRESS_MAP_H_ */
diff --git a/drivers/staging/et131x/et1310_eeprom.c b/drivers/staging/et131x/et1310_eeprom.c
new file mode 100644
index 00000000000..c2b194e6a54
--- /dev/null
+++ b/drivers/staging/et131x/et1310_eeprom.c
@@ -0,0 +1,480 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_eeprom.c - Code used to access the device's EEPROM
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/pci.h>
63#include <linux/init.h>
64#include <linux/module.h>
65#include <linux/types.h>
66#include <linux/kernel.h>
67
68#include <linux/sched.h>
69#include <linux/ptrace.h>
70#include <linux/slab.h>
71#include <linux/ctype.h>
72#include <linux/string.h>
73#include <linux/timer.h>
74#include <linux/interrupt.h>
75#include <linux/in.h>
76#include <linux/delay.h>
77#include <asm/io.h>
78#include <asm/system.h>
79#include <asm/bitops.h>
80
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90#include "et1310_eeprom.h"
91
92#include "et131x_adapter.h"
93#include "et131x_initpci.h"
94#include "et131x_isr.h"
95
96#include "et1310_tx.h"
97
98
99/*
100 * EEPROM Defines
101 */
102
103/* LBCIF Register Groups (addressed via 32-bit offsets) */
104#define LBCIF_DWORD0_GROUP_OFFSET 0xAC
105#define LBCIF_DWORD1_GROUP_OFFSET 0xB0
106
107/* LBCIF Registers (addressed via 8-bit offsets) */
108#define LBCIF_ADDRESS_REGISTER_OFFSET 0xAC
109#define LBCIF_DATA_REGISTER_OFFSET 0xB0
110#define LBCIF_CONTROL_REGISTER_OFFSET 0xB1
111#define LBCIF_STATUS_REGISTER_OFFSET 0xB2
112
113/* LBCIF Control Register Bits */
114#define LBCIF_CONTROL_SEQUENTIAL_READ 0x01
115#define LBCIF_CONTROL_PAGE_WRITE 0x02
116#define LBCIF_CONTROL_UNUSED1 0x04
117#define LBCIF_CONTROL_EEPROM_RELOAD 0x08
118#define LBCIF_CONTROL_UNUSED2 0x10
119#define LBCIF_CONTROL_TWO_BYTE_ADDR 0x20
120#define LBCIF_CONTROL_I2C_WRITE 0x40
121#define LBCIF_CONTROL_LBCIF_ENABLE 0x80
122
123/* LBCIF Status Register Bits */
124#define LBCIF_STATUS_PHY_QUEUE_AVAIL 0x01
125#define LBCIF_STATUS_I2C_IDLE 0x02
126#define LBCIF_STATUS_ACK_ERROR 0x04
127#define LBCIF_STATUS_GENERAL_ERROR 0x08
128#define LBCIF_STATUS_UNUSED 0x30
129#define LBCIF_STATUS_CHECKSUM_ERROR 0x40
130#define LBCIF_STATUS_EEPROM_PRESENT 0x80
131
132/* Miscellaneous Constraints */
133#define MAX_NUM_REGISTER_POLLS 1000
134#define MAX_NUM_WRITE_RETRIES 2
135
136/*
137 * Define macros that allow individual register values to be extracted from a
138 * DWORD1 register grouping
139 */
140#define EXTRACT_DATA_REGISTER(x) (uint8_t)(x & 0xFF)
141#define EXTRACT_STATUS_REGISTER(x) (uint8_t)((x >> 16) & 0xFF)
142#define EXTRACT_CONTROL_REG(x) (uint8_t)((x >> 8) & 0xFF)
143
144/**
145 * EepromWriteByte - Write a byte to the ET1310's EEPROM
146 * @pAdapter: pointer to our private adapter structure
147 * @unAddress: the address to write
148 * @bData: the value to write
149 * @unEepronId: the ID of the EEPROM
150 * @unAddressingMode: how the EEPROM is to be accessed
151 *
152 * Returns SUCCESS or FAILURE
153 */
154int32_t EepromWriteByte(struct et131x_adapter *pAdapter, uint32_t unAddress,
155 uint8_t bData, uint32_t unEepromId,
156 uint32_t unAddressingMode)
157{
158 struct pci_dev *pdev = pAdapter->pdev;
159 int32_t nIndex;
160 int32_t nRetries;
161 int32_t nError = false;
162 int32_t nI2CWriteActive = 0;
163 int32_t nWriteSuccessful = 0;
164 uint8_t bControl;
165 uint8_t bStatus = 0;
166 uint32_t unDword1 = 0;
167 uint32_t unData = 0;
168
169 /*
170 * The following excerpt is from "Serial EEPROM HW Design
171 * Specification" Version 0.92 (9/20/2004):
172 *
173 * Single Byte Writes
174 *
175 * For an EEPROM, an I2C single byte write is defined as a START
176 * condition followed by the device address, EEPROM address, one byte
177 * of data and a STOP condition. The STOP condition will trigger the
178 * EEPROM's internally timed write cycle to the nonvolatile memory.
179 * All inputs are disabled during this write cycle and the EEPROM will
180 * not respond to any access until the internal write is complete.
181 * The steps to execute a single byte write are as follows:
182 *
183 * 1. Check LBCIF Status Register for bits 6 & 3:2 all equal to 0 and
184 * bits 7,1:0 both equal to 1, at least once after reset.
185 * Subsequent operations need only to check that bits 1:0 are
186 * equal to 1 prior to starting a single byte write.
187 *
188 * 2. Write to the LBCIF Control Register: bit 7=1, bit 6=1, bit 3=0,
189 * and bits 1:0 both =0. Bit 5 should be set according to the
190 * type of EEPROM being accessed (1=two byte addressing, 0=one
191 * byte addressing).
192 *
193 * 3. Write the address to the LBCIF Address Register.
194 *
195 * 4. Write the data to the LBCIF Data Register (the I2C write will
196 * begin).
197 *
198 * 5. Monitor bit 1:0 of the LBCIF Status Register. When bits 1:0 are
199 * both equal to 1, the I2C write has completed and the internal
200 * write cycle of the EEPROM is about to start. (bits 1:0 = 01 is
201 * a legal state while waiting from both equal to 1, but bits
202 * 1:0 = 10 is invalid and implies that something is broken).
203 *
204 * 6. Check bit 3 of the LBCIF Status Register. If equal to 1, an
205 * error has occurred.
206 *
207 * 7. Check bit 2 of the LBCIF Status Register. If equal to 1 an ACK
208 * error has occurred on the address phase of the write. This
209 * could be due to an actual hardware failure or the EEPROM may
210 * still be in its internal write cycle from a previous write.
211 * This write operation was ignored and must be repeated later.
212 *
213 * 8. Set bit 6 of the LBCIF Control Register = 0. If another write is
214 * required, go to step 1.
215 */
216
217 /* Step 1: */
218 for (nIndex = 0; nIndex < MAX_NUM_REGISTER_POLLS; nIndex++) {
219 /* Read registers grouped in DWORD1 */
220 if (pci_read_config_dword(pdev, LBCIF_DWORD1_GROUP_OFFSET,
221 &unDword1)) {
222 nError = 1;
223 break;
224 }
225
226 bStatus = EXTRACT_STATUS_REGISTER(unDword1);
227
228 if (bStatus & LBCIF_STATUS_PHY_QUEUE_AVAIL &&
229 bStatus & LBCIF_STATUS_I2C_IDLE) {
230 /* bits 1:0 are equal to 1 */
231 break;
232 }
233 }
234
235 if (nError || (nIndex >= MAX_NUM_REGISTER_POLLS)) {
236 return FAILURE;
237 }
238
239 /* Step 2: */
240 bControl = 0;
241 bControl |= LBCIF_CONTROL_LBCIF_ENABLE | LBCIF_CONTROL_I2C_WRITE;
242
243 if (unAddressingMode == DUAL_BYTE) {
244 bControl |= LBCIF_CONTROL_TWO_BYTE_ADDR;
245 }
246
247 if (pci_write_config_byte(pdev, LBCIF_CONTROL_REGISTER_OFFSET,
248 bControl)) {
249 return FAILURE;
250 }
251
252 nI2CWriteActive = 1;
253
254 /* Prepare EEPROM address for Step 3 */
255 unAddress |= (unAddressingMode == DUAL_BYTE) ?
256 (unEepromId << 16) : (unEepromId << 8);
257
258 for (nRetries = 0; nRetries < MAX_NUM_WRITE_RETRIES; nRetries++) {
259 /* Step 3:*/
260 if (pci_write_config_dword(pdev, LBCIF_ADDRESS_REGISTER_OFFSET,
261 unAddress)) {
262 break;
263 }
264
265 /* Step 4: */
266 if (pci_write_config_byte(pdev, LBCIF_DATA_REGISTER_OFFSET,
267 bData)) {
268 break;
269 }
270
271 /* Step 5: */
272 for (nIndex = 0; nIndex < MAX_NUM_REGISTER_POLLS; nIndex++) {
273 /* Read registers grouped in DWORD1 */
274 if (pci_read_config_dword(pdev,
275 LBCIF_DWORD1_GROUP_OFFSET,
276 &unDword1)) {
277 nError = 1;
278 break;
279 }
280
281 bStatus = EXTRACT_STATUS_REGISTER(unDword1);
282
283 if (bStatus & LBCIF_STATUS_PHY_QUEUE_AVAIL &&
284 bStatus & LBCIF_STATUS_I2C_IDLE) {
285 /* I2C write complete */
286 break;
287 }
288 }
289
290 if (nError || (nIndex >= MAX_NUM_REGISTER_POLLS)) {
291 break;
292 }
293
294 /*
295 * Step 6: Don't break here if we are revision 1, this is
296 * so we do a blind write for load bug.
297 */
298 if (bStatus & LBCIF_STATUS_GENERAL_ERROR
299 && pAdapter->RevisionID == 0) {
300 break;
301 }
302
303 /* Step 7 */
304 if (bStatus & LBCIF_STATUS_ACK_ERROR) {
305 /*
306 * This could be due to an actual hardware failure
307 * or the EEPROM may still be in its internal write
308 * cycle from a previous write. This write operation
309 * was ignored and must be repeated later.
310 */
311 udelay(10);
312 continue;
313 }
314
315 nWriteSuccessful = 1;
316 break;
317 }
318
319 /* Step 8: */
320 udelay(10);
321 nIndex = 0;
322 while (nI2CWriteActive) {
323 bControl &= ~LBCIF_CONTROL_I2C_WRITE;
324
325 if (pci_write_config_byte(pdev, LBCIF_CONTROL_REGISTER_OFFSET,
326 bControl)) {
327 nWriteSuccessful = 0;
328 }
329
330 /* Do read until internal ACK_ERROR goes away meaning write
331 * completed
332 */
333 do {
334 pci_write_config_dword(pdev,
335 LBCIF_ADDRESS_REGISTER_OFFSET,
336 unAddress);
337 do {
338 pci_read_config_dword(pdev,
339 LBCIF_DATA_REGISTER_OFFSET, &unData);
340 } while ((unData & 0x00010000) == 0);
341 } while (unData & 0x00040000);
342
343 bControl = EXTRACT_CONTROL_REG(unData);
344
345 if (bControl != 0xC0 || nIndex == 10000) {
346 break;
347 }
348
349 nIndex++;
350 }
351
352 return nWriteSuccessful ? SUCCESS : FAILURE;
353}
354
355/**
356 * EepromReadByte - Read a byte from the ET1310's EEPROM
357 * @pAdapter: pointer to our private adapter structure
358 * @unAddress: the address from which to read
359 * @pbData: a pointer to a byte in which to store the value of the read
360 * @unEepronId: the ID of the EEPROM
361 * @unAddressingMode: how the EEPROM is to be accessed
362 *
363 * Returns SUCCESS or FAILURE
364 */
365int32_t EepromReadByte(struct et131x_adapter *pAdapter, uint32_t unAddress,
366 uint8_t *pbData, uint32_t unEepromId,
367 uint32_t unAddressingMode)
368{
369 struct pci_dev *pdev = pAdapter->pdev;
370 int32_t nIndex;
371 int32_t nError = 0;
372 uint8_t bControl;
373 uint8_t bStatus = 0;
374 uint32_t unDword1 = 0;
375
376 /*
377 * The following excerpt is from "Serial EEPROM HW Design
378 * Specification" Version 0.92 (9/20/2004):
379 *
380 * Single Byte Reads
381 *
382 * A single byte read is similar to the single byte write, with the
383 * exception of the data flow:
384 *
385 * 1. Check LBCIF Status Register for bits 6 & 3:2 all equal to 0 and
386 * bits 7,1:0 both equal to 1, at least once after reset.
387 * Subsequent operations need only to check that bits 1:0 are equal
388 * to 1 prior to starting a single byte read.
389 *
390 * 2. Write to the LBCIF Control Register: bit 7=1, bit 6=0, bit 3=0,
391 * and bits 1:0 both =0. Bit 5 should be set according to the type
392 * of EEPROM being accessed (1=two byte addressing, 0=one byte
393 * addressing).
394 *
395 * 3. Write the address to the LBCIF Address Register (I2C read will
396 * begin).
397 *
398 * 4. Monitor bit 0 of the LBCIF Status Register. When =1, I2C read
399 * is complete. (if bit 1 =1 and bit 0 stays =0, a hardware failure
400 * has occurred).
401 *
402 * 5. Check bit 2 of the LBCIF Status Register. If =1, then an error
403 * has occurred. The data that has been returned from the PHY may
404 * be invalid.
405 *
406 * 6. Regardless of error status, read data byte from LBCIF Data
407 * Register. If another byte is required, go to step 1.
408 */
409
410 /* Step 1: */
411 for (nIndex = 0; nIndex < MAX_NUM_REGISTER_POLLS; nIndex++) {
412 /* Read registers grouped in DWORD1 */
413 if (pci_read_config_dword(pdev, LBCIF_DWORD1_GROUP_OFFSET,
414 &unDword1)) {
415 nError = 1;
416 break;
417 }
418
419 bStatus = EXTRACT_STATUS_REGISTER(unDword1);
420
421 if (bStatus & LBCIF_STATUS_PHY_QUEUE_AVAIL &&
422 bStatus & LBCIF_STATUS_I2C_IDLE) {
423 /* bits 1:0 are equal to 1 */
424 break;
425 }
426 }
427
428 if (nError || (nIndex >= MAX_NUM_REGISTER_POLLS)) {
429 return FAILURE;
430 }
431
432 /* Step 2: */
433 bControl = 0;
434 bControl |= LBCIF_CONTROL_LBCIF_ENABLE;
435
436 if (unAddressingMode == DUAL_BYTE) {
437 bControl |= LBCIF_CONTROL_TWO_BYTE_ADDR;
438 }
439
440 if (pci_write_config_byte(pdev, LBCIF_CONTROL_REGISTER_OFFSET,
441 bControl)) {
442 return FAILURE;
443 }
444
445 /* Step 3: */
446 unAddress |= (unAddressingMode == DUAL_BYTE) ?
447 (unEepromId << 16) : (unEepromId << 8);
448
449 if (pci_write_config_dword(pdev, LBCIF_ADDRESS_REGISTER_OFFSET,
450 unAddress)) {
451 return FAILURE;
452 }
453
454 /* Step 4: */
455 for (nIndex = 0; nIndex < MAX_NUM_REGISTER_POLLS; nIndex++) {
456 /* Read registers grouped in DWORD1 */
457 if (pci_read_config_dword(pdev, LBCIF_DWORD1_GROUP_OFFSET,
458 &unDword1)) {
459 nError = 1;
460 break;
461 }
462
463 bStatus = EXTRACT_STATUS_REGISTER(unDword1);
464
465 if (bStatus & LBCIF_STATUS_PHY_QUEUE_AVAIL
466 && bStatus & LBCIF_STATUS_I2C_IDLE) {
467 /* I2C read complete */
468 break;
469 }
470 }
471
472 if (nError || (nIndex >= MAX_NUM_REGISTER_POLLS)) {
473 return FAILURE;
474 }
475
476 /* Step 6: */
477 *pbData = EXTRACT_DATA_REGISTER(unDword1);
478
479 return (bStatus & LBCIF_STATUS_ACK_ERROR) ? FAILURE : SUCCESS;
480}
diff --git a/drivers/staging/et131x/et1310_eeprom.h b/drivers/staging/et131x/et1310_eeprom.h
new file mode 100644
index 00000000000..9b6f8ad77b4
--- /dev/null
+++ b/drivers/staging/et131x/et1310_eeprom.h
@@ -0,0 +1,89 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_eeprom.h - Defines, structs, enums, prototypes, etc. used for EEPROM
12 * access routines
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET1310_EEPROM_H__
60#define __ET1310_EEPROM_H__
61
62#include "et1310_address_map.h"
63
64#ifndef SUCCESS
65#define SUCCESS 0
66#define FAILURE 1
67#endif
68
69#ifndef READ
70#define READ 0
71#define WRITE 1
72#endif
73
74#ifndef SINGLE_BYTE
75#define SINGLE_BYTE 0
76#define DUAL_BYTE 1
77#endif
78
79/* Forward declaration of the private adapter structure */
80struct et131x_adapter;
81
82int32_t EepromWriteByte(struct et131x_adapter *adapter, u32 unAddress,
83 u8 bData, u32 unEepromId,
84 u32 unAddressingMode);
85int32_t EepromReadByte(struct et131x_adapter *adapter, u32 unAddress,
86 u8 *pbData, u32 unEepromId,
87 u32 unAddressingMode);
88
89#endif /* _ET1310_EEPROM_H_ */
diff --git a/drivers/staging/et131x/et1310_jagcore.c b/drivers/staging/et131x/et1310_jagcore.c
new file mode 100644
index 00000000000..993b30ea71e
--- /dev/null
+++ b/drivers/staging/et131x/et1310_jagcore.c
@@ -0,0 +1,220 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_jagcore.c - All code pertaining to the ET1301/ET131x's JAGcore
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/init.h>
63#include <linux/module.h>
64#include <linux/types.h>
65#include <linux/kernel.h>
66
67#include <linux/sched.h>
68#include <linux/ptrace.h>
69#include <linux/slab.h>
70#include <linux/ctype.h>
71#include <linux/string.h>
72#include <linux/timer.h>
73#include <linux/interrupt.h>
74#include <linux/in.h>
75#include <linux/delay.h>
76#include <asm/io.h>
77#include <asm/system.h>
78#include <asm/bitops.h>
79
80#include <linux/netdevice.h>
81#include <linux/etherdevice.h>
82#include <linux/skbuff.h>
83#include <linux/if_arp.h>
84#include <linux/ioport.h>
85
86#include "et1310_phy.h"
87#include "et1310_pm.h"
88#include "et1310_jagcore.h"
89
90#include "et131x_adapter.h"
91#include "et131x_initpci.h"
92
93/* Data for debugging facilities */
94#ifdef CONFIG_ET131X_DEBUG
95extern dbg_info_t *et131x_dbginfo;
96#endif /* CONFIG_ET131X_DEBUG */
97
98/**
99 * ConfigGlobalRegs - Used to configure the global registers on the JAGCore
100 * @pAdpater: pointer to our adapter structure
101 */
102void ConfigGlobalRegs(struct et131x_adapter *pAdapter)
103{
104 struct _GLOBAL_t __iomem *pGbl = &pAdapter->CSRAddress->global;
105
106 DBG_ENTER(et131x_dbginfo);
107
108 if (pAdapter->RegistryPhyLoopbk == false) {
109 if (pAdapter->RegistryJumboPacket < 2048) {
110 /* Tx / RxDMA and Tx/Rx MAC interfaces have a 1k word
111 * block of RAM that the driver can split between Tx
112 * and Rx as it desires. Our default is to split it
113 * 50/50:
114 */
115 writel(0, &pGbl->rxq_start_addr.value);
116 writel(pAdapter->RegistryRxMemEnd,
117 &pGbl->rxq_end_addr.value);
118 writel(pAdapter->RegistryRxMemEnd + 1,
119 &pGbl->txq_start_addr.value);
120 writel(INTERNAL_MEM_SIZE - 1,
121 &pGbl->txq_end_addr.value);
122 } else if (pAdapter->RegistryJumboPacket < 8192) {
123 /* For jumbo packets > 2k but < 8k, split 50-50. */
124 writel(0, &pGbl->rxq_start_addr.value);
125 writel(INTERNAL_MEM_RX_OFFSET,
126 &pGbl->rxq_end_addr.value);
127 writel(INTERNAL_MEM_RX_OFFSET + 1,
128 &pGbl->txq_start_addr.value);
129 writel(INTERNAL_MEM_SIZE - 1,
130 &pGbl->txq_end_addr.value);
131 } else {
132 /* 9216 is the only packet size greater than 8k that
133 * is available. The Tx buffer has to be big enough
134 * for one whole packet on the Tx side. We'll make
135 * the Tx 9408, and give the rest to Rx
136 */
137 writel(0x0000, &pGbl->rxq_start_addr.value);
138 writel(0x01b3, &pGbl->rxq_end_addr.value);
139 writel(0x01b4, &pGbl->txq_start_addr.value);
140 writel(INTERNAL_MEM_SIZE - 1,
141 &pGbl->txq_end_addr.value);
142 }
143
144 /* Initialize the loopback register. Disable all loopbacks. */
145 writel(0, &pGbl->loopback.value);
146 } else {
147 /* For PHY Line loopback, the memory is configured as if Tx
148 * and Rx both have all the memory. This is because the
149 * RxMAC will write data into the space, and the TxMAC will
150 * read it out.
151 */
152 writel(0, &pGbl->rxq_start_addr.value);
153 writel(INTERNAL_MEM_SIZE - 1, &pGbl->rxq_end_addr.value);
154 writel(0, &pGbl->txq_start_addr.value);
155 writel(INTERNAL_MEM_SIZE - 1, &pGbl->txq_end_addr.value);
156
157 /* Initialize the loopback register (MAC loopback). */
158 writel(1, &pGbl->loopback.value);
159 }
160
161 /* MSI Register */
162 writel(0, &pGbl->msi_config.value);
163
164 /* By default, disable the watchdog timer. It will be enabled when
165 * a packet is queued.
166 */
167 writel(0, &pGbl->watchdog_timer);
168
169 DBG_LEAVE(et131x_dbginfo);
170}
171
172/**
173 * ConfigMMCRegs - Used to configure the main memory registers in the JAGCore
174 * @pAdapter: pointer to our adapter structure
175 */
176void ConfigMMCRegs(struct et131x_adapter *pAdapter)
177{
178 MMC_CTRL_t mmc_ctrl = { 0 };
179
180 DBG_ENTER(et131x_dbginfo);
181
182 /* All we need to do is initialize the Memory Control Register */
183 mmc_ctrl.bits.force_ce = 0x0;
184 mmc_ctrl.bits.rxdma_disable = 0x0;
185 mmc_ctrl.bits.txdma_disable = 0x0;
186 mmc_ctrl.bits.txmac_disable = 0x0;
187 mmc_ctrl.bits.rxmac_disable = 0x0;
188 mmc_ctrl.bits.arb_disable = 0x0;
189 mmc_ctrl.bits.mmc_enable = 0x1;
190
191 writel(mmc_ctrl.value, &pAdapter->CSRAddress->mmc.mmc_ctrl.value);
192
193 DBG_LEAVE(et131x_dbginfo);
194}
195
196void et131x_enable_interrupts(struct et131x_adapter *adapter)
197{
198 uint32_t MaskValue;
199
200 /* Enable all global interrupts */
201 if ((adapter->FlowControl == TxOnly) || (adapter->FlowControl == Both)) {
202 MaskValue = INT_MASK_ENABLE;
203 } else {
204 MaskValue = INT_MASK_ENABLE_NO_FLOW;
205 }
206
207 if (adapter->DriverNoPhyAccess) {
208 MaskValue |= 0x10000;
209 }
210
211 adapter->CachedMaskValue.value = MaskValue;
212 writel(MaskValue, &adapter->CSRAddress->global.int_mask.value);
213}
214
215void et131x_disable_interrupts(struct et131x_adapter * adapter)
216{
217 /* Disable all global interrupts */
218 adapter->CachedMaskValue.value = INT_MASK_DISABLE;
219 writel(INT_MASK_DISABLE, &adapter->CSRAddress->global.int_mask.value);
220}
diff --git a/drivers/staging/et131x/et1310_jagcore.h b/drivers/staging/et131x/et1310_jagcore.h
new file mode 100644
index 00000000000..9fc829336df
--- /dev/null
+++ b/drivers/staging/et131x/et1310_jagcore.h
@@ -0,0 +1,112 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_jagcore.h - Defines, structs, enums, prototypes, etc. pertaining to
12 * the JAGCore
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET1310_JAGCORE_H__
60#define __ET1310_JAGCORE_H__
61
62#include "et1310_address_map.h"
63
64
65#define INTERNAL_MEM_SIZE 0x400 //1024 of internal memory
66#define INTERNAL_MEM_RX_OFFSET 0x1FF //50% Tx, 50% Rx
67
68#define REGS_MAX_ARRAY 4096
69
70/*
71 * For interrupts, normal running is:
72 * rxdma_xfr_done, phy_interrupt, mac_stat_interrupt,
73 * watchdog_interrupt & txdma_xfer_done
74 *
75 * In both cases, when flow control is enabled for either Tx or bi-direction,
76 * we additional enable rx_fbr0_low and rx_fbr1_low, so we know when the
77 * buffer rings are running low.
78 */
79#define INT_MASK_DISABLE 0xffffffff
80
81// NOTE: Masking out MAC_STAT Interrupt for now...
82//#define INT_MASK_ENABLE 0xfff6bf17
83//#define INT_MASK_ENABLE_NO_FLOW 0xfff6bfd7
84#define INT_MASK_ENABLE 0xfffebf17
85#define INT_MASK_ENABLE_NO_FLOW 0xfffebfd7
86
87/* DATA STRUCTURES FOR DIRECT REGISTER ACCESS */
88
89typedef struct {
90 u8 bReadWrite;
91 u32 nRegCount;
92 u32 nData[REGS_MAX_ARRAY];
93 u32 nOffsets[REGS_MAX_ARRAY];
94} JAGCORE_ACCESS_REGS, *PJAGCORE_ACCESS_REGS;
95
96typedef struct {
97 u8 bReadWrite;
98 u32 nDataWidth;
99 u32 nRegCount;
100 u32 nOffsets[REGS_MAX_ARRAY];
101 u32 nData[REGS_MAX_ARRAY];
102} PCI_CFG_SPACE_REGS, *PPCI_CFG_SPACE_REGS;
103
104/* Forward declaration of the private adapter structure */
105struct et131x_adapter;
106
107void ConfigGlobalRegs(struct et131x_adapter *pAdapter);
108void ConfigMMCRegs(struct et131x_adapter *pAdapter);
109void et131x_enable_interrupts(struct et131x_adapter *adapter);
110void et131x_disable_interrupts(struct et131x_adapter *adapter);
111
112#endif /* __ET1310_JAGCORE_H__ */
diff --git a/drivers/staging/et131x/et1310_mac.c b/drivers/staging/et131x/et1310_mac.c
new file mode 100644
index 00000000000..1924968ab24
--- /dev/null
+++ b/drivers/staging/et131x/et1310_mac.c
@@ -0,0 +1,792 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_mac.c - All code and routines pertaining to the MAC
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/init.h>
63#include <linux/module.h>
64#include <linux/types.h>
65#include <linux/kernel.h>
66
67#include <linux/sched.h>
68#include <linux/ptrace.h>
69#include <linux/slab.h>
70#include <linux/ctype.h>
71#include <linux/string.h>
72#include <linux/timer.h>
73#include <linux/interrupt.h>
74#include <linux/in.h>
75#include <linux/delay.h>
76#include <asm/io.h>
77#include <asm/system.h>
78#include <asm/bitops.h>
79
80#include <linux/netdevice.h>
81#include <linux/etherdevice.h>
82#include <linux/skbuff.h>
83#include <linux/if_arp.h>
84#include <linux/ioport.h>
85#include <linux/crc32.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90#include "et1310_mac.h"
91
92#include "et131x_adapter.h"
93#include "et131x_initpci.h"
94
95/* Data for debugging facilities */
96#ifdef CONFIG_ET131X_DEBUG
97extern dbg_info_t *et131x_dbginfo;
98#endif /* CONFIG_ET131X_DEBUG */
99
100/**
101 * ConfigMacRegs1 - Initialize the first part of MAC regs
102 * @pAdpater: pointer to our adapter structure
103 */
104void ConfigMACRegs1(struct et131x_adapter *pAdapter)
105{
106 struct _MAC_t __iomem *pMac = &pAdapter->CSRAddress->mac;
107 MAC_STATION_ADDR1_t station1;
108 MAC_STATION_ADDR2_t station2;
109 MAC_IPG_t ipg;
110 MAC_HFDP_t hfdp;
111 MII_MGMT_CFG_t mii_mgmt_cfg;
112
113 DBG_ENTER(et131x_dbginfo);
114
115 /* First we need to reset everything. Write to MAC configuration
116 * register 1 to perform reset.
117 */
118 writel(0xC00F0000, &pMac->cfg1.value);
119
120 /* Next lets configure the MAC Inter-packet gap register */
121 ipg.bits.non_B2B_ipg_1 = 0x38; // 58d
122 ipg.bits.non_B2B_ipg_2 = 0x58; // 88d
123 ipg.bits.min_ifg_enforce = 0x50; // 80d
124 ipg.bits.B2B_ipg = 0x60; // 96d
125 writel(ipg.value, &pMac->ipg.value);
126
127 /* Next lets configure the MAC Half Duplex register */
128 hfdp.bits.alt_beb_trunc = 0xA;
129 hfdp.bits.alt_beb_enable = 0x0;
130 hfdp.bits.bp_no_backoff = 0x0;
131 hfdp.bits.no_backoff = 0x0;
132 hfdp.bits.excess_defer = 0x1;
133 hfdp.bits.rexmit_max = 0xF;
134 hfdp.bits.coll_window = 0x37; // 55d
135 writel(hfdp.value, &pMac->hfdp.value);
136
137 /* Next lets configure the MAC Interface Control register */
138 writel(0, &pMac->if_ctrl.value);
139
140 /* Let's move on to setting up the mii managment configuration */
141 mii_mgmt_cfg.bits.reset_mii_mgmt = 0;
142 mii_mgmt_cfg.bits.scan_auto_incremt = 0;
143 mii_mgmt_cfg.bits.preamble_suppress = 0;
144 mii_mgmt_cfg.bits.mgmt_clk_reset = 0x7;
145 writel(mii_mgmt_cfg.value, &pMac->mii_mgmt_cfg.value);
146
147 /* Next lets configure the MAC Station Address register. These
148 * values are read from the EEPROM during initialization and stored
149 * in the adapter structure. We write what is stored in the adapter
150 * structure to the MAC Station Address registers high and low. This
151 * station address is used for generating and checking pause control
152 * packets.
153 */
154 station2.bits.Octet1 = pAdapter->CurrentAddress[0];
155 station2.bits.Octet2 = pAdapter->CurrentAddress[1];
156 station1.bits.Octet3 = pAdapter->CurrentAddress[2];
157 station1.bits.Octet4 = pAdapter->CurrentAddress[3];
158 station1.bits.Octet5 = pAdapter->CurrentAddress[4];
159 station1.bits.Octet6 = pAdapter->CurrentAddress[5];
160 writel(station1.value, &pMac->station_addr_1.value);
161 writel(station2.value, &pMac->station_addr_2.value);
162
163 /* Max ethernet packet in bytes that will passed by the mac without
164 * being truncated. Allow the MAC to pass 4 more than our max packet
165 * size. This is 4 for the Ethernet CRC.
166 *
167 * Packets larger than (RegistryJumboPacket) that do not contain a
168 * VLAN ID will be dropped by the Rx function.
169 */
170 writel(pAdapter->RegistryJumboPacket + 4, &pMac->max_fm_len.value);
171
172 /* clear out MAC config reset */
173 writel(0, &pMac->cfg1.value);
174
175 DBG_LEAVE(et131x_dbginfo);
176}
177
178/**
179 * ConfigMacRegs2 - Initialize the second part of MAC regs
180 * @pAdpater: pointer to our adapter structure
181 */
182void ConfigMACRegs2(struct et131x_adapter *pAdapter)
183{
184 int32_t delay = 0;
185 struct _MAC_t __iomem *pMac = &pAdapter->CSRAddress->mac;
186 MAC_CFG1_t cfg1;
187 MAC_CFG2_t cfg2;
188 MAC_IF_CTRL_t ifctrl;
189 TXMAC_CTL_t ctl;
190
191 DBG_ENTER(et131x_dbginfo);
192
193 ctl.value = readl(&pAdapter->CSRAddress->txmac.ctl.value);
194 cfg1.value = readl(&pMac->cfg1.value);
195 cfg2.value = readl(&pMac->cfg2.value);
196 ifctrl.value = readl(&pMac->if_ctrl.value);
197
198 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_1000MBPS) {
199 cfg2.bits.if_mode = 0x2;
200 ifctrl.bits.phy_mode = 0x0;
201 } else {
202 cfg2.bits.if_mode = 0x1;
203 ifctrl.bits.phy_mode = 0x1;
204 }
205
206 /* We need to enable Rx/Tx */
207 cfg1.bits.rx_enable = 0x1;
208 cfg1.bits.tx_enable = 0x1;
209
210 /* Set up flow control */
211 cfg1.bits.tx_flow = 0x1;
212
213 if ((pAdapter->FlowControl == RxOnly) ||
214 (pAdapter->FlowControl == Both)) {
215 cfg1.bits.rx_flow = 0x1;
216 } else {
217 cfg1.bits.rx_flow = 0x0;
218 }
219
220 /* Initialize loop back to off */
221 cfg1.bits.loop_back = 0;
222
223 writel(cfg1.value, &pMac->cfg1.value);
224
225 /* Now we need to initialize the MAC Configuration 2 register */
226 cfg2.bits.preamble_len = 0x7;
227 cfg2.bits.huge_frame = 0x0;
228 /* LENGTH FIELD CHECKING bit4: Set this bit to cause the MAC to check
229 * the frame's length field to ensure it matches the actual data
230 * field length. Clear this bit if no length field checking is
231 * desired. Its default is 0.
232 */
233 cfg2.bits.len_check = 0x1;
234
235 if (pAdapter->RegistryPhyLoopbk == false) {
236 cfg2.bits.pad_crc = 0x1;
237 cfg2.bits.crc_enable = 0x1;
238 } else {
239 cfg2.bits.pad_crc = 0;
240 cfg2.bits.crc_enable = 0;
241 }
242
243 /* 1 - full duplex, 0 - half-duplex */
244 cfg2.bits.full_duplex = pAdapter->uiDuplexMode;
245 ifctrl.bits.ghd_mode = !pAdapter->uiDuplexMode;
246
247 writel(ifctrl.value, &pMac->if_ctrl.value);
248 writel(cfg2.value, &pMac->cfg2.value);
249
250 do {
251 udelay(10);
252 delay++;
253 cfg1.value = readl(&pMac->cfg1.value);
254 } while ((!cfg1.bits.syncd_rx_en ||
255 !cfg1.bits.syncd_tx_en) &&
256 delay < 100);
257
258 if (delay == 100) {
259 DBG_ERROR(et131x_dbginfo,
260 "Syncd bits did not respond correctly cfg1 word 0x%08x\n",
261 cfg1.value);
262 }
263
264 DBG_TRACE(et131x_dbginfo,
265 "Speed %d, Dup %d, CFG1 0x%08x, CFG2 0x%08x, if_ctrl 0x%08x\n",
266 pAdapter->uiLinkSpeed, pAdapter->uiDuplexMode,
267 readl(&pMac->cfg1.value), readl(&pMac->cfg2.value),
268 readl(&pMac->if_ctrl.value));
269
270 /* Enable TXMAC */
271 ctl.bits.txmac_en = 0x1;
272 ctl.bits.fc_disable = 0x1;
273 writel(ctl.value, &pAdapter->CSRAddress->txmac.ctl.value);
274
275 /* Ready to start the RXDMA/TXDMA engine */
276 if (!MP_TEST_FLAG(pAdapter, fMP_ADAPTER_LOWER_POWER)) {
277 et131x_rx_dma_enable(pAdapter);
278 et131x_tx_dma_enable(pAdapter);
279 } else {
280 DBG_WARNING(et131x_dbginfo,
281 "Didn't enable Rx/Tx due to low-power mode\n");
282 }
283
284 DBG_LEAVE(et131x_dbginfo);
285}
286
287void ConfigRxMacRegs(struct et131x_adapter *pAdapter)
288{
289 struct _RXMAC_t __iomem *pRxMac = &pAdapter->CSRAddress->rxmac;
290 RXMAC_WOL_SA_LO_t sa_lo;
291 RXMAC_WOL_SA_HI_t sa_hi;
292 RXMAC_PF_CTRL_t pf_ctrl = { 0 };
293
294 DBG_ENTER(et131x_dbginfo);
295
296 /* Disable the MAC while it is being configured (also disable WOL) */
297 writel(0x8, &pRxMac->ctrl.value);
298
299 /* Initialize WOL to disabled. */
300 writel(0, &pRxMac->crc0.value);
301 writel(0, &pRxMac->crc12.value);
302 writel(0, &pRxMac->crc34.value);
303
304 /* We need to set the WOL mask0 - mask4 next. We initialize it to
305 * its default Values of 0x00000000 because there are not WOL masks
306 * as of this time.
307 */
308 writel(0, &pRxMac->mask0_word0);
309 writel(0, &pRxMac->mask0_word1);
310 writel(0, &pRxMac->mask0_word2);
311 writel(0, &pRxMac->mask0_word3);
312
313 writel(0, &pRxMac->mask1_word0);
314 writel(0, &pRxMac->mask1_word1);
315 writel(0, &pRxMac->mask1_word2);
316 writel(0, &pRxMac->mask1_word3);
317
318 writel(0, &pRxMac->mask2_word0);
319 writel(0, &pRxMac->mask2_word1);
320 writel(0, &pRxMac->mask2_word2);
321 writel(0, &pRxMac->mask2_word3);
322
323 writel(0, &pRxMac->mask3_word0);
324 writel(0, &pRxMac->mask3_word1);
325 writel(0, &pRxMac->mask3_word2);
326 writel(0, &pRxMac->mask3_word3);
327
328 writel(0, &pRxMac->mask4_word0);
329 writel(0, &pRxMac->mask4_word1);
330 writel(0, &pRxMac->mask4_word2);
331 writel(0, &pRxMac->mask4_word3);
332
333 /* Lets setup the WOL Source Address */
334 sa_lo.bits.sa3 = pAdapter->CurrentAddress[2];
335 sa_lo.bits.sa4 = pAdapter->CurrentAddress[3];
336 sa_lo.bits.sa5 = pAdapter->CurrentAddress[4];
337 sa_lo.bits.sa6 = pAdapter->CurrentAddress[5];
338 writel(sa_lo.value, &pRxMac->sa_lo.value);
339
340 sa_hi.bits.sa1 = pAdapter->CurrentAddress[0];
341 sa_hi.bits.sa2 = pAdapter->CurrentAddress[1];
342 writel(sa_hi.value, &pRxMac->sa_hi.value);
343
344 /* Disable all Packet Filtering */
345 writel(0, &pRxMac->pf_ctrl.value);
346
347 /* Let's initialize the Unicast Packet filtering address */
348 if (pAdapter->PacketFilter & ET131X_PACKET_TYPE_DIRECTED) {
349 SetupDeviceForUnicast(pAdapter);
350 pf_ctrl.bits.filter_uni_en = 1;
351 } else {
352 writel(0, &pRxMac->uni_pf_addr1.value);
353 writel(0, &pRxMac->uni_pf_addr2.value);
354 writel(0, &pRxMac->uni_pf_addr3.value);
355 }
356
357 /* Let's initialize the Multicast hash */
358 if (pAdapter->PacketFilter & ET131X_PACKET_TYPE_ALL_MULTICAST) {
359 pf_ctrl.bits.filter_multi_en = 0;
360 } else {
361 pf_ctrl.bits.filter_multi_en = 1;
362 SetupDeviceForMulticast(pAdapter);
363 }
364
365 /* Runt packet filtering. Didn't work in version A silicon. */
366 pf_ctrl.bits.min_pkt_size = NIC_MIN_PACKET_SIZE + 4;
367 pf_ctrl.bits.filter_frag_en = 1;
368
369 if (pAdapter->RegistryJumboPacket > 8192) {
370 RXMAC_MCIF_CTRL_MAX_SEG_t mcif_ctrl_max_seg;
371
372 /* In order to transmit jumbo packets greater than 8k, the
373 * FIFO between RxMAC and RxDMA needs to be reduced in size
374 * to (16k - Jumbo packet size). In order to implement this,
375 * we must use "cut through" mode in the RxMAC, which chops
376 * packets down into segments which are (max_size * 16). In
377 * this case we selected 256 bytes, since this is the size of
378 * the PCI-Express TLP's that the 1310 uses.
379 */
380 mcif_ctrl_max_seg.bits.seg_en = 0x1;
381 mcif_ctrl_max_seg.bits.fc_en = 0x0;
382 mcif_ctrl_max_seg.bits.max_size = 0x10;
383
384 writel(mcif_ctrl_max_seg.value,
385 &pRxMac->mcif_ctrl_max_seg.value);
386 } else {
387 writel(0, &pRxMac->mcif_ctrl_max_seg.value);
388 }
389
390 /* Initialize the MCIF water marks */
391 writel(0, &pRxMac->mcif_water_mark.value);
392
393 /* Initialize the MIF control */
394 writel(0, &pRxMac->mif_ctrl.value);
395
396 /* Initialize the Space Available Register */
397 writel(0, &pRxMac->space_avail.value);
398
399 /* Initialize the the mif_ctrl register
400 * bit 3: Receive code error. One or more nibbles were signaled as
401 * errors during the reception of the packet. Clear this
402 * bit in Gigabit, set it in 100Mbit. This was derived
403 * experimentally at UNH.
404 * bit 4: Receive CRC error. The packet's CRC did not match the
405 * internally generated CRC.
406 * bit 5: Receive length check error. Indicates that frame length
407 * field value in the packet does not match the actual data
408 * byte length and is not a type field.
409 * bit 16: Receive frame truncated.
410 * bit 17: Drop packet enable
411 */
412 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_100MBPS) {
413 writel(0x30038, &pRxMac->mif_ctrl.value);
414 } else {
415 writel(0x30030, &pRxMac->mif_ctrl.value);
416 }
417
418 /* Finally we initialize RxMac to be enabled & WOL disabled. Packet
419 * filter is always enabled since it is where the runt packets are
420 * supposed to be dropped. For version A silicon, runt packet
421 * dropping doesn't work, so it is disabled in the pf_ctrl register,
422 * but we still leave the packet filter on.
423 */
424 writel(pf_ctrl.value, &pRxMac->pf_ctrl.value);
425 writel(0x9, &pRxMac->ctrl.value);
426
427 DBG_LEAVE(et131x_dbginfo);
428}
429
430void ConfigTxMacRegs(struct et131x_adapter *pAdapter)
431{
432 struct _TXMAC_t __iomem *pTxMac = &pAdapter->CSRAddress->txmac;
433 TXMAC_CF_PARAM_t Local;
434
435 DBG_ENTER(et131x_dbginfo);
436
437 /* We need to update the Control Frame Parameters
438 * cfpt - control frame pause timer set to 64 (0x40)
439 * cfep - control frame extended pause timer set to 0x0
440 */
441 if (pAdapter->FlowControl == None) {
442 writel(0, &pTxMac->cf_param.value);
443 } else {
444 Local.bits.cfpt = 0x40;
445 Local.bits.cfep = 0x0;
446 writel(Local.value, &pTxMac->cf_param.value);
447 }
448
449 DBG_LEAVE(et131x_dbginfo);
450}
451
452void ConfigMacStatRegs(struct et131x_adapter *pAdapter)
453{
454 struct _MAC_STAT_t __iomem *pDevMacStat =
455 &pAdapter->CSRAddress->macStat;
456
457 DBG_ENTER(et131x_dbginfo);
458
459 /* Next we need to initialize all the MAC_STAT registers to zero on
460 * the device.
461 */
462 writel(0, &pDevMacStat->RFcs);
463 writel(0, &pDevMacStat->RAln);
464 writel(0, &pDevMacStat->RFlr);
465 writel(0, &pDevMacStat->RDrp);
466 writel(0, &pDevMacStat->RCde);
467 writel(0, &pDevMacStat->ROvr);
468 writel(0, &pDevMacStat->RFrg);
469
470 writel(0, &pDevMacStat->TScl);
471 writel(0, &pDevMacStat->TDfr);
472 writel(0, &pDevMacStat->TMcl);
473 writel(0, &pDevMacStat->TLcl);
474 writel(0, &pDevMacStat->TNcl);
475 writel(0, &pDevMacStat->TOvr);
476 writel(0, &pDevMacStat->TUnd);
477
478 /* Unmask any counters that we want to track the overflow of.
479 * Initially this will be all counters. It may become clear later
480 * that we do not need to track all counters.
481 */
482 {
483 MAC_STAT_REG_1_t Carry1M = { 0xffffffff };
484
485 Carry1M.bits.rdrp = 0;
486 Carry1M.bits.rjbr = 1;
487 Carry1M.bits.rfrg = 0;
488 Carry1M.bits.rovr = 0;
489 Carry1M.bits.rund = 1;
490 Carry1M.bits.rcse = 1;
491 Carry1M.bits.rcde = 0;
492 Carry1M.bits.rflr = 0;
493 Carry1M.bits.raln = 0;
494 Carry1M.bits.rxuo = 1;
495 Carry1M.bits.rxpf = 1;
496 Carry1M.bits.rxcf = 1;
497 Carry1M.bits.rbca = 1;
498 Carry1M.bits.rmca = 1;
499 Carry1M.bits.rfcs = 0;
500 Carry1M.bits.rpkt = 1;
501 Carry1M.bits.rbyt = 1;
502 Carry1M.bits.trmgv = 1;
503 Carry1M.bits.trmax = 1;
504 Carry1M.bits.tr1k = 1;
505 Carry1M.bits.tr511 = 1;
506 Carry1M.bits.tr255 = 1;
507 Carry1M.bits.tr127 = 1;
508 Carry1M.bits.tr64 = 1;
509
510 writel(Carry1M.value, &pDevMacStat->Carry1M.value);
511 }
512
513 {
514 MAC_STAT_REG_2_t Carry2M = { 0xffffffff };
515
516 Carry2M.bits.tdrp = 1;
517 Carry2M.bits.tpfh = 1;
518 Carry2M.bits.tncl = 0;
519 Carry2M.bits.txcl = 1;
520 Carry2M.bits.tlcl = 0;
521 Carry2M.bits.tmcl = 0;
522 Carry2M.bits.tscl = 0;
523 Carry2M.bits.tedf = 1;
524 Carry2M.bits.tdfr = 0;
525 Carry2M.bits.txpf = 1;
526 Carry2M.bits.tbca = 1;
527 Carry2M.bits.tmca = 1;
528 Carry2M.bits.tpkt = 1;
529 Carry2M.bits.tbyt = 1;
530 Carry2M.bits.tfrg = 1;
531 Carry2M.bits.tund = 0;
532 Carry2M.bits.tovr = 0;
533 Carry2M.bits.txcf = 1;
534 Carry2M.bits.tfcs = 1;
535 Carry2M.bits.tjbr = 1;
536
537 writel(Carry2M.value, &pDevMacStat->Carry2M.value);
538 }
539
540 DBG_LEAVE(et131x_dbginfo);
541}
542
543void ConfigFlowControl(struct et131x_adapter * pAdapter)
544{
545 if (pAdapter->uiDuplexMode == 0) {
546 pAdapter->FlowControl = None;
547 } else {
548 char RemotePause, RemoteAsyncPause;
549
550 ET1310_PhyAccessMiBit(pAdapter,
551 TRUEPHY_BIT_READ, 5, 10, &RemotePause);
552 ET1310_PhyAccessMiBit(pAdapter,
553 TRUEPHY_BIT_READ, 5, 11,
554 &RemoteAsyncPause);
555
556 if ((RemotePause == TRUEPHY_BIT_SET) &&
557 (RemoteAsyncPause == TRUEPHY_BIT_SET)) {
558 pAdapter->FlowControl = pAdapter->RegistryFlowControl;
559 } else if ((RemotePause == TRUEPHY_BIT_SET) &&
560 (RemoteAsyncPause == TRUEPHY_BIT_CLEAR)) {
561 if (pAdapter->RegistryFlowControl == Both) {
562 pAdapter->FlowControl = Both;
563 } else {
564 pAdapter->FlowControl = None;
565 }
566 } else if ((RemotePause == TRUEPHY_BIT_CLEAR) &&
567 (RemoteAsyncPause == TRUEPHY_BIT_CLEAR)) {
568 pAdapter->FlowControl = None;
569 } else {/* if (RemotePause == TRUEPHY_CLEAR_BIT &&
570 RemoteAsyncPause == TRUEPHY_SET_BIT) */
571 if (pAdapter->RegistryFlowControl == Both) {
572 pAdapter->FlowControl = RxOnly;
573 } else {
574 pAdapter->FlowControl = None;
575 }
576 }
577 }
578}
579
580/**
581 * UpdateMacStatHostCounters - Update the local copy of the statistics
582 * @pAdapter: pointer to the adapter structure
583 */
584void UpdateMacStatHostCounters(struct et131x_adapter *pAdapter)
585{
586 struct _ce_stats_t *stats = &pAdapter->Stats;
587 struct _MAC_STAT_t __iomem *pDevMacStat =
588 &pAdapter->CSRAddress->macStat;
589
590 stats->collisions += readl(&pDevMacStat->TNcl);
591 stats->first_collision += readl(&pDevMacStat->TScl);
592 stats->tx_deferred += readl(&pDevMacStat->TDfr);
593 stats->excessive_collisions += readl(&pDevMacStat->TMcl);
594 stats->late_collisions += readl(&pDevMacStat->TLcl);
595 stats->tx_uflo += readl(&pDevMacStat->TUnd);
596 stats->max_pkt_error += readl(&pDevMacStat->TOvr);
597
598 stats->alignment_err += readl(&pDevMacStat->RAln);
599 stats->crc_err += readl(&pDevMacStat->RCde);
600 stats->norcvbuf += readl(&pDevMacStat->RDrp);
601 stats->rx_ov_flow += readl(&pDevMacStat->ROvr);
602 stats->code_violations += readl(&pDevMacStat->RFcs);
603 stats->length_err += readl(&pDevMacStat->RFlr);
604
605 stats->other_errors += readl(&pDevMacStat->RFrg);
606}
607
608/**
609 * HandleMacStatInterrupt
610 * @pAdapter: pointer to the adapter structure
611 *
612 * One of the MACSTAT counters has wrapped. Update the local copy of
613 * the statistics held in the adapter structure, checking the "wrap"
614 * bit for each counter.
615 */
616void HandleMacStatInterrupt(struct et131x_adapter *pAdapter)
617{
618 MAC_STAT_REG_1_t Carry1;
619 MAC_STAT_REG_2_t Carry2;
620
621 DBG_ENTER(et131x_dbginfo);
622
623 /* Read the interrupt bits from the register(s). These are Clear On
624 * Write.
625 */
626 Carry1.value = readl(&pAdapter->CSRAddress->macStat.Carry1.value);
627 Carry2.value = readl(&pAdapter->CSRAddress->macStat.Carry2.value);
628
629 writel(Carry1.value, &pAdapter->CSRAddress->macStat.Carry1.value);
630 writel(Carry2.value, &pAdapter->CSRAddress->macStat.Carry2.value);
631
632 /* We need to do update the host copy of all the MAC_STAT counters.
633 * For each counter, check it's overflow bit. If the overflow bit is
634 * set, then increment the host version of the count by one complete
635 * revolution of the counter. This routine is called when the counter
636 * block indicates that one of the counters has wrapped.
637 */
638 if (Carry1.bits.rfcs) {
639 pAdapter->Stats.code_violations += COUNTER_WRAP_16_BIT;
640 }
641 if (Carry1.bits.raln) {
642 pAdapter->Stats.alignment_err += COUNTER_WRAP_12_BIT;
643 }
644 if (Carry1.bits.rflr) {
645 pAdapter->Stats.length_err += COUNTER_WRAP_16_BIT;
646 }
647 if (Carry1.bits.rfrg) {
648 pAdapter->Stats.other_errors += COUNTER_WRAP_16_BIT;
649 }
650 if (Carry1.bits.rcde) {
651 pAdapter->Stats.crc_err += COUNTER_WRAP_16_BIT;
652 }
653 if (Carry1.bits.rovr) {
654 pAdapter->Stats.rx_ov_flow += COUNTER_WRAP_16_BIT;
655 }
656 if (Carry1.bits.rdrp) {
657 pAdapter->Stats.norcvbuf += COUNTER_WRAP_16_BIT;
658 }
659 if (Carry2.bits.tovr) {
660 pAdapter->Stats.max_pkt_error += COUNTER_WRAP_12_BIT;
661 }
662 if (Carry2.bits.tund) {
663 pAdapter->Stats.tx_uflo += COUNTER_WRAP_12_BIT;
664 }
665 if (Carry2.bits.tscl) {
666 pAdapter->Stats.first_collision += COUNTER_WRAP_12_BIT;
667 }
668 if (Carry2.bits.tdfr) {
669 pAdapter->Stats.tx_deferred += COUNTER_WRAP_12_BIT;
670 }
671 if (Carry2.bits.tmcl) {
672 pAdapter->Stats.excessive_collisions += COUNTER_WRAP_12_BIT;
673 }
674 if (Carry2.bits.tlcl) {
675 pAdapter->Stats.late_collisions += COUNTER_WRAP_12_BIT;
676 }
677 if (Carry2.bits.tncl) {
678 pAdapter->Stats.collisions += COUNTER_WRAP_12_BIT;
679 }
680
681 DBG_LEAVE(et131x_dbginfo);
682}
683
684void SetupDeviceForMulticast(struct et131x_adapter *pAdapter)
685{
686 struct _RXMAC_t __iomem *rxmac = &pAdapter->CSRAddress->rxmac;
687 uint32_t nIndex;
688 uint32_t result;
689 uint32_t hash1 = 0;
690 uint32_t hash2 = 0;
691 uint32_t hash3 = 0;
692 uint32_t hash4 = 0;
693 PM_CSR_t pm_csr;
694
695 DBG_ENTER(et131x_dbginfo);
696
697 /* If ET131X_PACKET_TYPE_MULTICAST is specified, then we provision
698 * the multi-cast LIST. If it is NOT specified, (and "ALL" is not
699 * specified) then we should pass NO multi-cast addresses to the
700 * driver.
701 */
702 if (pAdapter->PacketFilter & ET131X_PACKET_TYPE_MULTICAST) {
703 DBG_VERBOSE(et131x_dbginfo,
704 "MULTICAST flag is set, MCCount: %d\n",
705 pAdapter->MCAddressCount);
706
707 /* Loop through our multicast array and set up the device */
708 for (nIndex = 0; nIndex < pAdapter->MCAddressCount; nIndex++) {
709 DBG_VERBOSE(et131x_dbginfo,
710 "MCList[%d]: %02x:%02x:%02x:%02x:%02x:%02x\n",
711 nIndex,
712 pAdapter->MCList[nIndex][0],
713 pAdapter->MCList[nIndex][1],
714 pAdapter->MCList[nIndex][2],
715 pAdapter->MCList[nIndex][3],
716 pAdapter->MCList[nIndex][4],
717 pAdapter->MCList[nIndex][5]);
718
719 result = ether_crc(6, pAdapter->MCList[nIndex]);
720
721 result = (result & 0x3F800000) >> 23;
722
723 if (result < 32) {
724 hash1 |= (1 << result);
725 } else if ((31 < result) && (result < 64)) {
726 result -= 32;
727 hash2 |= (1 << result);
728 } else if ((63 < result) && (result < 96)) {
729 result -= 64;
730 hash3 |= (1 << result);
731 } else {
732 result -= 96;
733 hash4 |= (1 << result);
734 }
735 }
736 }
737
738 /* Write out the new hash to the device */
739 pm_csr.value = readl(&pAdapter->CSRAddress->global.pm_csr.value);
740 if (pm_csr.bits.pm_phy_sw_coma == 0) {
741 writel(hash1, &rxmac->multi_hash1);
742 writel(hash2, &rxmac->multi_hash2);
743 writel(hash3, &rxmac->multi_hash3);
744 writel(hash4, &rxmac->multi_hash4);
745 }
746
747 DBG_LEAVE(et131x_dbginfo);
748}
749
750void SetupDeviceForUnicast(struct et131x_adapter *pAdapter)
751{
752 struct _RXMAC_t __iomem *rxmac = &pAdapter->CSRAddress->rxmac;
753 RXMAC_UNI_PF_ADDR1_t uni_pf1;
754 RXMAC_UNI_PF_ADDR2_t uni_pf2;
755 RXMAC_UNI_PF_ADDR3_t uni_pf3;
756 PM_CSR_t pm_csr;
757
758 DBG_ENTER(et131x_dbginfo);
759
760 /* Set up unicast packet filter reg 3 to be the first two octets of
761 * the MAC address for both address
762 *
763 * Set up unicast packet filter reg 2 to be the octets 2 - 5 of the
764 * MAC address for second address
765 *
766 * Set up unicast packet filter reg 3 to be the octets 2 - 5 of the
767 * MAC address for first address
768 */
769 uni_pf3.bits.addr1_1 = pAdapter->CurrentAddress[0];
770 uni_pf3.bits.addr1_2 = pAdapter->CurrentAddress[1];
771 uni_pf3.bits.addr2_1 = pAdapter->CurrentAddress[0];
772 uni_pf3.bits.addr2_2 = pAdapter->CurrentAddress[1];
773
774 uni_pf2.bits.addr2_3 = pAdapter->CurrentAddress[2];
775 uni_pf2.bits.addr2_4 = pAdapter->CurrentAddress[3];
776 uni_pf2.bits.addr2_5 = pAdapter->CurrentAddress[4];
777 uni_pf2.bits.addr2_6 = pAdapter->CurrentAddress[5];
778
779 uni_pf1.bits.addr1_3 = pAdapter->CurrentAddress[2];
780 uni_pf1.bits.addr1_4 = pAdapter->CurrentAddress[3];
781 uni_pf1.bits.addr1_5 = pAdapter->CurrentAddress[4];
782 uni_pf1.bits.addr1_6 = pAdapter->CurrentAddress[5];
783
784 pm_csr.value = readl(&pAdapter->CSRAddress->global.pm_csr.value);
785 if (pm_csr.bits.pm_phy_sw_coma == 0) {
786 writel(uni_pf1.value, &rxmac->uni_pf_addr1.value);
787 writel(uni_pf2.value, &rxmac->uni_pf_addr2.value);
788 writel(uni_pf3.value, &rxmac->uni_pf_addr3.value);
789 }
790
791 DBG_LEAVE(et131x_dbginfo);
792}
diff --git a/drivers/staging/et131x/et1310_mac.h b/drivers/staging/et131x/et1310_mac.h
new file mode 100644
index 00000000000..bd26cd35178
--- /dev/null
+++ b/drivers/staging/et131x/et1310_mac.h
@@ -0,0 +1,93 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_mac.h - Defines, structs, enums, prototypes, etc. pertaining to the
12 * MAC.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef _ET1310_MAC_H_
60#define _ET1310_MAC_H_
61
62
63#include "et1310_address_map.h"
64
65
66#define COUNTER_WRAP_28_BIT 0x10000000
67#define COUNTER_WRAP_22_BIT 0x400000
68#define COUNTER_WRAP_16_BIT 0x10000
69#define COUNTER_WRAP_12_BIT 0x1000
70
71#define COUNTER_MASK_28_BIT (COUNTER_WRAP_28_BIT - 1)
72#define COUNTER_MASK_22_BIT (COUNTER_WRAP_22_BIT - 1)
73#define COUNTER_MASK_16_BIT (COUNTER_WRAP_16_BIT - 1)
74#define COUNTER_MASK_12_BIT (COUNTER_WRAP_12_BIT - 1)
75
76#define UPDATE_COUNTER(HostCnt,DevCnt) \
77 HostCnt = HostCnt + DevCnt;
78
79/* Forward declaration of the private adapter structure */
80struct et131x_adapter;
81
82void ConfigMACRegs1(struct et131x_adapter *adapter);
83void ConfigMACRegs2(struct et131x_adapter *adapter);
84void ConfigRxMacRegs(struct et131x_adapter *adapter);
85void ConfigTxMacRegs(struct et131x_adapter *adapter);
86void ConfigMacStatRegs(struct et131x_adapter *adapter);
87void ConfigFlowControl(struct et131x_adapter *adapter);
88void UpdateMacStatHostCounters(struct et131x_adapter *adapter);
89void HandleMacStatInterrupt(struct et131x_adapter *adapter);
90void SetupDeviceForMulticast(struct et131x_adapter *adapter);
91void SetupDeviceForUnicast(struct et131x_adapter *adapter);
92
93#endif /* _ET1310_MAC_H_ */
diff --git a/drivers/staging/et131x/et1310_phy.c b/drivers/staging/et131x/et1310_phy.c
new file mode 100644
index 00000000000..6c4fa54419e
--- /dev/null
+++ b/drivers/staging/et131x/et1310_phy.c
@@ -0,0 +1,1281 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_phy.c - Routines for configuring and accessing the PHY
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/pci.h>
63#include <linux/init.h>
64#include <linux/module.h>
65#include <linux/types.h>
66#include <linux/kernel.h>
67
68#include <linux/sched.h>
69#include <linux/ptrace.h>
70#include <linux/slab.h>
71#include <linux/ctype.h>
72#include <linux/string.h>
73#include <linux/timer.h>
74#include <linux/interrupt.h>
75#include <linux/in.h>
76#include <linux/delay.h>
77#include <asm/io.h>
78#include <asm/system.h>
79#include <asm/bitops.h>
80
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86#include <linux/random.h>
87#include <linux/delay.h>
88
89#include "et1310_phy.h"
90#include "et1310_pm.h"
91#include "et1310_jagcore.h"
92
93#include "et131x_adapter.h"
94#include "et131x_netdev.h"
95#include "et131x_initpci.h"
96
97#include "et1310_address_map.h"
98#include "et1310_jagcore.h"
99#include "et1310_tx.h"
100#include "et1310_rx.h"
101#include "et1310_mac.h"
102
103/* Data for debugging facilities */
104#ifdef CONFIG_ET131X_DEBUG
105extern dbg_info_t *et131x_dbginfo;
106#endif /* CONFIG_ET131X_DEBUG */
107
108/* Prototypes for functions with local scope */
109static int et131x_xcvr_init(struct et131x_adapter *adapter);
110
111/**
112 * PhyMiRead - Read from the PHY through the MII Interface on the MAC
113 * @adapter: pointer to our private adapter structure
114 * @xcvrAddr: the address of the transciever
115 * @xcvrReg: the register to read
116 * @value: pointer to a 16-bit value in which the value will be stored
117 *
118 * Returns 0 on success, errno on failure (as defined in errno.h)
119 */
120int PhyMiRead(struct et131x_adapter *adapter, uint8_t xcvrAddr,
121 uint8_t xcvrReg, uint16_t *value)
122{
123 struct _MAC_t __iomem *mac = &adapter->CSRAddress->mac;
124 int status = 0;
125 uint32_t delay;
126 MII_MGMT_ADDR_t miiAddr;
127 MII_MGMT_CMD_t miiCmd;
128 MII_MGMT_INDICATOR_t miiIndicator;
129
130 /* Save a local copy of the registers we are dealing with so we can
131 * set them back
132 */
133 miiAddr.value = readl(&mac->mii_mgmt_addr.value);
134 miiCmd.value = readl(&mac->mii_mgmt_cmd.value);
135
136 /* Stop the current operation */
137 writel(0, &mac->mii_mgmt_cmd.value);
138
139 /* Set up the register we need to read from on the correct PHY */
140 {
141 MII_MGMT_ADDR_t mii_mgmt_addr = { 0 };
142
143 mii_mgmt_addr.bits.phy_addr = xcvrAddr;
144 mii_mgmt_addr.bits.reg_addr = xcvrReg;
145 writel(mii_mgmt_addr.value, &mac->mii_mgmt_addr.value);
146 }
147
148 /* Kick the read cycle off */
149 delay = 0;
150
151 writel(0x1, &mac->mii_mgmt_cmd.value);
152
153 do {
154 udelay(50);
155 delay++;
156 miiIndicator.value = readl(&mac->mii_mgmt_indicator.value);
157 } while ((miiIndicator.bits.not_valid || miiIndicator.bits.busy) &&
158 delay < 50);
159
160 /* If we hit the max delay, we could not read the register */
161 if (delay >= 50) {
162 DBG_WARNING(et131x_dbginfo,
163 "xcvrReg 0x%08x could not be read\n", xcvrReg);
164 DBG_WARNING(et131x_dbginfo, "status is 0x%08x\n",
165 miiIndicator.value);
166
167 status = -EIO;
168 }
169
170 /* If we hit here we were able to read the register and we need to
171 * return the value to the caller
172 */
173 /* TODO: make this stuff a simple readw()?! */
174 {
175 MII_MGMT_STAT_t mii_mgmt_stat;
176
177 mii_mgmt_stat.value = readl(&mac->mii_mgmt_stat.value);
178 *value = (uint16_t) mii_mgmt_stat.bits.phy_stat;
179 }
180
181 /* Stop the read operation */
182 writel(0, &mac->mii_mgmt_cmd.value);
183
184 DBG_VERBOSE(et131x_dbginfo, " xcvr_addr = 0x%02x, "
185 "xcvr_reg = 0x%02x, "
186 "value = 0x%04x.\n", xcvrAddr, xcvrReg, *value);
187
188 /* set the registers we touched back to the state at which we entered
189 * this function
190 */
191 writel(miiAddr.value, &mac->mii_mgmt_addr.value);
192 writel(miiCmd.value, &mac->mii_mgmt_cmd.value);
193
194 return status;
195}
196
197/**
198 * MiWrite - Write to a PHY register through the MII interface of the MAC
199 * @adapter: pointer to our private adapter structure
200 * @xcvrReg: the register to read
201 * @value: 16-bit value to write
202 *
203 * Return 0 on success, errno on failure (as defined in errno.h)
204 */
205int MiWrite(struct et131x_adapter *adapter, uint8_t xcvrReg, uint16_t value)
206{
207 struct _MAC_t __iomem *mac = &adapter->CSRAddress->mac;
208 int status = 0;
209 uint8_t xcvrAddr = adapter->Stats.xcvr_addr;
210 uint32_t delay;
211 MII_MGMT_ADDR_t miiAddr;
212 MII_MGMT_CMD_t miiCmd;
213 MII_MGMT_INDICATOR_t miiIndicator;
214
215 /* Save a local copy of the registers we are dealing with so we can
216 * set them back
217 */
218 miiAddr.value = readl(&mac->mii_mgmt_addr.value);
219 miiCmd.value = readl(&mac->mii_mgmt_cmd.value);
220
221 /* Stop the current operation */
222 writel(0, &mac->mii_mgmt_cmd.value);
223
224 /* Set up the register we need to write to on the correct PHY */
225 {
226 MII_MGMT_ADDR_t mii_mgmt_addr;
227
228 mii_mgmt_addr.bits.phy_addr = xcvrAddr;
229 mii_mgmt_addr.bits.reg_addr = xcvrReg;
230 writel(mii_mgmt_addr.value, &mac->mii_mgmt_addr.value);
231 }
232
233 /* Add the value to write to the registers to the mac */
234 writel(value, &mac->mii_mgmt_ctrl.value);
235 delay = 0;
236
237 do {
238 udelay(50);
239 delay++;
240 miiIndicator.value = readl(&mac->mii_mgmt_indicator.value);
241 } while (miiIndicator.bits.busy && delay < 100);
242
243 /* If we hit the max delay, we could not write the register */
244 if (delay == 100) {
245 uint16_t TempValue;
246
247 DBG_WARNING(et131x_dbginfo,
248 "xcvrReg 0x%08x could not be written", xcvrReg);
249 DBG_WARNING(et131x_dbginfo, "status is 0x%08x\n",
250 miiIndicator.value);
251 DBG_WARNING(et131x_dbginfo, "command is 0x%08x\n",
252 readl(&mac->mii_mgmt_cmd.value));
253
254 MiRead(adapter, xcvrReg, &TempValue);
255
256 status = -EIO;
257 }
258
259 /* Stop the write operation */
260 writel(0, &mac->mii_mgmt_cmd.value);
261
262 /* set the registers we touched back to the state at which we entered
263 * this function
264 */
265 writel(miiAddr.value, &mac->mii_mgmt_addr.value);
266 writel(miiCmd.value, &mac->mii_mgmt_cmd.value);
267
268 DBG_VERBOSE(et131x_dbginfo, " xcvr_addr = 0x%02x, "
269 "xcvr_reg = 0x%02x, "
270 "value = 0x%04x.\n", xcvrAddr, xcvrReg, value);
271
272 return status;
273}
274
275/**
276 * et131x_xcvr_find - Find the PHY ID
277 * @adapter: pointer to our private adapter structure
278 *
279 * Returns 0 on success, errno on failure (as defined in errno.h)
280 */
281int et131x_xcvr_find(struct et131x_adapter *adapter)
282{
283 int status = -ENODEV;
284 uint8_t xcvr_addr;
285 MI_IDR1_t idr1;
286 MI_IDR2_t idr2;
287 uint32_t xcvr_id;
288
289 DBG_ENTER(et131x_dbginfo);
290
291 /* We need to get xcvr id and address we just get the first one */
292 for (xcvr_addr = 0; xcvr_addr < 32; xcvr_addr++) {
293 /* Read the ID from the PHY */
294 PhyMiRead(adapter, xcvr_addr,
295 (uint8_t) offsetof(MI_REGS_t, idr1),
296 &idr1.value);
297 PhyMiRead(adapter, xcvr_addr,
298 (uint8_t) offsetof(MI_REGS_t, idr2),
299 &idr2.value);
300
301 xcvr_id = (uint32_t) ((idr1.value << 16) | idr2.value);
302
303 if ((idr1.value != 0) && (idr1.value != 0xffff)) {
304 DBG_TRACE(et131x_dbginfo,
305 "Xcvr addr: 0x%02x\tXcvr_id: 0x%08x\n",
306 xcvr_addr, xcvr_id);
307
308 adapter->Stats.xcvr_id = xcvr_id;
309 adapter->Stats.xcvr_addr = xcvr_addr;
310
311 status = 0;
312 break;
313 }
314 }
315
316 DBG_LEAVE(et131x_dbginfo);
317 return status;
318}
319
320/**
321 * et131x_setphy_normal - Set PHY for normal operation.
322 * @adapter: pointer to our private adapter structure
323 *
324 * Used by Power Management to force the PHY into 10 Base T half-duplex mode,
325 * when going to D3 in WOL mode. Also used during initialization to set the
326 * PHY for normal operation.
327 */
328int et131x_setphy_normal(struct et131x_adapter *adapter)
329{
330 int status;
331
332 DBG_ENTER(et131x_dbginfo);
333
334 /* Make sure the PHY is powered up */
335 ET1310_PhyPowerDown(adapter, 0);
336 status = et131x_xcvr_init(adapter);
337
338 DBG_LEAVE(et131x_dbginfo);
339 return status;
340}
341
342/**
343 * et131x_xcvr_init - Init the phy if we are setting it into force mode
344 * @adapter: pointer to our private adapter structure
345 *
346 * Returns 0 on success, errno on failure (as defined in errno.h)
347 */
348static int et131x_xcvr_init(struct et131x_adapter *adapter)
349{
350 int status = 0;
351 MI_IMR_t imr;
352 MI_ISR_t isr;
353 MI_LCR2_t lcr2;
354
355 DBG_ENTER(et131x_dbginfo);
356
357 /* Zero out the adapter structure variable representing BMSR */
358 adapter->Bmsr.value = 0;
359
360 MiRead(adapter, (uint8_t) offsetof(MI_REGS_t, isr), &isr.value);
361
362 MiRead(adapter, (uint8_t) offsetof(MI_REGS_t, imr), &imr.value);
363
364 /* Set the link status interrupt only. Bad behavior when link status
365 * and auto neg are set, we run into a nested interrupt problem
366 */
367 imr.bits.int_en = 0x1;
368 imr.bits.link_status = 0x1;
369 imr.bits.autoneg_status = 0x1;
370
371 MiWrite(adapter, (uint8_t) offsetof(MI_REGS_t, imr), imr.value);
372
373 /* Set the LED behavior such that LED 1 indicates speed (off =
374 * 10Mbits, blink = 100Mbits, on = 1000Mbits) and LED 2 indicates
375 * link and activity (on for link, blink off for activity).
376 *
377 * NOTE: Some customizations have been added here for specific
378 * vendors; The LED behavior is now determined by vendor data in the
379 * EEPROM. However, the above description is the default.
380 */
381 if ((adapter->eepromData[1] & 0x4) == 0) {
382 MiRead(adapter, (uint8_t) offsetof(MI_REGS_t, lcr2),
383 &lcr2.value);
384 if ((adapter->eepromData[1] & 0x8) == 0)
385 lcr2.bits.led_tx_rx = 0x3;
386 else
387 lcr2.bits.led_tx_rx = 0x4;
388 lcr2.bits.led_link = 0xa;
389 MiWrite(adapter, (uint8_t) offsetof(MI_REGS_t, lcr2),
390 lcr2.value);
391 }
392
393 /* Determine if we need to go into a force mode and set it */
394 if (adapter->AiForceSpeed == 0 && adapter->AiForceDpx == 0) {
395 if ((adapter->RegistryFlowControl == TxOnly) ||
396 (adapter->RegistryFlowControl == Both)) {
397 ET1310_PhyAccessMiBit(adapter,
398 TRUEPHY_BIT_SET, 4, 11, NULL);
399 } else {
400 ET1310_PhyAccessMiBit(adapter,
401 TRUEPHY_BIT_CLEAR, 4, 11, NULL);
402 }
403
404 if (adapter->RegistryFlowControl == Both) {
405 ET1310_PhyAccessMiBit(adapter,
406 TRUEPHY_BIT_SET, 4, 10, NULL);
407 } else {
408 ET1310_PhyAccessMiBit(adapter,
409 TRUEPHY_BIT_CLEAR, 4, 10, NULL);
410 }
411
412 /* Set the phy to autonegotiation */
413 ET1310_PhyAutoNeg(adapter, true);
414
415 /* NOTE - Do we need this? */
416 ET1310_PhyAccessMiBit(adapter, TRUEPHY_BIT_SET, 0, 9, NULL);
417
418 DBG_LEAVE(et131x_dbginfo);
419 return status;
420 } else {
421 ET1310_PhyAutoNeg(adapter, false);
422
423 /* Set to the correct force mode. */
424 if (adapter->AiForceDpx != 1) {
425 if ((adapter->RegistryFlowControl == TxOnly) ||
426 (adapter->RegistryFlowControl == Both)) {
427 ET1310_PhyAccessMiBit(adapter,
428 TRUEPHY_BIT_SET, 4, 11,
429 NULL);
430 } else {
431 ET1310_PhyAccessMiBit(adapter,
432 TRUEPHY_BIT_CLEAR, 4, 11,
433 NULL);
434 }
435
436 if (adapter->RegistryFlowControl == Both) {
437 ET1310_PhyAccessMiBit(adapter,
438 TRUEPHY_BIT_SET, 4, 10,
439 NULL);
440 } else {
441 ET1310_PhyAccessMiBit(adapter,
442 TRUEPHY_BIT_CLEAR, 4, 10,
443 NULL);
444 }
445 } else {
446 ET1310_PhyAccessMiBit(adapter,
447 TRUEPHY_BIT_CLEAR, 4, 10, NULL);
448 ET1310_PhyAccessMiBit(adapter,
449 TRUEPHY_BIT_CLEAR, 4, 11, NULL);
450 }
451
452 switch (adapter->AiForceSpeed) {
453 case 10:
454 if (adapter->AiForceDpx == 1) {
455 TPAL_SetPhy10HalfDuplex(adapter);
456 } else if (adapter->AiForceDpx == 2) {
457 TPAL_SetPhy10FullDuplex(adapter);
458 } else {
459 TPAL_SetPhy10Force(adapter);
460 }
461 break;
462 case 100:
463 if (adapter->AiForceDpx == 1) {
464 TPAL_SetPhy100HalfDuplex(adapter);
465 } else if (adapter->AiForceDpx == 2) {
466 TPAL_SetPhy100FullDuplex(adapter);
467 } else {
468 TPAL_SetPhy100Force(adapter);
469 }
470 break;
471 case 1000:
472 TPAL_SetPhy1000FullDuplex(adapter);
473 break;
474 }
475
476 DBG_LEAVE(et131x_dbginfo);
477 return status;
478 }
479}
480
481void et131x_Mii_check(struct et131x_adapter *pAdapter,
482 MI_BMSR_t bmsr, MI_BMSR_t bmsr_ints)
483{
484 uint8_t ucLinkStatus;
485 uint32_t uiAutoNegStatus;
486 uint32_t uiSpeed;
487 uint32_t uiDuplex;
488 uint32_t uiMdiMdix;
489 uint32_t uiMasterSlave;
490 uint32_t uiPolarity;
491 unsigned long lockflags;
492
493 DBG_ENTER(et131x_dbginfo);
494
495 if (bmsr_ints.bits.link_status) {
496 if (bmsr.bits.link_status) {
497 pAdapter->PoMgmt.TransPhyComaModeOnBoot = 20;
498
499 /* Update our state variables and indicate the
500 * connected state
501 */
502 spin_lock_irqsave(&pAdapter->Lock, lockflags);
503
504 pAdapter->MediaState = NETIF_STATUS_MEDIA_CONNECT;
505 MP_CLEAR_FLAG(pAdapter, fMP_ADAPTER_LINK_DETECTION);
506
507 spin_unlock_irqrestore(&pAdapter->Lock, lockflags);
508
509 /* Don't indicate state if we're in loopback mode */
510 if (pAdapter->RegistryPhyLoopbk == false) {
511 netif_carrier_on(pAdapter->netdev);
512 }
513 } else {
514 DBG_WARNING(et131x_dbginfo,
515 "Link down cable problem\n");
516
517 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_10MBPS) {
518 // NOTE - Is there a way to query this without TruePHY?
519 // && TRU_QueryCoreType(pAdapter->hTruePhy, 0) == EMI_TRUEPHY_A13O) {
520 uint16_t Register18;
521
522 MiRead(pAdapter, 0x12, &Register18);
523 MiWrite(pAdapter, 0x12, Register18 | 0x4);
524 MiWrite(pAdapter, 0x10, Register18 | 0x8402);
525 MiWrite(pAdapter, 0x11, Register18 | 511);
526 MiWrite(pAdapter, 0x12, Register18);
527 }
528
529 /* For the first N seconds of life, we are in "link
530 * detection" When we are in this state, we should
531 * only report "connected". When the LinkDetection
532 * Timer expires, we can report disconnected (handled
533 * in the LinkDetectionDPC).
534 */
535 if ((MP_IS_FLAG_CLEAR
536 (pAdapter, fMP_ADAPTER_LINK_DETECTION))
537 || (pAdapter->MediaState ==
538 NETIF_STATUS_MEDIA_DISCONNECT)) {
539 spin_lock_irqsave(&pAdapter->Lock, lockflags);
540 pAdapter->MediaState =
541 NETIF_STATUS_MEDIA_DISCONNECT;
542 spin_unlock_irqrestore(&pAdapter->Lock,
543 lockflags);
544
545 /* Only indicate state if we're in loopback
546 * mode
547 */
548 if (pAdapter->RegistryPhyLoopbk == false) {
549 netif_carrier_off(pAdapter->netdev);
550 }
551 }
552
553 pAdapter->uiLinkSpeed = 0;
554 pAdapter->uiDuplexMode = 0;
555
556 /* Free the packets being actively sent & stopped */
557 et131x_free_busy_send_packets(pAdapter);
558
559 /* Re-initialize the send structures */
560 et131x_init_send(pAdapter);
561
562 /* Reset the RFD list and re-start RU */
563 et131x_reset_recv(pAdapter);
564
565 /*
566 * Bring the device back to the state it was during
567 * init prior to autonegotiation being complete. This
568 * way, when we get the auto-neg complete interrupt,
569 * we can complete init by calling ConfigMacREGS2.
570 */
571 et131x_soft_reset(pAdapter);
572
573 /* Setup ET1310 as per the documentation */
574 et131x_adapter_setup(pAdapter);
575
576 /* Setup the PHY into coma mode until the cable is
577 * plugged back in
578 */
579 if (pAdapter->RegistryPhyComa == 1) {
580 EnablePhyComa(pAdapter);
581 }
582 }
583 }
584
585 if (bmsr_ints.bits.auto_neg_complete ||
586 ((pAdapter->AiForceDpx == 3) && (bmsr_ints.bits.link_status))) {
587 if (bmsr.bits.auto_neg_complete || (pAdapter->AiForceDpx == 3)) {
588 ET1310_PhyLinkStatus(pAdapter,
589 &ucLinkStatus, &uiAutoNegStatus,
590 &uiSpeed, &uiDuplex, &uiMdiMdix,
591 &uiMasterSlave, &uiPolarity);
592
593 pAdapter->uiLinkSpeed = uiSpeed;
594 pAdapter->uiDuplexMode = uiDuplex;
595
596 DBG_TRACE(et131x_dbginfo,
597 "pAdapter->uiLinkSpeed 0x%04x, pAdapter->uiDuplex 0x%08x\n",
598 pAdapter->uiLinkSpeed,
599 pAdapter->uiDuplexMode);
600
601 pAdapter->PoMgmt.TransPhyComaModeOnBoot = 20;
602
603 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_10MBPS) {
604 // NOTE - Is there a way to query this without TruePHY?
605 // && TRU_QueryCoreType(pAdapter->hTruePhy, 0) == EMI_TRUEPHY_A13O) {
606 uint16_t Register18;
607
608 MiRead(pAdapter, 0x12, &Register18);
609 MiWrite(pAdapter, 0x12, Register18 | 0x4);
610 MiWrite(pAdapter, 0x10, Register18 | 0x8402);
611 MiWrite(pAdapter, 0x11, Register18 | 511);
612 MiWrite(pAdapter, 0x12, Register18);
613 }
614
615 ConfigFlowControl(pAdapter);
616
617 if ((pAdapter->uiLinkSpeed == TRUEPHY_SPEED_1000MBPS) &&
618 (pAdapter->RegistryJumboPacket > 2048))
619 {
620 ET1310_PhyAndOrReg(pAdapter, 0x16, 0xcfff,
621 0x2000);
622 }
623
624 SetRxDmaTimer(pAdapter);
625 ConfigMACRegs2(pAdapter);
626 }
627 }
628
629 DBG_LEAVE(et131x_dbginfo);
630}
631
632/**
633 * TPAL_SetPhy10HalfDuplex - Force the phy into 10 Base T Half Duplex mode.
634 * @pAdapter: pointer to the adapter structure
635 *
636 * Also sets the MAC so it is syncd up properly
637 */
638void TPAL_SetPhy10HalfDuplex(struct et131x_adapter *pAdapter)
639{
640 DBG_ENTER(et131x_dbginfo);
641
642 /* Power down PHY */
643 ET1310_PhyPowerDown(pAdapter, 1);
644
645 /* First we need to turn off all other advertisement */
646 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
647
648 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
649
650 /* Set our advertise values accordingly */
651 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_HALF);
652
653 /* Power up PHY */
654 ET1310_PhyPowerDown(pAdapter, 0);
655
656 DBG_LEAVE(et131x_dbginfo);
657}
658
659/**
660 * TPAL_SetPhy10FullDuplex - Force the phy into 10 Base T Full Duplex mode.
661 * @pAdapter: pointer to the adapter structure
662 *
663 * Also sets the MAC so it is syncd up properly
664 */
665void TPAL_SetPhy10FullDuplex(struct et131x_adapter *pAdapter)
666{
667 DBG_ENTER(et131x_dbginfo);
668
669 /* Power down PHY */
670 ET1310_PhyPowerDown(pAdapter, 1);
671
672 /* First we need to turn off all other advertisement */
673 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
674
675 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
676
677 /* Set our advertise values accordingly */
678 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_FULL);
679
680 /* Power up PHY */
681 ET1310_PhyPowerDown(pAdapter, 0);
682
683 DBG_LEAVE(et131x_dbginfo);
684}
685
686/**
687 * TPAL_SetPhy10Force - Force Base-T FD mode WITHOUT using autonegotiation
688 * @pAdapter: pointer to the adapter structure
689 */
690void TPAL_SetPhy10Force(struct et131x_adapter *pAdapter)
691{
692 DBG_ENTER(et131x_dbginfo);
693
694 /* Power down PHY */
695 ET1310_PhyPowerDown(pAdapter, 1);
696
697 /* Disable autoneg */
698 ET1310_PhyAutoNeg(pAdapter, false);
699
700 /* Disable all advertisement */
701 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
702 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
703 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
704
705 /* Force 10 Mbps */
706 ET1310_PhySpeedSelect(pAdapter, TRUEPHY_SPEED_10MBPS);
707
708 /* Force Full duplex */
709 ET1310_PhyDuplexMode(pAdapter, TRUEPHY_DUPLEX_FULL);
710
711 /* Power up PHY */
712 ET1310_PhyPowerDown(pAdapter, 0);
713
714 DBG_LEAVE(et131x_dbginfo);
715}
716
717/**
718 * TPAL_SetPhy100HalfDuplex - Force 100 Base T Half Duplex mode.
719 * @pAdapter: pointer to the adapter structure
720 *
721 * Also sets the MAC so it is syncd up properly.
722 */
723void TPAL_SetPhy100HalfDuplex(struct et131x_adapter *pAdapter)
724{
725 DBG_ENTER(et131x_dbginfo);
726
727 /* Power down PHY */
728 ET1310_PhyPowerDown(pAdapter, 1);
729
730 /* first we need to turn off all other advertisement */
731 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
732
733 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
734
735 /* Set our advertise values accordingly */
736 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_HALF);
737
738 /* Set speed */
739 ET1310_PhySpeedSelect(pAdapter, TRUEPHY_SPEED_100MBPS);
740
741 /* Power up PHY */
742 ET1310_PhyPowerDown(pAdapter, 0);
743
744 DBG_LEAVE(et131x_dbginfo);
745}
746
747/**
748 * TPAL_SetPhy100FullDuplex - Force 100 Base T Full Duplex mode.
749 * @pAdapter: pointer to the adapter structure
750 *
751 * Also sets the MAC so it is syncd up properly
752 */
753void TPAL_SetPhy100FullDuplex(struct et131x_adapter *pAdapter)
754{
755 DBG_ENTER(et131x_dbginfo);
756
757 /* Power down PHY */
758 ET1310_PhyPowerDown(pAdapter, 1);
759
760 /* First we need to turn off all other advertisement */
761 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
762
763 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
764
765 /* Set our advertise values accordingly */
766 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_FULL);
767
768 /* Power up PHY */
769 ET1310_PhyPowerDown(pAdapter, 0);
770
771 DBG_LEAVE(et131x_dbginfo);
772}
773
774/**
775 * TPAL_SetPhy100Force - Force 100 BaseT FD mode WITHOUT using autonegotiation
776 * @pAdapter: pointer to the adapter structure
777 */
778void TPAL_SetPhy100Force(struct et131x_adapter *pAdapter)
779{
780 DBG_ENTER(et131x_dbginfo);
781
782 /* Power down PHY */
783 ET1310_PhyPowerDown(pAdapter, 1);
784
785 /* Disable autoneg */
786 ET1310_PhyAutoNeg(pAdapter, false);
787
788 /* Disable all advertisement */
789 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
790 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
791 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
792
793 /* Force 100 Mbps */
794 ET1310_PhySpeedSelect(pAdapter, TRUEPHY_SPEED_100MBPS);
795
796 /* Force Full duplex */
797 ET1310_PhyDuplexMode(pAdapter, TRUEPHY_DUPLEX_FULL);
798
799 /* Power up PHY */
800 ET1310_PhyPowerDown(pAdapter, 0);
801
802 DBG_LEAVE(et131x_dbginfo);
803}
804
805/**
806 * TPAL_SetPhy1000FullDuplex - Force 1000 Base T Full Duplex mode
807 * @pAdapter: pointer to the adapter structure
808 *
809 * Also sets the MAC so it is syncd up properly.
810 */
811void TPAL_SetPhy1000FullDuplex(struct et131x_adapter *pAdapter)
812{
813 DBG_ENTER(et131x_dbginfo);
814
815 /* Power down PHY */
816 ET1310_PhyPowerDown(pAdapter, 1);
817
818 /* first we need to turn off all other advertisement */
819 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
820
821 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
822
823 /* set our advertise values accordingly */
824 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_FULL);
825
826 /* power up PHY */
827 ET1310_PhyPowerDown(pAdapter, 0);
828
829 DBG_LEAVE(et131x_dbginfo);
830}
831
832/**
833 * TPAL_SetPhyAutoNeg - Set phy to autonegotiation mode.
834 * @pAdapter: pointer to the adapter structure
835 */
836void TPAL_SetPhyAutoNeg(struct et131x_adapter *pAdapter)
837{
838 DBG_ENTER(et131x_dbginfo);
839
840 /* Power down PHY */
841 ET1310_PhyPowerDown(pAdapter, 1);
842
843 /* Turn on advertisement of all capabilities */
844 ET1310_PhyAdvertise10BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_BOTH);
845
846 ET1310_PhyAdvertise100BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_BOTH);
847
848 if (pAdapter->DeviceID != ET131X_PCI_DEVICE_ID_FAST) {
849 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_FULL);
850 } else {
851 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
852 }
853
854 /* Make sure auto-neg is ON (it is disabled in FORCE modes) */
855 ET1310_PhyAutoNeg(pAdapter, true);
856
857 /* Power up PHY */
858 ET1310_PhyPowerDown(pAdapter, 0);
859
860 DBG_LEAVE(et131x_dbginfo);
861}
862
863
864/*
865 * The routines which follow provide low-level access to the PHY, and are used
866 * primarily by the routines above (although there are a few places elsewhere
867 * in the driver where this level of access is required).
868 */
869
870static const uint16_t ConfigPhy[25][2] = {
871 /* Reg Value Register */
872 /* Addr */
873 {0x880B, 0x0926}, /* AfeIfCreg4B1000Msbs */
874 {0x880C, 0x0926}, /* AfeIfCreg4B100Msbs */
875 {0x880D, 0x0926}, /* AfeIfCreg4B10Msbs */
876
877 {0x880E, 0xB4D3}, /* AfeIfCreg4B1000Lsbs */
878 {0x880F, 0xB4D3}, /* AfeIfCreg4B100Lsbs */
879 {0x8810, 0xB4D3}, /* AfeIfCreg4B10Lsbs */
880
881 {0x8805, 0xB03E}, /* AfeIfCreg3B1000Msbs */
882 {0x8806, 0xB03E}, /* AfeIfCreg3B100Msbs */
883 {0x8807, 0xFF00}, /* AfeIfCreg3B10Msbs */
884
885 {0x8808, 0xE090}, /* AfeIfCreg3B1000Lsbs */
886 {0x8809, 0xE110}, /* AfeIfCreg3B100Lsbs */
887 {0x880A, 0x0000}, /* AfeIfCreg3B10Lsbs */
888
889 {0x300D, 1}, /* DisableNorm */
890
891 {0x280C, 0x0180}, /* LinkHoldEnd */
892
893 {0x1C21, 0x0002}, /* AlphaM */
894
895 {0x3821, 6}, /* FfeLkgTx0 */
896 {0x381D, 1}, /* FfeLkg1g4 */
897 {0x381E, 1}, /* FfeLkg1g5 */
898 {0x381F, 1}, /* FfeLkg1g6 */
899 {0x3820, 1}, /* FfeLkg1g7 */
900
901 {0x8402, 0x01F0}, /* Btinact */
902 {0x800E, 20}, /* LftrainTime */
903 {0x800F, 24}, /* DvguardTime */
904 {0x8010, 46}, /* IdlguardTime */
905
906 {0, 0}
907
908};
909
910/* condensed version of the phy initialization routine */
911void ET1310_PhyInit(struct et131x_adapter *pAdapter)
912{
913 uint16_t usData, usIndex;
914
915 if (pAdapter == NULL) {
916 return;
917 }
918
919 // get the identity (again ?)
920 MiRead(pAdapter, PHY_ID_1, &usData);
921 MiRead(pAdapter, PHY_ID_2, &usData);
922
923 // what does this do/achieve ?
924 MiRead(pAdapter, PHY_MPHY_CONTROL_REG, &usData); // should read 0002
925 MiWrite(pAdapter, PHY_MPHY_CONTROL_REG, 0x0006);
926
927 // read modem register 0402, should I do something with the return data ?
928 MiWrite(pAdapter, PHY_INDEX_REG, 0x0402);
929 MiRead(pAdapter, PHY_DATA_REG, &usData);
930
931 // what does this do/achieve ?
932 MiWrite(pAdapter, PHY_MPHY_CONTROL_REG, 0x0002);
933
934 // get the identity (again ?)
935 MiRead(pAdapter, PHY_ID_1, &usData);
936 MiRead(pAdapter, PHY_ID_2, &usData);
937
938 // what does this achieve ?
939 MiRead(pAdapter, PHY_MPHY_CONTROL_REG, &usData); // should read 0002
940 MiWrite(pAdapter, PHY_MPHY_CONTROL_REG, 0x0006);
941
942 // read modem register 0402, should I do something with the return data?
943 MiWrite(pAdapter, PHY_INDEX_REG, 0x0402);
944 MiRead(pAdapter, PHY_DATA_REG, &usData);
945
946 MiWrite(pAdapter, PHY_MPHY_CONTROL_REG, 0x0002);
947
948 // what does this achieve (should return 0x1040)
949 MiRead(pAdapter, PHY_CONTROL, &usData);
950 MiRead(pAdapter, PHY_MPHY_CONTROL_REG, &usData); // should read 0002
951 MiWrite(pAdapter, PHY_CONTROL, 0x1840);
952
953 MiWrite(pAdapter, PHY_MPHY_CONTROL_REG, 0x0007);
954
955 // here the writing of the array starts....
956 usIndex = 0;
957 while (ConfigPhy[usIndex][0] != 0x0000) {
958 // write value
959 MiWrite(pAdapter, PHY_INDEX_REG, ConfigPhy[usIndex][0]);
960 MiWrite(pAdapter, PHY_DATA_REG, ConfigPhy[usIndex][1]);
961
962 // read it back
963 MiWrite(pAdapter, PHY_INDEX_REG, ConfigPhy[usIndex][0]);
964 MiRead(pAdapter, PHY_DATA_REG, &usData);
965
966 // do a check on the value read back ?
967 usIndex++;
968 }
969 // here the writing of the array ends...
970
971 MiRead(pAdapter, PHY_CONTROL, &usData); // 0x1840
972 MiRead(pAdapter, PHY_MPHY_CONTROL_REG, &usData); // should read 0007
973 MiWrite(pAdapter, PHY_CONTROL, 0x1040);
974 MiWrite(pAdapter, PHY_MPHY_CONTROL_REG, 0x0002);
975}
976
977void ET1310_PhyReset(struct et131x_adapter *pAdapter)
978{
979 MiWrite(pAdapter, PHY_CONTROL, 0x8000);
980}
981
982void ET1310_PhyPowerDown(struct et131x_adapter *pAdapter, bool down)
983{
984 uint16_t usData;
985
986 MiRead(pAdapter, PHY_CONTROL, &usData);
987
988 if (down == false) {
989 // Power UP
990 usData &= ~0x0800;
991 MiWrite(pAdapter, PHY_CONTROL, usData);
992 } else {
993 // Power DOWN
994 usData |= 0x0800;
995 MiWrite(pAdapter, PHY_CONTROL, usData);
996 }
997}
998
999void ET1310_PhyAutoNeg(struct et131x_adapter *pAdapter, bool enable)
1000{
1001 uint16_t usData;
1002
1003 MiRead(pAdapter, PHY_CONTROL, &usData);
1004
1005 if (enable == true) {
1006 // Autonegotiation ON
1007 usData |= 0x1000;
1008 MiWrite(pAdapter, PHY_CONTROL, usData);
1009 } else {
1010 // Autonegotiation OFF
1011 usData &= ~0x1000;
1012 MiWrite(pAdapter, PHY_CONTROL, usData);
1013 }
1014}
1015
1016void ET1310_PhyDuplexMode(struct et131x_adapter *pAdapter, uint16_t duplex)
1017{
1018 uint16_t usData;
1019
1020 MiRead(pAdapter, PHY_CONTROL, &usData);
1021
1022 if (duplex == TRUEPHY_DUPLEX_FULL) {
1023 // Set Full Duplex
1024 usData |= 0x100;
1025 MiWrite(pAdapter, PHY_CONTROL, usData);
1026 } else {
1027 // Set Half Duplex
1028 usData &= ~0x100;
1029 MiWrite(pAdapter, PHY_CONTROL, usData);
1030 }
1031}
1032
1033void ET1310_PhySpeedSelect(struct et131x_adapter *pAdapter, uint16_t speed)
1034{
1035 uint16_t usData;
1036
1037 // Read the PHY control register
1038 MiRead(pAdapter, PHY_CONTROL, &usData);
1039
1040 // Clear all Speed settings (Bits 6, 13)
1041 usData &= ~0x2040;
1042
1043 // Reset the speed bits based on user selection
1044 switch (speed) {
1045 case TRUEPHY_SPEED_10MBPS:
1046 // Bits already cleared above, do nothing
1047 break;
1048
1049 case TRUEPHY_SPEED_100MBPS:
1050 // 100M == Set bit 13
1051 usData |= 0x2000;
1052 break;
1053
1054 case TRUEPHY_SPEED_1000MBPS:
1055 default:
1056 usData |= 0x0040;
1057 break;
1058 }
1059
1060 // Write back the new speed
1061 MiWrite(pAdapter, PHY_CONTROL, usData);
1062}
1063
1064void ET1310_PhyAdvertise1000BaseT(struct et131x_adapter *pAdapter,
1065 uint16_t duplex)
1066{
1067 uint16_t usData;
1068
1069 // Read the PHY 1000 Base-T Control Register
1070 MiRead(pAdapter, PHY_1000_CONTROL, &usData);
1071
1072 // Clear Bits 8,9
1073 usData &= ~0x0300;
1074
1075 switch (duplex) {
1076 case TRUEPHY_ADV_DUPLEX_NONE:
1077 // Duplex already cleared, do nothing
1078 break;
1079
1080 case TRUEPHY_ADV_DUPLEX_FULL:
1081 // Set Bit 9
1082 usData |= 0x0200;
1083 break;
1084
1085 case TRUEPHY_ADV_DUPLEX_HALF:
1086 // Set Bit 8
1087 usData |= 0x0100;
1088 break;
1089
1090 case TRUEPHY_ADV_DUPLEX_BOTH:
1091 default:
1092 usData |= 0x0300;
1093 break;
1094 }
1095
1096 // Write back advertisement
1097 MiWrite(pAdapter, PHY_1000_CONTROL, usData);
1098}
1099
1100void ET1310_PhyAdvertise100BaseT(struct et131x_adapter *pAdapter,
1101 uint16_t duplex)
1102{
1103 uint16_t usData;
1104
1105 // Read the Autonegotiation Register (10/100)
1106 MiRead(pAdapter, PHY_AUTO_ADVERTISEMENT, &usData);
1107
1108 // Clear bits 7,8
1109 usData &= ~0x0180;
1110
1111 switch (duplex) {
1112 case TRUEPHY_ADV_DUPLEX_NONE:
1113 // Duplex already cleared, do nothing
1114 break;
1115
1116 case TRUEPHY_ADV_DUPLEX_FULL:
1117 // Set Bit 8
1118 usData |= 0x0100;
1119 break;
1120
1121 case TRUEPHY_ADV_DUPLEX_HALF:
1122 // Set Bit 7
1123 usData |= 0x0080;
1124 break;
1125
1126 case TRUEPHY_ADV_DUPLEX_BOTH:
1127 default:
1128 // Set Bits 7,8
1129 usData |= 0x0180;
1130 break;
1131 }
1132
1133 // Write back advertisement
1134 MiWrite(pAdapter, PHY_AUTO_ADVERTISEMENT, usData);
1135}
1136
1137void ET1310_PhyAdvertise10BaseT(struct et131x_adapter *pAdapter,
1138 uint16_t duplex)
1139{
1140 uint16_t usData;
1141
1142 // Read the Autonegotiation Register (10/100)
1143 MiRead(pAdapter, PHY_AUTO_ADVERTISEMENT, &usData);
1144
1145 // Clear bits 5,6
1146 usData &= ~0x0060;
1147
1148 switch (duplex) {
1149 case TRUEPHY_ADV_DUPLEX_NONE:
1150 // Duplex already cleared, do nothing
1151 break;
1152
1153 case TRUEPHY_ADV_DUPLEX_FULL:
1154 // Set Bit 6
1155 usData |= 0x0040;
1156 break;
1157
1158 case TRUEPHY_ADV_DUPLEX_HALF:
1159 // Set Bit 5
1160 usData |= 0x0020;
1161 break;
1162
1163 case TRUEPHY_ADV_DUPLEX_BOTH:
1164 default:
1165 // Set Bits 5,6
1166 usData |= 0x0060;
1167 break;
1168 }
1169
1170 // Write back advertisement
1171 MiWrite(pAdapter, PHY_AUTO_ADVERTISEMENT, usData);
1172}
1173
1174void ET1310_PhyLinkStatus(struct et131x_adapter *pAdapter,
1175 uint8_t *ucLinkStatus,
1176 uint32_t *uiAutoNeg,
1177 uint32_t *uiLinkSpeed,
1178 uint32_t *uiDuplexMode,
1179 uint32_t *uiMdiMdix,
1180 uint32_t *uiMasterSlave, uint32_t *uiPolarity)
1181{
1182 uint16_t usMiStatus = 0;
1183 uint16_t us1000BaseT = 0;
1184 uint16_t usVmiPhyStatus = 0;
1185 uint16_t usControl = 0;
1186
1187 MiRead(pAdapter, PHY_STATUS, &usMiStatus);
1188 MiRead(pAdapter, PHY_1000_STATUS, &us1000BaseT);
1189 MiRead(pAdapter, PHY_PHY_STATUS, &usVmiPhyStatus);
1190 MiRead(pAdapter, PHY_CONTROL, &usControl);
1191
1192 if (ucLinkStatus) {
1193 *ucLinkStatus =
1194 (unsigned char)((usVmiPhyStatus & 0x0040) ? 1 : 0);
1195 }
1196
1197 if (uiAutoNeg) {
1198 *uiAutoNeg =
1199 (usControl & 0x1000) ? ((usVmiPhyStatus & 0x0020) ?
1200 TRUEPHY_ANEG_COMPLETE :
1201 TRUEPHY_ANEG_NOT_COMPLETE) :
1202 TRUEPHY_ANEG_DISABLED;
1203 }
1204
1205 if (uiLinkSpeed) {
1206 *uiLinkSpeed = (usVmiPhyStatus & 0x0300) >> 8;
1207 }
1208
1209 if (uiDuplexMode) {
1210 *uiDuplexMode = (usVmiPhyStatus & 0x0080) >> 7;
1211 }
1212
1213 if (uiMdiMdix) {
1214 /* NOTE: Need to complete this */
1215 *uiMdiMdix = 0;
1216 }
1217
1218 if (uiMasterSlave) {
1219 *uiMasterSlave =
1220 (us1000BaseT & 0x4000) ? TRUEPHY_CFG_MASTER :
1221 TRUEPHY_CFG_SLAVE;
1222 }
1223
1224 if (uiPolarity) {
1225 *uiPolarity =
1226 (usVmiPhyStatus & 0x0400) ? TRUEPHY_POLARITY_INVERTED :
1227 TRUEPHY_POLARITY_NORMAL;
1228 }
1229}
1230
1231void ET1310_PhyAndOrReg(struct et131x_adapter *pAdapter,
1232 uint16_t regnum, uint16_t andMask, uint16_t orMask)
1233{
1234 uint16_t reg;
1235
1236 // Read the requested register
1237 MiRead(pAdapter, regnum, &reg);
1238
1239 // Apply the AND mask
1240 reg &= andMask;
1241
1242 // Apply the OR mask
1243 reg |= orMask;
1244
1245 // Write the value back to the register
1246 MiWrite(pAdapter, regnum, reg);
1247}
1248
1249void ET1310_PhyAccessMiBit(struct et131x_adapter *pAdapter, uint16_t action,
1250 uint16_t regnum, uint16_t bitnum, uint8_t *value)
1251{
1252 uint16_t reg;
1253 uint16_t mask = 0;
1254
1255 // Create a mask to isolate the requested bit
1256 mask = 0x0001 << bitnum;
1257
1258 // Read the requested register
1259 MiRead(pAdapter, regnum, &reg);
1260
1261 switch (action) {
1262 case TRUEPHY_BIT_READ:
1263 if (value != NULL) {
1264 *value = (reg & mask) >> bitnum;
1265 }
1266 break;
1267
1268 case TRUEPHY_BIT_SET:
1269 reg |= mask;
1270 MiWrite(pAdapter, regnum, reg);
1271 break;
1272
1273 case TRUEPHY_BIT_CLEAR:
1274 reg &= ~mask;
1275 MiWrite(pAdapter, regnum, reg);
1276 break;
1277
1278 default:
1279 break;
1280 }
1281}
diff --git a/drivers/staging/et131x/et1310_phy.h b/drivers/staging/et131x/et1310_phy.h
new file mode 100644
index 00000000000..d624cbbadbd
--- /dev/null
+++ b/drivers/staging/et131x/et1310_phy.h
@@ -0,0 +1,910 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_phy.h - Defines, structs, enums, prototypes, etc. pertaining to the
12 * PHY.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef _ET1310_PHY_H_
60#define _ET1310_PHY_H_
61
62#include "et1310_address_map.h"
63
64#define TRUEPHY_SUCCESS 0
65#define TRUEPHY_FAILURE 1
66typedef void *TRUEPHY_HANDLE;
67typedef void *TRUEPHY_PLATFORM_HANDLE;
68typedef void *TRUEPHY_OSAL_HANDLE;
69
70/* MI Register Addresses */
71#define MI_CONTROL_REG 0
72#define MI_STATUS_REG 1
73#define MI_PHY_IDENTIFIER_1_REG 2
74#define MI_PHY_IDENTIFIER_2_REG 3
75#define MI_AUTONEG_ADVERTISEMENT_REG 4
76#define MI_AUTONEG_LINK_PARTNER_ABILITY_REG 5
77#define MI_AUTONEG_EXPANSION_REG 6
78#define MI_AUTONEG_NEXT_PAGE_TRANSMIT_REG 7
79#define MI_LINK_PARTNER_NEXT_PAGE_REG 8
80#define MI_1000BASET_CONTROL_REG 9
81#define MI_1000BASET_STATUS_REG 10
82#define MI_RESERVED11_REG 11
83#define MI_RESERVED12_REG 12
84#define MI_RESERVED13_REG 13
85#define MI_RESERVED14_REG 14
86#define MI_EXTENDED_STATUS_REG 15
87
88/* VMI Register Addresses */
89#define VMI_RESERVED16_REG 16
90#define VMI_RESERVED17_REG 17
91#define VMI_RESERVED18_REG 18
92#define VMI_LOOPBACK_CONTROL_REG 19
93#define VMI_RESERVED20_REG 20
94#define VMI_MI_CONTROL_REG 21
95#define VMI_PHY_CONFIGURATION_REG 22
96#define VMI_PHY_CONTROL_REG 23
97#define VMI_INTERRUPT_MASK_REG 24
98#define VMI_INTERRUPT_STATUS_REG 25
99#define VMI_PHY_STATUS_REG 26
100#define VMI_LED_CONTROL_1_REG 27
101#define VMI_LED_CONTROL_2_REG 28
102#define VMI_RESERVED29_REG 29
103#define VMI_RESERVED30_REG 30
104#define VMI_RESERVED31_REG 31
105
106/* PHY Register Mapping(MI) Management Interface Regs */
107typedef struct _MI_REGS_t {
108 u8 bmcr; // Basic mode control reg(Reg 0x00)
109 u8 bmsr; // Basic mode status reg(Reg 0x01)
110 u8 idr1; // Phy identifier reg 1(Reg 0x02)
111 u8 idr2; // Phy identifier reg 2(Reg 0x03)
112 u8 anar; // Auto-Negotiation advertisement(Reg 0x04)
113 u8 anlpar; // Auto-Negotiation link Partner Ability(Reg 0x05)
114 u8 aner; // Auto-Negotiation expansion reg(Reg 0x06)
115 u8 annptr; // Auto-Negotiation next page transmit reg(Reg 0x07)
116 u8 lpnpr; // link partner next page reg(Reg 0x08)
117 u8 gcr; // Gigabit basic mode control reg(Reg 0x09)
118 u8 gsr; // Gigabit basic mode status reg(Reg 0x0A)
119 u8 mi_res1[4]; // Future use by MI working group(Reg 0x0B - 0x0E)
120 u8 esr; // Extended status reg(Reg 0x0F)
121 u8 mi_res2[3]; // Future use by MI working group(Reg 0x10 - 0x12)
122 u8 loop_ctl; // Loopback Control Reg(Reg 0x13)
123 u8 mi_res3; // Future use by MI working group(Reg 0x14)
124 u8 mcr; // MI Control Reg(Reg 0x15)
125 u8 pcr; // Configuration Reg(Reg 0x16)
126 u8 phy_ctl; // PHY Control Reg(Reg 0x17)
127 u8 imr; // Interrupt Mask Reg(Reg 0x18)
128 u8 isr; // Interrupt Status Reg(Reg 0x19)
129 u8 psr; // PHY Status Reg(Reg 0x1A)
130 u8 lcr1; // LED Control 1 Reg(Reg 0x1B)
131 u8 lcr2; // LED Control 2 Reg(Reg 0x1C)
132 u8 mi_res4[3]; // Future use by MI working group(Reg 0x1D - 0x1F)
133} MI_REGS_t, *PMI_REGS_t;
134
135/* MI Register 0: Basic mode control register */
136typedef union _MI_BMCR_t {
137 u16 value;
138 struct {
139#ifdef _BIT_FIELDS_HTOL
140 u16 reset:1; // bit 15
141 u16 loopback:1; // bit 14
142 u16 speed_sel:1; // bit 13
143 u16 enable_autoneg:1; // bit 12
144 u16 power_down:1; // bit 11
145 u16 isolate:1; // bit 10
146 u16 restart_autoneg:1; // bit 9
147 u16 duplex_mode:1; // bit 8
148 u16 col_test:1; // bit 7
149 u16 speed_1000_sel:1; // bit 6
150 u16 res1:6; // bits 0-5
151#else
152 u16 res1:6; // bits 0-5
153 u16 speed_1000_sel:1; // bit 6
154 u16 col_test:1; // bit 7
155 u16 duplex_mode:1; // bit 8
156 u16 restart_autoneg:1; // bit 9
157 u16 isolate:1; // bit 10
158 u16 power_down:1; // bit 11
159 u16 enable_autoneg:1; // bit 12
160 u16 speed_sel:1; // bit 13
161 u16 loopback:1; // bit 14
162 u16 reset:1; // bit 15
163#endif
164 } bits;
165} MI_BMCR_t, *PMI_BMCR_t;
166
167/* MI Register 1: Basic mode status register */
168typedef union _MI_BMSR_t {
169 u16 value;
170 struct {
171#ifdef _BIT_FIELDS_HTOL
172 u16 link_100T4:1; // bit 15
173 u16 link_100fdx:1; // bit 14
174 u16 link_100hdx:1; // bit 13
175 u16 link_10fdx:1; // bit 12
176 u16 link_10hdx:1; // bit 11
177 u16 link_100T2fdx:1; // bit 10
178 u16 link_100T2hdx:1; // bit 9
179 u16 extend_status:1; // bit 8
180 u16 res1:1; // bit 7
181 u16 preamble_supress:1; // bit 6
182 u16 auto_neg_complete:1; // bit 5
183 u16 remote_fault:1; // bit 4
184 u16 auto_neg_able:1; // bit 3
185 u16 link_status:1; // bit 2
186 u16 jabber_detect:1; // bit 1
187 u16 ext_cap:1; // bit 0
188#else
189 u16 ext_cap:1; // bit 0
190 u16 jabber_detect:1; // bit 1
191 u16 link_status:1; // bit 2
192 u16 auto_neg_able:1; // bit 3
193 u16 remote_fault:1; // bit 4
194 u16 auto_neg_complete:1; // bit 5
195 u16 preamble_supress:1; // bit 6
196 u16 res1:1; // bit 7
197 u16 extend_status:1; // bit 8
198 u16 link_100T2hdx:1; // bit 9
199 u16 link_100T2fdx:1; // bit 10
200 u16 link_10hdx:1; // bit 11
201 u16 link_10fdx:1; // bit 12
202 u16 link_100hdx:1; // bit 13
203 u16 link_100fdx:1; // bit 14
204 u16 link_100T4:1; // bit 15
205#endif
206 } bits;
207} MI_BMSR_t, *PMI_BMSR_t;
208
209/* MI Register 2: Physical Identifier 1 */
210typedef union _MI_IDR1_t {
211 u16 value;
212 struct {
213 u16 ieee_address:16; // 0x0282 default(bits 0-15)
214 } bits;
215} MI_IDR1_t, *PMI_IDR1_t;
216
217/* MI Register 3: Physical Identifier 2 */
218typedef union _MI_IDR2_t {
219 u16 value;
220 struct {
221#ifdef _BIT_FIELDS_HTOL
222 u16 ieee_address:6; // 111100 default(bits 10-15)
223 u16 model_no:6; // 000001 default(bits 4-9)
224 u16 rev_no:4; // 0010 default(bits 0-3)
225#else
226 u16 rev_no:4; // 0010 default(bits 0-3)
227 u16 model_no:6; // 000001 default(bits 4-9)
228 u16 ieee_address:6; // 111100 default(bits 10-15)
229#endif
230 } bits;
231} MI_IDR2_t, *PMI_IDR2_t;
232
233/* MI Register 4: Auto-negotiation advertisement register */
234typedef union _MI_ANAR_t {
235 u16 value;
236 struct {
237#ifdef _BIT_FIELDS_HTOL
238 u16 np_indication:1; // bit 15
239 u16 res2:1; // bit 14
240 u16 remote_fault:1; // bit 13
241 u16 res1:1; // bit 12
242 u16 cap_asmpause:1; // bit 11
243 u16 cap_pause:1; // bit 10
244 u16 cap_100T4:1; // bit 9
245 u16 cap_100fdx:1; // bit 8
246 u16 cap_100hdx:1; // bit 7
247 u16 cap_10fdx:1; // bit 6
248 u16 cap_10hdx:1; // bit 5
249 u16 selector:5; // bits 0-4
250#else
251 u16 selector:5; // bits 0-4
252 u16 cap_10hdx:1; // bit 5
253 u16 cap_10fdx:1; // bit 6
254 u16 cap_100hdx:1; // bit 7
255 u16 cap_100fdx:1; // bit 8
256 u16 cap_100T4:1; // bit 9
257 u16 cap_pause:1; // bit 10
258 u16 cap_asmpause:1; // bit 11
259 u16 res1:1; // bit 12
260 u16 remote_fault:1; // bit 13
261 u16 res2:1; // bit 14
262 u16 np_indication:1; // bit 15
263#endif
264 } bits;
265} MI_ANAR_t, *PMI_ANAR_t;
266
267/* MI Register 5: Auto-negotiation link partner advertisement register */
268typedef struct _MI_ANLPAR_t {
269 u16 value;
270 struct {
271#ifdef _BIT_FIELDS_HTOL
272 u16 np_indication:1; // bit 15
273 u16 acknowledge:1; // bit 14
274 u16 remote_fault:1; // bit 13
275 u16 res1:1; // bit 12
276 u16 cap_asmpause:1; // bit 11
277 u16 cap_pause:1; // bit 10
278 u16 cap_100T4:1; // bit 9
279 u16 cap_100fdx:1; // bit 8
280 u16 cap_100hdx:1; // bit 7
281 u16 cap_10fdx:1; // bit 6
282 u16 cap_10hdx:1; // bit 5
283 u16 selector:5; // bits 0-4
284#else
285 u16 selector:5; // bits 0-4
286 u16 cap_10hdx:1; // bit 5
287 u16 cap_10fdx:1; // bit 6
288 u16 cap_100hdx:1; // bit 7
289 u16 cap_100fdx:1; // bit 8
290 u16 cap_100T4:1; // bit 9
291 u16 cap_pause:1; // bit 10
292 u16 cap_asmpause:1; // bit 11
293 u16 res1:1; // bit 12
294 u16 remote_fault:1; // bit 13
295 u16 acknowledge:1; // bit 14
296 u16 np_indication:1; // bit 15
297#endif
298 } bits;
299} MI_ANLPAR_t, *PMI_ANLPAR_t;
300
301/* MI Register 6: Auto-negotiation expansion register */
302typedef union _MI_ANER_t {
303 u16 value;
304 struct {
305#ifdef _BIT_FIELDS_HTOL
306 u16 res:11; // bits 5-15
307 u16 pdf:1; // bit 4
308 u16 lp_np_able:1; // bit 3
309 u16 np_able:1; // bit 2
310 u16 page_rx:1; // bit 1
311 u16 lp_an_able:1; // bit 0
312#else
313 u16 lp_an_able:1; // bit 0
314 u16 page_rx:1; // bit 1
315 u16 np_able:1; // bit 2
316 u16 lp_np_able:1; // bit 3
317 u16 pdf:1; // bit 4
318 u16 res:11; // bits 5-15
319#endif
320 } bits;
321} MI_ANER_t, *PMI_ANER_t;
322
323/* MI Register 7: Auto-negotiation next page transmit reg(0x07) */
324typedef union _MI_ANNPTR_t {
325 u16 value;
326 struct {
327#ifdef _BIT_FIELDS_HTOL
328 u16 np:1; // bit 15
329 u16 res1:1; // bit 14
330 u16 msg_page:1; // bit 13
331 u16 ack2:1; // bit 12
332 u16 toggle:1; // bit 11
333 u16 msg:11; // bits 0-10
334#else
335 u16 msg:11; // bits 0-10
336 u16 toggle:1; // bit 11
337 u16 ack2:1; // bit 12
338 u16 msg_page:1; // bit 13
339 u16 res1:1; // bit 14
340 u16 np:1; // bit 15
341#endif
342 } bits;
343} MI_ANNPTR_t, *PMI_ANNPTR_t;
344
345/* MI Register 8: Link Partner Next Page Reg(0x08) */
346typedef union _MI_LPNPR_t {
347 u16 value;
348 struct {
349#ifdef _BIT_FIELDS_HTOL
350 u16 np:1; // bit 15
351 u16 ack:1; // bit 14
352 u16 msg_page:1; // bit 13
353 u16 ack2:1; // bit 12
354 u16 toggle:1; // bit 11
355 u16 msg:11; // bits 0-10
356#else
357 u16 msg:11; // bits 0-10
358 u16 toggle:1; // bit 11
359 u16 ack2:1; // bit 12
360 u16 msg_page:1; // bit 13
361 u16 ack:1; // bit 14
362 u16 np:1; // bit 15
363#endif
364 } bits;
365} MI_LPNPR_t, *PMI_LPNPR_t;
366
367/* MI Register 9: 1000BaseT Control Reg(0x09) */
368typedef union _MI_GCR_t {
369 u16 value;
370 struct {
371#ifdef _BIT_FIELDS_HTOL
372 u16 test_mode:3; // bits 13-15
373 u16 ms_config_en:1; // bit 12
374 u16 ms_value:1; // bit 11
375 u16 port_type:1; // bit 10
376 u16 link_1000fdx:1; // bit 9
377 u16 link_1000hdx:1; // bit 8
378 u16 res:8; // bit 0-7
379#else
380 u16 res:8; // bit 0-7
381 u16 link_1000hdx:1; // bit 8
382 u16 link_1000fdx:1; // bit 9
383 u16 port_type:1; // bit 10
384 u16 ms_value:1; // bit 11
385 u16 ms_config_en:1; // bit 12
386 u16 test_mode:3; // bits 13-15
387#endif
388 } bits;
389} MI_GCR_t, *PMI_GCR_t;
390
391/* MI Register 10: 1000BaseT Status Reg(0x0A) */
392typedef union _MI_GSR_t {
393 u16 value;
394 struct {
395#ifdef _BIT_FIELDS_HTOL
396 u16 ms_config_fault:1; // bit 15
397 u16 ms_resolve:1; // bit 14
398 u16 local_rx_status:1; // bit 13
399 u16 remote_rx_status:1; // bit 12
400 u16 link_1000fdx:1; // bit 11
401 u16 link_1000hdx:1; // bit 10
402 u16 res:2; // bits 8-9
403 u16 idle_err_cnt:8; // bits 0-7
404#else
405 u16 idle_err_cnt:8; // bits 0-7
406 u16 res:2; // bits 8-9
407 u16 link_1000hdx:1; // bit 10
408 u16 link_1000fdx:1; // bit 11
409 u16 remote_rx_status:1; // bit 12
410 u16 local_rx_status:1; // bit 13
411 u16 ms_resolve:1; // bit 14
412 u16 ms_config_fault:1; // bit 15
413#endif
414 } bits;
415} MI_GSR_t, *PMI_GSR_t;
416
417/* MI Register 11 - 14: Reserved Regs(0x0B - 0x0E) */
418typedef union _MI_RES_t {
419 u16 value;
420 struct {
421#ifdef _BIT_FIELDS_HTOL
422 u16 res15:1; // bit 15
423 u16 res14:1; // bit 14
424 u16 res13:1; // bit 13
425 u16 res12:1; // bit 12
426 u16 res11:1; // bit 11
427 u16 res10:1; // bit 10
428 u16 res9:1; // bit 9
429 u16 res8:1; // bit 8
430 u16 res7:1; // bit 7
431 u16 res6:1; // bit 6
432 u16 res5:1; // bit 5
433 u16 res4:1; // bit 4
434 u16 res3:1; // bit 3
435 u16 res2:1; // bit 2
436 u16 res1:1; // bit 1
437 u16 res0:1; // bit 0
438#else
439 u16 res0:1; // bit 0
440 u16 res1:1; // bit 1
441 u16 res2:1; // bit 2
442 u16 res3:1; // bit 3
443 u16 res4:1; // bit 4
444 u16 res5:1; // bit 5
445 u16 res6:1; // bit 6
446 u16 res7:1; // bit 7
447 u16 res8:1; // bit 8
448 u16 res9:1; // bit 9
449 u16 res10:1; // bit 10
450 u16 res11:1; // bit 11
451 u16 res12:1; // bit 12
452 u16 res13:1; // bit 13
453 u16 res14:1; // bit 14
454 u16 res15:1; // bit 15
455#endif
456 } bits;
457} MI_RES_t, *PMI_RES_t;
458
459/* MI Register 15: Extended status Reg(0x0F) */
460typedef union _MI_ESR_t {
461 u16 value;
462 struct {
463#ifdef _BIT_FIELDS_HTOL
464 u16 link_1000Xfdx:1; // bit 15
465 u16 link_1000Xhdx:1; // bit 14
466 u16 link_1000fdx:1; // bit 13
467 u16 link_1000hdx:1; // bit 12
468 u16 res:12; // bit 0-11
469#else
470 u16 res:12; // bit 0-11
471 u16 link_1000hdx:1; // bit 12
472 u16 link_1000fdx:1; // bit 13
473 u16 link_1000Xhdx:1; // bit 14
474 u16 link_1000Xfdx:1; // bit 15
475#endif
476 } bits;
477} MI_ESR_t, *PMI_ESR_t;
478
479/* MI Register 16 - 18: Reserved Reg(0x10-0x12) */
480
481/* MI Register 19: Loopback Control Reg(0x13) */
482typedef union _MI_LCR_t {
483 u16 value;
484 struct {
485#ifdef _BIT_FIELDS_HTOL
486 u16 mii_en:1; // bit 15
487 u16 pcs_en:1; // bit 14
488 u16 pmd_en:1; // bit 13
489 u16 all_digital_en:1; // bit 12
490 u16 replica_en:1; // bit 11
491 u16 line_driver_en:1; // bit 10
492 u16 res:10; // bit 0-9
493#else
494 u16 res:10; // bit 0-9
495 u16 line_driver_en:1; // bit 10
496 u16 replica_en:1; // bit 11
497 u16 all_digital_en:1; // bit 12
498 u16 pmd_en:1; // bit 13
499 u16 pcs_en:1; // bit 14
500 u16 mii_en:1; // bit 15
501#endif
502 } bits;
503} MI_LCR_t, *PMI_LCR_t;
504
505/* MI Register 20: Reserved Reg(0x14) */
506
507/* MI Register 21: Management Interface Control Reg(0x15) */
508typedef union _MI_MICR_t {
509 u16 value;
510 struct {
511#ifdef _BIT_FIELDS_HTOL
512 u16 res1:5; // bits 11-15
513 u16 mi_error_count:7; // bits 4-10
514 u16 res2:1; // bit 3
515 u16 ignore_10g_fr:1; // bit 2
516 u16 res3:1; // bit 1
517 u16 preamble_supress_en:1; // bit 0
518#else
519 u16 preamble_supress_en:1; // bit 0
520 u16 res3:1; // bit 1
521 u16 ignore_10g_fr:1; // bit 2
522 u16 res2:1; // bit 3
523 u16 mi_error_count:7; // bits 4-10
524 u16 res1:5; // bits 11-15
525#endif
526 } bits;
527} MI_MICR_t, *PMI_MICR_t;
528
529/* MI Register 22: PHY Configuration Reg(0x16) */
530typedef union _MI_PHY_CONFIG_t {
531 u16 value;
532 struct {
533#ifdef _BIT_FIELDS_HTOL
534 u16 crs_tx_en:1; // bit 15
535 u16 res1:1; // bit 14
536 u16 tx_fifo_depth:2; // bits 12-13
537 u16 speed_downshift:2; // bits 10-11
538 u16 pbi_detect:1; // bit 9
539 u16 tbi_rate:1; // bit 8
540 u16 alternate_np:1; // bit 7
541 u16 group_mdio_en:1; // bit 6
542 u16 tx_clock_en:1; // bit 5
543 u16 sys_clock_en:1; // bit 4
544 u16 res2:1; // bit 3
545 u16 mac_if_mode:3; // bits 0-2
546#else
547 u16 mac_if_mode:3; // bits 0-2
548 u16 res2:1; // bit 3
549 u16 sys_clock_en:1; // bit 4
550 u16 tx_clock_en:1; // bit 5
551 u16 group_mdio_en:1; // bit 6
552 u16 alternate_np:1; // bit 7
553 u16 tbi_rate:1; // bit 8
554 u16 pbi_detect:1; // bit 9
555 u16 speed_downshift:2; // bits 10-11
556 u16 tx_fifo_depth:2; // bits 12-13
557 u16 res1:1; // bit 14
558 u16 crs_tx_en:1; // bit 15
559#endif
560 } bits;
561} MI_PHY_CONFIG_t, *PMI_PHY_CONFIG_t;
562
563/* MI Register 23: PHY CONTROL Reg(0x17) */
564typedef union _MI_PHY_CONTROL_t {
565 u16 value;
566 struct {
567#ifdef _BIT_FIELDS_HTOL
568 u16 res1:1; // bit 15
569 u16 tdr_en:1; // bit 14
570 u16 res2:1; // bit 13
571 u16 downshift_attempts:2; // bits 11-12
572 u16 res3:5; // bit 6-10
573 u16 jabber_10baseT:1; // bit 5
574 u16 sqe_10baseT:1; // bit 4
575 u16 tp_loopback_10baseT:1; // bit 3
576 u16 preamble_gen_en:1; // bit 2
577 u16 res4:1; // bit 1
578 u16 force_int:1; // bit 0
579#else
580 u16 force_int:1; // bit 0
581 u16 res4:1; // bit 1
582 u16 preamble_gen_en:1; // bit 2
583 u16 tp_loopback_10baseT:1; // bit 3
584 u16 sqe_10baseT:1; // bit 4
585 u16 jabber_10baseT:1; // bit 5
586 u16 res3:5; // bit 6-10
587 u16 downshift_attempts:2; // bits 11-12
588 u16 res2:1; // bit 13
589 u16 tdr_en:1; // bit 14
590 u16 res1:1; // bit 15
591#endif
592 } bits;
593} MI_PHY_CONTROL_t, *PMI_PHY_CONTROL_t;
594
595/* MI Register 24: Interrupt Mask Reg(0x18) */
596typedef union _MI_IMR_t {
597 u16 value;
598 struct {
599#ifdef _BIT_FIELDS_HTOL
600 u16 res1:6; // bits 10-15
601 u16 mdio_sync_lost:1; // bit 9
602 u16 autoneg_status:1; // bit 8
603 u16 hi_bit_err:1; // bit 7
604 u16 np_rx:1; // bit 6
605 u16 err_counter_full:1; // bit 5
606 u16 fifo_over_underflow:1; // bit 4
607 u16 rx_status:1; // bit 3
608 u16 link_status:1; // bit 2
609 u16 automatic_speed:1; // bit 1
610 u16 int_en:1; // bit 0
611#else
612 u16 int_en:1; // bit 0
613 u16 automatic_speed:1; // bit 1
614 u16 link_status:1; // bit 2
615 u16 rx_status:1; // bit 3
616 u16 fifo_over_underflow:1; // bit 4
617 u16 err_counter_full:1; // bit 5
618 u16 np_rx:1; // bit 6
619 u16 hi_bit_err:1; // bit 7
620 u16 autoneg_status:1; // bit 8
621 u16 mdio_sync_lost:1; // bit 9
622 u16 res1:6; // bits 10-15
623#endif
624 } bits;
625} MI_IMR_t, *PMI_IMR_t;
626
627/* MI Register 25: Interrupt Status Reg(0x19) */
628typedef union _MI_ISR_t {
629 u16 value;
630 struct {
631#ifdef _BIT_FIELDS_HTOL
632 u16 res1:6; // bits 10-15
633 u16 mdio_sync_lost:1; // bit 9
634 u16 autoneg_status:1; // bit 8
635 u16 hi_bit_err:1; // bit 7
636 u16 np_rx:1; // bit 6
637 u16 err_counter_full:1; // bit 5
638 u16 fifo_over_underflow:1; // bit 4
639 u16 rx_status:1; // bit 3
640 u16 link_status:1; // bit 2
641 u16 automatic_speed:1; // bit 1
642 u16 int_en:1; // bit 0
643#else
644 u16 int_en:1; // bit 0
645 u16 automatic_speed:1; // bit 1
646 u16 link_status:1; // bit 2
647 u16 rx_status:1; // bit 3
648 u16 fifo_over_underflow:1; // bit 4
649 u16 err_counter_full:1; // bit 5
650 u16 np_rx:1; // bit 6
651 u16 hi_bit_err:1; // bit 7
652 u16 autoneg_status:1; // bit 8
653 u16 mdio_sync_lost:1; // bit 9
654 u16 res1:6; // bits 10-15
655#endif
656 } bits;
657} MI_ISR_t, *PMI_ISR_t;
658
659/* MI Register 26: PHY Status Reg(0x1A) */
660typedef union _MI_PSR_t {
661 u16 value;
662 struct {
663#ifdef _BIT_FIELDS_HTOL
664 u16 res1:1; // bit 15
665 u16 autoneg_fault:2; // bit 13-14
666 u16 autoneg_status:1; // bit 12
667 u16 mdi_x_status:1; // bit 11
668 u16 polarity_status:1; // bit 10
669 u16 speed_status:2; // bits 8-9
670 u16 duplex_status:1; // bit 7
671 u16 link_status:1; // bit 6
672 u16 tx_status:1; // bit 5
673 u16 rx_status:1; // bit 4
674 u16 collision_status:1; // bit 3
675 u16 autoneg_en:1; // bit 2
676 u16 pause_en:1; // bit 1
677 u16 asymmetric_dir:1; // bit 0
678#else
679 u16 asymmetric_dir:1; // bit 0
680 u16 pause_en:1; // bit 1
681 u16 autoneg_en:1; // bit 2
682 u16 collision_status:1; // bit 3
683 u16 rx_status:1; // bit 4
684 u16 tx_status:1; // bit 5
685 u16 link_status:1; // bit 6
686 u16 duplex_status:1; // bit 7
687 u16 speed_status:2; // bits 8-9
688 u16 polarity_status:1; // bit 10
689 u16 mdi_x_status:1; // bit 11
690 u16 autoneg_status:1; // bit 12
691 u16 autoneg_fault:2; // bit 13-14
692 u16 res1:1; // bit 15
693#endif
694 } bits;
695} MI_PSR_t, *PMI_PSR_t;
696
697/* MI Register 27: LED Control Reg 1(0x1B) */
698typedef union _MI_LCR1_t {
699 u16 value;
700 struct {
701#ifdef _BIT_FIELDS_HTOL
702 u16 res1:2; // bits 14-15
703 u16 led_dup_indicate:2; // bits 12-13
704 u16 led_10baseT:2; // bits 10-11
705 u16 led_collision:2; // bits 8-9
706 u16 res2:2; // bits 6-7
707 u16 res3:2; // bits 4-5
708 u16 pulse_dur:2; // bits 2-3
709 u16 pulse_stretch1:1; // bit 1
710 u16 pulse_stretch0:1; // bit 0
711#else
712 u16 pulse_stretch0:1; // bit 0
713 u16 pulse_stretch1:1; // bit 1
714 u16 pulse_dur:2; // bits 2-3
715 u16 res3:2; // bits 4-5
716 u16 res2:2; // bits 6-7
717 u16 led_collision:2; // bits 8-9
718 u16 led_10baseT:2; // bits 10-11
719 u16 led_dup_indicate:2; // bits 12-13
720 u16 res1:2; // bits 14-15
721#endif
722 } bits;
723} MI_LCR1_t, *PMI_LCR1_t;
724
725/* MI Register 28: LED Control Reg 2(0x1C) */
726typedef union _MI_LCR2_t {
727 u16 value;
728 struct {
729#ifdef _BIT_FIELDS_HTOL
730 u16 led_link:4; // bits 12-15
731 u16 led_tx_rx:4; // bits 8-11
732 u16 led_100BaseTX:4; // bits 4-7
733 u16 led_1000BaseT:4; // bits 0-3
734#else
735 u16 led_1000BaseT:4; // bits 0-3
736 u16 led_100BaseTX:4; // bits 4-7
737 u16 led_tx_rx:4; // bits 8-11
738 u16 led_link:4; // bits 12-15
739#endif
740 } bits;
741} MI_LCR2_t, *PMI_LCR2_t;
742
743/* MI Register 29 - 31: Reserved Reg(0x1D - 0x1E) */
744
745/* TruePHY headers */
746typedef struct _TRUEPHY_ACCESS_MI_REGS_ {
747 TRUEPHY_HANDLE hTruePhy;
748 int32_t nPhyId;
749 u8 bReadWrite;
750 u8 *pbyRegs;
751 u8 *pwData;
752 int32_t nRegCount;
753} TRUEPHY_ACCESS_MI_REGS, *PTRUEPHY_ACCESS_MI_REGS;
754
755/* TruePHY headers */
756typedef struct _TAG_TPAL_ACCESS_MI_REGS_ {
757 u32 nPhyId;
758 u8 bReadWrite;
759 u32 nRegCount;
760 u16 Data[4096];
761 u8 Regs[4096];
762} TPAL_ACCESS_MI_REGS, *PTPAL_ACCESS_MI_REGS;
763
764
765typedef TRUEPHY_HANDLE TPAL_HANDLE;
766
767/* Forward declaration of the private adapter structure */
768struct et131x_adapter;
769
770/* OS Specific Functions*/
771void TPAL_SetPhy10HalfDuplex(struct et131x_adapter *adapter);
772void TPAL_SetPhy10FullDuplex(struct et131x_adapter *adapter);
773void TPAL_SetPhy10Force(struct et131x_adapter *pAdapter);
774void TPAL_SetPhy100HalfDuplex(struct et131x_adapter *adapter);
775void TPAL_SetPhy100FullDuplex(struct et131x_adapter *adapter);
776void TPAL_SetPhy100Force(struct et131x_adapter *pAdapter);
777void TPAL_SetPhy1000FullDuplex(struct et131x_adapter *adapter);
778void TPAL_SetPhyAutoNeg(struct et131x_adapter *adapter);
779
780/* Prototypes for ET1310_phy.c */
781int et131x_xcvr_find(struct et131x_adapter *adapter);
782int et131x_setphy_normal(struct et131x_adapter *adapter);
783int32_t PhyMiRead(struct et131x_adapter *adapter,
784 u8 xcvrAddr, u8 xcvrReg, u16 *value);
785
786/* static inline function does not work because et131x_adapter is not always
787 * defined
788 */
789#define MiRead(adapter, xcvrReg, value) \
790 PhyMiRead((adapter), (adapter)->Stats.xcvr_addr, (xcvrReg), (value))
791
792int32_t MiWrite(struct et131x_adapter *adapter,
793 u8 xcvReg, u16 value);
794void et131x_Mii_check(struct et131x_adapter *pAdapter,
795 MI_BMSR_t bmsr, MI_BMSR_t bmsr_ints);
796
797/* This last is not strictly required (the driver could call the TPAL
798 * version instead), but this sets the adapter up correctly, and calls the
799 * access routine indirectly. This protects the driver from changes in TPAL.
800 */
801void SetPhy_10BaseTHalfDuplex(struct et131x_adapter *adapter);
802
803/* Defines for PHY access routines */
804
805// Define bit operation flags
806#define TRUEPHY_BIT_CLEAR 0
807#define TRUEPHY_BIT_SET 1
808#define TRUEPHY_BIT_READ 2
809
810// Define read/write operation flags
811#ifndef TRUEPHY_READ
812#define TRUEPHY_READ 0
813#define TRUEPHY_WRITE 1
814#define TRUEPHY_MASK 2
815#endif
816
817// Define speeds
818#define TRUEPHY_SPEED_10MBPS 0
819#define TRUEPHY_SPEED_100MBPS 1
820#define TRUEPHY_SPEED_1000MBPS 2
821
822// Define duplex modes
823#define TRUEPHY_DUPLEX_HALF 0
824#define TRUEPHY_DUPLEX_FULL 1
825
826// Define master/slave configuration values
827#define TRUEPHY_CFG_SLAVE 0
828#define TRUEPHY_CFG_MASTER 1
829
830// Define MDI/MDI-X settings
831#define TRUEPHY_MDI 0
832#define TRUEPHY_MDIX 1
833#define TRUEPHY_AUTO_MDI_MDIX 2
834
835// Define 10Base-T link polarities
836#define TRUEPHY_POLARITY_NORMAL 0
837#define TRUEPHY_POLARITY_INVERTED 1
838
839// Define auto-negotiation results
840#define TRUEPHY_ANEG_NOT_COMPLETE 0
841#define TRUEPHY_ANEG_COMPLETE 1
842#define TRUEPHY_ANEG_DISABLED 2
843
844/* Define duplex advertisment flags */
845#define TRUEPHY_ADV_DUPLEX_NONE 0x00
846#define TRUEPHY_ADV_DUPLEX_FULL 0x01
847#define TRUEPHY_ADV_DUPLEX_HALF 0x02
848#define TRUEPHY_ADV_DUPLEX_BOTH \
849 (TRUEPHY_ADV_DUPLEX_FULL | TRUEPHY_ADV_DUPLEX_HALF)
850
851#define PHY_CONTROL 0x00 //#define TRU_MI_CONTROL_REGISTER 0
852#define PHY_STATUS 0x01 //#define TRU_MI_STATUS_REGISTER 1
853#define PHY_ID_1 0x02 //#define TRU_MI_PHY_IDENTIFIER_1_REGISTER 2
854#define PHY_ID_2 0x03 //#define TRU_MI_PHY_IDENTIFIER_2_REGISTER 3
855#define PHY_AUTO_ADVERTISEMENT 0x04 //#define TRU_MI_ADVERTISEMENT_REGISTER 4
856#define PHY_AUTO_LINK_PARTNER 0x05 //#define TRU_MI_LINK_PARTNER_ABILITY_REGISTER 5
857#define PHY_AUTO_EXPANSION 0x06 //#define TRU_MI_EXPANSION_REGISTER 6
858#define PHY_AUTO_NEXT_PAGE_TX 0x07 //#define TRU_MI_NEXT_PAGE_TRANSMIT_REGISTER 7
859#define PHY_LINK_PARTNER_NEXT_PAGE 0x08 //#define TRU_MI_LINK_PARTNER_NEXT_PAGE_REGISTER 8
860#define PHY_1000_CONTROL 0x09 //#define TRU_MI_1000BASET_CONTROL_REGISTER 9
861#define PHY_1000_STATUS 0x0A //#define TRU_MI_1000BASET_STATUS_REGISTER 10
862
863#define PHY_EXTENDED_STATUS 0x0F //#define TRU_MI_EXTENDED_STATUS_REGISTER 15
864
865// some defines for modem registers that seem to be 'reserved'
866#define PHY_INDEX_REG 0x10
867#define PHY_DATA_REG 0x11
868
869#define PHY_MPHY_CONTROL_REG 0x12 //#define TRU_VMI_MPHY_CONTROL_REGISTER 18
870
871#define PHY_LOOPBACK_CONTROL 0x13 //#define TRU_VMI_LOOPBACK_CONTROL_1_REGISTER 19
872 //#define TRU_VMI_LOOPBACK_CONTROL_2_REGISTER 20
873#define PHY_REGISTER_MGMT_CONTROL 0x15 //#define TRU_VMI_MI_SEQ_CONTROL_REGISTER 21
874#define PHY_CONFIG 0x16 //#define TRU_VMI_CONFIGURATION_REGISTER 22
875#define PHY_PHY_CONTROL 0x17 //#define TRU_VMI_PHY_CONTROL_REGISTER 23
876#define PHY_INTERRUPT_MASK 0x18 //#define TRU_VMI_INTERRUPT_MASK_REGISTER 24
877#define PHY_INTERRUPT_STATUS 0x19 //#define TRU_VMI_INTERRUPT_STATUS_REGISTER 25
878#define PHY_PHY_STATUS 0x1A //#define TRU_VMI_PHY_STATUS_REGISTER 26
879#define PHY_LED_1 0x1B //#define TRU_VMI_LED_CONTROL_1_REGISTER 27
880#define PHY_LED_2 0x1C //#define TRU_VMI_LED_CONTROL_2_REGISTER 28
881 //#define TRU_VMI_LINK_CONTROL_REGISTER 29
882 //#define TRU_VMI_TIMING_CONTROL_REGISTER
883
884/* Prototypes for PHY access routines */
885void ET1310_PhyInit(struct et131x_adapter *adapter);
886void ET1310_PhyReset(struct et131x_adapter *adapter);
887void ET1310_PhyPowerDown(struct et131x_adapter *adapter, bool down);
888void ET1310_PhyAutoNeg(struct et131x_adapter *adapter, bool enable);
889void ET1310_PhyDuplexMode(struct et131x_adapter *adapter, u16 duplex);
890void ET1310_PhySpeedSelect(struct et131x_adapter *adapter, u16 speed);
891void ET1310_PhyAdvertise1000BaseT(struct et131x_adapter *adapter,
892 u16 duplex);
893void ET1310_PhyAdvertise100BaseT(struct et131x_adapter *adapter,
894 u16 duplex);
895void ET1310_PhyAdvertise10BaseT(struct et131x_adapter *adapter,
896 u16 duplex);
897void ET1310_PhyLinkStatus(struct et131x_adapter *adapter,
898 u8 *ucLinkStatus,
899 u32 *uiAutoNeg,
900 u32 *uiLinkSpeed,
901 u32 *uiDuplexMode,
902 u32 *uiMdiMdix,
903 u32 *uiMasterSlave, u32 *uiPolarity);
904void ET1310_PhyAndOrReg(struct et131x_adapter *adapter,
905 u16 regnum, u16 andMask, u16 orMask);
906void ET1310_PhyAccessMiBit(struct et131x_adapter *adapter,
907 u16 action,
908 u16 regnum, u16 bitnum, u8 *value);
909
910#endif /* _ET1310_PHY_H_ */
diff --git a/drivers/staging/et131x/et1310_pm.c b/drivers/staging/et131x/et1310_pm.c
new file mode 100644
index 00000000000..9539bc628ca
--- /dev/null
+++ b/drivers/staging/et131x/et1310_pm.c
@@ -0,0 +1,207 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_pm.c - All power management related code (not completely implemented)
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/init.h>
63#include <linux/module.h>
64#include <linux/types.h>
65#include <linux/kernel.h>
66
67#include <linux/sched.h>
68#include <linux/ptrace.h>
69#include <linux/slab.h>
70#include <linux/ctype.h>
71#include <linux/string.h>
72#include <linux/timer.h>
73#include <linux/interrupt.h>
74#include <linux/in.h>
75#include <linux/delay.h>
76#include <asm/io.h>
77#include <asm/system.h>
78#include <asm/bitops.h>
79
80#include <linux/netdevice.h>
81#include <linux/etherdevice.h>
82#include <linux/skbuff.h>
83#include <linux/if_arp.h>
84#include <linux/ioport.h>
85
86#include "et1310_phy.h"
87#include "et1310_pm.h"
88#include "et1310_jagcore.h"
89#include "et1310_mac.h"
90#include "et1310_rx.h"
91
92#include "et131x_adapter.h"
93#include "et131x_initpci.h"
94
95/* Data for debugging facilities */
96#ifdef CONFIG_ET131X_DEBUG
97extern dbg_info_t *et131x_dbginfo;
98#endif /* CONFIG_ET131X_DEBUG */
99
100/**
101 * EnablePhyComa - called when network cable is unplugged
102 * @pAdapter: pointer to our adapter structure
103 *
104 * driver receive an phy status change interrupt while in D0 and check that
105 * phy_status is down.
106 *
107 * -- gate off JAGCore;
108 * -- set gigE PHY in Coma mode
109 * -- wake on phy_interrupt; Perform software reset JAGCore,
110 * re-initialize jagcore and gigE PHY
111 *
112 * Add D0-ASPM-PhyLinkDown Support:
113 * -- while in D0, when there is a phy_interrupt indicating phy link
114 * down status, call the MPSetPhyComa routine to enter this active
115 * state power saving mode
116 * -- while in D0-ASPM-PhyLinkDown mode, when there is a phy_interrupt
117 * indicating linkup status, call the MPDisablePhyComa routine to
118 * restore JAGCore and gigE PHY
119 */
120void EnablePhyComa(struct et131x_adapter *pAdapter)
121{
122 unsigned long lockflags;
123 PM_CSR_t GlobalPmCSR;
124 int32_t LoopCounter = 10;
125
126 DBG_ENTER(et131x_dbginfo);
127
128 GlobalPmCSR.value = readl(&pAdapter->CSRAddress->global.pm_csr.value);
129
130 /* Save the GbE PHY speed and duplex modes. Need to restore this
131 * when cable is plugged back in
132 */
133 pAdapter->PoMgmt.PowerDownSpeed = pAdapter->AiForceSpeed;
134 pAdapter->PoMgmt.PowerDownDuplex = pAdapter->AiForceDpx;
135
136 /* Stop sending packets. */
137 spin_lock_irqsave(&pAdapter->SendHWLock, lockflags);
138 MP_SET_FLAG(pAdapter, fMP_ADAPTER_LOWER_POWER);
139 spin_unlock_irqrestore(&pAdapter->SendHWLock, lockflags);
140
141 /* Wait for outstanding Receive packets */
142 while ((MP_GET_RCV_REF(pAdapter) != 0) && (LoopCounter-- > 0)) {
143 mdelay(2);
144 }
145
146 /* Gate off JAGCore 3 clock domains */
147 GlobalPmCSR.bits.pm_sysclk_gate = 0;
148 GlobalPmCSR.bits.pm_txclk_gate = 0;
149 GlobalPmCSR.bits.pm_rxclk_gate = 0;
150 writel(GlobalPmCSR.value, &pAdapter->CSRAddress->global.pm_csr.value);
151
152 /* Program gigE PHY in to Coma mode */
153 GlobalPmCSR.bits.pm_phy_sw_coma = 1;
154 writel(GlobalPmCSR.value, &pAdapter->CSRAddress->global.pm_csr.value);
155
156 DBG_LEAVE(et131x_dbginfo);
157}
158
159/**
160 * DisablePhyComa - Disable the Phy Coma Mode
161 * @pAdapter: pointer to our adapter structure
162 */
163void DisablePhyComa(struct et131x_adapter *pAdapter)
164{
165 PM_CSR_t GlobalPmCSR;
166
167 DBG_ENTER(et131x_dbginfo);
168
169 GlobalPmCSR.value = readl(&pAdapter->CSRAddress->global.pm_csr.value);
170
171 /* Disable phy_sw_coma register and re-enable JAGCore clocks */
172 GlobalPmCSR.bits.pm_sysclk_gate = 1;
173 GlobalPmCSR.bits.pm_txclk_gate = 1;
174 GlobalPmCSR.bits.pm_rxclk_gate = 1;
175 GlobalPmCSR.bits.pm_phy_sw_coma = 0;
176 writel(GlobalPmCSR.value, &pAdapter->CSRAddress->global.pm_csr.value);
177
178 /* Restore the GbE PHY speed and duplex modes;
179 * Reset JAGCore; re-configure and initialize JAGCore and gigE PHY
180 */
181 pAdapter->AiForceSpeed = pAdapter->PoMgmt.PowerDownSpeed;
182 pAdapter->AiForceDpx = pAdapter->PoMgmt.PowerDownDuplex;
183
184 /* Re-initialize the send structures */
185 et131x_init_send(pAdapter);
186
187 /* Reset the RFD list and re-start RU */
188 et131x_reset_recv(pAdapter);
189
190 /* Bring the device back to the state it was during init prior to
191 * autonegotiation being complete. This way, when we get the auto-neg
192 * complete interrupt, we can complete init by calling ConfigMacREGS2.
193 */
194 et131x_soft_reset(pAdapter);
195
196 /* setup et1310 as per the documentation ?? */
197 et131x_adapter_setup(pAdapter);
198
199 /* Allow Tx to restart */
200 MP_CLEAR_FLAG(pAdapter, fMP_ADAPTER_LOWER_POWER);
201
202 /* Need to re-enable Rx. */
203 et131x_rx_dma_enable(pAdapter);
204
205 DBG_LEAVE(et131x_dbginfo);
206}
207
diff --git a/drivers/staging/et131x/et1310_pm.h b/drivers/staging/et131x/et1310_pm.h
new file mode 100644
index 00000000000..6802338e29d
--- /dev/null
+++ b/drivers/staging/et131x/et1310_pm.h
@@ -0,0 +1,125 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_pm.h - Defines, structs, enums, prototypes, etc. pertaining to power
12 * management.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef _ET1310_PM_H_
60#define _ET1310_PM_H_
61
62#include "et1310_address_map.h"
63
64#define MAX_WOL_PACKET_SIZE 0x80
65#define MAX_WOL_MASK_SIZE ( MAX_WOL_PACKET_SIZE / 8 )
66#define NUM_WOL_PATTERNS 0x5
67#define CRC16_POLY 0x1021
68
69/* Definition of NDIS_DEVICE_POWER_STATE */
70typedef enum {
71 NdisDeviceStateUnspecified = 0,
72 NdisDeviceStateD0,
73 NdisDeviceStateD1,
74 NdisDeviceStateD2,
75 NdisDeviceStateD3
76} NDIS_DEVICE_POWER_STATE;
77
78typedef struct _MP_POWER_MGMT {
79 /* variable putting the phy into coma mode when boot up with no cable
80 * plugged in after 5 seconds
81 */
82 u8 TransPhyComaModeOnBoot;
83
84 /* Array holding the five CRC values that the device is currently
85 * using for WOL. This will be queried when a pattern is to be
86 * removed.
87 */
88 u32 localWolAndCrc0;
89 u16 WOLPatternList[NUM_WOL_PATTERNS];
90 u8 WOLMaskList[NUM_WOL_PATTERNS][MAX_WOL_MASK_SIZE];
91 u32 WOLMaskSize[NUM_WOL_PATTERNS];
92
93 /* IP address */
94 union {
95 u32 u32;
96 u8 u8[4];
97 } IPAddress;
98
99 /* Current Power state of the adapter. */
100 NDIS_DEVICE_POWER_STATE PowerState;
101 bool WOLState;
102 bool WOLEnabled;
103 bool Failed10Half;
104 bool bFailedStateTransition;
105
106 /* Next two used to save power information at power down. This
107 * information will be used during power up to set up parts of Power
108 * Management in JAGCore
109 */
110 u32 tx_en;
111 u32 rx_en;
112 u16 PowerDownSpeed;
113 u8 PowerDownDuplex;
114} MP_POWER_MGMT, *PMP_POWER_MGMT;
115
116/* Forward declaration of the private adapter structure
117 * ( IS THERE A WAY TO DO THIS WITH A TYPEDEF??? )
118 */
119struct et131x_adapter;
120
121u16 CalculateCCITCRC16(u8 *Pattern, u8 *Mask, u32 MaskSize);
122void EnablePhyComa(struct et131x_adapter *adapter);
123void DisablePhyComa(struct et131x_adapter *adapter);
124
125#endif /* _ET1310_PM_H_ */
diff --git a/drivers/staging/et131x/et1310_rx.c b/drivers/staging/et131x/et1310_rx.c
new file mode 100644
index 00000000000..ec98da5da5b
--- /dev/null
+++ b/drivers/staging/et131x/et1310_rx.c
@@ -0,0 +1,1391 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_rx.c - Routines used to perform data reception
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/pci.h>
63#include <linux/init.h>
64#include <linux/module.h>
65#include <linux/types.h>
66#include <linux/kernel.h>
67
68#include <linux/sched.h>
69#include <linux/ptrace.h>
70#include <linux/slab.h>
71#include <linux/ctype.h>
72#include <linux/string.h>
73#include <linux/timer.h>
74#include <linux/interrupt.h>
75#include <linux/in.h>
76#include <linux/delay.h>
77#include <asm/io.h>
78#include <asm/system.h>
79#include <asm/bitops.h>
80
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90
91#include "et131x_adapter.h"
92#include "et131x_initpci.h"
93
94#include "et1310_rx.h"
95
96/* Data for debugging facilities */
97#ifdef CONFIG_ET131X_DEBUG
98extern dbg_info_t *et131x_dbginfo;
99#endif /* CONFIG_ET131X_DEBUG */
100
101
102void nic_return_rfd(struct et131x_adapter *pAdapter, PMP_RFD pMpRfd);
103
104/**
105 * et131x_rx_dma_memory_alloc
106 * @adapter: pointer to our private adapter structure
107 *
108 * Returns 0 on success and errno on failure (as defined in errno.h)
109 *
110 * Allocates Free buffer ring 1 for sure, free buffer ring 0 if required,
111 * and the Packet Status Ring.
112 */
113int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter)
114{
115 uint32_t OuterLoop, InnerLoop;
116 uint32_t bufsize;
117 uint32_t pktStatRingSize, FBRChunkSize;
118 RX_RING_t *rx_ring;
119
120 DBG_ENTER(et131x_dbginfo);
121
122 /* Setup some convenience pointers */
123 rx_ring = (RX_RING_t *) & adapter->RxRing;
124
125 /* Alloc memory for the lookup table */
126#ifdef USE_FBR0
127 rx_ring->Fbr[0] = kmalloc(sizeof(FBRLOOKUPTABLE), GFP_KERNEL);
128#endif
129
130 rx_ring->Fbr[1] = kmalloc(sizeof(FBRLOOKUPTABLE), GFP_KERNEL);
131
132 /* The first thing we will do is configure the sizes of the buffer
133 * rings. These will change based on jumbo packet support. Larger
134 * jumbo packets increases the size of each entry in FBR0, and the
135 * number of entries in FBR0, while at the same time decreasing the
136 * number of entries in FBR1.
137 *
138 * FBR1 holds "large" frames, FBR0 holds "small" frames. If FBR1
139 * entries are huge in order to accomodate a "jumbo" frame, then it
140 * will have less entries. Conversely, FBR1 will now be relied upon
141 * to carry more "normal" frames, thus it's entry size also increases
142 * and the number of entries goes up too (since it now carries
143 * "small" + "regular" packets.
144 *
145 * In this scheme, we try to maintain 512 entries between the two
146 * rings. Also, FBR1 remains a constant size - when it's size doubles
147 * the number of entries halves. FBR0 increases in size, however.
148 */
149
150 if (adapter->RegistryJumboPacket < 2048) {
151#ifdef USE_FBR0
152 rx_ring->Fbr0BufferSize = 256;
153 rx_ring->Fbr0NumEntries = 512;
154#endif
155 rx_ring->Fbr1BufferSize = 2048;
156 rx_ring->Fbr1NumEntries = 512;
157 } else if (adapter->RegistryJumboPacket < 4096) {
158#ifdef USE_FBR0
159 rx_ring->Fbr0BufferSize = 512;
160 rx_ring->Fbr0NumEntries = 1024;
161#endif
162 rx_ring->Fbr1BufferSize = 4096;
163 rx_ring->Fbr1NumEntries = 512;
164 } else {
165#ifdef USE_FBR0
166 rx_ring->Fbr0BufferSize = 1024;
167 rx_ring->Fbr0NumEntries = 768;
168#endif
169 rx_ring->Fbr1BufferSize = 16384;
170 rx_ring->Fbr1NumEntries = 128;
171 }
172
173#ifdef USE_FBR0
174 adapter->RxRing.PsrNumEntries = adapter->RxRing.Fbr0NumEntries +
175 adapter->RxRing.Fbr1NumEntries;
176#else
177 adapter->RxRing.PsrNumEntries = adapter->RxRing.Fbr1NumEntries;
178#endif
179
180 /* Allocate an area of memory for Free Buffer Ring 1 */
181 bufsize = (sizeof(FBR_DESC_t) * rx_ring->Fbr1NumEntries) + 0xfff;
182 rx_ring->pFbr1RingVa = pci_alloc_consistent(adapter->pdev,
183 bufsize,
184 &rx_ring->pFbr1RingPa);
185 if (!rx_ring->pFbr1RingVa) {
186 DBG_ERROR(et131x_dbginfo,
187 "Cannot alloc memory for Free Buffer Ring 1\n");
188 DBG_LEAVE(et131x_dbginfo);
189 return -ENOMEM;
190 }
191
192 /* Save physical address
193 *
194 * NOTE: pci_alloc_consistent(), used above to alloc DMA regions,
195 * ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses
196 * are ever returned, make sure the high part is retrieved here
197 * before storing the adjusted address.
198 */
199 rx_ring->Fbr1Realpa = rx_ring->pFbr1RingPa;
200
201 /* Align Free Buffer Ring 1 on a 4K boundary */
202 et131x_align_allocated_memory(adapter,
203 &rx_ring->Fbr1Realpa,
204 &rx_ring->Fbr1offset, 0x0FFF);
205
206 rx_ring->pFbr1RingVa = (void *)((uint8_t *) rx_ring->pFbr1RingVa +
207 rx_ring->Fbr1offset);
208
209#ifdef USE_FBR0
210 /* Allocate an area of memory for Free Buffer Ring 0 */
211 bufsize = (sizeof(FBR_DESC_t) * rx_ring->Fbr0NumEntries) + 0xfff;
212 rx_ring->pFbr0RingVa = pci_alloc_consistent(adapter->pdev,
213 bufsize,
214 &rx_ring->pFbr0RingPa);
215 if (!rx_ring->pFbr0RingVa) {
216 DBG_ERROR(et131x_dbginfo,
217 "Cannot alloc memory for Free Buffer Ring 0\n");
218 DBG_LEAVE(et131x_dbginfo);
219 return -ENOMEM;
220 }
221
222 /* Save physical address
223 *
224 * NOTE: pci_alloc_consistent(), used above to alloc DMA regions,
225 * ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses
226 * are ever returned, make sure the high part is retrieved here before
227 * storing the adjusted address.
228 */
229 rx_ring->Fbr0Realpa = rx_ring->pFbr0RingPa;
230
231 /* Align Free Buffer Ring 0 on a 4K boundary */
232 et131x_align_allocated_memory(adapter,
233 &rx_ring->Fbr0Realpa,
234 &rx_ring->Fbr0offset, 0x0FFF);
235
236 rx_ring->pFbr0RingVa = (void *)((uint8_t *) rx_ring->pFbr0RingVa +
237 rx_ring->Fbr0offset);
238#endif
239
240 for (OuterLoop = 0; OuterLoop < (rx_ring->Fbr1NumEntries / FBR_CHUNKS);
241 OuterLoop++) {
242 uint64_t Fbr1Offset;
243 uint64_t Fbr1TempPa;
244 uint32_t Fbr1Align;
245
246 /* This code allocates an area of memory big enough for N
247 * free buffers + (buffer_size - 1) so that the buffers can
248 * be aligned on 4k boundaries. If each buffer were aligned
249 * to a buffer_size boundary, the effect would be to double
250 * the size of FBR0. By allocating N buffers at once, we
251 * reduce this overhead.
252 */
253 if (rx_ring->Fbr1BufferSize > 4096) {
254 Fbr1Align = 4096;
255 } else {
256 Fbr1Align = rx_ring->Fbr1BufferSize;
257 }
258
259 FBRChunkSize =
260 (FBR_CHUNKS * rx_ring->Fbr1BufferSize) + Fbr1Align - 1;
261 rx_ring->Fbr1MemVa[OuterLoop] =
262 pci_alloc_consistent(adapter->pdev, FBRChunkSize,
263 &rx_ring->Fbr1MemPa[OuterLoop]);
264
265 if (!rx_ring->Fbr1MemVa[OuterLoop]) {
266 DBG_ERROR(et131x_dbginfo, "Could not alloc memory\n");
267 DBG_LEAVE(et131x_dbginfo);
268 return -ENOMEM;
269 }
270
271 /* See NOTE in "Save Physical Address" comment above */
272 Fbr1TempPa = rx_ring->Fbr1MemPa[OuterLoop];
273
274 et131x_align_allocated_memory(adapter,
275 &Fbr1TempPa,
276 &Fbr1Offset, (Fbr1Align - 1));
277
278 for (InnerLoop = 0; InnerLoop < FBR_CHUNKS; InnerLoop++) {
279 uint32_t index = (OuterLoop * FBR_CHUNKS) + InnerLoop;
280
281 /* Save the Virtual address of this index for quick
282 * access later
283 */
284 rx_ring->Fbr[1]->Va[index] =
285 (uint8_t *) rx_ring->Fbr1MemVa[OuterLoop] +
286 (InnerLoop * rx_ring->Fbr1BufferSize) + Fbr1Offset;
287
288 /* now store the physical address in the descriptor
289 * so the device can access it
290 */
291 rx_ring->Fbr[1]->PAHigh[index] =
292 (uint32_t) (Fbr1TempPa >> 32);
293 rx_ring->Fbr[1]->PALow[index] = (uint32_t) Fbr1TempPa;
294
295 Fbr1TempPa += rx_ring->Fbr1BufferSize;
296
297 rx_ring->Fbr[1]->Buffer1[index] =
298 rx_ring->Fbr[1]->Va[index];
299 rx_ring->Fbr[1]->Buffer2[index] =
300 rx_ring->Fbr[1]->Va[index] - 4;
301 }
302 }
303
304#ifdef USE_FBR0
305 /* Same for FBR0 (if in use) */
306 for (OuterLoop = 0; OuterLoop < (rx_ring->Fbr0NumEntries / FBR_CHUNKS);
307 OuterLoop++) {
308 uint64_t Fbr0Offset;
309 uint64_t Fbr0TempPa;
310
311 FBRChunkSize = ((FBR_CHUNKS + 1) * rx_ring->Fbr0BufferSize) - 1;
312 rx_ring->Fbr0MemVa[OuterLoop] =
313 pci_alloc_consistent(adapter->pdev, FBRChunkSize,
314 &rx_ring->Fbr0MemPa[OuterLoop]);
315
316 if (!rx_ring->Fbr0MemVa[OuterLoop]) {
317 DBG_ERROR(et131x_dbginfo, "Could not alloc memory\n");
318 DBG_LEAVE(et131x_dbginfo);
319 return -ENOMEM;
320 }
321
322 /* See NOTE in "Save Physical Address" comment above */
323 Fbr0TempPa = rx_ring->Fbr0MemPa[OuterLoop];
324
325 et131x_align_allocated_memory(adapter,
326 &Fbr0TempPa,
327 &Fbr0Offset,
328 rx_ring->Fbr0BufferSize - 1);
329
330 for (InnerLoop = 0; InnerLoop < FBR_CHUNKS; InnerLoop++) {
331 uint32_t index = (OuterLoop * FBR_CHUNKS) + InnerLoop;
332
333 rx_ring->Fbr[0]->Va[index] =
334 (uint8_t *) rx_ring->Fbr0MemVa[OuterLoop] +
335 (InnerLoop * rx_ring->Fbr0BufferSize) + Fbr0Offset;
336
337 rx_ring->Fbr[0]->PAHigh[index] =
338 (uint32_t) (Fbr0TempPa >> 32);
339 rx_ring->Fbr[0]->PALow[index] = (uint32_t) Fbr0TempPa;
340
341 Fbr0TempPa += rx_ring->Fbr0BufferSize;
342
343 rx_ring->Fbr[0]->Buffer1[index] =
344 rx_ring->Fbr[0]->Va[index];
345 rx_ring->Fbr[0]->Buffer2[index] =
346 rx_ring->Fbr[0]->Va[index] - 4;
347 }
348 }
349#endif
350
351 /* Allocate an area of memory for FIFO of Packet Status ring entries */
352 pktStatRingSize =
353 sizeof(PKT_STAT_DESC_t) * adapter->RxRing.PsrNumEntries;
354
355 rx_ring->pPSRingVa = pci_alloc_consistent(adapter->pdev,
356 pktStatRingSize + 0x0fff,
357 &rx_ring->pPSRingPa);
358
359 if (!rx_ring->pPSRingVa) {
360 DBG_ERROR(et131x_dbginfo,
361 "Cannot alloc memory for Packet Status Ring\n");
362 DBG_LEAVE(et131x_dbginfo);
363 return -ENOMEM;
364 }
365
366 /* Save physical address
367 *
368 * NOTE : pci_alloc_consistent(), used above to alloc DMA regions,
369 * ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses
370 * are ever returned, make sure the high part is retrieved here before
371 * storing the adjusted address.
372 */
373 rx_ring->pPSRingRealPa = rx_ring->pPSRingPa;
374
375 /* Align Packet Status Ring on a 4K boundary */
376 et131x_align_allocated_memory(adapter,
377 &rx_ring->pPSRingRealPa,
378 &rx_ring->pPSRingOffset, 0x0FFF);
379
380 rx_ring->pPSRingVa = (void *)((uint8_t *) rx_ring->pPSRingVa +
381 rx_ring->pPSRingOffset);
382
383 /* Allocate an area of memory for writeback of status information */
384 rx_ring->pRxStatusVa = pci_alloc_consistent(adapter->pdev,
385 sizeof(RX_STATUS_BLOCK_t) +
386 0x7, &rx_ring->pRxStatusPa);
387 if (!rx_ring->pRxStatusVa) {
388 DBG_ERROR(et131x_dbginfo,
389 "Cannot alloc memory for Status Block\n");
390 DBG_LEAVE(et131x_dbginfo);
391 return -ENOMEM;
392 }
393
394 /* Save physical address */
395 rx_ring->RxStatusRealPA = rx_ring->pRxStatusPa;
396
397 /* Align write back on an 8 byte boundary */
398 et131x_align_allocated_memory(adapter,
399 &rx_ring->RxStatusRealPA,
400 &rx_ring->RxStatusOffset, 0x07);
401
402 rx_ring->pRxStatusVa = (void *)((uint8_t *) rx_ring->pRxStatusVa +
403 rx_ring->RxStatusOffset);
404 rx_ring->NumRfd = NIC_DEFAULT_NUM_RFD;
405
406 /* Recv
407 * pci_pool_create initializes a lookaside list. After successful
408 * creation, nonpaged fixed-size blocks can be allocated from and
409 * freed to the lookaside list.
410 * RFDs will be allocated from this pool.
411 */
412 rx_ring->RecvLookaside = kmem_cache_create(adapter->netdev->name,
413 sizeof(MP_RFD),
414 0,
415 SLAB_CACHE_DMA |
416 SLAB_HWCACHE_ALIGN,
417 NULL);
418
419 MP_SET_FLAG(adapter, fMP_ADAPTER_RECV_LOOKASIDE);
420
421 /* The RFDs are going to be put on lists later on, so initialize the
422 * lists now.
423 */
424 INIT_LIST_HEAD(&rx_ring->RecvList);
425 INIT_LIST_HEAD(&rx_ring->RecvPendingList);
426
427 DBG_LEAVE(et131x_dbginfo);
428 return 0;
429}
430
431/**
432 * et131x_rx_dma_memory_free - Free all memory allocated within this module.
433 * @adapter: pointer to our private adapter structure
434 */
435void et131x_rx_dma_memory_free(struct et131x_adapter *adapter)
436{
437 uint32_t index;
438 uint32_t bufsize;
439 uint32_t pktStatRingSize;
440 PMP_RFD pMpRfd;
441 RX_RING_t *rx_ring;
442
443 DBG_ENTER(et131x_dbginfo);
444
445 /* Setup some convenience pointers */
446 rx_ring = (RX_RING_t *) & adapter->RxRing;
447
448 /* Free RFDs and associated packet descriptors */
449 DBG_ASSERT(rx_ring->nReadyRecv == rx_ring->NumRfd);
450
451 while (!list_empty(&rx_ring->RecvList)) {
452 pMpRfd = (MP_RFD *) list_entry(rx_ring->RecvList.next,
453 MP_RFD, list_node);
454
455 list_del(&pMpRfd->list_node);
456 et131x_rfd_resources_free(adapter, pMpRfd);
457 }
458
459 while (!list_empty(&rx_ring->RecvPendingList)) {
460 pMpRfd = (MP_RFD *) list_entry(rx_ring->RecvPendingList.next,
461 MP_RFD, list_node);
462 list_del(&pMpRfd->list_node);
463 et131x_rfd_resources_free(adapter, pMpRfd);
464 }
465
466 /* Free Free Buffer Ring 1 */
467 if (rx_ring->pFbr1RingVa) {
468 /* First the packet memory */
469 for (index = 0; index <
470 (rx_ring->Fbr1NumEntries / FBR_CHUNKS); index++) {
471 if (rx_ring->Fbr1MemVa[index]) {
472 uint32_t Fbr1Align;
473
474 if (rx_ring->Fbr1BufferSize > 4096) {
475 Fbr1Align = 4096;
476 } else {
477 Fbr1Align = rx_ring->Fbr1BufferSize;
478 }
479
480 bufsize =
481 (rx_ring->Fbr1BufferSize * FBR_CHUNKS) +
482 Fbr1Align - 1;
483
484 pci_free_consistent(adapter->pdev,
485 bufsize,
486 rx_ring->Fbr1MemVa[index],
487 rx_ring->Fbr1MemPa[index]);
488
489 rx_ring->Fbr1MemVa[index] = NULL;
490 }
491 }
492
493 /* Now the FIFO itself */
494 rx_ring->pFbr1RingVa = (void *)((uint8_t *) rx_ring->pFbr1RingVa -
495 rx_ring->Fbr1offset);
496
497 bufsize =
498 (sizeof(FBR_DESC_t) * rx_ring->Fbr1NumEntries) + 0xfff;
499
500 pci_free_consistent(adapter->pdev,
501 bufsize,
502 rx_ring->pFbr1RingVa, rx_ring->pFbr1RingPa);
503
504 rx_ring->pFbr1RingVa = NULL;
505 }
506
507#ifdef USE_FBR0
508 /* Now the same for Free Buffer Ring 0 */
509 if (rx_ring->pFbr0RingVa) {
510 /* First the packet memory */
511 for (index = 0; index <
512 (rx_ring->Fbr0NumEntries / FBR_CHUNKS); index++) {
513 if (rx_ring->Fbr0MemVa[index]) {
514 bufsize =
515 (rx_ring->Fbr0BufferSize *
516 (FBR_CHUNKS + 1)) - 1;
517
518 pci_free_consistent(adapter->pdev,
519 bufsize,
520 rx_ring->Fbr0MemVa[index],
521 rx_ring->Fbr0MemPa[index]);
522
523 rx_ring->Fbr0MemVa[index] = NULL;
524 }
525 }
526
527 /* Now the FIFO itself */
528 rx_ring->pFbr0RingVa = (void *)((uint8_t *) rx_ring->pFbr0RingVa -
529 rx_ring->Fbr0offset);
530
531 bufsize =
532 (sizeof(FBR_DESC_t) * rx_ring->Fbr0NumEntries) + 0xfff;
533
534 pci_free_consistent(adapter->pdev,
535 bufsize,
536 rx_ring->pFbr0RingVa, rx_ring->pFbr0RingPa);
537
538 rx_ring->pFbr0RingVa = NULL;
539 }
540#endif
541
542 /* Free Packet Status Ring */
543 if (rx_ring->pPSRingVa) {
544 rx_ring->pPSRingVa = (void *)((uint8_t *) rx_ring->pPSRingVa -
545 rx_ring->pPSRingOffset);
546
547 pktStatRingSize =
548 sizeof(PKT_STAT_DESC_t) * adapter->RxRing.PsrNumEntries;
549
550 pci_free_consistent(adapter->pdev,
551 pktStatRingSize + 0x0fff,
552 rx_ring->pPSRingVa, rx_ring->pPSRingPa);
553
554 rx_ring->pPSRingVa = NULL;
555 }
556
557 /* Free area of memory for the writeback of status information */
558 if (rx_ring->pRxStatusVa) {
559 rx_ring->pRxStatusVa = (void *)((uint8_t *) rx_ring->pRxStatusVa -
560 rx_ring->RxStatusOffset);
561
562 pci_free_consistent(adapter->pdev,
563 sizeof(RX_STATUS_BLOCK_t) + 0x7,
564 rx_ring->pRxStatusVa, rx_ring->pRxStatusPa);
565
566 rx_ring->pRxStatusVa = NULL;
567 }
568
569 /* Free receive buffer pool */
570
571 /* Free receive packet pool */
572
573 /* Destroy the lookaside (RFD) pool */
574 if (MP_TEST_FLAG(adapter, fMP_ADAPTER_RECV_LOOKASIDE)) {
575 kmem_cache_destroy(rx_ring->RecvLookaside);
576 MP_CLEAR_FLAG(adapter, fMP_ADAPTER_RECV_LOOKASIDE);
577 }
578
579 /* Free the FBR Lookup Table */
580#ifdef USE_FBR0
581 kfree(rx_ring->Fbr[0]);
582#endif
583
584 kfree(rx_ring->Fbr[1]);
585
586 /* Reset Counters */
587 rx_ring->nReadyRecv = 0;
588
589 DBG_LEAVE(et131x_dbginfo);
590}
591
592/**
593 * et131x_init_recv - Initialize receive data structures.
594 * @adapter: pointer to our private adapter structure
595 *
596 * Returns 0 on success and errno on failure (as defined in errno.h)
597 */
598int et131x_init_recv(struct et131x_adapter *adapter)
599{
600 int status = -ENOMEM;
601 PMP_RFD pMpRfd = NULL;
602 uint32_t RfdCount;
603 uint32_t TotalNumRfd = 0;
604 RX_RING_t *rx_ring = NULL;
605
606 DBG_ENTER(et131x_dbginfo);
607
608 /* Setup some convenience pointers */
609 rx_ring = (RX_RING_t *) & adapter->RxRing;
610
611 /* Setup each RFD */
612 for (RfdCount = 0; RfdCount < rx_ring->NumRfd; RfdCount++) {
613 pMpRfd = (MP_RFD *) kmem_cache_alloc(rx_ring->RecvLookaside,
614 GFP_ATOMIC | GFP_DMA);
615
616 if (!pMpRfd) {
617 DBG_ERROR(et131x_dbginfo,
618 "Couldn't alloc RFD out of kmem_cache\n");
619 status = -ENOMEM;
620 continue;
621 }
622
623 status = et131x_rfd_resources_alloc(adapter, pMpRfd);
624 if (status != 0) {
625 DBG_ERROR(et131x_dbginfo,
626 "Couldn't alloc packet for RFD\n");
627 kmem_cache_free(rx_ring->RecvLookaside, pMpRfd);
628 continue;
629 }
630
631 /* Add this RFD to the RecvList */
632 list_add_tail(&pMpRfd->list_node, &rx_ring->RecvList);
633
634 /* Increment both the available RFD's, and the total RFD's. */
635 rx_ring->nReadyRecv++;
636 TotalNumRfd++;
637 }
638
639 if (TotalNumRfd > NIC_MIN_NUM_RFD) {
640 status = 0;
641 }
642
643 rx_ring->NumRfd = TotalNumRfd;
644
645 if (status != 0) {
646 kmem_cache_free(rx_ring->RecvLookaside, pMpRfd);
647 DBG_ERROR(et131x_dbginfo,
648 "Allocation problems in et131x_init_recv\n");
649 }
650
651 DBG_LEAVE(et131x_dbginfo);
652 return status;
653}
654
655/**
656 * et131x_rfd_resources_alloc
657 * @adapter: pointer to our private adapter structure
658 * @pMpRfd: pointer to a RFD
659 *
660 * Returns 0 on success and errno on failure (as defined in errno.h)
661 */
662int et131x_rfd_resources_alloc(struct et131x_adapter *adapter, MP_RFD *pMpRfd)
663{
664 pMpRfd->Packet = NULL;
665
666 return 0;
667}
668
669/**
670 * et131x_rfd_resources_free - Free the packet allocated for the given RFD
671 * @adapter: pointer to our private adapter structure
672 * @pMpRfd: pointer to a RFD
673 */
674void et131x_rfd_resources_free(struct et131x_adapter *adapter, MP_RFD *pMpRfd)
675{
676 pMpRfd->Packet = NULL;
677 kmem_cache_free(adapter->RxRing.RecvLookaside, pMpRfd);
678}
679
680/**
681 * ConfigRxDmaRegs - Start of Rx_DMA init sequence
682 * @pAdapter: pointer to our adapter structure
683 */
684void ConfigRxDmaRegs(struct et131x_adapter *pAdapter)
685{
686 struct _RXDMA_t __iomem *pRxDma = &pAdapter->CSRAddress->rxdma;
687 struct _rx_ring_t *pRxLocal = &pAdapter->RxRing;
688 PFBR_DESC_t pFbrEntry;
689 uint32_t iEntry;
690 RXDMA_PSR_NUM_DES_t psr_num_des;
691 unsigned long lockflags;
692
693 DBG_ENTER(et131x_dbginfo);
694
695 /* Halt RXDMA to perform the reconfigure. */
696 et131x_rx_dma_disable(pAdapter);
697
698 /* Load the completion writeback physical address
699 *
700 * NOTE : pci_alloc_consistent(), used above to alloc DMA regions,
701 * ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses
702 * are ever returned, make sure the high part is retrieved here
703 * before storing the adjusted address.
704 */
705 writel((uint32_t) (pRxLocal->RxStatusRealPA >> 32),
706 &pRxDma->dma_wb_base_hi);
707 writel((uint32_t) pRxLocal->RxStatusRealPA, &pRxDma->dma_wb_base_lo);
708
709 memset(pRxLocal->pRxStatusVa, 0, sizeof(RX_STATUS_BLOCK_t));
710
711 /* Set the address and parameters of the packet status ring into the
712 * 1310's registers
713 */
714 writel((uint32_t) (pRxLocal->pPSRingRealPa >> 32),
715 &pRxDma->psr_base_hi);
716 writel((uint32_t) pRxLocal->pPSRingRealPa, &pRxDma->psr_base_lo);
717 writel(pRxLocal->PsrNumEntries - 1, &pRxDma->psr_num_des.value);
718 writel(0, &pRxDma->psr_full_offset.value);
719
720 psr_num_des.value = readl(&pRxDma->psr_num_des.value);
721 writel((psr_num_des.bits.psr_ndes * LO_MARK_PERCENT_FOR_PSR) / 100,
722 &pRxDma->psr_min_des.value);
723
724 spin_lock_irqsave(&pAdapter->RcvLock, lockflags);
725
726 /* These local variables track the PSR in the adapter structure */
727 pRxLocal->local_psr_full.bits.psr_full = 0;
728 pRxLocal->local_psr_full.bits.psr_full_wrap = 0;
729
730 /* Now's the best time to initialize FBR1 contents */
731 pFbrEntry = (PFBR_DESC_t) pRxLocal->pFbr1RingVa;
732 for (iEntry = 0; iEntry < pRxLocal->Fbr1NumEntries; iEntry++) {
733 pFbrEntry->addr_hi = pRxLocal->Fbr[1]->PAHigh[iEntry];
734 pFbrEntry->addr_lo = pRxLocal->Fbr[1]->PALow[iEntry];
735 pFbrEntry->word2.bits.bi = iEntry;
736 pFbrEntry++;
737 }
738
739 /* Set the address and parameters of Free buffer ring 1 (and 0 if
740 * required) into the 1310's registers
741 */
742 writel((uint32_t) (pRxLocal->Fbr1Realpa >> 32), &pRxDma->fbr1_base_hi);
743 writel((uint32_t) pRxLocal->Fbr1Realpa, &pRxDma->fbr1_base_lo);
744 writel(pRxLocal->Fbr1NumEntries - 1, &pRxDma->fbr1_num_des.value);
745
746 {
747 DMA10W_t fbr1_full = { 0 };
748
749 fbr1_full.bits.val = 0;
750 fbr1_full.bits.wrap = 1;
751 writel(fbr1_full.value, &pRxDma->fbr1_full_offset.value);
752 }
753
754 /* This variable tracks the free buffer ring 1 full position, so it
755 * has to match the above.
756 */
757 pRxLocal->local_Fbr1_full.bits.val = 0;
758 pRxLocal->local_Fbr1_full.bits.wrap = 1;
759 writel(((pRxLocal->Fbr1NumEntries * LO_MARK_PERCENT_FOR_RX) / 100) - 1,
760 &pRxDma->fbr1_min_des.value);
761
762#ifdef USE_FBR0
763 /* Now's the best time to initialize FBR0 contents */
764 pFbrEntry = (PFBR_DESC_t) pRxLocal->pFbr0RingVa;
765 for (iEntry = 0; iEntry < pRxLocal->Fbr0NumEntries; iEntry++) {
766 pFbrEntry->addr_hi = pRxLocal->Fbr[0]->PAHigh[iEntry];
767 pFbrEntry->addr_lo = pRxLocal->Fbr[0]->PALow[iEntry];
768 pFbrEntry->word2.bits.bi = iEntry;
769 pFbrEntry++;
770 }
771
772 writel((uint32_t) (pRxLocal->Fbr0Realpa >> 32), &pRxDma->fbr0_base_hi);
773 writel((uint32_t) pRxLocal->Fbr0Realpa, &pRxDma->fbr0_base_lo);
774 writel(pRxLocal->Fbr0NumEntries - 1, &pRxDma->fbr0_num_des.value);
775
776 {
777 DMA10W_t fbr0_full = { 0 };
778
779 fbr0_full.bits.val = 0;
780 fbr0_full.bits.wrap = 1;
781 writel(fbr0_full.value, &pRxDma->fbr0_full_offset.value);
782 }
783
784 /* This variable tracks the free buffer ring 0 full position, so it
785 * has to match the above.
786 */
787 pRxLocal->local_Fbr0_full.bits.val = 0;
788 pRxLocal->local_Fbr0_full.bits.wrap = 1;
789 writel(((pRxLocal->Fbr0NumEntries * LO_MARK_PERCENT_FOR_RX) / 100) - 1,
790 &pRxDma->fbr0_min_des.value);
791#endif
792
793 /* Program the number of packets we will receive before generating an
794 * interrupt.
795 * For version B silicon, this value gets updated once autoneg is
796 *complete.
797 */
798 writel(pAdapter->RegistryRxNumBuffers, &pRxDma->num_pkt_done.value);
799
800 /* The "time_done" is not working correctly to coalesce interrupts
801 * after a given time period, but rather is giving us an interrupt
802 * regardless of whether we have received packets.
803 * This value gets updated once autoneg is complete.
804 */
805 writel(pAdapter->RegistryRxTimeInterval, &pRxDma->max_pkt_time.value);
806
807 spin_unlock_irqrestore(&pAdapter->RcvLock, lockflags);
808
809 DBG_LEAVE(et131x_dbginfo);
810}
811
812/**
813 * SetRxDmaTimer - Set the heartbeat timer according to line rate.
814 * @pAdapter: pointer to our adapter structure
815 */
816void SetRxDmaTimer(struct et131x_adapter *pAdapter)
817{
818 /* For version B silicon, we do not use the RxDMA timer for 10 and 100
819 * Mbits/s line rates. We do not enable and RxDMA interrupt coalescing.
820 */
821 if ((pAdapter->uiLinkSpeed == TRUEPHY_SPEED_100MBPS) ||
822 (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_10MBPS)) {
823 writel(0, &pAdapter->CSRAddress->rxdma.max_pkt_time.value);
824 writel(1, &pAdapter->CSRAddress->rxdma.num_pkt_done.value);
825 }
826}
827
828/**
829 * et131x_rx_dma_disable - Stop of Rx_DMA on the ET1310
830 * @pAdapter: pointer to our adapter structure
831 */
832void et131x_rx_dma_disable(struct et131x_adapter *pAdapter)
833{
834 RXDMA_CSR_t csr;
835
836 DBG_ENTER(et131x_dbginfo);
837
838 /* Setup the receive dma configuration register */
839 writel(0x00002001, &pAdapter->CSRAddress->rxdma.csr.value);
840 csr.value = readl(&pAdapter->CSRAddress->rxdma.csr.value);
841 if (csr.bits.halt_status != 1) {
842 udelay(5);
843 csr.value = readl(&pAdapter->CSRAddress->rxdma.csr.value);
844 if (csr.bits.halt_status != 1) {
845 DBG_ERROR(et131x_dbginfo,
846 "RX Dma failed to enter halt state. CSR 0x%08x\n",
847 csr.value);
848 }
849 }
850
851 DBG_LEAVE(et131x_dbginfo);
852}
853
854/**
855 * et131x_rx_dma_enable - re-start of Rx_DMA on the ET1310.
856 * @pAdapter: pointer to our adapter structure
857 */
858void et131x_rx_dma_enable(struct et131x_adapter *pAdapter)
859{
860 DBG_RX_ENTER(et131x_dbginfo);
861
862 if (pAdapter->RegistryPhyLoopbk) {
863 /* RxDMA is disabled for loopback operation. */
864 writel(0x1, &pAdapter->CSRAddress->rxdma.csr.value);
865 } else {
866 /* Setup the receive dma configuration register for normal operation */
867 RXDMA_CSR_t csr = { 0 };
868
869 csr.bits.fbr1_enable = 1;
870 if (pAdapter->RxRing.Fbr1BufferSize == 4096) {
871 csr.bits.fbr1_size = 1;
872 } else if (pAdapter->RxRing.Fbr1BufferSize == 8192) {
873 csr.bits.fbr1_size = 2;
874 } else if (pAdapter->RxRing.Fbr1BufferSize == 16384) {
875 csr.bits.fbr1_size = 3;
876 }
877#ifdef USE_FBR0
878 csr.bits.fbr0_enable = 1;
879 if (pAdapter->RxRing.Fbr0BufferSize == 256) {
880 csr.bits.fbr0_size = 1;
881 } else if (pAdapter->RxRing.Fbr0BufferSize == 512) {
882 csr.bits.fbr0_size = 2;
883 } else if (pAdapter->RxRing.Fbr0BufferSize == 1024) {
884 csr.bits.fbr0_size = 3;
885 }
886#endif
887 writel(csr.value, &pAdapter->CSRAddress->rxdma.csr.value);
888
889 csr.value = readl(&pAdapter->CSRAddress->rxdma.csr.value);
890 if (csr.bits.halt_status != 0) {
891 udelay(5);
892 csr.value = readl(&pAdapter->CSRAddress->rxdma.csr.value);
893 if (csr.bits.halt_status != 0) {
894 DBG_ERROR(et131x_dbginfo,
895 "RX Dma failed to exit halt state. CSR 0x%08x\n",
896 csr.value);
897 }
898 }
899 }
900
901 DBG_RX_LEAVE(et131x_dbginfo);
902}
903
904/**
905 * nic_rx_pkts - Checks the hardware for available packets
906 * @pAdapter: pointer to our adapter
907 *
908 * Returns pMpRfd, a pointer to our MPRFD.
909 *
910 * Checks the hardware for available packets, using completion ring
911 * If packets are available, it gets an RFD from the RecvList, attaches
912 * the packet to it, puts the RFD in the RecvPendList, and also returns
913 * the pointer to the RFD.
914 */
915PMP_RFD nic_rx_pkts(struct et131x_adapter *pAdapter)
916{
917 struct _rx_ring_t *pRxLocal = &pAdapter->RxRing;
918 PRX_STATUS_BLOCK_t pRxStatusBlock;
919 PPKT_STAT_DESC_t pPSREntry;
920 PMP_RFD pMpRfd;
921 uint32_t nIndex;
922 uint8_t *pBufVa;
923 unsigned long lockflags;
924 struct list_head *element;
925 uint8_t ringIndex;
926 uint16_t bufferIndex;
927 uint32_t localLen;
928 PKT_STAT_DESC_WORD0_t Word0;
929
930
931 DBG_RX_ENTER(et131x_dbginfo);
932
933 /* RX Status block is written by the DMA engine prior to every
934 * interrupt. It contains the next to be used entry in the Packet
935 * Status Ring, and also the two Free Buffer rings.
936 */
937 pRxStatusBlock = (PRX_STATUS_BLOCK_t) pRxLocal->pRxStatusVa;
938
939 if (pRxStatusBlock->Word1.bits.PSRoffset ==
940 pRxLocal->local_psr_full.bits.psr_full &&
941 pRxStatusBlock->Word1.bits.PSRwrap ==
942 pRxLocal->local_psr_full.bits.psr_full_wrap) {
943 /* Looks like this ring is not updated yet */
944 DBG_RX(et131x_dbginfo, "(0)\n");
945 DBG_RX_LEAVE(et131x_dbginfo);
946 return NULL;
947 }
948
949 /* The packet status ring indicates that data is available. */
950 pPSREntry = (PPKT_STAT_DESC_t) (pRxLocal->pPSRingVa) +
951 pRxLocal->local_psr_full.bits.psr_full;
952
953 /* Grab any information that is required once the PSR is
954 * advanced, since we can no longer rely on the memory being
955 * accurate
956 */
957 localLen = pPSREntry->word1.bits.length;
958 ringIndex = (uint8_t) pPSREntry->word1.bits.ri;
959 bufferIndex = (uint16_t) pPSREntry->word1.bits.bi;
960 Word0 = pPSREntry->word0;
961
962 DBG_RX(et131x_dbginfo, "RX PACKET STATUS\n");
963 DBG_RX(et131x_dbginfo, "\tlength : %d\n", localLen);
964 DBG_RX(et131x_dbginfo, "\tringIndex : %d\n", ringIndex);
965 DBG_RX(et131x_dbginfo, "\tbufferIndex : %d\n", bufferIndex);
966 DBG_RX(et131x_dbginfo, "\tword0 : 0x%08x\n", Word0.value);
967
968#if 0
969 /* Check the Status Word that the MAC has appended to the PSR
970 * entry in case the MAC has detected errors.
971 */
972 if (Word0.value & ALCATEL_BAD_STATUS) {
973 DBG_ERROR(et131x_dbginfo,
974 "NICRxPkts >> Alcatel Status Word error."
975 "Value 0x%08x\n", pPSREntry->word0.value);
976 }
977#endif
978
979 /* Indicate that we have used this PSR entry. */
980 if (++pRxLocal->local_psr_full.bits.psr_full >
981 pRxLocal->PsrNumEntries - 1) {
982 pRxLocal->local_psr_full.bits.psr_full = 0;
983 pRxLocal->local_psr_full.bits.psr_full_wrap ^= 1;
984 }
985
986 writel(pRxLocal->local_psr_full.value,
987 &pAdapter->CSRAddress->rxdma.psr_full_offset.value);
988
989#ifndef USE_FBR0
990 if (ringIndex != 1) {
991 DBG_ERROR(et131x_dbginfo,
992 "NICRxPkts PSR Entry %d indicates "
993 "Buffer Ring 0 in use\n",
994 pRxLocal->local_psr_full.bits.psr_full);
995 DBG_RX_LEAVE(et131x_dbginfo);
996 return NULL;
997 }
998#endif
999
1000#ifdef USE_FBR0
1001 if (ringIndex > 1 ||
1002 (ringIndex == 0 &&
1003 bufferIndex > pRxLocal->Fbr0NumEntries - 1) ||
1004 (ringIndex == 1 &&
1005 bufferIndex > pRxLocal->Fbr1NumEntries - 1))
1006#else
1007 if (ringIndex != 1 ||
1008 bufferIndex > pRxLocal->Fbr1NumEntries - 1)
1009#endif
1010 {
1011 /* Illegal buffer or ring index cannot be used by S/W*/
1012 DBG_ERROR(et131x_dbginfo,
1013 "NICRxPkts PSR Entry %d indicates "
1014 "length of %d and/or bad bi(%d)\n",
1015 pRxLocal->local_psr_full.bits.psr_full,
1016 localLen, bufferIndex);
1017 DBG_RX_LEAVE(et131x_dbginfo);
1018 return NULL;
1019 }
1020
1021 /* Get and fill the RFD. */
1022 spin_lock_irqsave(&pAdapter->RcvLock, lockflags);
1023
1024 pMpRfd = NULL;
1025 element = pRxLocal->RecvList.next;
1026 pMpRfd = (PMP_RFD) list_entry(element, MP_RFD, list_node);
1027
1028 if (pMpRfd == NULL) {
1029 DBG_RX(et131x_dbginfo,
1030 "NULL RFD returned from RecvList via list_entry()\n");
1031 DBG_RX_LEAVE(et131x_dbginfo);
1032 spin_unlock_irqrestore(&pAdapter->RcvLock, lockflags);
1033 return NULL;
1034 }
1035
1036 list_del(&pMpRfd->list_node);
1037 pRxLocal->nReadyRecv--;
1038
1039 spin_unlock_irqrestore(&pAdapter->RcvLock, lockflags);
1040
1041 pMpRfd->iBufferIndex = bufferIndex;
1042 pMpRfd->iRingIndex = ringIndex;
1043
1044 /* In V1 silicon, there is a bug which screws up filtering of
1045 * runt packets. Therefore runt packet filtering is disabled
1046 * in the MAC and the packets are dropped here. They are
1047 * also counted here.
1048 */
1049 if (localLen < (NIC_MIN_PACKET_SIZE + 4)) {
1050 pAdapter->Stats.other_errors++;
1051 localLen = 0;
1052 }
1053
1054 if (localLen) {
1055 if (pAdapter->ReplicaPhyLoopbk == 1) {
1056 pBufVa = pRxLocal->Fbr[ringIndex]->Va[bufferIndex];
1057
1058 if (memcmp(&pBufVa[6], &pAdapter->CurrentAddress[0],
1059 ETH_ALEN) == 0) {
1060 if (memcmp(&pBufVa[42], "Replica packet",
1061 ETH_HLEN)) {
1062 pAdapter->ReplicaPhyLoopbkPF = 1;
1063 }
1064 }
1065 DBG_WARNING(et131x_dbginfo,
1066 "pBufVa:\t%02x:%02x:%02x:%02x:%02x:%02x\n",
1067 pBufVa[6], pBufVa[7], pBufVa[8],
1068 pBufVa[9], pBufVa[10], pBufVa[11]);
1069
1070 DBG_WARNING(et131x_dbginfo,
1071 "CurrentAddr:\t%02x:%02x:%02x:%02x:%02x:%02x\n",
1072 pAdapter->CurrentAddress[0],
1073 pAdapter->CurrentAddress[1],
1074 pAdapter->CurrentAddress[2],
1075 pAdapter->CurrentAddress[3],
1076 pAdapter->CurrentAddress[4],
1077 pAdapter->CurrentAddress[5]);
1078 }
1079
1080 /* Determine if this is a multicast packet coming in */
1081 if ((Word0.value & ALCATEL_MULTICAST_PKT) &&
1082 !(Word0.value & ALCATEL_BROADCAST_PKT)) {
1083 /* Promiscuous mode and Multicast mode are
1084 * not mutually exclusive as was first
1085 * thought. I guess Promiscuous is just
1086 * considered a super-set of the other
1087 * filters. Generally filter is 0x2b when in
1088 * promiscuous mode.
1089 */
1090 if ((pAdapter->PacketFilter & ET131X_PACKET_TYPE_MULTICAST)
1091 && !(pAdapter->PacketFilter & ET131X_PACKET_TYPE_PROMISCUOUS)
1092 && !(pAdapter->PacketFilter & ET131X_PACKET_TYPE_ALL_MULTICAST)) {
1093 pBufVa = pRxLocal->Fbr[ringIndex]->
1094 Va[bufferIndex];
1095
1096 /* Loop through our list to see if the
1097 * destination address of this packet
1098 * matches one in our list.
1099 */
1100 for (nIndex = 0;
1101 nIndex < pAdapter->MCAddressCount;
1102 nIndex++) {
1103 if (pBufVa[0] ==
1104 pAdapter->MCList[nIndex][0]
1105 && pBufVa[1] ==
1106 pAdapter->MCList[nIndex][1]
1107 && pBufVa[2] ==
1108 pAdapter->MCList[nIndex][2]
1109 && pBufVa[3] ==
1110 pAdapter->MCList[nIndex][3]
1111 && pBufVa[4] ==
1112 pAdapter->MCList[nIndex][4]
1113 && pBufVa[5] ==
1114 pAdapter->MCList[nIndex][5]) {
1115 break;
1116 }
1117 }
1118
1119 /* If our index is equal to the number
1120 * of Multicast address we have, then
1121 * this means we did not find this
1122 * packet's matching address in our
1123 * list. Set the PacketSize to zero,
1124 * so we free our RFD when we return
1125 * from this function.
1126 */
1127 if (nIndex == pAdapter->MCAddressCount) {
1128 localLen = 0;
1129 }
1130 }
1131
1132 if (localLen > 0) {
1133 pAdapter->Stats.multircv++;
1134 }
1135 } else if (Word0.value & ALCATEL_BROADCAST_PKT) {
1136 pAdapter->Stats.brdcstrcv++;
1137 } else {
1138 /* Not sure what this counter measures in
1139 * promiscuous mode. Perhaps we should check
1140 * the MAC address to see if it is directed
1141 * to us in promiscuous mode.
1142 */
1143 pAdapter->Stats.unircv++;
1144 }
1145 }
1146
1147 if (localLen > 0) {
1148 struct sk_buff *skb = NULL;
1149
1150 //pMpRfd->PacketSize = localLen - 4;
1151 pMpRfd->PacketSize = localLen;
1152
1153 skb = dev_alloc_skb(pMpRfd->PacketSize + 2);
1154 if (!skb) {
1155 DBG_ERROR(et131x_dbginfo,
1156 "Couldn't alloc an SKB for Rx\n");
1157 DBG_RX_LEAVE(et131x_dbginfo);
1158 return NULL;
1159 }
1160
1161 pAdapter->net_stats.rx_bytes += pMpRfd->PacketSize;
1162
1163 memcpy(skb_put(skb, pMpRfd->PacketSize),
1164 pRxLocal->Fbr[ringIndex]->Va[bufferIndex],
1165 pMpRfd->PacketSize);
1166
1167 skb->dev = pAdapter->netdev;
1168 skb->protocol = eth_type_trans(skb, pAdapter->netdev);
1169 skb->ip_summed = CHECKSUM_NONE;
1170
1171 netif_rx(skb);
1172 } else {
1173 pMpRfd->PacketSize = 0;
1174 }
1175
1176 nic_return_rfd(pAdapter, pMpRfd);
1177
1178 DBG_RX(et131x_dbginfo, "(1)\n");
1179 DBG_RX_LEAVE(et131x_dbginfo);
1180 return pMpRfd;
1181}
1182
1183/**
1184 * et131x_reset_recv - Reset the receive list
1185 * @pAdapter: pointer to our adapter
1186 *
1187 * Assumption, Rcv spinlock has been acquired.
1188 */
1189void et131x_reset_recv(struct et131x_adapter *pAdapter)
1190{
1191 PMP_RFD pMpRfd;
1192 struct list_head *element;
1193
1194 DBG_ENTER(et131x_dbginfo);
1195
1196 DBG_ASSERT(!list_empty(&pAdapter->RxRing.RecvList));
1197
1198 /* Take all the RFD's from the pending list, and stick them on the
1199 * RecvList.
1200 */
1201 while (!list_empty(&pAdapter->RxRing.RecvPendingList)) {
1202 element = pAdapter->RxRing.RecvPendingList.next;
1203
1204 pMpRfd = (PMP_RFD) list_entry(element, MP_RFD, list_node);
1205
1206 list_del(&pMpRfd->list_node);
1207 list_add_tail(&pMpRfd->list_node, &pAdapter->RxRing.RecvList);
1208 }
1209
1210 DBG_LEAVE(et131x_dbginfo);
1211}
1212
1213/**
1214 * et131x_handle_recv_interrupt - Interrupt handler for receive processing
1215 * @pAdapter: pointer to our adapter
1216 *
1217 * Assumption, Rcv spinlock has been acquired.
1218 */
1219void et131x_handle_recv_interrupt(struct et131x_adapter *pAdapter)
1220{
1221 PMP_RFD pMpRfd = NULL;
1222 struct sk_buff *PacketArray[NUM_PACKETS_HANDLED];
1223 PMP_RFD RFDFreeArray[NUM_PACKETS_HANDLED];
1224 uint32_t PacketArrayCount = 0;
1225 uint32_t PacketsToHandle;
1226 uint32_t PacketFreeCount = 0;
1227 bool TempUnfinishedRec = false;
1228
1229 DBG_RX_ENTER(et131x_dbginfo);
1230
1231 PacketsToHandle = NUM_PACKETS_HANDLED;
1232
1233 /* Process up to available RFD's */
1234 while (PacketArrayCount < PacketsToHandle) {
1235 if (list_empty(&pAdapter->RxRing.RecvList)) {
1236 DBG_ASSERT(pAdapter->RxRing.nReadyRecv == 0);
1237 DBG_ERROR(et131x_dbginfo, "NO RFD's !!!!!!!!!!!!!\n");
1238 TempUnfinishedRec = true;
1239 break;
1240 }
1241
1242 pMpRfd = nic_rx_pkts(pAdapter);
1243
1244 if (pMpRfd == NULL) {
1245 break;
1246 }
1247
1248 /* Do not receive any packets until a filter has been set.
1249 * Do not receive any packets until we are at D0.
1250 * Do not receive any packets until we have link.
1251 * If length is zero, return the RFD in order to advance the
1252 * Free buffer ring.
1253 */
1254 if ((!pAdapter->PacketFilter) ||
1255 (pAdapter->PoMgmt.PowerState != NdisDeviceStateD0) ||
1256 (!MP_LINK_DETECTED(pAdapter)) ||
1257 (pMpRfd->PacketSize == 0)) {
1258 continue;
1259 }
1260
1261 /* Increment the number of packets we received */
1262 pAdapter->Stats.ipackets++;
1263
1264 /* Set the status on the packet, either resources or success */
1265 if (pAdapter->RxRing.nReadyRecv >= RFD_LOW_WATER_MARK) {
1266 /* Put this RFD on the pending list
1267 *
1268 * NOTE: nic_rx_pkts() above is already returning the
1269 * RFD to the RecvList, so don't additionally do that
1270 * here.
1271 * Besides, we don't really need (at this point) the
1272 * pending list anyway.
1273 */
1274 //spin_lock_irqsave( &pAdapter->RcvPendLock, lockflags );
1275 //list_add_tail( &pMpRfd->list_node, &pAdapter->RxRing.RecvPendingList );
1276 //spin_unlock_irqrestore( &pAdapter->RcvPendLock, lockflags );
1277
1278 /* Update the number of outstanding Recvs */
1279 //MP_INC_RCV_REF( pAdapter );
1280 } else {
1281 RFDFreeArray[PacketFreeCount] = pMpRfd;
1282 PacketFreeCount++;
1283
1284 DBG_WARNING(et131x_dbginfo,
1285 "RFD's are running out !!!!!!!!!!!!!\n");
1286 }
1287
1288 PacketArray[PacketArrayCount] = pMpRfd->Packet;
1289 PacketArrayCount++;
1290 }
1291
1292 if ((PacketArrayCount == NUM_PACKETS_HANDLED) || TempUnfinishedRec) {
1293 pAdapter->RxRing.UnfinishedReceives = true;
1294 writel(pAdapter->RegistryTxTimeInterval * NANO_IN_A_MICRO,
1295 &pAdapter->CSRAddress->global.watchdog_timer);
1296 } else {
1297 /* Watchdog timer will disable itself if appropriate. */
1298 pAdapter->RxRing.UnfinishedReceives = false;
1299 }
1300
1301 DBG_RX_LEAVE(et131x_dbginfo);
1302}
1303
1304/**
1305 * NICReturnRFD - Recycle a RFD and put it back onto the receive list
1306 * @pAdapter: pointer to our adapter
1307 * @pMpRfd: pointer to the RFD
1308 */
1309void nic_return_rfd(struct et131x_adapter *pAdapter, PMP_RFD pMpRfd)
1310{
1311 struct _rx_ring_t *pRxLocal = &pAdapter->RxRing;
1312 struct _RXDMA_t __iomem *pRxDma = &pAdapter->CSRAddress->rxdma;
1313 uint16_t bi = pMpRfd->iBufferIndex;
1314 uint8_t ri = pMpRfd->iRingIndex;
1315 unsigned long lockflags;
1316
1317 DBG_RX_ENTER(et131x_dbginfo);
1318
1319 /* We don't use any of the OOB data besides status. Otherwise, we
1320 * need to clean up OOB data
1321 */
1322 if (
1323#ifdef USE_FBR0
1324 (ri == 0 && bi < pRxLocal->Fbr0NumEntries) ||
1325#endif
1326 (ri == 1 && bi < pRxLocal->Fbr1NumEntries)) {
1327 spin_lock_irqsave(&pAdapter->FbrLock, lockflags);
1328
1329 if (ri == 1) {
1330 PFBR_DESC_t pNextDesc =
1331 (PFBR_DESC_t) (pRxLocal->pFbr1RingVa) +
1332 pRxLocal->local_Fbr1_full.bits.val;
1333
1334 /* Handle the Free Buffer Ring advancement here. Write
1335 * the PA / Buffer Index for the returned buffer into
1336 * the oldest (next to be freed)FBR entry
1337 */
1338 pNextDesc->addr_hi = pRxLocal->Fbr[1]->PAHigh[bi];
1339 pNextDesc->addr_lo = pRxLocal->Fbr[1]->PALow[bi];
1340 pNextDesc->word2.value = bi;
1341
1342 if (++pRxLocal->local_Fbr1_full.bits.val >
1343 (pRxLocal->Fbr1NumEntries - 1)) {
1344 pRxLocal->local_Fbr1_full.bits.val = 0;
1345 pRxLocal->local_Fbr1_full.bits.wrap ^= 1;
1346 }
1347
1348 writel(pRxLocal->local_Fbr1_full.value,
1349 &pRxDma->fbr1_full_offset.value);
1350 }
1351#ifdef USE_FBR0
1352 else {
1353 PFBR_DESC_t pNextDesc =
1354 (PFBR_DESC_t) pRxLocal->pFbr0RingVa +
1355 pRxLocal->local_Fbr0_full.bits.val;
1356
1357 /* Handle the Free Buffer Ring advancement here. Write
1358 * the PA / Buffer Index for the returned buffer into
1359 * the oldest (next to be freed) FBR entry
1360 */
1361 pNextDesc->addr_hi = pRxLocal->Fbr[0]->PAHigh[bi];
1362 pNextDesc->addr_lo = pRxLocal->Fbr[0]->PALow[bi];
1363 pNextDesc->word2.value = bi;
1364
1365 if (++pRxLocal->local_Fbr0_full.bits.val >
1366 (pRxLocal->Fbr0NumEntries - 1)) {
1367 pRxLocal->local_Fbr0_full.bits.val = 0;
1368 pRxLocal->local_Fbr0_full.bits.wrap ^= 1;
1369 }
1370
1371 writel(pRxLocal->local_Fbr0_full.value,
1372 &pRxDma->fbr0_full_offset.value);
1373 }
1374#endif
1375 spin_unlock_irqrestore(&pAdapter->FbrLock, lockflags);
1376 } else {
1377 DBG_ERROR(et131x_dbginfo,
1378 "NICReturnRFD illegal Buffer Index returned\n");
1379 }
1380
1381 /* The processing on this RFD is done, so put it back on the tail of
1382 * our list
1383 */
1384 spin_lock_irqsave(&pAdapter->RcvLock, lockflags);
1385 list_add_tail(&pMpRfd->list_node, &pRxLocal->RecvList);
1386 pRxLocal->nReadyRecv++;
1387 spin_unlock_irqrestore(&pAdapter->RcvLock, lockflags);
1388
1389 DBG_ASSERT(pRxLocal->nReadyRecv <= pRxLocal->NumRfd);
1390 DBG_RX_LEAVE(et131x_dbginfo);
1391}
diff --git a/drivers/staging/et131x/et1310_rx.h b/drivers/staging/et131x/et1310_rx.h
new file mode 100644
index 00000000000..ea66dbcd8df
--- /dev/null
+++ b/drivers/staging/et131x/et1310_rx.h
@@ -0,0 +1,373 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_rx.h - Defines, structs, enums, prototypes, etc. pertaining to data
12 * reception.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET1310_RX_H__
60#define __ET1310_RX_H__
61
62#include "et1310_address_map.h"
63
64#define USE_FBR0 true
65
66#ifdef USE_FBR0
67//#define FBR0_BUFFER_SIZE 256
68#endif
69
70//#define FBR1_BUFFER_SIZE 2048
71
72#define FBR_CHUNKS 32
73
74#define MAX_DESC_PER_RING_RX 1024
75
76/* number of RFDs - default and min */
77#ifdef USE_FBR0
78#define RFD_LOW_WATER_MARK 40
79#define NIC_MIN_NUM_RFD 64
80#define NIC_DEFAULT_NUM_RFD 1024
81#else
82#define RFD_LOW_WATER_MARK 20
83#define NIC_MIN_NUM_RFD 64
84#define NIC_DEFAULT_NUM_RFD 256
85#endif
86
87#define NUM_PACKETS_HANDLED 256
88
89#define ALCATEL_BAD_STATUS 0xe47f0000
90#define ALCATEL_MULTICAST_PKT 0x01000000
91#define ALCATEL_BROADCAST_PKT 0x02000000
92
93/* typedefs for Free Buffer Descriptors */
94typedef union _FBR_WORD2_t {
95 u32 value;
96 struct {
97#ifdef _BIT_FIELDS_HTOL
98 u32 reserved:22; // bits 10-31
99 u32 bi:10; // bits 0-9(Buffer Index)
100#else
101 u32 bi:10; // bits 0-9(Buffer Index)
102 u32 reserved:22; // bit 10-31
103#endif
104 } bits;
105} FBR_WORD2_t, *PFBR_WORD2_t;
106
107typedef struct _FBR_DESC_t {
108 u32 addr_lo;
109 u32 addr_hi;
110 FBR_WORD2_t word2;
111} FBR_DESC_t, *PFBR_DESC_t;
112
113/* Typedefs for Packet Status Ring Descriptors */
114typedef union _PKT_STAT_DESC_WORD0_t {
115 u32 value;
116 struct {
117#ifdef _BIT_FIELDS_HTOL
118 // top 16 bits are from the Alcatel Status Word as enumerated in
119 // PE-MCXMAC Data Sheet IPD DS54 0210-1 (also IPD-DS80 0205-2)
120#if 0
121 u32 asw_trunc:1; // bit 31(Rx frame truncated)
122#endif
123 u32 asw_long_evt:1; // bit 31(Rx long event)
124 u32 asw_VLAN_tag:1; // bit 30(VLAN tag detected)
125 u32 asw_unsupported_op:1; // bit 29(unsupported OP code)
126 u32 asw_pause_frame:1; // bit 28(is a pause frame)
127 u32 asw_control_frame:1; // bit 27(is a control frame)
128 u32 asw_dribble_nibble:1; // bit 26(spurious bits after EOP)
129 u32 asw_broadcast:1; // bit 25(has a broadcast address)
130 u32 asw_multicast:1; // bit 24(has a multicast address)
131 u32 asw_OK:1; // bit 23(valid CRC + no code error)
132 u32 asw_too_long:1; // bit 22(frame length > 1518 bytes)
133 u32 asw_len_chk_err:1; // bit 21(frame length field incorrect)
134 u32 asw_CRC_err:1; // bit 20(CRC error)
135 u32 asw_code_err:1; // bit 19(one or more nibbles signalled as errors)
136 u32 asw_false_carrier_event:1; // bit 18(bad carrier since last good packet)
137 u32 asw_RX_DV_event:1; // bit 17(short receive event detected)
138 u32 asw_prev_pkt_dropped:1;// bit 16(e.g. IFG too small on previous)
139 u32 unused:5; // bits 11-15
140 u32 vp:1; // bit 10(VLAN Packet)
141 u32 jp:1; // bit 9(Jumbo Packet)
142 u32 ft:1; // bit 8(Frame Truncated)
143 u32 drop:1; // bit 7(Drop packet)
144 u32 rxmac_error:1; // bit 6(RXMAC Error Indicator)
145 u32 wol:1; // bit 5(WOL Event)
146 u32 tcpp:1; // bit 4(TCP checksum pass)
147 u32 tcpa:1; // bit 3(TCP checksum assist)
148 u32 ipp:1; // bit 2(IP checksum pass)
149 u32 ipa:1; // bit 1(IP checksum assist)
150 u32 hp:1; // bit 0(hash pass)
151#else
152 u32 hp:1; // bit 0(hash pass)
153 u32 ipa:1; // bit 1(IP checksum assist)
154 u32 ipp:1; // bit 2(IP checksum pass)
155 u32 tcpa:1; // bit 3(TCP checksum assist)
156 u32 tcpp:1; // bit 4(TCP checksum pass)
157 u32 wol:1; // bit 5(WOL Event)
158 u32 rxmac_error:1; // bit 6(RXMAC Error Indicator)
159 u32 drop:1; // bit 7(Drop packet)
160 u32 ft:1; // bit 8(Frame Truncated)
161 u32 jp:1; // bit 9(Jumbo Packet)
162 u32 vp:1; // bit 10(VLAN Packet)
163 u32 unused:5; // bits 11-15
164 u32 asw_prev_pkt_dropped:1;// bit 16(e.g. IFG too small on previous)
165 u32 asw_RX_DV_event:1; // bit 17(short receive event detected)
166 u32 asw_false_carrier_event:1; // bit 18(bad carrier since last good packet)
167 u32 asw_code_err:1; // bit 19(one or more nibbles signalled as errors)
168 u32 asw_CRC_err:1; // bit 20(CRC error)
169 u32 asw_len_chk_err:1; // bit 21(frame length field incorrect)
170 u32 asw_too_long:1; // bit 22(frame length > 1518 bytes)
171 u32 asw_OK:1; // bit 23(valid CRC + no code error)
172 u32 asw_multicast:1; // bit 24(has a multicast address)
173 u32 asw_broadcast:1; // bit 25(has a broadcast address)
174 u32 asw_dribble_nibble:1; // bit 26(spurious bits after EOP)
175 u32 asw_control_frame:1; // bit 27(is a control frame)
176 u32 asw_pause_frame:1; // bit 28(is a pause frame)
177 u32 asw_unsupported_op:1; // bit 29(unsupported OP code)
178 u32 asw_VLAN_tag:1; // bit 30(VLAN tag detected)
179 u32 asw_long_evt:1; // bit 31(Rx long event)
180#if 0
181 u32 asw_trunc:1; // bit 31(Rx frame truncated)
182#endif
183#endif
184 } bits;
185} PKT_STAT_DESC_WORD0_t, *PPKT_STAT_WORD0_t;
186
187typedef union _PKT_STAT_DESC_WORD1_t {
188 u32 value;
189 struct {
190#ifdef _BIT_FIELDS_HTOL
191 u32 unused:4; // bits 28-31
192 u32 ri:2; // bits 26-27(Ring Index)
193 u32 bi:10; // bits 16-25(Buffer Index)
194 u32 length:16; // bit 0-15(length in bytes)
195#else
196 u32 length:16; // bit 0-15(length in bytes)
197 u32 bi:10; // bits 16-25(Buffer Index)
198 u32 ri:2; // bits 26-27(Ring Index)
199 u32 unused:4; // bits 28-31
200#endif
201 } bits;
202} PKT_STAT_DESC_WORD1_t, *PPKT_STAT_WORD1_t;
203
204typedef struct _PKT_STAT_DESC_t {
205 PKT_STAT_DESC_WORD0_t word0;
206 PKT_STAT_DESC_WORD1_t word1;
207} PKT_STAT_DESC_t, *PPKT_STAT_DESC_t;
208
209/* Typedefs for the RX DMA status word */
210
211/*
212 * RXSTAT_WORD0_t structure holds part of the status bits of the Rx DMA engine
213 * that get copied out to memory by the ET-1310. Word 0 is a 32 bit word
214 * whichcontains Free Buffer ring 0 and 1 available offset.
215 */
216typedef union _rxstat_word0_t {
217 u32 value;
218 struct {
219#ifdef _BIT_FIELDS_HTOL
220 u32 FBR1unused:5; // bits 27-31
221 u32 FBR1wrap:1; // bit 26
222 u32 FBR1offset:10; // bits 16-25
223 u32 FBR0unused:5; // bits 11-15
224 u32 FBR0wrap:1; // bit 10
225 u32 FBR0offset:10; // bits 0-9
226#else
227 u32 FBR0offset:10; // bits 0-9
228 u32 FBR0wrap:1; // bit 10
229 u32 FBR0unused:5; // bits 11-15
230 u32 FBR1offset:10; // bits 16-25
231 u32 FBR1wrap:1; // bit 26
232 u32 FBR1unused:5; // bits 27-31
233#endif
234 } bits;
235} RXSTAT_WORD0_t, *PRXSTAT_WORD0_t;
236
237/*
238 * RXSTAT_WORD1_t structure holds part of the status bits of the Rx DMA engine
239 * that get copied out to memory by the ET-1310. Word 3 is a 32 bit word
240 * which contains the Packet Status Ring available offset.
241 */
242typedef union _rxstat_word1_t {
243 u32 value;
244 struct {
245#ifdef _BIT_FIELDS_HTOL
246 u32 PSRunused:3; // bits 29-31
247 u32 PSRwrap:1; // bit 28
248 u32 PSRoffset:12; // bits 16-27
249 u32 reserved:16; // bits 0-15
250#else
251 u32 reserved:16; // bits 0-15
252 u32 PSRoffset:12; // bits 16-27
253 u32 PSRwrap:1; // bit 28
254 u32 PSRunused:3; // bits 29-31
255#endif
256 } bits;
257} RXSTAT_WORD1_t, *PRXSTAT_WORD1_t;
258
259/*
260 * RX_STATUS_BLOCK_t is sructure representing the status of the Rx DMA engine
261 * it sits in free memory, and is pointed to by 0x101c / 0x1020
262 */
263typedef struct _rx_status_block_t {
264 RXSTAT_WORD0_t Word0;
265 RXSTAT_WORD1_t Word1;
266} RX_STATUS_BLOCK_t, *PRX_STATUS_BLOCK_t;
267
268/*
269 * Structure for look-up table holding free buffer ring pointers
270 */
271typedef struct _FbrLookupTable {
272 void *Va[MAX_DESC_PER_RING_RX];
273 void *Buffer1[MAX_DESC_PER_RING_RX];
274 void *Buffer2[MAX_DESC_PER_RING_RX];
275 u32 PAHigh[MAX_DESC_PER_RING_RX];
276 u32 PALow[MAX_DESC_PER_RING_RX];
277} FBRLOOKUPTABLE, *PFBRLOOKUPTABLE;
278
279typedef enum {
280 ONE_PACKET_INTERRUPT,
281 FOUR_PACKET_INTERRUPT
282} eRX_INTERRUPT_STATE_t, *PeRX_INTERRUPT_STATE_t;
283
284/*
285 * Structure to hold the skb's in a list
286 */
287typedef struct rx_skb_list_elem {
288 struct list_head skb_list_elem;
289 dma_addr_t dma_addr;
290 struct sk_buff *skb;
291} RX_SKB_LIST_ELEM, *PRX_SKB_LIST_ELEM;
292
293/*
294 * RX_RING_t is sructure representing the adaptor's local reference(s) to the
295 * rings
296 */
297typedef struct _rx_ring_t {
298#ifdef USE_FBR0
299 void *pFbr0RingVa;
300 dma_addr_t pFbr0RingPa;
301 void *Fbr0MemVa[MAX_DESC_PER_RING_RX / FBR_CHUNKS];
302 dma_addr_t Fbr0MemPa[MAX_DESC_PER_RING_RX / FBR_CHUNKS];
303 uint64_t Fbr0Realpa;
304 uint64_t Fbr0offset;
305 DMA10W_t local_Fbr0_full;
306 u32 Fbr0NumEntries;
307 u32 Fbr0BufferSize;
308#endif
309 void *pFbr1RingVa;
310 dma_addr_t pFbr1RingPa;
311 void *Fbr1MemVa[MAX_DESC_PER_RING_RX / FBR_CHUNKS];
312 dma_addr_t Fbr1MemPa[MAX_DESC_PER_RING_RX / FBR_CHUNKS];
313 uint64_t Fbr1Realpa;
314 uint64_t Fbr1offset;
315 FBRLOOKUPTABLE *Fbr[2];
316 DMA10W_t local_Fbr1_full;
317 u32 Fbr1NumEntries;
318 u32 Fbr1BufferSize;
319
320 void *pPSRingVa;
321 dma_addr_t pPSRingPa;
322 uint64_t pPSRingRealPa;
323 uint64_t pPSRingOffset;
324 RXDMA_PSR_FULL_OFFSET_t local_psr_full;
325 u32 PsrNumEntries;
326
327 void *pRxStatusVa;
328 dma_addr_t pRxStatusPa;
329 uint64_t RxStatusRealPA;
330 uint64_t RxStatusOffset;
331
332 struct list_head RecvBufferPool;
333
334 /* RECV */
335 struct list_head RecvList;
336 struct list_head RecvPendingList;
337 u32 nReadyRecv;
338
339 u32 NumRfd;
340
341 bool UnfinishedReceives;
342
343 struct list_head RecvPacketPool;
344
345 /* lookaside lists */
346 struct kmem_cache *RecvLookaside;
347} RX_RING_t, *PRX_RING_t;
348
349/* Forward reference of RFD */
350struct _MP_RFD;
351
352/* Forward declaration of the private adapter structure */
353struct et131x_adapter;
354
355/* PROTOTYPES for Initialization */
356int et131x_rx_dma_memory_alloc(struct et131x_adapter *adapter);
357void et131x_rx_dma_memory_free(struct et131x_adapter *adapter);
358int et131x_rfd_resources_alloc(struct et131x_adapter *adapter,
359 struct _MP_RFD *pMpRfd);
360void et131x_rfd_resources_free(struct et131x_adapter *adapter,
361 struct _MP_RFD *pMpRfd);
362int et131x_init_recv(struct et131x_adapter *adapter);
363
364void ConfigRxDmaRegs(struct et131x_adapter *adapter);
365void SetRxDmaTimer(struct et131x_adapter *adapter);
366void et131x_rx_dma_disable(struct et131x_adapter *adapter);
367void et131x_rx_dma_enable(struct et131x_adapter *adapter);
368
369void et131x_reset_recv(struct et131x_adapter *adapter);
370
371void et131x_handle_recv_interrupt(struct et131x_adapter *adapter);
372
373#endif /* __ET1310_RX_H__ */
diff --git a/drivers/staging/et131x/et1310_tx.c b/drivers/staging/et131x/et1310_tx.c
new file mode 100644
index 00000000000..a95c2608a0c
--- /dev/null
+++ b/drivers/staging/et131x/et1310_tx.c
@@ -0,0 +1,1525 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_tx.c - Routines used to perform data transmission.
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/pci.h>
63#include <linux/init.h>
64#include <linux/module.h>
65#include <linux/types.h>
66#include <linux/kernel.h>
67
68#include <linux/sched.h>
69#include <linux/ptrace.h>
70#include <linux/slab.h>
71#include <linux/ctype.h>
72#include <linux/string.h>
73#include <linux/timer.h>
74#include <linux/interrupt.h>
75#include <linux/in.h>
76#include <linux/delay.h>
77#include <asm/io.h>
78#include <asm/system.h>
79#include <asm/bitops.h>
80
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90
91#include "et131x_adapter.h"
92#include "et131x_initpci.h"
93#include "et131x_isr.h"
94
95#include "et1310_tx.h"
96
97/* Data for debugging facilities */
98#ifdef CONFIG_ET131X_DEBUG
99extern dbg_info_t *et131x_dbginfo;
100#endif /* CONFIG_ET131X_DEBUG */
101
102static void et131x_update_tcb_list(struct et131x_adapter *pAdapter);
103static void et131x_check_send_wait_list(struct et131x_adapter *pAdapter);
104static inline void et131x_free_send_packet(struct et131x_adapter *pAdapter,
105 PMP_TCB pMpTcb);
106static int et131x_send_packet(struct sk_buff *skb,
107 struct et131x_adapter *pAdapter);
108static int nic_send_packet(struct et131x_adapter *pAdapter, PMP_TCB pMpTcb);
109
110/**
111 * et131x_tx_dma_memory_alloc
112 * @adapter: pointer to our private adapter structure
113 *
114 * Returns 0 on success and errno on failure (as defined in errno.h).
115 *
116 * Allocates memory that will be visible both to the device and to the CPU.
117 * The OS will pass us packets, pointers to which we will insert in the Tx
118 * Descriptor queue. The device will read this queue to find the packets in
119 * memory. The device will update the "status" in memory each time it xmits a
120 * packet.
121 */
122int et131x_tx_dma_memory_alloc(struct et131x_adapter *adapter)
123{
124 int desc_size = 0;
125 TX_RING_t *tx_ring = &adapter->TxRing;
126
127 DBG_ENTER(et131x_dbginfo);
128
129 /* Allocate memory for the TCB's (Transmit Control Block) */
130 adapter->TxRing.MpTcbMem = (MP_TCB *) kcalloc(NUM_TCB, sizeof(MP_TCB),
131 GFP_ATOMIC | GFP_DMA);
132 if (!adapter->TxRing.MpTcbMem) {
133 DBG_ERROR(et131x_dbginfo, "Cannot alloc memory for TCBs\n");
134 DBG_LEAVE(et131x_dbginfo);
135 return -ENOMEM;
136 }
137
138 /* Allocate enough memory for the Tx descriptor ring, and allocate
139 * some extra so that the ring can be aligned on a 4k boundary.
140 */
141 desc_size = (sizeof(TX_DESC_ENTRY_t) * NUM_DESC_PER_RING_TX) + 4096 - 1;
142 tx_ring->pTxDescRingVa =
143 (PTX_DESC_ENTRY_t) pci_alloc_consistent(adapter->pdev, desc_size,
144 &tx_ring->pTxDescRingPa);
145 if (!adapter->TxRing.pTxDescRingVa) {
146 DBG_ERROR(et131x_dbginfo, "Cannot alloc memory for Tx Ring\n");
147 DBG_LEAVE(et131x_dbginfo);
148 return -ENOMEM;
149 }
150
151 /* Save physical address
152 *
153 * NOTE: pci_alloc_consistent(), used above to alloc DMA regions,
154 * ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses
155 * are ever returned, make sure the high part is retrieved here before
156 * storing the adjusted address.
157 */
158 tx_ring->pTxDescRingAdjustedPa = tx_ring->pTxDescRingPa;
159
160 /* Align Tx Descriptor Ring on a 4k (0x1000) byte boundary */
161 et131x_align_allocated_memory(adapter,
162 &tx_ring->pTxDescRingAdjustedPa,
163 &tx_ring->TxDescOffset, 0x0FFF);
164
165 tx_ring->pTxDescRingVa += tx_ring->TxDescOffset;
166
167 /* Allocate memory for the Tx status block */
168 tx_ring->pTxStatusVa = pci_alloc_consistent(adapter->pdev,
169 sizeof(TX_STATUS_BLOCK_t),
170 &tx_ring->pTxStatusPa);
171 if (!adapter->TxRing.pTxStatusPa) {
172 DBG_ERROR(et131x_dbginfo,
173 "Cannot alloc memory for Tx status block\n");
174 DBG_LEAVE(et131x_dbginfo);
175 return -ENOMEM;
176 }
177
178 /* Allocate memory for a dummy buffer */
179 tx_ring->pTxDummyBlkVa = pci_alloc_consistent(adapter->pdev,
180 NIC_MIN_PACKET_SIZE,
181 &tx_ring->pTxDummyBlkPa);
182 if (!adapter->TxRing.pTxDummyBlkPa) {
183 DBG_ERROR(et131x_dbginfo,
184 "Cannot alloc memory for Tx dummy buffer\n");
185 DBG_LEAVE(et131x_dbginfo);
186 return -ENOMEM;
187 }
188
189 DBG_LEAVE(et131x_dbginfo);
190 return 0;
191}
192
193/**
194 * et131x_tx_dma_memory_free - Free all memory allocated within this module
195 * @adapter: pointer to our private adapter structure
196 *
197 * Returns 0 on success and errno on failure (as defined in errno.h).
198 */
199void et131x_tx_dma_memory_free(struct et131x_adapter *adapter)
200{
201 int desc_size = 0;
202
203 DBG_ENTER(et131x_dbginfo);
204
205 if (adapter->TxRing.pTxDescRingVa) {
206 /* Free memory relating to Tx rings here */
207 adapter->TxRing.pTxDescRingVa -= adapter->TxRing.TxDescOffset;
208
209 desc_size =
210 (sizeof(TX_DESC_ENTRY_t) * NUM_DESC_PER_RING_TX) + 4096 - 1;
211
212 pci_free_consistent(adapter->pdev,
213 desc_size,
214 adapter->TxRing.pTxDescRingVa,
215 adapter->TxRing.pTxDescRingPa);
216
217 adapter->TxRing.pTxDescRingVa = NULL;
218 }
219
220 /* Free memory for the Tx status block */
221 if (adapter->TxRing.pTxStatusVa) {
222 pci_free_consistent(adapter->pdev,
223 sizeof(TX_STATUS_BLOCK_t),
224 adapter->TxRing.pTxStatusVa,
225 adapter->TxRing.pTxStatusPa);
226
227 adapter->TxRing.pTxStatusVa = NULL;
228 }
229
230 /* Free memory for the dummy buffer */
231 if (adapter->TxRing.pTxDummyBlkVa) {
232 pci_free_consistent(adapter->pdev,
233 NIC_MIN_PACKET_SIZE,
234 adapter->TxRing.pTxDummyBlkVa,
235 adapter->TxRing.pTxDummyBlkPa);
236
237 adapter->TxRing.pTxDummyBlkVa = NULL;
238 }
239
240 /* Free the memory for MP_TCB structures */
241 if (adapter->TxRing.MpTcbMem) {
242 kfree(adapter->TxRing.MpTcbMem);
243 adapter->TxRing.MpTcbMem = NULL;
244 }
245
246 DBG_LEAVE(et131x_dbginfo);
247}
248
249/**
250 * ConfigTxDmaRegs - Set up the tx dma section of the JAGCore.
251 * @adapter: pointer to our private adapter structure
252 */
253void ConfigTxDmaRegs(struct et131x_adapter *pAdapter)
254{
255 struct _TXDMA_t __iomem *pTxDma = &pAdapter->CSRAddress->txdma;
256
257 DBG_ENTER(et131x_dbginfo);
258
259 /* Load the hardware with the start of the transmit descriptor ring. */
260 writel((uint32_t) (pAdapter->TxRing.pTxDescRingAdjustedPa >> 32),
261 &pTxDma->pr_base_hi);
262 writel((uint32_t) pAdapter->TxRing.pTxDescRingAdjustedPa,
263 &pTxDma->pr_base_lo);
264
265 /* Initialise the transmit DMA engine */
266 writel(NUM_DESC_PER_RING_TX - 1, &pTxDma->pr_num_des.value);
267
268 /* Load the completion writeback physical address
269 *
270 * NOTE: pci_alloc_consistent(), used above to alloc DMA regions,
271 * ALWAYS returns SAC (32-bit) addresses. If DAC (64-bit) addresses
272 * are ever returned, make sure the high part is retrieved here before
273 * storing the adjusted address.
274 */
275 writel(0, &pTxDma->dma_wb_base_hi);
276 writel(pAdapter->TxRing.pTxStatusPa, &pTxDma->dma_wb_base_lo);
277
278 memset(pAdapter->TxRing.pTxStatusVa, 0, sizeof(TX_STATUS_BLOCK_t));
279
280 writel(0, &pTxDma->service_request.value);
281 pAdapter->TxRing.txDmaReadyToSend.value = 0;
282
283 DBG_LEAVE(et131x_dbginfo);
284}
285
286/**
287 * et131x_tx_dma_disable - Stop of Tx_DMA on the ET1310
288 * @pAdapter: pointer to our adapter structure
289 */
290void et131x_tx_dma_disable(struct et131x_adapter *pAdapter)
291{
292 DBG_ENTER(et131x_dbginfo);
293
294 /* Setup the tramsmit dma configuration register */
295 writel(0x101, &pAdapter->CSRAddress->txdma.csr.value);
296
297 DBG_LEAVE(et131x_dbginfo);
298}
299
300/**
301 * et131x_tx_dma_enable - re-start of Tx_DMA on the ET1310.
302 * @pAdapter: pointer to our adapter structure
303 *
304 * Mainly used after a return to the D0 (full-power) state from a lower state.
305 */
306void et131x_tx_dma_enable(struct et131x_adapter *pAdapter)
307{
308 DBG_ENTER(et131x_dbginfo);
309
310 if (pAdapter->RegistryPhyLoopbk) {
311 /* TxDMA is disabled for loopback operation. */
312 writel(0x101, &pAdapter->CSRAddress->txdma.csr.value);
313 } else {
314 TXDMA_CSR_t csr = { 0 };
315
316 /* Setup the transmit dma configuration register for normal
317 * operation
318 */
319 csr.bits.sngl_epkt_mode = 1;
320 csr.bits.halt = 0;
321 csr.bits.cache_thrshld = pAdapter->RegistryDMACache;
322 writel(csr.value, &pAdapter->CSRAddress->txdma.csr.value);
323 }
324
325 DBG_LEAVE(et131x_dbginfo);
326}
327
328/**
329 * et131x_init_send - Initialize send data structures
330 * @adapter: pointer to our private adapter structure
331 */
332void et131x_init_send(struct et131x_adapter *adapter)
333{
334 PMP_TCB pMpTcb;
335 uint32_t TcbCount;
336 TX_RING_t *tx_ring;
337
338 DBG_ENTER(et131x_dbginfo);
339
340 /* Setup some convenience pointers */
341 tx_ring = &adapter->TxRing;
342 pMpTcb = adapter->TxRing.MpTcbMem;
343
344 tx_ring->TCBReadyQueueHead = pMpTcb;
345
346 /* Go through and set up each TCB */
347 for (TcbCount = 0; TcbCount < NUM_TCB; TcbCount++) {
348 memset(pMpTcb, 0, sizeof(MP_TCB));
349
350 /* Set the link pointer in HW TCB to the next TCB in the
351 * chain. If this is the last TCB in the chain, also set the
352 * tail pointer.
353 */
354 if (TcbCount < NUM_TCB - 1) {
355 pMpTcb->Next = pMpTcb + 1;
356 } else {
357 tx_ring->TCBReadyQueueTail = pMpTcb;
358 pMpTcb->Next = (PMP_TCB) NULL;
359 }
360
361 pMpTcb++;
362 }
363
364 /* Curr send queue should now be empty */
365 tx_ring->CurrSendHead = (PMP_TCB) NULL;
366 tx_ring->CurrSendTail = (PMP_TCB) NULL;
367
368 INIT_LIST_HEAD(&adapter->TxRing.SendWaitQueue);
369
370 DBG_LEAVE(et131x_dbginfo);
371}
372
373/**
374 * et131x_send_packets - This function is called by the OS to send packets
375 * @skb: the packet(s) to send
376 * @netdev:device on which to TX the above packet(s)
377 *
378 * Return 0 in almost all cases; non-zero value in extreme hard failure only
379 */
380int et131x_send_packets(struct sk_buff *skb, struct net_device *netdev)
381{
382 int status = 0;
383 struct et131x_adapter *pAdapter = NULL;
384
385 DBG_TX_ENTER(et131x_dbginfo);
386
387 pAdapter = netdev_priv(netdev);
388
389 /* Send these packets
390 *
391 * NOTE: The Linux Tx entry point is only given one packet at a time
392 * to Tx, so the PacketCount and it's array used makes no sense here
393 */
394
395 /* Queue is not empty or TCB is not available */
396 if (!list_empty(&pAdapter->TxRing.SendWaitQueue) ||
397 MP_TCB_RESOURCES_NOT_AVAILABLE(pAdapter)) {
398 /* NOTE: If there's an error on send, no need to queue the
399 * packet under Linux; if we just send an error up to the
400 * netif layer, it will resend the skb to us.
401 */
402 DBG_VERBOSE(et131x_dbginfo, "TCB Resources Not Available\n");
403 status = -ENOMEM;
404 } else {
405 /* We need to see if the link is up; if it's not, make the
406 * netif layer think we're good and drop the packet
407 */
408 //if( MP_SHOULD_FAIL_SEND( pAdapter ) || pAdapter->DriverNoPhyAccess )
409 if (MP_SHOULD_FAIL_SEND(pAdapter) || pAdapter->DriverNoPhyAccess
410 || !netif_carrier_ok(netdev)) {
411 DBG_VERBOSE(et131x_dbginfo,
412 "Can't Tx, Link is DOWN; drop the packet\n");
413
414 dev_kfree_skb_any(skb);
415 skb = NULL;
416
417 pAdapter->net_stats.tx_dropped++;
418 } else {
419 status = et131x_send_packet(skb, pAdapter);
420
421 if (status == -ENOMEM) {
422
423 /* NOTE: If there's an error on send, no need
424 * to queue the packet under Linux; if we just
425 * send an error up to the netif layer, it
426 * will resend the skb to us.
427 */
428 DBG_WARNING(et131x_dbginfo,
429 "Resources problem, Queue tx packet\n");
430 } else if (status != 0) {
431 /* On any other error, make netif think we're
432 * OK and drop the packet
433 */
434 DBG_WARNING(et131x_dbginfo,
435 "General error, drop packet\n");
436
437 dev_kfree_skb_any(skb);
438 skb = NULL;
439
440 pAdapter->net_stats.tx_dropped++;
441 }
442 }
443 }
444
445 DBG_TX_LEAVE(et131x_dbginfo);
446 return status;
447}
448
449/**
450 * et131x_send_packet - Do the work to send a packet
451 * @skb: the packet(s) to send
452 * @pAdapter: a pointer to the device's private adapter structure
453 *
454 * Return 0 in almost all cases; non-zero value in extreme hard failure only.
455 *
456 * Assumption: Send spinlock has been acquired
457 */
458static int et131x_send_packet(struct sk_buff *skb,
459 struct et131x_adapter *pAdapter)
460{
461 int status = 0;
462 PMP_TCB pMpTcb = NULL;
463 uint16_t *pShBufVa;
464 unsigned long lockflags;
465
466 DBG_TX_ENTER(et131x_dbginfo);
467
468 /* Is our buffer scattered, or continuous? */
469 if (skb_shinfo(skb)->nr_frags == 0) {
470 DBG_TX(et131x_dbginfo, "Scattered buffer: NO\n");
471 } else {
472 DBG_TX(et131x_dbginfo, "Scattered buffer: YES, Num Frags: %d\n",
473 skb_shinfo(skb)->nr_frags);
474 }
475
476 /* All packets must have at least a MAC address and a protocol type */
477 if (skb->len < ETH_HLEN) {
478 DBG_ERROR(et131x_dbginfo,
479 "Packet size < ETH_HLEN (14 bytes)\n");
480 DBG_LEAVE(et131x_dbginfo);
481 return -EIO;
482 }
483
484 /* Get a TCB for this packet */
485 spin_lock_irqsave(&pAdapter->TCBReadyQLock, lockflags);
486
487 pMpTcb = pAdapter->TxRing.TCBReadyQueueHead;
488
489 if (pMpTcb == NULL) {
490 spin_unlock_irqrestore(&pAdapter->TCBReadyQLock, lockflags);
491
492 DBG_WARNING(et131x_dbginfo, "Can't obtain a TCB\n");
493 DBG_TX_LEAVE(et131x_dbginfo);
494 return -ENOMEM;
495 }
496
497 pAdapter->TxRing.TCBReadyQueueHead = pMpTcb->Next;
498
499 if (pAdapter->TxRing.TCBReadyQueueHead == NULL) {
500 pAdapter->TxRing.TCBReadyQueueTail = NULL;
501 }
502
503 spin_unlock_irqrestore(&pAdapter->TCBReadyQLock, lockflags);
504
505 pMpTcb->PacketLength = skb->len;
506 pMpTcb->Packet = skb;
507
508 if ((skb->data != NULL) && ((skb->len - skb->data_len) >= 6)) {
509 pShBufVa = (uint16_t *) skb->data;
510
511 if ((pShBufVa[0] == 0xffff) &&
512 (pShBufVa[1] == 0xffff) && (pShBufVa[2] == 0xffff)) {
513 MP_SET_FLAG(pMpTcb, fMP_DEST_BROAD);
514 } else if ((pShBufVa[0] & 0x3) == 0x0001) {
515 MP_SET_FLAG(pMpTcb, fMP_DEST_MULTI);
516 }
517 }
518
519 pMpTcb->Next = NULL;
520
521 /* Call the NIC specific send handler. */
522 if (status == 0) {
523 status = nic_send_packet(pAdapter, pMpTcb);
524 }
525
526 if (status != 0) {
527 spin_lock_irqsave(&pAdapter->TCBReadyQLock, lockflags);
528
529 if (pAdapter->TxRing.TCBReadyQueueTail) {
530 pAdapter->TxRing.TCBReadyQueueTail->Next = pMpTcb;
531 } else {
532 /* Apparently ready Q is empty. */
533 pAdapter->TxRing.TCBReadyQueueHead = pMpTcb;
534 }
535
536 pAdapter->TxRing.TCBReadyQueueTail = pMpTcb;
537
538 spin_unlock_irqrestore(&pAdapter->TCBReadyQLock, lockflags);
539
540 DBG_TX_LEAVE(et131x_dbginfo);
541 return status;
542 }
543
544 DBG_ASSERT(pAdapter->TxRing.nBusySend <= NUM_TCB);
545
546 DBG_TX_LEAVE(et131x_dbginfo);
547 return 0;
548}
549
550/**
551 * nic_send_packet - NIC specific send handler for version B silicon.
552 * @pAdapter: pointer to our adapter
553 * @pMpTcb: pointer to MP_TCB
554 *
555 * Returns 0 or errno.
556 */
557static int nic_send_packet(struct et131x_adapter *pAdapter, PMP_TCB pMpTcb)
558{
559 uint32_t loopIndex;
560 TX_DESC_ENTRY_t CurDesc[24];
561 uint32_t FragmentNumber = 0;
562 uint32_t iThisCopy, iRemainder;
563 struct sk_buff *pPacket = pMpTcb->Packet;
564 uint32_t FragListCount = skb_shinfo(pPacket)->nr_frags + 1;
565 struct skb_frag_struct *pFragList = &skb_shinfo(pPacket)->frags[0];
566 unsigned long lockflags1, lockflags2;
567
568 DBG_TX_ENTER(et131x_dbginfo);
569
570 /* Part of the optimizations of this send routine restrict us to
571 * sending 24 fragments at a pass. In practice we should never see
572 * more than 5 fragments.
573 *
574 * NOTE: The older version of this function (below) can handle any
575 * number of fragments. If needed, we can call this function,
576 * although it is less efficient.
577 */
578 if (FragListCount > 23) {
579 DBG_TX_LEAVE(et131x_dbginfo);
580 return -EIO;
581 }
582
583 memset(CurDesc, 0, sizeof(TX_DESC_ENTRY_t) * (FragListCount + 1));
584
585 for (loopIndex = 0; loopIndex < FragListCount; loopIndex++) {
586 /* If there is something in this element, lets get a
587 * descriptor from the ring and get the necessary data
588 */
589 if (loopIndex == 0) {
590 /* If the fragments are smaller than a standard MTU,
591 * then map them to a single descriptor in the Tx
592 * Desc ring. However, if they're larger, as is
593 * possible with support for jumbo packets, then
594 * split them each across 2 descriptors.
595 *
596 * This will work until we determine why the hardware
597 * doesn't seem to like large fragments.
598 */
599 if ((pPacket->len - pPacket->data_len) <= 1514) {
600 DBG_TX(et131x_dbginfo,
601 "Got packet of length %d, "
602 "filling desc entry %d, "
603 "TCB: 0x%p\n",
604 (pPacket->len - pPacket->data_len),
605 pAdapter->TxRing.txDmaReadyToSend.bits.
606 val, pMpTcb);
607
608 CurDesc[FragmentNumber].DataBufferPtrHigh = 0;
609
610 CurDesc[FragmentNumber].word2.bits.
611 length_in_bytes =
612 pPacket->len - pPacket->data_len;
613
614 /* NOTE: Here, the dma_addr_t returned from
615 * pci_map_single() is implicitly cast as a
616 * uint32_t. Although dma_addr_t can be
617 * 64-bit, the address returned by
618 * pci_map_single() is always 32-bit
619 * addressable (as defined by the pci/dma
620 * subsystem)
621 */
622 CurDesc[FragmentNumber++].DataBufferPtrLow =
623 pci_map_single(pAdapter->pdev,
624 pPacket->data,
625 pPacket->len -
626 pPacket->data_len,
627 PCI_DMA_TODEVICE);
628 } else {
629 DBG_TX(et131x_dbginfo,
630 "Got packet of length %d, "
631 "filling desc entry %d, "
632 "TCB: 0x%p\n",
633 (pPacket->len - pPacket->data_len),
634 pAdapter->TxRing.txDmaReadyToSend.bits.
635 val, pMpTcb);
636
637 CurDesc[FragmentNumber].DataBufferPtrHigh = 0;
638
639 CurDesc[FragmentNumber].word2.bits.
640 length_in_bytes =
641 ((pPacket->len - pPacket->data_len) / 2);
642
643 /* NOTE: Here, the dma_addr_t returned from
644 * pci_map_single() is implicitly cast as a
645 * uint32_t. Although dma_addr_t can be
646 * 64-bit, the address returned by
647 * pci_map_single() is always 32-bit
648 * addressable (as defined by the pci/dma
649 * subsystem)
650 */
651 CurDesc[FragmentNumber++].DataBufferPtrLow =
652 pci_map_single(pAdapter->pdev,
653 pPacket->data,
654 ((pPacket->len -
655 pPacket->data_len) / 2),
656 PCI_DMA_TODEVICE);
657 CurDesc[FragmentNumber].DataBufferPtrHigh = 0;
658
659 CurDesc[FragmentNumber].word2.bits.
660 length_in_bytes =
661 ((pPacket->len - pPacket->data_len) / 2);
662
663 /* NOTE: Here, the dma_addr_t returned from
664 * pci_map_single() is implicitly cast as a
665 * uint32_t. Although dma_addr_t can be
666 * 64-bit, the address returned by
667 * pci_map_single() is always 32-bit
668 * addressable (as defined by the pci/dma
669 * subsystem)
670 */
671 CurDesc[FragmentNumber++].DataBufferPtrLow =
672 pci_map_single(pAdapter->pdev,
673 pPacket->data +
674 ((pPacket->len -
675 pPacket->data_len) / 2),
676 ((pPacket->len -
677 pPacket->data_len) / 2),
678 PCI_DMA_TODEVICE);
679 }
680 } else {
681 DBG_TX(et131x_dbginfo,
682 "Got packet of length %d,"
683 "filling desc entry %d\n"
684 "TCB: 0x%p\n",
685 pFragList[loopIndex].size,
686 pAdapter->TxRing.txDmaReadyToSend.bits.val,
687 pMpTcb);
688
689 CurDesc[FragmentNumber].DataBufferPtrHigh = 0;
690
691 CurDesc[FragmentNumber].word2.bits.length_in_bytes =
692 pFragList[loopIndex - 1].size;
693
694 /* NOTE: Here, the dma_addr_t returned from
695 * pci_map_page() is implicitly cast as a uint32_t.
696 * Although dma_addr_t can be 64-bit, the address
697 * returned by pci_map_page() is always 32-bit
698 * addressable (as defined by the pci/dma subsystem)
699 */
700 CurDesc[FragmentNumber++].DataBufferPtrLow =
701 pci_map_page(pAdapter->pdev,
702 pFragList[loopIndex - 1].page,
703 pFragList[loopIndex - 1].page_offset,
704 pFragList[loopIndex - 1].size,
705 PCI_DMA_TODEVICE);
706 }
707 }
708
709 if (FragmentNumber == 0) {
710 DBG_WARNING(et131x_dbginfo, "No. frags is 0\n");
711 return -EIO;
712 }
713
714 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_1000MBPS) {
715 if (++pAdapter->TxRing.TxPacketsSinceLastinterrupt ==
716 pAdapter->RegistryTxNumBuffers) {
717 CurDesc[FragmentNumber - 1].word3.value = 0x5;
718 pAdapter->TxRing.TxPacketsSinceLastinterrupt = 0;
719 } else {
720 CurDesc[FragmentNumber - 1].word3.value = 0x1;
721 }
722 } else {
723 CurDesc[FragmentNumber - 1].word3.value = 0x5;
724 }
725
726 CurDesc[0].word3.bits.f = 1;
727
728 pMpTcb->WrIndexStart = pAdapter->TxRing.txDmaReadyToSend;
729 pMpTcb->PacketStaleCount = 0;
730
731 spin_lock_irqsave(&pAdapter->SendHWLock, lockflags1);
732
733 iThisCopy =
734 NUM_DESC_PER_RING_TX - pAdapter->TxRing.txDmaReadyToSend.bits.val;
735
736 if (iThisCopy >= FragmentNumber) {
737 iRemainder = 0;
738 iThisCopy = FragmentNumber;
739 } else {
740 iRemainder = FragmentNumber - iThisCopy;
741 }
742
743 memcpy(pAdapter->TxRing.pTxDescRingVa +
744 pAdapter->TxRing.txDmaReadyToSend.bits.val, CurDesc,
745 sizeof(TX_DESC_ENTRY_t) * iThisCopy);
746
747 pAdapter->TxRing.txDmaReadyToSend.bits.val += iThisCopy;
748
749 if ((pAdapter->TxRing.txDmaReadyToSend.bits.val == 0) ||
750 (pAdapter->TxRing.txDmaReadyToSend.bits.val ==
751 NUM_DESC_PER_RING_TX)) {
752 if (pAdapter->TxRing.txDmaReadyToSend.bits.wrap) {
753 pAdapter->TxRing.txDmaReadyToSend.value = 0;
754 } else {
755 pAdapter->TxRing.txDmaReadyToSend.value = 0x400;
756 }
757 }
758
759 if (iRemainder) {
760 memcpy(pAdapter->TxRing.pTxDescRingVa,
761 CurDesc + iThisCopy,
762 sizeof(TX_DESC_ENTRY_t) * iRemainder);
763
764 pAdapter->TxRing.txDmaReadyToSend.bits.val += iRemainder;
765 }
766
767 if (pAdapter->TxRing.txDmaReadyToSend.bits.val == 0) {
768 if (pAdapter->TxRing.txDmaReadyToSend.value) {
769 pMpTcb->WrIndex.value = NUM_DESC_PER_RING_TX - 1;
770 } else {
771 pMpTcb->WrIndex.value =
772 0x400 | (NUM_DESC_PER_RING_TX - 1);
773 }
774 } else {
775 pMpTcb->WrIndex.value =
776 pAdapter->TxRing.txDmaReadyToSend.value - 1;
777 }
778
779 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags2);
780
781 if (pAdapter->TxRing.CurrSendTail) {
782 pAdapter->TxRing.CurrSendTail->Next = pMpTcb;
783 } else {
784 pAdapter->TxRing.CurrSendHead = pMpTcb;
785 }
786
787 pAdapter->TxRing.CurrSendTail = pMpTcb;
788
789 DBG_ASSERT(pMpTcb->Next == NULL);
790
791 pAdapter->TxRing.nBusySend++;
792
793 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags2);
794
795 /* Write the new write pointer back to the device. */
796 writel(pAdapter->TxRing.txDmaReadyToSend.value,
797 &pAdapter->CSRAddress->txdma.service_request.value);
798
799 /* For Gig only, we use Tx Interrupt coalescing. Enable the software
800 * timer to wake us up if this packet isn't followed by N more.
801 */
802 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_1000MBPS) {
803 writel(pAdapter->RegistryTxTimeInterval * NANO_IN_A_MICRO,
804 &pAdapter->CSRAddress->global.watchdog_timer);
805 }
806
807 spin_unlock_irqrestore(&pAdapter->SendHWLock, lockflags1);
808
809 DBG_TX_LEAVE(et131x_dbginfo);
810 return 0;
811}
812
813/*
814 * NOTE: For now, keep this older version of NICSendPacket around for
815 * reference, even though it's not used
816 */
817#if 0
818
819/**
820 * NICSendPacket - NIC specific send handler.
821 * @pAdapter: pointer to our adapter
822 * @pMpTcb: pointer to MP_TCB
823 *
824 * Returns 0 on succes, errno on failure.
825 *
826 * This version of the send routine is designed for version A silicon.
827 * Assumption - Send spinlock has been acquired.
828 */
829static int nic_send_packet(struct et131x_adapter *pAdapter, PMP_TCB pMpTcb)
830{
831 uint32_t loopIndex, fragIndex, loopEnd;
832 uint32_t iSplitFirstElement = 0;
833 uint32_t SegmentSize = 0;
834 TX_DESC_ENTRY_t CurDesc;
835 TX_DESC_ENTRY_t *CurDescPostCopy = NULL;
836 uint32_t SlotsAvailable;
837 DMA10W_t ServiceComplete;
838 unsigned int lockflags1, lockflags2;
839 struct sk_buff *pPacket = pMpTcb->Packet;
840 uint32_t FragListCount = skb_shinfo(pPacket)->nr_frags + 1;
841 struct skb_frag_struct *pFragList = &skb_shinfo(pPacket)->frags[0];
842
843 DBG_TX_ENTER(et131x_dbginfo);
844
845 ServiceComplete.value =
846 readl(&pAdapter->CSRAddress->txdma.NewServiceComplete.value);
847
848 /*
849 * Attempt to fix TWO hardware bugs:
850 * 1) NEVER write an odd number of descriptors.
851 * 2) If packet length is less than NIC_MIN_PACKET_SIZE, then pad the
852 * packet to NIC_MIN_PACKET_SIZE bytes by adding a new last
853 * descriptor IN HALF DUPLEX MODE ONLY
854 * NOTE that (2) interacts with (1). If the packet is less than
855 * NIC_MIN_PACKET_SIZE bytes then we will append a descriptor.
856 * Therefore if it is even now, it will eventually end up odd, and
857 * so will need adjusting.
858 *
859 * VLAN tags get involved since VLAN tags add another one or two
860 * segments.
861 */
862 DBG_TX(et131x_dbginfo,
863 "pMpTcb->PacketLength: %d\n", pMpTcb->PacketLength);
864
865 if ((pAdapter->uiDuplexMode == 0)
866 && (pMpTcb->PacketLength < NIC_MIN_PACKET_SIZE)) {
867 DBG_TX(et131x_dbginfo,
868 "HALF DUPLEX mode AND len < MIN_PKT_SIZE\n");
869 if ((FragListCount & 0x1) == 0) {
870 DBG_TX(et131x_dbginfo,
871 "Even number of descs, split 1st elem\n");
872 iSplitFirstElement = 1;
873 //SegmentSize = pFragList[0].size / 2;
874 SegmentSize = (pPacket->len - pPacket->data_len) / 2;
875 }
876 } else if (FragListCount & 0x1) {
877 DBG_TX(et131x_dbginfo, "Odd number of descs, split 1st elem\n");
878
879 iSplitFirstElement = 1;
880 //SegmentSize = pFragList[0].size / 2;
881 SegmentSize = (pPacket->len - pPacket->data_len) / 2;
882 }
883
884 spin_lock_irqsave(&pAdapter->SendHWLock, lockflags1);
885
886 if (pAdapter->TxRing.txDmaReadyToSend.bits.serv_req_wrap ==
887 ServiceComplete.bits.serv_cpl_wrap) {
888 /* The ring hasn't wrapped. Slots available should be
889 * (RING_SIZE) - the difference between the two pointers.
890 */
891 SlotsAvailable = NUM_DESC_PER_RING_TX -
892 (pAdapter->TxRing.txDmaReadyToSend.bits.serv_req -
893 ServiceComplete.bits.serv_cpl);
894 } else {
895 /* The ring has wrapped. Slots available should be the
896 * difference between the two pointers.
897 */
898 SlotsAvailable = ServiceComplete.bits.serv_cpl -
899 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req;
900 }
901
902 if ((FragListCount + iSplitFirstElement) > SlotsAvailable) {
903 DBG_WARNING(et131x_dbginfo,
904 "Not Enough Space in Tx Desc Ring\n");
905 spin_unlock_irqrestore(&pAdapter->SendHWLock, lockflags1);
906 return -ENOMEM;
907 }
908
909 loopEnd = (FragListCount) + iSplitFirstElement;
910 fragIndex = 0;
911
912 DBG_TX(et131x_dbginfo,
913 "TCB : 0x%p\n"
914 "Packet (SKB) : 0x%p\t Packet->len: %d\t Packet->data_len: %d\n"
915 "FragListCount : %d\t iSplitFirstElement: %d\t loopEnd:%d\n",
916 pMpTcb,
917 pPacket, pPacket->len, pPacket->data_len,
918 FragListCount, iSplitFirstElement, loopEnd);
919
920 for (loopIndex = 0; loopIndex < loopEnd; loopIndex++) {
921 if (loopIndex > iSplitFirstElement) {
922 fragIndex++;
923 }
924
925 DBG_TX(et131x_dbginfo,
926 "In loop, loopIndex: %d\t fragIndex: %d\n", loopIndex,
927 fragIndex);
928
929 /* If there is something in this element, let's get a
930 * descriptor from the ring and get the necessary data
931 */
932 DBG_TX(et131x_dbginfo,
933 "Packet Length %d,"
934 "filling desc entry %d\n",
935 pPacket->len,
936 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req);
937
938 // NOTE - Should we do a paranoia check here to make sure the fragment
939 // actually has a length? It's HIGHLY unlikely the fragment would
940 // contain no data...
941 if (1) {
942 // NOTE - Currently always getting 32-bit addrs, and dma_addr_t is
943 // only 32-bit, so leave "high" ptr value out for now
944 CurDesc.DataBufferPtrHigh = 0;
945
946 CurDesc.word2.value = 0;
947 CurDesc.word3.value = 0;
948
949 if (fragIndex == 0) {
950 if (iSplitFirstElement) {
951 DBG_TX(et131x_dbginfo,
952 "Split first element: YES\n");
953
954 if (loopIndex == 0) {
955 DBG_TX(et131x_dbginfo,
956 "Got fragment of length %d, fragIndex: %d\n",
957 pPacket->len -
958 pPacket->data_len,
959 fragIndex);
960 DBG_TX(et131x_dbginfo,
961 "SegmentSize: %d\n",
962 SegmentSize);
963
964 CurDesc.word2.bits.
965 length_in_bytes =
966 SegmentSize;
967 CurDesc.DataBufferPtrLow =
968 pci_map_single(pAdapter->
969 pdev,
970 pPacket->
971 data,
972 SegmentSize,
973 PCI_DMA_TODEVICE);
974 DBG_TX(et131x_dbginfo,
975 "pci_map_single() returns: 0x%08x\n",
976 CurDesc.
977 DataBufferPtrLow);
978 } else {
979 DBG_TX(et131x_dbginfo,
980 "Got fragment of length %d, fragIndex: %d\n",
981 pPacket->len -
982 pPacket->data_len,
983 fragIndex);
984 DBG_TX(et131x_dbginfo,
985 "Leftover Size: %d\n",
986 (pPacket->len -
987 pPacket->data_len -
988 SegmentSize));
989
990 CurDesc.word2.bits.
991 length_in_bytes =
992 ((pPacket->len -
993 pPacket->data_len) -
994 SegmentSize);
995 CurDesc.DataBufferPtrLow =
996 pci_map_single(pAdapter->
997 pdev,
998 (pPacket->
999 data +
1000 SegmentSize),
1001 (pPacket->
1002 len -
1003 pPacket->
1004 data_len -
1005 SegmentSize),
1006 PCI_DMA_TODEVICE);
1007 DBG_TX(et131x_dbginfo,
1008 "pci_map_single() returns: 0x%08x\n",
1009 CurDesc.
1010 DataBufferPtrLow);
1011 }
1012 } else {
1013 DBG_TX(et131x_dbginfo,
1014 "Split first element: NO\n");
1015
1016 CurDesc.word2.bits.length_in_bytes =
1017 pPacket->len - pPacket->data_len;
1018
1019 CurDesc.DataBufferPtrLow =
1020 pci_map_single(pAdapter->pdev,
1021 pPacket->data,
1022 (pPacket->len -
1023 pPacket->data_len),
1024 PCI_DMA_TODEVICE);
1025 DBG_TX(et131x_dbginfo,
1026 "pci_map_single() returns: 0x%08x\n",
1027 CurDesc.DataBufferPtrLow);
1028 }
1029 } else {
1030
1031 CurDesc.word2.bits.length_in_bytes =
1032 pFragList[fragIndex - 1].size;
1033 CurDesc.DataBufferPtrLow =
1034 pci_map_page(pAdapter->pdev,
1035 pFragList[fragIndex - 1].page,
1036 pFragList[fragIndex -
1037 1].page_offset,
1038 pFragList[fragIndex - 1].size,
1039 PCI_DMA_TODEVICE);
1040 DBG_TX(et131x_dbginfo,
1041 "pci_map_page() returns: 0x%08x\n",
1042 CurDesc.DataBufferPtrLow);
1043 }
1044
1045 if (loopIndex == 0) {
1046 /* This is the first descriptor of the packet
1047 *
1048 * Set the "f" bit to indicate this is the
1049 * first descriptor in the packet.
1050 */
1051 DBG_TX(et131x_dbginfo,
1052 "This is our FIRST descriptor\n");
1053 CurDesc.word3.bits.f = 1;
1054
1055 pMpTcb->WrIndexStart =
1056 pAdapter->TxRing.txDmaReadyToSend;
1057 }
1058
1059 if ((loopIndex == (loopEnd - 1)) &&
1060 (pAdapter->uiDuplexMode ||
1061 (pMpTcb->PacketLength >= NIC_MIN_PACKET_SIZE))) {
1062 /* This is the Last descriptor of the packet */
1063 DBG_TX(et131x_dbginfo,
1064 "THIS is our LAST descriptor\n");
1065
1066 if (pAdapter->uiLinkSpeed ==
1067 TRUEPHY_SPEED_1000MBPS) {
1068 if (++pAdapter->TxRing.
1069 TxPacketsSinceLastinterrupt >=
1070 pAdapter->RegistryTxNumBuffers) {
1071 CurDesc.word3.value = 0x5;
1072 pAdapter->TxRing.
1073 TxPacketsSinceLastinterrupt
1074 = 0;
1075 } else {
1076 CurDesc.word3.value = 0x1;
1077 }
1078 } else {
1079 CurDesc.word3.value = 0x5;
1080 }
1081
1082 /* Following index will be used during freeing
1083 * of packet
1084 */
1085 pMpTcb->WrIndex =
1086 pAdapter->TxRing.txDmaReadyToSend;
1087 pMpTcb->PacketStaleCount = 0;
1088 }
1089
1090 /* Copy the descriptor (filled above) into the
1091 * descriptor ring at the next free entry. Advance
1092 * the "next free entry" variable
1093 */
1094 memcpy(pAdapter->TxRing.pTxDescRingVa +
1095 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req,
1096 &CurDesc, sizeof(TX_DESC_ENTRY_t));
1097
1098 CurDescPostCopy =
1099 pAdapter->TxRing.pTxDescRingVa +
1100 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req;
1101
1102 DBG_TX(et131x_dbginfo,
1103 "CURRENT DESCRIPTOR\n"
1104 "\tAddress : 0x%p\n"
1105 "\tDataBufferPtrHigh : 0x%08x\n"
1106 "\tDataBufferPtrLow : 0x%08x\n"
1107 "\tword2 : 0x%08x\n"
1108 "\tword3 : 0x%08x\n",
1109 CurDescPostCopy,
1110 CurDescPostCopy->DataBufferPtrHigh,
1111 CurDescPostCopy->DataBufferPtrLow,
1112 CurDescPostCopy->word2.value,
1113 CurDescPostCopy->word3.value);
1114
1115 if (++pAdapter->TxRing.txDmaReadyToSend.bits.serv_req >=
1116 NUM_DESC_PER_RING_TX) {
1117 if (pAdapter->TxRing.txDmaReadyToSend.bits.
1118 serv_req_wrap) {
1119 pAdapter->TxRing.txDmaReadyToSend.
1120 value = 0;
1121 } else {
1122 pAdapter->TxRing.txDmaReadyToSend.
1123 value = 0x400;
1124 }
1125 }
1126 }
1127 }
1128
1129 if (pAdapter->uiDuplexMode == 0 &&
1130 pMpTcb->PacketLength < NIC_MIN_PACKET_SIZE) {
1131 // NOTE - Same 32/64-bit issue as above...
1132 CurDesc.DataBufferPtrHigh = 0x0;
1133 CurDesc.DataBufferPtrLow = pAdapter->TxRing.pTxDummyBlkPa;
1134 CurDesc.word2.value = 0;
1135
1136 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_1000MBPS) {
1137 if (++pAdapter->TxRing.TxPacketsSinceLastinterrupt >=
1138 pAdapter->RegistryTxNumBuffers) {
1139 CurDesc.word3.value = 0x5;
1140 pAdapter->TxRing.TxPacketsSinceLastinterrupt =
1141 0;
1142 } else {
1143 CurDesc.word3.value = 0x1;
1144 }
1145 } else {
1146 CurDesc.word3.value = 0x5;
1147 }
1148
1149 CurDesc.word2.bits.length_in_bytes =
1150 NIC_MIN_PACKET_SIZE - pMpTcb->PacketLength;
1151
1152 pMpTcb->WrIndex = pAdapter->TxRing.txDmaReadyToSend;
1153
1154 memcpy(pAdapter->TxRing.pTxDescRingVa +
1155 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req,
1156 &CurDesc, sizeof(TX_DESC_ENTRY_t));
1157
1158 CurDescPostCopy =
1159 pAdapter->TxRing.pTxDescRingVa +
1160 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req;
1161
1162 DBG_TX(et131x_dbginfo,
1163 "CURRENT DESCRIPTOR\n"
1164 "\tAddress : 0x%p\n"
1165 "\tDataBufferPtrHigh : 0x%08x\n"
1166 "\tDataBufferPtrLow : 0x%08x\n"
1167 "\tword2 : 0x%08x\n"
1168 "\tword3 : 0x%08x\n",
1169 CurDescPostCopy,
1170 CurDescPostCopy->DataBufferPtrHigh,
1171 CurDescPostCopy->DataBufferPtrLow,
1172 CurDescPostCopy->word2.value,
1173 CurDescPostCopy->word3.value);
1174
1175 if (++pAdapter->TxRing.txDmaReadyToSend.bits.serv_req >=
1176 NUM_DESC_PER_RING_TX) {
1177 if (pAdapter->TxRing.txDmaReadyToSend.bits.
1178 serv_req_wrap) {
1179 pAdapter->TxRing.txDmaReadyToSend.value = 0;
1180 } else {
1181 pAdapter->TxRing.txDmaReadyToSend.value = 0x400;
1182 }
1183 }
1184
1185 DBG_TX(et131x_dbginfo, "Padding descriptor %d by %d bytes\n",
1186 //pAdapter->TxRing.txDmaReadyToSend.value,
1187 pAdapter->TxRing.txDmaReadyToSend.bits.serv_req,
1188 NIC_MIN_PACKET_SIZE - pMpTcb->PacketLength);
1189 }
1190
1191 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags2);
1192
1193 if (pAdapter->TxRing.CurrSendTail) {
1194 pAdapter->TxRing.CurrSendTail->Next = pMpTcb;
1195 } else {
1196 pAdapter->TxRing.CurrSendHead = pMpTcb;
1197 }
1198
1199 pAdapter->TxRing.CurrSendTail = pMpTcb;
1200
1201 DBG_ASSERT(pMpTcb->Next == NULL);
1202
1203 pAdapter->TxRing.nBusySend++;
1204
1205 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags2);
1206
1207 /* Write the new write pointer back to the device. */
1208 writel(pAdapter->TxRing.txDmaReadyToSend.value,
1209 &pAdapter->CSRAddress->txdma.service_request.value);
1210
1211#ifdef CONFIG_ET131X_DEBUG
1212 DumpDeviceBlock(DBG_TX_ON, pAdapter, 1);
1213#endif
1214
1215 /* For Gig only, we use Tx Interrupt coalescing. Enable the software
1216 * timer to wake us up if this packet isn't followed by N more.
1217 */
1218 if (pAdapter->uiLinkSpeed == TRUEPHY_SPEED_1000MBPS) {
1219 writel(pAdapter->RegistryTxTimeInterval * NANO_IN_A_MICRO,
1220 &pAdapter->CSRAddress->global.watchdog_timer);
1221 }
1222
1223 spin_unlock_irqrestore(&pAdapter->SendHWLock, lockflags1);
1224
1225 DBG_TX_LEAVE(et131x_dbginfo);
1226 return 0;
1227}
1228
1229#endif
1230
1231/**
1232 * et131x_free_send_packet - Recycle a MP_TCB, complete the packet if necessary
1233 * @pAdapter: pointer to our adapter
1234 * @pMpTcb: pointer to MP_TCB
1235 *
1236 * Assumption - Send spinlock has been acquired
1237 */
1238__inline void et131x_free_send_packet(struct et131x_adapter *pAdapter, PMP_TCB pMpTcb)
1239{
1240 unsigned long lockflags;
1241 TX_DESC_ENTRY_t *desc = NULL;
1242 struct net_device_stats *stats = &pAdapter->net_stats;
1243
1244 if (MP_TEST_FLAG(pMpTcb, fMP_DEST_BROAD)) {
1245 atomic_inc(&pAdapter->Stats.brdcstxmt);
1246 } else if (MP_TEST_FLAG(pMpTcb, fMP_DEST_MULTI)) {
1247 atomic_inc(&pAdapter->Stats.multixmt);
1248 } else {
1249 atomic_inc(&pAdapter->Stats.unixmt);
1250 }
1251
1252 if (pMpTcb->Packet) {
1253 stats->tx_bytes += pMpTcb->Packet->len;
1254
1255 /* Iterate through the TX descriptors on the ring
1256 * corresponding to this packet and umap the fragments
1257 * they point to
1258 */
1259 DBG_TX(et131x_dbginfo,
1260 "Unmap descriptors Here\n"
1261 "TCB : 0x%p\n"
1262 "TCB Next : 0x%p\n"
1263 "TCB PacketLength : %d\n"
1264 "TCB WrIndex.value : 0x%08x\n"
1265 "TCB WrIndex.bits.val : %d\n"
1266 "TCB WrIndex.value : 0x%08x\n"
1267 "TCB WrIndex.bits.val : %d\n",
1268 pMpTcb,
1269 pMpTcb->Next,
1270 pMpTcb->PacketLength,
1271 pMpTcb->WrIndexStart.value,
1272 pMpTcb->WrIndexStart.bits.val,
1273 pMpTcb->WrIndex.value,
1274 pMpTcb->WrIndex.bits.val);
1275
1276 do {
1277 desc =
1278 (TX_DESC_ENTRY_t *) (pAdapter->TxRing.
1279 pTxDescRingVa +
1280 pMpTcb->WrIndexStart.bits.val);
1281
1282 DBG_TX(et131x_dbginfo,
1283 "CURRENT DESCRIPTOR\n"
1284 "\tAddress : 0x%p\n"
1285 "\tDataBufferPtrHigh : 0x%08x\n"
1286 "\tDataBufferPtrLow : 0x%08x\n"
1287 "\tword2 : 0x%08x\n"
1288 "\tword3 : 0x%08x\n",
1289 desc,
1290 desc->DataBufferPtrHigh,
1291 desc->DataBufferPtrLow,
1292 desc->word2.value,
1293 desc->word3.value);
1294
1295 pci_unmap_single(pAdapter->pdev,
1296 desc->DataBufferPtrLow,
1297 desc->word2.value, PCI_DMA_TODEVICE);
1298
1299 if (++pMpTcb->WrIndexStart.bits.val >=
1300 NUM_DESC_PER_RING_TX) {
1301 if (pMpTcb->WrIndexStart.bits.wrap) {
1302 pMpTcb->WrIndexStart.value = 0;
1303 } else {
1304 pMpTcb->WrIndexStart.value = 0x400;
1305 }
1306 }
1307 }
1308 while (desc != (pAdapter->TxRing.pTxDescRingVa +
1309 pMpTcb->WrIndex.bits.val));
1310
1311 DBG_TX(et131x_dbginfo,
1312 "Free Packet (SKB) : 0x%p\n", pMpTcb->Packet);
1313
1314 dev_kfree_skb_any(pMpTcb->Packet);
1315 }
1316
1317 memset(pMpTcb, 0, sizeof(MP_TCB));
1318
1319 /* Add the TCB to the Ready Q */
1320 spin_lock_irqsave(&pAdapter->TCBReadyQLock, lockflags);
1321
1322 pAdapter->Stats.opackets++;
1323
1324 if (pAdapter->TxRing.TCBReadyQueueTail) {
1325 pAdapter->TxRing.TCBReadyQueueTail->Next = pMpTcb;
1326 } else {
1327 /* Apparently ready Q is empty. */
1328 pAdapter->TxRing.TCBReadyQueueHead = pMpTcb;
1329 }
1330
1331 pAdapter->TxRing.TCBReadyQueueTail = pMpTcb;
1332
1333 spin_unlock_irqrestore(&pAdapter->TCBReadyQLock, lockflags);
1334
1335 DBG_ASSERT(pAdapter->TxRing.nBusySend >= 0);
1336}
1337
1338/**
1339 * et131x_free_busy_send_packets - Free and complete the stopped active sends
1340 * @pAdapter: pointer to our adapter
1341 *
1342 * Assumption - Send spinlock has been acquired
1343 */
1344void et131x_free_busy_send_packets(struct et131x_adapter *pAdapter)
1345{
1346 PMP_TCB pMpTcb;
1347 struct list_head *pEntry;
1348 struct sk_buff *pPacket = NULL;
1349 unsigned long lockflags;
1350 uint32_t FreeCounter = 0;
1351
1352 DBG_ENTER(et131x_dbginfo);
1353
1354 while (!list_empty(&pAdapter->TxRing.SendWaitQueue)) {
1355 spin_lock_irqsave(&pAdapter->SendWaitLock, lockflags);
1356
1357 pAdapter->TxRing.nWaitSend--;
1358 spin_unlock_irqrestore(&pAdapter->SendWaitLock, lockflags);
1359
1360 pEntry = pAdapter->TxRing.SendWaitQueue.next;
1361
1362 pPacket = NULL;
1363 }
1364
1365 pAdapter->TxRing.nWaitSend = 0;
1366
1367 /* Any packets being sent? Check the first TCB on the send list */
1368 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags);
1369
1370 pMpTcb = pAdapter->TxRing.CurrSendHead;
1371
1372 while ((pMpTcb != NULL) && (FreeCounter < NUM_TCB)) {
1373 PMP_TCB pNext = pMpTcb->Next;
1374
1375 pAdapter->TxRing.CurrSendHead = pNext;
1376
1377 if (pNext == NULL) {
1378 pAdapter->TxRing.CurrSendTail = NULL;
1379 }
1380
1381 pAdapter->TxRing.nBusySend--;
1382
1383 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags);
1384
1385 DBG_VERBOSE(et131x_dbginfo, "pMpTcb = 0x%p\n", pMpTcb);
1386
1387 FreeCounter++;
1388 MP_FREE_SEND_PACKET_FUN(pAdapter, pMpTcb);
1389
1390 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags);
1391
1392 pMpTcb = pAdapter->TxRing.CurrSendHead;
1393 }
1394
1395 if (FreeCounter == NUM_TCB) {
1396 DBG_ERROR(et131x_dbginfo,
1397 "MpFreeBusySendPackets exitted loop for a bad reason\n");
1398 BUG();
1399 }
1400
1401 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags);
1402
1403 pAdapter->TxRing.nBusySend = 0;
1404
1405 DBG_LEAVE(et131x_dbginfo);
1406}
1407
1408/**
1409 * et131x_handle_send_interrupt - Interrupt handler for sending processing
1410 * @pAdapter: pointer to our adapter
1411 *
1412 * Re-claim the send resources, complete sends and get more to send from
1413 * the send wait queue.
1414 *
1415 * Assumption - Send spinlock has been acquired
1416 */
1417void et131x_handle_send_interrupt(struct et131x_adapter *pAdapter)
1418{
1419 DBG_TX_ENTER(et131x_dbginfo);
1420
1421 /* Mark as completed any packets which have been sent by the device. */
1422 et131x_update_tcb_list(pAdapter);
1423
1424 /* If we queued any transmits because we didn't have any TCBs earlier,
1425 * dequeue and send those packets now, as long as we have free TCBs.
1426 */
1427 et131x_check_send_wait_list(pAdapter);
1428
1429 DBG_TX_LEAVE(et131x_dbginfo);
1430}
1431
1432/**
1433 * et131x_update_tcb_list - Helper routine for Send Interrupt handler
1434 * @pAdapter: pointer to our adapter
1435 *
1436 * Re-claims the send resources and completes sends. Can also be called as
1437 * part of the NIC send routine when the "ServiceComplete" indication has
1438 * wrapped.
1439 */
1440static void et131x_update_tcb_list(struct et131x_adapter *pAdapter)
1441{
1442 unsigned long lockflags;
1443 DMA10W_t ServiceComplete;
1444 PMP_TCB pMpTcb;
1445
1446 ServiceComplete.value =
1447 readl(&pAdapter->CSRAddress->txdma.NewServiceComplete.value);
1448
1449 /* Has the ring wrapped? Process any descriptors that do not have
1450 * the same "wrap" indicator as the current completion indicator
1451 */
1452 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags);
1453
1454 pMpTcb = pAdapter->TxRing.CurrSendHead;
1455 while (pMpTcb &&
1456 ServiceComplete.bits.wrap != pMpTcb->WrIndex.bits.wrap &&
1457 ServiceComplete.bits.val < pMpTcb->WrIndex.bits.val) {
1458 pAdapter->TxRing.nBusySend--;
1459 pAdapter->TxRing.CurrSendHead = pMpTcb->Next;
1460 if (pMpTcb->Next == NULL) {
1461 pAdapter->TxRing.CurrSendTail = NULL;
1462 }
1463
1464 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags);
1465 MP_FREE_SEND_PACKET_FUN(pAdapter, pMpTcb);
1466 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags);
1467
1468 /* Goto the next packet */
1469 pMpTcb = pAdapter->TxRing.CurrSendHead;
1470 }
1471 while (pMpTcb &&
1472 ServiceComplete.bits.wrap == pMpTcb->WrIndex.bits.wrap &&
1473 ServiceComplete.bits.val > pMpTcb->WrIndex.bits.val) {
1474 pAdapter->TxRing.nBusySend--;
1475 pAdapter->TxRing.CurrSendHead = pMpTcb->Next;
1476 if (pMpTcb->Next == NULL) {
1477 pAdapter->TxRing.CurrSendTail = NULL;
1478 }
1479
1480 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags);
1481 MP_FREE_SEND_PACKET_FUN(pAdapter, pMpTcb);
1482 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags);
1483
1484 /* Goto the next packet */
1485 pMpTcb = pAdapter->TxRing.CurrSendHead;
1486 }
1487
1488 /* Wake up the queue when we hit a low-water mark */
1489 if (pAdapter->TxRing.nBusySend <= (NUM_TCB / 3)) {
1490 netif_wake_queue(pAdapter->netdev);
1491 }
1492
1493 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags);
1494}
1495
1496/**
1497 * et131x_check_send_wait_list - Helper routine for the interrupt handler
1498 * @pAdapter: pointer to our adapter
1499 *
1500 * Takes packets from the send wait queue and posts them to the device (if
1501 * room available).
1502 */
1503static void et131x_check_send_wait_list(struct et131x_adapter *pAdapter)
1504{
1505 unsigned long lockflags;
1506
1507 spin_lock_irqsave(&pAdapter->SendWaitLock, lockflags);
1508
1509 while (!list_empty(&pAdapter->TxRing.SendWaitQueue) &&
1510 MP_TCB_RESOURCES_AVAILABLE(pAdapter)) {
1511 struct list_head *pEntry;
1512
1513 DBG_VERBOSE(et131x_dbginfo, "Tx packets on the wait queue\n");
1514
1515 pEntry = pAdapter->TxRing.SendWaitQueue.next;
1516
1517 pAdapter->TxRing.nWaitSend--;
1518
1519 DBG_WARNING(et131x_dbginfo,
1520 "MpHandleSendInterrupt - sent a queued pkt. Waiting %d\n",
1521 pAdapter->TxRing.nWaitSend);
1522 }
1523
1524 spin_unlock_irqrestore(&pAdapter->SendWaitLock, lockflags);
1525}
diff --git a/drivers/staging/et131x/et1310_tx.h b/drivers/staging/et131x/et1310_tx.h
new file mode 100644
index 00000000000..2819c7843d2
--- /dev/null
+++ b/drivers/staging/et131x/et1310_tx.h
@@ -0,0 +1,242 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et1310_tx.h - Defines, structs, enums, prototypes, etc. pertaining to data
12 * transmission.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET1310_TX_H__
60#define __ET1310_TX_H__
61
62
63/* Typedefs for Tx Descriptor Ring */
64
65/*
66 * TXDESC_WORD2_t structure holds part of the control bits in the Tx Descriptor
67 * ring for the ET-1310
68 */
69typedef union _txdesc_word2_t {
70 u32 value;
71 struct {
72#ifdef _BIT_FIELDS_HTOL
73 u32 vlan_prio:3; // bits 29-31(VLAN priority)
74 u32 vlan_cfi:1; // bit 28(cfi)
75 u32 vlan_tag:12; // bits 16-27(VLAN tag)
76 u32 length_in_bytes:16; // bits 0-15(packet length)
77#else
78 u32 length_in_bytes:16; // bits 0-15(packet length)
79 u32 vlan_tag:12; // bits 16-27(VLAN tag)
80 u32 vlan_cfi:1; // bit 28(cfi)
81 u32 vlan_prio:3; // bits 29-31(VLAN priority)
82#endif /* _BIT_FIELDS_HTOL */
83 } bits;
84} TXDESC_WORD2_t, *PTXDESC_WORD2_t;
85
86/*
87 * TXDESC_WORD3_t structure holds part of the control bits in the Tx Descriptor
88 * ring for the ET-1310
89 */
90typedef union _txdesc_word3_t {
91 u32 value;
92 struct {
93#ifdef _BIT_FIELDS_HTOL
94 u32 unused:17; // bits 15-31
95 u32 udpa:1; // bit 14(UDP checksum assist)
96 u32 tcpa:1; // bit 13(TCP checksum assist)
97 u32 ipa:1; // bit 12(IP checksum assist)
98 u32 vlan:1; // bit 11(append VLAN tag)
99 u32 hp:1; // bit 10(Packet is a Huge packet)
100 u32 pp:1; // bit 9(pad packet)
101 u32 mac:1; // bit 8(MAC override)
102 u32 crc:1; // bit 7(append CRC)
103 u32 e:1; // bit 6(Tx frame has error)
104 u32 pf:1; // bit 5(send pause frame)
105 u32 bp:1; // bit 4(Issue half-duplex backpressure (XON/XOFF)
106 u32 cw:1; // bit 3(Control word - no packet data)
107 u32 ir:1; // bit 2(interrupt the processor when this pkt sent)
108 u32 f:1; // bit 1(first packet in the sequence)
109 u32 l:1; // bit 0(last packet in the sequence)
110#else
111 u32 l:1; // bit 0(last packet in the sequence)
112 u32 f:1; // bit 1(first packet in the sequence)
113 u32 ir:1; // bit 2(interrupt the processor when this pkt sent)
114 u32 cw:1; // bit 3(Control word - no packet data)
115 u32 bp:1; // bit 4(Issue half-duplex backpressure (XON/XOFF)
116 u32 pf:1; // bit 5(send pause frame)
117 u32 e:1; // bit 6(Tx frame has error)
118 u32 crc:1; // bit 7(append CRC)
119 u32 mac:1; // bit 8(MAC override)
120 u32 pp:1; // bit 9(pad packet)
121 u32 hp:1; // bit 10(Packet is a Huge packet)
122 u32 vlan:1; // bit 11(append VLAN tag)
123 u32 ipa:1; // bit 12(IP checksum assist)
124 u32 tcpa:1; // bit 13(TCP checksum assist)
125 u32 udpa:1; // bit 14(UDP checksum assist)
126 u32 unused:17; // bits 15-31
127#endif /* _BIT_FIELDS_HTOL */
128 } bits;
129} TXDESC_WORD3_t, *PTXDESC_WORD3_t;
130
131/* TX_DESC_ENTRY_t is sructure representing each descriptor on the ring */
132typedef struct _tx_desc_entry_t {
133 u32 DataBufferPtrHigh;
134 u32 DataBufferPtrLow;
135 TXDESC_WORD2_t word2; // control words how to xmit the
136 TXDESC_WORD3_t word3; // data (detailed above)
137} TX_DESC_ENTRY_t, *PTX_DESC_ENTRY_t;
138
139
140/* Typedefs for Tx DMA engine status writeback */
141
142/*
143 * TX_STATUS_BLOCK_t is sructure representing the status of the Tx DMA engine
144 * it sits in free memory, and is pointed to by 0x101c / 0x1020
145 */
146typedef union _tx_status_block_t {
147 u32 value;
148 struct {
149#ifdef _BIT_FIELDS_HTOL
150 u32 unused:21; // bits 11-31
151 u32 serv_cpl_wrap:1; // bit 10
152 u32 serv_cpl:10; // bits 0-9
153#else
154 u32 serv_cpl:10; // bits 0-9
155 u32 serv_cpl_wrap:1; // bit 10
156 u32 unused:21; // bits 11-31
157#endif
158 } bits;
159} TX_STATUS_BLOCK_t, *PTX_STATUS_BLOCK_t;
160
161/* TCB (Transmit Control Block) */
162typedef struct _MP_TCB {
163 struct _MP_TCB *Next;
164 u32 Flags;
165 u32 Count;
166 u32 PacketStaleCount;
167 struct sk_buff *Packet;
168 u32 PacketLength;
169 DMA10W_t WrIndex;
170 DMA10W_t WrIndexStart;
171} MP_TCB, *PMP_TCB;
172
173/* Structure to hold the skb's in a list */
174typedef struct tx_skb_list_elem {
175 struct list_head skb_list_elem;
176 struct sk_buff *skb;
177} TX_SKB_LIST_ELEM, *PTX_SKB_LIST_ELEM;
178
179/* TX_RING_t is sructure representing our local reference(s) to the ring */
180typedef struct _tx_ring_t {
181 /* TCB (Transmit Control Block) memory and lists */
182 PMP_TCB MpTcbMem;
183
184 /* List of TCBs that are ready to be used */
185 PMP_TCB TCBReadyQueueHead;
186 PMP_TCB TCBReadyQueueTail;
187
188 /* list of TCBs that are currently being sent. NOTE that access to all
189 * three of these (including nBusySend) are controlled via the
190 * TCBSendQLock. This lock should be secured prior to incementing /
191 * decrementing nBusySend, or any queue manipulation on CurrSendHead /
192 * Tail
193 */
194 PMP_TCB CurrSendHead;
195 PMP_TCB CurrSendTail;
196 int32_t nBusySend;
197
198 /* List of packets (not TCBs) that were queued for lack of resources */
199 struct list_head SendWaitQueue;
200 int32_t nWaitSend;
201
202 /* The actual descriptor ring */
203 PTX_DESC_ENTRY_t pTxDescRingVa;
204 dma_addr_t pTxDescRingPa;
205 uint64_t pTxDescRingAdjustedPa;
206 uint64_t TxDescOffset;
207
208 /* ReadyToSend indicates where we last wrote to in the descriptor ring. */
209 DMA10W_t txDmaReadyToSend;
210
211 /* The location of the write-back status block */
212 PTX_STATUS_BLOCK_t pTxStatusVa;
213 dma_addr_t pTxStatusPa;
214
215 /* A Block of zeroes used to pad packets that are less than 60 bytes */
216 void *pTxDummyBlkVa;
217 dma_addr_t pTxDummyBlkPa;
218
219 TXMAC_ERR_t TxMacErr;
220
221 /* Variables to track the Tx interrupt coalescing features */
222 int32_t TxPacketsSinceLastinterrupt;
223} TX_RING_t, *PTX_RING_t;
224
225/* Forward declaration of the frag-list for the following prototypes */
226typedef struct _MP_FRAG_LIST MP_FRAG_LIST, *PMP_FRAG_LIST;
227
228/* Forward declaration of the private adapter structure */
229struct et131x_adapter;
230
231/* PROTOTYPES for et1310_tx.c */
232int et131x_tx_dma_memory_alloc(struct et131x_adapter *adapter);
233void et131x_tx_dma_memory_free(struct et131x_adapter *adapter);
234void ConfigTxDmaRegs(struct et131x_adapter *pAdapter);
235void et131x_init_send(struct et131x_adapter *adapter);
236void et131x_tx_dma_disable(struct et131x_adapter *pAdapter);
237void et131x_tx_dma_enable(struct et131x_adapter *pAdapter);
238void et131x_handle_send_interrupt(struct et131x_adapter *pAdapter);
239void et131x_free_busy_send_packets(struct et131x_adapter *pAdapter);
240int et131x_send_packets(struct sk_buff *skb, struct net_device *netdev);
241
242#endif /* __ET1310_TX_H__ */
diff --git a/drivers/staging/et131x/et131x_adapter.h b/drivers/staging/et131x/et131x_adapter.h
new file mode 100644
index 00000000000..36e61a47ae2
--- /dev/null
+++ b/drivers/staging/et131x/et131x_adapter.h
@@ -0,0 +1,347 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_adapter.h - Header which includes the private adapter structure, along
12 * with related support structures, macros, definitions, etc.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_ADAPTER_H__
60#define __ET131X_ADAPTER_H__
61
62#include "et1310_address_map.h"
63#include "et1310_tx.h"
64#include "et1310_rx.h"
65
66/*
67 * Do not change these values: if changed, then change also in respective
68 * TXdma and Rxdma engines
69 */
70#define NUM_DESC_PER_RING_TX 512 // TX Do not change these values
71#define NUM_TCB 64
72
73/*
74 * These values are all superseded by registry entries to facilitate tuning.
75 * Once the desired performance has been achieved, the optimal registry values
76 * should be re-populated to these #defines:
77 */
78#define NUM_TRAFFIC_CLASSES 1
79
80/*
81 * There are three ways of counting errors - if there are more than X errors
82 * in Y packets (represented by the "SAMPLE" macros), if there are more than
83 * N errors in a S mSec time period (the "PERIOD" macros), or if there are
84 * consecutive packets with errors (CONSEC_ERRORED_THRESH). This last covers
85 * for "Bursty" errors, and the errored packets may well not be contiguous,
86 * but several errors where the packet counter has changed by less than a
87 * small amount will cause this count to increment.
88 */
89#define TX_PACKETS_IN_SAMPLE 10000
90#define TX_MAX_ERRORS_IN_SAMPLE 50
91
92#define TX_ERROR_PERIOD 1000
93#define TX_MAX_ERRORS_IN_PERIOD 10
94
95#define LINK_DETECTION_TIMER 5000
96
97#define TX_CONSEC_RANGE 5
98#define TX_CONSEC_ERRORED_THRESH 10
99
100#define LO_MARK_PERCENT_FOR_PSR 15
101#define LO_MARK_PERCENT_FOR_RX 15
102
103/* Macros for flag and ref count operations */
104#define MP_SET_FLAG(_M, _F) ((_M)->Flags |= (_F))
105#define MP_CLEAR_FLAG(_M, _F) ((_M)->Flags &= ~(_F))
106#define MP_CLEAR_FLAGS(_M) ((_M)->Flags = 0)
107#define MP_TEST_FLAG(_M, _F) (((_M)->Flags & (_F)) != 0)
108#define MP_TEST_FLAGS(_M, _F) (((_M)->Flags & (_F)) == (_F))
109#define MP_IS_FLAG_CLEAR(_M, _F) (((_M)->Flags & (_F)) == 0)
110
111#define MP_INC_RCV_REF(_A) atomic_inc(&(_A)->RcvRefCount)
112#define MP_DEC_RCV_REF(_A) atomic_dec(&(_A)->RcvRefCount)
113#define MP_GET_RCV_REF(_A) atomic_read(&(_A)->RcvRefCount)
114
115/* Macros specific to the private adapter structure */
116#define MP_TCB_RESOURCES_AVAILABLE(_M) ((_M)->TxRing.nBusySend < NUM_TCB)
117#define MP_TCB_RESOURCES_NOT_AVAILABLE(_M) ((_M)->TxRing.nBusySend >= NUM_TCB)
118
119#define MP_SHOULD_FAIL_SEND(_M) ((_M)->Flags & fMP_ADAPTER_FAIL_SEND_MASK)
120#define MP_IS_NOT_READY(_M) ((_M)->Flags & fMP_ADAPTER_NOT_READY_MASK)
121#define MP_IS_READY(_M) !((_M)->Flags & fMP_ADAPTER_NOT_READY_MASK)
122
123#define MP_HAS_CABLE(_M) !((_M)->Flags & fMP_ADAPTER_NO_CABLE)
124#define MP_LINK_DETECTED(_M) !((_M)->Flags & fMP_ADAPTER_LINK_DETECTION)
125
126/* Counters for error rate monitoring */
127typedef struct _MP_ERR_COUNTERS {
128 u32 PktCountTxPackets;
129 u32 PktCountTxErrors;
130 u32 TimerBasedTxErrors;
131 u32 PktCountLastError;
132 u32 ErredConsecPackets;
133} MP_ERR_COUNTERS, *PMP_ERR_COUNTERS;
134
135/* RFD (Receive Frame Descriptor) */
136typedef struct _MP_RFD {
137 struct list_head list_node;
138 struct sk_buff *Packet;
139 u32 PacketSize; // total size of receive frame
140 u16 iBufferIndex;
141 u8 iRingIndex;
142} MP_RFD, *PMP_RFD;
143
144/* Enum for Flow Control */
145typedef enum _eflow_control_t {
146 Both = 0,
147 TxOnly = 1,
148 RxOnly = 2,
149 None = 3
150} eFLOW_CONTROL_t, *PeFLOW_CONTROL_t;
151
152/* Struct to define some device statistics */
153typedef struct _ce_stats_t {
154 /* Link Input/Output stats */
155 uint64_t ipackets; // # of in packets
156 uint64_t opackets; // # of out packets
157
158 /* MIB II variables
159 *
160 * NOTE: atomic_t types are only guaranteed to store 24-bits; if we
161 * MUST have 32, then we'll need another way to perform atomic
162 * operations
163 */
164 u32 unircv; // # multicast packets received
165 atomic_t unixmt; // # multicast packets for Tx
166 u32 multircv; // # multicast packets received
167 atomic_t multixmt; // # multicast packets for Tx
168 u32 brdcstrcv; // # broadcast packets received
169 atomic_t brdcstxmt; // # broadcast packets for Tx
170 u32 norcvbuf; // # Rx packets discarded
171 u32 noxmtbuf; // # Tx packets discarded
172
173 /* Transciever state informations. */
174 u8 xcvr_addr;
175 u32 xcvr_id;
176
177 /* Tx Statistics. */
178 u32 tx_uflo; // Tx Underruns
179
180 u32 collisions;
181 u32 excessive_collisions;
182 u32 first_collision;
183 u32 late_collisions;
184 u32 max_pkt_error;
185 u32 tx_deferred;
186
187 /* Rx Statistics. */
188 u32 rx_ov_flow; // Rx Over Flow
189
190 u32 length_err;
191 u32 alignment_err;
192 u32 crc_err;
193 u32 code_violations;
194 u32 other_errors;
195
196#ifdef CONFIG_ET131X_DEBUG
197 u32 UnhandledInterruptsPerSec;
198 u32 RxDmaInterruptsPerSec;
199 u32 TxDmaInterruptsPerSec;
200 u32 WatchDogInterruptsPerSec;
201#endif /* CONFIG_ET131X_DEBUG */
202
203 u32 SynchrounousIterations;
204 INTERRUPT_t InterruptStatus;
205} CE_STATS_t, *PCE_STATS_t;
206
207/* The private adapter structure */
208struct et131x_adapter {
209 struct net_device *netdev;
210 struct pci_dev *pdev;
211
212 struct work_struct task;
213
214 /* Flags that indicate current state of the adapter */
215 u32 Flags;
216 u32 HwErrCount;
217
218 /* Configuration */
219 u8 PermanentAddress[ETH_ALEN];
220 u8 CurrentAddress[ETH_ALEN];
221 bool bOverrideAddress;
222 bool bEepromPresent;
223 u8 eepromData[2];
224
225 /* Spinlocks */
226 spinlock_t Lock;
227
228 spinlock_t TCBSendQLock;
229 spinlock_t TCBReadyQLock;
230 spinlock_t SendHWLock;
231 spinlock_t SendWaitLock;
232
233 spinlock_t RcvLock;
234 spinlock_t RcvPendLock;
235 spinlock_t FbrLock;
236
237 spinlock_t PHYLock;
238
239 /* Packet Filter and look ahead size */
240 u32 PacketFilter;
241 u32 ulLookAhead;
242 u32 uiLinkSpeed;
243 u32 uiDuplexMode;
244 u32 uiAutoNegStatus;
245 u8 ucLinkStatus;
246
247 /* multicast list */
248 u32 MCAddressCount;
249 u8 MCList[NIC_MAX_MCAST_LIST][ETH_ALEN];
250
251 /* MAC test */
252 TXMAC_TXTEST_t TxMacTest;
253
254 /* Pointer to the device's PCI register space */
255 ADDRESS_MAP_t __iomem *CSRAddress;
256
257 /* PCI config space info, for debug purposes only. */
258 u8 RevisionID;
259 u16 VendorID;
260 u16 DeviceID;
261 u16 SubVendorID;
262 u16 SubSystemID;
263 u32 CacheFillSize;
264 u16 PciXDevCtl;
265 u8 pci_lat_timer;
266 u8 pci_hdr_type;
267 u8 pci_bist;
268 u32 pci_cfg_state[64 / sizeof(u32)];
269
270 /* Registry parameters */
271 u8 SpeedDuplex; // speed/duplex
272 eFLOW_CONTROL_t RegistryFlowControl; // for 802.3x flow control
273 u8 RegistryWOLMatch; // Enable WOL pattern-matching
274 u8 RegistryWOLLink; // Link state change is independant
275 u8 RegistryPhyComa; // Phy Coma mode enable/disable
276
277 u32 RegistryRxMemEnd; // Size of internal rx memory
278 u8 RegistryMACStat; // If set, read MACSTAT, else don't
279 u32 RegistryVlanTag; // 802.1q Vlan TAG
280 u32 RegistryJumboPacket; // Max supported ethernet packet size
281
282 u32 RegistryTxNumBuffers;
283 u32 RegistryTxTimeInterval;
284
285 u32 RegistryRxNumBuffers;
286 u32 RegistryRxTimeInterval;
287
288 /* Validation helpers */
289 u8 RegistryPMWOL;
290 u8 RegistryNMIDisable;
291 u32 RegistryDMACache;
292 u32 RegistrySCGain;
293 u8 RegistryPhyLoopbk; // Enable Phy loopback
294
295 /* Derived from the registry: */
296 u8 AiForceDpx; // duplex setting
297 u16 AiForceSpeed; // 'Speed', user over-ride of line speed
298 eFLOW_CONTROL_t FlowControl; // flow control validated by the far-end
299 enum {
300 NETIF_STATUS_INVALID = 0,
301 NETIF_STATUS_MEDIA_CONNECT,
302 NETIF_STATUS_MEDIA_DISCONNECT,
303 NETIF_STATUS_MAX
304 } MediaState;
305 u8 DriverNoPhyAccess;
306
307 /* Minimize init-time */
308 bool bQueryPending;
309 bool bSetPending;
310 bool bResetPending;
311 struct timer_list ErrorTimer;
312 bool bLinkTimerActive;
313 MP_POWER_MGMT PoMgmt;
314 INTERRUPT_t CachedMaskValue;
315
316 atomic_t RcvRefCount; // Num packets not yet returned
317
318 /* Xcvr status at last poll */
319 MI_BMSR_t Bmsr;
320
321 /* Tx Memory Variables */
322 TX_RING_t TxRing;
323
324 /* Rx Memory Variables */
325 RX_RING_t RxRing;
326
327 /* ET1310 register Access */
328 JAGCORE_ACCESS_REGS JagCoreRegs;
329 PCI_CFG_SPACE_REGS PciCfgRegs;
330
331 /* Loopback specifics */
332 u8 ReplicaPhyLoopbk; // Replica Enable
333 u8 ReplicaPhyLoopbkPF; // Replica Enable Pass/Fail
334
335 /* Stats */
336 CE_STATS_t Stats;
337
338 struct net_device_stats net_stats;
339 struct net_device_stats net_stats_prev;
340};
341
342#define MPSendPacketsHandler MPSendPackets
343#define MP_FREE_SEND_PACKET_FUN(Adapter, pMpTcb) \
344 et131x_free_send_packet(Adapter, pMpTcb)
345#define MpSendPacketFun(Adapter, Packet) MpSendPacket(Adapter, Packet)
346
347#endif /* __ET131X_ADAPTER_H__ */
diff --git a/drivers/staging/et131x/et131x_config.c b/drivers/staging/et131x/et131x_config.c
new file mode 100644
index 00000000000..0adbaa6ca07
--- /dev/null
+++ b/drivers/staging/et131x/et131x_config.c
@@ -0,0 +1,325 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_config.c - Handles parsing of configuration data during
12 * initialization.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#include "et131x_version.h"
60#include "et131x_debug.h"
61#include "et131x_defs.h"
62
63#include <linux/init.h>
64#include <linux/module.h>
65#include <linux/types.h>
66#include <linux/kernel.h>
67
68#include <linux/sched.h>
69#include <linux/ptrace.h>
70#include <linux/slab.h>
71#include <linux/ctype.h>
72#include <linux/string.h>
73#include <linux/timer.h>
74#include <linux/interrupt.h>
75#include <linux/in.h>
76#include <linux/delay.h>
77#include <asm/io.h>
78#include <asm/system.h>
79#include <asm/bitops.h>
80
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90
91#include "et131x_adapter.h"
92#include "et131x_initpci.h"
93#include "et131x_config.h"
94
95#include "et1310_tx.h"
96
97/* Data for debugging facilities */
98#ifdef CONFIG_ET131X_DEBUG
99extern dbg_info_t *et131x_dbginfo;
100#endif /* CONFIG_ET131X_DEBUG */
101
102/* Defines for Parameter Default/Min/Max vaules */
103#define PARM_SPEED_DUPLEX_DEF 0
104#define PARM_SPEED_DUPLEX_MIN 0
105#define PARM_SPEED_DUPLEX_MAX 5
106
107#define PARM_VLAN_TAG_DEF 0
108#define PARM_VLAN_TAG_MIN 0
109#define PARM_VLAN_TAG_MAX 4095
110
111#define PARM_FLOW_CTL_DEF 0
112#define PARM_FLOW_CTL_MIN 0
113#define PARM_FLOW_CTL_MAX 3
114
115#define PARM_WOL_LINK_DEF 3
116#define PARM_WOL_LINK_MIN 0
117#define PARM_WOL_LINK_MAX 3
118
119#define PARM_WOL_MATCH_DEF 7
120#define PARM_WOL_MATCH_MIN 0
121#define PARM_WOL_MATCH_MAX 7
122
123#define PARM_JUMBO_PKT_DEF 1514
124#define PARM_JUMBO_PKT_MIN 1514
125#define PARM_JUMBO_PKT_MAX 9216
126
127#define PARM_PHY_COMA_DEF 0
128#define PARM_PHY_COMA_MIN 0
129#define PARM_PHY_COMA_MAX 1
130
131#define PARM_RX_NUM_BUFS_DEF 4
132#define PARM_RX_NUM_BUFS_MIN 1
133#define PARM_RX_NUM_BUFS_MAX 64
134
135#define PARM_RX_TIME_INT_DEF 10
136#define PARM_RX_TIME_INT_MIN 2
137#define PARM_RX_TIME_INT_MAX 320
138
139#define PARM_TX_NUM_BUFS_DEF 4
140#define PARM_TX_NUM_BUFS_MIN 1
141#define PARM_TX_NUM_BUFS_MAX 40
142
143#define PARM_TX_TIME_INT_DEF 40
144#define PARM_TX_TIME_INT_MIN 1
145#define PARM_TX_TIME_INT_MAX 140
146
147#define PARM_RX_MEM_END_DEF 0x2bc
148#define PARM_RX_MEM_END_MIN 0
149#define PARM_RX_MEM_END_MAX 0x3ff
150
151#define PARM_MAC_STAT_DEF 1
152#define PARM_MAC_STAT_MIN 0
153#define PARM_MAC_STAT_MAX 1
154
155#define PARM_SC_GAIN_DEF 7
156#define PARM_SC_GAIN_MIN 0
157#define PARM_SC_GAIN_MAX 7
158
159#define PARM_PM_WOL_DEF 0
160#define PARM_PM_WOL_MIN 0
161#define PARM_PM_WOL_MAX 1
162
163#define PARM_NMI_DISABLE_DEF 0
164#define PARM_NMI_DISABLE_MIN 0
165#define PARM_NMI_DISABLE_MAX 2
166
167#define PARM_DMA_CACHE_DEF 0
168#define PARM_DMA_CACHE_MIN 0
169#define PARM_DMA_CACHE_MAX 15
170
171#define PARM_PHY_LOOPBK_DEF 0
172#define PARM_PHY_LOOPBK_MIN 0
173#define PARM_PHY_LOOPBK_MAX 1
174
175#define PARM_MAC_ADDRESS_DEF { 0x00, 0x05, 0x3d, 0x00, 0x02, 0x00 }
176
177/* Module parameter for disabling NMI
178 * et131x_speed_set :
179 * Set Link speed and dublex manually (0-5) [0]
180 * 1 : 10Mb Half-Duplex
181 * 2 : 10Mb Full-Duplex
182 * 3 : 100Mb Half-Duplex
183 * 4 : 100Mb Full-Duplex
184 * 5 : 1000Mb Full-Duplex
185 * 0 : Auto Speed Auto Dublex // default
186 */
187static u32 et131x_nmi_disable = PARM_NMI_DISABLE_DEF;
188module_param(et131x_nmi_disable, uint, 0);
189MODULE_PARM_DESC(et131x_nmi_disable, "Disable NMI (0-2) [0]");
190
191/* Module parameter for manual speed setting
192 * et131x_nmi_disable :
193 * Disable NMI (0-2) [0]
194 * 0 :
195 * 1 :
196 * 2 :
197 */
198static u32 et131x_speed_set = PARM_SPEED_DUPLEX_DEF;
199module_param(et131x_speed_set, uint, 0);
200MODULE_PARM_DESC(et131x_speed_set,
201 "Set Link speed and dublex manually (0-5) [0] \n 1 : 10Mb Half-Duplex \n 2 : 10Mb Full-Duplex \n 3 : 100Mb Half-Duplex \n 4 : 100Mb Full-Duplex \n 5 : 1000Mb Full-Duplex \n 0 : Auto Speed Auto Dublex");
202
203/**
204 * et131x_config_parse
205 * @pAdapter: pointer to the private adapter struct
206 *
207 * Parses a configuration from some location (module parameters, for example)
208 * into the private adapter struct
209 */
210void et131x_config_parse(struct et131x_adapter *pAdapter)
211{
212 uint8_t macAddrDef[] = PARM_MAC_ADDRESS_DEF;
213
214 DBG_ENTER(et131x_dbginfo);
215
216 /*
217 * The NDIS driver uses the registry to store persistent per-device
218 * configuration, and reads this configuration into the appropriate
219 * elements of the private adapter structure on initialization.
220 * Because Linux has no analog to the registry, use this function to
221 * initialize the private adapter structure with a default
222 * configuration.
223 *
224 * One other possibility is to use a series of module parameters which
225 * can be passed in by the caller when the module is initialized.
226 * However, this implementation does not allow for seperate
227 * configurations in the event multiple devices are present, and hence
228 * will not suffice.
229 *
230 * If another method is derived which addresses this problem, this is
231 * where it should be implemented.
232 */
233
234 /* Set the private adapter struct with default values for the
235 * corresponding parameters
236 */
237 if (et131x_speed_set != PARM_SPEED_DUPLEX_DEF) {
238 DBG_VERBOSE(et131x_dbginfo, "Speed set manually to : %d \n",
239 et131x_speed_set);
240 pAdapter->SpeedDuplex = et131x_speed_set;
241 } else {
242 pAdapter->SpeedDuplex = PARM_SPEED_DUPLEX_DEF;
243 }
244
245 // pAdapter->SpeedDuplex = PARM_SPEED_DUPLEX_DEF;
246
247 pAdapter->RegistryVlanTag = PARM_VLAN_TAG_DEF;
248 pAdapter->RegistryFlowControl = PARM_FLOW_CTL_DEF;
249 pAdapter->RegistryWOLLink = PARM_WOL_LINK_DEF;
250 pAdapter->RegistryWOLMatch = PARM_WOL_MATCH_DEF;
251 pAdapter->RegistryJumboPacket = PARM_JUMBO_PKT_DEF;
252 pAdapter->RegistryPhyComa = PARM_PHY_COMA_DEF;
253 pAdapter->RegistryRxNumBuffers = PARM_RX_NUM_BUFS_DEF;
254 pAdapter->RegistryRxTimeInterval = PARM_RX_TIME_INT_DEF;
255 pAdapter->RegistryTxNumBuffers = PARM_TX_NUM_BUFS_DEF;
256 pAdapter->RegistryTxTimeInterval = PARM_TX_TIME_INT_DEF;
257 pAdapter->RegistryRxMemEnd = PARM_RX_MEM_END_DEF;
258 pAdapter->RegistryMACStat = PARM_MAC_STAT_DEF;
259 pAdapter->RegistrySCGain = PARM_SC_GAIN_DEF;
260 pAdapter->RegistryPMWOL = PARM_PM_WOL_DEF;
261
262 if (et131x_nmi_disable != PARM_NMI_DISABLE_DEF) {
263 pAdapter->RegistryNMIDisable = et131x_nmi_disable;
264 } else {
265 pAdapter->RegistryNMIDisable = PARM_NMI_DISABLE_DEF;
266 }
267
268 pAdapter->RegistryDMACache = PARM_DMA_CACHE_DEF;
269 pAdapter->RegistryPhyLoopbk = PARM_PHY_LOOPBK_DEF;
270
271 /* Set the MAC address to a default */
272 memcpy(pAdapter->CurrentAddress, macAddrDef, ETH_ALEN);
273 pAdapter->bOverrideAddress = false;
274
275 DBG_TRACE(et131x_dbginfo,
276 "Default MAC Address : %02x:%02x:%02x:%02x:%02x:%02x\n",
277 pAdapter->CurrentAddress[0], pAdapter->CurrentAddress[1],
278 pAdapter->CurrentAddress[2], pAdapter->CurrentAddress[3],
279 pAdapter->CurrentAddress[4], pAdapter->CurrentAddress[5]);
280
281 /* Decode SpeedDuplex
282 *
283 * Set up as if we are auto negotiating always and then change if we
284 * go into force mode
285 */
286 pAdapter->AiForceSpeed = 0; // Auto speed
287 pAdapter->AiForceDpx = 0; // Auto FDX
288
289 /* If we are the 10/100 device, and gigabit is somehow requested then
290 * knock it down to 100 full.
291 */
292 if ((pAdapter->DeviceID == ET131X_PCI_DEVICE_ID_FAST) &&
293 (pAdapter->SpeedDuplex == 5)) {
294 pAdapter->SpeedDuplex = 4;
295 }
296
297 switch (pAdapter->SpeedDuplex) {
298 case 1: // 10Mb Half-Duplex
299 pAdapter->AiForceSpeed = 10;
300 pAdapter->AiForceDpx = 1;
301 break;
302
303 case 2: // 10Mb Full-Duplex
304 pAdapter->AiForceSpeed = 10;
305 pAdapter->AiForceDpx = 2;
306 break;
307
308 case 3: // 100Mb Half-Duplex
309 pAdapter->AiForceSpeed = 100;
310 pAdapter->AiForceDpx = 1;
311 break;
312
313 case 4: // 100Mb Full-Duplex
314 pAdapter->AiForceSpeed = 100;
315 pAdapter->AiForceDpx = 2;
316 break;
317
318 case 5: // 1000Mb Full-Duplex
319 pAdapter->AiForceSpeed = 1000;
320 pAdapter->AiForceDpx = 2;
321 break;
322 }
323
324 DBG_LEAVE(et131x_dbginfo);
325}
diff --git a/drivers/staging/et131x/et131x_config.h b/drivers/staging/et131x/et131x_config.h
new file mode 100644
index 00000000000..642c0f6dd6f
--- /dev/null
+++ b/drivers/staging/et131x/et131x_config.h
@@ -0,0 +1,67 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_config.h - Defines, structs, enums, prototypes, etc. to support
12 * et131x_config.c
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_CONFIG_H__
60#define __ET131X_CONFIG_H__
61
62/* Forward declaration of the private adapter structure */
63struct et131x_adapter;
64
65void et131x_config_parse(struct et131x_adapter *adapter);
66
67#endif /* __ET131X_CONFIG_H__ */
diff --git a/drivers/staging/et131x/et131x_debug.c b/drivers/staging/et131x/et131x_debug.c
new file mode 100644
index 00000000000..9ee5bce92c2
--- /dev/null
+++ b/drivers/staging/et131x/et131x_debug.c
@@ -0,0 +1,218 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_debug.c - Routines used for debugging.
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#ifdef CONFIG_ET131X_DEBUG
59
60#include "et131x_version.h"
61#include "et131x_debug.h"
62#include "et131x_defs.h"
63
64#include <linux/pci.h>
65#include <linux/init.h>
66#include <linux/module.h>
67#include <linux/types.h>
68#include <linux/kernel.h>
69
70#include <linux/sched.h>
71#include <linux/ptrace.h>
72#include <linux/slab.h>
73#include <linux/ctype.h>
74#include <linux/string.h>
75#include <linux/timer.h>
76#include <linux/interrupt.h>
77#include <linux/in.h>
78#include <linux/delay.h>
79#include <asm/io.h>
80#include <asm/system.h>
81#include <asm/bitops.h>
82
83#include <linux/netdevice.h>
84#include <linux/etherdevice.h>
85#include <linux/skbuff.h>
86#include <linux/if_arp.h>
87#include <linux/ioport.h>
88#include <linux/random.h>
89
90#include "et1310_phy.h"
91#include "et1310_pm.h"
92#include "et1310_jagcore.h"
93
94#include "et131x_adapter.h"
95#include "et131x_netdev.h"
96#include "et131x_config.h"
97#include "et131x_isr.h"
98
99#include "et1310_address_map.h"
100#include "et1310_jagcore.h"
101#include "et1310_tx.h"
102#include "et1310_rx.h"
103#include "et1310_mac.h"
104
105/* Data for debugging facilities */
106extern dbg_info_t *et131x_dbginfo;
107
108/**
109 * DumpTxQueueContents - Dump out the tx queue and the shadow pointers
110 * @pAdapter: pointer to our adapter structure
111 */
112void DumpTxQueueContents(int dbgLvl, struct et131x_adapter *pAdapter)
113{
114 MMC_t __iomem *mmc = &pAdapter->CSRAddress->mmc;
115 uint32_t TxQueueAddr;
116
117 if (DBG_FLAGS(et131x_dbginfo) & dbgLvl) {
118 for (TxQueueAddr = 0x200; TxQueueAddr < 0x3ff; TxQueueAddr++) {
119 MMC_SRAM_ACCESS_t sram_access;
120
121 sram_access.value = readl(&mmc->sram_access.value);
122 sram_access.bits.req_addr = TxQueueAddr;
123 sram_access.bits.req_access = 1;
124 writel(sram_access.value, &mmc->sram_access.value);
125
126 DBG_PRINT("Addr 0x%x, Access 0x%08x\t"
127 "Value 1 0x%08x, Value 2 0x%08x, "
128 "Value 3 0x%08x, Value 4 0x%08x, \n",
129 TxQueueAddr,
130 readl(&mmc->sram_access.value),
131 readl(&mmc->sram_word1),
132 readl(&mmc->sram_word2),
133 readl(&mmc->sram_word3),
134 readl(&mmc->sram_word4));
135 }
136
137 DBG_PRINT("Shadow Pointers 0x%08x\n",
138 readl(&pAdapter->CSRAddress->txmac.shadow_ptr.value));
139 }
140}
141
142/**
143 * DumpDeviceBlock
144 * @pAdapter: pointer to our adapter
145 *
146 * Dumps the first 64 regs of each block of the et-1310 (each block is
147 * mapped to a new page, each page is 4096 bytes).
148 */
149#define NUM_BLOCKS 8
150void DumpDeviceBlock(int dbgLvl, struct et131x_adapter *pAdapter,
151 uint32_t Block)
152{
153 uint32_t Address1, Address2;
154 uint32_t __iomem *BigDevicePointer =
155 (uint32_t __iomem *) pAdapter->CSRAddress;
156 const char *BlockNames[NUM_BLOCKS] = {
157 "Global", "Tx DMA", "Rx DMA", "Tx MAC",
158 "Rx MAC", "MAC", "MAC Stat", "MMC"
159 };
160
161 /* Output the debug counters to the debug terminal */
162 if (DBG_FLAGS(et131x_dbginfo) & dbgLvl) {
163 DBG_PRINT("%s block\n", BlockNames[Block]);
164 BigDevicePointer += Block * 1024;
165 for (Address1 = 0; Address1 < 8; Address1++) {
166 for (Address2 = 0; Address2 < 8; Address2++) {
167 if (Block == 0 &&
168 (Address1 * 8 + Address2) == 6) {
169 DBG_PRINT(" ISR , ");
170 } else {
171 DBG_PRINT("0x%08x, ",
172 readl(BigDevicePointer++));
173 }
174 }
175 DBG_PRINT("\n");
176 }
177 DBG_PRINT("\n");
178 }
179}
180
181/**
182 * DumpDeviceReg
183 * @pAdapter: pointer to our adapter
184 *
185 * Dumps the first 64 regs of each block of the et-1310 (each block is
186 * mapped to a new page, each page is 4096 bytes).
187 */
188void DumpDeviceReg(int dbgLvl, struct et131x_adapter *pAdapter)
189{
190 uint32_t Address1, Address2;
191 uint32_t Block;
192 uint32_t __iomem *BigDevicePointer =
193 (uint32_t __iomem *) pAdapter->CSRAddress;
194 uint32_t __iomem *Pointer;
195 const char *BlockNames[NUM_BLOCKS] = {
196 "Global", "Tx DMA", "Rx DMA", "Tx MAC",
197 "Rx MAC", "MAC", "MAC Stat", "MMC"
198 };
199
200 /* Output the debug counters to the debug terminal */
201 if (DBG_FLAGS(et131x_dbginfo) & dbgLvl) {
202 for (Block = 0; Block < NUM_BLOCKS; Block++) {
203 DBG_PRINT("%s block\n", BlockNames[Block]);
204 Pointer = BigDevicePointer + (Block * 1024);
205
206 for (Address1 = 0; Address1 < 8; Address1++) {
207 for (Address2 = 0; Address2 < 8; Address2++) {
208 DBG_PRINT("0x%08x, ",
209 readl(Pointer++));
210 }
211 DBG_PRINT("\n");
212 }
213 DBG_PRINT("\n");
214 }
215 }
216}
217
218#endif // CONFIG_ET131X_DEBUG
diff --git a/drivers/staging/et131x/et131x_debug.h b/drivers/staging/et131x/et131x_debug.h
new file mode 100644
index 00000000000..dab608031d0
--- /dev/null
+++ b/drivers/staging/et131x/et131x_debug.h
@@ -0,0 +1,201 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_debug.h - Defines, structs, enums, prototypes, etc. used for
12 * outputting debug messages to the system logging facility
13 * (ksyslogd)
14 *
15 *------------------------------------------------------------------------------
16 *
17 * SOFTWARE LICENSE
18 *
19 * This software is provided subject to the following terms and conditions,
20 * which you should read carefully before using the software. Using this
21 * software indicates your acceptance of these terms and conditions. If you do
22 * not agree with these terms and conditions, do not use the software.
23 *
24 * Copyright © 2005 Agere Systems Inc.
25 * All rights reserved.
26 *
27 * Redistribution and use in source or binary forms, with or without
28 * modifications, are permitted provided that the following conditions are met:
29 *
30 * . Redistributions of source code must retain the above copyright notice, this
31 * list of conditions and the following Disclaimer as comments in the code as
32 * well as in the documentation and/or other materials provided with the
33 * distribution.
34 *
35 * . Redistributions in binary form must reproduce the above copyright notice,
36 * this list of conditions and the following Disclaimer in the documentation
37 * and/or other materials provided with the distribution.
38 *
39 * . Neither the name of Agere Systems Inc. nor the names of the contributors
40 * may be used to endorse or promote products derived from this software
41 * without specific prior written permission.
42 *
43 * Disclaimer
44 *
45 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
46 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
47 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
48 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
49 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
50 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
51 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
52 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
53 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
54 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
55 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
56 * DAMAGE.
57 *
58 */
59
60#ifndef __ET131X_DBG_H__
61#define __ET131X_DBG_H__
62
63/* Define Masks for debugging types/levels */
64#define DBG_ERROR_ON 0x00000001L
65#define DBG_WARNING_ON 0x00000002L
66#define DBG_NOTICE_ON 0x00000004L
67#define DBG_TRACE_ON 0x00000008L
68#define DBG_VERBOSE_ON 0x00000010L
69#define DBG_PARAM_ON 0x00000020L
70#define DBG_BREAK_ON 0x00000040L
71#define DBG_RX_ON 0x00000100L
72#define DBG_TX_ON 0x00000200L
73
74#ifdef CONFIG_ET131X_DEBUG
75
76/*
77 * Set the level of debugging if not done with a preprocessor define. See
78 * et131x_main.c, function et131x_init_module() for how the debug level
79 * translates into the types of messages displayed.
80 */
81#ifndef DBG_LVL
82#define DBG_LVL 3
83#endif /* DBG_LVL */
84
85#define DBG_DEFAULTS (DBG_ERROR_ON | DBG_WARNING_ON | DBG_BREAK_ON )
86
87#define DBG_FLAGS(A) (A)->dbgFlags
88#define DBG_NAME(A) (A)->dbgName
89#define DBG_LEVEL(A) (A)->dbgLevel
90
91#ifndef DBG_PRINT
92#define DBG_PRINT(S...) printk(KERN_DEBUG S)
93#endif /* DBG_PRINT */
94
95#ifndef DBG_PRINTC
96#define DBG_PRINTC(S...) printk(S)
97#endif /* DBG_PRINTC */
98
99#ifndef DBG_TRAP
100#define DBG_TRAP {} /* BUG() */
101#endif /* DBG_TRAP */
102
103#define _ENTER_STR ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
104#define _LEAVE_STR "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
105
106#define _DBG_ENTER(A) printk(KERN_DEBUG "%s:%.*s:%s\n", DBG_NAME(A), \
107 ++DBG_LEVEL(A), _ENTER_STR, __func__)
108#define _DBG_LEAVE(A) printk(KERN_DEBUG "%s:%.*s:%s\n", DBG_NAME(A), \
109 DBG_LEVEL(A)--, _LEAVE_STR, __func__)
110
111#define DBG_ENTER(A) {if (DBG_FLAGS(A) & DBG_TRACE_ON) \
112 _DBG_ENTER(A);}
113
114#define DBG_LEAVE(A) {if (DBG_FLAGS(A) & DBG_TRACE_ON) \
115 _DBG_LEAVE(A);}
116
117#define DBG_PARAM(A,N,F,S...) {if (DBG_FLAGS(A) & DBG_PARAM_ON) \
118 DBG_PRINT(" %s -- "F"\n",N,S);}
119
120#define DBG_ERROR(A,S...) \
121 if (DBG_FLAGS(A) & DBG_ERROR_ON) { \
122 DBG_PRINT("%s:ERROR:%s ",DBG_NAME(A), __func__); \
123 DBG_PRINTC(S); \
124 DBG_TRAP; \
125 }
126
127#define DBG_WARNING(A,S...) {if (DBG_FLAGS(A) & DBG_WARNING_ON) \
128 {DBG_PRINT("%s:WARNING:%s ",DBG_NAME(A),__func__);DBG_PRINTC(S);}}
129
130#define DBG_NOTICE(A,S...) {if (DBG_FLAGS(A) & DBG_NOTICE_ON) \
131 {DBG_PRINT("%s:NOTICE:%s ",DBG_NAME(A),__func__);DBG_PRINTC(S);}}
132
133#define DBG_TRACE(A,S...) {if (DBG_FLAGS(A) & DBG_TRACE_ON) \
134 {DBG_PRINT("%s:TRACE:%s ",DBG_NAME(A), __func__);DBG_PRINTC(S);}}
135
136#define DBG_VERBOSE(A,S...) {if (DBG_FLAGS(A) & DBG_VERBOSE_ON) \
137 {DBG_PRINT("%s:VERBOSE:%s ",DBG_NAME(A), __func__);DBG_PRINTC(S);}}
138
139#define DBG_RX(A,S...) {if (DBG_FLAGS(A) & DBG_RX_ON) \
140 {DBG_PRINT(S);}}
141
142#define DBG_RX_ENTER(A) {if (DBG_FLAGS(A) & DBG_RX_ON) \
143 _DBG_ENTER(A);}
144
145#define DBG_RX_LEAVE(A) {if (DBG_FLAGS(A) & DBG_RX_ON) \
146 _DBG_LEAVE(A);}
147
148#define DBG_TX(A,S...) {if (DBG_FLAGS(A) & DBG_TX_ON) \
149 {DBG_PRINT(S);}}
150
151#define DBG_TX_ENTER(A) {if (DBG_FLAGS(A) & DBG_TX_ON) \
152 _DBG_ENTER(A);}
153
154#define DBG_TX_LEAVE(A) {if (DBG_FLAGS(A) & DBG_TX_ON) \
155 _DBG_LEAVE(A);}
156
157#define DBG_ASSERT(C) {if (!(C)) \
158 {DBG_PRINT("ASSERT(%s) -- %s#%d (%s)\n", \
159 #C,__FILE__,__LINE__,__func__); \
160 DBG_TRAP;}}
161#define STATIC
162
163typedef struct {
164 char *dbgName;
165 int dbgLevel;
166 unsigned long dbgFlags;
167} dbg_info_t;
168
169#else /* CONFIG_ET131X_DEBUG */
170
171#define DBG_DEFN
172#define DBG_TRAP
173#define DBG_PRINT(S...)
174#define DBG_ENTER(A)
175#define DBG_LEAVE(A)
176#define DBG_PARAM(A,N,F,S...)
177#define DBG_ERROR(A,S...)
178#define DBG_WARNING(A,S...)
179#define DBG_NOTICE(A,S...)
180#define DBG_TRACE(A,S...)
181#define DBG_VERBOSE(A,S...)
182#define DBG_RX(A,S...)
183#define DBG_RX_ENTER(A)
184#define DBG_RX_LEAVE(A)
185#define DBG_TX(A,S...)
186#define DBG_TX_ENTER(A)
187#define DBG_TX_LEAVE(A)
188#define DBG_ASSERT(C)
189#define STATIC static
190
191#endif /* CONFIG_ET131X_DEBUG */
192
193/* Forward declaration of the private adapter structure */
194struct et131x_adapter;
195
196void DumpTxQueueContents(int dbgLvl, struct et131x_adapter *adapter);
197void DumpDeviceBlock(int dbgLvl, struct et131x_adapter *adapter,
198 unsigned int Block);
199void DumpDeviceReg(int dbgLvl, struct et131x_adapter *adapter);
200
201#endif /* __ET131X_DBG_H__ */
diff --git a/drivers/staging/et131x/et131x_defs.h b/drivers/staging/et131x/et131x_defs.h
new file mode 100644
index 00000000000..886cb78698e
--- /dev/null
+++ b/drivers/staging/et131x/et131x_defs.h
@@ -0,0 +1,128 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_defs.h - Defines, structs, enums, prototypes, etc. to assist with OS
12 * compatibility
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_DEFS_H__
60#define __ET131X_DEFS_H__
61
62/* Packet and header sizes */
63#define NIC_MIN_PACKET_SIZE 60
64#define NIC_HEADER_SIZE ETH_HLEN /* 14 */
65
66/* Multicast list size */
67#define NIC_MAX_MCAST_LIST 128
68
69/* Supported Filters */
70#define ET131X_PACKET_TYPE_DIRECTED 0x0001
71#define ET131X_PACKET_TYPE_MULTICAST 0x0002
72#define ET131X_PACKET_TYPE_BROADCAST 0x0004
73#define ET131X_PACKET_TYPE_PROMISCUOUS 0x0008
74#define ET131X_PACKET_TYPE_ALL_MULTICAST 0x0010
75
76/* Tx Timeout */
77#define ET131X_TX_TIMEOUT (1 * HZ)
78#define NIC_SEND_HANG_THRESHOLD 0
79
80/* MP_TCB flags */
81#define fMP_DEST_MULTI 0x00000001
82#define fMP_DEST_BROAD 0x00000002
83
84/* MP_ADAPTER flags */
85#define fMP_ADAPTER_RECV_LOOKASIDE 0x00000004
86#define fMP_ADAPTER_INTERRUPT_IN_USE 0x00000008
87#define fMP_ADAPTER_SECONDARY 0x00000010
88
89/* MP_SHARED flags */
90#define fMP_ADAPTER_SHUTDOWN 0x00100000
91#define fMP_ADAPTER_LOWER_POWER 0x00200000
92
93#define fMP_ADAPTER_NON_RECOVER_ERROR 0x00800000
94#define fMP_ADAPTER_RESET_IN_PROGRESS 0x01000000
95#define fMP_ADAPTER_NO_CABLE 0x02000000
96#define fMP_ADAPTER_HARDWARE_ERROR 0x04000000
97#define fMP_ADAPTER_REMOVE_IN_PROGRESS 0x08000000
98#define fMP_ADAPTER_HALT_IN_PROGRESS 0x10000000
99#define fMP_ADAPTER_LINK_DETECTION 0x20000000
100
101#define fMP_ADAPTER_FAIL_SEND_MASK 0x3ff00000
102#define fMP_ADAPTER_NOT_READY_MASK 0x3ff00000
103
104/* Some offsets in PCI config space that are actually used. */
105#define ET1310_PCI_PM_CAPABILITY 0x40
106#define ET1310_PCI_PM_CSR 0x44
107#define ET1310_PCI_MAX_PYLD 0x4C
108#define ET1310_PCI_DEV_CTRL 0x50
109#define ET1310_PCI_DEV_STAT 0x52
110#define ET1310_NMI_DISABLE 0x61
111#define ET1310_PCI_MAC_ADDRESS 0xA4
112#define ET1310_PCI_EEPROM_STATUS 0xB2
113#define ET1310_PCI_PHY_INDEX_REG 0xB4
114#define ET1310_PCI_ACK_NACK 0xC0
115#define ET1310_PCI_REPLAY 0xC2
116#define ET1310_PCI_L0L1LATENCY 0xCF
117#define ET1310_PCI_SEL_PHY_CTRL 0xE4
118#define ET1310_PCI_ADVANCED_ERR 0x100
119
120/* PCI Vendor/Product IDs */
121#define ET131X_PCI_VENDOR_ID 0x11C1 // Agere Systems
122#define ET131X_PCI_DEVICE_ID_GIG 0xED00 // ET1310 1000 Base-T
123#define ET131X_PCI_DEVICE_ID_FAST 0xED01 // ET1310 100 Base-T
124
125/* Define order of magnitude converter */
126#define NANO_IN_A_MICRO 1000
127
128#endif /* __ET131X_DEFS_H__ */
diff --git a/drivers/staging/et131x/et131x_initpci.c b/drivers/staging/et131x/et131x_initpci.c
new file mode 100644
index 00000000000..4c6f171f5b7
--- /dev/null
+++ b/drivers/staging/et131x/et131x_initpci.c
@@ -0,0 +1,1046 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_initpci.c - Routines and data used to register the driver with the
12 * PCI (and PCI Express) subsystem, as well as basic driver
13 * init and startup.
14 *
15 *------------------------------------------------------------------------------
16 *
17 * SOFTWARE LICENSE
18 *
19 * This software is provided subject to the following terms and conditions,
20 * which you should read carefully before using the software. Using this
21 * software indicates your acceptance of these terms and conditions. If you do
22 * not agree with these terms and conditions, do not use the software.
23 *
24 * Copyright © 2005 Agere Systems Inc.
25 * All rights reserved.
26 *
27 * Redistribution and use in source or binary forms, with or without
28 * modifications, are permitted provided that the following conditions are met:
29 *
30 * . Redistributions of source code must retain the above copyright notice, this
31 * list of conditions and the following Disclaimer as comments in the code as
32 * well as in the documentation and/or other materials provided with the
33 * distribution.
34 *
35 * . Redistributions in binary form must reproduce the above copyright notice,
36 * this list of conditions and the following Disclaimer in the documentation
37 * and/or other materials provided with the distribution.
38 *
39 * . Neither the name of Agere Systems Inc. nor the names of the contributors
40 * may be used to endorse or promote products derived from this software
41 * without specific prior written permission.
42 *
43 * Disclaimer
44 *
45 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
46 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
47 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
48 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
49 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
50 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
51 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
52 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
53 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
54 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
55 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
56 * DAMAGE.
57 *
58 */
59
60#include "et131x_version.h"
61#include "et131x_debug.h"
62#include "et131x_defs.h"
63
64#include <linux/pci.h>
65#include <linux/init.h>
66#include <linux/module.h>
67#include <linux/types.h>
68#include <linux/kernel.h>
69
70#include <linux/sched.h>
71#include <linux/ptrace.h>
72#include <linux/slab.h>
73#include <linux/ctype.h>
74#include <linux/string.h>
75#include <linux/timer.h>
76#include <linux/interrupt.h>
77#include <linux/in.h>
78#include <linux/delay.h>
79#include <asm/io.h>
80#include <asm/system.h>
81#include <asm/bitops.h>
82
83#include <linux/netdevice.h>
84#include <linux/etherdevice.h>
85#include <linux/skbuff.h>
86#include <linux/if_arp.h>
87#include <linux/ioport.h>
88#include <linux/random.h>
89
90#include "et1310_phy.h"
91#include "et1310_pm.h"
92#include "et1310_jagcore.h"
93
94#include "et131x_adapter.h"
95#include "et131x_netdev.h"
96#include "et131x_config.h"
97#include "et131x_isr.h"
98
99#include "et1310_address_map.h"
100#include "et1310_jagcore.h"
101#include "et1310_tx.h"
102#include "et1310_rx.h"
103#include "et1310_mac.h"
104#include "et1310_eeprom.h"
105
106
107int __devinit et131x_pci_setup(struct pci_dev *pdev,
108 const struct pci_device_id *ent);
109void __devexit et131x_pci_remove(struct pci_dev *pdev);
110
111
112/* Modinfo parameters (filled out using defines from et131x_version.h) */
113MODULE_AUTHOR(DRIVER_AUTHOR);
114MODULE_DESCRIPTION(DRIVER_INFO);
115MODULE_LICENSE(DRIVER_LICENSE);
116
117/* Module Parameters and related data for debugging facilities */
118#ifdef CONFIG_ET131X_DEBUG
119static u32 et131x_debug_level = DBG_LVL;
120static u32 et131x_debug_flags = DBG_DEFAULTS;
121
122/*
123et131x_debug_level :
124 Level of debugging desired (0-7)
125 7 : DBG_RX_ON | DBG_TX_ON
126 6 : DBG_PARAM_ON
127 5 : DBG_VERBOSE_ON
128 4 : DBG_TRACE_ON
129 3 : DBG_NOTICE_ON
130 2 : no debug info
131 1 : no debug info
132 0 : no debug info
133*/
134
135module_param(et131x_debug_level, uint, 0);
136module_param(et131x_debug_flags, uint, 0);
137
138MODULE_PARM_DESC(et131x_debug_level, "Level of debugging desired (0-7)");
139
140static dbg_info_t et131x_info = { DRIVER_NAME_EXT, 0, 0 };
141dbg_info_t *et131x_dbginfo = &et131x_info;
142#endif /* CONFIG_ET131X_DEBUG */
143
144static struct pci_device_id et131x_pci_table[] __devinitdata = {
145 {ET131X_PCI_VENDOR_ID, ET131X_PCI_DEVICE_ID_GIG, PCI_ANY_ID,
146 PCI_ANY_ID, 0, 0, 0UL},
147 {ET131X_PCI_VENDOR_ID, ET131X_PCI_DEVICE_ID_FAST, PCI_ANY_ID,
148 PCI_ANY_ID, 0, 0, 0UL},
149 {0,}
150};
151
152MODULE_DEVICE_TABLE(pci, et131x_pci_table);
153
154static struct pci_driver et131x_driver = {
155 .name = DRIVER_NAME,
156 .id_table = et131x_pci_table,
157 .probe = et131x_pci_setup,
158 .remove = __devexit_p(et131x_pci_remove),
159 .suspend = NULL, //et131x_pci_suspend,
160 .resume = NULL, //et131x_pci_resume,
161};
162
163
164/**
165 * et131x_init_module - The "main" entry point called on driver initialization
166 *
167 * Returns 0 on success, errno on failure (as defined in errno.h)
168 */
169int et131x_init_module(void)
170{
171 int result;
172
173#ifdef CONFIG_ET131X_DEBUG
174 /* Set the level of debug messages displayed using the module
175 * parameter
176 */
177 et131x_dbginfo->dbgFlags = et131x_debug_flags;
178
179 switch (et131x_debug_level) {
180 case 7:
181 et131x_dbginfo->dbgFlags |= (DBG_RX_ON | DBG_TX_ON);
182
183 case 6:
184 et131x_dbginfo->dbgFlags |= DBG_PARAM_ON;
185
186 case 5:
187 et131x_dbginfo->dbgFlags |= DBG_VERBOSE_ON;
188
189 case 4:
190 et131x_dbginfo->dbgFlags |= DBG_TRACE_ON;
191
192 case 3:
193 et131x_dbginfo->dbgFlags |= DBG_NOTICE_ON;
194
195 case 2:
196 case 1:
197 case 0:
198 default:
199 break;
200 }
201#endif /* CONFIG_ET131X_DEBUG */
202
203 DBG_ENTER(et131x_dbginfo);
204 DBG_PRINT("%s\n", DRIVER_INFO);
205
206 result = pci_register_driver(&et131x_driver);
207
208 DBG_LEAVE(et131x_dbginfo);
209 return result;
210}
211
212/**
213 * et131x_cleanup_module - The entry point called on driver cleanup
214 */
215void et131x_cleanup_module(void)
216{
217 DBG_ENTER(et131x_dbginfo);
218
219 pci_unregister_driver(&et131x_driver);
220
221 DBG_LEAVE(et131x_dbginfo);
222}
223
224/*
225 * These macros map the driver-specific init_module() and cleanup_module()
226 * routines so they can be called by the kernel.
227 */
228module_init(et131x_init_module);
229module_exit(et131x_cleanup_module);
230
231
232/**
233 * et131x_find_adapter - Find the adapter and get all the assigned resources
234 * @adapter: pointer to our private adapter structure
235 *
236 * Returns 0 on success, errno on failure (as defined in errno.h)
237 */
238int et131x_find_adapter(struct et131x_adapter *adapter, struct pci_dev *pdev)
239{
240 int result;
241 uint8_t eepromStat;
242 uint8_t maxPayload = 0;
243 uint8_t read_size_reg;
244
245 DBG_ENTER(et131x_dbginfo);
246
247 /* Allow disabling of Non-Maskable Interrupts in I/O space, to
248 * support validation.
249 */
250 if (adapter->RegistryNMIDisable) {
251 uint8_t RegisterVal;
252
253 RegisterVal = inb(ET1310_NMI_DISABLE);
254 RegisterVal &= 0xf3;
255
256 if (adapter->RegistryNMIDisable == 2) {
257 RegisterVal |= 0xc;
258 }
259
260 outb(ET1310_NMI_DISABLE, RegisterVal);
261 }
262
263 /* We first need to check the EEPROM Status code located at offset
264 * 0xB2 of config space
265 */
266 result = pci_read_config_byte(pdev, ET1310_PCI_EEPROM_STATUS,
267 &eepromStat);
268
269 /* THIS IS A WORKAROUND:
270 * I need to call this function twice to get my card in a
271 * LG M1 Express Dual running. I tried also a msleep before this
272 * function, because I thougth there could be some time condidions
273 * but it didn't work. Call the whole function twice also work.
274 */
275 result = pci_read_config_byte(pdev, ET1310_PCI_EEPROM_STATUS,
276 &eepromStat);
277 if (result != PCIBIOS_SUCCESSFUL) {
278 DBG_ERROR(et131x_dbginfo, "Could not read PCI config space for "
279 "EEPROM Status\n");
280 DBG_LEAVE(et131x_dbginfo);
281 return -EIO;
282 }
283
284 /* Determine if the error(s) we care about are present. If they are
285 * present, we need to fail.
286 */
287 if (eepromStat & 0x4C) {
288 result = pci_read_config_byte(pdev, PCI_REVISION_ID,
289 &adapter->RevisionID);
290 if (result != PCIBIOS_SUCCESSFUL) {
291 DBG_ERROR(et131x_dbginfo,
292 "Could not read PCI config space for "
293 "Revision ID\n");
294 DBG_LEAVE(et131x_dbginfo);
295 return -EIO;
296 } else if (adapter->RevisionID == 0x01) {
297 int32_t nLoop;
298 uint8_t ucTemp[4] = { 0xFE, 0x13, 0x10, 0xFF };
299
300 /* Re-write the first 4 bytes if we have an eeprom
301 * present and the revision id is 1, this fixes the
302 * corruption seen with 1310 B Silicon
303 */
304 for (nLoop = 0; nLoop < 3; nLoop++) {
305 EepromWriteByte(adapter, nLoop, ucTemp[nLoop],
306 0, SINGLE_BYTE);
307 }
308 }
309
310 DBG_ERROR(et131x_dbginfo,
311 "Fatal EEPROM Status Error - 0x%04x\n", eepromStat);
312
313 /* This error could mean that there was an error reading the
314 * eeprom or that the eeprom doesn't exist. We will treat
315 * each case the same and not try to gather additional
316 * information that normally would come from the eeprom, like
317 * MAC Address
318 */
319 adapter->bEepromPresent = false;
320
321 DBG_LEAVE(et131x_dbginfo);
322 return -EIO;
323 } else {
324 DBG_TRACE(et131x_dbginfo, "EEPROM Status Code - 0x%04x\n",
325 eepromStat);
326 adapter->bEepromPresent = true;
327 }
328
329 /* Read the EEPROM for information regarding LED behavior. Refer to
330 * ET1310_phy.c, et131x_xcvr_init(), for its use.
331 */
332 EepromReadByte(adapter, 0x70, &adapter->eepromData[0], 0, SINGLE_BYTE);
333 EepromReadByte(adapter, 0x71, &adapter->eepromData[1], 0, SINGLE_BYTE);
334
335 if (adapter->eepromData[0] != 0xcd) {
336 adapter->eepromData[1] = 0x00; // Disable all optional features
337 }
338
339 /* Let's set up the PORT LOGIC Register. First we need to know what
340 * the max_payload_size is
341 */
342 result = pci_read_config_byte(pdev, ET1310_PCI_MAX_PYLD, &maxPayload);
343 if (result != PCIBIOS_SUCCESSFUL) {
344 DBG_ERROR(et131x_dbginfo, "Could not read PCI config space for "
345 "Max Payload Size\n");
346 DBG_LEAVE(et131x_dbginfo);
347 return -EIO;
348 }
349
350 /* Program the Ack/Nak latency and replay timers */
351 maxPayload &= 0x07; // Only the lower 3 bits are valid
352
353 if (maxPayload < 2) {
354 const uint16_t AckNak[2] = { 0x76, 0xD0 };
355 const uint16_t Replay[2] = { 0x1E0, 0x2ED };
356
357 result = pci_write_config_word(pdev, ET1310_PCI_ACK_NACK,
358 AckNak[maxPayload]);
359 if (result != PCIBIOS_SUCCESSFUL) {
360 DBG_ERROR(et131x_dbginfo,
361 "Could not write PCI config space "
362 "for ACK/NAK\n");
363 DBG_LEAVE(et131x_dbginfo);
364 return -EIO;
365 }
366
367 result = pci_write_config_word(pdev, ET1310_PCI_REPLAY,
368 Replay[maxPayload]);
369 if (result != PCIBIOS_SUCCESSFUL) {
370 DBG_ERROR(et131x_dbginfo,
371 "Could not write PCI config space "
372 "for Replay Timer\n");
373 DBG_LEAVE(et131x_dbginfo);
374 return -EIO;
375 }
376 }
377
378 /* l0s and l1 latency timers. We are using default values.
379 * Representing 001 for L0s and 010 for L1
380 */
381 result = pci_write_config_byte(pdev, ET1310_PCI_L0L1LATENCY, 0x11);
382 if (result != PCIBIOS_SUCCESSFUL) {
383 DBG_ERROR(et131x_dbginfo,
384 "Could not write PCI config space for "
385 "Latency Timers\n");
386 DBG_LEAVE(et131x_dbginfo);
387 return -EIO;
388 }
389
390 /* Change the max read size to 2k */
391 result = pci_read_config_byte(pdev, 0x51, &read_size_reg);
392 if (result != PCIBIOS_SUCCESSFUL) {
393 DBG_ERROR(et131x_dbginfo,
394 "Could not read PCI config space for Max read size\n");
395 DBG_LEAVE(et131x_dbginfo);
396 return -EIO;
397 }
398
399 read_size_reg &= 0x8f;
400 read_size_reg |= 0x40;
401
402 result = pci_write_config_byte(pdev, 0x51, read_size_reg);
403 if (result != PCIBIOS_SUCCESSFUL) {
404 DBG_ERROR(et131x_dbginfo,
405 "Could not write PCI config space for Max read size\n");
406 DBG_LEAVE(et131x_dbginfo);
407 return -EIO;
408 }
409
410 /* PCI Express Configuration registers 0x48-0x5B (Device Control) */
411 result = pci_read_config_word(pdev, ET1310_PCI_DEV_CTRL,
412 &adapter->PciXDevCtl);
413 if (result != PCIBIOS_SUCCESSFUL) {
414 DBG_ERROR(et131x_dbginfo,
415 "Could not read PCI config space for PCI Express Dev Ctl\n");
416 DBG_LEAVE(et131x_dbginfo);
417 return -EIO;
418 }
419
420 /* Get MAC address from config space if an eeprom exists, otherwise
421 * the MAC address there will not be valid
422 */
423 if (adapter->bEepromPresent) {
424 int i;
425
426 for (i = 0; i < ETH_ALEN; i++) {
427 result = pci_read_config_byte(
428 pdev, ET1310_PCI_MAC_ADDRESS + i,
429 adapter->PermanentAddress + i);
430 if (result != PCIBIOS_SUCCESSFUL) {
431 DBG_ERROR(et131x_dbginfo,
432 "Could not read PCI config space for MAC address\n");
433 DBG_LEAVE(et131x_dbginfo);
434 return -EIO;
435 }
436 }
437 }
438
439 DBG_LEAVE(et131x_dbginfo);
440 return 0;
441}
442
443/**
444 * et131x_error_timer_handler
445 * @data: timer-specific variable; here a pointer to our adapter structure
446 *
447 * The routine called when the error timer expires, to track the number of
448 * recurring errors.
449 */
450void et131x_error_timer_handler(unsigned long data)
451{
452 struct et131x_adapter *pAdapter = (struct et131x_adapter *) data;
453 PM_CSR_t pm_csr;
454
455 pm_csr.value = readl(&pAdapter->CSRAddress->global.pm_csr.value);
456
457 if (pm_csr.bits.pm_phy_sw_coma == 0) {
458 if (pAdapter->RegistryMACStat) {
459 UpdateMacStatHostCounters(pAdapter);
460 }
461 } else {
462 DBG_VERBOSE(et131x_dbginfo,
463 "No interrupts, in PHY coma, pm_csr = 0x%x\n",
464 pm_csr.value);
465 }
466
467 if (!pAdapter->Bmsr.bits.link_status &&
468 pAdapter->RegistryPhyComa &&
469 pAdapter->PoMgmt.TransPhyComaModeOnBoot < 11) {
470 pAdapter->PoMgmt.TransPhyComaModeOnBoot++;
471 }
472
473 if (pAdapter->PoMgmt.TransPhyComaModeOnBoot == 10) {
474 if (!pAdapter->Bmsr.bits.link_status
475 && pAdapter->RegistryPhyComa) {
476 if (pm_csr.bits.pm_phy_sw_coma == 0) {
477 // NOTE - This was originally a 'sync with interrupt'. How
478 // to do that under Linux?
479 et131x_enable_interrupts(pAdapter);
480 EnablePhyComa(pAdapter);
481 }
482 }
483 }
484
485 /* This is a periodic timer, so reschedule */
486 mod_timer(&pAdapter->ErrorTimer, jiffies +
487 TX_ERROR_PERIOD * HZ / 1000);
488}
489
490/**
491 * et131x_link_detection_handler
492 *
493 * Timer function for link up at driver load time
494 */
495void et131x_link_detection_handler(unsigned long data)
496{
497 struct et131x_adapter *pAdapter = (struct et131x_adapter *) data;
498 unsigned long lockflags;
499
500 /* Let everyone know that we have run */
501 pAdapter->bLinkTimerActive = false;
502
503 if (pAdapter->MediaState == 0) {
504 spin_lock_irqsave(&pAdapter->Lock, lockflags);
505
506 pAdapter->MediaState = NETIF_STATUS_MEDIA_DISCONNECT;
507 MP_CLEAR_FLAG(pAdapter, fMP_ADAPTER_LINK_DETECTION);
508
509 spin_unlock_irqrestore(&pAdapter->Lock, lockflags);
510
511 netif_carrier_off(pAdapter->netdev);
512
513 pAdapter->bSetPending = false;
514 }
515}
516
517/**
518 * et131x_adapter_setup - Set the adapter up as per cassini+ documentation
519 * @adapter: pointer to our private adapter structure
520 *
521 * Returns 0 on success, errno on failure (as defined in errno.h)
522 */
523int et131x_adapter_setup(struct et131x_adapter *pAdapter)
524{
525 int status = 0;
526
527 DBG_ENTER(et131x_dbginfo);
528
529 /* Configure the JAGCore */
530 ConfigGlobalRegs(pAdapter);
531
532 ConfigMACRegs1(pAdapter);
533 ConfigMMCRegs(pAdapter);
534
535 ConfigRxMacRegs(pAdapter);
536 ConfigTxMacRegs(pAdapter);
537
538 ConfigRxDmaRegs(pAdapter);
539 ConfigTxDmaRegs(pAdapter);
540
541 ConfigMacStatRegs(pAdapter);
542
543 /* Move the following code to Timer function?? */
544 status = et131x_xcvr_find(pAdapter);
545
546 if (status != 0) {
547 DBG_WARNING(et131x_dbginfo, "Could not find the xcvr\n");
548 }
549
550 /* Prepare the TRUEPHY library. */
551 ET1310_PhyInit(pAdapter);
552
553 /* Reset the phy now so changes take place */
554 ET1310_PhyReset(pAdapter);
555
556 /* Power down PHY */
557 ET1310_PhyPowerDown(pAdapter, 1);
558
559 /*
560 * We need to turn off 1000 base half dulplex, the mac does not
561 * support it. For the 10/100 part, turn off all gig advertisement
562 */
563 if (pAdapter->DeviceID != ET131X_PCI_DEVICE_ID_FAST) {
564 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_FULL);
565 } else {
566 ET1310_PhyAdvertise1000BaseT(pAdapter, TRUEPHY_ADV_DUPLEX_NONE);
567 }
568
569 /* Power up PHY */
570 ET1310_PhyPowerDown(pAdapter, 0);
571
572 et131x_setphy_normal(pAdapter);
573
574 DBG_LEAVE(et131x_dbginfo);
575 return status;
576}
577
578/**
579 * et131x_setup_hardware_properties - set up the MAC Address on the ET1310
580 * @adapter: pointer to our private adapter structure
581 */
582void et131x_setup_hardware_properties(struct et131x_adapter *adapter)
583{
584 DBG_ENTER(et131x_dbginfo);
585
586 /* If have our default mac from registry and no mac address from
587 * EEPROM then we need to generate the last octet and set it on the
588 * device
589 */
590 if (!adapter->bOverrideAddress) {
591 if (adapter->PermanentAddress[0] == 0x00 &&
592 adapter->PermanentAddress[1] == 0x00 &&
593 adapter->PermanentAddress[2] == 0x00 &&
594 adapter->PermanentAddress[3] == 0x00 &&
595 adapter->PermanentAddress[4] == 0x00 &&
596 adapter->PermanentAddress[5] == 0x00) {
597 /*
598 * We need to randomly generate the last octet so we
599 * decrease our chances of setting the mac address to
600 * same as another one of our cards in the system
601 */
602 get_random_bytes(&adapter->CurrentAddress[5], 1);
603
604 /*
605 * We have the default value in the register we are
606 * working with so we need to copy the current
607 * address into the permanent address
608 */
609 memcpy(adapter->PermanentAddress,
610 adapter->CurrentAddress, ETH_ALEN);
611 } else {
612 /* We do not have an override address, so set the
613 * current address to the permanent address and add
614 * it to the device
615 */
616 memcpy(adapter->CurrentAddress,
617 adapter->PermanentAddress, ETH_ALEN);
618 }
619 }
620
621 DBG_LEAVE(et131x_dbginfo);
622}
623
624/**
625 * et131x_soft_reset - Issue a soft reset to the hardware, complete for ET1310
626 * @adapter: pointer to our private adapter structure
627 */
628void et131x_soft_reset(struct et131x_adapter *adapter)
629{
630 DBG_ENTER(et131x_dbginfo);
631
632 /* Disable MAC Core */
633 writel(0xc00f0000, &adapter->CSRAddress->mac.cfg1.value);
634
635 /* Set everything to a reset value */
636 writel(0x7F, &adapter->CSRAddress->global.sw_reset.value);
637 writel(0x000f0000, &adapter->CSRAddress->mac.cfg1.value);
638 writel(0x00000000, &adapter->CSRAddress->mac.cfg1.value);
639
640 DBG_LEAVE(et131x_dbginfo);
641}
642
643/**
644 * et131x_align_allocated_memory - Align allocated memory on a given boundary
645 * @adapter: pointer to our adapter structure
646 * @phys_addr: pointer to Physical address
647 * @offset: pointer to the offset variable
648 * @mask: correct mask
649 */
650void et131x_align_allocated_memory(struct et131x_adapter *adapter,
651 uint64_t *phys_addr,
652 uint64_t *offset, uint64_t mask)
653{
654 uint64_t new_addr;
655
656 DBG_ENTER(et131x_dbginfo);
657
658 *offset = 0;
659
660 new_addr = *phys_addr & ~mask;
661
662 if (new_addr != *phys_addr) {
663 /* Move to next aligned block */
664 new_addr += mask + 1;
665 /* Return offset for adjusting virt addr */
666 *offset = new_addr - *phys_addr;
667 /* Return new physical address */
668 *phys_addr = new_addr;
669 }
670
671 DBG_LEAVE(et131x_dbginfo);
672}
673
674/**
675 * et131x_adapter_memory_alloc
676 * @adapter: pointer to our private adapter structure
677 *
678 * Returns 0 on success, errno on failure (as defined in errno.h).
679 *
680 * Allocate all the memory blocks for send, receive and others.
681 */
682int et131x_adapter_memory_alloc(struct et131x_adapter *adapter)
683{
684 int status = 0;
685
686 DBG_ENTER(et131x_dbginfo);
687
688 do {
689 /* Allocate memory for the Tx Ring */
690 status = et131x_tx_dma_memory_alloc(adapter);
691 if (status != 0) {
692 DBG_ERROR(et131x_dbginfo,
693 "et131x_tx_dma_memory_alloc FAILED\n");
694 break;
695 }
696
697 /* Receive buffer memory allocation */
698 status = et131x_rx_dma_memory_alloc(adapter);
699 if (status != 0) {
700 DBG_ERROR(et131x_dbginfo,
701 "et131x_rx_dma_memory_alloc FAILED\n");
702 et131x_tx_dma_memory_free(adapter);
703 break;
704 }
705
706 /* Init receive data structures */
707 status = et131x_init_recv(adapter);
708 if (status != 0) {
709 DBG_ERROR(et131x_dbginfo, "et131x_init_recv FAILED\n");
710 et131x_tx_dma_memory_free(adapter);
711 et131x_rx_dma_memory_free(adapter);
712 break;
713 }
714 } while (0);
715
716 DBG_LEAVE(et131x_dbginfo);
717 return status;
718}
719
720/**
721 * et131x_adapter_memory_free - Free all memory allocated for use by Tx & Rx
722 * @adapter: pointer to our private adapter structure
723 */
724void et131x_adapter_memory_free(struct et131x_adapter *adapter)
725{
726 DBG_ENTER(et131x_dbginfo);
727
728 /* Free DMA memory */
729 et131x_tx_dma_memory_free(adapter);
730 et131x_rx_dma_memory_free(adapter);
731
732 DBG_LEAVE(et131x_dbginfo);
733}
734
735/**
736 * et131x_pci_remove
737 * @pdev: a pointer to the device's pci_dev structure
738 *
739 * Registered in the pci_driver structure, this function is called when the
740 * PCI subsystem detects that a PCI device which matches the information
741 * contained in the pci_device_id table has been removed.
742 */
743void __devexit et131x_pci_remove(struct pci_dev *pdev)
744{
745 struct net_device *netdev;
746 struct et131x_adapter *adapter;
747
748 DBG_ENTER(et131x_dbginfo);
749
750 /* Retrieve the net_device pointer from the pci_dev struct, as well
751 * as the private adapter struct
752 */
753 netdev = (struct net_device *) pci_get_drvdata(pdev);
754 adapter = netdev_priv(netdev);
755
756 /* Perform device cleanup */
757 unregister_netdev(netdev);
758 et131x_adapter_memory_free(adapter);
759 iounmap(adapter->CSRAddress);
760 free_netdev(netdev);
761 pci_release_regions(pdev);
762 pci_disable_device(pdev);
763
764 DBG_LEAVE(et131x_dbginfo);
765}
766
767/**
768 * et131x_pci_setup - Perform device initialization
769 * @pdev: a pointer to the device's pci_dev structure
770 * @ent: this device's entry in the pci_device_id table
771 *
772 * Returns 0 on success, errno on failure (as defined in errno.h)
773 *
774 * Registered in the pci_driver structure, this function is called when the
775 * PCI subsystem finds a new PCI device which matches the information
776 * contained in the pci_device_id table. This routine is the equivalent to
777 * a device insertion routine.
778 */
779int __devinit et131x_pci_setup(struct pci_dev *pdev,
780 const struct pci_device_id *ent)
781{
782 int result = 0;
783 int pm_cap;
784 bool pci_using_dac;
785 struct net_device *netdev = NULL;
786 struct et131x_adapter *adapter = NULL;
787
788 DBG_ENTER(et131x_dbginfo);
789
790 /* Enable the device via the PCI subsystem */
791 result = pci_enable_device(pdev);
792 if (result != 0) {
793 DBG_ERROR(et131x_dbginfo, "pci_enable_device() failed\n");
794 goto out;
795 }
796
797 /* Perform some basic PCI checks */
798 if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {
799 DBG_ERROR(et131x_dbginfo,
800 "Can't find PCI device's base address\n");
801 result = -ENODEV;
802 goto out;
803 }
804
805 result = pci_request_regions(pdev, DRIVER_NAME);
806 if (result != 0) {
807 DBG_ERROR(et131x_dbginfo, "Can't get PCI resources\n");
808 goto err_disable;
809 }
810
811 /* Enable PCI bus mastering */
812 DBG_TRACE(et131x_dbginfo, "Setting PCI Bus Mastering...\n");
813 pci_set_master(pdev);
814
815 /* Query PCI for Power Mgmt Capabilities
816 *
817 * NOTE: Now reading PowerMgmt in another location; is this still
818 * needed?
819 */
820 pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM);
821 if (pm_cap == 0) {
822 DBG_ERROR(et131x_dbginfo,
823 "Cannot find Power Management capabilities\n");
824 result = -EIO;
825 goto err_release_res;
826 }
827
828 /* Check the DMA addressing support of this device */
829 if (!pci_set_dma_mask(pdev, 0xffffffffffffffffULL)) {
830 DBG_TRACE(et131x_dbginfo, "64-bit DMA addressing supported\n");
831 pci_using_dac = true;
832
833 result =
834 pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL);
835 if (result != 0) {
836 DBG_ERROR(et131x_dbginfo,
837 "Unable to obtain 64 bit DMA for consistent allocations\n");
838 goto err_release_res;
839 }
840 } else if (!pci_set_dma_mask(pdev, 0xffffffffULL)) {
841 DBG_TRACE(et131x_dbginfo,
842 "64-bit DMA addressing NOT supported\n");
843 DBG_TRACE(et131x_dbginfo,
844 "32-bit DMA addressing will be used\n");
845 pci_using_dac = false;
846 } else {
847 DBG_ERROR(et131x_dbginfo, "No usable DMA addressing method\n");
848 result = -EIO;
849 goto err_release_res;
850 }
851
852 /* Allocate netdev and private adapter structs */
853 DBG_TRACE(et131x_dbginfo,
854 "Allocate netdev and private adapter structs...\n");
855 netdev = et131x_device_alloc();
856 if (netdev == NULL) {
857 DBG_ERROR(et131x_dbginfo, "Couldn't alloc netdev struct\n");
858 result = -ENOMEM;
859 goto err_release_res;
860 }
861
862 /* Setup the fundamental net_device and private adapter structure elements */
863 DBG_TRACE(et131x_dbginfo, "Setting fundamental net_device info...\n");
864 SET_NETDEV_DEV(netdev, &pdev->dev);
865 if (pci_using_dac) {
866 //netdev->features |= NETIF_F_HIGHDMA;
867 }
868
869 /*
870 * NOTE - Turn this on when we're ready to deal with SG-DMA
871 *
872 * NOTE: According to "Linux Device Drivers", 3rd ed, Rubini et al,
873 * if checksumming is not performed in HW, then the kernel will not
874 * use SG.
875 * From pp 510-511:
876 *
877 * "Note that the kernel does not perform scatter/gather I/O to your
878 * device if it does not also provide some form of checksumming as
879 * well. The reason is that, if the kernel has to make a pass over a
880 * fragmented ("nonlinear") packet to calculate the checksum, it
881 * might as well copy the data and coalesce the packet at the same
882 * time."
883 *
884 * This has been verified by setting the flags below and still not
885 * receiving a scattered buffer from the network stack, so leave it
886 * off until checksums are calculated in HW.
887 */
888 //netdev->features |= NETIF_F_SG;
889 //netdev->features |= NETIF_F_NO_CSUM;
890 //netdev->features |= NETIF_F_LLTX;
891
892 /* Allocate private adapter struct and copy in relevant information */
893 adapter = netdev_priv(netdev);
894 adapter->pdev = pdev;
895 adapter->netdev = netdev;
896 adapter->VendorID = pdev->vendor;
897 adapter->DeviceID = pdev->device;
898
899 /* Do the same for the netdev struct */
900 netdev->irq = pdev->irq;
901 netdev->base_addr = pdev->resource[0].start;
902
903 /* Initialize spinlocks here */
904 DBG_TRACE(et131x_dbginfo, "Initialize spinlocks...\n");
905
906 spin_lock_init(&adapter->Lock);
907 spin_lock_init(&adapter->TCBSendQLock);
908 spin_lock_init(&adapter->TCBReadyQLock);
909 spin_lock_init(&adapter->SendHWLock);
910 spin_lock_init(&adapter->SendWaitLock);
911 spin_lock_init(&adapter->RcvLock);
912 spin_lock_init(&adapter->RcvPendLock);
913 spin_lock_init(&adapter->FbrLock);
914 spin_lock_init(&adapter->PHYLock);
915
916 /* Parse configuration parameters into the private adapter struct */
917 et131x_config_parse(adapter);
918
919 /* Find the physical adapter
920 *
921 * NOTE: This is the equivalent of the MpFindAdapter() routine; can we
922 * lump it's init with the device specific init below into a
923 * single init function?
924 */
925 //while (et131x_find_adapter(adapter, pdev) != 0);
926 et131x_find_adapter(adapter, pdev);
927
928 /* Map the bus-relative registers to system virtual memory */
929 DBG_TRACE(et131x_dbginfo,
930 "Mapping bus-relative registers to virtual memory...\n");
931
932 adapter->CSRAddress = ioremap_nocache(pci_resource_start(pdev, 0),
933 pci_resource_len(pdev, 0));
934 if (adapter->CSRAddress == NULL) {
935 DBG_ERROR(et131x_dbginfo, "Cannot map device registers\n");
936 result = -ENOMEM;
937 goto err_free_dev;
938 }
939
940 /* Perform device-specific initialization here (See code below) */
941
942 /* If Phy COMA mode was enabled when we went down, disable it here. */
943 {
944 PM_CSR_t GlobalPmCSR = { 0 };
945
946 GlobalPmCSR.bits.pm_sysclk_gate = 1;
947 GlobalPmCSR.bits.pm_txclk_gate = 1;
948 GlobalPmCSR.bits.pm_rxclk_gate = 1;
949 writel(GlobalPmCSR.value,
950 &adapter->CSRAddress->global.pm_csr.value);
951 }
952
953 /* Issue a global reset to the et1310 */
954 DBG_TRACE(et131x_dbginfo, "Issuing soft reset...\n");
955 et131x_soft_reset(adapter);
956
957 /* Disable all interrupts (paranoid) */
958 DBG_TRACE(et131x_dbginfo, "Disable device interrupts...\n");
959 et131x_disable_interrupts(adapter);
960
961 /* Allocate DMA memory */
962 result = et131x_adapter_memory_alloc(adapter);
963 if (result != 0) {
964 DBG_ERROR(et131x_dbginfo,
965 "Could not alloc adapater memory (DMA)\n");
966 goto err_iounmap;
967 }
968
969 /* Init send data structures */
970 DBG_TRACE(et131x_dbginfo, "Init send data structures...\n");
971 et131x_init_send(adapter);
972
973 adapter->PoMgmt.PowerState = NdisDeviceStateD0;
974
975 /* Register the interrupt
976 *
977 * NOTE - This is being done in the open routine, where most other
978 * Linux drivers setup IRQ handlers. Make sure device
979 * interrupts are not turned on before the IRQ is registered!!
980 *
981 * What we will do here is setup the task structure for the
982 * ISR's deferred handler
983 */
984 INIT_WORK(&adapter->task, et131x_isr_handler);
985
986 /* Determine MAC Address, and copy into the net_device struct */
987 DBG_TRACE(et131x_dbginfo, "Retrieve MAC address...\n");
988 et131x_setup_hardware_properties(adapter);
989
990 memcpy(netdev->dev_addr, adapter->CurrentAddress, ETH_ALEN);
991
992 /* Setup et1310 as per the documentation */
993 DBG_TRACE(et131x_dbginfo, "Setup the adapter...\n");
994 et131x_adapter_setup(adapter);
995
996 /* Create a timer to count errors received by the NIC */
997 init_timer(&adapter->ErrorTimer);
998
999 adapter->ErrorTimer.expires = jiffies + TX_ERROR_PERIOD * HZ / 1000;
1000 adapter->ErrorTimer.function = et131x_error_timer_handler;
1001 adapter->ErrorTimer.data = (unsigned long)adapter;
1002
1003 /* Initialize link state */
1004 et131x_link_detection_handler((unsigned long)adapter);
1005
1006 /* Intialize variable for counting how long we do not have link status */
1007 adapter->PoMgmt.TransPhyComaModeOnBoot = 0;
1008
1009 /* We can enable interrupts now
1010 *
1011 * NOTE - Because registration of interrupt handler is done in the
1012 * device's open(), defer enabling device interrupts to that
1013 * point
1014 */
1015
1016 /* Register the net_device struct with the Linux network layer */
1017 DBG_TRACE(et131x_dbginfo, "Registering net_device...\n");
1018 if ((result = register_netdev(netdev)) != 0) {
1019 DBG_ERROR(et131x_dbginfo, "register_netdev() failed\n");
1020 goto err_mem_free;
1021 }
1022
1023 /* Register the net_device struct with the PCI subsystem. Save a copy
1024 * of the PCI config space for this device now that the device has
1025 * been initialized, just in case it needs to be quickly restored.
1026 */
1027 pci_set_drvdata(pdev, netdev);
1028
1029 pci_save_state(adapter->pdev);
1030
1031out:
1032 DBG_LEAVE(et131x_dbginfo);
1033 return result;
1034
1035err_mem_free:
1036 et131x_adapter_memory_free(adapter);
1037err_iounmap:
1038 iounmap(adapter->CSRAddress);
1039err_free_dev:
1040 free_netdev(netdev);
1041err_release_res:
1042 pci_release_regions(pdev);
1043err_disable:
1044 pci_disable_device(pdev);
1045 goto out;
1046}
diff --git a/drivers/staging/et131x/et131x_initpci.h b/drivers/staging/et131x/et131x_initpci.h
new file mode 100644
index 00000000000..bbacb627759
--- /dev/null
+++ b/drivers/staging/et131x/et131x_initpci.h
@@ -0,0 +1,73 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_initpci.h - Header which includes common data and function prototypes
12 * related to the driver's PCI (and PCI Express) information.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_INITPCI_H__
60#define __ET131X_INITPCI_H__
61
62/* Function Prototypes */
63void et131x_align_allocated_memory(struct et131x_adapter *adapter,
64 u64 *phys_addr,
65 u64 *offset, u64 mask);
66
67int et131x_adapter_setup(struct et131x_adapter *adapter);
68int et131x_adapter_memory_alloc(struct et131x_adapter *adapter);
69void et131x_adapter_memory_free(struct et131x_adapter *adapter);
70void et131x_setup_hardware_properties(struct et131x_adapter *adapter);
71void et131x_soft_reset(struct et131x_adapter *adapter);
72
73#endif /* __ET131X_INITPCI_H__ */
diff --git a/drivers/staging/et131x/et131x_isr.c b/drivers/staging/et131x/et131x_isr.c
new file mode 100644
index 00000000000..00afad174a6
--- /dev/null
+++ b/drivers/staging/et131x/et131x_isr.c
@@ -0,0 +1,488 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_isr.c - File which contains the ISR, ISR handler, and related routines
12 * for processing interrupts from the device.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#include "et131x_version.h"
60#include "et131x_debug.h"
61#include "et131x_defs.h"
62
63#include <linux/init.h>
64#include <linux/module.h>
65#include <linux/types.h>
66#include <linux/kernel.h>
67
68#include <linux/sched.h>
69#include <linux/ptrace.h>
70#include <linux/slab.h>
71#include <linux/ctype.h>
72#include <linux/string.h>
73#include <linux/timer.h>
74#include <linux/interrupt.h>
75#include <linux/in.h>
76#include <linux/delay.h>
77#include <asm/io.h>
78#include <asm/system.h>
79#include <asm/bitops.h>
80
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90#include "et1310_mac.h"
91
92#include "et131x_adapter.h"
93
94/* Data for debugging facilities */
95#ifdef CONFIG_ET131X_DEBUG
96extern dbg_info_t *et131x_dbginfo;
97#endif /* CONFIG_ET131X_DEBUG */
98
99/**
100 * et131x_isr - The Interrupt Service Routine for the driver.
101 * @irq: the IRQ on which the interrupt was received.
102 * @dev_id: device-specific info (here a pointer to a net_device struct)
103 *
104 * Returns a value indicating if the interrupt was handled.
105 */
106irqreturn_t et131x_isr(int irq, void *dev_id)
107{
108 bool handled = true;
109 struct net_device *netdev = (struct net_device *)dev_id;
110 struct et131x_adapter *adapter = NULL;
111 INTERRUPT_t status;
112
113 if (netdev == NULL || !netif_device_present(netdev)) {
114 DBG_WARNING(et131x_dbginfo,
115 "No net_device struct or device not present\n");
116 handled = false;
117 goto out;
118 }
119
120 adapter = netdev_priv(netdev);
121
122 /* If the adapter is in low power state, then it should not
123 * recognize any interrupt
124 */
125
126 /* Disable Device Interrupts */
127 et131x_disable_interrupts(adapter);
128
129 /* Get a copy of the value in the interrupt status register
130 * so we can process the interrupting section
131 */
132 status.value = readl(&adapter->CSRAddress->global.int_status.value);
133
134 if (adapter->FlowControl == TxOnly ||
135 adapter->FlowControl == Both) {
136 status.value &= ~INT_MASK_ENABLE;
137 } else {
138 status.value &= ~INT_MASK_ENABLE_NO_FLOW;
139 }
140
141 /* Make sure this is our interrupt */
142 if (!status.value) {
143#ifdef CONFIG_ET131X_DEBUG
144 adapter->Stats.UnhandledInterruptsPerSec++;
145#endif
146 handled = false;
147 DBG_VERBOSE(et131x_dbginfo, "NOT OUR INTERRUPT\n");
148 et131x_enable_interrupts(adapter);
149 goto out;
150 }
151
152 /* This is our interrupt, so process accordingly */
153#ifdef CONFIG_ET131X_DEBUG
154 if (status.bits.rxdma_xfr_done) {
155 adapter->Stats.RxDmaInterruptsPerSec++;
156 }
157
158 if (status.bits.txdma_isr) {
159 adapter->Stats.TxDmaInterruptsPerSec++;
160 }
161#endif
162
163 if (status.bits.watchdog_interrupt) {
164 PMP_TCB pMpTcb = adapter->TxRing.CurrSendHead;
165
166 if (pMpTcb) {
167 if (++pMpTcb->PacketStaleCount > 1) {
168 status.bits.txdma_isr = 1;
169 }
170 }
171
172 if (adapter->RxRing.UnfinishedReceives) {
173 status.bits.rxdma_xfr_done = 1;
174 } else if (pMpTcb == NULL) {
175 writel(0, &adapter->CSRAddress->global.watchdog_timer);
176 }
177
178 status.bits.watchdog_interrupt = 0;
179#ifdef CONFIG_ET131X_DEBUG
180 adapter->Stats.WatchDogInterruptsPerSec++;
181#endif
182 }
183
184 if (status.value == 0) {
185 /* This interrupt has in some way been "handled" by
186 * the ISR. Either it was a spurious Rx interrupt, or
187 * it was a Tx interrupt that has been filtered by
188 * the ISR.
189 */
190 et131x_enable_interrupts(adapter);
191 goto out;
192 }
193
194 /* We need to save the interrupt status value for use in our
195 * DPC. We will clear the software copy of that in that
196 * routine.
197 */
198 adapter->Stats.InterruptStatus = status;
199
200 /* Schedule the ISR handler as a bottom-half task in the
201 * kernel's tq_immediate queue, and mark the queue for
202 * execution
203 */
204 schedule_work(&adapter->task);
205
206out:
207 return IRQ_RETVAL(handled);
208}
209
210/**
211 * et131x_isr_handler - The ISR handler
212 * @p_adapter, a pointer to the device's private adapter structure
213 *
214 * scheduled to run in a deferred context by the ISR. This is where the ISR's
215 * work actually gets done.
216 */
217void et131x_isr_handler(struct work_struct *work)
218{
219 struct et131x_adapter *pAdapter =
220 container_of(work, struct et131x_adapter, task);
221 INTERRUPT_t GlobStatus = pAdapter->Stats.InterruptStatus;
222 ADDRESS_MAP_t __iomem *iomem = pAdapter->CSRAddress;
223
224 /*
225 * These first two are by far the most common. Once handled, we clear
226 * their two bits in the status word. If the word is now zero, we
227 * exit.
228 */
229 /* Handle all the completed Transmit interrupts */
230 if (GlobStatus.bits.txdma_isr) {
231 DBG_TX(et131x_dbginfo, "TXDMA_ISR interrupt\n");
232 et131x_handle_send_interrupt(pAdapter);
233 }
234
235 /* Handle all the completed Receives interrupts */
236 if (GlobStatus.bits.rxdma_xfr_done) {
237 DBG_RX(et131x_dbginfo, "RXDMA_XFR_DONE interrupt\n");
238 et131x_handle_recv_interrupt(pAdapter);
239 }
240
241 GlobStatus.value &= 0xffffffd7;
242
243 if (GlobStatus.value) {
244 /* Handle the TXDMA Error interrupt */
245 if (GlobStatus.bits.txdma_err) {
246 TXDMA_ERROR_t TxDmaErr;
247
248 /* Following read also clears the register (COR) */
249 TxDmaErr.value = readl(&iomem->txdma.TxDmaError.value);
250
251 DBG_WARNING(et131x_dbginfo,
252 "TXDMA_ERR interrupt, error = %d\n",
253 TxDmaErr.value);
254 }
255
256 /* Handle Free Buffer Ring 0 and 1 Low interrupt */
257 if (GlobStatus.bits.rxdma_fb_ring0_low ||
258 GlobStatus.bits.rxdma_fb_ring1_low) {
259 /*
260 * This indicates the number of unused buffers in
261 * RXDMA free buffer ring 0 is <= the limit you
262 * programmed. Free buffer resources need to be
263 * returned. Free buffers are consumed as packets
264 * are passed from the network to the host. The host
265 * becomes aware of the packets from the contents of
266 * the packet status ring. This ring is queried when
267 * the packet done interrupt occurs. Packets are then
268 * passed to the OS. When the OS is done with the
269 * packets the resources can be returned to the
270 * ET1310 for re-use. This interrupt is one method of
271 * returning resources.
272 */
273 DBG_WARNING(et131x_dbginfo,
274 "RXDMA_FB_RING0_LOW or "
275 "RXDMA_FB_RING1_LOW interrupt\n");
276
277 /* If the user has flow control on, then we will
278 * send a pause packet, otherwise just exit
279 */
280 if (pAdapter->FlowControl == TxOnly ||
281 pAdapter->FlowControl == Both) {
282 PM_CSR_t pm_csr;
283
284 /* Tell the device to send a pause packet via
285 * the back pressure register
286 */
287 pm_csr.value = readl(&iomem->global.pm_csr.value);
288 if (pm_csr.bits.pm_phy_sw_coma == 0) {
289 TXMAC_BP_CTRL_t bp_ctrl = { 0 };
290
291 bp_ctrl.bits.bp_req = 1;
292 bp_ctrl.bits.bp_xonxoff = 1;
293 writel(bp_ctrl.value,
294 &iomem->txmac.bp_ctrl.value);
295 }
296 }
297 }
298
299 /* Handle Packet Status Ring Low Interrupt */
300 if (GlobStatus.bits.rxdma_pkt_stat_ring_low) {
301 DBG_WARNING(et131x_dbginfo,
302 "RXDMA_PKT_STAT_RING_LOW interrupt\n");
303
304 /*
305 * Same idea as with the two Free Buffer Rings.
306 * Packets going from the network to the host each
307 * consume a free buffer resource and a packet status
308 * resource. These resoures are passed to the OS.
309 * When the OS is done with the resources, they need
310 * to be returned to the ET1310. This is one method
311 * of returning the resources.
312 */
313 }
314
315 /* Handle RXDMA Error Interrupt */
316 if (GlobStatus.bits.rxdma_err) {
317 /*
318 * The rxdma_error interrupt is sent when a time-out
319 * on a request issued by the JAGCore has occurred or
320 * a completion is returned with an un-successful
321 * status. In both cases the request is considered
322 * complete. The JAGCore will automatically re-try the
323 * request in question. Normally information on events
324 * like these are sent to the host using the "Advanced
325 * Error Reporting" capability. This interrupt is
326 * another way of getting similar information. The
327 * only thing required is to clear the interrupt by
328 * reading the ISR in the global resources. The
329 * JAGCore will do a re-try on the request. Normally
330 * you should never see this interrupt. If you start
331 * to see this interrupt occurring frequently then
332 * something bad has occurred. A reset might be the
333 * thing to do.
334 */
335 // TRAP();
336
337 pAdapter->TxMacTest.value =
338 readl(&iomem->txmac.tx_test.value);
339 DBG_WARNING(et131x_dbginfo,
340 "RxDMA_ERR interrupt, error %x\n",
341 pAdapter->TxMacTest.value);
342 }
343
344 /* Handle the Wake on LAN Event */
345 if (GlobStatus.bits.wake_on_lan) {
346 /*
347 * This is a secondary interrupt for wake on LAN.
348 * The driver should never see this, if it does,
349 * something serious is wrong. We will TRAP the
350 * message when we are in DBG mode, otherwise we
351 * will ignore it.
352 */
353 DBG_ERROR(et131x_dbginfo, "WAKE_ON_LAN interrupt\n");
354 }
355
356 /* Handle the PHY interrupt */
357 if (GlobStatus.bits.phy_interrupt) {
358 PM_CSR_t pm_csr;
359 MI_BMSR_t BmsrInts, BmsrData;
360 MI_ISR_t myIsr;
361
362 DBG_VERBOSE(et131x_dbginfo, "PHY interrupt\n");
363
364 /* If we are in coma mode when we get this interrupt,
365 * we need to disable it.
366 */
367 pm_csr.value = readl(&iomem->global.pm_csr.value);
368 if (pm_csr.bits.pm_phy_sw_coma == 1) {
369 /*
370 * Check to see if we are in coma mode and if
371 * so, disable it because we will not be able
372 * to read PHY values until we are out.
373 */
374 DBG_VERBOSE(et131x_dbginfo,
375 "Device is in COMA mode, "
376 "need to wake up\n");
377 DisablePhyComa(pAdapter);
378 }
379
380 /* Read the PHY ISR to clear the reason for the
381 * interrupt.
382 */
383 MiRead(pAdapter, (uint8_t) offsetof(MI_REGS_t, isr),
384 &myIsr.value);
385
386 if (!pAdapter->ReplicaPhyLoopbk) {
387 MiRead(pAdapter,
388 (uint8_t) offsetof(MI_REGS_t, bmsr),
389 &BmsrData.value);
390
391 BmsrInts.value =
392 pAdapter->Bmsr.value ^ BmsrData.value;
393 pAdapter->Bmsr.value = BmsrData.value;
394
395 DBG_VERBOSE(et131x_dbginfo,
396 "Bmsr.value = 0x%04x,"
397 "Bmsr_ints.value = 0x%04x\n",
398 BmsrData.value, BmsrInts.value);
399
400 /* Do all the cable in / cable out stuff */
401 et131x_Mii_check(pAdapter, BmsrData, BmsrInts);
402 }
403 }
404
405 /* Let's move on to the TxMac */
406 if (GlobStatus.bits.txmac_interrupt) {
407 pAdapter->TxRing.TxMacErr.value =
408 readl(&iomem->txmac.err.value);
409
410 /*
411 * When any of the errors occur and TXMAC generates
412 * an interrupt to report these errors, it usually
413 * means that TXMAC has detected an error in the data
414 * stream retrieved from the on-chip Tx Q. All of
415 * these errors are catastrophic and TXMAC won't be
416 * able to recover data when these errors occur. In
417 * a nutshell, the whole Tx path will have to be reset
418 * and re-configured afterwards.
419 */
420 DBG_WARNING(et131x_dbginfo,
421 "TXMAC interrupt, error 0x%08x\n",
422 pAdapter->TxRing.TxMacErr.value);
423
424 /* If we are debugging, we want to see this error,
425 * otherwise we just want the device to be reset and
426 * continue
427 */
428 //DBG_TRAP();
429 }
430
431 /* Handle RXMAC Interrupt */
432 if (GlobStatus.bits.rxmac_interrupt) {
433 /*
434 * These interrupts are catastrophic to the device,
435 * what we need to do is disable the interrupts and
436 * set the flag to cause us to reset so we can solve
437 * this issue.
438 */
439 // MP_SET_FLAG( pAdapter, fMP_ADAPTER_HARDWARE_ERROR );
440
441 DBG_WARNING(et131x_dbginfo,
442 "RXMAC interrupt, error 0x%08x. Requesting reset\n",
443 readl(&iomem->rxmac.err_reg.value));
444
445 DBG_WARNING(et131x_dbginfo,
446 "Enable 0x%08x, Diag 0x%08x\n",
447 readl(&iomem->rxmac.ctrl.value),
448 readl(&iomem->rxmac.rxq_diag.value));
449
450 /*
451 * If we are debugging, we want to see this error,
452 * otherwise we just want the device to be reset and
453 * continue
454 */
455 // TRAP();
456 }
457
458 /* Handle MAC_STAT Interrupt */
459 if (GlobStatus.bits.mac_stat_interrupt) {
460 /*
461 * This means at least one of the un-masked counters
462 * in the MAC_STAT block has rolled over. Use this
463 * to maintain the top, software managed bits of the
464 * counter(s).
465 */
466 DBG_VERBOSE(et131x_dbginfo, "MAC_STAT interrupt\n");
467 HandleMacStatInterrupt(pAdapter);
468 }
469
470 /* Handle SLV Timeout Interrupt */
471 if (GlobStatus.bits.slv_timeout) {
472 /*
473 * This means a timeout has occured on a read or
474 * write request to one of the JAGCore registers. The
475 * Global Resources block has terminated the request
476 * and on a read request, returned a "fake" value.
477 * The most likely reasons are: Bad Address or the
478 * addressed module is in a power-down state and
479 * can't respond.
480 */
481 DBG_VERBOSE(et131x_dbginfo, "SLV_TIMEOUT interrupt\n");
482 }
483 }
484
485 if (pAdapter->PoMgmt.PowerState == NdisDeviceStateD0) {
486 et131x_enable_interrupts(pAdapter);
487 }
488}
diff --git a/drivers/staging/et131x/et131x_isr.h b/drivers/staging/et131x/et131x_isr.h
new file mode 100644
index 00000000000..76a51d56551
--- /dev/null
+++ b/drivers/staging/et131x/et131x_isr.h
@@ -0,0 +1,65 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_isr.h - Defines, structs, enums, prototypes, etc. pertaining to the
12 * ISR processing code.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_ISR_H__
60#define __ET131X_ISR_H__
61
62irqreturn_t et131x_isr(int irq, void *dev_id);
63void et131x_isr_handler(struct work_struct *work);
64
65#endif /* __ET131X_ISR_H__ */
diff --git a/drivers/staging/et131x/et131x_netdev.c b/drivers/staging/et131x/et131x_netdev.c
new file mode 100644
index 00000000000..de65972ff36
--- /dev/null
+++ b/drivers/staging/et131x/et131x_netdev.c
@@ -0,0 +1,856 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_netdev.c - Routines and data required by all Linux network devices.
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#include "et131x_version.h"
59#include "et131x_debug.h"
60#include "et131x_defs.h"
61
62#include <linux/init.h>
63#include <linux/module.h>
64#include <linux/types.h>
65#include <linux/kernel.h>
66
67#include <linux/sched.h>
68#include <linux/ptrace.h>
69#include <linux/slab.h>
70#include <linux/ctype.h>
71#include <linux/string.h>
72#include <linux/timer.h>
73#include <linux/interrupt.h>
74#include <linux/in.h>
75#include <linux/delay.h>
76#include <asm/io.h>
77#include <asm/system.h>
78#include <asm/bitops.h>
79
80#include <linux/mii.h>
81#include <linux/netdevice.h>
82#include <linux/etherdevice.h>
83#include <linux/skbuff.h>
84#include <linux/if_arp.h>
85#include <linux/ioport.h>
86
87#include "et1310_phy.h"
88#include "et1310_pm.h"
89#include "et1310_jagcore.h"
90#include "et1310_mac.h"
91#include "et1310_tx.h"
92
93#include "et131x_adapter.h"
94#include "et131x_isr.h"
95#include "et131x_initpci.h"
96
97/* Data for debugging facilities */
98#ifdef CONFIG_ET131X_DEBUG
99extern dbg_info_t *et131x_dbginfo;
100#endif /* CONFIG_ET131X_DEBUG */
101
102struct net_device_stats *et131x_stats(struct net_device *netdev);
103int et131x_open(struct net_device *netdev);
104int et131x_close(struct net_device *netdev);
105int et131x_ioctl(struct net_device *netdev, struct ifreq *reqbuf, int cmd);
106void et131x_multicast(struct net_device *netdev);
107int et131x_tx(struct sk_buff *skb, struct net_device *netdev);
108void et131x_tx_timeout(struct net_device *netdev);
109int et131x_change_mtu(struct net_device *netdev, int new_mtu);
110int et131x_set_mac_addr(struct net_device *netdev, void *new_mac);
111void et131x_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp);
112void et131x_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid);
113void et131x_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid);
114
115/**
116 * et131x_device_alloc
117 *
118 * Returns pointer to the allocated and initialized net_device struct for
119 * this device.
120 *
121 * Create instances of net_device and wl_private for the new adapter and
122 * register the device's entry points in the net_device structure.
123 */
124struct net_device *et131x_device_alloc(void)
125{
126 struct net_device *netdev;
127
128 DBG_ENTER(et131x_dbginfo);
129
130 /* Alloc net_device and adapter structs */
131 netdev = alloc_etherdev(sizeof(struct et131x_adapter));
132
133 if (netdev == NULL) {
134 DBG_ERROR(et131x_dbginfo,
135 "Alloc of net_device struct failed\n");
136 DBG_LEAVE(et131x_dbginfo);
137 return NULL;
138 }
139
140 /* Setup the function registration table (and other data) for a
141 * net_device
142 */
143 //netdev->init = &et131x_init;
144 //netdev->set_config = &et131x_config;
145 netdev->get_stats = &et131x_stats;
146 netdev->open = &et131x_open;
147 netdev->stop = &et131x_close;
148 netdev->do_ioctl = &et131x_ioctl;
149 netdev->set_multicast_list = &et131x_multicast;
150 netdev->hard_start_xmit = &et131x_tx;
151 netdev->tx_timeout = &et131x_tx_timeout;
152 netdev->watchdog_timeo = ET131X_TX_TIMEOUT;
153 netdev->change_mtu = &et131x_change_mtu;
154 netdev->set_mac_address = &et131x_set_mac_addr;
155
156 //netdev->ethtool_ops = &et131x_ethtool_ops;
157
158 // Poll?
159 //netdev->poll = &et131x_poll;
160 //netdev->poll_controller = &et131x_poll_controller;
161
162 DBG_LEAVE(et131x_dbginfo);
163 return netdev;
164}
165
166/**
167 * et131x_stats - Return the current device statistics.
168 * @netdev: device whose stats are being queried
169 *
170 * Returns 0 on success, errno on failure (as defined in errno.h)
171 */
172struct net_device_stats *et131x_stats(struct net_device *netdev)
173{
174 struct et131x_adapter *adapter = netdev_priv(netdev);
175 struct net_device_stats *stats = &adapter->net_stats;
176 CE_STATS_t *devstat = &adapter->Stats;
177
178 DBG_ENTER(et131x_dbginfo);
179
180 stats->rx_packets = devstat->ipackets;
181 stats->tx_packets = devstat->opackets;
182 stats->rx_errors = devstat->length_err + devstat->alignment_err +
183 devstat->crc_err + devstat->code_violations + devstat->other_errors;
184 stats->tx_errors = devstat->max_pkt_error;
185 stats->multicast = devstat->multircv;
186 stats->collisions = devstat->collisions;
187
188 stats->rx_length_errors = devstat->length_err;
189 stats->rx_over_errors = devstat->rx_ov_flow;
190 stats->rx_crc_errors = devstat->crc_err;
191
192 // NOTE: These stats don't have corresponding values in CE_STATS, so we're
193 // going to have to update these directly from within the TX/RX code
194 //stats->rx_bytes = 20; //devstat->;
195 //stats->tx_bytes = 20; //devstat->;
196 //stats->rx_dropped = devstat->;
197 //stats->tx_dropped = devstat->;
198
199 // NOTE: Not used, can't find analogous statistics
200 //stats->rx_frame_errors = devstat->;
201 //stats->rx_fifo_errors = devstat->;
202 //stats->rx_missed_errors = devstat->;
203
204 //stats->tx_aborted_errors = devstat->;
205 //stats->tx_carrier_errors = devstat->;
206 //stats->tx_fifo_errors = devstat->;
207 //stats->tx_heartbeat_errors = devstat->;
208 //stats->tx_window_errors = devstat->;
209
210 DBG_LEAVE(et131x_dbginfo);
211 return stats;
212}
213
214/**
215 * et131x_open - Open the device for use.
216 * @netdev: device to be opened
217 *
218 * Returns 0 on success, errno on failure (as defined in errno.h)
219 */
220int et131x_open(struct net_device *netdev)
221{
222 int result = 0;
223 struct et131x_adapter *adapter = netdev_priv(netdev);
224
225 DBG_ENTER(et131x_dbginfo);
226
227 /* Start the timer to track NIC errors */
228 add_timer(&adapter->ErrorTimer);
229
230 /* Register our ISR */
231 DBG_TRACE(et131x_dbginfo, "Registering ISR...\n");
232
233 result =
234 request_irq(netdev->irq, et131x_isr, IRQF_SHARED, netdev->name,
235 netdev);
236 if (result) {
237 DBG_ERROR(et131x_dbginfo, "Could not register ISR\n");
238 DBG_LEAVE(et131x_dbginfo);
239 return result;
240 }
241
242 /* Enable the Tx and Rx DMA engines (if not already enabled) */
243 et131x_rx_dma_enable(adapter);
244 et131x_tx_dma_enable(adapter);
245
246 /* Enable device interrupts */
247 et131x_enable_interrupts(adapter);
248
249 MP_SET_FLAG(adapter, fMP_ADAPTER_INTERRUPT_IN_USE);
250
251 /* We're ready to move some data, so start the queue */
252 netif_start_queue(netdev);
253
254 DBG_LEAVE(et131x_dbginfo);
255 return result;
256}
257
258/**
259 * et131x_close - Close the device
260 * @netdev: device to be closed
261 *
262 * Returns 0 on success, errno on failure (as defined in errno.h)
263 */
264int et131x_close(struct net_device *netdev)
265{
266 struct et131x_adapter *adapter = netdev_priv(netdev);
267
268 DBG_ENTER(et131x_dbginfo);
269
270 /* First thing is to stop the queue */
271 netif_stop_queue(netdev);
272
273 /* Stop the Tx and Rx DMA engines */
274 et131x_rx_dma_disable(adapter);
275 et131x_tx_dma_disable(adapter);
276
277 /* Disable device interrupts */
278 et131x_disable_interrupts(adapter);
279
280 /* Deregistering ISR */
281 MP_CLEAR_FLAG(adapter, fMP_ADAPTER_INTERRUPT_IN_USE);
282
283 DBG_TRACE(et131x_dbginfo, "Deregistering ISR...\n");
284 free_irq(netdev->irq, netdev);
285
286 /* Stop the error timer */
287 del_timer_sync(&adapter->ErrorTimer);
288
289 DBG_LEAVE(et131x_dbginfo);
290 return 0;
291}
292
293/**
294 * et131x_ioctl_mii - The function which handles MII IOCTLs
295 * @netdev: device on which the query is being made
296 * @reqbuf: the request-specific data buffer
297 * @cmd: the command request code
298 *
299 * Returns 0 on success, errno on failure (as defined in errno.h)
300 */
301int et131x_ioctl_mii(struct net_device *netdev, struct ifreq *reqbuf, int cmd)
302{
303 int status = 0;
304 struct et131x_adapter *pAdapter = netdev_priv(netdev);
305 struct mii_ioctl_data *data = if_mii(reqbuf);
306
307 DBG_ENTER(et131x_dbginfo);
308
309 switch (cmd) {
310 case SIOCGMIIPHY:
311 DBG_VERBOSE(et131x_dbginfo, "SIOCGMIIPHY\n");
312 data->phy_id = pAdapter->Stats.xcvr_addr;
313 break;
314
315 case SIOCGMIIREG:
316 DBG_VERBOSE(et131x_dbginfo, "SIOCGMIIREG\n");
317 if (!capable(CAP_NET_ADMIN)) {
318 status = -EPERM;
319 } else {
320 status = MiRead(pAdapter,
321 data->reg_num, &data->val_out);
322 }
323 break;
324
325 case SIOCSMIIREG:
326 DBG_VERBOSE(et131x_dbginfo, "SIOCSMIIREG\n");
327 if (!capable(CAP_NET_ADMIN)) {
328 status = -EPERM;
329 } else {
330 status = MiWrite(pAdapter, data->reg_num,
331 data->val_in);
332 }
333 break;
334
335 default:
336 status = -EOPNOTSUPP;
337 }
338
339 DBG_LEAVE(et131x_dbginfo);
340 return status;
341}
342
343/**
344 * et131x_ioctl - The I/O Control handler for the driver
345 * @netdev: device on which the control request is being made
346 * @reqbuf: a pointer to the IOCTL request buffer
347 * @cmd: the IOCTL command code
348 *
349 * Returns 0 on success, errno on failure (as defined in errno.h)
350 */
351int et131x_ioctl(struct net_device *netdev, struct ifreq *reqbuf, int cmd)
352{
353 int status = 0;
354
355 DBG_ENTER(et131x_dbginfo);
356
357 switch (cmd) {
358 case SIOCGMIIPHY:
359 case SIOCGMIIREG:
360 case SIOCSMIIREG:
361 status = et131x_ioctl_mii(netdev, reqbuf, cmd);
362 break;
363
364 default:
365 DBG_WARNING(et131x_dbginfo, "Unhandled IOCTL Code: 0x%04x\n",
366 cmd);
367 status = -EOPNOTSUPP;
368 }
369
370 DBG_LEAVE(et131x_dbginfo);
371 return status;
372}
373
374/**
375 * et131x_set_packet_filter - Configures the Rx Packet filtering on the device
376 * @adapter: pointer to our private adapter structure
377 *
378 * Returns 0 on success, errno on failure
379 */
380int et131x_set_packet_filter(struct et131x_adapter *adapter)
381{
382 int status = 0;
383 uint32_t filter = adapter->PacketFilter;
384 RXMAC_CTRL_t ctrl;
385 RXMAC_PF_CTRL_t pf_ctrl;
386
387 DBG_ENTER(et131x_dbginfo);
388
389 ctrl.value = readl(&adapter->CSRAddress->rxmac.ctrl.value);
390 pf_ctrl.value = readl(&adapter->CSRAddress->rxmac.pf_ctrl.value);
391
392 /* Default to disabled packet filtering. Enable it in the individual
393 * case statements that require the device to filter something
394 */
395 ctrl.bits.pkt_filter_disable = 1;
396
397 /* Set us to be in promiscuous mode so we receive everything, this
398 * is also true when we get a packet filter of 0
399 */
400 if ((filter & ET131X_PACKET_TYPE_PROMISCUOUS) || filter == 0) {
401 pf_ctrl.bits.filter_broad_en = 0;
402 pf_ctrl.bits.filter_multi_en = 0;
403 pf_ctrl.bits.filter_uni_en = 0;
404 } else {
405 /*
406 * Set us up with Multicast packet filtering. Three cases are
407 * possible - (1) we have a multi-cast list, (2) we receive ALL
408 * multicast entries or (3) we receive none.
409 */
410 if (filter & ET131X_PACKET_TYPE_ALL_MULTICAST) {
411 DBG_VERBOSE(et131x_dbginfo,
412 "Multicast filtering OFF (Rx ALL MULTICAST)\n");
413 pf_ctrl.bits.filter_multi_en = 0;
414 } else {
415 DBG_VERBOSE(et131x_dbginfo, "Multicast filtering ON\n");
416 SetupDeviceForMulticast(adapter);
417 pf_ctrl.bits.filter_multi_en = 1;
418 ctrl.bits.pkt_filter_disable = 0;
419 }
420
421 /* Set us up with Unicast packet filtering */
422 if (filter & ET131X_PACKET_TYPE_DIRECTED) {
423 DBG_VERBOSE(et131x_dbginfo, "Unicast Filtering ON\n");
424 SetupDeviceForUnicast(adapter);
425 pf_ctrl.bits.filter_uni_en = 1;
426 ctrl.bits.pkt_filter_disable = 0;
427 }
428
429 /* Set us up with Broadcast packet filtering */
430 if (filter & ET131X_PACKET_TYPE_BROADCAST) {
431 DBG_VERBOSE(et131x_dbginfo, "Broadcast Filtering ON\n");
432 pf_ctrl.bits.filter_broad_en = 1;
433 ctrl.bits.pkt_filter_disable = 0;
434 } else {
435 DBG_VERBOSE(et131x_dbginfo,
436 "Broadcast Filtering OFF\n");
437 pf_ctrl.bits.filter_broad_en = 0;
438 }
439
440 /* Setup the receive mac configuration registers - Packet
441 * Filter control + the enable / disable for packet filter
442 * in the control reg.
443 */
444 writel(pf_ctrl.value,
445 &adapter->CSRAddress->rxmac.pf_ctrl.value);
446 writel(ctrl.value, &adapter->CSRAddress->rxmac.ctrl.value);
447 }
448
449 DBG_LEAVE(et131x_dbginfo);
450 return status;
451}
452
453/**
454 * et131x_multicast - The handler to configure multicasting on the interface
455 * @netdev: a pointer to a net_device struct representing the device
456 */
457void et131x_multicast(struct net_device *netdev)
458{
459 struct et131x_adapter *adapter = netdev_priv(netdev);
460 uint32_t PacketFilter = 0;
461 uint32_t count;
462 unsigned long lockflags;
463 struct dev_mc_list *mclist = netdev->mc_list;
464
465 DBG_ENTER(et131x_dbginfo);
466
467 spin_lock_irqsave(&adapter->Lock, lockflags);
468
469 /* Before we modify the platform-independent filter flags, store them
470 * locally. This allows us to determine if anything's changed and if
471 * we even need to bother the hardware
472 */
473 PacketFilter = adapter->PacketFilter;
474
475 /* Clear the 'multicast' flag locally; becuase we only have a single
476 * flag to check multicast, and multiple multicast addresses can be
477 * set, this is the easiest way to determine if more than one
478 * multicast address is being set.
479 */
480 PacketFilter &= ~ET131X_PACKET_TYPE_MULTICAST;
481
482 /* Check the net_device flags and set the device independent flags
483 * accordingly
484 */
485 DBG_VERBOSE(et131x_dbginfo,
486 "MULTICAST ADDR COUNT: %d\n", netdev->mc_count);
487
488 if (netdev->flags & IFF_PROMISC) {
489 DBG_VERBOSE(et131x_dbginfo, "Request: PROMISCUOUS MODE ON\n");
490 adapter->PacketFilter |= ET131X_PACKET_TYPE_PROMISCUOUS;
491 } else {
492 DBG_VERBOSE(et131x_dbginfo, "Request: PROMISCUOUS MODE OFF\n");
493 adapter->PacketFilter &= ~ET131X_PACKET_TYPE_PROMISCUOUS;
494 }
495
496 if (netdev->flags & IFF_ALLMULTI) {
497 DBG_VERBOSE(et131x_dbginfo, "Request: ACCEPT ALL MULTICAST\n");
498 adapter->PacketFilter |= ET131X_PACKET_TYPE_ALL_MULTICAST;
499 }
500
501 if (netdev->mc_count > NIC_MAX_MCAST_LIST) {
502 DBG_WARNING(et131x_dbginfo,
503 "ACCEPT ALL MULTICAST for now, as there's more Multicast "
504 "addresses than the HW supports\n");
505
506 adapter->PacketFilter |= ET131X_PACKET_TYPE_ALL_MULTICAST;
507 }
508
509 if (netdev->mc_count < 1) {
510 DBG_VERBOSE(et131x_dbginfo, "Request: REJECT ALL MULTICAST\n");
511 adapter->PacketFilter &= ~ET131X_PACKET_TYPE_ALL_MULTICAST;
512 adapter->PacketFilter &= ~ET131X_PACKET_TYPE_MULTICAST;
513 } else {
514 DBG_VERBOSE(et131x_dbginfo,
515 "Request: SET MULTICAST FILTER(S)\n");
516 adapter->PacketFilter |= ET131X_PACKET_TYPE_MULTICAST;
517 }
518
519 /* Set values in the private adapter struct */
520 adapter->MCAddressCount = netdev->mc_count;
521
522 if (netdev->mc_count) {
523 if (mclist->dmi_addrlen != ETH_ALEN) {
524 DBG_WARNING(et131x_dbginfo,
525 "Multicast addrs are not ETH_ALEN in size\n");
526 } else {
527 count = netdev->mc_count - 1;
528 memcpy(adapter->MCList[count], mclist->dmi_addr,
529 ETH_ALEN);
530 }
531 }
532
533 /* Are the new flags different from the previous ones? If not, then no
534 * action is required
535 *
536 * NOTE - This block will always update the MCList with the hardware,
537 * even if the addresses aren't the same.
538 */
539 if (PacketFilter != adapter->PacketFilter) {
540 /* Call the device's filter function */
541 DBG_VERBOSE(et131x_dbginfo, "UPDATE REQUIRED, FLAGS changed\n");
542
543 et131x_set_packet_filter(adapter);
544 } else {
545 DBG_VERBOSE(et131x_dbginfo,
546 "NO UPDATE REQUIRED, FLAGS didn't change\n");
547 }
548
549 spin_unlock_irqrestore(&adapter->Lock, lockflags);
550
551 DBG_LEAVE(et131x_dbginfo);
552}
553
554/**
555 * et131x_tx - The handler to tx a packet on the device
556 * @skb: data to be Tx'd
557 * @netdev: device on which data is to be Tx'd
558 *
559 * Returns 0 on success, errno on failure (as defined in errno.h)
560 */
561int et131x_tx(struct sk_buff *skb, struct net_device *netdev)
562{
563 int status = 0;
564
565 DBG_TX_ENTER(et131x_dbginfo);
566
567 /* Save the timestamp for the TX timeout watchdog */
568 netdev->trans_start = jiffies;
569
570 /* Call the device-specific data Tx routine */
571 status = et131x_send_packets(skb, netdev);
572
573 /* Check status and manage the netif queue if necessary */
574 if (status != 0) {
575 if (status == -ENOMEM) {
576 DBG_VERBOSE(et131x_dbginfo,
577 "OUT OF TCBs; STOP NETIF QUEUE\n");
578
579 /* Put the queue to sleep until resources are
580 * available
581 */
582 netif_stop_queue(netdev);
583 status = 1;
584 } else {
585 DBG_WARNING(et131x_dbginfo,
586 "Misc error; drop packet\n");
587 status = 0;
588 }
589 }
590
591 DBG_TX_LEAVE(et131x_dbginfo);
592 return status;
593}
594
595/**
596 * et131x_tx_timeout - Timeout handler
597 * @netdev: a pointer to a net_device struct representing the device
598 *
599 * The handler called when a Tx request times out. The timeout period is
600 * specified by the 'tx_timeo" element in the net_device structure (see
601 * et131x_alloc_device() to see how this value is set).
602 */
603void et131x_tx_timeout(struct net_device *netdev)
604{
605 struct et131x_adapter *pAdapter = netdev_priv(netdev);
606 PMP_TCB pMpTcb;
607 unsigned long lockflags;
608
609 DBG_WARNING(et131x_dbginfo, "TX TIMEOUT\n");
610
611 /* Just skip this part if the adapter is doing link detection */
612 if (MP_TEST_FLAG(pAdapter, fMP_ADAPTER_LINK_DETECTION)) {
613 DBG_ERROR(et131x_dbginfo, "Still doing link detection\n");
614 return;
615 }
616
617 /* Any nonrecoverable hardware error?
618 * Checks adapter->flags for any failure in phy reading
619 */
620 if (MP_TEST_FLAG(pAdapter, fMP_ADAPTER_NON_RECOVER_ERROR)) {
621 DBG_WARNING(et131x_dbginfo, "Non recoverable error - remove\n");
622 return;
623 }
624
625 /* Hardware failure? */
626 if (MP_TEST_FLAG(pAdapter, fMP_ADAPTER_HARDWARE_ERROR)) {
627 DBG_WARNING(et131x_dbginfo, "hardware error - reset\n");
628 return;
629 }
630
631 /* Is send stuck? */
632 spin_lock_irqsave(&pAdapter->TCBSendQLock, lockflags);
633
634 pMpTcb = pAdapter->TxRing.CurrSendHead;
635
636 if (pMpTcb != NULL) {
637 pMpTcb->Count++;
638
639 if (pMpTcb->Count > NIC_SEND_HANG_THRESHOLD) {
640#ifdef CONFIG_ET131X_DEBUG
641 TX_STATUS_BLOCK_t txDmaComplete =
642 *(pAdapter->TxRing.pTxStatusVa);
643 PTX_DESC_ENTRY_t pDesc =
644 pAdapter->TxRing.pTxDescRingVa +
645 pMpTcb->WrIndex.bits.val;
646#endif
647 TX_DESC_ENTRY_t StuckDescriptors[10];
648
649 if (pMpTcb->WrIndex.bits.val > 7) {
650 memcpy(StuckDescriptors,
651 pAdapter->TxRing.pTxDescRingVa +
652 pMpTcb->WrIndex.bits.val - 6,
653 sizeof(TX_DESC_ENTRY_t) * 10);
654 }
655
656 spin_unlock_irqrestore(&pAdapter->TCBSendQLock,
657 lockflags);
658
659 DBG_WARNING(et131x_dbginfo,
660 "Send stuck - reset. pMpTcb->WrIndex %x, Flags 0x%08x\n",
661 pMpTcb->WrIndex.bits.val,
662 pMpTcb->Flags);
663
664 DBG_WARNING(et131x_dbginfo,
665 "pDesc 0x%08x, 0x%08x, 0x%08x, 0x%08x\n",
666 pDesc->DataBufferPtrHigh,
667 pDesc->DataBufferPtrLow, pDesc->word2.value,
668 pDesc->word3.value);
669
670 DBG_WARNING(et131x_dbginfo,
671 "WbStatus 0x%08x\n", txDmaComplete.value);
672
673#ifdef CONFIG_ET131X_DEBUG
674 DumpDeviceBlock(DBG_WARNING_ON, pAdapter, 0);
675 DumpDeviceBlock(DBG_WARNING_ON, pAdapter, 1);
676 DumpDeviceBlock(DBG_WARNING_ON, pAdapter, 3);
677 DumpDeviceBlock(DBG_WARNING_ON, pAdapter, 5);
678#endif
679 et131x_close(netdev);
680 et131x_open(netdev);
681
682 return;
683 }
684 }
685
686 spin_unlock_irqrestore(&pAdapter->TCBSendQLock, lockflags);
687}
688
689/**
690 * et131x_change_mtu - The handler called to change the MTU for the device
691 * @netdev: device whose MTU is to be changed
692 * @new_mtu: the desired MTU
693 *
694 * Returns 0 on success, errno on failure (as defined in errno.h)
695 */
696int et131x_change_mtu(struct net_device *netdev, int new_mtu)
697{
698 int result = 0;
699 struct et131x_adapter *adapter = netdev_priv(netdev);
700
701 DBG_ENTER(et131x_dbginfo);
702
703 /* Make sure the requested MTU is valid */
704 if (new_mtu == 0 || new_mtu > 9216) {
705 DBG_LEAVE(et131x_dbginfo);
706 return -EINVAL;
707 }
708
709 /* Stop the netif queue */
710 netif_stop_queue(netdev);
711
712 /* Stop the Tx and Rx DMA engines */
713 et131x_rx_dma_disable(adapter);
714 et131x_tx_dma_disable(adapter);
715
716 /* Disable device interrupts */
717 et131x_disable_interrupts(adapter);
718 et131x_handle_send_interrupt(adapter);
719 et131x_handle_recv_interrupt(adapter);
720
721 /* Set the new MTU */
722 netdev->mtu = new_mtu;
723
724 /* Free Rx DMA memory */
725 et131x_adapter_memory_free(adapter);
726
727 /* Set the config parameter for Jumbo Packet support */
728 adapter->RegistryJumboPacket = new_mtu + 14;
729 et131x_soft_reset(adapter);
730
731 /* Alloc and init Rx DMA memory */
732 result = et131x_adapter_memory_alloc(adapter);
733 if (result != 0) {
734 DBG_WARNING(et131x_dbginfo,
735 "Change MTU failed; couldn't re-alloc DMA memory\n");
736 return result;
737 }
738
739 et131x_init_send(adapter);
740
741 et131x_setup_hardware_properties(adapter);
742 memcpy(netdev->dev_addr, adapter->CurrentAddress, ETH_ALEN);
743
744 /* Init the device with the new settings */
745 et131x_adapter_setup(adapter);
746
747 /* Enable interrupts */
748 if (MP_TEST_FLAG(adapter, fMP_ADAPTER_INTERRUPT_IN_USE)) {
749 et131x_enable_interrupts(adapter);
750 }
751
752 /* Restart the Tx and Rx DMA engines */
753 et131x_rx_dma_enable(adapter);
754 et131x_tx_dma_enable(adapter);
755
756 /* Restart the netif queue */
757 netif_wake_queue(netdev);
758
759 DBG_LEAVE(et131x_dbginfo);
760 return result;
761}
762
763/**
764 * et131x_set_mac_addr - handler to change the MAC address for the device
765 * @netdev: device whose MAC is to be changed
766 * @new_mac: the desired MAC address
767 *
768 * Returns 0 on success, errno on failure (as defined in errno.h)
769 *
770 * IMPLEMENTED BY : blux http://berndlux.de 22.01.2007 21:14
771 */
772int et131x_set_mac_addr(struct net_device *netdev, void *new_mac)
773{
774 int result = 0;
775 struct et131x_adapter *adapter = netdev_priv(netdev);
776 struct sockaddr *address = new_mac;
777
778 DBG_ENTER(et131x_dbginfo);
779 // begin blux
780 // DBG_VERBOSE( et131x_dbginfo, "Function not implemented!!\n" );
781
782 if (adapter == NULL) {
783 DBG_LEAVE(et131x_dbginfo);
784 return -ENODEV;
785 }
786
787 /* Make sure the requested MAC is valid */
788 if (!is_valid_ether_addr(address->sa_data)) {
789 DBG_LEAVE(et131x_dbginfo);
790 return -EINVAL;
791 }
792
793 /* Stop the netif queue */
794 netif_stop_queue(netdev);
795
796 /* Stop the Tx and Rx DMA engines */
797 et131x_rx_dma_disable(adapter);
798 et131x_tx_dma_disable(adapter);
799
800 /* Disable device interrupts */
801 et131x_disable_interrupts(adapter);
802 et131x_handle_send_interrupt(adapter);
803 et131x_handle_recv_interrupt(adapter);
804
805 /* Set the new MAC */
806 // netdev->set_mac_address = &new_mac;
807 // netdev->mtu = new_mtu;
808
809 memcpy(netdev->dev_addr, address->sa_data, netdev->addr_len);
810
811 printk("%s: Setting MAC address to %02x:%02x:%02x:%02x:%02x:%02x\n",
812 netdev->name, netdev->dev_addr[0], netdev->dev_addr[1],
813 netdev->dev_addr[2], netdev->dev_addr[3], netdev->dev_addr[4],
814 netdev->dev_addr[5]);
815
816 /* Free Rx DMA memory */
817 et131x_adapter_memory_free(adapter);
818
819 /* Set the config parameter for Jumbo Packet support */
820 // adapter->RegistryJumboPacket = new_mtu + 14;
821 // blux: not needet here, w'll change the MAC
822
823 et131x_soft_reset(adapter);
824
825 /* Alloc and init Rx DMA memory */
826 result = et131x_adapter_memory_alloc(adapter);
827 if (result != 0) {
828 DBG_WARNING(et131x_dbginfo,
829 "Change MAC failed; couldn't re-alloc DMA memory\n");
830 return result;
831 }
832
833 et131x_init_send(adapter);
834
835 et131x_setup_hardware_properties(adapter);
836 // memcpy( netdev->dev_addr, adapter->CurrentAddress, ETH_ALEN );
837 // blux: no, do not override our nice address
838
839 /* Init the device with the new settings */
840 et131x_adapter_setup(adapter);
841
842 /* Enable interrupts */
843 if (MP_TEST_FLAG(adapter, fMP_ADAPTER_INTERRUPT_IN_USE)) {
844 et131x_enable_interrupts(adapter);
845 }
846
847 /* Restart the Tx and Rx DMA engines */
848 et131x_rx_dma_enable(adapter);
849 et131x_tx_dma_enable(adapter);
850
851 /* Restart the netif queue */
852 netif_wake_queue(netdev);
853
854 DBG_LEAVE(et131x_dbginfo);
855 return result;
856}
diff --git a/drivers/staging/et131x/et131x_netdev.h b/drivers/staging/et131x/et131x_netdev.h
new file mode 100644
index 00000000000..b8acd14ff83
--- /dev/null
+++ b/drivers/staging/et131x/et131x_netdev.h
@@ -0,0 +1,64 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_netdev.h - Defines, structs, enums, prototypes, etc. related to the
12 * driver's net_device support.
13 *
14 *------------------------------------------------------------------------------
15 *
16 * SOFTWARE LICENSE
17 *
18 * This software is provided subject to the following terms and conditions,
19 * which you should read carefully before using the software. Using this
20 * software indicates your acceptance of these terms and conditions. If you do
21 * not agree with these terms and conditions, do not use the software.
22 *
23 * Copyright © 2005 Agere Systems Inc.
24 * All rights reserved.
25 *
26 * Redistribution and use in source or binary forms, with or without
27 * modifications, are permitted provided that the following conditions are met:
28 *
29 * . Redistributions of source code must retain the above copyright notice, this
30 * list of conditions and the following Disclaimer as comments in the code as
31 * well as in the documentation and/or other materials provided with the
32 * distribution.
33 *
34 * . Redistributions in binary form must reproduce the above copyright notice,
35 * this list of conditions and the following Disclaimer in the documentation
36 * and/or other materials provided with the distribution.
37 *
38 * . Neither the name of Agere Systems Inc. nor the names of the contributors
39 * may be used to endorse or promote products derived from this software
40 * without specific prior written permission.
41 *
42 * Disclaimer
43 *
44 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
45 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
46 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
47 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
48 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
49 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
50 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
51 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
53 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
55 * DAMAGE.
56 *
57 */
58
59#ifndef __ET131X_NETDEV_H__
60#define __ET131X_NETDEV_H__
61
62struct net_device *et131x_device_alloc(void);
63
64#endif /* __ET131X_NETDEV_H__ */
diff --git a/drivers/staging/et131x/et131x_version.h b/drivers/staging/et131x/et131x_version.h
new file mode 100644
index 00000000000..2ea645e1066
--- /dev/null
+++ b/drivers/staging/et131x/et131x_version.h
@@ -0,0 +1,81 @@
1/*
2 * Agere Systems Inc.
3 * 10/100/1000 Base-T Ethernet Driver for the ET1301 and ET131x series MACs
4 *
5 * Copyright © 2005 Agere Systems Inc.
6 * All rights reserved.
7 * http://www.agere.com
8 *
9 *------------------------------------------------------------------------------
10 *
11 * et131x_version.h - This file provides system and device version information.
12 *
13 *------------------------------------------------------------------------------
14 *
15 * SOFTWARE LICENSE
16 *
17 * This software is provided subject to the following terms and conditions,
18 * which you should read carefully before using the software. Using this
19 * software indicates your acceptance of these terms and conditions. If you do
20 * not agree with these terms and conditions, do not use the software.
21 *
22 * Copyright © 2005 Agere Systems Inc.
23 * All rights reserved.
24 *
25 * Redistribution and use in source or binary forms, with or without
26 * modifications, are permitted provided that the following conditions are met:
27 *
28 * . Redistributions of source code must retain the above copyright notice, this
29 * list of conditions and the following Disclaimer as comments in the code as
30 * well as in the documentation and/or other materials provided with the
31 * distribution.
32 *
33 * . Redistributions in binary form must reproduce the above copyright notice,
34 * this list of conditions and the following Disclaimer in the documentation
35 * and/or other materials provided with the distribution.
36 *
37 * . Neither the name of Agere Systems Inc. nor the names of the contributors
38 * may be used to endorse or promote products derived from this software
39 * without specific prior written permission.
40 *
41 * Disclaimer
42 *
43 * THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
44 * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
45 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
46 * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
47 * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
48 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
49 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
50 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
51 * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
52 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
53 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
54 * DAMAGE.
55 *
56 */
57
58#ifndef __ET131X_VERSION_H__
59#define __ET131X_VERSION_H__
60
61#define DRIVER_AUTHOR "Victor Soriano (vjsoriano@agere.com)"
62#define DRIVER_LICENSE "Dual BSD/GPL"
63#define DRIVER_DEVICE_STRING "ET1310"
64#define DRIVER_NAME "et131x"
65#define DRIVER_MAJOR_VERSION 1
66#define DRIVER_MINOR_VERSION 2
67#define DRIVER_PATCH_VERSION 3
68#define DRIVER_VERSION_STRING "1.2.3"
69#define DRIVER_VENDOR "Agere Systems, http://www.agere.com"
70#define DRIVER_DESC "10/100/1000 Base-T Ethernet Driver"
71
72#define STRUCT_MODULE "net" /* blux: missed by the kernel */
73
74#define DRIVER_INFO DRIVER_DESC " for the "\
75 DRIVER_DEVICE_STRING ", v" \
76 DRIVER_VERSION_STRING " by " \
77 DRIVER_VENDOR
78
79#define DRIVER_NAME_EXT "et131x.ko"
80
81#endif /* __ET131X_VERSION_H__ */
diff --git a/drivers/staging/go7007/Kconfig b/drivers/staging/go7007/Kconfig
new file mode 100644
index 00000000000..57a121c338c
--- /dev/null
+++ b/drivers/staging/go7007/Kconfig
@@ -0,0 +1,25 @@
1config VIDEO_GO7007
2 tristate "Go 7007 support"
3 depends on VIDEO_DEV && PCI && I2C && INPUT
4 select VIDEOBUF_DMA_SG
5 select VIDEO_IR
6 select VIDEO_TUNER
7 select VIDEO_TVEEPROM
8 select CRC32
9 default N
10 ---help---
11 This is a video4linux driver for some wierd device...
12
13 To compile this driver as a module, choose M here: the
14 module will be called go7007
15
16config VIDEO_GO7007_USB
17 tristate "Go 7007 USB support"
18 depends on VIDEO_GO7007 && USB
19 default N
20 ---help---
21 This is a video4linux driver for some wierd device...
22
23 To compile this driver as a module, choose M here: the
24 module will be called go7007-usb
25
diff --git a/drivers/staging/go7007/Makefile b/drivers/staging/go7007/Makefile
new file mode 100644
index 00000000000..9b9310cae1c
--- /dev/null
+++ b/drivers/staging/go7007/Makefile
@@ -0,0 +1,18 @@
1#obj-m += go7007.o go7007-usb.o snd-go7007.o wis-saa7115.o wis-tw9903.o \
2 wis-uda1342.o wis-sony-tuner.o wis-saa7113.o wis-ov7640.o \
3 wis-tw2804.o
4
5
6obj-$(CONFIG_VIDEO_GO7007) += go7007.o
7obj-$(CONFIG_VIDEO_GO7007_USB) += go7007-usb.o
8
9go7007-objs += go7007-v4l2.o go7007-driver.o go7007-i2c.o go7007-fw.o snd-go7007.o
10
11
12#ifneq ($(SAA7134_BUILD),)
13#obj-m += saa7134-go7007.o
14#endif
15
16EXTRA_CFLAGS += -Idrivers/staging/saa7134
17EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
18EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
diff --git a/drivers/staging/go7007/README b/drivers/staging/go7007/README
new file mode 100644
index 00000000000..48f44763781
--- /dev/null
+++ b/drivers/staging/go7007/README
@@ -0,0 +1,11 @@
1Todo:
2 - checkpatch.pl cleanups
3 - sparse cleanups
4 - lots of little modules, should be merged together
5 and added to the build.
6 - testing?
7 - handle churn in v4l layer.
8
9Please send patchs to Greg Kroah-Hartman <greg@kroah.com> and Cc: Ross
10Cohen <rcohen@snurgle.org> as well.
11
diff --git a/drivers/staging/go7007/go7007-driver.c b/drivers/staging/go7007/go7007-driver.c
new file mode 100644
index 00000000000..81ae4b0fa89
--- /dev/null
+++ b/drivers/staging/go7007/go7007-driver.c
@@ -0,0 +1,688 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/version.h>
20#include <linux/init.h>
21#include <linux/delay.h>
22#include <linux/sched.h>
23#include <linux/spinlock.h>
24#include <linux/unistd.h>
25#include <linux/time.h>
26#include <linux/mm.h>
27#include <linux/vmalloc.h>
28#include <linux/device.h>
29#include <linux/i2c.h>
30#include <linux/firmware.h>
31#include <linux/semaphore.h>
32#include <linux/uaccess.h>
33#include <asm/system.h>
34#include <linux/videodev2.h>
35#include <media/tuner.h>
36#include <media/v4l2-common.h>
37
38#include "go7007-priv.h"
39#include "wis-i2c.h"
40
41/*
42 * Wait for an interrupt to be delivered from the GO7007SB and return
43 * the associated value and data.
44 *
45 * Must be called with the hw_lock held.
46 */
47int go7007_read_interrupt(struct go7007 *go, u16 *value, u16 *data)
48{
49 go->interrupt_available = 0;
50 go->hpi_ops->read_interrupt(go);
51 if (wait_event_timeout(go->interrupt_waitq,
52 go->interrupt_available, 5*HZ) < 0) {
53 printk(KERN_ERR "go7007: timeout waiting for read interrupt\n");
54 return -1;
55 }
56 if (!go->interrupt_available)
57 return -1;
58 go->interrupt_available = 0;
59 *value = go->interrupt_value & 0xfffe;
60 *data = go->interrupt_data;
61 return 0;
62}
63EXPORT_SYMBOL(go7007_read_interrupt);
64
65/*
66 * Read a register/address on the GO7007SB.
67 *
68 * Must be called with the hw_lock held.
69 */
70int go7007_read_addr(struct go7007 *go, u16 addr, u16 *data)
71{
72 int count = 100;
73 u16 value;
74
75 if (go7007_write_interrupt(go, 0x0010, addr) < 0)
76 return -EIO;
77 while (count-- > 0) {
78 if (go7007_read_interrupt(go, &value, data) == 0 &&
79 value == 0xa000)
80 return 0;
81 }
82 return -EIO;
83}
84EXPORT_SYMBOL(go7007_read_addr);
85
86/*
87 * Send the boot firmware to the encoder, which just wakes it up and lets
88 * us talk to the GPIO pins and on-board I2C adapter.
89 *
90 * Must be called with the hw_lock held.
91 */
92static int go7007_load_encoder(struct go7007 *go)
93{
94 const struct firmware *fw_entry;
95 char fw_name[] = "go7007fw.bin";
96 void *bounce;
97 int fw_len, rv = 0;
98 u16 intr_val, intr_data;
99
100 if (request_firmware(&fw_entry, fw_name, go->dev)) {
101 printk(KERN_ERR
102 "go7007: unable to load firmware from file \"%s\"\n",
103 fw_name);
104 return -1;
105 }
106 if (fw_entry->size < 16 || memcmp(fw_entry->data, "WISGO7007FW", 11)) {
107 printk(KERN_ERR "go7007: file \"%s\" does not appear to be "
108 "go7007 firmware\n", fw_name);
109 release_firmware(fw_entry);
110 return -1;
111 }
112 fw_len = fw_entry->size - 16;
113 bounce = kmalloc(fw_len, GFP_KERNEL);
114 if (bounce == NULL) {
115 printk(KERN_ERR "go7007: unable to allocate %d bytes for "
116 "firmware transfer\n", fw_len);
117 release_firmware(fw_entry);
118 return -1;
119 }
120 memcpy(bounce, fw_entry->data + 16, fw_len);
121 release_firmware(fw_entry);
122 if (go7007_interface_reset(go) < 0 ||
123 go7007_send_firmware(go, bounce, fw_len) < 0 ||
124 go7007_read_interrupt(go, &intr_val, &intr_data) < 0 ||
125 (intr_val & ~0x1) != 0x5a5a) {
126 printk(KERN_ERR "go7007: error transferring firmware\n");
127 rv = -1;
128 }
129 kfree(bounce);
130 return rv;
131}
132
133/*
134 * Boot the encoder and register the I2C adapter if requested. Do the
135 * minimum initialization necessary, since the board-specific code may
136 * still need to probe the board ID.
137 *
138 * Must NOT be called with the hw_lock held.
139 */
140int go7007_boot_encoder(struct go7007 *go, int init_i2c)
141{
142 int ret;
143
144 down(&go->hw_lock);
145 ret = go7007_load_encoder(go);
146 up(&go->hw_lock);
147 if (ret < 0)
148 return -1;
149 if (!init_i2c)
150 return 0;
151 if (go7007_i2c_init(go) < 0)
152 return -1;
153 go->i2c_adapter_online = 1;
154 return 0;
155}
156EXPORT_SYMBOL(go7007_boot_encoder);
157
158/*
159 * Configure any hardware-related registers in the GO7007, such as GPIO
160 * pins and bus parameters, which are board-specific. This assumes
161 * the boot firmware has already been downloaded.
162 *
163 * Must be called with the hw_lock held.
164 */
165static int go7007_init_encoder(struct go7007 *go)
166{
167 if (go->board_info->audio_flags & GO7007_AUDIO_I2S_MASTER) {
168 go7007_write_addr(go, 0x1000, 0x0811);
169 go7007_write_addr(go, 0x1000, 0x0c11);
170 }
171 if (go->board_id == GO7007_BOARDID_MATRIX_REV) {
172 /* Set GPIO pin 0 to be an output (audio clock control) */
173 go7007_write_addr(go, 0x3c82, 0x0001);
174 go7007_write_addr(go, 0x3c80, 0x00fe);
175 }
176 return 0;
177}
178
179/*
180 * Send the boot firmware to the GO7007 and configure the registers. This
181 * is the only way to stop the encoder once it has started streaming video.
182 *
183 * Must be called with the hw_lock held.
184 */
185int go7007_reset_encoder(struct go7007 *go)
186{
187 if (go7007_load_encoder(go) < 0)
188 return -1;
189 return go7007_init_encoder(go);
190}
191
192/*
193 * Attempt to instantiate an I2C client by ID, probably loading a module.
194 */
195static int init_i2c_module(struct i2c_adapter *adapter, int id, int addr)
196{
197 char *modname;
198
199 switch (id) {
200 case I2C_DRIVERID_WIS_SAA7115:
201 modname = "wis-saa7115";
202 break;
203 case I2C_DRIVERID_WIS_SAA7113:
204 modname = "wis-saa7113";
205 break;
206 case I2C_DRIVERID_WIS_UDA1342:
207 modname = "wis-uda1342";
208 break;
209 case I2C_DRIVERID_WIS_SONY_TUNER:
210 modname = "wis-sony-tuner";
211 break;
212 case I2C_DRIVERID_WIS_TW9903:
213 modname = "wis-tw9903";
214 break;
215 case I2C_DRIVERID_WIS_TW2804:
216 modname = "wis-tw2804";
217 break;
218 case I2C_DRIVERID_WIS_OV7640:
219 modname = "wis-ov7640";
220 break;
221 default:
222 modname = NULL;
223 break;
224 }
225 if (modname != NULL)
226 request_module(modname);
227 if (wis_i2c_probe_device(adapter, id, addr) == 1)
228 return 0;
229 if (modname != NULL)
230 printk(KERN_INFO
231 "go7007: probing for module %s failed", modname);
232 else
233 printk(KERN_INFO
234 "go7007: sensor %u seems to be unsupported!\n", id);
235 return -1;
236}
237
238/*
239 * Finalize the GO7007 hardware setup, register the on-board I2C adapter
240 * (if used on this board), load the I2C client driver for the sensor
241 * (SAA7115 or whatever) and other devices, and register the ALSA and V4L2
242 * interfaces.
243 *
244 * Must NOT be called with the hw_lock held.
245 */
246int go7007_register_encoder(struct go7007 *go)
247{
248 int i, ret;
249
250 printk(KERN_INFO "go7007: registering new %s\n", go->name);
251
252 down(&go->hw_lock);
253 ret = go7007_init_encoder(go);
254 up(&go->hw_lock);
255 if (ret < 0)
256 return -1;
257
258 if (!go->i2c_adapter_online &&
259 go->board_info->flags & GO7007_BOARD_USE_ONBOARD_I2C) {
260 if (go7007_i2c_init(go) < 0)
261 return -1;
262 go->i2c_adapter_online = 1;
263 }
264 if (go->i2c_adapter_online) {
265 for (i = 0; i < go->board_info->num_i2c_devs; ++i)
266 init_i2c_module(&go->i2c_adapter,
267 go->board_info->i2c_devs[i].id,
268 go->board_info->i2c_devs[i].addr);
269#ifdef TUNER_SET_TYPE_ADDR
270 if (go->tuner_type >= 0) {
271 struct tuner_setup tun_setup = {
272 .mode_mask = T_ANALOG_TV,
273 .addr = ADDR_UNSET,
274 .type = go->tuner_type
275 };
276 i2c_clients_command(&go->i2c_adapter,
277 TUNER_SET_TYPE_ADDR, &tun_setup);
278 }
279#else
280 if (go->tuner_type >= 0)
281 i2c_clients_command(&go->i2c_adapter,
282 TUNER_SET_TYPE, &go->tuner_type);
283#endif
284 if (go->board_id == GO7007_BOARDID_ADLINK_MPG24)
285 i2c_clients_command(&go->i2c_adapter,
286 DECODER_SET_CHANNEL, &go->channel_number);
287 }
288 if (go->board_info->flags & GO7007_BOARD_HAS_AUDIO) {
289 go->audio_enabled = 1;
290 go7007_snd_init(go);
291 }
292 return go7007_v4l2_init(go);
293}
294EXPORT_SYMBOL(go7007_register_encoder);
295
296/*
297 * Send the encode firmware to the encoder, which will cause it
298 * to immediately start delivering the video and audio streams.
299 *
300 * Must be called with the hw_lock held.
301 */
302int go7007_start_encoder(struct go7007 *go)
303{
304 u8 *fw;
305 int fw_len, rv = 0, i;
306 u16 intr_val, intr_data;
307
308 go->modet_enable = 0;
309 if (!go->dvd_mode)
310 for (i = 0; i < 4; ++i) {
311 if (go->modet[i].enable) {
312 go->modet_enable = 1;
313 continue;
314 }
315 go->modet[i].pixel_threshold = 32767;
316 go->modet[i].motion_threshold = 32767;
317 go->modet[i].mb_threshold = 32767;
318 }
319
320 if (go7007_construct_fw_image(go, &fw, &fw_len) < 0)
321 return -1;
322
323 if (go7007_send_firmware(go, fw, fw_len) < 0 ||
324 go7007_read_interrupt(go, &intr_val, &intr_data) < 0) {
325 printk(KERN_ERR "go7007: error transferring firmware\n");
326 rv = -1;
327 goto start_error;
328 }
329
330 go->state = STATE_DATA;
331 go->parse_length = 0;
332 go->seen_frame = 0;
333 if (go7007_stream_start(go) < 0) {
334 printk(KERN_ERR "go7007: error starting stream transfer\n");
335 rv = -1;
336 goto start_error;
337 }
338
339start_error:
340 kfree(fw);
341 return rv;
342}
343
344/*
345 * Store a byte in the current video buffer, if there is one.
346 */
347static inline void store_byte(struct go7007_buffer *gobuf, u8 byte)
348{
349 if (gobuf != NULL && gobuf->bytesused < GO7007_BUF_SIZE) {
350 unsigned int pgidx = gobuf->offset >> PAGE_SHIFT;
351 unsigned int pgoff = gobuf->offset & ~PAGE_MASK;
352
353 *((u8 *)page_address(gobuf->pages[pgidx]) + pgoff) = byte;
354 ++gobuf->offset;
355 ++gobuf->bytesused;
356 }
357}
358
359/*
360 * Deliver the last video buffer and get a new one to start writing to.
361 */
362static void frame_boundary(struct go7007 *go)
363{
364 struct go7007_buffer *gobuf;
365 int i;
366
367 if (go->active_buf) {
368 if (go->active_buf->modet_active) {
369 if (go->active_buf->bytesused + 216 < GO7007_BUF_SIZE) {
370 for (i = 0; i < 216; ++i)
371 store_byte(go->active_buf,
372 go->active_map[i]);
373 go->active_buf->bytesused -= 216;
374 } else
375 go->active_buf->modet_active = 0;
376 }
377 go->active_buf->state = BUF_STATE_DONE;
378 wake_up_interruptible(&go->frame_waitq);
379 go->active_buf = NULL;
380 }
381 list_for_each_entry(gobuf, &go->stream, stream)
382 if (gobuf->state == BUF_STATE_QUEUED) {
383 gobuf->seq = go->next_seq;
384 do_gettimeofday(&gobuf->timestamp);
385 go->active_buf = gobuf;
386 break;
387 }
388 ++go->next_seq;
389}
390
391static void write_bitmap_word(struct go7007 *go)
392{
393 int x, y, i, stride = ((go->width >> 4) + 7) >> 3;
394
395 for (i = 0; i < 16; ++i) {
396 y = (((go->parse_length - 1) << 3) + i) / (go->width >> 4);
397 x = (((go->parse_length - 1) << 3) + i) % (go->width >> 4);
398 go->active_map[stride * y + (x >> 3)] |=
399 (go->modet_word & 1) << (x & 0x7);
400 go->modet_word >>= 1;
401 }
402}
403
404/*
405 * Parse a chunk of the video stream into frames. The frames are not
406 * delimited by the hardware, so we have to parse the frame boundaries
407 * based on the type of video stream we're receiving.
408 */
409void go7007_parse_video_stream(struct go7007 *go, u8 *buf, int length)
410{
411 int i, seq_start_code = -1, frame_start_code = -1;
412
413 spin_lock(&go->spinlock);
414
415 switch (go->format) {
416 case GO7007_FORMAT_MPEG4:
417 seq_start_code = 0xB0;
418 frame_start_code = 0xB6;
419 break;
420 case GO7007_FORMAT_MPEG1:
421 case GO7007_FORMAT_MPEG2:
422 seq_start_code = 0xB3;
423 frame_start_code = 0x00;
424 break;
425 }
426
427 for (i = 0; i < length; ++i) {
428 if (go->active_buf != NULL &&
429 go->active_buf->bytesused >= GO7007_BUF_SIZE - 3) {
430 printk(KERN_DEBUG "go7007: dropping oversized frame\n");
431 go->active_buf->offset -= go->active_buf->bytesused;
432 go->active_buf->bytesused = 0;
433 go->active_buf->modet_active = 0;
434 go->active_buf = NULL;
435 }
436
437 switch (go->state) {
438 case STATE_DATA:
439 switch (buf[i]) {
440 case 0x00:
441 go->state = STATE_00;
442 break;
443 case 0xFF:
444 go->state = STATE_FF;
445 break;
446 default:
447 store_byte(go->active_buf, buf[i]);
448 break;
449 }
450 break;
451 case STATE_00:
452 switch (buf[i]) {
453 case 0x00:
454 go->state = STATE_00_00;
455 break;
456 case 0xFF:
457 store_byte(go->active_buf, 0x00);
458 go->state = STATE_FF;
459 break;
460 default:
461 store_byte(go->active_buf, 0x00);
462 store_byte(go->active_buf, buf[i]);
463 go->state = STATE_DATA;
464 break;
465 }
466 break;
467 case STATE_00_00:
468 switch (buf[i]) {
469 case 0x00:
470 store_byte(go->active_buf, 0x00);
471 /* go->state remains STATE_00_00 */
472 break;
473 case 0x01:
474 go->state = STATE_00_00_01;
475 break;
476 case 0xFF:
477 store_byte(go->active_buf, 0x00);
478 store_byte(go->active_buf, 0x00);
479 go->state = STATE_FF;
480 break;
481 default:
482 store_byte(go->active_buf, 0x00);
483 store_byte(go->active_buf, 0x00);
484 store_byte(go->active_buf, buf[i]);
485 go->state = STATE_DATA;
486 break;
487 }
488 break;
489 case STATE_00_00_01:
490 /* If this is the start of a new MPEG frame,
491 * get a new buffer */
492 if ((go->format == GO7007_FORMAT_MPEG1 ||
493 go->format == GO7007_FORMAT_MPEG2 ||
494 go->format == GO7007_FORMAT_MPEG4) &&
495 (buf[i] == seq_start_code ||
496 buf[i] == 0xB8 || /* GOP code */
497 buf[i] == frame_start_code)) {
498 if (go->active_buf == NULL || go->seen_frame)
499 frame_boundary(go);
500 if (buf[i] == frame_start_code) {
501 if (go->active_buf != NULL)
502 go->active_buf->frame_offset =
503 go->active_buf->offset;
504 go->seen_frame = 1;
505 } else {
506 go->seen_frame = 0;
507 }
508 }
509 /* Handle any special chunk types, or just write the
510 * start code to the (potentially new) buffer */
511 switch (buf[i]) {
512 case 0xF5: /* timestamp */
513 go->parse_length = 12;
514 go->state = STATE_UNPARSED;
515 break;
516 case 0xF6: /* vbi */
517 go->state = STATE_VBI_LEN_A;
518 break;
519 case 0xF8: /* MD map */
520 go->parse_length = 0;
521 memset(go->active_map, 0,
522 sizeof(go->active_map));
523 go->state = STATE_MODET_MAP;
524 break;
525 case 0xFF: /* Potential JPEG start code */
526 store_byte(go->active_buf, 0x00);
527 store_byte(go->active_buf, 0x00);
528 store_byte(go->active_buf, 0x01);
529 go->state = STATE_FF;
530 break;
531 default:
532 store_byte(go->active_buf, 0x00);
533 store_byte(go->active_buf, 0x00);
534 store_byte(go->active_buf, 0x01);
535 store_byte(go->active_buf, buf[i]);
536 go->state = STATE_DATA;
537 break;
538 }
539 break;
540 case STATE_FF:
541 switch (buf[i]) {
542 case 0x00:
543 store_byte(go->active_buf, 0xFF);
544 go->state = STATE_00;
545 break;
546 case 0xFF:
547 store_byte(go->active_buf, 0xFF);
548 /* go->state remains STATE_FF */
549 break;
550 case 0xD8:
551 if (go->format == GO7007_FORMAT_MJPEG)
552 frame_boundary(go);
553 /* fall through */
554 default:
555 store_byte(go->active_buf, 0xFF);
556 store_byte(go->active_buf, buf[i]);
557 go->state = STATE_DATA;
558 break;
559 }
560 break;
561 case STATE_VBI_LEN_A:
562 go->parse_length = buf[i] << 8;
563 go->state = STATE_VBI_LEN_B;
564 break;
565 case STATE_VBI_LEN_B:
566 go->parse_length |= buf[i];
567 if (go->parse_length > 0)
568 go->state = STATE_UNPARSED;
569 else
570 go->state = STATE_DATA;
571 break;
572 case STATE_MODET_MAP:
573 if (go->parse_length < 204) {
574 if (go->parse_length & 1) {
575 go->modet_word |= buf[i];
576 write_bitmap_word(go);
577 } else
578 go->modet_word = buf[i] << 8;
579 } else if (go->parse_length == 207 && go->active_buf) {
580 go->active_buf->modet_active = buf[i];
581 }
582 if (++go->parse_length == 208)
583 go->state = STATE_DATA;
584 break;
585 case STATE_UNPARSED:
586 if (--go->parse_length == 0)
587 go->state = STATE_DATA;
588 break;
589 }
590 }
591
592 spin_unlock(&go->spinlock);
593}
594EXPORT_SYMBOL(go7007_parse_video_stream);
595
596/*
597 * Allocate a new go7007 struct. Used by the hardware-specific probe.
598 */
599struct go7007 *go7007_alloc(struct go7007_board_info *board, struct device *dev)
600{
601 struct go7007 *go;
602 int i;
603
604 go = kmalloc(sizeof(struct go7007), GFP_KERNEL);
605 if (go == NULL)
606 return NULL;
607 go->dev = dev;
608 go->board_info = board;
609 go->board_id = 0;
610 go->tuner_type = -1;
611 go->channel_number = 0;
612 go->name[0] = 0;
613 init_MUTEX(&go->hw_lock);
614 init_waitqueue_head(&go->frame_waitq);
615 spin_lock_init(&go->spinlock);
616 go->video_dev = NULL;
617 go->ref_count = 0;
618 go->status = STATUS_INIT;
619 memset(&go->i2c_adapter, 0, sizeof(go->i2c_adapter));
620 go->i2c_adapter_online = 0;
621 go->interrupt_available = 0;
622 init_waitqueue_head(&go->interrupt_waitq);
623 go->in_use = 0;
624 go->input = 0;
625 if (board->sensor_flags & GO7007_SENSOR_TV) {
626 go->standard = GO7007_STD_NTSC;
627 go->width = 720;
628 go->height = 480;
629 go->sensor_framerate = 30000;
630 } else {
631 go->standard = GO7007_STD_OTHER;
632 go->width = board->sensor_width;
633 go->height = board->sensor_height;
634 go->sensor_framerate = board->sensor_framerate;
635 }
636 go->encoder_v_offset = board->sensor_v_offset;
637 go->encoder_h_offset = board->sensor_h_offset;
638 go->encoder_h_halve = 0;
639 go->encoder_v_halve = 0;
640 go->encoder_subsample = 0;
641 go->streaming = 0;
642 go->format = GO7007_FORMAT_MJPEG;
643 go->bitrate = 1500000;
644 go->fps_scale = 1;
645 go->pali = 0;
646 go->aspect_ratio = GO7007_RATIO_1_1;
647 go->gop_size = 0;
648 go->ipb = 0;
649 go->closed_gop = 0;
650 go->repeat_seqhead = 0;
651 go->seq_header_enable = 0;
652 go->gop_header_enable = 0;
653 go->dvd_mode = 0;
654 go->interlace_coding = 0;
655 for (i = 0; i < 4; ++i)
656 go->modet[i].enable = 0;;
657 for (i = 0; i < 1624; ++i)
658 go->modet_map[i] = 0;
659 go->audio_deliver = NULL;
660 go->audio_enabled = 0;
661 INIT_LIST_HEAD(&go->stream);
662
663 return go;
664}
665EXPORT_SYMBOL(go7007_alloc);
666
667/*
668 * Detach and unregister the encoder. The go7007 struct won't be freed
669 * until v4l2 finishes releasing its resources and all associated fds are
670 * closed by applications.
671 */
672void go7007_remove(struct go7007 *go)
673{
674 if (go->i2c_adapter_online) {
675 if (i2c_del_adapter(&go->i2c_adapter) == 0)
676 go->i2c_adapter_online = 0;
677 else
678 printk(KERN_ERR
679 "go7007: error removing I2C adapter!\n");
680 }
681
682 if (go->audio_enabled)
683 go7007_snd_remove(go);
684 go7007_v4l2_remove(go);
685}
686EXPORT_SYMBOL(go7007_remove);
687
688MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/go7007-fw.c b/drivers/staging/go7007/go7007-fw.c
new file mode 100644
index 00000000000..c2aea1020b0
--- /dev/null
+++ b/drivers/staging/go7007/go7007-fw.c
@@ -0,0 +1,1639 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18/*
19 * This file contains code to generate a firmware image for the GO7007SB
20 * encoder. Much of the firmware is read verbatim from a file, but some of
21 * it concerning bitrate control and other things that can be configured at
22 * run-time are generated dynamically. Note that the format headers
23 * generated here do not affect the functioning of the encoder; they are
24 * merely parroted back to the host at the start of each frame.
25 */
26
27#include <linux/module.h>
28#include <linux/init.h>
29#include <linux/version.h>
30#include <linux/time.h>
31#include <linux/mm.h>
32#include <linux/device.h>
33#include <linux/i2c.h>
34#include <linux/firmware.h>
35#include <asm/byteorder.h>
36
37#include "go7007-priv.h"
38
39/* Constants used in the source firmware image to describe code segments */
40
41#define FLAG_MODE_MJPEG (1)
42#define FLAG_MODE_MPEG1 (1<<1)
43#define FLAG_MODE_MPEG2 (1<<2)
44#define FLAG_MODE_MPEG4 (1<<3)
45#define FLAG_MODE_H263 (1<<4)
46#define FLAG_MODE_ALL (FLAG_MODE_MJPEG | FLAG_MODE_MPEG1 | \
47 FLAG_MODE_MPEG2 | FLAG_MODE_MPEG4 | \
48 FLAG_MODE_H263)
49#define FLAG_SPECIAL (1<<8)
50
51#define SPECIAL_FRM_HEAD 0
52#define SPECIAL_BRC_CTRL 1
53#define SPECIAL_CONFIG 2
54#define SPECIAL_SEQHEAD 3
55#define SPECIAL_AV_SYNC 4
56#define SPECIAL_FINAL 5
57#define SPECIAL_AUDIO 6
58#define SPECIAL_MODET 7
59
60/* Little data class for creating MPEG headers bit-by-bit */
61
62struct code_gen {
63 unsigned char *p; /* destination */
64 u32 a; /* collects bits at the top of the variable */
65 int b; /* bit position of most recently-written bit */
66 int len; /* written out so far */
67};
68
69#define CODE_GEN(name, dest) struct code_gen name = { dest, 0, 32, 0 }
70
71#define CODE_ADD(name, val, length) do { \
72 name.b -= (length); \
73 name.a |= (val) << name.b; \
74 while (name.b <= 24) { \
75 *name.p = name.a >> 24; \
76 ++name.p; \
77 name.a <<= 8; \
78 name.b += 8; \
79 name.len += 8; \
80 } \
81} while (0)
82
83#define CODE_LENGTH(name) (name.len + (32 - name.b))
84
85/* Tables for creating the bitrate control data */
86
87static const s16 converge_speed_ip[101] = {
88 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
89 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
90 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
91 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
92 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
93 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
94 5, 5, 5, 6, 6, 6, 7, 7, 8, 8,
95 9, 10, 10, 11, 12, 13, 14, 15, 16, 17,
96 19, 20, 22, 23, 25, 27, 30, 32, 35, 38,
97 41, 45, 49, 53, 58, 63, 69, 76, 83, 91,
98 100
99};
100
101static const s16 converge_speed_ipb[101] = {
102 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
103 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
104 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
105 4, 4, 4, 4, 5, 5, 5, 5, 5, 6,
106 6, 6, 6, 7, 7, 7, 7, 8, 8, 9,
107 9, 9, 10, 10, 11, 12, 12, 13, 14, 14,
108 15, 16, 17, 18, 19, 20, 22, 23, 25, 26,
109 28, 30, 32, 34, 37, 40, 42, 46, 49, 53,
110 57, 61, 66, 71, 77, 83, 90, 97, 106, 115,
111 125, 135, 147, 161, 175, 191, 209, 228, 249, 273,
112 300
113};
114
115static const s16 LAMBDA_table[4][101] = {
116 { 16, 16, 16, 16, 17, 17, 17, 18, 18, 18,
117 19, 19, 19, 20, 20, 20, 21, 21, 22, 22,
118 22, 23, 23, 24, 24, 25, 25, 25, 26, 26,
119 27, 27, 28, 28, 29, 29, 30, 31, 31, 32,
120 32, 33, 33, 34, 35, 35, 36, 37, 37, 38,
121 39, 39, 40, 41, 42, 42, 43, 44, 45, 46,
122 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
123 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
124 67, 68, 69, 70, 72, 73, 74, 76, 77, 78,
125 80, 81, 83, 84, 86, 87, 89, 90, 92, 94,
126 96
127 },
128 {
129 20, 20, 20, 21, 21, 21, 22, 22, 23, 23,
130 23, 24, 24, 25, 25, 26, 26, 27, 27, 28,
131 28, 29, 29, 30, 30, 31, 31, 32, 33, 33,
132 34, 34, 35, 36, 36, 37, 38, 38, 39, 40,
133 40, 41, 42, 43, 43, 44, 45, 46, 47, 48,
134 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
135 58, 59, 60, 61, 62, 64, 65, 66, 67, 68,
136 70, 71, 72, 73, 75, 76, 78, 79, 80, 82,
137 83, 85, 86, 88, 90, 91, 93, 95, 96, 98,
138 100, 102, 103, 105, 107, 109, 111, 113, 115, 117,
139 120
140 },
141 {
142 24, 24, 24, 25, 25, 26, 26, 27, 27, 28,
143 28, 29, 29, 30, 30, 31, 31, 32, 33, 33,
144 34, 34, 35, 36, 36, 37, 38, 38, 39, 40,
145 41, 41, 42, 43, 44, 44, 45, 46, 47, 48,
146 49, 50, 50, 51, 52, 53, 54, 55, 56, 57,
147 58, 59, 60, 62, 63, 64, 65, 66, 67, 69,
148 70, 71, 72, 74, 75, 76, 78, 79, 81, 82,
149 84, 85, 87, 88, 90, 92, 93, 95, 97, 98,
150 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,
151 120, 122, 124, 127, 129, 131, 134, 136, 138, 141,
152 144
153 },
154 {
155 32, 32, 33, 33, 34, 34, 35, 36, 36, 37,
156 38, 38, 39, 40, 41, 41, 42, 43, 44, 44,
157 45, 46, 47, 48, 49, 50, 50, 51, 52, 53,
158 54, 55, 56, 57, 58, 59, 60, 62, 63, 64,
159 65, 66, 67, 69, 70, 71, 72, 74, 75, 76,
160 78, 79, 81, 82, 84, 85, 87, 88, 90, 92,
161 93, 95, 97, 98, 100, 102, 104, 106, 108, 110,
162 112, 114, 116, 118, 120, 122, 124, 127, 129, 131,
163 134, 136, 139, 141, 144, 146, 149, 152, 154, 157,
164 160, 163, 166, 169, 172, 175, 178, 181, 185, 188,
165 192
166 }
167};
168
169/* MPEG blank frame generation tables */
170
171enum mpeg_frame_type {
172 PFRAME,
173 BFRAME_PRE,
174 BFRAME_POST,
175 BFRAME_BIDIR,
176 BFRAME_EMPTY
177};
178
179static const u32 addrinctab[33][2] = {
180 { 0x01, 1 }, { 0x03, 3 }, { 0x02, 3 }, { 0x03, 4 },
181 { 0x02, 4 }, { 0x03, 5 }, { 0x02, 5 }, { 0x07, 7 },
182 { 0x06, 7 }, { 0x0b, 8 }, { 0x0a, 8 }, { 0x09, 8 },
183 { 0x08, 8 }, { 0x07, 8 }, { 0x06, 8 }, { 0x17, 10 },
184 { 0x16, 10 }, { 0x15, 10 }, { 0x14, 10 }, { 0x13, 10 },
185 { 0x12, 10 }, { 0x23, 11 }, { 0x22, 11 }, { 0x21, 11 },
186 { 0x20, 11 }, { 0x1f, 11 }, { 0x1e, 11 }, { 0x1d, 11 },
187 { 0x1c, 11 }, { 0x1b, 11 }, { 0x1a, 11 }, { 0x19, 11 },
188 { 0x18, 11 }
189};
190
191/* Standard JPEG tables */
192
193static const u8 default_intra_quant_table[] = {
194 8, 16, 19, 22, 26, 27, 29, 34,
195 16, 16, 22, 24, 27, 29, 34, 37,
196 19, 22, 26, 27, 29, 34, 34, 38,
197 22, 22, 26, 27, 29, 34, 37, 40,
198 22, 26, 27, 29, 32, 35, 40, 48,
199 26, 27, 29, 32, 35, 40, 48, 58,
200 26, 27, 29, 34, 38, 46, 56, 69,
201 27, 29, 35, 38, 46, 56, 69, 83
202};
203
204static const u8 bits_dc_luminance[] = {
205 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0
206};
207
208static const u8 val_dc_luminance[] = {
209 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
210};
211
212static const u8 bits_dc_chrominance[] = {
213 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
214};
215
216static const u8 val_dc_chrominance[] = {
217 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
218};
219
220static const u8 bits_ac_luminance[] = {
221 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d
222};
223
224static const u8 val_ac_luminance[] = {
225 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
226 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
227 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
228 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
229 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
230 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
231 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
232 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
233 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
234 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
235 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
236 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
237 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
238 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
239 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
240 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
241 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
242 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
243 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
244 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
245 0xf9, 0xfa
246};
247
248static const u8 bits_ac_chrominance[] = {
249 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77
250};
251
252static const u8 val_ac_chrominance[] = {
253 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
254 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
255 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
256 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
257 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
258 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
259 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
260 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
261 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
262 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
263 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
264 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
265 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
266 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
267 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
268 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
269 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
270 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
271 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
272 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
273 0xf9, 0xfa
274};
275
276/* Zig-zag mapping for quant table
277 *
278 * OK, let's do this mapping on the actual table above so it doesn't have
279 * to be done on the fly.
280 */
281static const int zz[64] = {
282 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
283 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
284 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51,
285 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63
286};
287
288static int copy_packages(u16 *dest, u16 *src, int pkg_cnt, int space)
289{
290 int i, cnt = pkg_cnt * 32;
291
292 if (space < cnt)
293 return -1;
294
295 for (i = 0; i < cnt; ++i)
296 dest[i] = __cpu_to_le16(src[i]);
297
298 return cnt;
299}
300
301static int mjpeg_frame_header(struct go7007 *go, unsigned char *buf, int q)
302{
303 int i, p = 0;
304
305 buf[p++] = 0xff;
306 buf[p++] = 0xd8;
307 buf[p++] = 0xff;
308 buf[p++] = 0xdb;
309 buf[p++] = 0;
310 buf[p++] = 2 + 65;
311 buf[p++] = 0;
312 buf[p++] = default_intra_quant_table[0];
313 for (i = 1; i < 64; ++i)
314 /* buf[p++] = (default_intra_quant_table[i] * q) >> 3; */
315 buf[p++] = (default_intra_quant_table[zz[i]] * q) >> 3;
316 buf[p++] = 0xff;
317 buf[p++] = 0xc0;
318 buf[p++] = 0;
319 buf[p++] = 17;
320 buf[p++] = 8;
321 buf[p++] = go->height >> 8;
322 buf[p++] = go->height & 0xff;
323 buf[p++] = go->width >> 8;
324 buf[p++] = go->width & 0xff;
325 buf[p++] = 3;
326 buf[p++] = 1;
327 buf[p++] = 0x22;
328 buf[p++] = 0;
329 buf[p++] = 2;
330 buf[p++] = 0x11;
331 buf[p++] = 0;
332 buf[p++] = 3;
333 buf[p++] = 0x11;
334 buf[p++] = 0;
335 buf[p++] = 0xff;
336 buf[p++] = 0xc4;
337 buf[p++] = 418 >> 8;
338 buf[p++] = 418 & 0xff;
339 buf[p++] = 0x00;
340 memcpy(buf + p, bits_dc_luminance + 1, 16);
341 p += 16;
342 memcpy(buf + p, val_dc_luminance, sizeof(val_dc_luminance));
343 p += sizeof(val_dc_luminance);
344 buf[p++] = 0x01;
345 memcpy(buf + p, bits_dc_chrominance + 1, 16);
346 p += 16;
347 memcpy(buf + p, val_dc_chrominance, sizeof(val_dc_chrominance));
348 p += sizeof(val_dc_chrominance);
349 buf[p++] = 0x10;
350 memcpy(buf + p, bits_ac_luminance + 1, 16);
351 p += 16;
352 memcpy(buf + p, val_ac_luminance, sizeof(val_ac_luminance));
353 p += sizeof(val_ac_luminance);
354 buf[p++] = 0x11;
355 memcpy(buf + p, bits_ac_chrominance + 1, 16);
356 p += 16;
357 memcpy(buf + p, val_ac_chrominance, sizeof(val_ac_chrominance));
358 p += sizeof(val_ac_chrominance);
359 buf[p++] = 0xff;
360 buf[p++] = 0xda;
361 buf[p++] = 0;
362 buf[p++] = 12;
363 buf[p++] = 3;
364 buf[p++] = 1;
365 buf[p++] = 0x00;
366 buf[p++] = 2;
367 buf[p++] = 0x11;
368 buf[p++] = 3;
369 buf[p++] = 0x11;
370 buf[p++] = 0;
371 buf[p++] = 63;
372 buf[p++] = 0;
373 return p;
374}
375
376static int gen_mjpeghdr_to_package(struct go7007 *go, u16 *code, int space)
377{
378 u8 *buf;
379 u16 mem = 0x3e00;
380 unsigned int addr = 0x19;
381 int size = 0, i, off = 0, chunk;
382
383 buf = kmalloc(4096, GFP_KERNEL);
384 if (buf == NULL) {
385 printk(KERN_ERR "go7007: unable to allocate 4096 bytes for "
386 "firmware construction\n");
387 return -1;
388 }
389 memset(buf, 0, 4096);
390
391 for (i = 1; i < 32; ++i) {
392 mjpeg_frame_header(go, buf + size, i);
393 size += 80;
394 }
395 chunk = mjpeg_frame_header(go, buf + size, 1);
396 memmove(buf + size, buf + size + 80, chunk - 80);
397 size += chunk - 80;
398
399 for (i = 0; i < size; i += chunk * 2) {
400 if (space - off < 32) {
401 off = -1;
402 goto done;
403 }
404
405 code[off + 1] = __cpu_to_le16(0x8000 | mem);
406
407 chunk = 28;
408 if (mem + chunk > 0x4000)
409 chunk = 0x4000 - mem;
410 if (i + 2 * chunk > size)
411 chunk = (size - i) / 2;
412
413 if (chunk < 28) {
414 code[off] = __cpu_to_le16(0x4000 | chunk);
415 code[off + 31] = __cpu_to_le16(addr++);
416 mem = 0x3e00;
417 } else {
418 code[off] = __cpu_to_le16(0x1000 | 28);
419 code[off + 31] = 0;
420 mem += 28;
421 }
422
423 memcpy(&code[off + 2], buf + i, chunk * 2);
424 off += 32;
425 }
426done:
427 kfree(buf);
428 return off;
429}
430
431static int mpeg1_frame_header(struct go7007 *go, unsigned char *buf,
432 int modulo, int pict_struct, enum mpeg_frame_type frame)
433{
434 int i, j, mb_code, mb_len;
435 int rows = go->interlace_coding ? go->height / 32 : go->height / 16;
436 CODE_GEN(c, buf + 6);
437
438 switch (frame) {
439 case PFRAME:
440 mb_code = 0x1;
441 mb_len = 3;
442 break;
443 case BFRAME_PRE:
444 mb_code = 0x2;
445 mb_len = 4;
446 break;
447 case BFRAME_POST:
448 mb_code = 0x2;
449 mb_len = 3;
450 break;
451 case BFRAME_BIDIR:
452 mb_code = 0x2;
453 mb_len = 2;
454 break;
455 default: /* keep the compiler happy */
456 mb_code = mb_len = 0;
457 break;
458 }
459
460 CODE_ADD(c, frame == PFRAME ? 0x2 : 0x3, 13);
461 CODE_ADD(c, 0xffff, 16);
462 CODE_ADD(c, go->format == GO7007_FORMAT_MPEG2 ? 0x7 : 0x4, 4);
463 if (frame != PFRAME)
464 CODE_ADD(c, go->format == GO7007_FORMAT_MPEG2 ? 0x7 : 0x4, 4);
465 else
466 CODE_ADD(c, 0, 4); /* Is this supposed to be here?? */
467 CODE_ADD(c, 0, 3); /* What is this?? */
468 /* Byte-align with zeros */
469 j = 8 - (CODE_LENGTH(c) % 8);
470 if (j != 8)
471 CODE_ADD(c, 0, j);
472
473 if (go->format == GO7007_FORMAT_MPEG2) {
474 CODE_ADD(c, 0x1, 24);
475 CODE_ADD(c, 0xb5, 8);
476 CODE_ADD(c, 0x844, 12);
477 CODE_ADD(c, frame == PFRAME ? 0xff : 0x44, 8);
478 if (go->interlace_coding) {
479 CODE_ADD(c, pict_struct, 4);
480 if (go->dvd_mode)
481 CODE_ADD(c, 0x000, 11);
482 else
483 CODE_ADD(c, 0x200, 11);
484 } else {
485 CODE_ADD(c, 0x3, 4);
486 CODE_ADD(c, 0x20c, 11);
487 }
488 /* Byte-align with zeros */
489 j = 8 - (CODE_LENGTH(c) % 8);
490 if (j != 8)
491 CODE_ADD(c, 0, j);
492 }
493
494 for (i = 0; i < rows; ++i) {
495 CODE_ADD(c, 1, 24);
496 CODE_ADD(c, i + 1, 8);
497 CODE_ADD(c, 0x2, 6);
498 CODE_ADD(c, 0x1, 1);
499 CODE_ADD(c, mb_code, mb_len);
500 if (go->interlace_coding) {
501 CODE_ADD(c, 0x1, 2);
502 CODE_ADD(c, pict_struct == 1 ? 0x0 : 0x1, 1);
503 }
504 if (frame == BFRAME_BIDIR) {
505 CODE_ADD(c, 0x3, 2);
506 if (go->interlace_coding)
507 CODE_ADD(c, pict_struct == 1 ? 0x0 : 0x1, 1);
508 }
509 CODE_ADD(c, 0x3, 2);
510 for (j = (go->width >> 4) - 2; j >= 33; j -= 33)
511 CODE_ADD(c, 0x8, 11);
512 CODE_ADD(c, addrinctab[j][0], addrinctab[j][1]);
513 CODE_ADD(c, mb_code, mb_len);
514 if (go->interlace_coding) {
515 CODE_ADD(c, 0x1, 2);
516 CODE_ADD(c, pict_struct == 1 ? 0x0 : 0x1, 1);
517 }
518 if (frame == BFRAME_BIDIR) {
519 CODE_ADD(c, 0x3, 2);
520 if (go->interlace_coding)
521 CODE_ADD(c, pict_struct == 1 ? 0x0 : 0x1, 1);
522 }
523 CODE_ADD(c, 0x3, 2);
524
525 /* Byte-align with zeros */
526 j = 8 - (CODE_LENGTH(c) % 8);
527 if (j != 8)
528 CODE_ADD(c, 0, j);
529 }
530
531 i = CODE_LENGTH(c) + 4 * 8;
532 buf[2] = 0x00;
533 buf[3] = 0x00;
534 buf[4] = 0x01;
535 buf[5] = 0x00;
536 return i;
537}
538
539static int mpeg1_sequence_header(struct go7007 *go, unsigned char *buf, int ext)
540{
541 int i, aspect_ratio, picture_rate;
542 CODE_GEN(c, buf + 6);
543
544 if (go->format == GO7007_FORMAT_MPEG1) {
545 switch (go->aspect_ratio) {
546 case GO7007_RATIO_4_3:
547 aspect_ratio = go->standard == GO7007_STD_NTSC ? 3 : 2;
548 break;
549 case GO7007_RATIO_16_9:
550 aspect_ratio = go->standard == GO7007_STD_NTSC ? 5 : 4;
551 break;
552 default:
553 aspect_ratio = 1;
554 break;
555 }
556 } else {
557 switch (go->aspect_ratio) {
558 case GO7007_RATIO_4_3:
559 aspect_ratio = 2;
560 break;
561 case GO7007_RATIO_16_9:
562 aspect_ratio = 3;
563 break;
564 default:
565 aspect_ratio = 1;
566 break;
567 }
568 }
569 switch (go->sensor_framerate) {
570 case 24000:
571 picture_rate = 1;
572 break;
573 case 24024:
574 picture_rate = 2;
575 break;
576 case 25025:
577 picture_rate = go->interlace_coding ? 6 : 3;
578 break;
579 case 30000:
580 picture_rate = go->interlace_coding ? 7 : 4;
581 break;
582 case 30030:
583 picture_rate = go->interlace_coding ? 8 : 5;
584 break;
585 default:
586 picture_rate = 5; /* 30 fps seems like a reasonable default */
587 break;
588 }
589
590 CODE_ADD(c, go->width, 12);
591 CODE_ADD(c, go->height, 12);
592 CODE_ADD(c, aspect_ratio, 4);
593 CODE_ADD(c, picture_rate, 4);
594 CODE_ADD(c, go->format == GO7007_FORMAT_MPEG2 ? 20000 : 0x3ffff, 18);
595 CODE_ADD(c, 1, 1);
596 CODE_ADD(c, go->format == GO7007_FORMAT_MPEG2 ? 112 : 20, 10);
597 CODE_ADD(c, 0, 3);
598
599 /* Byte-align with zeros */
600 i = 8 - (CODE_LENGTH(c) % 8);
601 if (i != 8)
602 CODE_ADD(c, 0, i);
603
604 if (go->format == GO7007_FORMAT_MPEG2) {
605 CODE_ADD(c, 0x1, 24);
606 CODE_ADD(c, 0xb5, 8);
607 CODE_ADD(c, 0x148, 12);
608 if (go->interlace_coding)
609 CODE_ADD(c, 0x20001, 20);
610 else
611 CODE_ADD(c, 0xa0001, 20);
612 CODE_ADD(c, 0, 16);
613
614 /* Byte-align with zeros */
615 i = 8 - (CODE_LENGTH(c) % 8);
616 if (i != 8)
617 CODE_ADD(c, 0, i);
618
619 if (ext) {
620 CODE_ADD(c, 0x1, 24);
621 CODE_ADD(c, 0xb52, 12);
622 CODE_ADD(c, go->standard == GO7007_STD_NTSC ? 2 : 1, 3);
623 CODE_ADD(c, 0x105, 9);
624 CODE_ADD(c, 0x505, 16);
625 CODE_ADD(c, go->width, 14);
626 CODE_ADD(c, 1, 1);
627 CODE_ADD(c, go->height, 14);
628
629 /* Byte-align with zeros */
630 i = 8 - (CODE_LENGTH(c) % 8);
631 if (i != 8)
632 CODE_ADD(c, 0, i);
633 }
634 }
635
636 i = CODE_LENGTH(c) + 4 * 8;
637 buf[0] = i & 0xff;
638 buf[1] = i >> 8;
639 buf[2] = 0x00;
640 buf[3] = 0x00;
641 buf[4] = 0x01;
642 buf[5] = 0xb3;
643 return i;
644}
645
646static int gen_mpeg1hdr_to_package(struct go7007 *go,
647 u16 *code, int space, int *framelen)
648{
649 u8 *buf;
650 u16 mem = 0x3e00;
651 unsigned int addr = 0x19;
652 int i, off = 0, chunk;
653
654 buf = kmalloc(5120, GFP_KERNEL);
655 if (buf == NULL) {
656 printk(KERN_ERR "go7007: unable to allocate 5120 bytes for "
657 "firmware construction\n");
658 return -1;
659 }
660 memset(buf, 0, 5120);
661 framelen[0] = mpeg1_frame_header(go, buf, 0, 1, PFRAME);
662 if (go->interlace_coding)
663 framelen[0] += mpeg1_frame_header(go, buf + framelen[0] / 8,
664 0, 2, PFRAME);
665 buf[0] = framelen[0] & 0xff;
666 buf[1] = framelen[0] >> 8;
667 i = 368;
668 framelen[1] = mpeg1_frame_header(go, buf + i, 0, 1, BFRAME_PRE);
669 if (go->interlace_coding)
670 framelen[1] += mpeg1_frame_header(go, buf + i + framelen[1] / 8,
671 0, 2, BFRAME_PRE);
672 buf[i] = framelen[1] & 0xff;
673 buf[i + 1] = framelen[1] >> 8;
674 i += 1632;
675 framelen[2] = mpeg1_frame_header(go, buf + i, 0, 1, BFRAME_POST);
676 if (go->interlace_coding)
677 framelen[2] += mpeg1_frame_header(go, buf + i + framelen[2] / 8,
678 0, 2, BFRAME_POST);
679 buf[i] = framelen[2] & 0xff;
680 buf[i + 1] = framelen[2] >> 8;
681 i += 1432;
682 framelen[3] = mpeg1_frame_header(go, buf + i, 0, 1, BFRAME_BIDIR);
683 if (go->interlace_coding)
684 framelen[3] += mpeg1_frame_header(go, buf + i + framelen[3] / 8,
685 0, 2, BFRAME_BIDIR);
686 buf[i] = framelen[3] & 0xff;
687 buf[i + 1] = framelen[3] >> 8;
688 i += 1632 + 16;
689 mpeg1_sequence_header(go, buf + i, 0);
690 i += 40;
691 for (i = 0; i < 5120; i += chunk * 2) {
692 if (space - off < 32) {
693 off = -1;
694 goto done;
695 }
696
697 code[off + 1] = __cpu_to_le16(0x8000 | mem);
698
699 chunk = 28;
700 if (mem + chunk > 0x4000)
701 chunk = 0x4000 - mem;
702 if (i + 2 * chunk > 5120)
703 chunk = (5120 - i) / 2;
704
705 if (chunk < 28) {
706 code[off] = __cpu_to_le16(0x4000 | chunk);
707 code[off + 31] = __cpu_to_le16(addr);
708 if (mem + chunk == 0x4000) {
709 mem = 0x3e00;
710 ++addr;
711 }
712 } else {
713 code[off] = __cpu_to_le16(0x1000 | 28);
714 code[off + 31] = 0;
715 mem += 28;
716 }
717
718 memcpy(&code[off + 2], buf + i, chunk * 2);
719 off += 32;
720 }
721done:
722 kfree(buf);
723 return off;
724}
725
726static int vti_bitlen(struct go7007 *go)
727{
728 unsigned int i, max_time_incr = go->sensor_framerate / go->fps_scale;
729
730 for (i = 31; (max_time_incr & ((1 << i) - 1)) == max_time_incr; --i);
731 return i + 1;
732}
733
734static int mpeg4_frame_header(struct go7007 *go, unsigned char *buf,
735 int modulo, enum mpeg_frame_type frame)
736{
737 int i;
738 CODE_GEN(c, buf + 6);
739 int mb_count = (go->width >> 4) * (go->height >> 4);
740
741 CODE_ADD(c, frame == PFRAME ? 0x1 : 0x2, 2);
742 if (modulo)
743 CODE_ADD(c, 0x1, 1);
744 CODE_ADD(c, 0x1, 2);
745 CODE_ADD(c, 0, vti_bitlen(go));
746 CODE_ADD(c, 0x3, 2);
747 if (frame == PFRAME)
748 CODE_ADD(c, 0, 1);
749 CODE_ADD(c, 0xc, 11);
750 if (frame != PFRAME)
751 CODE_ADD(c, 0x4, 3);
752 if (frame != BFRAME_EMPTY) {
753 for (i = 0; i < mb_count; ++i) {
754 switch (frame) {
755 case PFRAME:
756 CODE_ADD(c, 0x1, 1);
757 break;
758 case BFRAME_PRE:
759 CODE_ADD(c, 0x47, 8);
760 break;
761 case BFRAME_POST:
762 CODE_ADD(c, 0x27, 7);
763 break;
764 case BFRAME_BIDIR:
765 CODE_ADD(c, 0x5f, 8);
766 break;
767 case BFRAME_EMPTY: /* keep compiler quiet */
768 break;
769 }
770 }
771 }
772
773 /* Byte-align with a zero followed by ones */
774 i = 8 - (CODE_LENGTH(c) % 8);
775 CODE_ADD(c, 0, 1);
776 CODE_ADD(c, (1 << (i - 1)) - 1, i - 1);
777
778 i = CODE_LENGTH(c) + 4 * 8;
779 buf[0] = i & 0xff;
780 buf[1] = i >> 8;
781 buf[2] = 0x00;
782 buf[3] = 0x00;
783 buf[4] = 0x01;
784 buf[5] = 0xb6;
785 return i;
786}
787
788static int mpeg4_sequence_header(struct go7007 *go, unsigned char *buf, int ext)
789{
790 const unsigned char head[] = { 0x00, 0x00, 0x01, 0xb0, go->pali,
791 0x00, 0x00, 0x01, 0xb5, 0x09,
792 0x00, 0x00, 0x01, 0x00,
793 0x00, 0x00, 0x01, 0x20, };
794 int i, aspect_ratio;
795 int fps = go->sensor_framerate / go->fps_scale;
796 CODE_GEN(c, buf + 2 + sizeof(head));
797
798 switch (go->aspect_ratio) {
799 case GO7007_RATIO_4_3:
800 aspect_ratio = go->standard == GO7007_STD_NTSC ? 3 : 2;
801 break;
802 case GO7007_RATIO_16_9:
803 aspect_ratio = go->standard == GO7007_STD_NTSC ? 5 : 4;
804 break;
805 default:
806 aspect_ratio = 1;
807 break;
808 }
809
810 memcpy(buf + 2, head, sizeof(head));
811 CODE_ADD(c, 0x191, 17);
812 CODE_ADD(c, aspect_ratio, 4);
813 CODE_ADD(c, 0x1, 4);
814 CODE_ADD(c, fps, 16);
815 CODE_ADD(c, 0x3, 2);
816 CODE_ADD(c, 1001, vti_bitlen(go));
817 CODE_ADD(c, 1, 1);
818 CODE_ADD(c, go->width, 13);
819 CODE_ADD(c, 1, 1);
820 CODE_ADD(c, go->height, 13);
821 CODE_ADD(c, 0x2830, 14);
822
823 /* Byte-align */
824 i = 8 - (CODE_LENGTH(c) % 8);
825 CODE_ADD(c, 0, 1);
826 CODE_ADD(c, (1 << (i - 1)) - 1, i - 1);
827
828 i = CODE_LENGTH(c) + sizeof(head) * 8;
829 buf[0] = i & 0xff;
830 buf[1] = i >> 8;
831 return i;
832}
833
834static int gen_mpeg4hdr_to_package(struct go7007 *go,
835 u16 *code, int space, int *framelen)
836{
837 u8 *buf;
838 u16 mem = 0x3e00;
839 unsigned int addr = 0x19;
840 int i, off = 0, chunk;
841
842 buf = kmalloc(5120, GFP_KERNEL);
843 if (buf == NULL) {
844 printk(KERN_ERR "go7007: unable to allocate 5120 bytes for "
845 "firmware construction\n");
846 return -1;
847 }
848 memset(buf, 0, 5120);
849 framelen[0] = mpeg4_frame_header(go, buf, 0, PFRAME);
850 i = 368;
851 framelen[1] = mpeg4_frame_header(go, buf + i, 0, BFRAME_PRE);
852 i += 1632;
853 framelen[2] = mpeg4_frame_header(go, buf + i, 0, BFRAME_POST);
854 i += 1432;
855 framelen[3] = mpeg4_frame_header(go, buf + i, 0, BFRAME_BIDIR);
856 i += 1632;
857 mpeg4_frame_header(go, buf + i, 0, BFRAME_EMPTY);
858 i += 16;
859 mpeg4_sequence_header(go, buf + i, 0);
860 i += 40;
861 for (i = 0; i < 5120; i += chunk * 2) {
862 if (space - off < 32) {
863 off = -1;
864 goto done;
865 }
866
867 code[off + 1] = __cpu_to_le16(0x8000 | mem);
868
869 chunk = 28;
870 if (mem + chunk > 0x4000)
871 chunk = 0x4000 - mem;
872 if (i + 2 * chunk > 5120)
873 chunk = (5120 - i) / 2;
874
875 if (chunk < 28) {
876 code[off] = __cpu_to_le16(0x4000 | chunk);
877 code[off + 31] = __cpu_to_le16(addr);
878 if (mem + chunk == 0x4000) {
879 mem = 0x3e00;
880 ++addr;
881 }
882 } else {
883 code[off] = __cpu_to_le16(0x1000 | 28);
884 code[off + 31] = 0;
885 mem += 28;
886 }
887
888 memcpy(&code[off + 2], buf + i, chunk * 2);
889 off += 32;
890 }
891 mem = 0x3e00;
892 addr = go->ipb ? 0x14f9 : 0x0af9;
893 memset(buf, 0, 5120);
894 framelen[4] = mpeg4_frame_header(go, buf, 1, PFRAME);
895 i = 368;
896 framelen[5] = mpeg4_frame_header(go, buf + i, 1, BFRAME_PRE);
897 i += 1632;
898 framelen[6] = mpeg4_frame_header(go, buf + i, 1, BFRAME_POST);
899 i += 1432;
900 framelen[7] = mpeg4_frame_header(go, buf + i, 1, BFRAME_BIDIR);
901 i += 1632;
902 mpeg4_frame_header(go, buf + i, 1, BFRAME_EMPTY);
903 i += 16;
904 for (i = 0; i < 5120; i += chunk * 2) {
905 if (space - off < 32) {
906 off = -1;
907 goto done;
908 }
909
910 code[off + 1] = __cpu_to_le16(0x8000 | mem);
911
912 chunk = 28;
913 if (mem + chunk > 0x4000)
914 chunk = 0x4000 - mem;
915 if (i + 2 * chunk > 5120)
916 chunk = (5120 - i) / 2;
917
918 if (chunk < 28) {
919 code[off] = __cpu_to_le16(0x4000 | chunk);
920 code[off + 31] = __cpu_to_le16(addr);
921 if (mem + chunk == 0x4000) {
922 mem = 0x3e00;
923 ++addr;
924 }
925 } else {
926 code[off] = __cpu_to_le16(0x1000 | 28);
927 code[off + 31] = 0;
928 mem += 28;
929 }
930
931 memcpy(&code[off + 2], buf + i, chunk * 2);
932 off += 32;
933 }
934done:
935 kfree(buf);
936 return off;
937}
938
939static int brctrl_to_package(struct go7007 *go,
940 u16 *code, int space, int *framelen)
941{
942 int converge_speed = 0;
943 int lambda = (go->format == GO7007_FORMAT_MJPEG || go->dvd_mode) ?
944 100 : 0;
945 int peak_rate = 6 * go->bitrate / 5;
946 int vbv_buffer = go->format == GO7007_FORMAT_MJPEG ?
947 go->bitrate :
948 (go->dvd_mode ? 900000 : peak_rate);
949 int fps = go->sensor_framerate / go->fps_scale;
950 int q = 0;
951 /* Bizarre math below depends on rounding errors in division */
952 u32 sgop_expt_addr = go->bitrate / 32 * (go->ipb ? 3 : 1) * 1001 / fps;
953 u32 sgop_peak_addr = peak_rate / 32 * 1001 / fps;
954 u32 total_expt_addr = go->bitrate / 32 * 1000 / fps * (fps / 1000);
955 u32 vbv_alert_addr = vbv_buffer * 3 / (4 * 32);
956 u32 cplx[] = {
957 q > 0 ? sgop_expt_addr * q :
958 2 * go->width * go->height * (go->ipb ? 6 : 4) / 32,
959 q > 0 ? sgop_expt_addr * q :
960 2 * go->width * go->height * (go->ipb ? 6 : 4) / 32,
961 q > 0 ? sgop_expt_addr * q :
962 2 * go->width * go->height * (go->ipb ? 6 : 4) / 32,
963 q > 0 ? sgop_expt_addr * q :
964 2 * go->width * go->height * (go->ipb ? 6 : 4) / 32,
965 };
966 u32 calc_q = q > 0 ? q : cplx[0] / sgop_expt_addr;
967 u16 pack[] = {
968 0x200e, 0x0000,
969 0xBF20, go->ipb ? converge_speed_ipb[converge_speed]
970 : converge_speed_ip[converge_speed],
971 0xBF21, go->ipb ? 2 : 0,
972 0xBF22, go->ipb ? LAMBDA_table[0][lambda / 2 + 50]
973 : 32767,
974 0xBF23, go->ipb ? LAMBDA_table[1][lambda] : 32767,
975 0xBF24, 32767,
976 0xBF25, lambda > 99 ? 32767 : LAMBDA_table[3][lambda],
977 0xBF26, sgop_expt_addr & 0x0000FFFF,
978 0xBF27, sgop_expt_addr >> 16,
979 0xBF28, sgop_peak_addr & 0x0000FFFF,
980 0xBF29, sgop_peak_addr >> 16,
981 0xBF2A, vbv_alert_addr & 0x0000FFFF,
982 0xBF2B, vbv_alert_addr >> 16,
983 0xBF2C, 0,
984 0xBF2D, 0,
985 0, 0,
986
987 0x200e, 0x0000,
988 0xBF2E, vbv_alert_addr & 0x0000FFFF,
989 0xBF2F, vbv_alert_addr >> 16,
990 0xBF30, cplx[0] & 0x0000FFFF,
991 0xBF31, cplx[0] >> 16,
992 0xBF32, cplx[1] & 0x0000FFFF,
993 0xBF33, cplx[1] >> 16,
994 0xBF34, cplx[2] & 0x0000FFFF,
995 0xBF35, cplx[2] >> 16,
996 0xBF36, cplx[3] & 0x0000FFFF,
997 0xBF37, cplx[3] >> 16,
998 0xBF38, 0,
999 0xBF39, 0,
1000 0xBF3A, total_expt_addr & 0x0000FFFF,
1001 0xBF3B, total_expt_addr >> 16,
1002 0, 0,
1003
1004 0x200e, 0x0000,
1005 0xBF3C, total_expt_addr & 0x0000FFFF,
1006 0xBF3D, total_expt_addr >> 16,
1007 0xBF3E, 0,
1008 0xBF3F, 0,
1009 0xBF48, 0,
1010 0xBF49, 0,
1011 0xBF4A, calc_q < 4 ? 4 : (calc_q > 124 ? 124 : calc_q),
1012 0xBF4B, 4,
1013 0xBF4C, 0,
1014 0xBF4D, 0,
1015 0xBF4E, 0,
1016 0xBF4F, 0,
1017 0xBF50, 0,
1018 0xBF51, 0,
1019 0, 0,
1020
1021 0x200e, 0x0000,
1022 0xBF40, sgop_expt_addr & 0x0000FFFF,
1023 0xBF41, sgop_expt_addr >> 16,
1024 0xBF42, 0,
1025 0xBF43, 0,
1026 0xBF44, 0,
1027 0xBF45, 0,
1028 0xBF46, (go->width >> 4) * (go->height >> 4),
1029 0xBF47, 0,
1030 0xBF64, 0,
1031 0xBF65, 0,
1032 0xBF18, framelen[4],
1033 0xBF19, framelen[5],
1034 0xBF1A, framelen[6],
1035 0xBF1B, framelen[7],
1036 0, 0,
1037
1038#if 0 /* Remove once we don't care about matching */
1039 0x200e, 0x0000,
1040 0xBF56, 4,
1041 0xBF57, 0,
1042 0xBF58, 5,
1043 0xBF59, 0,
1044 0xBF5A, 6,
1045 0xBF5B, 0,
1046 0xBF5C, 8,
1047 0xBF5D, 0,
1048 0xBF5E, 1,
1049 0xBF5F, 0,
1050 0xBF60, 1,
1051 0xBF61, 0,
1052 0xBF62, 0,
1053 0xBF63, 0,
1054 0, 0,
1055#else
1056 0x2008, 0x0000,
1057 0xBF56, 4,
1058 0xBF57, 0,
1059 0xBF58, 5,
1060 0xBF59, 0,
1061 0xBF5A, 6,
1062 0xBF5B, 0,
1063 0xBF5C, 8,
1064 0xBF5D, 0,
1065 0, 0,
1066 0, 0,
1067 0, 0,
1068 0, 0,
1069 0, 0,
1070 0, 0,
1071 0, 0,
1072#endif
1073
1074 0x200e, 0x0000,
1075 0xBF10, 0,
1076 0xBF11, 0,
1077 0xBF12, 0,
1078 0xBF13, 0,
1079 0xBF14, 0,
1080 0xBF15, 0,
1081 0xBF16, 0,
1082 0xBF17, 0,
1083 0xBF7E, 0,
1084 0xBF7F, 1,
1085 0xBF52, framelen[0],
1086 0xBF53, framelen[1],
1087 0xBF54, framelen[2],
1088 0xBF55, framelen[3],
1089 0, 0,
1090 };
1091
1092 return copy_packages(code, pack, 6, space);
1093}
1094
1095static int config_package(struct go7007 *go, u16 *code, int space)
1096{
1097 int fps = go->sensor_framerate / go->fps_scale / 1000;
1098 int rows = go->interlace_coding ? go->height / 32 : go->height / 16;
1099 int brc_window_size = fps;
1100 int q_min = 2, q_max = 31;
1101 int THACCoeffSet0 = 0;
1102 u16 pack[] = {
1103 0x200e, 0x0000,
1104 0xc002, 0x14b4,
1105 0xc003, 0x28b4,
1106 0xc004, 0x3c5a,
1107 0xdc05, 0x2a77,
1108 0xc6c3, go->format == GO7007_FORMAT_MPEG4 ? 0 :
1109 (go->format == GO7007_FORMAT_H263 ? 0 : 1),
1110 0xc680, go->format == GO7007_FORMAT_MPEG4 ? 0xf1 :
1111 (go->format == GO7007_FORMAT_H263 ? 0x61 :
1112 0xd3),
1113 0xc780, 0x0140,
1114 0xe009, 0x0001,
1115 0xc60f, 0x0008,
1116 0xd4ff, 0x0002,
1117 0xe403, 2340,
1118 0xe406, 75,
1119 0xd411, 0x0001,
1120 0xd410, 0xa1d6,
1121 0x0001, 0x2801,
1122
1123 0x200d, 0x0000,
1124 0xe402, 0x018b,
1125 0xe401, 0x8b01,
1126 0xd472, (go->board_info->sensor_flags &
1127 GO7007_SENSOR_TV) &&
1128 (!go->interlace_coding) ?
1129 0x01b0 : 0x0170,
1130 0xd475, (go->board_info->sensor_flags &
1131 GO7007_SENSOR_TV) &&
1132 (!go->interlace_coding) ?
1133 0x0008 : 0x0009,
1134 0xc404, go->interlace_coding ? 0x44 :
1135 (go->format == GO7007_FORMAT_MPEG4 ? 0x11 :
1136 (go->format == GO7007_FORMAT_MPEG1 ? 0x02 :
1137 (go->format == GO7007_FORMAT_MPEG2 ? 0x04 :
1138 (go->format == GO7007_FORMAT_H263 ? 0x08 :
1139 0x20)))),
1140 0xbf0a, (go->format == GO7007_FORMAT_MPEG4 ? 8 :
1141 (go->format == GO7007_FORMAT_MPEG1 ? 1 :
1142 (go->format == GO7007_FORMAT_MPEG2 ? 2 :
1143 (go->format == GO7007_FORMAT_H263 ? 4 : 16)))) |
1144 ((go->repeat_seqhead ? 1 : 0) << 6) |
1145 ((go->dvd_mode ? 1 : 0) << 9) |
1146 ((go->gop_header_enable ? 1 : 0) << 10),
1147 0xbf0b, 0,
1148 0xdd5a, go->ipb ? 0x14 : 0x0a,
1149 0xbf0c, 0,
1150 0xbf0d, 0,
1151 0xc683, THACCoeffSet0,
1152 0xc40a, (go->width << 4) | rows,
1153 0xe01a, go->board_info->hpi_buffer_cap,
1154 0, 0,
1155 0, 0,
1156
1157 0x2008, 0,
1158 0xe402, 0x88,
1159 0xe401, 0x8f01,
1160 0xbf6a, 0,
1161 0xbf6b, 0,
1162 0xbf6c, 0,
1163 0xbf6d, 0,
1164 0xbf6e, 0,
1165 0xbf6f, 0,
1166 0, 0,
1167 0, 0,
1168 0, 0,
1169 0, 0,
1170 0, 0,
1171 0, 0,
1172 0, 0,
1173
1174 0x200e, 0,
1175 0xbf66, brc_window_size,
1176 0xbf67, 0,
1177 0xbf68, q_min,
1178 0xbf69, q_max,
1179 0xbfe0, 0,
1180 0xbfe1, 0,
1181 0xbfe2, 0,
1182 0xbfe3, go->ipb ? 3 : 1,
1183 0xc031, go->board_info->sensor_flags &
1184 GO7007_SENSOR_VBI ? 1 : 0,
1185 0xc01c, 0x1f,
1186 0xdd8c, 0x15,
1187 0xdd94, 0x15,
1188 0xdd88, go->ipb ? 0x1401 : 0x0a01,
1189 0xdd90, go->ipb ? 0x1401 : 0x0a01,
1190 0, 0,
1191
1192 0x200e, 0,
1193 0xbfe4, 0,
1194 0xbfe5, 0,
1195 0xbfe6, 0,
1196 0xbfe7, fps << 8,
1197 0xbfe8, 0x3a00,
1198 0xbfe9, 0,
1199 0xbfea, 0,
1200 0xbfeb, 0,
1201 0xbfec, (go->interlace_coding ? 1 << 15 : 0) |
1202 (go->modet_enable ? 0xa : 0) |
1203 (go->board_info->sensor_flags &
1204 GO7007_SENSOR_VBI ? 1 : 0),
1205 0xbfed, 0,
1206 0xbfee, 0,
1207 0xbfef, 0,
1208 0xbff0, go->board_info->sensor_flags &
1209 GO7007_SENSOR_TV ? 0xf060 : 0xb060,
1210 0xbff1, 0,
1211 0, 0,
1212 };
1213
1214 return copy_packages(code, pack, 5, space);
1215}
1216
1217static int seqhead_to_package(struct go7007 *go, u16 *code, int space,
1218 int (*sequence_header_func)(struct go7007 *go,
1219 unsigned char *buf, int ext))
1220{
1221 int vop_time_increment_bitlength = vti_bitlen(go);
1222 int fps = go->sensor_framerate / go->fps_scale *
1223 (go->interlace_coding ? 2 : 1);
1224 unsigned char buf[40] = { };
1225 int len = sequence_header_func(go, buf, 1);
1226 u16 pack[] = {
1227 0x2006, 0,
1228 0xbf08, fps,
1229 0xbf09, 0,
1230 0xbff2, vop_time_increment_bitlength,
1231 0xbff3, (1 << vop_time_increment_bitlength) - 1,
1232 0xbfe6, 0,
1233 0xbfe7, (fps / 1000) << 8,
1234 0, 0,
1235 0, 0,
1236 0, 0,
1237 0, 0,
1238 0, 0,
1239 0, 0,
1240 0, 0,
1241 0, 0,
1242 0, 0,
1243
1244 0x2007, 0,
1245 0xc800, buf[2] << 8 | buf[3],
1246 0xc801, buf[4] << 8 | buf[5],
1247 0xc802, buf[6] << 8 | buf[7],
1248 0xc803, buf[8] << 8 | buf[9],
1249 0xc406, 64,
1250 0xc407, len - 64,
1251 0xc61b, 1,
1252 0, 0,
1253 0, 0,
1254 0, 0,
1255 0, 0,
1256 0, 0,
1257 0, 0,
1258 0, 0,
1259 0, 0,
1260
1261 0x200e, 0,
1262 0xc808, buf[10] << 8 | buf[11],
1263 0xc809, buf[12] << 8 | buf[13],
1264 0xc80a, buf[14] << 8 | buf[15],
1265 0xc80b, buf[16] << 8 | buf[17],
1266 0xc80c, buf[18] << 8 | buf[19],
1267 0xc80d, buf[20] << 8 | buf[21],
1268 0xc80e, buf[22] << 8 | buf[23],
1269 0xc80f, buf[24] << 8 | buf[25],
1270 0xc810, buf[26] << 8 | buf[27],
1271 0xc811, buf[28] << 8 | buf[29],
1272 0xc812, buf[30] << 8 | buf[31],
1273 0xc813, buf[32] << 8 | buf[33],
1274 0xc814, buf[34] << 8 | buf[35],
1275 0xc815, buf[36] << 8 | buf[37],
1276 0, 0,
1277 0, 0,
1278 0, 0,
1279 };
1280
1281 return copy_packages(code, pack, 3, space);
1282}
1283
1284static int relative_prime(int big, int little)
1285{
1286 int remainder;
1287
1288 while (little != 0) {
1289 remainder = big % little;
1290 big = little;
1291 little = remainder;
1292 }
1293 return big;
1294}
1295
1296static int avsync_to_package(struct go7007 *go, u16 *code, int space)
1297{
1298 int arate = go->board_info->audio_rate * 1001 * go->fps_scale;
1299 int ratio = arate / go->sensor_framerate;
1300 int adjratio = ratio * 215 / 100;
1301 int rprime = relative_prime(go->sensor_framerate,
1302 arate % go->sensor_framerate);
1303 int f1 = (arate % go->sensor_framerate) / rprime;
1304 int f2 = (go->sensor_framerate - arate % go->sensor_framerate) / rprime;
1305 u16 pack[] = {
1306 0x200e, 0,
1307 0xbf98, (u16)((-adjratio) & 0xffff),
1308 0xbf99, (u16)((-adjratio) >> 16),
1309 0xbf92, 0,
1310 0xbf93, 0,
1311 0xbff4, f1 > f2 ? f1 : f2,
1312 0xbff5, f1 < f2 ? f1 : f2,
1313 0xbff6, f1 < f2 ? ratio : ratio + 1,
1314 0xbff7, f1 > f2 ? ratio : ratio + 1,
1315 0xbff8, 0,
1316 0xbff9, 0,
1317 0xbffa, adjratio & 0xffff,
1318 0xbffb, adjratio >> 16,
1319 0xbf94, 0,
1320 0xbf95, 0,
1321 0, 0,
1322 };
1323
1324 return copy_packages(code, pack, 1, space);
1325}
1326
1327static int final_package(struct go7007 *go, u16 *code, int space)
1328{
1329 int rows = go->interlace_coding ? go->height / 32 : go->height / 16;
1330 u16 pack[] = {
1331 0x8000,
1332 0,
1333 0,
1334 0,
1335 0,
1336 0,
1337 0,
1338 2,
1339 ((go->board_info->sensor_flags & GO7007_SENSOR_TV) &&
1340 (!go->interlace_coding) ?
1341 (1 << 14) | (1 << 9) : 0) |
1342 ((go->encoder_subsample ? 1 : 0) << 8) |
1343 (go->board_info->sensor_flags &
1344 GO7007_SENSOR_CONFIG_MASK),
1345 ((go->encoder_v_halve ? 1 : 0) << 14) |
1346 (go->encoder_v_halve ? rows << 9 : rows << 8) |
1347 (go->encoder_h_halve ? 1 << 6 : 0) |
1348 (go->encoder_h_halve ? go->width >> 3 : go->width >> 4),
1349 (1 << 15) | (go->encoder_v_offset << 6) |
1350 (1 << 7) | (go->encoder_h_offset >> 2),
1351 (1 << 6),
1352 0,
1353 0,
1354 ((go->fps_scale - 1) << 8) |
1355 (go->board_info->sensor_flags & GO7007_SENSOR_TV ?
1356 (1 << 7) : 0) |
1357 0x41,
1358 go->ipb ? 0xd4c : 0x36b,
1359 (rows << 8) | (go->width >> 4),
1360 go->format == GO7007_FORMAT_MPEG4 ? 0x0404 : 0,
1361 (1 << 15) | ((go->interlace_coding ? 1 : 0) << 13) |
1362 ((go->closed_gop ? 1 : 0) << 12) |
1363 ((go->format == GO7007_FORMAT_MPEG4 ? 1 : 0) << 11) |
1364 /* (1 << 9) | */
1365 ((go->ipb ? 3 : 0) << 7) |
1366 ((go->modet_enable ? 1 : 0) << 2) |
1367 ((go->dvd_mode ? 1 : 0) << 1) | 1,
1368 (go->format == GO7007_FORMAT_MPEG1 ? 0x89a0 :
1369 (go->format == GO7007_FORMAT_MPEG2 ? 0x89a0 :
1370 (go->format == GO7007_FORMAT_MJPEG ? 0x89a0 :
1371 (go->format == GO7007_FORMAT_MPEG4 ? 0x8920 :
1372 (go->format == GO7007_FORMAT_H263 ? 0x8920 : 0))))),
1373 go->ipb ? 0x1f15 : 0x1f0b,
1374 go->ipb ? 0x0015 : 0x000b,
1375 go->ipb ? 0xa800 : 0x5800,
1376 0xffff,
1377 0x0020 + 0x034b * 0,
1378 0x0020 + 0x034b * 1,
1379 0x0020 + 0x034b * 2,
1380 0x0020 + 0x034b * 3,
1381 0x0020 + 0x034b * 4,
1382 0x0020 + 0x034b * 5,
1383 go->ipb ? (go->gop_size / 3) : go->gop_size,
1384 (go->height >> 4) * (go->width >> 4) * 110 / 100,
1385 };
1386
1387 return copy_packages(code, pack, 1, space);
1388}
1389
1390static int audio_to_package(struct go7007 *go, u16 *code, int space)
1391{
1392 int clock_config = ((go->board_info->audio_flags &
1393 GO7007_AUDIO_I2S_MASTER ? 1 : 0) << 11) |
1394 ((go->board_info->audio_flags &
1395 GO7007_AUDIO_OKI_MODE ? 1 : 0) << 8) |
1396 (((go->board_info->audio_bclk_div / 4) - 1) << 4) |
1397 (go->board_info->audio_main_div - 1);
1398 u16 pack[] = {
1399 0x200d, 0,
1400 0x9002, 0,
1401 0x9002, 0,
1402 0x9031, 0,
1403 0x9032, 0,
1404 0x9033, 0,
1405 0x9034, 0,
1406 0x9035, 0,
1407 0x9036, 0,
1408 0x9037, 0,
1409 0x9040, 0,
1410 0x9000, clock_config,
1411 0x9001, (go->board_info->audio_flags & 0xffff) |
1412 (1 << 9),
1413 0x9000, ((go->board_info->audio_flags &
1414 GO7007_AUDIO_I2S_MASTER ?
1415 1 : 0) << 10) |
1416 clock_config,
1417 0, 0,
1418 0, 0,
1419 0x2005, 0,
1420 0x9041, 0,
1421 0x9042, 256,
1422 0x9043, 0,
1423 0x9044, 16,
1424 0x9045, 16,
1425 0, 0,
1426 0, 0,
1427 0, 0,
1428 0, 0,
1429 0, 0,
1430 0, 0,
1431 0, 0,
1432 0, 0,
1433 0, 0,
1434 0, 0,
1435 };
1436
1437 return copy_packages(code, pack, 2, space);
1438}
1439
1440static int modet_to_package(struct go7007 *go, u16 *code, int space)
1441{
1442 int ret, mb, i, addr, cnt = 0;
1443 u16 pack[32];
1444 u16 thresholds[] = {
1445 0x200e, 0,
1446 0xbf82, go->modet[0].pixel_threshold,
1447 0xbf83, go->modet[1].pixel_threshold,
1448 0xbf84, go->modet[2].pixel_threshold,
1449 0xbf85, go->modet[3].pixel_threshold,
1450 0xbf86, go->modet[0].motion_threshold,
1451 0xbf87, go->modet[1].motion_threshold,
1452 0xbf88, go->modet[2].motion_threshold,
1453 0xbf89, go->modet[3].motion_threshold,
1454 0xbf8a, go->modet[0].mb_threshold,
1455 0xbf8b, go->modet[1].mb_threshold,
1456 0xbf8c, go->modet[2].mb_threshold,
1457 0xbf8d, go->modet[3].mb_threshold,
1458 0xbf8e, 0,
1459 0xbf8f, 0,
1460 0, 0,
1461 };
1462
1463 ret = copy_packages(code, thresholds, 1, space);
1464 if (ret < 0)
1465 return -1;
1466 cnt += ret;
1467
1468 addr = 0xbac0;
1469 memset(pack, 0, 64);
1470 i = 0;
1471 for (mb = 0; mb < 1624; ++mb) {
1472 pack[i * 2 + 3] <<= 2;
1473 pack[i * 2 + 3] |= go->modet_map[mb];
1474 if (mb % 8 != 7)
1475 continue;
1476 pack[i * 2 + 2] = addr++;
1477 ++i;
1478 if (i == 10 || mb == 1623) {
1479 pack[0] = 0x2000 | i;
1480 ret = copy_packages(code + cnt, pack, 1, space - cnt);
1481 if (ret < 0)
1482 return -1;
1483 cnt += ret;
1484 i = 0;
1485 memset(pack, 0, 64);
1486 }
1487 pack[i * 2 + 3] = 0;
1488 }
1489
1490 memset(pack, 0, 64);
1491 i = 0;
1492 for (addr = 0xbb90; addr < 0xbbfa; ++addr) {
1493 pack[i * 2 + 2] = addr;
1494 pack[i * 2 + 3] = 0;
1495 ++i;
1496 if (i == 10 || addr == 0xbbf9) {
1497 pack[0] = 0x2000 | i;
1498 ret = copy_packages(code + cnt, pack, 1, space - cnt);
1499 if (ret < 0)
1500 return -1;
1501 cnt += ret;
1502 i = 0;
1503 memset(pack, 0, 64);
1504 }
1505 }
1506 return cnt;
1507}
1508
1509static int do_special(struct go7007 *go, u16 type, u16 *code, int space,
1510 int *framelen)
1511{
1512 switch (type) {
1513 case SPECIAL_FRM_HEAD:
1514 switch (go->format) {
1515 case GO7007_FORMAT_MJPEG:
1516 return gen_mjpeghdr_to_package(go, code, space);
1517 case GO7007_FORMAT_MPEG1:
1518 case GO7007_FORMAT_MPEG2:
1519 return gen_mpeg1hdr_to_package(go, code, space,
1520 framelen);
1521 case GO7007_FORMAT_MPEG4:
1522 return gen_mpeg4hdr_to_package(go, code, space,
1523 framelen);
1524 }
1525 case SPECIAL_BRC_CTRL:
1526 return brctrl_to_package(go, code, space, framelen);
1527 case SPECIAL_CONFIG:
1528 return config_package(go, code, space);
1529 case SPECIAL_SEQHEAD:
1530 switch (go->format) {
1531 case GO7007_FORMAT_MPEG1:
1532 case GO7007_FORMAT_MPEG2:
1533 return seqhead_to_package(go, code, space,
1534 mpeg1_sequence_header);
1535 case GO7007_FORMAT_MPEG4:
1536 return seqhead_to_package(go, code, space,
1537 mpeg4_sequence_header);
1538 default:
1539 return 0;
1540 }
1541 case SPECIAL_AV_SYNC:
1542 return avsync_to_package(go, code, space);
1543 case SPECIAL_FINAL:
1544 return final_package(go, code, space);
1545 case SPECIAL_AUDIO:
1546 return audio_to_package(go, code, space);
1547 case SPECIAL_MODET:
1548 return modet_to_package(go, code, space);
1549 }
1550 printk(KERN_ERR
1551 "go7007: firmware file contains unsupported feature %04x\n",
1552 type);
1553 return -1;
1554}
1555
1556int go7007_construct_fw_image(struct go7007 *go, u8 **fw, int *fwlen)
1557{
1558 const struct firmware *fw_entry;
1559 u16 *code, *src;
1560 int framelen[8] = { }; /* holds the lengths of empty frame templates */
1561 int codespace = 64 * 1024, i = 0, srclen, chunk_len, chunk_flags;
1562 int mode_flag;
1563 int ret;
1564
1565 switch (go->format) {
1566 case GO7007_FORMAT_MJPEG:
1567 mode_flag = FLAG_MODE_MJPEG;
1568 break;
1569 case GO7007_FORMAT_MPEG1:
1570 mode_flag = FLAG_MODE_MPEG1;
1571 break;
1572 case GO7007_FORMAT_MPEG2:
1573 mode_flag = FLAG_MODE_MPEG2;
1574 break;
1575 case GO7007_FORMAT_MPEG4:
1576 mode_flag = FLAG_MODE_MPEG4;
1577 break;
1578 default:
1579 return -1;
1580 }
1581 if (request_firmware(&fw_entry, go->board_info->firmware, go->dev)) {
1582 printk(KERN_ERR
1583 "go7007: unable to load firmware from file \"%s\"\n",
1584 go->board_info->firmware);
1585 return -1;
1586 }
1587 code = kmalloc(codespace * 2, GFP_KERNEL);
1588 if (code == NULL) {
1589 printk(KERN_ERR "go7007: unable to allocate %d bytes for "
1590 "firmware construction\n", codespace * 2);
1591 goto fw_failed;
1592 }
1593 memset(code, 0, codespace * 2);
1594 src = (u16 *)fw_entry->data;
1595 srclen = fw_entry->size / 2;
1596 while (srclen >= 2) {
1597 chunk_flags = __le16_to_cpu(src[0]);
1598 chunk_len = __le16_to_cpu(src[1]);
1599 if (chunk_len + 2 > srclen) {
1600 printk(KERN_ERR "go7007: firmware file \"%s\" "
1601 "appears to be corrupted\n",
1602 go->board_info->firmware);
1603 goto fw_failed;
1604 }
1605 if (chunk_flags & mode_flag) {
1606 if (chunk_flags & FLAG_SPECIAL) {
1607 ret = do_special(go, __le16_to_cpu(src[2]),
1608 &code[i], codespace - i, framelen);
1609 if (ret < 0) {
1610 printk(KERN_ERR "go7007: insufficient "
1611 "memory for firmware "
1612 "construction\n");
1613 goto fw_failed;
1614 }
1615 i += ret;
1616 } else {
1617 if (codespace - i < chunk_len) {
1618 printk(KERN_ERR "go7007: insufficient "
1619 "memory for firmware "
1620 "construction\n");
1621 goto fw_failed;
1622 }
1623 memcpy(&code[i], &src[2], chunk_len * 2);
1624 i += chunk_len;
1625 }
1626 }
1627 srclen -= chunk_len + 2;
1628 src += chunk_len + 2;
1629 }
1630 release_firmware(fw_entry);
1631 *fw = (u8 *)code;
1632 *fwlen = i * 2;
1633 return 0;
1634
1635fw_failed:
1636 kfree(code);
1637 release_firmware(fw_entry);
1638 return -1;
1639}
diff --git a/drivers/staging/go7007/go7007-i2c.c b/drivers/staging/go7007/go7007-i2c.c
new file mode 100644
index 00000000000..10baae3dade
--- /dev/null
+++ b/drivers/staging/go7007/go7007-i2c.c
@@ -0,0 +1,309 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/version.h>
19#include <linux/module.h>
20#include <linux/init.h>
21#include <linux/delay.h>
22#include <linux/sched.h>
23#include <linux/list.h>
24#include <linux/unistd.h>
25#include <linux/time.h>
26#include <linux/device.h>
27#include <linux/i2c.h>
28#include <linux/semaphore.h>
29#include <linux/uaccess.h>
30#include <asm/system.h>
31
32#include "go7007-priv.h"
33#include "wis-i2c.h"
34
35/************** Registration interface for I2C client drivers **************/
36
37/* Since there's no way to auto-probe the I2C devices connected to the I2C
38 * bus on the go7007, we have this silly little registration system that
39 * client drivers can use to register their I2C driver ID and their
40 * detect_client function (the one that's normally passed to i2c_probe).
41 *
42 * When a new go7007 device is connected, we can look up in a board info
43 * table by the USB or PCI vendor/product/revision ID to determine
44 * which I2C client module to load. The client driver module will register
45 * itself here, and then we can call the registered detect_client function
46 * to force-load a new client at the address listed in the board info table.
47 *
48 * Really the I2C subsystem should have a way to force-load I2C client
49 * drivers when we have a priori knowledge of what's on the bus, especially
50 * since the existing I2C auto-probe mechanism is so hokey, but we'll use
51 * our own mechanism for the time being. */
52
53struct wis_i2c_client_driver {
54 unsigned int id;
55 found_proc found_proc;
56 struct list_head list;
57};
58
59static LIST_HEAD(i2c_client_drivers);
60static DECLARE_MUTEX(i2c_client_driver_list_lock);
61
62/* Client drivers register here by their I2C driver ID */
63int wis_i2c_add_driver(unsigned int id, found_proc found_proc)
64{
65 struct wis_i2c_client_driver *driver;
66
67 driver = kmalloc(sizeof(struct wis_i2c_client_driver), GFP_KERNEL);
68 if (driver == NULL)
69 return -ENOMEM;
70 driver->id = id;
71 driver->found_proc = found_proc;
72
73 down(&i2c_client_driver_list_lock);
74 list_add_tail(&driver->list, &i2c_client_drivers);
75 up(&i2c_client_driver_list_lock);
76
77 return 0;
78}
79EXPORT_SYMBOL(wis_i2c_add_driver);
80
81void wis_i2c_del_driver(found_proc found_proc)
82{
83 struct wis_i2c_client_driver *driver, *next;
84
85 down(&i2c_client_driver_list_lock);
86 list_for_each_entry_safe(driver, next, &i2c_client_drivers, list)
87 if (driver->found_proc == found_proc) {
88 list_del(&driver->list);
89 kfree(driver);
90 }
91 up(&i2c_client_driver_list_lock);
92}
93EXPORT_SYMBOL(wis_i2c_del_driver);
94
95/* The main go7007 driver calls this to instantiate a client by driver
96 * ID and bus address, which are both stored in the board info table */
97int wis_i2c_probe_device(struct i2c_adapter *adapter,
98 unsigned int id, int addr)
99{
100 struct wis_i2c_client_driver *driver;
101 int found = 0;
102
103 if (addr < 0 || addr > 0x7f)
104 return -1;
105 down(&i2c_client_driver_list_lock);
106 list_for_each_entry(driver, &i2c_client_drivers, list)
107 if (driver->id == id) {
108 if (driver->found_proc(adapter, addr, 0) == 0)
109 found = 1;
110 break;
111 }
112 up(&i2c_client_driver_list_lock);
113 return found;
114}
115
116/********************* Driver for on-board I2C adapter *********************/
117
118/* #define GO7007_I2C_DEBUG */
119
120#define SPI_I2C_ADDR_BASE 0x1400
121#define STATUS_REG_ADDR (SPI_I2C_ADDR_BASE + 0x2)
122#define I2C_CTRL_REG_ADDR (SPI_I2C_ADDR_BASE + 0x6)
123#define I2C_DEV_UP_ADDR_REG_ADDR (SPI_I2C_ADDR_BASE + 0x7)
124#define I2C_LO_ADDR_REG_ADDR (SPI_I2C_ADDR_BASE + 0x8)
125#define I2C_DATA_REG_ADDR (SPI_I2C_ADDR_BASE + 0x9)
126#define I2C_CLKFREQ_REG_ADDR (SPI_I2C_ADDR_BASE + 0xa)
127
128#define I2C_STATE_MASK 0x0007
129#define I2C_READ_READY_MASK 0x0008
130
131/* There is only one I2C port on the TW2804 that feeds all four GO7007 VIPs
132 * on the Adlink PCI-MPG24, so access is shared between all of them. */
133static DECLARE_MUTEX(adlink_mpg24_i2c_lock);
134
135static int go7007_i2c_xfer(struct go7007 *go, u16 addr, int read,
136 u16 command, int flags, u8 *data)
137{
138 int i, ret = -1;
139 u16 val;
140
141 if (go->status == STATUS_SHUTDOWN)
142 return -1;
143
144#ifdef GO7007_I2C_DEBUG
145 if (read)
146 printk(KERN_DEBUG "go7007-i2c: reading 0x%02x on 0x%02x\n",
147 command, addr);
148 else
149 printk(KERN_DEBUG
150 "go7007-i2c: writing 0x%02x to 0x%02x on 0x%02x\n",
151 *data, command, addr);
152#endif
153
154 down(&go->hw_lock);
155
156 if (go->board_id == GO7007_BOARDID_ADLINK_MPG24) {
157 /* Bridge the I2C port on this GO7007 to the shared bus */
158 down(&adlink_mpg24_i2c_lock);
159 go7007_write_addr(go, 0x3c82, 0x0020);
160 }
161
162 /* Wait for I2C adapter to be ready */
163 for (i = 0; i < 10; ++i) {
164 if (go7007_read_addr(go, STATUS_REG_ADDR, &val) < 0)
165 goto i2c_done;
166 if (!(val & I2C_STATE_MASK))
167 break;
168 msleep(100);
169 }
170 if (i == 10) {
171 printk(KERN_ERR "go7007-i2c: I2C adapter is hung\n");
172 goto i2c_done;
173 }
174
175 /* Set target register (command) */
176 go7007_write_addr(go, I2C_CTRL_REG_ADDR, flags);
177 go7007_write_addr(go, I2C_LO_ADDR_REG_ADDR, command);
178
179 /* If we're writing, send the data and target address and we're done */
180 if (!read) {
181 go7007_write_addr(go, I2C_DATA_REG_ADDR, *data);
182 go7007_write_addr(go, I2C_DEV_UP_ADDR_REG_ADDR,
183 (addr << 9) | (command >> 8));
184 ret = 0;
185 goto i2c_done;
186 }
187
188 /* Otherwise, we're reading. First clear i2c_rx_data_rdy. */
189 if (go7007_read_addr(go, I2C_DATA_REG_ADDR, &val) < 0)
190 goto i2c_done;
191
192 /* Send the target address plus read flag */
193 go7007_write_addr(go, I2C_DEV_UP_ADDR_REG_ADDR,
194 (addr << 9) | 0x0100 | (command >> 8));
195
196 /* Wait for i2c_rx_data_rdy */
197 for (i = 0; i < 10; ++i) {
198 if (go7007_read_addr(go, STATUS_REG_ADDR, &val) < 0)
199 goto i2c_done;
200 if (val & I2C_READ_READY_MASK)
201 break;
202 msleep(100);
203 }
204 if (i == 10) {
205 printk(KERN_ERR "go7007-i2c: I2C adapter is hung\n");
206 goto i2c_done;
207 }
208
209 /* Retrieve the read byte */
210 if (go7007_read_addr(go, I2C_DATA_REG_ADDR, &val) < 0)
211 goto i2c_done;
212 *data = val;
213 ret = 0;
214
215i2c_done:
216 if (go->board_id == GO7007_BOARDID_ADLINK_MPG24) {
217 /* Isolate the I2C port on this GO7007 from the shared bus */
218 go7007_write_addr(go, 0x3c82, 0x0000);
219 up(&adlink_mpg24_i2c_lock);
220 }
221 up(&go->hw_lock);
222 return ret;
223}
224
225static int go7007_smbus_xfer(struct i2c_adapter *adapter, u16 addr,
226 unsigned short flags, char read_write,
227 u8 command, int size, union i2c_smbus_data *data)
228{
229 struct go7007 *go = i2c_get_adapdata(adapter);
230
231 if (size != I2C_SMBUS_BYTE_DATA)
232 return -1;
233 return go7007_i2c_xfer(go, addr, read_write == I2C_SMBUS_READ, command,
234 flags & I2C_CLIENT_SCCB ? 0x10 : 0x00, &data->byte);
235}
236
237/* VERY LIMITED I2C master xfer function -- only needed because the
238 * SMBus functions only support 8-bit commands and the SAA7135 uses
239 * 16-bit commands. The I2C interface on the GO7007, as limited as
240 * it is, does support this mode. */
241
242static int go7007_i2c_master_xfer(struct i2c_adapter *adapter,
243 struct i2c_msg msgs[], int num)
244{
245 struct go7007 *go = i2c_get_adapdata(adapter);
246 int i;
247
248 for (i = 0; i < num; ++i) {
249 /* We can only do two things here -- write three bytes, or
250 * write two bytes and read one byte. */
251 if (msgs[i].len == 2) {
252 if (i + 1 == num || msgs[i].addr != msgs[i + 1].addr ||
253 (msgs[i].flags & I2C_M_RD) ||
254 !(msgs[i + 1].flags & I2C_M_RD) ||
255 msgs[i + 1].len != 1)
256 return -1;
257 if (go7007_i2c_xfer(go, msgs[i].addr, 1,
258 (msgs[i].buf[0] << 8) | msgs[i].buf[1],
259 0x01, &msgs[i + 1].buf[0]) < 0)
260 return -1;
261 ++i;
262 } else if (msgs[i].len == 3) {
263 if (msgs[i].flags & I2C_M_RD)
264 return -1;
265 if (msgs[i].len != 3)
266 return -1;
267 if (go7007_i2c_xfer(go, msgs[i].addr, 0,
268 (msgs[i].buf[0] << 8) | msgs[i].buf[1],
269 0x01, &msgs[i].buf[2]) < 0)
270 return -1;
271 } else
272 return -1;
273 }
274
275 return 0;
276}
277
278static u32 go7007_functionality(struct i2c_adapter *adapter)
279{
280 return I2C_FUNC_SMBUS_BYTE_DATA;
281}
282
283static struct i2c_algorithm go7007_algo = {
284 .smbus_xfer = go7007_smbus_xfer,
285 .master_xfer = go7007_i2c_master_xfer,
286 .functionality = go7007_functionality,
287};
288
289static struct i2c_adapter go7007_adap_templ = {
290 .owner = THIS_MODULE,
291 .class = I2C_CLASS_TV_ANALOG,
292 .name = "WIS GO7007SB",
293 .id = I2C_ALGO_GO7007,
294 .algo = &go7007_algo,
295};
296
297int go7007_i2c_init(struct go7007 *go)
298{
299 memcpy(&go->i2c_adapter, &go7007_adap_templ,
300 sizeof(go7007_adap_templ));
301 go->i2c_adapter.dev.parent = go->dev;
302 i2c_set_adapdata(&go->i2c_adapter, go);
303 if (i2c_add_adapter(&go->i2c_adapter) < 0) {
304 printk(KERN_ERR
305 "go7007-i2c: error: i2c_add_adapter failed\n");
306 return -1;
307 }
308 return 0;
309}
diff --git a/drivers/staging/go7007/go7007-priv.h b/drivers/staging/go7007/go7007-priv.h
new file mode 100644
index 00000000000..005542d16a5
--- /dev/null
+++ b/drivers/staging/go7007/go7007-priv.h
@@ -0,0 +1,279 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18/*
19 * This is the private include file for the go7007 driver. It should not
20 * be included by anybody but the driver itself, and especially not by
21 * user-space applications.
22 */
23
24struct go7007;
25
26/* IDs to activate board-specific support code */
27#define GO7007_BOARDID_MATRIX_II 0
28#define GO7007_BOARDID_MATRIX_RELOAD 1
29#define GO7007_BOARDID_STAR_TREK 2
30#define GO7007_BOARDID_PCI_VOYAGER 3
31#define GO7007_BOARDID_XMEN 4
32#define GO7007_BOARDID_XMEN_II 5
33#define GO7007_BOARDID_XMEN_III 6
34#define GO7007_BOARDID_MATRIX_REV 7
35#define GO7007_BOARDID_PX_M402U 16
36#define GO7007_BOARDID_PX_TV402U_ANY 17 /* need to check tuner model */
37#define GO7007_BOARDID_PX_TV402U_NA 18 /* detected NTSC tuner */
38#define GO7007_BOARDID_PX_TV402U_EU 19 /* detected PAL tuner */
39#define GO7007_BOARDID_PX_TV402U_JP 20 /* detected NTSC-J tuner */
40#define GO7007_BOARDID_LIFEVIEW_LR192 21 /* TV Walker Ultra */
41#define GO7007_BOARDID_ENDURA 22
42#define GO7007_BOARDID_ADLINK_MPG24 23
43
44/* Various characteristics of each board */
45#define GO7007_BOARD_HAS_AUDIO (1<<0)
46#define GO7007_BOARD_USE_ONBOARD_I2C (1<<1)
47#define GO7007_BOARD_HAS_TUNER (1<<2)
48
49/* Characteristics of sensor devices */
50#define GO7007_SENSOR_VALID_POLAR (1<<0)
51#define GO7007_SENSOR_HREF_POLAR (1<<1)
52#define GO7007_SENSOR_VREF_POLAR (1<<2)
53#define GO7007_SENSOR_FIELD_ID_POLAR (1<<3)
54#define GO7007_SENSOR_BIT_WIDTH (1<<4)
55#define GO7007_SENSOR_VALID_ENABLE (1<<5)
56#define GO7007_SENSOR_656 (1<<6)
57#define GO7007_SENSOR_CONFIG_MASK 0x7f
58#define GO7007_SENSOR_TV (1<<7)
59#define GO7007_SENSOR_VBI (1<<8)
60#define GO7007_SENSOR_SCALING (1<<9)
61
62/* Characteristics of audio sensor devices */
63#define GO7007_AUDIO_I2S_MODE_1 (1)
64#define GO7007_AUDIO_I2S_MODE_2 (2)
65#define GO7007_AUDIO_I2S_MODE_3 (3)
66#define GO7007_AUDIO_BCLK_POLAR (1<<2)
67#define GO7007_AUDIO_WORD_14 (14<<4)
68#define GO7007_AUDIO_WORD_16 (16<<4)
69#define GO7007_AUDIO_ONE_CHANNEL (1<<11)
70#define GO7007_AUDIO_I2S_MASTER (1<<16)
71#define GO7007_AUDIO_OKI_MODE (1<<17)
72
73struct go7007_board_info {
74 char *firmware;
75 unsigned int flags;
76 int hpi_buffer_cap;
77 unsigned int sensor_flags;
78 int sensor_width;
79 int sensor_height;
80 int sensor_framerate;
81 int sensor_h_offset;
82 int sensor_v_offset;
83 unsigned int audio_flags;
84 int audio_rate;
85 int audio_bclk_div;
86 int audio_main_div;
87 int num_i2c_devs;
88 struct {
89 int id;
90 int addr;
91 } i2c_devs[4];
92 int num_inputs;
93 struct {
94 int video_input;
95 int audio_input;
96 char *name;
97 } inputs[4];
98};
99
100struct go7007_hpi_ops {
101 int (*interface_reset)(struct go7007 *go);
102 int (*write_interrupt)(struct go7007 *go, int addr, int data);
103 int (*read_interrupt)(struct go7007 *go);
104 int (*stream_start)(struct go7007 *go);
105 int (*stream_stop)(struct go7007 *go);
106 int (*send_firmware)(struct go7007 *go, u8 *data, int len);
107};
108
109/* The video buffer size must be a multiple of PAGE_SIZE */
110#define GO7007_BUF_PAGES (128 * 1024 / PAGE_SIZE)
111#define GO7007_BUF_SIZE (GO7007_BUF_PAGES << PAGE_SHIFT)
112
113struct go7007_buffer {
114 struct go7007 *go; /* Reverse reference for VMA ops */
115 int index; /* Reverse reference for DQBUF */
116 enum { BUF_STATE_IDLE, BUF_STATE_QUEUED, BUF_STATE_DONE } state;
117 u32 seq;
118 struct timeval timestamp;
119 struct list_head stream;
120 struct page *pages[GO7007_BUF_PAGES + 1]; /* extra for straddling */
121 unsigned long user_addr;
122 unsigned int page_count;
123 unsigned int offset;
124 unsigned int bytesused;
125 unsigned int frame_offset;
126 u32 modet_active;
127 int mapped;
128};
129
130struct go7007_file {
131 struct go7007 *go;
132 struct semaphore lock;
133 int buf_count;
134 struct go7007_buffer *bufs;
135};
136
137#define GO7007_FORMAT_MJPEG 0
138#define GO7007_FORMAT_MPEG4 1
139#define GO7007_FORMAT_MPEG1 2
140#define GO7007_FORMAT_MPEG2 3
141#define GO7007_FORMAT_H263 4
142
143#define GO7007_RATIO_1_1 0
144#define GO7007_RATIO_4_3 1
145#define GO7007_RATIO_16_9 2
146
147enum go7007_parser_state {
148 STATE_DATA,
149 STATE_00,
150 STATE_00_00,
151 STATE_00_00_01,
152 STATE_FF,
153 STATE_VBI_LEN_A,
154 STATE_VBI_LEN_B,
155 STATE_MODET_MAP,
156 STATE_UNPARSED,
157};
158
159struct go7007 {
160 struct device *dev;
161 struct go7007_board_info *board_info;
162 unsigned int board_id;
163 int tuner_type;
164 int channel_number; /* for multi-channel boards like Adlink PCI-MPG24 */
165 char name[64];
166 struct video_device *video_dev;
167 int ref_count;
168 enum { STATUS_INIT, STATUS_ONLINE, STATUS_SHUTDOWN } status;
169 spinlock_t spinlock;
170 struct semaphore hw_lock;
171 int streaming;
172 int in_use;
173 int audio_enabled;
174
175 /* Video input */
176 int input;
177 enum { GO7007_STD_NTSC, GO7007_STD_PAL, GO7007_STD_OTHER } standard;
178 int sensor_framerate;
179 int width;
180 int height;
181 int encoder_h_offset;
182 int encoder_v_offset;
183 unsigned int encoder_h_halve:1;
184 unsigned int encoder_v_halve:1;
185 unsigned int encoder_subsample:1;
186
187 /* Encoder config */
188 int format;
189 int bitrate;
190 int fps_scale;
191 int pali;
192 int aspect_ratio;
193 int gop_size;
194 unsigned int ipb:1;
195 unsigned int closed_gop:1;
196 unsigned int repeat_seqhead:1;
197 unsigned int seq_header_enable:1;
198 unsigned int gop_header_enable:1;
199 unsigned int dvd_mode:1;
200 unsigned int interlace_coding:1;
201
202 /* Motion detection */
203 unsigned int modet_enable:1;
204 struct {
205 unsigned int enable:1;
206 int pixel_threshold;
207 int motion_threshold;
208 int mb_threshold;
209 } modet[4];
210 unsigned char modet_map[1624];
211 unsigned char active_map[216];
212
213 /* Video streaming */
214 struct go7007_buffer *active_buf;
215 enum go7007_parser_state state;
216 int parse_length;
217 u16 modet_word;
218 int seen_frame;
219 u32 next_seq;
220 struct list_head stream;
221 wait_queue_head_t frame_waitq;
222
223 /* Audio streaming */
224 void (*audio_deliver)(struct go7007 *go, u8 *buf, int length);
225 void *snd_context;
226
227 /* I2C */
228 int i2c_adapter_online;
229 struct i2c_adapter i2c_adapter;
230
231 /* HPI driver */
232 struct go7007_hpi_ops *hpi_ops;
233 void *hpi_context;
234 int interrupt_available;
235 wait_queue_head_t interrupt_waitq;
236 unsigned short interrupt_value;
237 unsigned short interrupt_data;
238};
239
240/* All of these must be called with the hpi_lock semaphore held! */
241#define go7007_interface_reset(go) \
242 ((go)->hpi_ops->interface_reset(go))
243#define go7007_write_interrupt(go, x, y) \
244 ((go)->hpi_ops->write_interrupt)((go), (x), (y))
245#define go7007_stream_start(go) \
246 ((go)->hpi_ops->stream_start(go))
247#define go7007_stream_stop(go) \
248 ((go)->hpi_ops->stream_stop(go))
249#define go7007_send_firmware(go, x, y) \
250 ((go)->hpi_ops->send_firmware)((go), (x), (y))
251#define go7007_write_addr(go, x, y) \
252 ((go)->hpi_ops->write_interrupt)((go), (x)|0x8000, (y))
253
254/* go7007-driver.c */
255int go7007_read_addr(struct go7007 *go, u16 addr, u16 *data);
256int go7007_read_interrupt(struct go7007 *go, u16 *value, u16 *data);
257int go7007_boot_encoder(struct go7007 *go, int init_i2c);
258int go7007_reset_encoder(struct go7007 *go);
259int go7007_register_encoder(struct go7007 *go);
260int go7007_start_encoder(struct go7007 *go);
261void go7007_parse_video_stream(struct go7007 *go, u8 *buf, int length);
262struct go7007 *go7007_alloc(struct go7007_board_info *board,
263 struct device *dev);
264void go7007_remove(struct go7007 *go);
265
266/* go7007-fw.c */
267int go7007_construct_fw_image(struct go7007 *go, u8 **fw, int *fwlen);
268
269/* go7007-i2c.c */
270int go7007_i2c_init(struct go7007 *go);
271int go7007_i2c_remove(struct go7007 *go);
272
273/* go7007-v4l2.c */
274int go7007_v4l2_init(struct go7007 *go);
275void go7007_v4l2_remove(struct go7007 *go);
276
277/* snd-go7007.c */
278int go7007_snd_init(struct go7007 *go);
279int go7007_snd_remove(struct go7007 *go);
diff --git a/drivers/staging/go7007/go7007-usb.c b/drivers/staging/go7007/go7007-usb.c
new file mode 100644
index 00000000000..d4ed6d2b715
--- /dev/null
+++ b/drivers/staging/go7007/go7007-usb.c
@@ -0,0 +1,1229 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/version.h>
20#include <linux/kernel.h>
21#include <linux/init.h>
22#include <linux/wait.h>
23#include <linux/list.h>
24#include <linux/slab.h>
25#include <linux/time.h>
26#include <linux/mm.h>
27#include <linux/usb.h>
28#include <linux/i2c.h>
29#include <asm/byteorder.h>
30#include <media/tvaudio.h>
31
32#include "go7007-priv.h"
33#include "wis-i2c.h"
34
35static unsigned int assume_endura;
36module_param(assume_endura, int, 0644);
37MODULE_PARM_DESC(assume_endura, "when probing fails, hardware is a Pelco Endura");
38
39/* #define GO7007_USB_DEBUG */
40/* #define GO7007_I2C_DEBUG */ /* for debugging the EZ-USB I2C adapter */
41
42#define HPI_STATUS_ADDR 0xFFF4
43#define INT_PARAM_ADDR 0xFFF6
44#define INT_INDEX_ADDR 0xFFF8
45
46/*
47 * Pipes on EZ-USB interface:
48 * 0 snd - Control
49 * 0 rcv - Control
50 * 2 snd - Download firmware (control)
51 * 4 rcv - Read Interrupt (interrupt)
52 * 6 rcv - Read Video (bulk)
53 * 8 rcv - Read Audio (bulk)
54 */
55
56#define GO7007_USB_EZUSB (1<<0)
57#define GO7007_USB_EZUSB_I2C (1<<1)
58
59struct go7007_usb_board {
60 unsigned int flags;
61 struct go7007_board_info main_info;
62};
63
64struct go7007_usb {
65 struct go7007_usb_board *board;
66 struct semaphore i2c_lock;
67 struct usb_device *usbdev;
68 struct urb *video_urbs[8];
69 struct urb *audio_urbs[8];
70 struct urb *intr_urb;
71};
72
73/*********************** Product specification data ***********************/
74
75static struct go7007_usb_board board_matrix_ii = {
76 .flags = GO7007_USB_EZUSB,
77 .main_info = {
78 .firmware = "go7007tv.bin",
79 .flags = GO7007_BOARD_HAS_AUDIO |
80 GO7007_BOARD_USE_ONBOARD_I2C,
81 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
82 GO7007_AUDIO_WORD_16,
83 .audio_rate = 48000,
84 .audio_bclk_div = 8,
85 .audio_main_div = 2,
86 .hpi_buffer_cap = 7,
87 .sensor_flags = GO7007_SENSOR_656 |
88 GO7007_SENSOR_VALID_ENABLE |
89 GO7007_SENSOR_TV |
90 GO7007_SENSOR_VBI |
91 GO7007_SENSOR_SCALING,
92 .num_i2c_devs = 1,
93 .i2c_devs = {
94 {
95 .id = I2C_DRIVERID_WIS_SAA7115,
96 .addr = 0x20,
97 },
98 },
99 .num_inputs = 2,
100 .inputs = {
101 {
102 .video_input = 0,
103 .name = "Composite",
104 },
105 {
106 .video_input = 9,
107 .name = "S-Video",
108 },
109 },
110 },
111};
112
113static struct go7007_usb_board board_matrix_reload = {
114 .flags = GO7007_USB_EZUSB,
115 .main_info = {
116 .firmware = "go7007tv.bin",
117 .flags = GO7007_BOARD_HAS_AUDIO |
118 GO7007_BOARD_USE_ONBOARD_I2C,
119 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
120 GO7007_AUDIO_I2S_MASTER |
121 GO7007_AUDIO_WORD_16,
122 .audio_rate = 48000,
123 .audio_bclk_div = 8,
124 .audio_main_div = 2,
125 .hpi_buffer_cap = 7,
126 .sensor_flags = GO7007_SENSOR_656 |
127 GO7007_SENSOR_TV,
128 .num_i2c_devs = 1,
129 .i2c_devs = {
130 {
131 .id = I2C_DRIVERID_WIS_SAA7113,
132 .addr = 0x25,
133 },
134 },
135 .num_inputs = 2,
136 .inputs = {
137 {
138 .video_input = 0,
139 .name = "Composite",
140 },
141 {
142 .video_input = 9,
143 .name = "S-Video",
144 },
145 },
146 },
147};
148
149static struct go7007_usb_board board_star_trek = {
150 .flags = GO7007_USB_EZUSB | GO7007_USB_EZUSB_I2C,
151 .main_info = {
152 .firmware = "go7007tv.bin",
153 .flags = GO7007_BOARD_HAS_AUDIO, /* |
154 GO7007_BOARD_HAS_TUNER, */
155 .sensor_flags = GO7007_SENSOR_656 |
156 GO7007_SENSOR_VALID_ENABLE |
157 GO7007_SENSOR_TV |
158 GO7007_SENSOR_VBI |
159 GO7007_SENSOR_SCALING,
160 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
161 GO7007_AUDIO_WORD_16,
162 .audio_bclk_div = 8,
163 .audio_main_div = 2,
164 .hpi_buffer_cap = 7,
165 .num_i2c_devs = 1,
166 .i2c_devs = {
167 {
168 .id = I2C_DRIVERID_WIS_SAA7115,
169 .addr = 0x20,
170 },
171 },
172 .num_inputs = 2,
173 .inputs = {
174 {
175 .video_input = 1,
176 /* .audio_input = AUDIO_EXTERN, */
177 .name = "Composite",
178 },
179 {
180 .video_input = 8,
181 /* .audio_input = AUDIO_EXTERN, */
182 .name = "S-Video",
183 },
184 /* {
185 * .video_input = 3,
186 * .audio_input = AUDIO_TUNER,
187 * .name = "Tuner",
188 * },
189 */
190 },
191 },
192};
193
194static struct go7007_usb_board board_px_tv402u = {
195 .flags = GO7007_USB_EZUSB | GO7007_USB_EZUSB_I2C,
196 .main_info = {
197 .firmware = "go7007tv.bin",
198 .flags = GO7007_BOARD_HAS_AUDIO |
199 GO7007_BOARD_HAS_TUNER,
200 .sensor_flags = GO7007_SENSOR_656 |
201 GO7007_SENSOR_VALID_ENABLE |
202 GO7007_SENSOR_TV |
203 GO7007_SENSOR_VBI |
204 GO7007_SENSOR_SCALING,
205 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
206 GO7007_AUDIO_WORD_16,
207 .audio_bclk_div = 8,
208 .audio_main_div = 2,
209 .hpi_buffer_cap = 7,
210 .num_i2c_devs = 3,
211 .i2c_devs = {
212 {
213 .id = I2C_DRIVERID_WIS_SAA7115,
214 .addr = 0x20,
215 },
216 {
217 .id = I2C_DRIVERID_WIS_UDA1342,
218 .addr = 0x1a,
219 },
220 {
221 .id = I2C_DRIVERID_WIS_SONY_TUNER,
222 .addr = 0x60,
223 },
224 },
225 .num_inputs = 3,
226 .inputs = {
227 {
228 .video_input = 1,
229 .audio_input = TVAUDIO_INPUT_EXTERN,
230 .name = "Composite",
231 },
232 {
233 .video_input = 8,
234 .audio_input = TVAUDIO_INPUT_EXTERN,
235 .name = "S-Video",
236 },
237 {
238 .video_input = 3,
239 .audio_input = TVAUDIO_INPUT_TUNER,
240 .name = "Tuner",
241 },
242 },
243 },
244};
245
246static struct go7007_usb_board board_xmen = {
247 .flags = 0,
248 .main_info = {
249 .firmware = "go7007tv.bin",
250 .flags = GO7007_BOARD_USE_ONBOARD_I2C,
251 .hpi_buffer_cap = 0,
252 .sensor_flags = GO7007_SENSOR_VREF_POLAR,
253 .sensor_width = 320,
254 .sensor_height = 240,
255 .sensor_framerate = 30030,
256 .audio_flags = GO7007_AUDIO_ONE_CHANNEL |
257 GO7007_AUDIO_I2S_MODE_3 |
258 GO7007_AUDIO_WORD_14 |
259 GO7007_AUDIO_I2S_MASTER |
260 GO7007_AUDIO_BCLK_POLAR |
261 GO7007_AUDIO_OKI_MODE,
262 .audio_rate = 8000,
263 .audio_bclk_div = 48,
264 .audio_main_div = 1,
265 .num_i2c_devs = 1,
266 .i2c_devs = {
267 {
268 .id = I2C_DRIVERID_WIS_OV7640,
269 .addr = 0x21,
270 },
271 },
272 .num_inputs = 1,
273 .inputs = {
274 {
275 .name = "Camera",
276 },
277 },
278 },
279};
280
281static struct go7007_usb_board board_matrix_revolution = {
282 .flags = GO7007_USB_EZUSB,
283 .main_info = {
284 .firmware = "go7007tv.bin",
285 .flags = GO7007_BOARD_HAS_AUDIO |
286 GO7007_BOARD_USE_ONBOARD_I2C,
287 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
288 GO7007_AUDIO_I2S_MASTER |
289 GO7007_AUDIO_WORD_16,
290 .audio_rate = 48000,
291 .audio_bclk_div = 8,
292 .audio_main_div = 2,
293 .hpi_buffer_cap = 7,
294 .sensor_flags = GO7007_SENSOR_656 |
295 GO7007_SENSOR_TV |
296 GO7007_SENSOR_VBI,
297 .num_i2c_devs = 1,
298 .i2c_devs = {
299 {
300 .id = I2C_DRIVERID_WIS_TW9903,
301 .addr = 0x44,
302 },
303 },
304 .num_inputs = 2,
305 .inputs = {
306 {
307 .video_input = 2,
308 .name = "Composite",
309 },
310 {
311 .video_input = 8,
312 .name = "S-Video",
313 },
314 },
315 },
316};
317
318static struct go7007_usb_board board_lifeview_lr192 = {
319 .flags = GO7007_USB_EZUSB,
320 .main_info = {
321 .firmware = "go7007tv.bin",
322 .flags = GO7007_BOARD_HAS_AUDIO |
323 GO7007_BOARD_USE_ONBOARD_I2C,
324 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
325 GO7007_AUDIO_WORD_16,
326 .audio_rate = 48000,
327 .audio_bclk_div = 8,
328 .audio_main_div = 2,
329 .hpi_buffer_cap = 7,
330 .sensor_flags = GO7007_SENSOR_656 |
331 GO7007_SENSOR_VALID_ENABLE |
332 GO7007_SENSOR_TV |
333 GO7007_SENSOR_VBI |
334 GO7007_SENSOR_SCALING,
335 .num_i2c_devs = 0,
336 .num_inputs = 1,
337 .inputs = {
338 {
339 .video_input = 0,
340 .name = "Composite",
341 },
342 },
343 },
344};
345
346static struct go7007_usb_board board_endura = {
347 .flags = 0,
348 .main_info = {
349 .firmware = "go7007tv.bin",
350 .flags = 0,
351 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
352 GO7007_AUDIO_I2S_MASTER |
353 GO7007_AUDIO_WORD_16,
354 .audio_rate = 8000,
355 .audio_bclk_div = 48,
356 .audio_main_div = 8,
357 .hpi_buffer_cap = 0,
358 .sensor_flags = GO7007_SENSOR_656 |
359 GO7007_SENSOR_TV,
360 .sensor_h_offset = 8,
361 .num_i2c_devs = 0,
362 .num_inputs = 1,
363 .inputs = {
364 {
365 .name = "Camera",
366 },
367 },
368 },
369};
370
371static struct go7007_usb_board board_adlink_mpg24 = {
372 .flags = 0,
373 .main_info = {
374 .firmware = "go7007tv.bin",
375 .flags = GO7007_BOARD_USE_ONBOARD_I2C,
376 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
377 GO7007_AUDIO_I2S_MASTER |
378 GO7007_AUDIO_WORD_16,
379 .audio_rate = 48000,
380 .audio_bclk_div = 8,
381 .audio_main_div = 2,
382 .hpi_buffer_cap = 0,
383 .sensor_flags = GO7007_SENSOR_656 |
384 GO7007_SENSOR_TV |
385 GO7007_SENSOR_VBI,
386 .num_i2c_devs = 1,
387 .i2c_devs = {
388 {
389 .id = I2C_DRIVERID_WIS_TW2804,
390 .addr = 0x00, /* yes, really */
391 },
392 },
393 .num_inputs = 1,
394 .inputs = {
395 {
396 .name = "Composite",
397 },
398 },
399 },
400};
401
402static struct usb_device_id go7007_usb_id_table[] = {
403 {
404 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION |
405 USB_DEVICE_ID_MATCH_INT_INFO,
406 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
407 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
408 .bcdDevice_lo = 0x200, /* Revision number of XMen */
409 .bcdDevice_hi = 0x200,
410 .bInterfaceClass = 255,
411 .bInterfaceSubClass = 0,
412 .bInterfaceProtocol = 255,
413 .driver_info = (kernel_ulong_t)GO7007_BOARDID_XMEN,
414 },
415 {
416 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
417 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
418 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
419 .bcdDevice_lo = 0x202, /* Revision number of Matrix II */
420 .bcdDevice_hi = 0x202,
421 .driver_info = (kernel_ulong_t)GO7007_BOARDID_MATRIX_II,
422 },
423 {
424 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
425 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
426 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
427 .bcdDevice_lo = 0x204, /* Revision number of Matrix */
428 .bcdDevice_hi = 0x204, /* Reloaded */
429 .driver_info = (kernel_ulong_t)GO7007_BOARDID_MATRIX_RELOAD,
430 },
431 {
432 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION |
433 USB_DEVICE_ID_MATCH_INT_INFO,
434 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
435 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
436 .bcdDevice_lo = 0x205, /* Revision number of XMen-II */
437 .bcdDevice_hi = 0x205,
438 .bInterfaceClass = 255,
439 .bInterfaceSubClass = 0,
440 .bInterfaceProtocol = 255,
441 .driver_info = (kernel_ulong_t)GO7007_BOARDID_XMEN_II,
442 },
443 {
444 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
445 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
446 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
447 .bcdDevice_lo = 0x208, /* Revision number of Star Trek */
448 .bcdDevice_hi = 0x208,
449 .driver_info = (kernel_ulong_t)GO7007_BOARDID_STAR_TREK,
450 },
451 {
452 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION |
453 USB_DEVICE_ID_MATCH_INT_INFO,
454 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
455 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
456 .bcdDevice_lo = 0x209, /* Revision number of XMen-III */
457 .bcdDevice_hi = 0x209,
458 .bInterfaceClass = 255,
459 .bInterfaceSubClass = 0,
460 .bInterfaceProtocol = 255,
461 .driver_info = (kernel_ulong_t)GO7007_BOARDID_XMEN_III,
462 },
463 {
464 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
465 .idVendor = 0x0eb1, /* Vendor ID of WIS Technologies */
466 .idProduct = 0x7007, /* Product ID of GO7007SB chip */
467 .bcdDevice_lo = 0x210, /* Revision number of Matrix */
468 .bcdDevice_hi = 0x210, /* Revolution */
469 .driver_info = (kernel_ulong_t)GO7007_BOARDID_MATRIX_REV,
470 },
471 {
472 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
473 .idVendor = 0x093b, /* Vendor ID of Plextor */
474 .idProduct = 0xa102, /* Product ID of M402U */
475 .bcdDevice_lo = 0x1, /* revision number of Blueberry */
476 .bcdDevice_hi = 0x1,
477 .driver_info = (kernel_ulong_t)GO7007_BOARDID_PX_M402U,
478 },
479 {
480 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
481 .idVendor = 0x093b, /* Vendor ID of Plextor */
482 .idProduct = 0xa104, /* Product ID of TV402U */
483 .bcdDevice_lo = 0x1,
484 .bcdDevice_hi = 0x1,
485 .driver_info = (kernel_ulong_t)GO7007_BOARDID_PX_TV402U_ANY,
486 },
487 {
488 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION,
489 .idVendor = 0x10fd, /* Vendor ID of Anubis Electronics */
490 .idProduct = 0xde00, /* Product ID of Lifeview LR192 */
491 .bcdDevice_lo = 0x1,
492 .bcdDevice_hi = 0x1,
493 .driver_info = (kernel_ulong_t)GO7007_BOARDID_LIFEVIEW_LR192,
494 },
495 { } /* Terminating entry */
496};
497
498MODULE_DEVICE_TABLE(usb, go7007_usb_id_table);
499
500/********************* Driver for EZ-USB HPI interface *********************/
501
502static int go7007_usb_vendor_request(struct go7007 *go, int request,
503 int value, int index, void *transfer_buffer, int length, int in)
504{
505 struct go7007_usb *usb = go->hpi_context;
506 int timeout = 5000;
507
508 if (in) {
509 return usb_control_msg(usb->usbdev,
510 usb_rcvctrlpipe(usb->usbdev, 0), request,
511 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
512 value, index, transfer_buffer, length, timeout);
513 } else {
514 return usb_control_msg(usb->usbdev,
515 usb_sndctrlpipe(usb->usbdev, 0), request,
516 USB_TYPE_VENDOR | USB_RECIP_DEVICE,
517 value, index, transfer_buffer, length, timeout);
518 }
519}
520
521static int go7007_usb_interface_reset(struct go7007 *go)
522{
523 struct go7007_usb *usb = go->hpi_context;
524 u16 intr_val, intr_data;
525
526 /* Reset encoder */
527 if (go7007_write_interrupt(go, 0x0001, 0x0001) < 0)
528 return -1;
529 msleep(100);
530
531 if (usb->board->flags & GO7007_USB_EZUSB) {
532 /* Reset buffer in EZ-USB */
533#ifdef GO7007_USB_DEBUG
534 printk(KERN_DEBUG "go7007-usb: resetting EZ-USB buffers\n");
535#endif
536 if (go7007_usb_vendor_request(go, 0x10, 0, 0, NULL, 0, 0) < 0 ||
537 go7007_usb_vendor_request(go, 0x10, 0, 0, NULL, 0, 0) < 0)
538 return -1;
539
540 /* Reset encoder again */
541 if (go7007_write_interrupt(go, 0x0001, 0x0001) < 0)
542 return -1;
543 msleep(100);
544 }
545
546 /* Wait for an interrupt to indicate successful hardware reset */
547 if (go7007_read_interrupt(go, &intr_val, &intr_data) < 0 ||
548 (intr_val & ~0x1) != 0x55aa) {
549 printk(KERN_ERR
550 "go7007-usb: unable to reset the USB interface\n");
551 return -1;
552 }
553 return 0;
554}
555
556static int go7007_usb_ezusb_write_interrupt(struct go7007 *go,
557 int addr, int data)
558{
559 struct go7007_usb *usb = go->hpi_context;
560 int i, r;
561 u16 status_reg;
562 int timeout = 500;
563
564#ifdef GO7007_USB_DEBUG
565 printk(KERN_DEBUG
566 "go7007-usb: WriteInterrupt: %04x %04x\n", addr, data);
567#endif
568
569 for (i = 0; i < 100; ++i) {
570 r = usb_control_msg(usb->usbdev,
571 usb_rcvctrlpipe(usb->usbdev, 0), 0x14,
572 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
573 0, HPI_STATUS_ADDR, &status_reg,
574 sizeof(status_reg), timeout);
575 if (r < 0)
576 goto write_int_error;
577 __le16_to_cpus(&status_reg);
578 if (!(status_reg & 0x0010))
579 break;
580 msleep(10);
581 }
582 if (i == 100) {
583 printk(KERN_ERR
584 "go7007-usb: device is hung, status reg = 0x%04x\n",
585 status_reg);
586 return -1;
587 }
588 r = usb_control_msg(usb->usbdev, usb_sndctrlpipe(usb->usbdev, 0), 0x12,
589 USB_TYPE_VENDOR | USB_RECIP_DEVICE, data,
590 INT_PARAM_ADDR, NULL, 0, timeout);
591 if (r < 0)
592 goto write_int_error;
593 r = usb_control_msg(usb->usbdev, usb_sndctrlpipe(usb->usbdev, 0),
594 0x12, USB_TYPE_VENDOR | USB_RECIP_DEVICE, addr,
595 INT_INDEX_ADDR, NULL, 0, timeout);
596 if (r < 0)
597 goto write_int_error;
598 return 0;
599
600write_int_error:
601 printk(KERN_ERR "go7007-usb: error in WriteInterrupt: %d\n", r);
602 return r;
603}
604
605static int go7007_usb_onboard_write_interrupt(struct go7007 *go,
606 int addr, int data)
607{
608 struct go7007_usb *usb = go->hpi_context;
609 u8 *tbuf;
610 int r;
611 int timeout = 500;
612
613#ifdef GO7007_USB_DEBUG
614 printk(KERN_DEBUG
615 "go7007-usb: WriteInterrupt: %04x %04x\n", addr, data);
616#endif
617
618 tbuf = kmalloc(8, GFP_KERNEL);
619 if (tbuf == NULL)
620 return -ENOMEM;
621 memset(tbuf, 0, 8);
622 tbuf[0] = data & 0xff;
623 tbuf[1] = data >> 8;
624 tbuf[2] = addr & 0xff;
625 tbuf[3] = addr >> 8;
626 r = usb_control_msg(usb->usbdev, usb_sndctrlpipe(usb->usbdev, 2), 0x00,
627 USB_TYPE_VENDOR | USB_RECIP_ENDPOINT, 0x55aa,
628 0xf0f0, tbuf, 8, timeout);
629 kfree(tbuf);
630 if (r < 0) {
631 printk(KERN_ERR "go7007-usb: error in WriteInterrupt: %d\n", r);
632 return r;
633 }
634 return 0;
635}
636
637static void go7007_usb_readinterrupt_complete(struct urb *urb)
638{
639 struct go7007 *go = (struct go7007 *)urb->context;
640 u16 *regs = (u16 *)urb->transfer_buffer;
641
642 if (urb->status != 0) {
643 if (urb->status != -ESHUTDOWN &&
644 go->status != STATUS_SHUTDOWN) {
645 printk(KERN_ERR
646 "go7007-usb: error in read interrupt: %d\n",
647 urb->status);
648 } else {
649 wake_up(&go->interrupt_waitq);
650 return;
651 }
652 } else if (urb->actual_length != urb->transfer_buffer_length) {
653 printk(KERN_ERR "go7007-usb: short read in interrupt pipe!\n");
654 } else {
655 go->interrupt_available = 1;
656 go->interrupt_data = __le16_to_cpu(regs[0]);
657 go->interrupt_value = __le16_to_cpu(regs[1]);
658#ifdef GO7007_USB_DEBUG
659 printk(KERN_DEBUG "go7007-usb: ReadInterrupt: %04x %04x\n",
660 go->interrupt_value, go->interrupt_data);
661#endif
662 }
663
664 wake_up(&go->interrupt_waitq);
665}
666
667static int go7007_usb_read_interrupt(struct go7007 *go)
668{
669 struct go7007_usb *usb = go->hpi_context;
670 int r;
671
672 r = usb_submit_urb(usb->intr_urb, GFP_KERNEL);
673 if (r < 0) {
674 printk(KERN_ERR
675 "go7007-usb: unable to submit interrupt urb: %d\n", r);
676 return r;
677 }
678 return 0;
679}
680
681static void go7007_usb_read_video_pipe_complete(struct urb *urb)
682{
683 struct go7007 *go = (struct go7007 *)urb->context;
684 int r;
685
686 if (!go->streaming) {
687 wake_up_interruptible(&go->frame_waitq);
688 return;
689 }
690 if (urb->status != 0) {
691 printk(KERN_ERR "go7007-usb: error in video pipe: %d\n",
692 urb->status);
693 return;
694 }
695 if (urb->actual_length != urb->transfer_buffer_length) {
696 printk(KERN_ERR "go7007-usb: short read in video pipe!\n");
697 return;
698 }
699 go7007_parse_video_stream(go, urb->transfer_buffer, urb->actual_length);
700 r = usb_submit_urb(urb, GFP_ATOMIC);
701 if (r < 0)
702 printk(KERN_ERR "go7007-usb: error in video pipe: %d\n", r);
703}
704
705static void go7007_usb_read_audio_pipe_complete(struct urb *urb)
706{
707 struct go7007 *go = (struct go7007 *)urb->context;
708 int r;
709
710 if (!go->streaming)
711 return;
712 if (urb->status != 0) {
713 printk(KERN_ERR "go7007-usb: error in audio pipe: %d\n",
714 urb->status);
715 return;
716 }
717 if (urb->actual_length != urb->transfer_buffer_length) {
718 printk(KERN_ERR "go7007-usb: short read in audio pipe!\n");
719 return;
720 }
721 if (go->audio_deliver != NULL)
722 go->audio_deliver(go, urb->transfer_buffer, urb->actual_length);
723 r = usb_submit_urb(urb, GFP_ATOMIC);
724 if (r < 0)
725 printk(KERN_ERR "go7007-usb: error in audio pipe: %d\n", r);
726}
727
728static int go7007_usb_stream_start(struct go7007 *go)
729{
730 struct go7007_usb *usb = go->hpi_context;
731 int i, r;
732
733 for (i = 0; i < 8; ++i) {
734 r = usb_submit_urb(usb->video_urbs[i], GFP_KERNEL);
735 if (r < 0) {
736 printk(KERN_ERR "go7007-usb: error submitting video "
737 "urb %d: %d\n", i, r);
738 goto video_submit_failed;
739 }
740 }
741 if (!go->audio_enabled)
742 return 0;
743
744 for (i = 0; i < 8; ++i) {
745 r = usb_submit_urb(usb->audio_urbs[i], GFP_KERNEL);
746 if (r < 0) {
747 printk(KERN_ERR "go7007-usb: error submitting audio "
748 "urb %d: %d\n", i, r);
749 goto audio_submit_failed;
750 }
751 }
752 return 0;
753
754audio_submit_failed:
755 for (i = 0; i < 8; ++i)
756 usb_kill_urb(usb->audio_urbs[i]);
757video_submit_failed:
758 for (i = 0; i < 8; ++i)
759 usb_kill_urb(usb->video_urbs[i]);
760 return -1;
761}
762
763static int go7007_usb_stream_stop(struct go7007 *go)
764{
765 struct go7007_usb *usb = go->hpi_context;
766 int i;
767
768 if (go->status == STATUS_SHUTDOWN)
769 return 0;
770 for (i = 0; i < 8; ++i)
771 usb_kill_urb(usb->video_urbs[i]);
772 if (go->audio_enabled)
773 for (i = 0; i < 8; ++i)
774 usb_kill_urb(usb->audio_urbs[i]);
775 return 0;
776}
777
778static int go7007_usb_send_firmware(struct go7007 *go, u8 *data, int len)
779{
780 struct go7007_usb *usb = go->hpi_context;
781 int transferred, pipe;
782 int timeout = 500;
783
784#ifdef GO7007_USB_DEBUG
785 printk(KERN_DEBUG "go7007-usb: DownloadBuffer sending %d bytes\n", len);
786#endif
787
788 if (usb->board->flags & GO7007_USB_EZUSB)
789 pipe = usb_sndbulkpipe(usb->usbdev, 2);
790 else
791 pipe = usb_sndbulkpipe(usb->usbdev, 3);
792
793 return usb_bulk_msg(usb->usbdev, pipe, data, len,
794 &transferred, timeout);
795}
796
797static struct go7007_hpi_ops go7007_usb_ezusb_hpi_ops = {
798 .interface_reset = go7007_usb_interface_reset,
799 .write_interrupt = go7007_usb_ezusb_write_interrupt,
800 .read_interrupt = go7007_usb_read_interrupt,
801 .stream_start = go7007_usb_stream_start,
802 .stream_stop = go7007_usb_stream_stop,
803 .send_firmware = go7007_usb_send_firmware,
804};
805
806static struct go7007_hpi_ops go7007_usb_onboard_hpi_ops = {
807 .interface_reset = go7007_usb_interface_reset,
808 .write_interrupt = go7007_usb_onboard_write_interrupt,
809 .read_interrupt = go7007_usb_read_interrupt,
810 .stream_start = go7007_usb_stream_start,
811 .stream_stop = go7007_usb_stream_stop,
812 .send_firmware = go7007_usb_send_firmware,
813};
814
815/********************* Driver for EZ-USB I2C adapter *********************/
816
817static int go7007_usb_i2c_master_xfer(struct i2c_adapter *adapter,
818 struct i2c_msg msgs[], int num)
819{
820 struct go7007 *go = i2c_get_adapdata(adapter);
821 struct go7007_usb *usb = go->hpi_context;
822 u8 buf[16];
823 int buf_len, i;
824 int ret = -1;
825
826 if (go->status == STATUS_SHUTDOWN)
827 return -1;
828
829 down(&usb->i2c_lock);
830
831 for (i = 0; i < num; ++i) {
832 /* The hardware command is "write some bytes then read some
833 * bytes", so we try to coalesce a write followed by a read
834 * into a single USB transaction */
835 if (i + 1 < num && msgs[i].addr == msgs[i + 1].addr &&
836 !(msgs[i].flags & I2C_M_RD) &&
837 (msgs[i + 1].flags & I2C_M_RD)) {
838#ifdef GO7007_I2C_DEBUG
839 printk(KERN_DEBUG "go7007-usb: i2c write/read %d/%d "
840 "bytes on %02x\n", msgs[i].len,
841 msgs[i + 1].len, msgs[i].addr);
842#endif
843 buf[0] = 0x01;
844 buf[1] = msgs[i].len + 1;
845 buf[2] = msgs[i].addr << 1;
846 memcpy(&buf[3], msgs[i].buf, msgs[i].len);
847 buf_len = msgs[i].len + 3;
848 buf[buf_len++] = msgs[++i].len;
849 } else if (msgs[i].flags & I2C_M_RD) {
850#ifdef GO7007_I2C_DEBUG
851 printk(KERN_DEBUG "go7007-usb: i2c read %d "
852 "bytes on %02x\n", msgs[i].len,
853 msgs[i].addr);
854#endif
855 buf[0] = 0x01;
856 buf[1] = 1;
857 buf[2] = msgs[i].addr << 1;
858 buf[3] = msgs[i].len;
859 buf_len = 4;
860 } else {
861#ifdef GO7007_I2C_DEBUG
862 printk(KERN_DEBUG "go7007-usb: i2c write %d "
863 "bytes on %02x\n", msgs[i].len,
864 msgs[i].addr);
865#endif
866 buf[0] = 0x00;
867 buf[1] = msgs[i].len + 1;
868 buf[2] = msgs[i].addr << 1;
869 memcpy(&buf[3], msgs[i].buf, msgs[i].len);
870 buf_len = msgs[i].len + 3;
871 buf[buf_len++] = 0;
872 }
873 if (go7007_usb_vendor_request(go, 0x24, 0, 0,
874 buf, buf_len, 0) < 0)
875 goto i2c_done;
876 if (msgs[i].flags & I2C_M_RD) {
877 memset(buf, 0, sizeof(buf));
878 if (go7007_usb_vendor_request(go, 0x25, 0, 0, buf,
879 msgs[i].len + 1, 1) < 0)
880 goto i2c_done;
881 memcpy(msgs[i].buf, buf + 1, msgs[i].len);
882 }
883 }
884 ret = 0;
885
886i2c_done:
887 up(&usb->i2c_lock);
888 return ret;
889}
890
891static u32 go7007_usb_functionality(struct i2c_adapter *adapter)
892{
893 /* No errors are reported by the hardware, so we don't bother
894 * supporting quick writes to avoid confusing probing */
895 return (I2C_FUNC_SMBUS_EMUL) & ~I2C_FUNC_SMBUS_QUICK;
896}
897
898static struct i2c_algorithm go7007_usb_algo = {
899 .master_xfer = go7007_usb_i2c_master_xfer,
900 .functionality = go7007_usb_functionality,
901};
902
903static struct i2c_adapter go7007_usb_adap_templ = {
904 .owner = THIS_MODULE,
905 .class = I2C_CLASS_TV_ANALOG,
906 .name = "WIS GO7007SB EZ-USB",
907 .id = I2C_ALGO_GO7007_USB,
908 .algo = &go7007_usb_algo,
909};
910
911/********************* USB add/remove functions *********************/
912
913static int go7007_usb_probe(struct usb_interface *intf,
914 const struct usb_device_id *id)
915{
916 struct go7007 *go;
917 struct go7007_usb *usb;
918 struct go7007_usb_board *board;
919 struct usb_device *usbdev = interface_to_usbdev(intf);
920 char *name;
921 int video_pipe, i, v_urb_len;
922
923 printk(KERN_DEBUG "go7007-usb: probing new GO7007 USB board\n");
924
925 switch (id->driver_info) {
926 case GO7007_BOARDID_MATRIX_II:
927 name = "WIS Matrix II or compatible";
928 board = &board_matrix_ii;
929 break;
930 case GO7007_BOARDID_MATRIX_RELOAD:
931 name = "WIS Matrix Reloaded or compatible";
932 board = &board_matrix_reload;
933 break;
934 case GO7007_BOARDID_MATRIX_REV:
935 name = "WIS Matrix Revolution or compatible";
936 board = &board_matrix_revolution;
937 break;
938 case GO7007_BOARDID_STAR_TREK:
939 name = "WIS Star Trek or compatible";
940 board = &board_star_trek;
941 break;
942 case GO7007_BOARDID_XMEN:
943 name = "WIS XMen or compatible";
944 board = &board_xmen;
945 break;
946 case GO7007_BOARDID_XMEN_II:
947 name = "WIS XMen II or compatible";
948 board = &board_xmen;
949 break;
950 case GO7007_BOARDID_XMEN_III:
951 name = "WIS XMen III or compatible";
952 board = &board_xmen;
953 break;
954 case GO7007_BOARDID_PX_M402U:
955 name = "Plextor PX-M402U";
956 board = &board_matrix_ii;
957 break;
958 case GO7007_BOARDID_PX_TV402U_ANY:
959 name = "Plextor PX-TV402U (unknown tuner)";
960 board = &board_px_tv402u;
961 break;
962 case GO7007_BOARDID_LIFEVIEW_LR192:
963 printk(KERN_ERR "go7007-usb: The Lifeview TV Walker Ultra "
964 "is not supported. Sorry!\n");
965 return 0;
966 name = "Lifeview TV Walker Ultra";
967 board = &board_lifeview_lr192;
968 break;
969 default:
970 printk(KERN_ERR "go7007-usb: unknown board ID %d!\n",
971 (unsigned int)id->driver_info);
972 return 0;
973 }
974
975 usb = kmalloc(sizeof(struct go7007_usb), GFP_KERNEL);
976 if (usb == NULL)
977 return -ENOMEM;
978 memset(usb, 0, sizeof(struct go7007_usb));
979
980 /* Allocate the URB and buffer for receiving incoming interrupts */
981 usb->intr_urb = usb_alloc_urb(0, GFP_KERNEL);
982 if (usb->intr_urb == NULL)
983 goto allocfail;
984 usb->intr_urb->transfer_buffer = kmalloc(2*sizeof(u16), GFP_KERNEL);
985 if (usb->intr_urb->transfer_buffer == NULL)
986 goto allocfail;
987
988 go = go7007_alloc(&board->main_info, &intf->dev);
989 if (go == NULL)
990 goto allocfail;
991 usb->board = board;
992 usb->usbdev = usbdev;
993 go->board_id = id->driver_info;
994 strncpy(go->name, name, sizeof(go->name));
995 if (board->flags & GO7007_USB_EZUSB)
996 go->hpi_ops = &go7007_usb_ezusb_hpi_ops;
997 else
998 go->hpi_ops = &go7007_usb_onboard_hpi_ops;
999 go->hpi_context = usb;
1000 usb_fill_int_urb(usb->intr_urb, usb->usbdev,
1001 usb_rcvintpipe(usb->usbdev, 4),
1002 usb->intr_urb->transfer_buffer, 2*sizeof(u16),
1003 go7007_usb_readinterrupt_complete, go, 8);
1004 usb_set_intfdata(intf, go);
1005
1006 /* Boot the GO7007 */
1007 if (go7007_boot_encoder(go, go->board_info->flags &
1008 GO7007_BOARD_USE_ONBOARD_I2C) < 0)
1009 goto initfail;
1010
1011 /* Register the EZ-USB I2C adapter, if we're using it */
1012 if (board->flags & GO7007_USB_EZUSB_I2C) {
1013 memcpy(&go->i2c_adapter, &go7007_usb_adap_templ,
1014 sizeof(go7007_usb_adap_templ));
1015 init_MUTEX(&usb->i2c_lock);
1016 go->i2c_adapter.dev.parent = go->dev;
1017 i2c_set_adapdata(&go->i2c_adapter, go);
1018 if (i2c_add_adapter(&go->i2c_adapter) < 0) {
1019 printk(KERN_ERR
1020 "go7007-usb: error: i2c_add_adapter failed\n");
1021 goto initfail;
1022 }
1023 go->i2c_adapter_online = 1;
1024 }
1025
1026 /* Pelco and Adlink reused the XMen and XMen-III vendor and product
1027 * IDs for their own incompatible designs. We can detect XMen boards
1028 * by probing the sensor, but there is no way to probe the sensors on
1029 * the Pelco and Adlink designs so we default to the Adlink. If it
1030 * is actually a Pelco, the user must set the assume_endura module
1031 * parameter. */
1032 if ((go->board_id == GO7007_BOARDID_XMEN ||
1033 go->board_id == GO7007_BOARDID_XMEN_III) &&
1034 go->i2c_adapter_online) {
1035 union i2c_smbus_data data;
1036
1037 /* Check to see if register 0x0A is 0x76 */
1038 i2c_smbus_xfer(&go->i2c_adapter, 0x21, I2C_CLIENT_SCCB,
1039 I2C_SMBUS_READ, 0x0A, I2C_SMBUS_BYTE_DATA, &data);
1040 if (data.byte != 0x76) {
1041 if (assume_endura) {
1042 go->board_id = GO7007_BOARDID_ENDURA;
1043 usb->board = board = &board_endura;
1044 go->board_info = &board->main_info;
1045 strncpy(go->name, "Pelco Endura",
1046 sizeof(go->name));
1047 } else {
1048 u16 channel;
1049
1050 /* set GPIO5 to be an output, currently low */
1051 go7007_write_addr(go, 0x3c82, 0x0000);
1052 go7007_write_addr(go, 0x3c80, 0x00df);
1053 /* read channel number from GPIO[1:0] */
1054 go7007_read_addr(go, 0x3c81, &channel);
1055 channel &= 0x3;
1056 go->board_id = GO7007_BOARDID_ADLINK_MPG24;
1057 usb->board = board = &board_adlink_mpg24;
1058 go->board_info = &board->main_info;
1059 go->channel_number = channel;
1060 snprintf(go->name, sizeof(go->name),
1061 "Adlink PCI-MPG24, channel #%d",
1062 channel);
1063 }
1064 }
1065 }
1066
1067 /* Probe the tuner model on the TV402U */
1068 if (go->board_id == GO7007_BOARDID_PX_TV402U_ANY) {
1069 u8 data[3];
1070
1071 /* Board strapping indicates tuner model */
1072 if (go7007_usb_vendor_request(go, 0x41, 0, 0, data, 3, 1) < 0) {
1073 printk(KERN_ERR "go7007-usb: GPIO read failed!\n");
1074 goto initfail;
1075 }
1076 switch (data[0] >> 6) {
1077 case 1:
1078 go->board_id = GO7007_BOARDID_PX_TV402U_EU;
1079 go->tuner_type = TUNER_SONY_BTF_PG472Z;
1080 strncpy(go->name, "Plextor PX-TV402U-EU",
1081 sizeof(go->name));
1082 break;
1083 case 2:
1084 go->board_id = GO7007_BOARDID_PX_TV402U_JP;
1085 go->tuner_type = TUNER_SONY_BTF_PK467Z;
1086 strncpy(go->name, "Plextor PX-TV402U-JP",
1087 sizeof(go->name));
1088 break;
1089 case 3:
1090 go->board_id = GO7007_BOARDID_PX_TV402U_NA;
1091 go->tuner_type = TUNER_SONY_BTF_PB463Z;
1092 strncpy(go->name, "Plextor PX-TV402U-NA",
1093 sizeof(go->name));
1094 break;
1095 default:
1096 printk(KERN_DEBUG "go7007-usb: unable to detect "
1097 "tuner type!\n");
1098 break;
1099 }
1100 /* Configure tuner mode selection inputs connected
1101 * to the EZ-USB GPIO output pins */
1102 if (go7007_usb_vendor_request(go, 0x40, 0x7f02, 0,
1103 NULL, 0, 0) < 0) {
1104 printk(KERN_ERR
1105 "go7007-usb: GPIO write failed!\n");
1106 goto initfail;
1107 }
1108 }
1109
1110 /* Print a nasty message if the user attempts to use a USB2.0 device in
1111 * a USB1.1 port. There will be silent corruption of the stream. */
1112 if ((board->flags & GO7007_USB_EZUSB) &&
1113 usbdev->speed != USB_SPEED_HIGH)
1114 printk(KERN_ERR "go7007-usb: *** WARNING *** This device "
1115 "must be connected to a USB 2.0 port! "
1116 "Attempting to capture video through a USB 1.1 "
1117 "port will result in stream corruption, even "
1118 "at low bitrates!\n");
1119
1120 /* Do any final GO7007 initialization, then register the
1121 * V4L2 and ALSA interfaces */
1122 if (go7007_register_encoder(go) < 0)
1123 goto initfail;
1124
1125 /* Allocate the URBs and buffers for receiving the video stream */
1126 if (board->flags & GO7007_USB_EZUSB) {
1127 v_urb_len = 1024;
1128 video_pipe = usb_rcvbulkpipe(usb->usbdev, 6);
1129 } else {
1130 v_urb_len = 512;
1131 video_pipe = usb_rcvbulkpipe(usb->usbdev, 1);
1132 }
1133 for (i = 0; i < 8; ++i) {
1134 usb->video_urbs[i] = usb_alloc_urb(0, GFP_KERNEL);
1135 if (usb->video_urbs[i] == NULL)
1136 goto initfail;
1137 usb->video_urbs[i]->transfer_buffer =
1138 kmalloc(v_urb_len, GFP_KERNEL);
1139 if (usb->video_urbs[i]->transfer_buffer == NULL)
1140 goto initfail;
1141 usb_fill_bulk_urb(usb->video_urbs[i], usb->usbdev, video_pipe,
1142 usb->video_urbs[i]->transfer_buffer, v_urb_len,
1143 go7007_usb_read_video_pipe_complete, go);
1144 }
1145
1146 /* Allocate the URBs and buffers for receiving the audio stream */
1147 if ((board->flags & GO7007_USB_EZUSB) && go->audio_enabled)
1148 for (i = 0; i < 8; ++i) {
1149 usb->audio_urbs[i] = usb_alloc_urb(0, GFP_KERNEL);
1150 if (usb->audio_urbs[i] == NULL)
1151 goto initfail;
1152 usb->audio_urbs[i]->transfer_buffer = kmalloc(4096,
1153 GFP_KERNEL);
1154 if (usb->audio_urbs[i]->transfer_buffer == NULL)
1155 goto initfail;
1156 usb_fill_bulk_urb(usb->audio_urbs[i], usb->usbdev,
1157 usb_rcvbulkpipe(usb->usbdev, 8),
1158 usb->audio_urbs[i]->transfer_buffer, 4096,
1159 go7007_usb_read_audio_pipe_complete, go);
1160 }
1161
1162
1163 go->status = STATUS_ONLINE;
1164 return 0;
1165
1166initfail:
1167 go->status = STATUS_SHUTDOWN;
1168 return 0;
1169
1170allocfail:
1171 if (usb->intr_urb) {
1172 kfree(usb->intr_urb->transfer_buffer);
1173 usb_free_urb(usb->intr_urb);
1174 }
1175 kfree(usb);
1176 return -ENOMEM;
1177}
1178
1179static void go7007_usb_disconnect(struct usb_interface *intf)
1180{
1181 struct go7007 *go = usb_get_intfdata(intf);
1182 struct go7007_usb *usb = go->hpi_context;
1183 int i;
1184
1185 go->status = STATUS_SHUTDOWN;
1186 usb_kill_urb(usb->intr_urb);
1187
1188 /* Free USB-related structs */
1189 for (i = 0; i < 8; ++i) {
1190 if (usb->video_urbs[i] != NULL) {
1191 if (usb->video_urbs[i]->transfer_buffer != NULL)
1192 kfree(usb->video_urbs[i]->transfer_buffer);
1193 usb_free_urb(usb->video_urbs[i]);
1194 }
1195 if (usb->audio_urbs[i] != NULL) {
1196 if (usb->audio_urbs[i]->transfer_buffer != NULL)
1197 kfree(usb->audio_urbs[i]->transfer_buffer);
1198 usb_free_urb(usb->audio_urbs[i]);
1199 }
1200 }
1201 kfree(usb->intr_urb->transfer_buffer);
1202 usb_free_urb(usb->intr_urb);
1203
1204 kfree(go->hpi_context);
1205
1206 go7007_remove(go);
1207}
1208
1209static struct usb_driver go7007_usb_driver = {
1210 .name = "go7007",
1211 .probe = go7007_usb_probe,
1212 .disconnect = go7007_usb_disconnect,
1213 .id_table = go7007_usb_id_table,
1214};
1215
1216static int __init go7007_usb_init(void)
1217{
1218 return usb_register(&go7007_usb_driver);
1219}
1220
1221static void __exit go7007_usb_cleanup(void)
1222{
1223 usb_deregister(&go7007_usb_driver);
1224}
1225
1226module_init(go7007_usb_init);
1227module_exit(go7007_usb_cleanup);
1228
1229MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/go7007-v4l2.c b/drivers/staging/go7007/go7007-v4l2.c
new file mode 100644
index 00000000000..94e1141a1fc
--- /dev/null
+++ b/drivers/staging/go7007/go7007-v4l2.c
@@ -0,0 +1,1499 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/delay.h>
22#include <linux/sched.h>
23#include <linux/spinlock.h>
24#include <linux/fs.h>
25#include <linux/unistd.h>
26#include <linux/time.h>
27#include <linux/vmalloc.h>
28#include <linux/pagemap.h>
29#include <linux/videodev2.h>
30#include <media/v4l2-common.h>
31#include <media/v4l2-ioctl.h>
32#include <linux/i2c.h>
33#include <linux/semaphore.h>
34#include <linux/uaccess.h>
35#include <asm/system.h>
36
37#include "go7007.h"
38#include "go7007-priv.h"
39#include "wis-i2c.h"
40
41static void deactivate_buffer(struct go7007_buffer *gobuf)
42{
43 int i;
44
45 if (gobuf->state != BUF_STATE_IDLE) {
46 list_del(&gobuf->stream);
47 gobuf->state = BUF_STATE_IDLE;
48 }
49 if (gobuf->page_count > 0) {
50 for (i = 0; i < gobuf->page_count; ++i)
51 page_cache_release(gobuf->pages[i]);
52 gobuf->page_count = 0;
53 }
54}
55
56static void abort_queued(struct go7007 *go)
57{
58 struct go7007_buffer *gobuf, *next;
59
60 list_for_each_entry_safe(gobuf, next, &go->stream, stream) {
61 deactivate_buffer(gobuf);
62 }
63}
64
65static int go7007_streamoff(struct go7007 *go)
66{
67 int retval = -EINVAL;
68 unsigned long flags;
69
70 down(&go->hw_lock);
71 if (go->streaming) {
72 go->streaming = 0;
73 go7007_stream_stop(go);
74 spin_lock_irqsave(&go->spinlock, flags);
75 abort_queued(go);
76 spin_unlock_irqrestore(&go->spinlock, flags);
77 go7007_reset_encoder(go);
78 retval = 0;
79 }
80 up(&go->hw_lock);
81 return 0;
82}
83
84static int go7007_open(struct inode *inode, struct file *file)
85{
86 struct go7007 *go = video_get_drvdata(video_devdata(file));
87 struct go7007_file *gofh;
88
89 if (go->status != STATUS_ONLINE)
90 return -EBUSY;
91 gofh = kmalloc(sizeof(struct go7007_file), GFP_KERNEL);
92 if (gofh == NULL)
93 return -ENOMEM;
94 ++go->ref_count;
95 gofh->go = go;
96 init_MUTEX(&gofh->lock);
97 gofh->buf_count = 0;
98 file->private_data = gofh;
99 return 0;
100}
101
102static int go7007_release(struct inode *inode, struct file *file)
103{
104 struct go7007_file *gofh = file->private_data;
105 struct go7007 *go = gofh->go;
106
107 if (gofh->buf_count > 0) {
108 go7007_streamoff(go);
109 go->in_use = 0;
110 kfree(gofh->bufs);
111 gofh->buf_count = 0;
112 }
113 kfree(gofh);
114 if (--go->ref_count == 0)
115 kfree(go);
116 file->private_data = NULL;
117 return 0;
118}
119
120static u32 get_frame_type_flag(struct go7007_buffer *gobuf, int format)
121{
122 u8 *f = page_address(gobuf->pages[0]);
123
124 switch (format) {
125 case GO7007_FORMAT_MJPEG:
126 return V4L2_BUF_FLAG_KEYFRAME;
127 case GO7007_FORMAT_MPEG4:
128 switch ((f[gobuf->frame_offset + 4] >> 6) & 0x3) {
129 case 0:
130 return V4L2_BUF_FLAG_KEYFRAME;
131 case 1:
132 return V4L2_BUF_FLAG_PFRAME;
133 case 2:
134 return V4L2_BUF_FLAG_BFRAME;
135 default:
136 return 0;
137 }
138 case GO7007_FORMAT_MPEG1:
139 case GO7007_FORMAT_MPEG2:
140 switch ((f[gobuf->frame_offset + 5] >> 3) & 0x7) {
141 case 1:
142 return V4L2_BUF_FLAG_KEYFRAME;
143 case 2:
144 return V4L2_BUF_FLAG_PFRAME;
145 case 3:
146 return V4L2_BUF_FLAG_BFRAME;
147 default:
148 return 0;
149 }
150 }
151
152 return 0;
153}
154
155static int set_capture_size(struct go7007 *go, struct v4l2_format *fmt, int try)
156{
157 int sensor_height = 0, sensor_width = 0;
158 int width, height, i;
159
160 if (fmt != NULL && fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MJPEG &&
161 fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MPEG &&
162 fmt->fmt.pix.pixelformat != V4L2_PIX_FMT_MPEG4)
163 return -EINVAL;
164
165 switch (go->standard) {
166 case GO7007_STD_NTSC:
167 sensor_width = 720;
168 sensor_height = 480;
169 break;
170 case GO7007_STD_PAL:
171 sensor_width = 720;
172 sensor_height = 576;
173 break;
174 case GO7007_STD_OTHER:
175 sensor_width = go->board_info->sensor_width;
176 sensor_height = go->board_info->sensor_height;
177 break;
178 }
179
180 if (fmt == NULL) {
181 width = sensor_width;
182 height = sensor_height;
183 } else if (go->board_info->sensor_flags & GO7007_SENSOR_SCALING) {
184 if (fmt->fmt.pix.width > sensor_width)
185 width = sensor_width;
186 else if (fmt->fmt.pix.width < 144)
187 width = 144;
188 else
189 width = fmt->fmt.pix.width & ~0x0f;
190
191 if (fmt->fmt.pix.height > sensor_height)
192 height = sensor_height;
193 else if (fmt->fmt.pix.height < 96)
194 height = 96;
195 else
196 height = fmt->fmt.pix.height & ~0x0f;
197 } else {
198 int requested_size = fmt->fmt.pix.width * fmt->fmt.pix.height;
199 int sensor_size = sensor_width * sensor_height;
200
201 if (64 * requested_size < 9 * sensor_size) {
202 width = sensor_width / 4;
203 height = sensor_height / 4;
204 } else if (64 * requested_size < 36 * sensor_size) {
205 width = sensor_width / 2;
206 height = sensor_height / 2;
207 } else {
208 width = sensor_width;
209 height = sensor_height;
210 }
211 width &= ~0xf;
212 height &= ~0xf;
213 }
214
215 if (fmt != NULL) {
216 u32 pixelformat = fmt->fmt.pix.pixelformat;
217
218 memset(fmt, 0, sizeof(*fmt));
219 fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
220 fmt->fmt.pix.width = width;
221 fmt->fmt.pix.height = height;
222 fmt->fmt.pix.pixelformat = pixelformat;
223 fmt->fmt.pix.field = V4L2_FIELD_NONE;
224 fmt->fmt.pix.bytesperline = 0;
225 fmt->fmt.pix.sizeimage = GO7007_BUF_SIZE;
226 fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; /* ?? */
227 }
228
229 if (try)
230 return 0;
231
232 go->width = width;
233 go->height = height;
234 go->encoder_h_offset = go->board_info->sensor_h_offset;
235 go->encoder_v_offset = go->board_info->sensor_v_offset;
236 for (i = 0; i < 4; ++i)
237 go->modet[i].enable = 0;
238 for (i = 0; i < 1624; ++i)
239 go->modet_map[i] = 0;
240
241 if (go->board_info->sensor_flags & GO7007_SENSOR_SCALING) {
242 struct video_decoder_resolution res;
243
244 res.width = width;
245 if (height > sensor_height / 2) {
246 res.height = height / 2;
247 go->encoder_v_halve = 0;
248 } else {
249 res.height = height;
250 go->encoder_v_halve = 1;
251 }
252 if (go->i2c_adapter_online)
253 i2c_clients_command(&go->i2c_adapter,
254 DECODER_SET_RESOLUTION, &res);
255 } else {
256 if (width <= sensor_width / 4) {
257 go->encoder_h_halve = 1;
258 go->encoder_v_halve = 1;
259 go->encoder_subsample = 1;
260 } else if (width <= sensor_width / 2) {
261 go->encoder_h_halve = 1;
262 go->encoder_v_halve = 1;
263 go->encoder_subsample = 0;
264 } else {
265 go->encoder_h_halve = 0;
266 go->encoder_v_halve = 0;
267 go->encoder_subsample = 0;
268 }
269 }
270
271 if (fmt == NULL)
272 return 0;
273
274 switch (fmt->fmt.pix.pixelformat) {
275 case V4L2_PIX_FMT_MPEG:
276 if (go->format == GO7007_FORMAT_MPEG1 ||
277 go->format == GO7007_FORMAT_MPEG2 ||
278 go->format == GO7007_FORMAT_MPEG4)
279 break;
280 go->format = GO7007_FORMAT_MPEG1;
281 go->pali = 0;
282 go->aspect_ratio = GO7007_RATIO_1_1;
283 go->gop_size = go->sensor_framerate / 1000;
284 go->ipb = 0;
285 go->closed_gop = 1;
286 go->repeat_seqhead = 1;
287 go->seq_header_enable = 1;
288 go->gop_header_enable = 1;
289 go->dvd_mode = 0;
290 break;
291 /* Backwards compatibility only! */
292 case V4L2_PIX_FMT_MPEG4:
293 if (go->format == GO7007_FORMAT_MPEG4)
294 break;
295 go->format = GO7007_FORMAT_MPEG4;
296 go->pali = 0xf5;
297 go->aspect_ratio = GO7007_RATIO_1_1;
298 go->gop_size = go->sensor_framerate / 1000;
299 go->ipb = 0;
300 go->closed_gop = 1;
301 go->repeat_seqhead = 1;
302 go->seq_header_enable = 1;
303 go->gop_header_enable = 1;
304 go->dvd_mode = 0;
305 break;
306 case V4L2_PIX_FMT_MJPEG:
307 go->format = GO7007_FORMAT_MJPEG;
308 go->pali = 0;
309 go->aspect_ratio = GO7007_RATIO_1_1;
310 go->gop_size = 0;
311 go->ipb = 0;
312 go->closed_gop = 0;
313 go->repeat_seqhead = 0;
314 go->seq_header_enable = 0;
315 go->gop_header_enable = 0;
316 go->dvd_mode = 0;
317 break;
318 }
319 return 0;
320}
321
322static int clip_to_modet_map(struct go7007 *go, int region,
323 struct v4l2_clip *clip_list)
324{
325 struct v4l2_clip clip, *clip_ptr;
326 int x, y, mbnum;
327
328 /* Check if coordinates are OK and if any macroblocks are already
329 * used by other regions (besides 0) */
330 clip_ptr = clip_list;
331 while (clip_ptr) {
332 if (copy_from_user(&clip, clip_ptr, sizeof(clip)))
333 return -EFAULT;
334 if (clip.c.left < 0 || (clip.c.left & 0xF) ||
335 clip.c.width <= 0 || (clip.c.width & 0xF))
336 return -EINVAL;
337 if (clip.c.left + clip.c.width > go->width)
338 return -EINVAL;
339 if (clip.c.top < 0 || (clip.c.top & 0xF) ||
340 clip.c.height <= 0 || (clip.c.height & 0xF))
341 return -EINVAL;
342 if (clip.c.top + clip.c.height > go->height)
343 return -EINVAL;
344 for (y = 0; y < clip.c.height; y += 16)
345 for (x = 0; x < clip.c.width; x += 16) {
346 mbnum = (go->width >> 4) *
347 ((clip.c.top + y) >> 4) +
348 ((clip.c.left + x) >> 4);
349 if (go->modet_map[mbnum] != 0 &&
350 go->modet_map[mbnum] != region)
351 return -EBUSY;
352 }
353 clip_ptr = clip.next;
354 }
355
356 /* Clear old region macroblocks */
357 for (mbnum = 0; mbnum < 1624; ++mbnum)
358 if (go->modet_map[mbnum] == region)
359 go->modet_map[mbnum] = 0;
360
361 /* Claim macroblocks in this list */
362 clip_ptr = clip_list;
363 while (clip_ptr) {
364 if (copy_from_user(&clip, clip_ptr, sizeof(clip)))
365 return -EFAULT;
366 for (y = 0; y < clip.c.height; y += 16)
367 for (x = 0; x < clip.c.width; x += 16) {
368 mbnum = (go->width >> 4) *
369 ((clip.c.top + y) >> 4) +
370 ((clip.c.left + x) >> 4);
371 go->modet_map[mbnum] = region;
372 }
373 clip_ptr = clip.next;
374 }
375 return 0;
376}
377
378static int go7007_do_ioctl(struct inode *inode, struct file *file,
379 unsigned int cmd, void *arg)
380{
381 struct go7007_file *gofh = file->private_data;
382 struct go7007 *go = gofh->go;
383 unsigned long flags;
384 int retval = 0;
385
386 switch (cmd) {
387 case VIDIOC_QUERYCAP:
388 {
389 struct v4l2_capability *cap = arg;
390
391 memset(cap, 0, sizeof(*cap));
392 strcpy(cap->driver, "go7007");
393 strncpy(cap->card, go->name, sizeof(cap->card));
394 cap->version = KERNEL_VERSION(0, 9, 8);
395 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
396 V4L2_CAP_STREAMING; /* | V4L2_CAP_AUDIO; */
397 if (go->board_info->flags & GO7007_BOARD_HAS_TUNER)
398 cap->capabilities |= V4L2_CAP_TUNER;
399 return 0;
400 }
401 case VIDIOC_ENUM_FMT:
402 {
403 struct v4l2_fmtdesc *fmt = arg;
404 unsigned int index;
405 char *desc;
406 u32 pixelformat;
407
408 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
409 return -EINVAL;
410 switch (fmt->index) {
411 case 0:
412 pixelformat = V4L2_PIX_FMT_MJPEG;
413 desc = "Motion-JPEG";
414 break;
415 case 1:
416 pixelformat = V4L2_PIX_FMT_MPEG;
417 desc = "MPEG1/MPEG2/MPEG4";
418 break;
419 default:
420 return -EINVAL;
421 }
422 index = fmt->index;
423 memset(fmt, 0, sizeof(*fmt));
424 fmt->index = index;
425 fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
426 fmt->flags = V4L2_FMT_FLAG_COMPRESSED;
427 strncpy(fmt->description, desc, sizeof(fmt->description));
428 fmt->pixelformat = pixelformat;
429
430 return 0;
431 }
432 case VIDIOC_TRY_FMT:
433 {
434 struct v4l2_format *fmt = arg;
435
436 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
437 return -EINVAL;
438 return set_capture_size(go, fmt, 1);
439 }
440 case VIDIOC_G_FMT:
441 {
442 struct v4l2_format *fmt = arg;
443
444 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
445 return -EINVAL;
446 memset(fmt, 0, sizeof(*fmt));
447 fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
448 fmt->fmt.pix.width = go->width;
449 fmt->fmt.pix.height = go->height;
450 fmt->fmt.pix.pixelformat = go->format == GO7007_FORMAT_MJPEG ?
451 V4L2_PIX_FMT_MJPEG : V4L2_PIX_FMT_MPEG;
452 fmt->fmt.pix.field = V4L2_FIELD_NONE;
453 fmt->fmt.pix.bytesperline = 0;
454 fmt->fmt.pix.sizeimage = GO7007_BUF_SIZE;
455 fmt->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; /* ?? */
456 return 0;
457 }
458 case VIDIOC_S_FMT:
459 {
460 struct v4l2_format *fmt = arg;
461
462 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
463 return -EINVAL;
464 if (go->streaming)
465 return -EBUSY;
466 return set_capture_size(go, fmt, 0);
467 }
468 case VIDIOC_G_FBUF:
469 case VIDIOC_S_FBUF:
470 return -EINVAL;
471 case VIDIOC_REQBUFS:
472 {
473 struct v4l2_requestbuffers *req = arg;
474 unsigned int count, i;
475
476 if (go->streaming)
477 return -EBUSY;
478 if (req->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
479 req->memory != V4L2_MEMORY_MMAP)
480 return -EINVAL;
481
482 down(&gofh->lock);
483 retval = -EBUSY;
484 for (i = 0; i < gofh->buf_count; ++i)
485 if (gofh->bufs[i].mapped > 0)
486 goto unlock_and_return;
487 down(&go->hw_lock);
488 if (go->in_use > 0 && gofh->buf_count == 0) {
489 up(&go->hw_lock);
490 goto unlock_and_return;
491 }
492 if (gofh->buf_count > 0)
493 kfree(gofh->bufs);
494 retval = -ENOMEM;
495 count = req->count;
496 if (count > 0) {
497 if (count < 2)
498 count = 2;
499 if (count > 32)
500 count = 32;
501 gofh->bufs = kmalloc(count *
502 sizeof(struct go7007_buffer),
503 GFP_KERNEL);
504 if (gofh->bufs == NULL) {
505 up(&go->hw_lock);
506 goto unlock_and_return;
507 }
508 memset(gofh->bufs, 0,
509 count * sizeof(struct go7007_buffer));
510 for (i = 0; i < count; ++i) {
511 gofh->bufs[i].go = go;
512 gofh->bufs[i].index = i;
513 gofh->bufs[i].state = BUF_STATE_IDLE;
514 gofh->bufs[i].mapped = 0;
515 }
516 go->in_use = 1;
517 } else {
518 go->in_use = 0;
519 }
520 gofh->buf_count = count;
521 up(&go->hw_lock);
522 up(&gofh->lock);
523 memset(req, 0, sizeof(*req));
524 req->count = count;
525 req->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
526 req->memory = V4L2_MEMORY_MMAP;
527 return 0;
528 }
529 case VIDIOC_QUERYBUF:
530 {
531 struct v4l2_buffer *buf = arg;
532 unsigned int index;
533
534 retval = -EINVAL;
535 if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
536 return -EINVAL;
537 index = buf->index;
538 down(&gofh->lock);
539 if (index >= gofh->buf_count)
540 goto unlock_and_return;
541 memset(buf, 0, sizeof(*buf));
542 buf->index = index;
543 buf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
544 switch (gofh->bufs[index].state) {
545 case BUF_STATE_QUEUED:
546 buf->flags = V4L2_BUF_FLAG_QUEUED;
547 break;
548 case BUF_STATE_DONE:
549 buf->flags = V4L2_BUF_FLAG_DONE;
550 break;
551 default:
552 buf->flags = 0;
553 }
554 if (gofh->bufs[index].mapped)
555 buf->flags |= V4L2_BUF_FLAG_MAPPED;
556 buf->memory = V4L2_MEMORY_MMAP;
557 buf->m.offset = index * GO7007_BUF_SIZE;
558 buf->length = GO7007_BUF_SIZE;
559 up(&gofh->lock);
560
561 return 0;
562 }
563 case VIDIOC_QBUF:
564 {
565 struct v4l2_buffer *buf = arg;
566 struct go7007_buffer *gobuf;
567 int ret;
568
569 retval = -EINVAL;
570 if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ||
571 buf->memory != V4L2_MEMORY_MMAP)
572 return -EINVAL;
573 down(&gofh->lock);
574 if (buf->index < 0 || buf->index >= gofh->buf_count)
575 goto unlock_and_return;
576 gobuf = &gofh->bufs[buf->index];
577 if (gobuf->mapped == 0)
578 goto unlock_and_return;
579 retval = -EBUSY;
580 if (gobuf->state != BUF_STATE_IDLE)
581 goto unlock_and_return;
582 /* offset will be 0 until we really support USERPTR streaming */
583 gobuf->offset = gobuf->user_addr & ~PAGE_MASK;
584 gobuf->bytesused = 0;
585 gobuf->frame_offset = 0;
586 gobuf->modet_active = 0;
587 if (gobuf->offset > 0)
588 gobuf->page_count = GO7007_BUF_PAGES + 1;
589 else
590 gobuf->page_count = GO7007_BUF_PAGES;
591 retval = -ENOMEM;
592 down_read(&current->mm->mmap_sem);
593 ret = get_user_pages(current, current->mm,
594 gobuf->user_addr & PAGE_MASK, gobuf->page_count,
595 1, 1, gobuf->pages, NULL);
596 up_read(&current->mm->mmap_sem);
597 if (ret != gobuf->page_count) {
598 int i;
599 for (i = 0; i < ret; ++i)
600 page_cache_release(gobuf->pages[i]);
601 gobuf->page_count = 0;
602 goto unlock_and_return;
603 }
604 gobuf->state = BUF_STATE_QUEUED;
605 spin_lock_irqsave(&go->spinlock, flags);
606 list_add_tail(&gobuf->stream, &go->stream);
607 spin_unlock_irqrestore(&go->spinlock, flags);
608 up(&gofh->lock);
609 return 0;
610 }
611 case VIDIOC_DQBUF:
612 {
613 struct v4l2_buffer *buf = arg;
614 struct go7007_buffer *gobuf;
615 u32 frame_type_flag;
616 DEFINE_WAIT(wait);
617
618 if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
619 return -EINVAL;
620 if (buf->memory != V4L2_MEMORY_MMAP)
621 return -EINVAL;
622 down(&gofh->lock);
623 retval = -EINVAL;
624 if (list_empty(&go->stream))
625 goto unlock_and_return;
626 gobuf = list_entry(go->stream.next,
627 struct go7007_buffer, stream);
628 retval = -EAGAIN;
629 if (gobuf->state != BUF_STATE_DONE &&
630 !(file->f_flags & O_NONBLOCK)) {
631 for (;;) {
632 prepare_to_wait(&go->frame_waitq, &wait,
633 TASK_INTERRUPTIBLE);
634 if (gobuf->state == BUF_STATE_DONE)
635 break;
636 if (signal_pending(current)) {
637 retval = -ERESTARTSYS;
638 break;
639 }
640 schedule();
641 }
642 finish_wait(&go->frame_waitq, &wait);
643 }
644 if (gobuf->state != BUF_STATE_DONE)
645 goto unlock_and_return;
646 spin_lock_irqsave(&go->spinlock, flags);
647 deactivate_buffer(gobuf);
648 spin_unlock_irqrestore(&go->spinlock, flags);
649 frame_type_flag = get_frame_type_flag(gobuf, go->format);
650 gobuf->state = BUF_STATE_IDLE;
651 memset(buf, 0, sizeof(*buf));
652 buf->index = gobuf->index;
653 buf->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
654 buf->bytesused = gobuf->bytesused;
655 buf->flags = V4L2_BUF_FLAG_MAPPED | frame_type_flag;
656 buf->field = V4L2_FIELD_NONE;
657 buf->timestamp = gobuf->timestamp;
658 buf->sequence = gobuf->seq;
659 buf->memory = V4L2_MEMORY_MMAP;
660 buf->m.offset = gobuf->index * GO7007_BUF_SIZE;
661 buf->length = GO7007_BUF_SIZE;
662 buf->reserved = gobuf->modet_active;
663 up(&gofh->lock);
664 return 0;
665 }
666 case VIDIOC_STREAMON:
667 {
668 unsigned int *type = arg;
669
670 if (*type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
671 return -EINVAL;
672 down(&gofh->lock);
673 down(&go->hw_lock);
674 if (!go->streaming) {
675 go->streaming = 1;
676 go->next_seq = 0;
677 go->active_buf = NULL;
678 if (go7007_start_encoder(go) < 0)
679 retval = -EIO;
680 else
681 retval = 0;
682 }
683 up(&go->hw_lock);
684 up(&gofh->lock);
685 return retval;
686 }
687 case VIDIOC_STREAMOFF:
688 {
689 unsigned int *type = arg;
690
691 if (*type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
692 return -EINVAL;
693 down(&gofh->lock);
694 go7007_streamoff(go);
695 up(&gofh->lock);
696 return 0;
697 }
698 case VIDIOC_QUERYCTRL:
699 {
700 struct v4l2_queryctrl *ctrl = arg;
701 u32 id;
702
703 if (!go->i2c_adapter_online)
704 return -EIO;
705 id = ctrl->id;
706 memset(ctrl, 0, sizeof(*ctrl));
707 ctrl->id = id;
708 i2c_clients_command(&go->i2c_adapter, VIDIOC_QUERYCTRL, arg);
709 return ctrl->name[0] == 0 ? -EINVAL : 0;
710 }
711 case VIDIOC_G_CTRL:
712 {
713 struct v4l2_control *ctrl = arg;
714 struct v4l2_queryctrl query;
715
716 if (!go->i2c_adapter_online)
717 return -EIO;
718 memset(&query, 0, sizeof(query));
719 query.id = ctrl->id;
720 i2c_clients_command(&go->i2c_adapter, VIDIOC_QUERYCTRL, &query);
721 if (query.name[0] == 0)
722 return -EINVAL;
723 i2c_clients_command(&go->i2c_adapter, VIDIOC_G_CTRL, arg);
724 return 0;
725 }
726 case VIDIOC_S_CTRL:
727 {
728 struct v4l2_control *ctrl = arg;
729 struct v4l2_queryctrl query;
730
731 if (!go->i2c_adapter_online)
732 return -EIO;
733 memset(&query, 0, sizeof(query));
734 query.id = ctrl->id;
735 i2c_clients_command(&go->i2c_adapter, VIDIOC_QUERYCTRL, &query);
736 if (query.name[0] == 0)
737 return -EINVAL;
738 i2c_clients_command(&go->i2c_adapter, VIDIOC_S_CTRL, arg);
739 return 0;
740 }
741 case VIDIOC_G_PARM:
742 {
743 struct v4l2_streamparm *parm = arg;
744 struct v4l2_fract timeperframe = {
745 .numerator = 1001 * go->fps_scale,
746 .denominator = go->sensor_framerate,
747 };
748
749 if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
750 return -EINVAL;
751 memset(parm, 0, sizeof(*parm));
752 parm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
753 parm->parm.capture.capability |= V4L2_CAP_TIMEPERFRAME;
754 parm->parm.capture.timeperframe = timeperframe;
755 return 0;
756 }
757 case VIDIOC_S_PARM:
758 {
759 struct v4l2_streamparm *parm = arg;
760 unsigned int n, d;
761
762 if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
763 return -EINVAL;
764 if (parm->parm.capture.capturemode != 0)
765 return -EINVAL;
766 n = go->sensor_framerate *
767 parm->parm.capture.timeperframe.numerator;
768 d = 1001 * parm->parm.capture.timeperframe.denominator;
769 if (n != 0 && d != 0 && n > d)
770 go->fps_scale = (n + d/2) / d;
771 else
772 go->fps_scale = 1;
773 return 0;
774 }
775 case VIDIOC_ENUMSTD:
776 {
777 struct v4l2_standard *std = arg;
778
779 if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) &&
780 go->input == go->board_info->num_inputs - 1) {
781 if (!go->i2c_adapter_online)
782 return -EIO;
783 i2c_clients_command(&go->i2c_adapter,
784 VIDIOC_ENUMSTD, arg);
785 if (!std->id) /* hack to indicate EINVAL from tuner */
786 return -EINVAL;
787 } else if (go->board_info->sensor_flags & GO7007_SENSOR_TV) {
788 switch (std->index) {
789 case 0:
790 v4l2_video_std_construct(std,
791 V4L2_STD_NTSC, "NTSC");
792 break;
793 case 1:
794 v4l2_video_std_construct(std,
795 V4L2_STD_PAL | V4L2_STD_SECAM,
796 "PAL/SECAM");
797 break;
798 default:
799 return -EINVAL;
800 }
801 } else {
802 if (std->index != 0)
803 return -EINVAL;
804 memset(std, 0, sizeof(*std));
805 snprintf(std->name, sizeof(std->name), "%dx%d, %dfps",
806 go->board_info->sensor_width,
807 go->board_info->sensor_height,
808 go->board_info->sensor_framerate / 1000);
809 std->frameperiod.numerator = 1001;
810 std->frameperiod.denominator =
811 go->board_info->sensor_framerate;
812 }
813 return 0;
814 }
815 case VIDIOC_G_STD:
816 {
817 v4l2_std_id *std = arg;
818
819 if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) &&
820 go->input == go->board_info->num_inputs - 1) {
821 if (!go->i2c_adapter_online)
822 return -EIO;
823 i2c_clients_command(&go->i2c_adapter,
824 VIDIOC_G_STD, arg);
825 } else if (go->board_info->sensor_flags & GO7007_SENSOR_TV) {
826 if (go->standard == GO7007_STD_NTSC)
827 *std = V4L2_STD_NTSC;
828 else
829 *std = V4L2_STD_PAL | V4L2_STD_SECAM;
830 } else
831 *std = 0;
832 return 0;
833 }
834 case VIDIOC_S_STD:
835 {
836 v4l2_std_id *std = arg;
837
838 if (go->streaming)
839 return -EBUSY;
840 if (!(go->board_info->sensor_flags & GO7007_SENSOR_TV) &&
841 *std != 0)
842 return -EINVAL;
843 if (*std == 0)
844 return -EINVAL;
845 if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) &&
846 go->input == go->board_info->num_inputs - 1) {
847 if (!go->i2c_adapter_online)
848 return -EIO;
849 i2c_clients_command(&go->i2c_adapter,
850 VIDIOC_S_STD, arg);
851 if (!*std) /* hack to indicate EINVAL from tuner */
852 return -EINVAL;
853 }
854 if (*std & V4L2_STD_NTSC) {
855 go->standard = GO7007_STD_NTSC;
856 go->sensor_framerate = 30000;
857 } else if (*std & V4L2_STD_PAL) {
858 go->standard = GO7007_STD_PAL;
859 go->sensor_framerate = 25025;
860 } else if (*std & V4L2_STD_SECAM) {
861 go->standard = GO7007_STD_PAL;
862 go->sensor_framerate = 25025;
863 } else
864 return -EINVAL;
865 if (go->i2c_adapter_online)
866 i2c_clients_command(&go->i2c_adapter,
867 VIDIOC_S_STD, std);
868 set_capture_size(go, NULL, 0);
869 return 0;
870 }
871 case VIDIOC_QUERYSTD:
872 {
873 v4l2_std_id *std = arg;
874
875 if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) &&
876 go->input == go->board_info->num_inputs - 1) {
877 if (!go->i2c_adapter_online)
878 return -EIO;
879 i2c_clients_command(&go->i2c_adapter,
880 VIDIOC_QUERYSTD, arg);
881 } else if (go->board_info->sensor_flags & GO7007_SENSOR_TV)
882 *std = V4L2_STD_NTSC | V4L2_STD_PAL | V4L2_STD_SECAM;
883 else
884 *std = 0;
885 return 0;
886 }
887 case VIDIOC_ENUMINPUT:
888 {
889 struct v4l2_input *inp = arg;
890 int index;
891
892 if (inp->index >= go->board_info->num_inputs)
893 return -EINVAL;
894 index = inp->index;
895 memset(inp, 0, sizeof(*inp));
896 inp->index = index;
897 strncpy(inp->name, go->board_info->inputs[index].name,
898 sizeof(inp->name));
899 /* If this board has a tuner, it will be the last input */
900 if ((go->board_info->flags & GO7007_BOARD_HAS_TUNER) &&
901 index == go->board_info->num_inputs - 1)
902 inp->type = V4L2_INPUT_TYPE_TUNER;
903 else
904 inp->type = V4L2_INPUT_TYPE_CAMERA;
905 inp->audioset = 0;
906 inp->tuner = 0;
907 if (go->board_info->sensor_flags & GO7007_SENSOR_TV)
908 inp->std = V4L2_STD_NTSC | V4L2_STD_PAL |
909 V4L2_STD_SECAM;
910 else
911 inp->std = 0;
912 return 0;
913 }
914 case VIDIOC_G_INPUT:
915 {
916 int *input = arg;
917
918 *input = go->input;
919 return 0;
920 }
921 case VIDIOC_S_INPUT:
922 {
923 int *input = arg;
924
925 if (*input >= go->board_info->num_inputs)
926 return -EINVAL;
927 if (go->streaming)
928 return -EBUSY;
929 go->input = *input;
930 if (go->i2c_adapter_online) {
931 i2c_clients_command(&go->i2c_adapter, VIDIOC_S_INPUT,
932 &go->board_info->inputs[*input].video_input);
933 i2c_clients_command(&go->i2c_adapter, VIDIOC_S_AUDIO,
934 &go->board_info->inputs[*input].audio_input);
935 }
936 return 0;
937 }
938 case VIDIOC_G_TUNER:
939 {
940 struct v4l2_tuner *t = arg;
941
942 if (!(go->board_info->flags & GO7007_BOARD_HAS_TUNER))
943 return -EINVAL;
944 if (t->index != 0)
945 return -EINVAL;
946 if (!go->i2c_adapter_online)
947 return -EIO;
948 i2c_clients_command(&go->i2c_adapter, VIDIOC_G_TUNER, arg);
949 t->index = 0;
950 return 0;
951 }
952 case VIDIOC_S_TUNER:
953 {
954 struct v4l2_tuner *t = arg;
955
956 if (!(go->board_info->flags & GO7007_BOARD_HAS_TUNER))
957 return -EINVAL;
958 if (t->index != 0)
959 return -EINVAL;
960 if (!go->i2c_adapter_online)
961 return -EIO;
962 switch (go->board_id) {
963 case GO7007_BOARDID_PX_TV402U_NA:
964 case GO7007_BOARDID_PX_TV402U_JP:
965 /* No selectable options currently */
966 if (t->audmode != V4L2_TUNER_MODE_STEREO)
967 return -EINVAL;
968 break;
969 }
970 i2c_clients_command(&go->i2c_adapter, VIDIOC_S_TUNER, arg);
971 return 0;
972 }
973 case VIDIOC_G_FREQUENCY:
974 {
975 struct v4l2_frequency *f = arg;
976
977 if (!(go->board_info->flags & GO7007_BOARD_HAS_TUNER))
978 return -EINVAL;
979 if (!go->i2c_adapter_online)
980 return -EIO;
981 memset(f, 0, sizeof(*f));
982 f->type = V4L2_TUNER_ANALOG_TV;
983 i2c_clients_command(&go->i2c_adapter, VIDIOC_G_FREQUENCY, arg);
984 return 0;
985 }
986 case VIDIOC_S_FREQUENCY:
987 {
988 if (!(go->board_info->flags & GO7007_BOARD_HAS_TUNER))
989 return -EINVAL;
990 if (!go->i2c_adapter_online)
991 return -EIO;
992 i2c_clients_command(&go->i2c_adapter, VIDIOC_S_FREQUENCY, arg);
993 return 0;
994 }
995 case VIDIOC_CROPCAP:
996 {
997 struct v4l2_cropcap *cropcap = arg;
998
999 if (cropcap->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1000 return -EINVAL;
1001 memset(cropcap, 0, sizeof(*cropcap));
1002 cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1003 /* These specify the raw input of the sensor */
1004 switch (go->standard) {
1005 case GO7007_STD_NTSC:
1006 cropcap->bounds.top = 0;
1007 cropcap->bounds.left = 0;
1008 cropcap->bounds.width = 720;
1009 cropcap->bounds.height = 480;
1010 cropcap->defrect.top = 0;
1011 cropcap->defrect.left = 0;
1012 cropcap->defrect.width = 720;
1013 cropcap->defrect.height = 480;
1014 break;
1015 case GO7007_STD_PAL:
1016 cropcap->bounds.top = 0;
1017 cropcap->bounds.left = 0;
1018 cropcap->bounds.width = 720;
1019 cropcap->bounds.height = 576;
1020 cropcap->defrect.top = 0;
1021 cropcap->defrect.left = 0;
1022 cropcap->defrect.width = 720;
1023 cropcap->defrect.height = 576;
1024 break;
1025 case GO7007_STD_OTHER:
1026 cropcap->bounds.top = 0;
1027 cropcap->bounds.left = 0;
1028 cropcap->bounds.width = go->board_info->sensor_width;
1029 cropcap->bounds.height = go->board_info->sensor_height;
1030 cropcap->defrect.top = 0;
1031 cropcap->defrect.left = 0;
1032 cropcap->defrect.width = go->board_info->sensor_width;
1033 cropcap->defrect.height = go->board_info->sensor_height;
1034 break;
1035 }
1036
1037 return 0;
1038 }
1039 case VIDIOC_G_CROP:
1040 {
1041 struct v4l2_crop *crop = arg;
1042
1043 if (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1044 return -EINVAL;
1045 memset(crop, 0, sizeof(*crop));
1046 crop->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1047 /* These specify the raw input of the sensor */
1048 switch (go->standard) {
1049 case GO7007_STD_NTSC:
1050 crop->c.top = 0;
1051 crop->c.left = 0;
1052 crop->c.width = 720;
1053 crop->c.height = 480;
1054 break;
1055 case GO7007_STD_PAL:
1056 crop->c.top = 0;
1057 crop->c.left = 0;
1058 crop->c.width = 720;
1059 crop->c.height = 576;
1060 break;
1061 case GO7007_STD_OTHER:
1062 crop->c.top = 0;
1063 crop->c.left = 0;
1064 crop->c.width = go->board_info->sensor_width;
1065 crop->c.height = go->board_info->sensor_height;
1066 break;
1067 }
1068
1069 return 0;
1070 }
1071 case VIDIOC_S_CROP:
1072 {
1073 struct v4l2_crop *crop = arg;
1074
1075 if (crop->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1076 return -EINVAL;
1077 return 0;
1078 }
1079 case VIDIOC_G_JPEGCOMP:
1080 {
1081 struct v4l2_jpegcompression *params = arg;
1082
1083 memset(params, 0, sizeof(*params));
1084 params->quality = 50; /* ?? */
1085 params->jpeg_markers = V4L2_JPEG_MARKER_DHT |
1086 V4L2_JPEG_MARKER_DQT;
1087
1088 return 0;
1089 }
1090 case VIDIOC_S_JPEGCOMP:
1091 {
1092 struct v4l2_jpegcompression *params = arg;
1093
1094 if (params->quality != 50 ||
1095 params->jpeg_markers != (V4L2_JPEG_MARKER_DHT |
1096 V4L2_JPEG_MARKER_DQT))
1097 return -EINVAL;
1098 return 0;
1099 }
1100 /* Temporary ioctls for controlling compression characteristics */
1101 case GO7007IOC_S_BITRATE:
1102 {
1103 int *bitrate = arg;
1104
1105 if (go->streaming)
1106 return -EINVAL;
1107 /* Upper bound is kind of arbitrary here */
1108 if (*bitrate < 64000 || *bitrate > 10000000)
1109 return -EINVAL;
1110 go->bitrate = *bitrate;
1111 return 0;
1112 }
1113 case GO7007IOC_G_BITRATE:
1114 {
1115 int *bitrate = arg;
1116
1117 *bitrate = go->bitrate;
1118 return 0;
1119 }
1120 case GO7007IOC_S_COMP_PARAMS:
1121 {
1122 struct go7007_comp_params *comp = arg;
1123
1124 if (go->format == GO7007_FORMAT_MJPEG)
1125 return -EINVAL;
1126 if (comp->gop_size > 0)
1127 go->gop_size = comp->gop_size;
1128 else
1129 go->gop_size = go->sensor_framerate / 1000;
1130 if (go->gop_size != 15)
1131 go->dvd_mode = 0;
1132 /*go->ipb = comp->max_b_frames > 0;*/ /* completely untested */
1133 if (go->board_info->sensor_flags & GO7007_SENSOR_TV) {
1134 switch (comp->aspect_ratio) {
1135 case GO7007_ASPECT_RATIO_4_3_NTSC:
1136 case GO7007_ASPECT_RATIO_4_3_PAL:
1137 go->aspect_ratio = GO7007_RATIO_4_3;
1138 break;
1139 case GO7007_ASPECT_RATIO_16_9_NTSC:
1140 case GO7007_ASPECT_RATIO_16_9_PAL:
1141 go->aspect_ratio = GO7007_RATIO_16_9;
1142 break;
1143 default:
1144 go->aspect_ratio = GO7007_RATIO_1_1;
1145 break;
1146 }
1147 }
1148 if (comp->flags & GO7007_COMP_OMIT_SEQ_HEADER) {
1149 go->dvd_mode = 0;
1150 go->seq_header_enable = 0;
1151 } else {
1152 go->seq_header_enable = 1;
1153 }
1154 /* fall-through */
1155 }
1156 case GO7007IOC_G_COMP_PARAMS:
1157 {
1158 struct go7007_comp_params *comp = arg;
1159
1160 if (go->format == GO7007_FORMAT_MJPEG)
1161 return -EINVAL;
1162 memset(comp, 0, sizeof(*comp));
1163 comp->gop_size = go->gop_size;
1164 comp->max_b_frames = go->ipb ? 2 : 0;
1165 switch (go->aspect_ratio) {
1166 case GO7007_RATIO_4_3:
1167 if (go->standard == GO7007_STD_NTSC)
1168 comp->aspect_ratio =
1169 GO7007_ASPECT_RATIO_4_3_NTSC;
1170 else
1171 comp->aspect_ratio =
1172 GO7007_ASPECT_RATIO_4_3_PAL;
1173 break;
1174 case GO7007_RATIO_16_9:
1175 if (go->standard == GO7007_STD_NTSC)
1176 comp->aspect_ratio =
1177 GO7007_ASPECT_RATIO_16_9_NTSC;
1178 else
1179 comp->aspect_ratio =
1180 GO7007_ASPECT_RATIO_16_9_PAL;
1181 break;
1182 default:
1183 comp->aspect_ratio = GO7007_ASPECT_RATIO_1_1;
1184 break;
1185 }
1186 if (go->closed_gop)
1187 comp->flags |= GO7007_COMP_CLOSED_GOP;
1188 if (!go->seq_header_enable)
1189 comp->flags |= GO7007_COMP_OMIT_SEQ_HEADER;
1190 return 0;
1191 }
1192 case GO7007IOC_S_MPEG_PARAMS:
1193 {
1194 struct go7007_mpeg_params *mpeg = arg;
1195
1196 if (go->format != GO7007_FORMAT_MPEG1 &&
1197 go->format != GO7007_FORMAT_MPEG2 &&
1198 go->format != GO7007_FORMAT_MPEG4)
1199 return -EINVAL;
1200
1201 if (mpeg->flags & GO7007_MPEG_FORCE_DVD_MODE) {
1202 go->format = GO7007_FORMAT_MPEG2;
1203 go->bitrate = 9800000;
1204 go->gop_size = 15;
1205 go->pali = 0x48;
1206 go->closed_gop = 1;
1207 go->repeat_seqhead = 0;
1208 go->seq_header_enable = 1;
1209 go->gop_header_enable = 1;
1210 go->dvd_mode = 1;
1211 } else {
1212 switch (mpeg->mpeg_video_standard) {
1213 case GO7007_MPEG_VIDEO_MPEG1:
1214 go->format = GO7007_FORMAT_MPEG1;
1215 go->pali = 0;
1216 break;
1217 case GO7007_MPEG_VIDEO_MPEG2:
1218 go->format = GO7007_FORMAT_MPEG2;
1219 if (mpeg->pali >> 24 == 2)
1220 go->pali = mpeg->pali & 0xff;
1221 else
1222 go->pali = 0x48;
1223 break;
1224 case GO7007_MPEG_VIDEO_MPEG4:
1225 go->format = GO7007_FORMAT_MPEG4;
1226 if (mpeg->pali >> 24 == 4)
1227 go->pali = mpeg->pali & 0xff;
1228 else
1229 go->pali = 0xf5;
1230 break;
1231 default:
1232 return -EINVAL;
1233 }
1234 go->gop_header_enable =
1235 mpeg->flags & GO7007_MPEG_OMIT_GOP_HEADER
1236 ? 0 : 1;
1237 if (mpeg->flags & GO7007_MPEG_REPEAT_SEQHEADER)
1238 go->repeat_seqhead = 1;
1239 else
1240 go->repeat_seqhead = 0;
1241 go->dvd_mode = 0;
1242 }
1243 /* fall-through */
1244 }
1245 case GO7007IOC_G_MPEG_PARAMS:
1246 {
1247 struct go7007_mpeg_params *mpeg = arg;
1248
1249 memset(mpeg, 0, sizeof(*mpeg));
1250 switch (go->format) {
1251 case GO7007_FORMAT_MPEG1:
1252 mpeg->mpeg_video_standard = GO7007_MPEG_VIDEO_MPEG1;
1253 mpeg->pali = 0;
1254 break;
1255 case GO7007_FORMAT_MPEG2:
1256 mpeg->mpeg_video_standard = GO7007_MPEG_VIDEO_MPEG2;
1257 mpeg->pali = GO7007_MPEG_PROFILE(2, go->pali);
1258 break;
1259 case GO7007_FORMAT_MPEG4:
1260 mpeg->mpeg_video_standard = GO7007_MPEG_VIDEO_MPEG4;
1261 mpeg->pali = GO7007_MPEG_PROFILE(4, go->pali);
1262 break;
1263 default:
1264 return -EINVAL;
1265 }
1266 if (!go->gop_header_enable)
1267 mpeg->flags |= GO7007_MPEG_OMIT_GOP_HEADER;
1268 if (go->repeat_seqhead)
1269 mpeg->flags |= GO7007_MPEG_REPEAT_SEQHEADER;
1270 if (go->dvd_mode)
1271 mpeg->flags |= GO7007_MPEG_FORCE_DVD_MODE;
1272 return 0;
1273 }
1274 case GO7007IOC_S_MD_PARAMS:
1275 {
1276 struct go7007_md_params *mdp = arg;
1277
1278 if (mdp->region > 3)
1279 return -EINVAL;
1280 if (mdp->trigger > 0) {
1281 go->modet[mdp->region].pixel_threshold =
1282 mdp->pixel_threshold >> 1;
1283 go->modet[mdp->region].motion_threshold =
1284 mdp->motion_threshold >> 1;
1285 go->modet[mdp->region].mb_threshold =
1286 mdp->trigger >> 1;
1287 go->modet[mdp->region].enable = 1;
1288 } else
1289 go->modet[mdp->region].enable = 0;
1290 /* fall-through */
1291 }
1292 case GO7007IOC_G_MD_PARAMS:
1293 {
1294 struct go7007_md_params *mdp = arg;
1295 int region = mdp->region;
1296
1297 if (mdp->region > 3)
1298 return -EINVAL;
1299 memset(mdp, 0, sizeof(struct go7007_md_params));
1300 mdp->region = region;
1301 if (!go->modet[region].enable)
1302 return 0;
1303 mdp->pixel_threshold =
1304 (go->modet[region].pixel_threshold << 1) + 1;
1305 mdp->motion_threshold =
1306 (go->modet[region].motion_threshold << 1) + 1;
1307 mdp->trigger =
1308 (go->modet[region].mb_threshold << 1) + 1;
1309 return 0;
1310 }
1311 case GO7007IOC_S_MD_REGION:
1312 {
1313 struct go7007_md_region *region = arg;
1314
1315 if (region->region < 1 || region->region > 3)
1316 return -EINVAL;
1317 return clip_to_modet_map(go, region->region, region->clips);
1318 }
1319 default:
1320 printk(KERN_DEBUG "go7007: unsupported ioctl %d\n", cmd);
1321 return -ENOIOCTLCMD;
1322 }
1323 return 0;
1324
1325unlock_and_return:
1326 up(&gofh->lock);
1327 return retval;
1328}
1329
1330static int go7007_ioctl(struct inode *inode, struct file *file,
1331 unsigned int cmd, unsigned long arg)
1332{
1333 struct go7007_file *gofh = file->private_data;
1334
1335 if (gofh->go->status != STATUS_ONLINE)
1336 return -EIO;
1337
1338 return video_usercopy(inode, file, cmd, arg, go7007_do_ioctl);
1339}
1340
1341static ssize_t go7007_read(struct file *file, char __user *data,
1342 size_t count, loff_t *ppos)
1343{
1344 return -EINVAL;
1345}
1346
1347static void go7007_vm_open(struct vm_area_struct *vma)
1348{
1349 struct go7007_buffer *gobuf = vma->vm_private_data;
1350
1351 ++gobuf->mapped;
1352}
1353
1354static void go7007_vm_close(struct vm_area_struct *vma)
1355{
1356 struct go7007_buffer *gobuf = vma->vm_private_data;
1357 unsigned long flags;
1358
1359 if (--gobuf->mapped == 0) {
1360 spin_lock_irqsave(&gobuf->go->spinlock, flags);
1361 deactivate_buffer(gobuf);
1362 spin_unlock_irqrestore(&gobuf->go->spinlock, flags);
1363 }
1364}
1365
1366/* Copied from videobuf-dma-sg.c */
1367static int go7007_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
1368{
1369 struct page *page;
1370
1371 page = alloc_page(GFP_USER | __GFP_DMA32);
1372 if (!page)
1373 return VM_FAULT_OOM;
1374 clear_user_page(page_address(page), (unsigned long)vmf->virtual_address,
1375 page);
1376 vmf->page = page;
1377 return 0;
1378}
1379
1380static struct vm_operations_struct go7007_vm_ops = {
1381 .open = go7007_vm_open,
1382 .close = go7007_vm_close,
1383 .fault = go7007_vm_fault,
1384};
1385
1386static int go7007_mmap(struct file *file, struct vm_area_struct *vma)
1387{
1388 struct go7007_file *gofh = file->private_data;
1389 unsigned int index;
1390
1391 if (gofh->go->status != STATUS_ONLINE)
1392 return -EIO;
1393 if (!(vma->vm_flags & VM_SHARED))
1394 return -EINVAL; /* only support VM_SHARED mapping */
1395 if (vma->vm_end - vma->vm_start != GO7007_BUF_SIZE)
1396 return -EINVAL; /* must map exactly one full buffer */
1397 down(&gofh->lock);
1398 index = vma->vm_pgoff / GO7007_BUF_PAGES;
1399 if (index >= gofh->buf_count) {
1400 up(&gofh->lock);
1401 return -EINVAL; /* trying to map beyond requested buffers */
1402 }
1403 if (index * GO7007_BUF_PAGES != vma->vm_pgoff) {
1404 up(&gofh->lock);
1405 return -EINVAL; /* offset is not aligned on buffer boundary */
1406 }
1407 if (gofh->bufs[index].mapped > 0) {
1408 up(&gofh->lock);
1409 return -EBUSY;
1410 }
1411 gofh->bufs[index].mapped = 1;
1412 gofh->bufs[index].user_addr = vma->vm_start;
1413 vma->vm_ops = &go7007_vm_ops;
1414 vma->vm_flags |= VM_DONTEXPAND;
1415 vma->vm_flags &= ~VM_IO;
1416 vma->vm_private_data = &gofh->bufs[index];
1417 up(&gofh->lock);
1418 return 0;
1419}
1420
1421static unsigned int go7007_poll(struct file *file, poll_table *wait)
1422{
1423 struct go7007_file *gofh = file->private_data;
1424 struct go7007_buffer *gobuf;
1425
1426 if (list_empty(&gofh->go->stream))
1427 return POLLERR;
1428 gobuf = list_entry(gofh->go->stream.next, struct go7007_buffer, stream);
1429 poll_wait(file, &gofh->go->frame_waitq, wait);
1430 if (gobuf->state == BUF_STATE_DONE)
1431 return POLLIN | POLLRDNORM;
1432 return 0;
1433}
1434
1435static void go7007_vfl_release(struct video_device *vfd)
1436{
1437 struct go7007 *go = video_get_drvdata(vfd);
1438
1439 video_device_release(vfd);
1440 if (--go->ref_count == 0)
1441 kfree(go);
1442}
1443
1444static struct file_operations go7007_fops = {
1445 .owner = THIS_MODULE,
1446 .open = go7007_open,
1447 .release = go7007_release,
1448 .ioctl = go7007_ioctl,
1449 .llseek = no_llseek,
1450 .read = go7007_read,
1451 .mmap = go7007_mmap,
1452 .poll = go7007_poll,
1453};
1454
1455static struct video_device go7007_template = {
1456 .name = "go7007",
1457 .vfl_type = VID_TYPE_CAPTURE,
1458 .fops = &go7007_fops,
1459 .minor = -1,
1460 .release = go7007_vfl_release,
1461};
1462
1463int go7007_v4l2_init(struct go7007 *go)
1464{
1465 int rv;
1466
1467 go->video_dev = video_device_alloc();
1468 if (go->video_dev == NULL)
1469 return -ENOMEM;
1470 memcpy(go->video_dev, &go7007_template, sizeof(go7007_template));
1471 go->video_dev->parent = go->dev;
1472 rv = video_register_device(go->video_dev, VFL_TYPE_GRABBER, -1);
1473 if (rv < 0) {
1474 video_device_release(go->video_dev);
1475 go->video_dev = NULL;
1476 return rv;
1477 }
1478 video_set_drvdata(go->video_dev, go);
1479 ++go->ref_count;
1480
1481 return 0;
1482}
1483
1484void go7007_v4l2_remove(struct go7007 *go)
1485{
1486 unsigned long flags;
1487
1488 down(&go->hw_lock);
1489 if (go->streaming) {
1490 go->streaming = 0;
1491 go7007_stream_stop(go);
1492 spin_lock_irqsave(&go->spinlock, flags);
1493 abort_queued(go);
1494 spin_unlock_irqrestore(&go->spinlock, flags);
1495 }
1496 up(&go->hw_lock);
1497 if (go->video_dev)
1498 video_unregister_device(go->video_dev);
1499}
diff --git a/drivers/staging/go7007/go7007.h b/drivers/staging/go7007/go7007.h
new file mode 100644
index 00000000000..7399c915a93
--- /dev/null
+++ b/drivers/staging/go7007/go7007.h
@@ -0,0 +1,114 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and the associated README documentation file (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sublicense, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
14 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
15 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
16 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18 */
19
20/* DEPRECATED -- use V4L2_PIX_FMT_MPEG and then call GO7007IOC_S_MPEG_PARAMS
21 * to select between MPEG1, MPEG2, and MPEG4 */
22#define V4L2_PIX_FMT_MPEG4 v4l2_fourcc('M', 'P', 'G', '4') /* MPEG4 */
23
24/* These will be replaced with a better interface
25 * soon, so don't get too attached to them */
26#define GO7007IOC_S_BITRATE _IOW('V', BASE_VIDIOC_PRIVATE + 0, int)
27#define GO7007IOC_G_BITRATE _IOR('V', BASE_VIDIOC_PRIVATE + 1, int)
28
29enum go7007_aspect_ratio {
30 GO7007_ASPECT_RATIO_1_1 = 0,
31 GO7007_ASPECT_RATIO_4_3_NTSC = 1,
32 GO7007_ASPECT_RATIO_4_3_PAL = 2,
33 GO7007_ASPECT_RATIO_16_9_NTSC = 3,
34 GO7007_ASPECT_RATIO_16_9_PAL = 4,
35};
36
37/* Used to set generic compression parameters */
38struct go7007_comp_params {
39 __u32 gop_size;
40 __u32 max_b_frames;
41 enum go7007_aspect_ratio aspect_ratio;
42 __u32 flags;
43 __u32 reserved[8];
44};
45
46#define GO7007_COMP_CLOSED_GOP 0x00000001
47#define GO7007_COMP_OMIT_SEQ_HEADER 0x00000002
48
49enum go7007_mpeg_video_standard {
50 GO7007_MPEG_VIDEO_MPEG1 = 0,
51 GO7007_MPEG_VIDEO_MPEG2 = 1,
52 GO7007_MPEG_VIDEO_MPEG4 = 2,
53};
54
55/* Used to set parameters for V4L2_PIX_FMT_MPEG format */
56struct go7007_mpeg_params {
57 enum go7007_mpeg_video_standard mpeg_video_standard;
58 __u32 flags;
59 __u32 pali;
60 __u32 reserved[8];
61};
62
63#define GO7007_MPEG_FORCE_DVD_MODE 0x00000001
64#define GO7007_MPEG_OMIT_GOP_HEADER 0x00000002
65#define GO7007_MPEG_REPEAT_SEQHEADER 0x00000004
66
67#define GO7007_MPEG_PROFILE(format, pali) (((format)<<24)|(pali))
68
69#define GO7007_MPEG2_PROFILE_MAIN_MAIN GO7007_MPEG_PROFILE(2, 0x48)
70
71#define GO7007_MPEG4_PROFILE_S_L0 GO7007_MPEG_PROFILE(4, 0x08)
72#define GO7007_MPEG4_PROFILE_S_L1 GO7007_MPEG_PROFILE(4, 0x01)
73#define GO7007_MPEG4_PROFILE_S_L2 GO7007_MPEG_PROFILE(4, 0x02)
74#define GO7007_MPEG4_PROFILE_S_L3 GO7007_MPEG_PROFILE(4, 0x03)
75#define GO7007_MPEG4_PROFILE_ARTS_L1 GO7007_MPEG_PROFILE(4, 0x91)
76#define GO7007_MPEG4_PROFILE_ARTS_L2 GO7007_MPEG_PROFILE(4, 0x92)
77#define GO7007_MPEG4_PROFILE_ARTS_L3 GO7007_MPEG_PROFILE(4, 0x93)
78#define GO7007_MPEG4_PROFILE_ARTS_L4 GO7007_MPEG_PROFILE(4, 0x94)
79#define GO7007_MPEG4_PROFILE_AS_L0 GO7007_MPEG_PROFILE(4, 0xf0)
80#define GO7007_MPEG4_PROFILE_AS_L1 GO7007_MPEG_PROFILE(4, 0xf1)
81#define GO7007_MPEG4_PROFILE_AS_L2 GO7007_MPEG_PROFILE(4, 0xf2)
82#define GO7007_MPEG4_PROFILE_AS_L3 GO7007_MPEG_PROFILE(4, 0xf3)
83#define GO7007_MPEG4_PROFILE_AS_L4 GO7007_MPEG_PROFILE(4, 0xf4)
84#define GO7007_MPEG4_PROFILE_AS_L5 GO7007_MPEG_PROFILE(4, 0xf5)
85
86struct go7007_md_params {
87 __u16 region;
88 __u16 trigger;
89 __u16 pixel_threshold;
90 __u16 motion_threshold;
91 __u32 reserved[8];
92};
93
94struct go7007_md_region {
95 __u16 region;
96 __u16 flags;
97 struct v4l2_clip *clips;
98 __u32 reserved[8];
99};
100
101#define GO7007IOC_S_MPEG_PARAMS _IOWR('V', BASE_VIDIOC_PRIVATE + 2, \
102 struct go7007_mpeg_params)
103#define GO7007IOC_G_MPEG_PARAMS _IOR('V', BASE_VIDIOC_PRIVATE + 3, \
104 struct go7007_mpeg_params)
105#define GO7007IOC_S_COMP_PARAMS _IOWR('V', BASE_VIDIOC_PRIVATE + 4, \
106 struct go7007_comp_params)
107#define GO7007IOC_G_COMP_PARAMS _IOR('V', BASE_VIDIOC_PRIVATE + 5, \
108 struct go7007_comp_params)
109#define GO7007IOC_S_MD_PARAMS _IOWR('V', BASE_VIDIOC_PRIVATE + 6, \
110 struct go7007_md_params)
111#define GO7007IOC_G_MD_PARAMS _IOR('V', BASE_VIDIOC_PRIVATE + 7, \
112 struct go7007_md_params)
113#define GO7007IOC_S_MD_REGION _IOW('V', BASE_VIDIOC_PRIVATE + 8, \
114 struct go7007_md_region)
diff --git a/drivers/staging/go7007/saa7134-go7007.c b/drivers/staging/go7007/saa7134-go7007.c
new file mode 100644
index 00000000000..c4a6d8ef907
--- /dev/null
+++ b/drivers/staging/go7007/saa7134-go7007.c
@@ -0,0 +1,484 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/spinlock.h>
22#include <linux/wait.h>
23#include <linux/list.h>
24#include <linux/slab.h>
25#include <linux/time.h>
26#include <linux/mm.h>
27#include <linux/usb.h>
28#include <linux/i2c.h>
29#include <asm/byteorder.h>
30#include <media/audiochip.h>
31
32#include "saa7134-reg.h"
33#include "saa7134.h"
34#include "go7007-priv.h"
35
36#define GO7007_HPI_DEBUG
37
38enum hpi_address {
39 HPI_ADDR_VIDEO_BUFFER = 0xe4,
40 HPI_ADDR_INIT_BUFFER = 0xea,
41 HPI_ADDR_INTR_RET_VALUE = 0xee,
42 HPI_ADDR_INTR_RET_DATA = 0xec,
43 HPI_ADDR_INTR_STATUS = 0xf4,
44 HPI_ADDR_INTR_WR_PARAM = 0xf6,
45 HPI_ADDR_INTR_WR_INDEX = 0xf8,
46};
47
48enum gpio_command {
49 GPIO_COMMAND_RESET = 0x00, /* 000b */
50 GPIO_COMMAND_REQ1 = 0x04, /* 001b */
51 GPIO_COMMAND_WRITE = 0x20, /* 010b */
52 GPIO_COMMAND_REQ2 = 0x24, /* 011b */
53 GPIO_COMMAND_READ = 0x80, /* 100b */
54 GPIO_COMMAND_VIDEO = 0x84, /* 101b */
55 GPIO_COMMAND_IDLE = 0xA0, /* 110b */
56 GPIO_COMMAND_ADDR = 0xA4, /* 111b */
57};
58
59struct saa7134_go7007 {
60 struct saa7134_dev *dev;
61 u8 *top;
62 u8 *bottom;
63 dma_addr_t top_dma;
64 dma_addr_t bottom_dma;
65};
66
67static struct go7007_board_info board_voyager = {
68 .firmware = "go7007tv.bin",
69 .flags = 0,
70 .sensor_flags = GO7007_SENSOR_656 |
71 GO7007_SENSOR_VALID_ENABLE |
72 GO7007_SENSOR_TV |
73 GO7007_SENSOR_VBI,
74 .audio_flags = GO7007_AUDIO_I2S_MODE_1 |
75 GO7007_AUDIO_WORD_16,
76 .audio_rate = 48000,
77 .audio_bclk_div = 8,
78 .audio_main_div = 2,
79 .hpi_buffer_cap = 7,
80 .num_inputs = 1,
81 .inputs = {
82 {
83 .name = "SAA7134",
84 },
85 },
86};
87
88/********************* Driver for GPIO HPI interface *********************/
89
90static int gpio_write(struct saa7134_dev *dev, u8 addr, u16 data)
91{
92 saa_writeb(SAA7134_GPIO_GPMODE0, 0xff);
93
94 /* Write HPI address */
95 saa_writeb(SAA7134_GPIO_GPSTATUS0, addr);
96 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_ADDR);
97 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
98
99 /* Write low byte */
100 saa_writeb(SAA7134_GPIO_GPSTATUS0, data & 0xff);
101 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_WRITE);
102 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
103
104 /* Write high byte */
105 saa_writeb(SAA7134_GPIO_GPSTATUS0, data >> 8);
106 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_WRITE);
107 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
108
109 return 0;
110}
111
112static int gpio_read(struct saa7134_dev *dev, u8 addr, u16 *data)
113{
114 saa_writeb(SAA7134_GPIO_GPMODE0, 0xff);
115
116 /* Write HPI address */
117 saa_writeb(SAA7134_GPIO_GPSTATUS0, addr);
118 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_ADDR);
119 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
120
121 saa_writeb(SAA7134_GPIO_GPMODE0, 0x00);
122
123 /* Read low byte */
124 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_READ);
125 saa_clearb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
126 saa_setb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
127 *data = saa_readb(SAA7134_GPIO_GPSTATUS0);
128 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
129
130 /* Read high byte */
131 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_READ);
132 saa_clearb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
133 saa_setb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
134 *data |= saa_readb(SAA7134_GPIO_GPSTATUS0) << 8;
135 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
136
137 return 0;
138}
139
140static int saa7134_go7007_interface_reset(struct go7007 *go)
141{
142 struct saa7134_go7007 *saa = go->hpi_context;
143 struct saa7134_dev *dev = saa->dev;
144 u32 status;
145 u16 intr_val, intr_data;
146 int count = 20;
147
148 saa_clearb(SAA7134_TS_PARALLEL, 0x80); /* Disable TS interface */
149 saa_writeb(SAA7134_GPIO_GPMODE2, 0xa4);
150 saa_writeb(SAA7134_GPIO_GPMODE0, 0xff);
151
152 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_REQ1);
153 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_RESET);
154 msleep(1);
155 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_REQ1);
156 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_REQ2);
157 msleep(10);
158
159 saa_clearb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
160 saa_setb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
161
162 status = saa_readb(SAA7134_GPIO_GPSTATUS2);
163 /*printk(KERN_DEBUG "status is %s\n", status & 0x40 ? "OK" : "not OK"); */
164
165 /* enter command mode...(?) */
166 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_REQ1);
167 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_REQ2);
168
169 do {
170 saa_clearb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
171 saa_setb(SAA7134_GPIO_GPMODE3, SAA7134_GPIO_GPRESCAN);
172 status = saa_readb(SAA7134_GPIO_GPSTATUS2);
173 /*printk(KERN_INFO "gpio is %08x\n", saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2)); */
174 } while (--count > 0);
175
176 /* Wait for an interrupt to indicate successful hardware reset */
177 if (go7007_read_interrupt(go, &intr_val, &intr_data) < 0 ||
178 (intr_val & ~0x1) != 0x55aa) {
179 printk(KERN_ERR
180 "saa7134-go7007: unable to reset the GO7007\n");
181 return -1;
182 }
183 return 0;
184}
185
186static int saa7134_go7007_write_interrupt(struct go7007 *go, int addr, int data)
187{
188 struct saa7134_go7007 *saa = go->hpi_context;
189 struct saa7134_dev *dev = saa->dev;
190 int i;
191 u16 status_reg;
192
193#ifdef GO7007_HPI_DEBUG
194 printk(KERN_DEBUG
195 "saa7134-go7007: WriteInterrupt: %04x %04x\n", addr, data);
196#endif
197
198 for (i = 0; i < 100; ++i) {
199 gpio_read(dev, HPI_ADDR_INTR_STATUS, &status_reg);
200 if (!(status_reg & 0x0010))
201 break;
202 msleep(10);
203 }
204 if (i == 100) {
205 printk(KERN_ERR
206 "saa7134-go7007: device is hung, status reg = 0x%04x\n",
207 status_reg);
208 return -1;
209 }
210 gpio_write(dev, HPI_ADDR_INTR_WR_PARAM, data);
211 gpio_write(dev, HPI_ADDR_INTR_WR_INDEX, addr);
212
213 return 0;
214}
215
216static int saa7134_go7007_read_interrupt(struct go7007 *go)
217{
218 struct saa7134_go7007 *saa = go->hpi_context;
219 struct saa7134_dev *dev = saa->dev;
220
221 /* XXX we need to wait if there is no interrupt available */
222 go->interrupt_available = 1;
223 gpio_read(dev, HPI_ADDR_INTR_RET_VALUE, &go->interrupt_value);
224 gpio_read(dev, HPI_ADDR_INTR_RET_DATA, &go->interrupt_data);
225#ifdef GO7007_HPI_DEBUG
226 printk(KERN_DEBUG "saa7134-go7007: ReadInterrupt: %04x %04x\n",
227 go->interrupt_value, go->interrupt_data);
228#endif
229 return 0;
230}
231
232static void saa7134_go7007_irq_ts_done(struct saa7134_dev *dev,
233 unsigned long status)
234{
235 struct go7007 *go = video_get_drvdata(dev->empress_dev);
236 struct saa7134_go7007 *saa = go->hpi_context;
237
238 if (!go->streaming)
239 return;
240 if (0 != (status & 0x000f0000))
241 printk(KERN_DEBUG "saa7134-go7007: irq: lost %ld\n",
242 (status >> 16) & 0x0f);
243 if (status & 0x100000) {
244 dma_sync_single(&dev->pci->dev,
245 saa->bottom_dma, PAGE_SIZE, DMA_FROM_DEVICE);
246 go7007_parse_video_stream(go, saa->bottom, PAGE_SIZE);
247 saa_writel(SAA7134_RS_BA2(5), cpu_to_le32(saa->bottom_dma));
248 } else {
249 dma_sync_single(&dev->pci->dev,
250 saa->top_dma, PAGE_SIZE, DMA_FROM_DEVICE);
251 go7007_parse_video_stream(go, saa->top, PAGE_SIZE);
252 saa_writel(SAA7134_RS_BA1(5), cpu_to_le32(saa->top_dma));
253 }
254}
255
256static int saa7134_go7007_stream_start(struct go7007 *go)
257{
258 struct saa7134_go7007 *saa = go->hpi_context;
259 struct saa7134_dev *dev = saa->dev;
260
261 saa->top_dma = dma_map_page(&dev->pci->dev, virt_to_page(saa->top),
262 0, PAGE_SIZE, DMA_FROM_DEVICE);
263 if (!saa->top_dma)
264 return -ENOMEM;
265 saa->bottom_dma = dma_map_page(&dev->pci->dev,
266 virt_to_page(saa->bottom),
267 0, PAGE_SIZE, DMA_FROM_DEVICE);
268 if (!saa->bottom_dma) {
269 dma_unmap_page(&dev->pci->dev, saa->top_dma, PAGE_SIZE,
270 DMA_FROM_DEVICE);
271 return -ENOMEM;
272 }
273
274 saa_writel(SAA7134_VIDEO_PORT_CTRL0 >> 2, 0xA300B000);
275 saa_writel(SAA7134_VIDEO_PORT_CTRL4 >> 2, 0x40000200);
276
277 /* Set HPI interface for video */
278 saa_writeb(SAA7134_GPIO_GPMODE0, 0xff);
279 saa_writeb(SAA7134_GPIO_GPSTATUS0, HPI_ADDR_VIDEO_BUFFER);
280 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_ADDR);
281 saa_writeb(SAA7134_GPIO_GPMODE0, 0x00);
282
283 /* Enable TS interface */
284 saa_writeb(SAA7134_TS_PARALLEL, 0xe6);
285
286 /* Reset TS interface */
287 saa_setb(SAA7134_TS_SERIAL1, 0x01);
288 saa_clearb(SAA7134_TS_SERIAL1, 0x01);
289
290 /* Set up transfer block size */
291 saa_writeb(SAA7134_TS_PARALLEL_SERIAL, 128 - 1);
292 saa_writeb(SAA7134_TS_DMA0, (PAGE_SIZE >> 7) - 1);
293 saa_writeb(SAA7134_TS_DMA1, 0);
294 saa_writeb(SAA7134_TS_DMA2, 0);
295
296 /* Enable video streaming mode */
297 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_VIDEO);
298
299 saa_writel(SAA7134_RS_BA1(5), cpu_to_le32(saa->top_dma));
300 saa_writel(SAA7134_RS_BA2(5), cpu_to_le32(saa->bottom_dma));
301 saa_writel(SAA7134_RS_PITCH(5), 128);
302 saa_writel(SAA7134_RS_CONTROL(5), SAA7134_RS_CONTROL_BURST_MAX);
303
304 /* Enable TS FIFO */
305 saa_setl(SAA7134_MAIN_CTRL, SAA7134_MAIN_CTRL_TE5);
306
307 /* Enable DMA IRQ */
308 saa_setl(SAA7134_IRQ1,
309 SAA7134_IRQ1_INTE_RA2_1 | SAA7134_IRQ1_INTE_RA2_0);
310
311 return 0;
312}
313
314static int saa7134_go7007_stream_stop(struct go7007 *go)
315{
316 struct saa7134_go7007 *saa = go->hpi_context;
317 struct saa7134_dev *dev = saa->dev;
318
319 /* Shut down TS FIFO */
320 saa_clearl(SAA7134_MAIN_CTRL, SAA7134_MAIN_CTRL_TE5);
321
322 /* Disable DMA IRQ */
323 saa_clearl(SAA7134_IRQ1,
324 SAA7134_IRQ1_INTE_RA2_1 | SAA7134_IRQ1_INTE_RA2_0);
325
326 /* Disable TS interface */
327 saa_clearb(SAA7134_TS_PARALLEL, 0x80);
328
329 dma_unmap_page(&dev->pci->dev, saa->top_dma, PAGE_SIZE,
330 DMA_FROM_DEVICE);
331 dma_unmap_page(&dev->pci->dev, saa->bottom_dma, PAGE_SIZE,
332 DMA_FROM_DEVICE);
333
334 return 0;
335}
336
337static int saa7134_go7007_send_firmware(struct go7007 *go, u8 *data, int len)
338{
339 struct saa7134_go7007 *saa = go->hpi_context;
340 struct saa7134_dev *dev = saa->dev;
341 u16 status_reg;
342 int i;
343
344#ifdef GO7007_HPI_DEBUG
345 printk(KERN_DEBUG "saa7134-go7007: DownloadBuffer "
346 "sending %d bytes\n", len);
347#endif
348
349 while (len > 0) {
350 i = len > 64 ? 64 : len;
351 saa_writeb(SAA7134_GPIO_GPMODE0, 0xff);
352 saa_writeb(SAA7134_GPIO_GPSTATUS0, HPI_ADDR_INIT_BUFFER);
353 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_ADDR);
354 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
355 while (i-- > 0) {
356 saa_writeb(SAA7134_GPIO_GPSTATUS0, *data);
357 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_WRITE);
358 saa_writeb(SAA7134_GPIO_GPSTATUS2, GPIO_COMMAND_IDLE);
359 ++data;
360 --len;
361 }
362 for (i = 0; i < 100; ++i) {
363 gpio_read(dev, HPI_ADDR_INTR_STATUS, &status_reg);
364 if (!(status_reg & 0x0002))
365 break;
366 }
367 if (i == 100) {
368 printk(KERN_ERR "saa7134-go7007: device is hung, "
369 "status reg = 0x%04x\n", status_reg);
370 return -1;
371 }
372 }
373 return 0;
374}
375
376static struct go7007_hpi_ops saa7134_go7007_hpi_ops = {
377 .interface_reset = saa7134_go7007_interface_reset,
378 .write_interrupt = saa7134_go7007_write_interrupt,
379 .read_interrupt = saa7134_go7007_read_interrupt,
380 .stream_start = saa7134_go7007_stream_start,
381 .stream_stop = saa7134_go7007_stream_stop,
382 .send_firmware = saa7134_go7007_send_firmware,
383};
384
385/********************* Add/remove functions *********************/
386
387static int saa7134_go7007_init(struct saa7134_dev *dev)
388{
389 struct go7007 *go;
390 struct saa7134_go7007 *saa;
391
392 printk(KERN_DEBUG "saa7134-go7007: probing new SAA713X board\n");
393
394 saa = kmalloc(sizeof(struct saa7134_go7007), GFP_KERNEL);
395 if (saa == NULL)
396 return -ENOMEM;
397 memset(saa, 0, sizeof(struct saa7134_go7007));
398
399 /* Allocate a couple pages for receiving the compressed stream */
400 saa->top = (u8 *)get_zeroed_page(GFP_KERNEL);
401 if (!saa->top)
402 goto allocfail;
403 saa->bottom = (u8 *)get_zeroed_page(GFP_KERNEL);
404 if (!saa->bottom)
405 goto allocfail;
406
407 go = go7007_alloc(&board_voyager, &dev->pci->dev);
408 if (go == NULL)
409 goto allocfail;
410 go->board_id = GO7007_BOARDID_PCI_VOYAGER;
411 strncpy(go->name, saa7134_boards[dev->board].name, sizeof(go->name));
412 go->hpi_ops = &saa7134_go7007_hpi_ops;
413 go->hpi_context = saa;
414 saa->dev = dev;
415
416 /* Boot the GO7007 */
417 if (go7007_boot_encoder(go, go->board_info->flags &
418 GO7007_BOARD_USE_ONBOARD_I2C) < 0)
419 goto initfail;
420
421 /* Do any final GO7007 initialization, then register the
422 * V4L2 and ALSA interfaces */
423 if (go7007_register_encoder(go) < 0)
424 goto initfail;
425 dev->empress_dev = go->video_dev;
426 video_set_drvdata(dev->empress_dev, go);
427
428 go->status = STATUS_ONLINE;
429 return 0;
430
431initfail:
432 go->status = STATUS_SHUTDOWN;
433 return 0;
434
435allocfail:
436 if (saa->top)
437 free_page((unsigned long)saa->top);
438 if (saa->bottom)
439 free_page((unsigned long)saa->bottom);
440 kfree(saa);
441 return -ENOMEM;
442}
443
444static int saa7134_go7007_fini(struct saa7134_dev *dev)
445{
446 struct go7007 *go;
447 struct saa7134_go7007 *saa;
448
449 if (NULL == dev->empress_dev)
450 return 0;
451
452 go = video_get_drvdata(dev->empress_dev);
453 saa = go->hpi_context;
454 go->status = STATUS_SHUTDOWN;
455 free_page((unsigned long)saa->top);
456 free_page((unsigned long)saa->bottom);
457 kfree(saa);
458 go7007_remove(go);
459 dev->empress_dev = NULL;
460
461 return 0;
462}
463
464static struct saa7134_mpeg_ops saa7134_go7007_ops = {
465 .type = SAA7134_MPEG_GO7007,
466 .init = saa7134_go7007_init,
467 .fini = saa7134_go7007_fini,
468 .irq_ts_done = saa7134_go7007_irq_ts_done,
469};
470
471static int __init saa7134_go7007_mod_init(void)
472{
473 return saa7134_ts_register(&saa7134_go7007_ops);
474}
475
476static void __exit saa7134_go7007_mod_cleanup(void)
477{
478 saa7134_ts_unregister(&saa7134_go7007_ops);
479}
480
481module_init(saa7134_go7007_mod_init);
482module_exit(saa7134_go7007_mod_cleanup);
483
484MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/snd-go7007.c b/drivers/staging/go7007/snd-go7007.c
new file mode 100644
index 00000000000..382740c405f
--- /dev/null
+++ b/drivers/staging/go7007/snd-go7007.c
@@ -0,0 +1,305 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/kernel.h>
19#include <linux/module.h>
20#include <linux/version.h>
21#include <linux/moduleparam.h>
22#include <linux/init.h>
23#include <linux/spinlock.h>
24#include <linux/delay.h>
25#include <linux/sched.h>
26#include <linux/vmalloc.h>
27#include <linux/time.h>
28#include <linux/mm.h>
29#include <linux/i2c.h>
30#include <linux/semaphore.h>
31#include <linux/uaccess.h>
32#include <asm/system.h>
33#include <sound/core.h>
34#include <sound/pcm.h>
35#include <sound/initval.h>
36
37#include "go7007-priv.h"
38
39static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
40static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
41static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
42
43module_param_array(index, int, NULL, 0444);
44module_param_array(id, charp, NULL, 0444);
45module_param_array(enable, bool, NULL, 0444);
46MODULE_PARM_DESC(index, "Index value for the go7007 audio driver");
47MODULE_PARM_DESC(id, "ID string for the go7007 audio driver");
48MODULE_PARM_DESC(enable, "Enable for the go7007 audio driver");
49
50struct go7007_snd {
51 struct snd_card *card;
52 struct snd_pcm *pcm;
53 struct snd_pcm_substream *substream;
54 spinlock_t lock;
55 int w_idx;
56 int hw_ptr;
57 int avail;
58 int capturing;
59};
60
61static struct snd_pcm_hardware go7007_snd_capture_hw = {
62 .info = (SNDRV_PCM_INFO_MMAP |
63 SNDRV_PCM_INFO_INTERLEAVED |
64 SNDRV_PCM_INFO_BLOCK_TRANSFER |
65 SNDRV_PCM_INFO_MMAP_VALID),
66 .formats = SNDRV_PCM_FMTBIT_S16_LE,
67 .rates = SNDRV_PCM_RATE_48000,
68 .rate_min = 48000,
69 .rate_max = 48000,
70 .channels_min = 2,
71 .channels_max = 2,
72 .buffer_bytes_max = (128*1024),
73 .period_bytes_min = 4096,
74 .period_bytes_max = (128*1024),
75 .periods_min = 1,
76 .periods_max = 32,
77};
78
79static void parse_audio_stream_data(struct go7007 *go, u8 *buf, int length)
80{
81 struct go7007_snd *gosnd = go->snd_context;
82 struct snd_pcm_runtime *runtime = gosnd->substream->runtime;
83 int frames = bytes_to_frames(runtime, length);
84
85 spin_lock(&gosnd->lock);
86 gosnd->hw_ptr += frames;
87 if (gosnd->hw_ptr >= runtime->buffer_size)
88 gosnd->hw_ptr -= runtime->buffer_size;
89 gosnd->avail += frames;
90 spin_unlock(&gosnd->lock);
91 if (gosnd->w_idx + length > runtime->dma_bytes) {
92 int cpy = runtime->dma_bytes - gosnd->w_idx;
93
94 memcpy(runtime->dma_area + gosnd->w_idx, buf, cpy);
95 length -= cpy;
96 buf += cpy;
97 gosnd->w_idx = 0;
98 }
99 memcpy(runtime->dma_area + gosnd->w_idx, buf, length);
100 gosnd->w_idx += length;
101 spin_lock(&gosnd->lock);
102 if (gosnd->avail < runtime->period_size) {
103 spin_unlock(&gosnd->lock);
104 return;
105 }
106 gosnd->avail -= runtime->period_size;
107 spin_unlock(&gosnd->lock);
108 if (gosnd->capturing)
109 snd_pcm_period_elapsed(gosnd->substream);
110}
111
112static int go7007_snd_hw_params(struct snd_pcm_substream *substream,
113 struct snd_pcm_hw_params *hw_params)
114{
115 struct go7007 *go = snd_pcm_substream_chip(substream);
116 unsigned int bytes;
117
118 bytes = params_buffer_bytes(hw_params);
119 if (substream->runtime->dma_bytes > 0)
120 vfree(substream->runtime->dma_area);
121 substream->runtime->dma_bytes = 0;
122 substream->runtime->dma_area = vmalloc(bytes);
123 if (substream->runtime->dma_area == NULL)
124 return -ENOMEM;
125 substream->runtime->dma_bytes = bytes;
126 go->audio_deliver = parse_audio_stream_data;
127 return 0;
128}
129
130static int go7007_snd_hw_free(struct snd_pcm_substream *substream)
131{
132 struct go7007 *go = snd_pcm_substream_chip(substream);
133
134 go->audio_deliver = NULL;
135 if (substream->runtime->dma_bytes > 0)
136 vfree(substream->runtime->dma_area);
137 substream->runtime->dma_bytes = 0;
138 return 0;
139}
140
141static int go7007_snd_capture_open(struct snd_pcm_substream *substream)
142{
143 struct go7007 *go = snd_pcm_substream_chip(substream);
144 struct go7007_snd *gosnd = go->snd_context;
145 unsigned long flags;
146 int r;
147
148 spin_lock_irqsave(&gosnd->lock, flags);
149 if (gosnd->substream == NULL) {
150 gosnd->substream = substream;
151 substream->runtime->hw = go7007_snd_capture_hw;
152 r = 0;
153 } else
154 r = -EBUSY;
155 spin_unlock_irqrestore(&gosnd->lock, flags);
156 return r;
157}
158
159static int go7007_snd_capture_close(struct snd_pcm_substream *substream)
160{
161 struct go7007 *go = snd_pcm_substream_chip(substream);
162 struct go7007_snd *gosnd = go->snd_context;
163
164 gosnd->substream = NULL;
165 return 0;
166}
167
168static int go7007_snd_pcm_prepare(struct snd_pcm_substream *substream)
169{
170 return 0;
171}
172
173static int go7007_snd_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
174{
175 struct go7007 *go = snd_pcm_substream_chip(substream);
176 struct go7007_snd *gosnd = go->snd_context;
177
178 switch (cmd) {
179 case SNDRV_PCM_TRIGGER_START:
180 /* Just set a flag to indicate we should signal ALSA when
181 * sound comes in */
182 gosnd->capturing = 1;
183 return 0;
184 case SNDRV_PCM_TRIGGER_STOP:
185 gosnd->hw_ptr = gosnd->w_idx = gosnd->avail = 0;
186 gosnd->capturing = 0;
187 return 0;
188 default:
189 return -EINVAL;
190 }
191}
192
193static snd_pcm_uframes_t go7007_snd_pcm_pointer(struct snd_pcm_substream *substream)
194{
195 struct go7007 *go = snd_pcm_substream_chip(substream);
196 struct go7007_snd *gosnd = go->snd_context;
197
198 return gosnd->hw_ptr;
199}
200
201static struct page *go7007_snd_pcm_page(struct snd_pcm_substream *substream,
202 unsigned long offset)
203{
204 return vmalloc_to_page(substream->runtime->dma_area + offset);
205}
206
207static struct snd_pcm_ops go7007_snd_capture_ops = {
208 .open = go7007_snd_capture_open,
209 .close = go7007_snd_capture_close,
210 .ioctl = snd_pcm_lib_ioctl,
211 .hw_params = go7007_snd_hw_params,
212 .hw_free = go7007_snd_hw_free,
213 .prepare = go7007_snd_pcm_prepare,
214 .trigger = go7007_snd_pcm_trigger,
215 .pointer = go7007_snd_pcm_pointer,
216 .page = go7007_snd_pcm_page,
217};
218
219static int go7007_snd_free(struct snd_device *device)
220{
221 struct go7007 *go = device->device_data;
222
223 kfree(go->snd_context);
224 go->snd_context = NULL;
225 if (--go->ref_count == 0)
226 kfree(go);
227 return 0;
228}
229
230static struct snd_device_ops go7007_snd_device_ops = {
231 .dev_free = go7007_snd_free,
232};
233
234int go7007_snd_init(struct go7007 *go)
235{
236 static int dev;
237 struct go7007_snd *gosnd;
238 int ret = 0;
239
240 if (dev >= SNDRV_CARDS)
241 return -ENODEV;
242 if (!enable[dev]) {
243 dev++;
244 return -ENOENT;
245 }
246 gosnd = kmalloc(sizeof(struct go7007_snd), GFP_KERNEL);
247 if (gosnd == NULL)
248 return -ENOMEM;
249 spin_lock_init(&gosnd->lock);
250 gosnd->hw_ptr = gosnd->w_idx = gosnd->avail = 0;
251 gosnd->capturing = 0;
252 gosnd->card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
253 if (gosnd->card == NULL) {
254 kfree(gosnd);
255 return -ENOMEM;
256 }
257 ret = snd_device_new(gosnd->card, SNDRV_DEV_LOWLEVEL, go,
258 &go7007_snd_device_ops);
259 if (ret < 0) {
260 kfree(gosnd);
261 return ret;
262 }
263 snd_card_set_dev(gosnd->card, go->dev);
264 ret = snd_pcm_new(gosnd->card, "go7007", 0, 0, 1, &gosnd->pcm);
265 if (ret < 0) {
266 snd_card_free(gosnd->card);
267 kfree(gosnd);
268 return ret;
269 }
270 strncpy(gosnd->card->driver, "go7007", sizeof(gosnd->card->driver));
271 strncpy(gosnd->card->shortname, go->name, sizeof(gosnd->card->driver));
272 strncpy(gosnd->card->longname, gosnd->card->shortname,
273 sizeof(gosnd->card->longname));
274
275 gosnd->pcm->private_data = go;
276 snd_pcm_set_ops(gosnd->pcm, SNDRV_PCM_STREAM_CAPTURE,
277 &go7007_snd_capture_ops);
278
279 ret = snd_card_register(gosnd->card);
280 if (ret < 0) {
281 snd_card_free(gosnd->card);
282 kfree(gosnd);
283 return ret;
284 }
285
286 gosnd->substream = NULL;
287 go->snd_context = gosnd;
288 ++dev;
289 ++go->ref_count;
290
291 return 0;
292}
293EXPORT_SYMBOL(go7007_snd_init);
294
295int go7007_snd_remove(struct go7007 *go)
296{
297 struct go7007_snd *gosnd = go->snd_context;
298
299 snd_card_disconnect(gosnd->card);
300 snd_card_free_when_closed(gosnd->card);
301 return 0;
302}
303EXPORT_SYMBOL(go7007_snd_remove);
304
305MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-i2c.h b/drivers/staging/go7007/wis-i2c.h
new file mode 100644
index 00000000000..993f658ad73
--- /dev/null
+++ b/drivers/staging/go7007/wis-i2c.h
@@ -0,0 +1,55 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18/* Temporary I2C IDs -- these need to be replaced with real registered IDs */
19#define I2C_DRIVERID_WIS_SAA7115 0xf0f0
20#define I2C_DRIVERID_WIS_UDA1342 0xf0f1
21#define I2C_DRIVERID_WIS_SONY_TUNER 0xf0f2
22#define I2C_DRIVERID_WIS_TW9903 0xf0f3
23#define I2C_DRIVERID_WIS_SAA7113 0xf0f4
24#define I2C_DRIVERID_WIS_OV7640 0xf0f5
25#define I2C_DRIVERID_WIS_TW2804 0xf0f6
26#define I2C_ALGO_GO7007 0xf00000
27#define I2C_ALGO_GO7007_USB 0xf10000
28
29/* Flag to indicate that the client needs to be accessed with SCCB semantics */
30/* We re-use the I2C_M_TEN value so the flag passes through the masks in the
31 * core I2C code. Major kludge, but the I2C layer ain't exactly flexible. */
32#define I2C_CLIENT_SCCB 0x10
33
34typedef int (*found_proc) (struct i2c_adapter *, int, int);
35int wis_i2c_add_driver(unsigned int id, found_proc found_proc);
36void wis_i2c_del_driver(found_proc found_proc);
37
38int wis_i2c_probe_device(struct i2c_adapter *adapter,
39 unsigned int id, int addr);
40
41/* Definitions for new video decoder commands */
42
43struct video_decoder_resolution {
44 unsigned int width;
45 unsigned int height;
46};
47
48#define DECODER_SET_RESOLUTION _IOW('d', 200, struct video_decoder_resolution)
49#define DECODER_SET_CHANNEL _IOW('d', 201, int)
50
51/* Sony tuner types */
52
53#define TUNER_SONY_BTF_PG472Z 200
54#define TUNER_SONY_BTF_PK467Z 201
55#define TUNER_SONY_BTF_PB463Z 202
diff --git a/drivers/staging/go7007/wis-ov7640.c b/drivers/staging/go7007/wis-ov7640.c
new file mode 100644
index 00000000000..f5f11e927af
--- /dev/null
+++ b/drivers/staging/go7007/wis-ov7640.c
@@ -0,0 +1,130 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23
24#include "wis-i2c.h"
25
26struct wis_ov7640 {
27 int brightness;
28 int contrast;
29 int saturation;
30 int hue;
31};
32
33static u8 initial_registers[] =
34{
35 0x12, 0x80,
36 0x12, 0x54,
37 0x14, 0x24,
38 0x15, 0x01,
39 0x28, 0x20,
40 0x75, 0x82,
41 0xFF, 0xFF, /* Terminator (reg 0xFF is unused) */
42};
43
44static int write_regs(struct i2c_client *client, u8 *regs)
45{
46 int i;
47
48 for (i = 0; regs[i] != 0xFF; i += 2)
49 if (i2c_smbus_write_byte_data(client, regs[i], regs[i + 1]) < 0)
50 return -1;
51 return 0;
52}
53
54static struct i2c_driver wis_ov7640_driver;
55
56static struct i2c_client wis_ov7640_client_templ = {
57 .name = "OV7640 (WIS)",
58 .driver = &wis_ov7640_driver,
59};
60
61static int wis_ov7640_detect(struct i2c_adapter *adapter, int addr, int kind)
62{
63 struct i2c_client *client;
64
65 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
66 return 0;
67
68 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
69 if (client == NULL)
70 return -ENOMEM;
71 memcpy(client, &wis_ov7640_client_templ,
72 sizeof(wis_ov7640_client_templ));
73 client->adapter = adapter;
74 client->addr = addr;
75 client->flags = I2C_CLIENT_SCCB;
76
77 printk(KERN_DEBUG
78 "wis-ov7640: initializing OV7640 at address %d on %s\n",
79 addr, adapter->name);
80
81 if (write_regs(client, initial_registers) < 0) {
82 printk(KERN_ERR "wis-ov7640: error initializing OV7640\n");
83 kfree(client);
84 return 0;
85 }
86
87 i2c_attach_client(client);
88 return 0;
89}
90
91static int wis_ov7640_detach(struct i2c_client *client)
92{
93 int r;
94
95 r = i2c_detach_client(client);
96 if (r < 0)
97 return r;
98
99 kfree(client);
100 return 0;
101}
102
103static struct i2c_driver wis_ov7640_driver = {
104 .driver = {
105 .name = "WIS OV7640 I2C driver",
106 },
107 .id = I2C_DRIVERID_WIS_OV7640,
108 .detach_client = wis_ov7640_detach,
109};
110
111static int __init wis_ov7640_init(void)
112{
113 int r;
114
115 r = i2c_add_driver(&wis_ov7640_driver);
116 if (r < 0)
117 return r;
118 return wis_i2c_add_driver(wis_ov7640_driver.id, wis_ov7640_detect);
119}
120
121static void __exit wis_ov7640_cleanup(void)
122{
123 wis_i2c_del_driver(wis_ov7640_detect);
124 i2c_del_driver(&wis_ov7640_driver);
125}
126
127module_init(wis_ov7640_init);
128module_exit(wis_ov7640_cleanup);
129
130MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-saa7113.c b/drivers/staging/go7007/wis-saa7113.c
new file mode 100644
index 00000000000..c1aff1b923a
--- /dev/null
+++ b/drivers/staging/go7007/wis-saa7113.c
@@ -0,0 +1,358 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23#include <linux/ioctl.h>
24
25#include "wis-i2c.h"
26
27struct wis_saa7113 {
28 int norm;
29 int brightness;
30 int contrast;
31 int saturation;
32 int hue;
33};
34
35static u8 initial_registers[] =
36{
37 0x01, 0x08,
38 0x02, 0xc0,
39 0x03, 0x33,
40 0x04, 0x00,
41 0x05, 0x00,
42 0x06, 0xe9,
43 0x07, 0x0d,
44 0x08, 0xd8,
45 0x09, 0x40,
46 0x0a, 0x80,
47 0x0b, 0x47,
48 0x0c, 0x40,
49 0x0d, 0x00,
50 0x0e, 0x01,
51 0x0f, 0x2a,
52 0x10, 0x40,
53 0x11, 0x0c,
54 0x12, 0xfe,
55 0x13, 0x00,
56 0x14, 0x00,
57 0x15, 0x04,
58 0x16, 0x00,
59 0x17, 0x00,
60 0x18, 0x00,
61 0x19, 0x00,
62 0x1a, 0x00,
63 0x1b, 0x00,
64 0x1c, 0x00,
65 0x1d, 0x00,
66 0x1e, 0x00,
67 0x1f, 0xc8,
68 0x40, 0x00,
69 0x41, 0xff,
70 0x42, 0xff,
71 0x43, 0xff,
72 0x44, 0xff,
73 0x45, 0xff,
74 0x46, 0xff,
75 0x47, 0xff,
76 0x48, 0xff,
77 0x49, 0xff,
78 0x4a, 0xff,
79 0x4b, 0xff,
80 0x4c, 0xff,
81 0x4d, 0xff,
82 0x4e, 0xff,
83 0x4f, 0xff,
84 0x50, 0xff,
85 0x51, 0xff,
86 0x52, 0xff,
87 0x53, 0xff,
88 0x54, 0xff,
89 0x55, 0xff,
90 0x56, 0xff,
91 0x57, 0xff,
92 0x58, 0x00,
93 0x59, 0x54,
94 0x5a, 0x07,
95 0x5b, 0x83,
96 0x5c, 0x00,
97 0x5d, 0x00,
98 0x5e, 0x00,
99 0x5f, 0x00,
100 0x60, 0x00,
101 0x61, 0x00,
102 0x00, 0x00, /* Terminator (reg 0x00 is read-only) */
103};
104
105static int write_reg(struct i2c_client *client, u8 reg, u8 value)
106{
107 return i2c_smbus_write_byte_data(client, reg, value);
108}
109
110static int write_regs(struct i2c_client *client, u8 *regs)
111{
112 int i;
113
114 for (i = 0; regs[i] != 0x00; i += 2)
115 if (i2c_smbus_write_byte_data(client, regs[i], regs[i + 1]) < 0)
116 return -1;
117 return 0;
118}
119
120static int wis_saa7113_command(struct i2c_client *client,
121 unsigned int cmd, void *arg)
122{
123 struct wis_saa7113 *dec = i2c_get_clientdata(client);
124
125 switch (cmd) {
126 case VIDIOC_S_INPUT:
127 {
128 int *input = arg;
129
130 i2c_smbus_write_byte_data(client, 0x02, 0xC0 | *input);
131 i2c_smbus_write_byte_data(client, 0x09,
132 *input < 6 ? 0x40 : 0x80);
133 break;
134 }
135 case VIDIOC_S_STD:
136 {
137 v4l2_std_id *input = arg;
138 dec->norm = *input;
139 if (dec->norm & V4L2_STD_NTSC) {
140 write_reg(client, 0x0e, 0x01);
141 write_reg(client, 0x10, 0x40);
142 } else if (dec->norm & V4L2_STD_PAL) {
143 write_reg(client, 0x0e, 0x01);
144 write_reg(client, 0x10, 0x48);
145 } else if (dec->norm * V4L2_STD_SECAM) {
146 write_reg(client, 0x0e, 0x50);
147 write_reg(client, 0x10, 0x48);
148 }
149 break;
150 }
151 case VIDIOC_QUERYCTRL:
152 {
153 struct v4l2_queryctrl *ctrl = arg;
154
155 switch (ctrl->id) {
156 case V4L2_CID_BRIGHTNESS:
157 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
158 strncpy(ctrl->name, "Brightness", sizeof(ctrl->name));
159 ctrl->minimum = 0;
160 ctrl->maximum = 255;
161 ctrl->step = 1;
162 ctrl->default_value = 128;
163 ctrl->flags = 0;
164 break;
165 case V4L2_CID_CONTRAST:
166 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
167 strncpy(ctrl->name, "Contrast", sizeof(ctrl->name));
168 ctrl->minimum = 0;
169 ctrl->maximum = 127;
170 ctrl->step = 1;
171 ctrl->default_value = 71;
172 ctrl->flags = 0;
173 break;
174 case V4L2_CID_SATURATION:
175 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
176 strncpy(ctrl->name, "Saturation", sizeof(ctrl->name));
177 ctrl->minimum = 0;
178 ctrl->maximum = 127;
179 ctrl->step = 1;
180 ctrl->default_value = 64;
181 ctrl->flags = 0;
182 break;
183 case V4L2_CID_HUE:
184 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
185 strncpy(ctrl->name, "Hue", sizeof(ctrl->name));
186 ctrl->minimum = -128;
187 ctrl->maximum = 127;
188 ctrl->step = 1;
189 ctrl->default_value = 0;
190 ctrl->flags = 0;
191 break;
192 }
193 break;
194 }
195 case VIDIOC_S_CTRL:
196 {
197 struct v4l2_control *ctrl = arg;
198
199 switch (ctrl->id) {
200 case V4L2_CID_BRIGHTNESS:
201 if (ctrl->value > 255)
202 dec->brightness = 255;
203 else if (ctrl->value < 0)
204 dec->brightness = 0;
205 else
206 dec->brightness = ctrl->value;
207 write_reg(client, 0x0a, dec->brightness);
208 break;
209 case V4L2_CID_CONTRAST:
210 if (ctrl->value > 127)
211 dec->contrast = 127;
212 else if (ctrl->value < 0)
213 dec->contrast = 0;
214 else
215 dec->contrast = ctrl->value;
216 write_reg(client, 0x0b, dec->contrast);
217 break;
218 case V4L2_CID_SATURATION:
219 if (ctrl->value > 127)
220 dec->saturation = 127;
221 else if (ctrl->value < 0)
222 dec->saturation = 0;
223 else
224 dec->saturation = ctrl->value;
225 write_reg(client, 0x0c, dec->saturation);
226 break;
227 case V4L2_CID_HUE:
228 if (ctrl->value > 127)
229 dec->hue = 127;
230 else if (ctrl->value < -128)
231 dec->hue = -128;
232 else
233 dec->hue = ctrl->value;
234 write_reg(client, 0x0d, dec->hue);
235 break;
236 }
237 break;
238 }
239 case VIDIOC_G_CTRL:
240 {
241 struct v4l2_control *ctrl = arg;
242
243 switch (ctrl->id) {
244 case V4L2_CID_BRIGHTNESS:
245 ctrl->value = dec->brightness;
246 break;
247 case V4L2_CID_CONTRAST:
248 ctrl->value = dec->contrast;
249 break;
250 case V4L2_CID_SATURATION:
251 ctrl->value = dec->saturation;
252 break;
253 case V4L2_CID_HUE:
254 ctrl->value = dec->hue;
255 break;
256 }
257 break;
258 }
259 default:
260 break;
261 }
262 return 0;
263}
264
265static struct i2c_driver wis_saa7113_driver;
266
267static struct i2c_client wis_saa7113_client_templ = {
268 .name = "SAA7113 (WIS)",
269 .driver = &wis_saa7113_driver,
270};
271
272static int wis_saa7113_detect(struct i2c_adapter *adapter, int addr, int kind)
273{
274 struct i2c_client *client;
275 struct wis_saa7113 *dec;
276
277 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
278 return 0;
279
280 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
281 if (client == NULL)
282 return -ENOMEM;
283 memcpy(client, &wis_saa7113_client_templ,
284 sizeof(wis_saa7113_client_templ));
285 client->adapter = adapter;
286 client->addr = addr;
287
288 dec = kmalloc(sizeof(struct wis_saa7113), GFP_KERNEL);
289 if (dec == NULL) {
290 kfree(client);
291 return -ENOMEM;
292 }
293 dec->norm = V4L2_STD_NTSC;
294 dec->brightness = 128;
295 dec->contrast = 71;
296 dec->saturation = 64;
297 dec->hue = 0;
298 i2c_set_clientdata(client, dec);
299
300 printk(KERN_DEBUG
301 "wis-saa7113: initializing SAA7113 at address %d on %s\n",
302 addr, adapter->name);
303
304 if (write_regs(client, initial_registers) < 0) {
305 printk(KERN_ERR
306 "wis-saa7113: error initializing SAA7113\n");
307 kfree(client);
308 kfree(dec);
309 return 0;
310 }
311
312 i2c_attach_client(client);
313 return 0;
314}
315
316static int wis_saa7113_detach(struct i2c_client *client)
317{
318 struct wis_saa7113 *dec = i2c_get_clientdata(client);
319 int r;
320
321 r = i2c_detach_client(client);
322 if (r < 0)
323 return r;
324
325 kfree(client);
326 kfree(dec);
327 return 0;
328}
329
330static struct i2c_driver wis_saa7113_driver = {
331 .driver = {
332 .name = "WIS SAA7113 I2C driver",
333 },
334 .id = I2C_DRIVERID_WIS_SAA7113,
335 .detach_client = wis_saa7113_detach,
336 .command = wis_saa7113_command,
337};
338
339static int __init wis_saa7113_init(void)
340{
341 int r;
342
343 r = i2c_add_driver(&wis_saa7113_driver);
344 if (r < 0)
345 return r;
346 return wis_i2c_add_driver(wis_saa7113_driver.id, wis_saa7113_detect);
347}
348
349static void __exit wis_saa7113_cleanup(void)
350{
351 wis_i2c_del_driver(wis_saa7113_detect);
352 i2c_del_driver(&wis_saa7113_driver);
353}
354
355module_init(wis_saa7113_init);
356module_exit(wis_saa7113_cleanup);
357
358MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-saa7115.c b/drivers/staging/go7007/wis-saa7115.c
new file mode 100644
index 00000000000..5c94c883b31
--- /dev/null
+++ b/drivers/staging/go7007/wis-saa7115.c
@@ -0,0 +1,491 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23#include <linux/ioctl.h>
24
25#include "wis-i2c.h"
26
27struct wis_saa7115 {
28 int norm;
29 int brightness;
30 int contrast;
31 int saturation;
32 int hue;
33};
34
35static u8 initial_registers[] =
36{
37 0x01, 0x08,
38 0x02, 0xc0,
39 0x03, 0x20,
40 0x04, 0x80,
41 0x05, 0x80,
42 0x06, 0xeb,
43 0x07, 0xe0,
44 0x08, 0xf0, /* always toggle FID */
45 0x09, 0x40,
46 0x0a, 0x80,
47 0x0b, 0x40,
48 0x0c, 0x40,
49 0x0d, 0x00,
50 0x0e, 0x03,
51 0x0f, 0x2a,
52 0x10, 0x0e,
53 0x11, 0x00,
54 0x12, 0x8d,
55 0x13, 0x00,
56 0x14, 0x00,
57 0x15, 0x11,
58 0x16, 0x01,
59 0x17, 0xda,
60 0x18, 0x40,
61 0x19, 0x80,
62 0x1a, 0x00,
63 0x1b, 0x42,
64 0x1c, 0xa9,
65 0x30, 0x66,
66 0x31, 0x90,
67 0x32, 0x01,
68 0x34, 0x00,
69 0x35, 0x00,
70 0x36, 0x20,
71 0x38, 0x03,
72 0x39, 0x20,
73 0x3a, 0x88,
74 0x40, 0x00,
75 0x41, 0xff,
76 0x42, 0xff,
77 0x43, 0xff,
78 0x44, 0xff,
79 0x45, 0xff,
80 0x46, 0xff,
81 0x47, 0xff,
82 0x48, 0xff,
83 0x49, 0xff,
84 0x4a, 0xff,
85 0x4b, 0xff,
86 0x4c, 0xff,
87 0x4d, 0xff,
88 0x4e, 0xff,
89 0x4f, 0xff,
90 0x50, 0xff,
91 0x51, 0xff,
92 0x52, 0xff,
93 0x53, 0xff,
94 0x54, 0xf4 /*0xff*/,
95 0x55, 0xff,
96 0x56, 0xff,
97 0x57, 0xff,
98 0x58, 0x40,
99 0x59, 0x47,
100 0x5a, 0x06 /*0x03*/,
101 0x5b, 0x83,
102 0x5d, 0x06,
103 0x5e, 0x00,
104 0x80, 0x30, /* window defined scaler operation, task A and B enabled */
105 0x81, 0x03, /* use scaler datapath generated V */
106 0x83, 0x00,
107 0x84, 0x00,
108 0x85, 0x00,
109 0x86, 0x45,
110 0x87, 0x31,
111 0x88, 0xc0,
112 0x90, 0x02, /* task A process top field */
113 0x91, 0x08,
114 0x92, 0x09,
115 0x93, 0x80,
116 0x94, 0x06,
117 0x95, 0x00,
118 0x96, 0xc0,
119 0x97, 0x02,
120 0x98, 0x12,
121 0x99, 0x00,
122 0x9a, 0xf2,
123 0x9b, 0x00,
124 0x9c, 0xd0,
125 0x9d, 0x02,
126 0x9e, 0xf2,
127 0x9f, 0x00,
128 0xa0, 0x01,
129 0xa1, 0x01,
130 0xa2, 0x01,
131 0xa4, 0x80,
132 0xa5, 0x40,
133 0xa6, 0x40,
134 0xa8, 0x00,
135 0xa9, 0x04,
136 0xaa, 0x00,
137 0xac, 0x00,
138 0xad, 0x02,
139 0xae, 0x00,
140 0xb0, 0x00,
141 0xb1, 0x04,
142 0xb2, 0x00,
143 0xb3, 0x04,
144 0xb4, 0x00,
145 0xb8, 0x00,
146 0xbc, 0x00,
147 0xc0, 0x03, /* task B process bottom field */
148 0xc1, 0x08,
149 0xc2, 0x09,
150 0xc3, 0x80,
151 0xc4, 0x06,
152 0xc5, 0x00,
153 0xc6, 0xc0,
154 0xc7, 0x02,
155 0xc8, 0x12,
156 0xc9, 0x00,
157 0xca, 0xf2,
158 0xcb, 0x00,
159 0xcc, 0xd0,
160 0xcd, 0x02,
161 0xce, 0xf2,
162 0xcf, 0x00,
163 0xd0, 0x01,
164 0xd1, 0x01,
165 0xd2, 0x01,
166 0xd4, 0x80,
167 0xd5, 0x40,
168 0xd6, 0x40,
169 0xd8, 0x00,
170 0xd9, 0x04,
171 0xda, 0x00,
172 0xdc, 0x00,
173 0xdd, 0x02,
174 0xde, 0x00,
175 0xe0, 0x00,
176 0xe1, 0x04,
177 0xe2, 0x00,
178 0xe3, 0x04,
179 0xe4, 0x00,
180 0xe8, 0x00,
181 0x88, 0xf0, /* End of original static list */
182 0x00, 0x00, /* Terminator (reg 0x00 is read-only) */
183};
184
185static int write_reg(struct i2c_client *client, u8 reg, u8 value)
186{
187 return i2c_smbus_write_byte_data(client, reg, value);
188}
189
190static int write_regs(struct i2c_client *client, u8 *regs)
191{
192 int i;
193
194 for (i = 0; regs[i] != 0x00; i += 2)
195 if (i2c_smbus_write_byte_data(client, regs[i], regs[i + 1]) < 0)
196 return -1;
197 return 0;
198}
199
200static int wis_saa7115_command(struct i2c_client *client,
201 unsigned int cmd, void *arg)
202{
203 struct wis_saa7115 *dec = i2c_get_clientdata(client);
204
205 switch (cmd) {
206 case VIDIOC_S_INPUT:
207 {
208 int *input = arg;
209
210 i2c_smbus_write_byte_data(client, 0x02, 0xC0 | *input);
211 i2c_smbus_write_byte_data(client, 0x09,
212 *input < 6 ? 0x40 : 0xC0);
213 break;
214 }
215 case DECODER_SET_RESOLUTION:
216 {
217 struct video_decoder_resolution *res = arg;
218 /* Course-grained scaler */
219 int h_integer_scaler = res->width < 704 ? 704 / res->width : 1;
220 /* Fine-grained scaler to take care of remainder */
221 int h_scaling_increment = (704 / h_integer_scaler) *
222 1024 / res->width;
223 /* Fine-grained scaler only */
224 int v_scaling_increment = (dec->norm & V4L2_STD_NTSC ?
225 240 : 288) * 1024 / res->height;
226 u8 regs[] = {
227 0x88, 0xc0,
228 0x9c, res->width & 0xff,
229 0x9d, res->width >> 8,
230 0x9e, res->height & 0xff,
231 0x9f, res->height >> 8,
232 0xa0, h_integer_scaler,
233 0xa1, 1,
234 0xa2, 1,
235 0xa8, h_scaling_increment & 0xff,
236 0xa9, h_scaling_increment >> 8,
237 0xac, (h_scaling_increment / 2) & 0xff,
238 0xad, (h_scaling_increment / 2) >> 8,
239 0xb0, v_scaling_increment & 0xff,
240 0xb1, v_scaling_increment >> 8,
241 0xb2, v_scaling_increment & 0xff,
242 0xb3, v_scaling_increment >> 8,
243 0xcc, res->width & 0xff,
244 0xcd, res->width >> 8,
245 0xce, res->height & 0xff,
246 0xcf, res->height >> 8,
247 0xd0, h_integer_scaler,
248 0xd1, 1,
249 0xd2, 1,
250 0xd8, h_scaling_increment & 0xff,
251 0xd9, h_scaling_increment >> 8,
252 0xdc, (h_scaling_increment / 2) & 0xff,
253 0xdd, (h_scaling_increment / 2) >> 8,
254 0xe0, v_scaling_increment & 0xff,
255 0xe1, v_scaling_increment >> 8,
256 0xe2, v_scaling_increment & 0xff,
257 0xe3, v_scaling_increment >> 8,
258 0x88, 0xf0,
259 0, 0,
260 };
261 write_regs(client, regs);
262 break;
263 }
264 case VIDIOC_S_STD:
265 {
266 v4l2_std_id *input = arg;
267 u8 regs[] = {
268 0x88, 0xc0,
269 0x98, *input & V4L2_STD_NTSC ? 0x12 : 0x16,
270 0x9a, *input & V4L2_STD_NTSC ? 0xf2 : 0x20,
271 0x9b, *input & V4L2_STD_NTSC ? 0x00 : 0x01,
272 0xc8, *input & V4L2_STD_NTSC ? 0x12 : 0x16,
273 0xca, *input & V4L2_STD_NTSC ? 0xf2 : 0x20,
274 0xcb, *input & V4L2_STD_NTSC ? 0x00 : 0x01,
275 0x88, 0xf0,
276 0x30, *input & V4L2_STD_NTSC ? 0x66 : 0x00,
277 0x31, *input & V4L2_STD_NTSC ? 0x90 : 0xe0,
278 0, 0,
279 };
280 write_regs(client, regs);
281 dec->norm = *input;
282 break;
283 }
284 case VIDIOC_QUERYCTRL:
285 {
286 struct v4l2_queryctrl *ctrl = arg;
287
288 switch (ctrl->id) {
289 case V4L2_CID_BRIGHTNESS:
290 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
291 strncpy(ctrl->name, "Brightness", sizeof(ctrl->name));
292 ctrl->minimum = 0;
293 ctrl->maximum = 255;
294 ctrl->step = 1;
295 ctrl->default_value = 128;
296 ctrl->flags = 0;
297 break;
298 case V4L2_CID_CONTRAST:
299 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
300 strncpy(ctrl->name, "Contrast", sizeof(ctrl->name));
301 ctrl->minimum = 0;
302 ctrl->maximum = 127;
303 ctrl->step = 1;
304 ctrl->default_value = 64;
305 ctrl->flags = 0;
306 break;
307 case V4L2_CID_SATURATION:
308 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
309 strncpy(ctrl->name, "Saturation", sizeof(ctrl->name));
310 ctrl->minimum = 0;
311 ctrl->maximum = 127;
312 ctrl->step = 1;
313 ctrl->default_value = 64;
314 ctrl->flags = 0;
315 break;
316 case V4L2_CID_HUE:
317 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
318 strncpy(ctrl->name, "Hue", sizeof(ctrl->name));
319 ctrl->minimum = -128;
320 ctrl->maximum = 127;
321 ctrl->step = 1;
322 ctrl->default_value = 0;
323 ctrl->flags = 0;
324 break;
325 }
326 break;
327 }
328 case VIDIOC_S_CTRL:
329 {
330 struct v4l2_control *ctrl = arg;
331
332 switch (ctrl->id) {
333 case V4L2_CID_BRIGHTNESS:
334 if (ctrl->value > 255)
335 dec->brightness = 255;
336 else if (ctrl->value < 0)
337 dec->brightness = 0;
338 else
339 dec->brightness = ctrl->value;
340 write_reg(client, 0x0a, dec->brightness);
341 break;
342 case V4L2_CID_CONTRAST:
343 if (ctrl->value > 127)
344 dec->contrast = 127;
345 else if (ctrl->value < 0)
346 dec->contrast = 0;
347 else
348 dec->contrast = ctrl->value;
349 write_reg(client, 0x0b, dec->contrast);
350 break;
351 case V4L2_CID_SATURATION:
352 if (ctrl->value > 127)
353 dec->saturation = 127;
354 else if (ctrl->value < 0)
355 dec->saturation = 0;
356 else
357 dec->saturation = ctrl->value;
358 write_reg(client, 0x0c, dec->saturation);
359 break;
360 case V4L2_CID_HUE:
361 if (ctrl->value > 127)
362 dec->hue = 127;
363 else if (ctrl->value < -128)
364 dec->hue = -128;
365 else
366 dec->hue = ctrl->value;
367 write_reg(client, 0x0d, dec->hue);
368 break;
369 }
370 break;
371 }
372 case VIDIOC_G_CTRL:
373 {
374 struct v4l2_control *ctrl = arg;
375
376 switch (ctrl->id) {
377 case V4L2_CID_BRIGHTNESS:
378 ctrl->value = dec->brightness;
379 break;
380 case V4L2_CID_CONTRAST:
381 ctrl->value = dec->contrast;
382 break;
383 case V4L2_CID_SATURATION:
384 ctrl->value = dec->saturation;
385 break;
386 case V4L2_CID_HUE:
387 ctrl->value = dec->hue;
388 break;
389 }
390 break;
391 }
392 default:
393 break;
394 }
395 return 0;
396}
397
398static struct i2c_driver wis_saa7115_driver;
399
400static struct i2c_client wis_saa7115_client_templ = {
401 .name = "SAA7115 (WIS)",
402 .driver = &wis_saa7115_driver,
403};
404
405static int wis_saa7115_detect(struct i2c_adapter *adapter, int addr, int kind)
406{
407 struct i2c_client *client;
408 struct wis_saa7115 *dec;
409
410 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
411 return 0;
412
413 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
414 if (client == NULL)
415 return -ENOMEM;
416 memcpy(client, &wis_saa7115_client_templ,
417 sizeof(wis_saa7115_client_templ));
418 client->adapter = adapter;
419 client->addr = addr;
420
421 dec = kmalloc(sizeof(struct wis_saa7115), GFP_KERNEL);
422 if (dec == NULL) {
423 kfree(client);
424 return -ENOMEM;
425 }
426 dec->norm = V4L2_STD_NTSC;
427 dec->brightness = 128;
428 dec->contrast = 64;
429 dec->saturation = 64;
430 dec->hue = 0;
431 i2c_set_clientdata(client, dec);
432
433 printk(KERN_DEBUG
434 "wis-saa7115: initializing SAA7115 at address %d on %s\n",
435 addr, adapter->name);
436
437 if (write_regs(client, initial_registers) < 0) {
438 printk(KERN_ERR
439 "wis-saa7115: error initializing SAA7115\n");
440 kfree(client);
441 kfree(dec);
442 return 0;
443 }
444
445 i2c_attach_client(client);
446 return 0;
447}
448
449static int wis_saa7115_detach(struct i2c_client *client)
450{
451 struct wis_saa7115 *dec = i2c_get_clientdata(client);
452 int r;
453
454 r = i2c_detach_client(client);
455 if (r < 0)
456 return r;
457
458 kfree(client);
459 kfree(dec);
460 return 0;
461}
462
463static struct i2c_driver wis_saa7115_driver = {
464 .driver = {
465 .name = "WIS SAA7115 I2C driver",
466 },
467 .id = I2C_DRIVERID_WIS_SAA7115,
468 .detach_client = wis_saa7115_detach,
469 .command = wis_saa7115_command,
470};
471
472static int __init wis_saa7115_init(void)
473{
474 int r;
475
476 r = i2c_add_driver(&wis_saa7115_driver);
477 if (r < 0)
478 return r;
479 return wis_i2c_add_driver(wis_saa7115_driver.id, wis_saa7115_detect);
480}
481
482static void __exit wis_saa7115_cleanup(void)
483{
484 wis_i2c_del_driver(wis_saa7115_detect);
485 i2c_del_driver(&wis_saa7115_driver);
486}
487
488module_init(wis_saa7115_init);
489module_exit(wis_saa7115_cleanup);
490
491MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-sony-tuner.c b/drivers/staging/go7007/wis-sony-tuner.c
new file mode 100644
index 00000000000..5997fb47945
--- /dev/null
+++ b/drivers/staging/go7007/wis-sony-tuner.c
@@ -0,0 +1,742 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23#include <media/tuner.h>
24#include <media/v4l2-common.h>
25#include <media/v4l2-ioctl.h>
26
27#include "wis-i2c.h"
28
29/* #define MPX_DEBUG */
30
31/* AS(IF/MPX) pin: LOW HIGH/OPEN
32 * IF/MPX address: 0x42/0x40 0x43/0x44
33 */
34#define IF_I2C_ADDR 0x43
35#define MPX_I2C_ADDR 0x44
36
37static v4l2_std_id force_band;
38static char force_band_str[] = "-";
39module_param_string(force_band, force_band_str, sizeof(force_band_str), 0644);
40static int force_mpx_mode = -1;
41module_param(force_mpx_mode, int, 0644);
42
43/* Store tuner info in the same format as tuner.c, so maybe we can put the
44 * Sony tuner support in there. */
45struct sony_tunertype {
46 char *name;
47 unsigned char Vendor; /* unused here */
48 unsigned char Type; /* unused here */
49
50 unsigned short thresh1; /* band switch VHF_LO <=> VHF_HI */
51 unsigned short thresh2; /* band switch VHF_HI <=> UHF */
52 unsigned char VHF_L;
53 unsigned char VHF_H;
54 unsigned char UHF;
55 unsigned char config;
56 unsigned short IFPCoff;
57};
58
59/* This array is indexed by (tuner_type - 200) */
60static struct sony_tunertype sony_tuners[] = {
61 { "Sony PAL+SECAM (BTF-PG472Z)", 0, 0,
62 16*144.25, 16*427.25, 0x01, 0x02, 0x04, 0xc6, 623},
63 { "Sony NTSC_JP (BTF-PK467Z)", 0, 0,
64 16*220.25, 16*467.25, 0x01, 0x02, 0x04, 0xc6, 940},
65 { "Sony NTSC (BTF-PB463Z)", 0, 0,
66 16*130.25, 16*364.25, 0x01, 0x02, 0x04, 0xc6, 732},
67};
68
69struct wis_sony_tuner {
70 int type;
71 v4l2_std_id std;
72 unsigned int freq;
73 int mpxmode;
74 u32 audmode;
75};
76
77/* Basically the same as default_set_tv_freq() in tuner.c */
78static int set_freq(struct i2c_client *client, int freq)
79{
80 struct wis_sony_tuner *t = i2c_get_clientdata(client);
81 char *band_name;
82 int n;
83 int band_select;
84 struct sony_tunertype *tun;
85 u8 buffer[4];
86
87 tun = &sony_tuners[t->type - 200];
88 if (freq < tun->thresh1) {
89 band_name = "VHF_L";
90 band_select = tun->VHF_L;
91 } else if (freq < tun->thresh2) {
92 band_name = "VHF_H";
93 band_select = tun->VHF_H;
94 } else {
95 band_name = "UHF";
96 band_select = tun->UHF;
97 }
98 printk(KERN_DEBUG "wis-sony-tuner: tuning to frequency %d.%04d (%s)\n",
99 freq / 16, (freq % 16) * 625, band_name);
100 n = freq + tun->IFPCoff;
101
102 buffer[0] = n >> 8;
103 buffer[1] = n & 0xff;
104 buffer[2] = tun->config;
105 buffer[3] = band_select;
106 i2c_master_send(client, buffer, 4);
107
108 return 0;
109}
110
111static int mpx_write(struct i2c_client *client, int dev, int addr, int val)
112{
113 u8 buffer[5];
114 struct i2c_msg msg;
115
116 buffer[0] = dev;
117 buffer[1] = addr >> 8;
118 buffer[2] = addr & 0xff;
119 buffer[3] = val >> 8;
120 buffer[4] = val & 0xff;
121 msg.addr = MPX_I2C_ADDR;
122 msg.flags = 0;
123 msg.len = 5;
124 msg.buf = buffer;
125 i2c_transfer(client->adapter, &msg, 1);
126 return 0;
127}
128
129/*
130 * MPX register values for the BTF-PG472Z:
131 *
132 * FM_ NICAM_ SCART_
133 * MODUS SOURCE ACB PRESCAL PRESCAL PRESCAL SYSTEM VOLUME
134 * 10/0030 12/0008 12/0013 12/000E 12/0010 12/0000 10/0020 12/0000
135 * ---------------------------------------------------------------
136 * Auto 1003 0020 0100 2603 5000 XXXX 0001 7500
137 *
138 * B/G
139 * Mono 1003 0020 0100 2603 5000 XXXX 0003 7500
140 * A2 1003 0020 0100 2601 5000 XXXX 0003 7500
141 * NICAM 1003 0120 0100 2603 5000 XXXX 0008 7500
142 *
143 * I
144 * Mono 1003 0020 0100 2603 7900 XXXX 000A 7500
145 * NICAM 1003 0120 0100 2603 7900 XXXX 000A 7500
146 *
147 * D/K
148 * Mono 1003 0020 0100 2603 5000 XXXX 0004 7500
149 * A2-1 1003 0020 0100 2601 5000 XXXX 0004 7500
150 * A2-2 1003 0020 0100 2601 5000 XXXX 0005 7500
151 * A2-3 1003 0020 0100 2601 5000 XXXX 0007 7500
152 * NICAM 1003 0120 0100 2603 5000 XXXX 000B 7500
153 *
154 * L/L'
155 * Mono 0003 0200 0100 7C03 5000 2200 0009 7500
156 * NICAM 0003 0120 0100 7C03 5000 XXXX 0009 7500
157 *
158 * M
159 * Mono 1003 0200 0100 2B03 5000 2B00 0002 7500
160 *
161 * For Asia, replace the 0x26XX in FM_PRESCALE with 0x14XX.
162 *
163 * Bilingual selection in A2/NICAM:
164 *
165 * High byte of SOURCE Left chan Right chan
166 * 0x01 MAIN SUB
167 * 0x03 MAIN MAIN
168 * 0x04 SUB SUB
169 *
170 * Force mono in NICAM by setting the high byte of SOURCE to 0x02 (L/L') or
171 * 0x00 (all other bands). Force mono in A2 with FMONO_A2:
172 *
173 * FMONO_A2
174 * 10/0022
175 * --------
176 * Forced mono ON 07F0
177 * Forced mono OFF 0190
178 */
179
180static struct {
181 enum { AUD_MONO, AUD_A2, AUD_NICAM, AUD_NICAM_L } audio_mode;
182 u16 modus;
183 u16 source;
184 u16 acb;
185 u16 fm_prescale;
186 u16 nicam_prescale;
187 u16 scart_prescale;
188 u16 system;
189 u16 volume;
190} mpx_audio_modes[] = {
191 /* Auto */ { AUD_MONO, 0x1003, 0x0020, 0x0100, 0x2603,
192 0x5000, 0x0000, 0x0001, 0x7500 },
193 /* B/G Mono */ { AUD_MONO, 0x1003, 0x0020, 0x0100, 0x2603,
194 0x5000, 0x0000, 0x0003, 0x7500 },
195 /* B/G A2 */ { AUD_A2, 0x1003, 0x0020, 0x0100, 0x2601,
196 0x5000, 0x0000, 0x0003, 0x7500 },
197 /* B/G NICAM */ { AUD_NICAM, 0x1003, 0x0120, 0x0100, 0x2603,
198 0x5000, 0x0000, 0x0008, 0x7500 },
199 /* I Mono */ { AUD_MONO, 0x1003, 0x0020, 0x0100, 0x2603,
200 0x7900, 0x0000, 0x000A, 0x7500 },
201 /* I NICAM */ { AUD_NICAM, 0x1003, 0x0120, 0x0100, 0x2603,
202 0x7900, 0x0000, 0x000A, 0x7500 },
203 /* D/K Mono */ { AUD_MONO, 0x1003, 0x0020, 0x0100, 0x2603,
204 0x5000, 0x0000, 0x0004, 0x7500 },
205 /* D/K A2-1 */ { AUD_A2, 0x1003, 0x0020, 0x0100, 0x2601,
206 0x5000, 0x0000, 0x0004, 0x7500 },
207 /* D/K A2-2 */ { AUD_A2, 0x1003, 0x0020, 0x0100, 0x2601,
208 0x5000, 0x0000, 0x0005, 0x7500 },
209 /* D/K A2-3 */ { AUD_A2, 0x1003, 0x0020, 0x0100, 0x2601,
210 0x5000, 0x0000, 0x0007, 0x7500 },
211 /* D/K NICAM */ { AUD_NICAM, 0x1003, 0x0120, 0x0100, 0x2603,
212 0x5000, 0x0000, 0x000B, 0x7500 },
213 /* L/L' Mono */ { AUD_MONO, 0x0003, 0x0200, 0x0100, 0x7C03,
214 0x5000, 0x2200, 0x0009, 0x7500 },
215 /* L/L' NICAM */{ AUD_NICAM_L, 0x0003, 0x0120, 0x0100, 0x7C03,
216 0x5000, 0x0000, 0x0009, 0x7500 },
217};
218
219#define MPX_NUM_MODES ARRAY_SIZE(mpx_audio_modes)
220
221static int mpx_setup(struct i2c_client *client)
222{
223 struct wis_sony_tuner *t = i2c_get_clientdata(client);
224 u16 source = 0;
225 u8 buffer[3];
226 struct i2c_msg msg;
227
228 /* reset MPX */
229 buffer[0] = 0x00;
230 buffer[1] = 0x80;
231 buffer[2] = 0x00;
232 msg.addr = MPX_I2C_ADDR;
233 msg.flags = 0;
234 msg.len = 3;
235 msg.buf = buffer;
236 i2c_transfer(client->adapter, &msg, 1);
237 buffer[1] = 0x00;
238 i2c_transfer(client->adapter, &msg, 1);
239
240 if (mpx_audio_modes[t->mpxmode].audio_mode != AUD_MONO) {
241 switch (t->audmode) {
242 case V4L2_TUNER_MODE_MONO:
243 switch (mpx_audio_modes[t->mpxmode].audio_mode) {
244 case AUD_A2:
245 source = mpx_audio_modes[t->mpxmode].source;
246 break;
247 case AUD_NICAM:
248 source = 0x0000;
249 break;
250 case AUD_NICAM_L:
251 source = 0x0200;
252 break;
253 default:
254 break;
255 }
256 break;
257 case V4L2_TUNER_MODE_STEREO:
258 source = mpx_audio_modes[t->mpxmode].source;
259 break;
260 case V4L2_TUNER_MODE_LANG1:
261 source = 0x0300;
262 break;
263 case V4L2_TUNER_MODE_LANG2:
264 source = 0x0400;
265 break;
266 }
267 source |= mpx_audio_modes[t->mpxmode].source & 0x00ff;
268 } else
269 source = mpx_audio_modes[t->mpxmode].source;
270
271 mpx_write(client, 0x10, 0x0030, mpx_audio_modes[t->mpxmode].modus);
272 mpx_write(client, 0x12, 0x0008, source);
273 mpx_write(client, 0x12, 0x0013, mpx_audio_modes[t->mpxmode].acb);
274 mpx_write(client, 0x12, 0x000e,
275 mpx_audio_modes[t->mpxmode].fm_prescale);
276 mpx_write(client, 0x12, 0x0010,
277 mpx_audio_modes[t->mpxmode].nicam_prescale);
278 mpx_write(client, 0x12, 0x000d,
279 mpx_audio_modes[t->mpxmode].scart_prescale);
280 mpx_write(client, 0x10, 0x0020, mpx_audio_modes[t->mpxmode].system);
281 mpx_write(client, 0x12, 0x0000, mpx_audio_modes[t->mpxmode].volume);
282 if (mpx_audio_modes[t->mpxmode].audio_mode == AUD_A2)
283 mpx_write(client, 0x10, 0x0022,
284 t->audmode == V4L2_TUNER_MODE_MONO ? 0x07f0 : 0x0190);
285
286#ifdef MPX_DEBUG
287 {
288 u8 buf1[3], buf2[2];
289 struct i2c_msg msgs[2];
290
291 printk(KERN_DEBUG "wis-sony-tuner: MPX registers: %04x %04x "
292 "%04x %04x %04x %04x %04x %04x\n",
293 mpx_audio_modes[t->mpxmode].modus,
294 source,
295 mpx_audio_modes[t->mpxmode].acb,
296 mpx_audio_modes[t->mpxmode].fm_prescale,
297 mpx_audio_modes[t->mpxmode].nicam_prescale,
298 mpx_audio_modes[t->mpxmode].scart_prescale,
299 mpx_audio_modes[t->mpxmode].system,
300 mpx_audio_modes[t->mpxmode].volume);
301 buf1[0] = 0x11;
302 buf1[1] = 0x00;
303 buf1[2] = 0x7e;
304 msgs[0].addr = MPX_I2C_ADDR;
305 msgs[0].flags = 0;
306 msgs[0].len = 3;
307 msgs[0].buf = buf1;
308 msgs[1].addr = MPX_I2C_ADDR;
309 msgs[1].flags = I2C_M_RD;
310 msgs[1].len = 2;
311 msgs[1].buf = buf2;
312 i2c_transfer(client->adapter, msgs, 2);
313 printk(KERN_DEBUG "wis-sony-tuner: MPX system: %02x%02x\n",
314 buf2[0], buf2[1]);
315 buf1[0] = 0x11;
316 buf1[1] = 0x02;
317 buf1[2] = 0x00;
318 i2c_transfer(client->adapter, msgs, 2);
319 printk(KERN_DEBUG "wis-sony-tuner: MPX status: %02x%02x\n",
320 buf2[0], buf2[1]);
321 }
322#endif
323 return 0;
324}
325
326/*
327 * IF configuration values for the BTF-PG472Z:
328 *
329 * B/G: 0x94 0x70 0x49
330 * I: 0x14 0x70 0x4a
331 * D/K: 0x14 0x70 0x4b
332 * L: 0x04 0x70 0x4b
333 * L': 0x44 0x70 0x53
334 * M: 0x50 0x30 0x4c
335 */
336
337static int set_if(struct i2c_client *client)
338{
339 struct wis_sony_tuner *t = i2c_get_clientdata(client);
340 u8 buffer[4];
341 struct i2c_msg msg;
342 int default_mpx_mode = 0;
343
344 /* configure IF */
345 buffer[0] = 0;
346 if (t->std & V4L2_STD_PAL_BG) {
347 buffer[1] = 0x94;
348 buffer[2] = 0x70;
349 buffer[3] = 0x49;
350 default_mpx_mode = 1;
351 } else if (t->std & V4L2_STD_PAL_I) {
352 buffer[1] = 0x14;
353 buffer[2] = 0x70;
354 buffer[3] = 0x4a;
355 default_mpx_mode = 4;
356 } else if (t->std & V4L2_STD_PAL_DK) {
357 buffer[1] = 0x14;
358 buffer[2] = 0x70;
359 buffer[3] = 0x4b;
360 default_mpx_mode = 6;
361 } else if (t->std & V4L2_STD_SECAM_L) {
362 buffer[1] = 0x04;
363 buffer[2] = 0x70;
364 buffer[3] = 0x4b;
365 default_mpx_mode = 11;
366 }
367 msg.addr = IF_I2C_ADDR;
368 msg.flags = 0;
369 msg.len = 4;
370 msg.buf = buffer;
371 i2c_transfer(client->adapter, &msg, 1);
372
373 /* Select MPX mode if not forced by the user */
374 if (force_mpx_mode >= 0 || force_mpx_mode < MPX_NUM_MODES)
375 t->mpxmode = force_mpx_mode;
376 else
377 t->mpxmode = default_mpx_mode;
378 printk(KERN_DEBUG "wis-sony-tuner: setting MPX to mode %d\n",
379 t->mpxmode);
380 mpx_setup(client);
381
382 return 0;
383}
384
385static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
386{
387 struct wis_sony_tuner *t = i2c_get_clientdata(client);
388
389 switch (cmd) {
390#ifdef TUNER_SET_TYPE_ADDR
391 case TUNER_SET_TYPE_ADDR:
392 {
393 struct tuner_setup *tun_setup = arg;
394 int *type = &tun_setup->type;
395#else
396 case TUNER_SET_TYPE:
397 {
398 int *type = arg;
399#endif
400
401 if (t->type >= 0) {
402 if (t->type != *type)
403 printk(KERN_ERR "wis-sony-tuner: type already "
404 "set to %d, ignoring request for %d\n",
405 t->type, *type);
406 break;
407 }
408 t->type = *type;
409 switch (t->type) {
410 case TUNER_SONY_BTF_PG472Z:
411 switch (force_band_str[0]) {
412 case 'b':
413 case 'B':
414 case 'g':
415 case 'G':
416 printk(KERN_INFO "wis-sony-tuner: forcing "
417 "tuner to PAL-B/G bands\n");
418 force_band = V4L2_STD_PAL_BG;
419 break;
420 case 'i':
421 case 'I':
422 printk(KERN_INFO "wis-sony-tuner: forcing "
423 "tuner to PAL-I band\n");
424 force_band = V4L2_STD_PAL_I;
425 break;
426 case 'd':
427 case 'D':
428 case 'k':
429 case 'K':
430 printk(KERN_INFO "wis-sony-tuner: forcing "
431 "tuner to PAL-D/K bands\n");
432 force_band = V4L2_STD_PAL_I;
433 break;
434 case 'l':
435 case 'L':
436 printk(KERN_INFO "wis-sony-tuner: forcing "
437 "tuner to SECAM-L band\n");
438 force_band = V4L2_STD_SECAM_L;
439 break;
440 default:
441 force_band = 0;
442 break;
443 }
444 if (force_band)
445 t->std = force_band;
446 else
447 t->std = V4L2_STD_PAL_BG;
448 set_if(client);
449 break;
450 case TUNER_SONY_BTF_PK467Z:
451 t->std = V4L2_STD_NTSC_M_JP;
452 break;
453 case TUNER_SONY_BTF_PB463Z:
454 t->std = V4L2_STD_NTSC_M;
455 break;
456 default:
457 printk(KERN_ERR "wis-sony-tuner: tuner type %d is not "
458 "supported by this module\n", *type);
459 break;
460 }
461 if (type >= 0)
462 printk(KERN_INFO
463 "wis-sony-tuner: type set to %d (%s)\n",
464 t->type, sony_tuners[t->type - 200].name);
465 break;
466 }
467 case VIDIOC_G_FREQUENCY:
468 {
469 struct v4l2_frequency *f = arg;
470
471 f->frequency = t->freq;
472 break;
473 }
474 case VIDIOC_S_FREQUENCY:
475 {
476 struct v4l2_frequency *f = arg;
477
478 t->freq = f->frequency;
479 set_freq(client, t->freq);
480 break;
481 }
482 case VIDIOC_ENUMSTD:
483 {
484 struct v4l2_standard *std = arg;
485
486 switch (t->type) {
487 case TUNER_SONY_BTF_PG472Z:
488 switch (std->index) {
489 case 0:
490 v4l2_video_std_construct(std,
491 V4L2_STD_PAL_BG, "PAL-B/G");
492 break;
493 case 1:
494 v4l2_video_std_construct(std,
495 V4L2_STD_PAL_I, "PAL-I");
496 break;
497 case 2:
498 v4l2_video_std_construct(std,
499 V4L2_STD_PAL_DK, "PAL-D/K");
500 break;
501 case 3:
502 v4l2_video_std_construct(std,
503 V4L2_STD_SECAM_L, "SECAM-L");
504 break;
505 default:
506 std->id = 0; /* hack to indicate EINVAL */
507 break;
508 }
509 break;
510 case TUNER_SONY_BTF_PK467Z:
511 if (std->index != 0) {
512 std->id = 0; /* hack to indicate EINVAL */
513 break;
514 }
515 v4l2_video_std_construct(std,
516 V4L2_STD_NTSC_M_JP, "NTSC-J");
517 break;
518 case TUNER_SONY_BTF_PB463Z:
519 if (std->index != 0) {
520 std->id = 0; /* hack to indicate EINVAL */
521 break;
522 }
523 v4l2_video_std_construct(std, V4L2_STD_NTSC_M, "NTSC");
524 break;
525 }
526 break;
527 }
528 case VIDIOC_G_STD:
529 {
530 v4l2_std_id *std = arg;
531
532 *std = t->std;
533 break;
534 }
535 case VIDIOC_S_STD:
536 {
537 v4l2_std_id *std = arg;
538 v4l2_std_id old = t->std;
539
540 switch (t->type) {
541 case TUNER_SONY_BTF_PG472Z:
542 if (force_band && (*std & force_band) != *std &&
543 *std != V4L2_STD_PAL &&
544 *std != V4L2_STD_SECAM) {
545 printk(KERN_DEBUG "wis-sony-tuner: ignoring "
546 "requested TV standard in "
547 "favor of force_band value\n");
548 t->std = force_band;
549 } else if (*std & V4L2_STD_PAL_BG) { /* default */
550 t->std = V4L2_STD_PAL_BG;
551 } else if (*std & V4L2_STD_PAL_I) {
552 t->std = V4L2_STD_PAL_I;
553 } else if (*std & V4L2_STD_PAL_DK) {
554 t->std = V4L2_STD_PAL_DK;
555 } else if (*std & V4L2_STD_SECAM_L) {
556 t->std = V4L2_STD_SECAM_L;
557 } else {
558 printk(KERN_ERR "wis-sony-tuner: TV standard "
559 "not supported\n");
560 *std = 0; /* hack to indicate EINVAL */
561 break;
562 }
563 if (old != t->std)
564 set_if(client);
565 break;
566 case TUNER_SONY_BTF_PK467Z:
567 if (!(*std & V4L2_STD_NTSC_M_JP)) {
568 printk(KERN_ERR "wis-sony-tuner: TV standard "
569 "not supported\n");
570 *std = 0; /* hack to indicate EINVAL */
571 }
572 break;
573 case TUNER_SONY_BTF_PB463Z:
574 if (!(*std & V4L2_STD_NTSC_M)) {
575 printk(KERN_ERR "wis-sony-tuner: TV standard "
576 "not supported\n");
577 *std = 0; /* hack to indicate EINVAL */
578 }
579 break;
580 }
581 break;
582 }
583 case VIDIOC_QUERYSTD:
584 {
585 v4l2_std_id *std = arg;
586
587 switch (t->type) {
588 case TUNER_SONY_BTF_PG472Z:
589 if (force_band)
590 *std = force_band;
591 else
592 *std = V4L2_STD_PAL_BG | V4L2_STD_PAL_I |
593 V4L2_STD_PAL_DK | V4L2_STD_SECAM_L;
594 break;
595 case TUNER_SONY_BTF_PK467Z:
596 *std = V4L2_STD_NTSC_M_JP;
597 break;
598 case TUNER_SONY_BTF_PB463Z:
599 *std = V4L2_STD_NTSC_M;
600 break;
601 }
602 break;
603 }
604 case VIDIOC_G_TUNER:
605 {
606 struct v4l2_tuner *tun = arg;
607
608 memset(t, 0, sizeof(*tun));
609 strcpy(tun->name, "Television");
610 tun->type = V4L2_TUNER_ANALOG_TV;
611 tun->rangelow = 0UL; /* does anything use these? */
612 tun->rangehigh = 0xffffffffUL;
613 switch (t->type) {
614 case TUNER_SONY_BTF_PG472Z:
615 tun->capability = V4L2_TUNER_CAP_NORM |
616 V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_LANG1 |
617 V4L2_TUNER_CAP_LANG2;
618 tun->rxsubchans = V4L2_TUNER_SUB_MONO |
619 V4L2_TUNER_SUB_STEREO | V4L2_TUNER_SUB_LANG1 |
620 V4L2_TUNER_SUB_LANG2;
621 break;
622 case TUNER_SONY_BTF_PK467Z:
623 case TUNER_SONY_BTF_PB463Z:
624 tun->capability = V4L2_TUNER_CAP_STEREO;
625 tun->rxsubchans = V4L2_TUNER_SUB_MONO |
626 V4L2_TUNER_SUB_STEREO;
627 break;
628 }
629 tun->audmode = t->audmode;
630 return 0;
631 }
632 case VIDIOC_S_TUNER:
633 {
634 struct v4l2_tuner *tun = arg;
635
636 switch (t->type) {
637 case TUNER_SONY_BTF_PG472Z:
638 if (tun->audmode != t->audmode) {
639 t->audmode = tun->audmode;
640 mpx_setup(client);
641 }
642 break;
643 case TUNER_SONY_BTF_PK467Z:
644 case TUNER_SONY_BTF_PB463Z:
645 break;
646 }
647 return 0;
648 }
649 default:
650 break;
651 }
652 return 0;
653}
654
655static struct i2c_driver wis_sony_tuner_driver;
656
657static struct i2c_client wis_sony_tuner_client_templ = {
658 .name = "Sony TV Tuner (WIS)",
659 .driver = &wis_sony_tuner_driver,
660};
661
662static int wis_sony_tuner_detect(struct i2c_adapter *adapter,
663 int addr, int kind)
664{
665 struct i2c_client *client;
666 struct wis_sony_tuner *t;
667
668 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_I2C_BLOCK))
669 return 0;
670
671 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
672 if (client == NULL)
673 return -ENOMEM;
674 memcpy(client, &wis_sony_tuner_client_templ,
675 sizeof(wis_sony_tuner_client_templ));
676 client->adapter = adapter;
677 client->addr = addr;
678
679 t = kmalloc(sizeof(struct wis_sony_tuner), GFP_KERNEL);
680 if (t == NULL) {
681 kfree(client);
682 return -ENOMEM;
683 }
684 t->type = -1;
685 t->freq = 0;
686 t->mpxmode = 0;
687 t->audmode = V4L2_TUNER_MODE_STEREO;
688 i2c_set_clientdata(client, t);
689
690 printk(KERN_DEBUG
691 "wis-sony-tuner: initializing tuner at address %d on %s\n",
692 addr, adapter->name);
693
694 i2c_attach_client(client);
695
696 return 0;
697}
698
699static int wis_sony_tuner_detach(struct i2c_client *client)
700{
701 struct wis_sony_tuner *t = i2c_get_clientdata(client);
702 int r;
703
704 r = i2c_detach_client(client);
705 if (r < 0)
706 return r;
707
708 kfree(t);
709 kfree(client);
710 return 0;
711}
712
713static struct i2c_driver wis_sony_tuner_driver = {
714 .driver = {
715 .name = "WIS Sony TV Tuner I2C driver",
716 },
717 .id = I2C_DRIVERID_WIS_SONY_TUNER,
718 .detach_client = wis_sony_tuner_detach,
719 .command = tuner_command,
720};
721
722static int __init wis_sony_tuner_init(void)
723{
724 int r;
725
726 r = i2c_add_driver(&wis_sony_tuner_driver);
727 if (r < 0)
728 return r;
729 return wis_i2c_add_driver(wis_sony_tuner_driver.id,
730 wis_sony_tuner_detect);
731}
732
733static void __exit wis_sony_tuner_cleanup(void)
734{
735 wis_i2c_del_driver(wis_sony_tuner_detect);
736 i2c_del_driver(&wis_sony_tuner_driver);
737}
738
739module_init(wis_sony_tuner_init);
740module_exit(wis_sony_tuner_cleanup);
741
742MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-tw2804.c b/drivers/staging/go7007/wis-tw2804.c
new file mode 100644
index 00000000000..27fe4d0d4ed
--- /dev/null
+++ b/drivers/staging/go7007/wis-tw2804.c
@@ -0,0 +1,380 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23#include <linux/ioctl.h>
24
25#include "wis-i2c.h"
26
27struct wis_tw2804 {
28 int channel;
29 int norm;
30 int brightness;
31 int contrast;
32 int saturation;
33 int hue;
34};
35
36static u8 global_registers[] =
37{
38 0x39, 0x00,
39 0x3a, 0xff,
40 0x3b, 0x84,
41 0x3c, 0x80,
42 0x3d, 0x80,
43 0x3e, 0x82,
44 0x3f, 0x82,
45 0xff, 0xff, /* Terminator (reg 0xff does not exist) */
46};
47
48static u8 channel_registers[] =
49{
50 0x01, 0xc4,
51 0x02, 0xa5,
52 0x03, 0x20,
53 0x04, 0xd0,
54 0x05, 0x20,
55 0x06, 0xd0,
56 0x07, 0x88,
57 0x08, 0x20,
58 0x09, 0x07,
59 0x0a, 0xf0,
60 0x0b, 0x07,
61 0x0c, 0xf0,
62 0x0d, 0x40,
63 0x0e, 0xd2,
64 0x0f, 0x80,
65 0x10, 0x80,
66 0x11, 0x80,
67 0x12, 0x80,
68 0x13, 0x1f,
69 0x14, 0x00,
70 0x15, 0x00,
71 0x16, 0x00,
72 0x17, 0x00,
73 0x18, 0xff,
74 0x19, 0xff,
75 0x1a, 0xff,
76 0x1b, 0xff,
77 0x1c, 0xff,
78 0x1d, 0xff,
79 0x1e, 0xff,
80 0x1f, 0xff,
81 0x20, 0x07,
82 0x21, 0x07,
83 0x22, 0x00,
84 0x23, 0x91,
85 0x24, 0x51,
86 0x25, 0x03,
87 0x26, 0x00,
88 0x27, 0x00,
89 0x28, 0x00,
90 0x29, 0x00,
91 0x2a, 0x00,
92 0x2b, 0x00,
93 0x2c, 0x00,
94 0x2d, 0x00,
95 0x2e, 0x00,
96 0x2f, 0x00,
97 0x30, 0x00,
98 0x31, 0x00,
99 0x32, 0x00,
100 0x33, 0x00,
101 0x34, 0x00,
102 0x35, 0x00,
103 0x36, 0x00,
104 0x37, 0x00,
105 0xff, 0xff, /* Terminator (reg 0xff does not exist) */
106};
107
108static int write_reg(struct i2c_client *client, u8 reg, u8 value, int channel)
109{
110 return i2c_smbus_write_byte_data(client, reg | (channel << 6), value);
111}
112
113static int write_regs(struct i2c_client *client, u8 *regs, int channel)
114{
115 int i;
116
117 for (i = 0; regs[i] != 0xff; i += 2)
118 if (i2c_smbus_write_byte_data(client,
119 regs[i] | (channel << 6), regs[i + 1]) < 0)
120 return -1;
121 return 0;
122}
123
124static int wis_tw2804_command(struct i2c_client *client,
125 unsigned int cmd, void *arg)
126{
127 struct wis_tw2804 *dec = i2c_get_clientdata(client);
128
129 if (cmd == DECODER_SET_CHANNEL) {
130 int *input = arg;
131
132 if (*input < 0 || *input > 3) {
133 printk(KERN_ERR "wis-tw2804: channel %d is not "
134 "between 0 and 3!\n", *input);
135 return 0;
136 }
137 dec->channel = *input;
138 printk(KERN_DEBUG "wis-tw2804: initializing TW2804 "
139 "channel %d\n", dec->channel);
140 if (dec->channel == 0 &&
141 write_regs(client, global_registers, 0) < 0) {
142 printk(KERN_ERR "wis-tw2804: error initializing "
143 "TW2804 global registers\n");
144 return 0;
145 }
146 if (write_regs(client, channel_registers, dec->channel) < 0) {
147 printk(KERN_ERR "wis-tw2804: error initializing "
148 "TW2804 channel %d\n", dec->channel);
149 return 0;
150 }
151 return 0;
152 }
153
154 if (dec->channel < 0) {
155 printk(KERN_DEBUG "wis-tw2804: ignoring command %08x until "
156 "channel number is set\n", cmd);
157 return 0;
158 }
159
160 switch (cmd) {
161 case VIDIOC_S_STD:
162 {
163 v4l2_std_id *input = arg;
164 u8 regs[] = {
165 0x01, *input & V4L2_STD_NTSC ? 0xc4 : 0x84,
166 0x09, *input & V4L2_STD_NTSC ? 0x07 : 0x04,
167 0x0a, *input & V4L2_STD_NTSC ? 0xf0 : 0x20,
168 0x0b, *input & V4L2_STD_NTSC ? 0x07 : 0x04,
169 0x0c, *input & V4L2_STD_NTSC ? 0xf0 : 0x20,
170 0x0d, *input & V4L2_STD_NTSC ? 0x40 : 0x4a,
171 0x16, *input & V4L2_STD_NTSC ? 0x00 : 0x40,
172 0x17, *input & V4L2_STD_NTSC ? 0x00 : 0x40,
173 0x20, *input & V4L2_STD_NTSC ? 0x07 : 0x0f,
174 0x21, *input & V4L2_STD_NTSC ? 0x07 : 0x0f,
175 0xff, 0xff,
176 };
177 write_regs(client, regs, dec->channel);
178 dec->norm = *input;
179 break;
180 }
181 case VIDIOC_QUERYCTRL:
182 {
183 struct v4l2_queryctrl *ctrl = arg;
184
185 switch (ctrl->id) {
186 case V4L2_CID_BRIGHTNESS:
187 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
188 strncpy(ctrl->name, "Brightness", sizeof(ctrl->name));
189 ctrl->minimum = 0;
190 ctrl->maximum = 255;
191 ctrl->step = 1;
192 ctrl->default_value = 128;
193 ctrl->flags = 0;
194 break;
195 case V4L2_CID_CONTRAST:
196 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
197 strncpy(ctrl->name, "Contrast", sizeof(ctrl->name));
198 ctrl->minimum = 0;
199 ctrl->maximum = 255;
200 ctrl->step = 1;
201 ctrl->default_value = 128;
202 ctrl->flags = 0;
203 break;
204 case V4L2_CID_SATURATION:
205 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
206 strncpy(ctrl->name, "Saturation", sizeof(ctrl->name));
207 ctrl->minimum = 0;
208 ctrl->maximum = 255;
209 ctrl->step = 1;
210 ctrl->default_value = 128;
211 ctrl->flags = 0;
212 break;
213 case V4L2_CID_HUE:
214 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
215 strncpy(ctrl->name, "Hue", sizeof(ctrl->name));
216 ctrl->minimum = 0;
217 ctrl->maximum = 255;
218 ctrl->step = 1;
219 ctrl->default_value = 128;
220 ctrl->flags = 0;
221 break;
222 }
223 break;
224 }
225 case VIDIOC_S_CTRL:
226 {
227 struct v4l2_control *ctrl = arg;
228
229 switch (ctrl->id) {
230 case V4L2_CID_BRIGHTNESS:
231 if (ctrl->value > 255)
232 dec->brightness = 255;
233 else if (ctrl->value < 0)
234 dec->brightness = 0;
235 else
236 dec->brightness = ctrl->value;
237 write_reg(client, 0x12, dec->brightness, dec->channel);
238 break;
239 case V4L2_CID_CONTRAST:
240 if (ctrl->value > 255)
241 dec->contrast = 255;
242 else if (ctrl->value < 0)
243 dec->contrast = 0;
244 else
245 dec->contrast = ctrl->value;
246 write_reg(client, 0x11, dec->contrast, dec->channel);
247 break;
248 case V4L2_CID_SATURATION:
249 if (ctrl->value > 255)
250 dec->saturation = 255;
251 else if (ctrl->value < 0)
252 dec->saturation = 0;
253 else
254 dec->saturation = ctrl->value;
255 write_reg(client, 0x10, dec->saturation, dec->channel);
256 break;
257 case V4L2_CID_HUE:
258 if (ctrl->value > 255)
259 dec->hue = 255;
260 else if (ctrl->value < 0)
261 dec->hue = 0;
262 else
263 dec->hue = ctrl->value;
264 write_reg(client, 0x0f, dec->hue, dec->channel);
265 break;
266 }
267 break;
268 }
269 case VIDIOC_G_CTRL:
270 {
271 struct v4l2_control *ctrl = arg;
272
273 switch (ctrl->id) {
274 case V4L2_CID_BRIGHTNESS:
275 ctrl->value = dec->brightness;
276 break;
277 case V4L2_CID_CONTRAST:
278 ctrl->value = dec->contrast;
279 break;
280 case V4L2_CID_SATURATION:
281 ctrl->value = dec->saturation;
282 break;
283 case V4L2_CID_HUE:
284 ctrl->value = dec->hue;
285 break;
286 }
287 break;
288 }
289 default:
290 break;
291 }
292 return 0;
293}
294
295static struct i2c_driver wis_tw2804_driver;
296
297static struct i2c_client wis_tw2804_client_templ = {
298 .name = "TW2804 (WIS)",
299 .driver = &wis_tw2804_driver,
300};
301
302static int wis_tw2804_detect(struct i2c_adapter *adapter, int addr, int kind)
303{
304 struct i2c_client *client;
305 struct wis_tw2804 *dec;
306
307 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
308 return 0;
309
310 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
311 if (client == NULL)
312 return -ENOMEM;
313 memcpy(client, &wis_tw2804_client_templ,
314 sizeof(wis_tw2804_client_templ));
315 client->adapter = adapter;
316 client->addr = addr;
317
318 dec = kmalloc(sizeof(struct wis_tw2804), GFP_KERNEL);
319 if (dec == NULL) {
320 kfree(client);
321 return -ENOMEM;
322 }
323 dec->channel = -1;
324 dec->norm = V4L2_STD_NTSC;
325 dec->brightness = 128;
326 dec->contrast = 128;
327 dec->saturation = 128;
328 dec->hue = 128;
329 i2c_set_clientdata(client, dec);
330
331 printk(KERN_DEBUG "wis-tw2804: creating TW2804 at address %d on %s\n",
332 addr, adapter->name);
333
334 i2c_attach_client(client);
335 return 0;
336}
337
338static int wis_tw2804_detach(struct i2c_client *client)
339{
340 struct wis_tw2804 *dec = i2c_get_clientdata(client);
341 int r;
342
343 r = i2c_detach_client(client);
344 if (r < 0)
345 return r;
346
347 kfree(client);
348 kfree(dec);
349 return 0;
350}
351
352static struct i2c_driver wis_tw2804_driver = {
353 .driver = {
354 .name = "WIS TW2804 I2C driver",
355 },
356 .id = I2C_DRIVERID_WIS_TW2804,
357 .detach_client = wis_tw2804_detach,
358 .command = wis_tw2804_command,
359};
360
361static int __init wis_tw2804_init(void)
362{
363 int r;
364
365 r = i2c_add_driver(&wis_tw2804_driver);
366 if (r < 0)
367 return r;
368 return wis_i2c_add_driver(wis_tw2804_driver.id, wis_tw2804_detect);
369}
370
371static void __exit wis_tw2804_cleanup(void)
372{
373 wis_i2c_del_driver(wis_tw2804_detect);
374 i2c_del_driver(&wis_tw2804_driver);
375}
376
377module_init(wis_tw2804_init);
378module_exit(wis_tw2804_cleanup);
379
380MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-tw9903.c b/drivers/staging/go7007/wis-tw9903.c
new file mode 100644
index 00000000000..d8e41968022
--- /dev/null
+++ b/drivers/staging/go7007/wis-tw9903.c
@@ -0,0 +1,362 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23#include <linux/ioctl.h>
24
25#include "wis-i2c.h"
26
27struct wis_tw9903 {
28 int norm;
29 int brightness;
30 int contrast;
31 int hue;
32};
33
34static u8 initial_registers[] =
35{
36 0x02, 0x44, /* input 1, composite */
37 0x03, 0x92, /* correct digital format */
38 0x04, 0x00,
39 0x05, 0x80, /* or 0x00 for PAL */
40 0x06, 0x40, /* second internal current reference */
41 0x07, 0x02, /* window */
42 0x08, 0x14, /* window */
43 0x09, 0xf0, /* window */
44 0x0a, 0x81, /* window */
45 0x0b, 0xd0, /* window */
46 0x0c, 0x8c,
47 0x0d, 0x00, /* scaling */
48 0x0e, 0x11, /* scaling */
49 0x0f, 0x00, /* scaling */
50 0x10, 0x00, /* brightness */
51 0x11, 0x60, /* contrast */
52 0x12, 0x01, /* sharpness */
53 0x13, 0x7f, /* U gain */
54 0x14, 0x5a, /* V gain */
55 0x15, 0x00, /* hue */
56 0x16, 0xc3, /* sharpness */
57 0x18, 0x00,
58 0x19, 0x58, /* vbi */
59 0x1a, 0x80,
60 0x1c, 0x0f, /* video norm */
61 0x1d, 0x7f, /* video norm */
62 0x20, 0xa0, /* clamping gain (working 0x50) */
63 0x21, 0x22,
64 0x22, 0xf0,
65 0x23, 0xfe,
66 0x24, 0x3c,
67 0x25, 0x38,
68 0x26, 0x44,
69 0x27, 0x20,
70 0x28, 0x00,
71 0x29, 0x15,
72 0x2a, 0xa0,
73 0x2b, 0x44,
74 0x2c, 0x37,
75 0x2d, 0x00,
76 0x2e, 0xa5, /* burst PLL control (working: a9) */
77 0x2f, 0xe0, /* 0xea is blue test frame -- 0xe0 for normal */
78 0x31, 0x00,
79 0x33, 0x22,
80 0x34, 0x11,
81 0x35, 0x35,
82 0x3b, 0x05,
83 0x06, 0xc0, /* reset device */
84 0x00, 0x00, /* Terminator (reg 0x00 is read-only) */
85};
86
87static int write_reg(struct i2c_client *client, u8 reg, u8 value)
88{
89 return i2c_smbus_write_byte_data(client, reg, value);
90}
91
92static int write_regs(struct i2c_client *client, u8 *regs)
93{
94 int i;
95
96 for (i = 0; regs[i] != 0x00; i += 2)
97 if (i2c_smbus_write_byte_data(client, regs[i], regs[i + 1]) < 0)
98 return -1;
99 return 0;
100}
101
102static int wis_tw9903_command(struct i2c_client *client,
103 unsigned int cmd, void *arg)
104{
105 struct wis_tw9903 *dec = i2c_get_clientdata(client);
106
107 switch (cmd) {
108 case VIDIOC_S_INPUT:
109 {
110 int *input = arg;
111
112 i2c_smbus_write_byte_data(client, 0x02, 0x40 | (*input << 1));
113 break;
114 }
115#if 0 /* The scaler on this thing seems to be horribly broken */
116 case DECODER_SET_RESOLUTION:
117 {
118 struct video_decoder_resolution *res = arg;
119 /*int hscale = 256 * 720 / res->width;*/
120 int hscale = 256 * 720 / (res->width - (res->width > 704 ? 0 : 8));
121 int vscale = 256 * (dec->norm & V4L2_STD_NTSC ? 240 : 288)
122 / res->height;
123 u8 regs[] = {
124 0x0d, vscale & 0xff,
125 0x0f, hscale & 0xff,
126 0x0e, ((vscale & 0xf00) >> 4) | ((hscale & 0xf00) >> 8),
127 0x06, 0xc0, /* reset device */
128 0, 0,
129 };
130 printk(KERN_DEBUG "vscale is %04x, hscale is %04x\n",
131 vscale, hscale);
132 /*write_regs(client, regs);*/
133 break;
134 }
135#endif
136 case VIDIOC_S_STD:
137 {
138 v4l2_std_id *input = arg;
139 u8 regs[] = {
140 0x05, *input & V4L2_STD_NTSC ? 0x80 : 0x00,
141 0x07, *input & V4L2_STD_NTSC ? 0x02 : 0x12,
142 0x08, *input & V4L2_STD_NTSC ? 0x14 : 0x18,
143 0x09, *input & V4L2_STD_NTSC ? 0xf0 : 0x20,
144 0, 0,
145 };
146 write_regs(client, regs);
147 dec->norm = *input;
148 break;
149 }
150 case VIDIOC_QUERYCTRL:
151 {
152 struct v4l2_queryctrl *ctrl = arg;
153
154 switch (ctrl->id) {
155 case V4L2_CID_BRIGHTNESS:
156 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
157 strncpy(ctrl->name, "Brightness", sizeof(ctrl->name));
158 ctrl->minimum = -128;
159 ctrl->maximum = 127;
160 ctrl->step = 1;
161 ctrl->default_value = 0x00;
162 ctrl->flags = 0;
163 break;
164 case V4L2_CID_CONTRAST:
165 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
166 strncpy(ctrl->name, "Contrast", sizeof(ctrl->name));
167 ctrl->minimum = 0;
168 ctrl->maximum = 255;
169 ctrl->step = 1;
170 ctrl->default_value = 0x60;
171 ctrl->flags = 0;
172 break;
173#if 0
174 /* I don't understand how the Chroma Gain registers work... */
175 case V4L2_CID_SATURATION:
176 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
177 strncpy(ctrl->name, "Saturation", sizeof(ctrl->name));
178 ctrl->minimum = 0;
179 ctrl->maximum = 127;
180 ctrl->step = 1;
181 ctrl->default_value = 64;
182 ctrl->flags = 0;
183 break;
184#endif
185 case V4L2_CID_HUE:
186 ctrl->type = V4L2_CTRL_TYPE_INTEGER;
187 strncpy(ctrl->name, "Hue", sizeof(ctrl->name));
188 ctrl->minimum = -128;
189 ctrl->maximum = 127;
190 ctrl->step = 1;
191 ctrl->default_value = 0;
192 ctrl->flags = 0;
193 break;
194 }
195 break;
196 }
197 case VIDIOC_S_CTRL:
198 {
199 struct v4l2_control *ctrl = arg;
200
201 switch (ctrl->id) {
202 case V4L2_CID_BRIGHTNESS:
203 if (ctrl->value > 127)
204 dec->brightness = 127;
205 else if (ctrl->value < -128)
206 dec->brightness = -128;
207 else
208 dec->brightness = ctrl->value;
209 write_reg(client, 0x10, dec->brightness);
210 break;
211 case V4L2_CID_CONTRAST:
212 if (ctrl->value > 255)
213 dec->contrast = 255;
214 else if (ctrl->value < 0)
215 dec->contrast = 0;
216 else
217 dec->contrast = ctrl->value;
218 write_reg(client, 0x11, dec->contrast);
219 break;
220#if 0
221 case V4L2_CID_SATURATION:
222 if (ctrl->value > 127)
223 dec->saturation = 127;
224 else if (ctrl->value < 0)
225 dec->saturation = 0;
226 else
227 dec->saturation = ctrl->value;
228 /*write_reg(client, 0x0c, dec->saturation);*/
229 break;
230#endif
231 case V4L2_CID_HUE:
232 if (ctrl->value > 127)
233 dec->hue = 127;
234 else if (ctrl->value < -128)
235 dec->hue = -128;
236 else
237 dec->hue = ctrl->value;
238 write_reg(client, 0x15, dec->hue);
239 break;
240 }
241 break;
242 }
243 case VIDIOC_G_CTRL:
244 {
245 struct v4l2_control *ctrl = arg;
246
247 switch (ctrl->id) {
248 case V4L2_CID_BRIGHTNESS:
249 ctrl->value = dec->brightness;
250 break;
251 case V4L2_CID_CONTRAST:
252 ctrl->value = dec->contrast;
253 break;
254#if 0
255 case V4L2_CID_SATURATION:
256 ctrl->value = dec->saturation;
257 break;
258#endif
259 case V4L2_CID_HUE:
260 ctrl->value = dec->hue;
261 break;
262 }
263 break;
264 }
265 default:
266 break;
267 }
268 return 0;
269}
270
271static struct i2c_driver wis_tw9903_driver;
272
273static struct i2c_client wis_tw9903_client_templ = {
274 .name = "TW9903 (WIS)",
275 .driver = &wis_tw9903_driver,
276};
277
278static int wis_tw9903_detect(struct i2c_adapter *adapter, int addr, int kind)
279{
280 struct i2c_client *client;
281 struct wis_tw9903 *dec;
282
283 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
284 return 0;
285
286 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
287 if (client == NULL)
288 return -ENOMEM;
289 memcpy(client, &wis_tw9903_client_templ,
290 sizeof(wis_tw9903_client_templ));
291 client->adapter = adapter;
292 client->addr = addr;
293
294 dec = kmalloc(sizeof(struct wis_tw9903), GFP_KERNEL);
295 if (dec == NULL) {
296 kfree(client);
297 return -ENOMEM;
298 }
299 dec->norm = V4L2_STD_NTSC;
300 dec->brightness = 0;
301 dec->contrast = 0x60;
302 dec->hue = 0;
303 i2c_set_clientdata(client, dec);
304
305 printk(KERN_DEBUG
306 "wis-tw9903: initializing TW9903 at address %d on %s\n",
307 addr, adapter->name);
308
309 if (write_regs(client, initial_registers) < 0) {
310 printk(KERN_ERR "wis-tw9903: error initializing TW9903\n");
311 kfree(client);
312 kfree(dec);
313 return 0;
314 }
315
316 i2c_attach_client(client);
317 return 0;
318}
319
320static int wis_tw9903_detach(struct i2c_client *client)
321{
322 struct wis_tw9903 *dec = i2c_get_clientdata(client);
323 int r;
324
325 r = i2c_detach_client(client);
326 if (r < 0)
327 return r;
328
329 kfree(client);
330 kfree(dec);
331 return 0;
332}
333
334static struct i2c_driver wis_tw9903_driver = {
335 .driver = {
336 .name = "WIS TW9903 I2C driver",
337 },
338 .id = I2C_DRIVERID_WIS_TW9903,
339 .detach_client = wis_tw9903_detach,
340 .command = wis_tw9903_command,
341};
342
343static int __init wis_tw9903_init(void)
344{
345 int r;
346
347 r = i2c_add_driver(&wis_tw9903_driver);
348 if (r < 0)
349 return r;
350 return wis_i2c_add_driver(wis_tw9903_driver.id, wis_tw9903_detect);
351}
352
353static void __exit wis_tw9903_cleanup(void)
354{
355 wis_i2c_del_driver(wis_tw9903_detect);
356 i2c_del_driver(&wis_tw9903_driver);
357}
358
359module_init(wis_tw9903_init);
360module_exit(wis_tw9903_cleanup);
361
362MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/go7007/wis-uda1342.c b/drivers/staging/go7007/wis-uda1342.c
new file mode 100644
index 00000000000..a0894e3cb8c
--- /dev/null
+++ b/drivers/staging/go7007/wis-uda1342.c
@@ -0,0 +1,136 @@
1/*
2 * Copyright (C) 2005-2006 Micronas USA Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License (Version 2) as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software Foundation,
15 * Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
16 */
17
18#include <linux/module.h>
19#include <linux/init.h>
20#include <linux/version.h>
21#include <linux/i2c.h>
22#include <linux/videodev2.h>
23#include <media/tvaudio.h>
24#include <media/v4l2-common.h>
25
26#include "wis-i2c.h"
27
28static int write_reg(struct i2c_client *client, int reg, int value)
29{
30 /* UDA1342 wants MSB first, but SMBus sends LSB first */
31 i2c_smbus_write_word_data(client, reg, swab16(value));
32 return 0;
33}
34
35static int wis_uda1342_command(struct i2c_client *client,
36 unsigned int cmd, void *arg)
37{
38 switch (cmd) {
39 case VIDIOC_S_AUDIO:
40 {
41 int *inp = arg;
42
43 switch (*inp) {
44 case TVAUDIO_INPUT_TUNER:
45 write_reg(client, 0x00, 0x1441); /* select input 2 */
46 break;
47 case TVAUDIO_INPUT_EXTERN:
48 write_reg(client, 0x00, 0x1241); /* select input 1 */
49 break;
50 default:
51 printk(KERN_ERR "wis-uda1342: input %d not supported\n",
52 *inp);
53 break;
54 }
55 break;
56 }
57 default:
58 break;
59 }
60 return 0;
61}
62
63static struct i2c_driver wis_uda1342_driver;
64
65static struct i2c_client wis_uda1342_client_templ = {
66 .name = "UDA1342 (WIS)",
67 .driver = &wis_uda1342_driver,
68};
69
70static int wis_uda1342_detect(struct i2c_adapter *adapter, int addr, int kind)
71{
72 struct i2c_client *client;
73
74 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WORD_DATA))
75 return 0;
76
77 client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
78 if (client == NULL)
79 return -ENOMEM;
80 memcpy(client, &wis_uda1342_client_templ,
81 sizeof(wis_uda1342_client_templ));
82 client->adapter = adapter;
83 client->addr = addr;
84
85 printk(KERN_DEBUG
86 "wis-uda1342: initializing UDA1342 at address %d on %s\n",
87 addr, adapter->name);
88
89 write_reg(client, 0x00, 0x8000); /* reset registers */
90 write_reg(client, 0x00, 0x1241); /* select input 1 */
91
92 i2c_attach_client(client);
93 return 0;
94}
95
96static int wis_uda1342_detach(struct i2c_client *client)
97{
98 int r;
99
100 r = i2c_detach_client(client);
101 if (r < 0)
102 return r;
103
104 kfree(client);
105 return 0;
106}
107
108static struct i2c_driver wis_uda1342_driver = {
109 .driver = {
110 .name = "WIS UDA1342 I2C driver",
111 },
112 .id = I2C_DRIVERID_WIS_UDA1342,
113 .detach_client = wis_uda1342_detach,
114 .command = wis_uda1342_command,
115};
116
117static int __init wis_uda1342_init(void)
118{
119 int r;
120
121 r = i2c_add_driver(&wis_uda1342_driver);
122 if (r < 0)
123 return r;
124 return wis_i2c_add_driver(wis_uda1342_driver.id, wis_uda1342_detect);
125}
126
127static void __exit wis_uda1342_cleanup(void)
128{
129 wis_i2c_del_driver(wis_uda1342_detect);
130 i2c_del_driver(&wis_uda1342_driver);
131}
132
133module_init(wis_uda1342_init);
134module_exit(wis_uda1342_cleanup);
135
136MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/me4000/Kconfig b/drivers/staging/me4000/Kconfig
new file mode 100644
index 00000000000..5e6c9de1f11
--- /dev/null
+++ b/drivers/staging/me4000/Kconfig
@@ -0,0 +1,10 @@
1config ME4000
2 tristate "Meilhaus ME-4000 support"
3 default n
4 depends on PCI
5 help
6 This driver supports the Meilhaus ME-4000 family of boards
7 that do data collection and multipurpose I/O.
8
9 To compile this driver as a module, choose M here: the module
10 will be called me4000.
diff --git a/drivers/staging/me4000/Makefile b/drivers/staging/me4000/Makefile
new file mode 100644
index 00000000000..74487cd7bec
--- /dev/null
+++ b/drivers/staging/me4000/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_ME4000) += me4000.o
diff --git a/drivers/staging/me4000/README b/drivers/staging/me4000/README
new file mode 100644
index 00000000000..bbb83863220
--- /dev/null
+++ b/drivers/staging/me4000/README
@@ -0,0 +1,13 @@
1
2TODO:
3 - checkpatch.pl cleanups
4 - sparse cleanups
5 - possible /proc interaction cleanups
6 - more info needed for Kconfig entry
7 - real device id?
8 - module parameter cleanup
9
10Please send patches to Greg Kroah-Hartman <gregkh@suse.de>
11and Cc: Wolfgang Beiter <w.beiter@aon.at> and
12Guenter Gebhardt <g.gebhardt@meilhaus.de>
13
diff --git a/drivers/staging/me4000/me4000.c b/drivers/staging/me4000/me4000.c
new file mode 100644
index 00000000000..862dd7ffb5c
--- /dev/null
+++ b/drivers/staging/me4000/me4000.c
@@ -0,0 +1,6133 @@
1/* Device driver for Meilhaus ME-4000 board family.
2 * ================================================
3 *
4 * Copyright (C) 2003 Meilhaus Electronic GmbH (support@meilhaus.de)
5 *
6 * This file is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 *
20 * Author: Guenter Gebhardt <g.gebhardt@meilhaus.de>
21 */
22
23#include <linux/module.h>
24#include <linux/fs.h>
25#include <linux/sched.h>
26#include <linux/interrupt.h>
27#include <linux/pci.h>
28#include <asm/io.h>
29#include <asm/system.h>
30#include <asm/uaccess.h>
31#include <linux/errno.h>
32#include <linux/delay.h>
33#include <linux/fs.h>
34#include <linux/mm.h>
35#include <linux/unistd.h>
36#include <linux/list.h>
37#include <linux/proc_fs.h>
38
39#include <linux/poll.h>
40#include <linux/vmalloc.h>
41#include <asm/pgtable.h>
42#include <asm/uaccess.h>
43#include <linux/types.h>
44
45#include <linux/slab.h>
46
47/* Include-File for the Meilhaus ME-4000 I/O board */
48#include "me4000.h"
49#include "me4000_firmware.h"
50#include "me4610_firmware.h"
51
52/* Administrative stuff for modinfo */
53MODULE_AUTHOR("Guenter Gebhardt <g.gebhardt@meilhaus.de>");
54MODULE_DESCRIPTION
55 ("Device Driver Module for Meilhaus ME-4000 boards version 1.0.5");
56MODULE_SUPPORTED_DEVICE("Meilhaus ME-4000 Multi I/O boards");
57MODULE_LICENSE("GPL");
58
59/* Board specific data are kept in a global list */
60LIST_HEAD(me4000_board_info_list);
61
62/* Major Device Numbers. 0 means to get it automatically from the System */
63static int me4000_ao_major_driver_no = 0;
64static int me4000_ai_major_driver_no = 0;
65static int me4000_dio_major_driver_no = 0;
66static int me4000_cnt_major_driver_no = 0;
67static int me4000_ext_int_major_driver_no = 0;
68
69/* Let the user specify a custom major driver number */
70module_param(me4000_ao_major_driver_no, int, 0);
71MODULE_PARM_DESC(me4000_ao_major_driver_no,
72 "Major driver number for analog output (default 0)");
73
74module_param(me4000_ai_major_driver_no, int, 0);
75MODULE_PARM_DESC(me4000_ai_major_driver_no,
76 "Major driver number for analog input (default 0)");
77
78module_param(me4000_dio_major_driver_no, int, 0);
79MODULE_PARM_DESC(me4000_dio_major_driver_no,
80 "Major driver number digital I/O (default 0)");
81
82module_param(me4000_cnt_major_driver_no, int, 0);
83MODULE_PARM_DESC(me4000_cnt_major_driver_no,
84 "Major driver number for counter (default 0)");
85
86module_param(me4000_ext_int_major_driver_no, int, 0);
87MODULE_PARM_DESC(me4000_ext_int_major_driver_no,
88 "Major driver number for external interrupt (default 0)");
89
90/*-----------------------------------------------------------------------------
91 Module stuff
92 ---------------------------------------------------------------------------*/
93int init_module(void);
94void cleanup_module(void);
95
96/*-----------------------------------------------------------------------------
97 Board detection and initialization
98 ---------------------------------------------------------------------------*/
99static int me4000_probe(struct pci_dev *dev, const struct pci_device_id *id);
100static int me4000_xilinx_download(me4000_info_t *);
101static int me4000_reset_board(me4000_info_t *);
102
103static void clear_board_info_list(void);
104static int get_registers(struct pci_dev *dev, me4000_info_t * info);
105static int init_board_info(struct pci_dev *dev, me4000_info_t * board_info);
106static int alloc_ao_contexts(me4000_info_t * info);
107static void release_ao_contexts(me4000_info_t * board_info);
108static int alloc_ai_context(me4000_info_t * info);
109static int alloc_dio_context(me4000_info_t * info);
110static int alloc_cnt_context(me4000_info_t * info);
111static int alloc_ext_int_context(me4000_info_t * info);
112
113/*-----------------------------------------------------------------------------
114 Stuff used by all device parts
115 ---------------------------------------------------------------------------*/
116static int me4000_open(struct inode *, struct file *);
117static int me4000_release(struct inode *, struct file *);
118
119static int me4000_get_user_info(me4000_user_info_t *,
120 me4000_info_t * board_info);
121static int me4000_read_procmem(char *, char **, off_t, int, int *, void *);
122
123/*-----------------------------------------------------------------------------
124 Analog output stuff
125 ---------------------------------------------------------------------------*/
126static ssize_t me4000_ao_write_sing(struct file *, const char *, size_t,
127 loff_t *);
128static ssize_t me4000_ao_write_wrap(struct file *, const char *, size_t,
129 loff_t *);
130static ssize_t me4000_ao_write_cont(struct file *, const char *, size_t,
131 loff_t *);
132
133static int me4000_ao_ioctl_sing(struct inode *, struct file *, unsigned int,
134 unsigned long);
135static int me4000_ao_ioctl_wrap(struct inode *, struct file *, unsigned int,
136 unsigned long);
137static int me4000_ao_ioctl_cont(struct inode *, struct file *, unsigned int,
138 unsigned long);
139
140static unsigned int me4000_ao_poll_cont(struct file *, poll_table *);
141static int me4000_ao_fsync_cont(struct file *, struct dentry *, int);
142
143static int me4000_ao_start(unsigned long *, me4000_ao_context_t *);
144static int me4000_ao_stop(me4000_ao_context_t *);
145static int me4000_ao_immediate_stop(me4000_ao_context_t *);
146static int me4000_ao_timer_set_divisor(u32 *, me4000_ao_context_t *);
147static int me4000_ao_preload(me4000_ao_context_t *);
148static int me4000_ao_preload_update(me4000_ao_context_t *);
149static int me4000_ao_ex_trig_set_edge(int *, me4000_ao_context_t *);
150static int me4000_ao_ex_trig_enable(me4000_ao_context_t *);
151static int me4000_ao_ex_trig_disable(me4000_ao_context_t *);
152static int me4000_ao_prepare(me4000_ao_context_t * ao_info);
153static int me4000_ao_reset(me4000_ao_context_t * ao_info);
154static int me4000_ao_enable_do(me4000_ao_context_t *);
155static int me4000_ao_disable_do(me4000_ao_context_t *);
156static int me4000_ao_fsm_state(int *, me4000_ao_context_t *);
157
158static int me4000_ao_simultaneous_ex_trig(me4000_ao_context_t * ao_context);
159static int me4000_ao_simultaneous_sw(me4000_ao_context_t * ao_context);
160static int me4000_ao_simultaneous_disable(me4000_ao_context_t * ao_context);
161static int me4000_ao_simultaneous_update(me4000_ao_channel_list_t * channels,
162 me4000_ao_context_t * ao_context);
163
164static int me4000_ao_synchronous_ex_trig(me4000_ao_context_t * ao_context);
165static int me4000_ao_synchronous_sw(me4000_ao_context_t * ao_context);
166static int me4000_ao_synchronous_disable(me4000_ao_context_t * ao_context);
167
168static int me4000_ao_ex_trig_timeout(unsigned long *arg,
169 me4000_ao_context_t * ao_context);
170static int me4000_ao_get_free_buffer(unsigned long *arg,
171 me4000_ao_context_t * ao_context);
172
173/*-----------------------------------------------------------------------------
174 Analog input stuff
175 ---------------------------------------------------------------------------*/
176static int me4000_ai_single(me4000_ai_single_t *, me4000_ai_context_t *);
177static int me4000_ai_ioctl_sing(struct inode *, struct file *, unsigned int,
178 unsigned long);
179
180static ssize_t me4000_ai_read(struct file *, char *, size_t, loff_t *);
181static int me4000_ai_ioctl_sw(struct inode *, struct file *, unsigned int,
182 unsigned long);
183static unsigned int me4000_ai_poll(struct file *, poll_table *);
184static int me4000_ai_fasync(int fd, struct file *file_p, int mode);
185
186static int me4000_ai_ioctl_ext(struct inode *, struct file *, unsigned int,
187 unsigned long);
188
189static int me4000_ai_prepare(me4000_ai_context_t * ai_context);
190static int me4000_ai_reset(me4000_ai_context_t * ai_context);
191static int me4000_ai_config(me4000_ai_config_t *, me4000_ai_context_t *);
192static int me4000_ai_start(me4000_ai_context_t *);
193static int me4000_ai_start_ex(unsigned long *, me4000_ai_context_t *);
194static int me4000_ai_stop(me4000_ai_context_t *);
195static int me4000_ai_immediate_stop(me4000_ai_context_t *);
196static int me4000_ai_ex_trig_enable(me4000_ai_context_t *);
197static int me4000_ai_ex_trig_disable(me4000_ai_context_t *);
198static int me4000_ai_ex_trig_setup(me4000_ai_trigger_t *,
199 me4000_ai_context_t *);
200static int me4000_ai_sc_setup(me4000_ai_sc_t * arg,
201 me4000_ai_context_t * ai_context);
202static int me4000_ai_offset_enable(me4000_ai_context_t * ai_context);
203static int me4000_ai_offset_disable(me4000_ai_context_t * ai_context);
204static int me4000_ai_fullscale_enable(me4000_ai_context_t * ai_context);
205static int me4000_ai_fullscale_disable(me4000_ai_context_t * ai_context);
206static int me4000_ai_fsm_state(int *arg, me4000_ai_context_t * ai_context);
207static int me4000_ai_get_count_buffer(unsigned long *arg,
208 me4000_ai_context_t * ai_context);
209
210/*-----------------------------------------------------------------------------
211 EEPROM stuff
212 ---------------------------------------------------------------------------*/
213static int me4000_eeprom_read(me4000_eeprom_t * arg,
214 me4000_ai_context_t * ai_context);
215static int me4000_eeprom_write(me4000_eeprom_t * arg,
216 me4000_ai_context_t * ai_context);
217static unsigned short eeprom_read_cmd(me4000_ai_context_t * ai_context,
218 unsigned long cmd, int length);
219static int eeprom_write_cmd(me4000_ai_context_t * ai_context, unsigned long cmd,
220 int length);
221
222/*-----------------------------------------------------------------------------
223 Digital I/O stuff
224 ---------------------------------------------------------------------------*/
225static int me4000_dio_ioctl(struct inode *, struct file *, unsigned int,
226 unsigned long);
227static int me4000_dio_config(me4000_dio_config_t *, me4000_dio_context_t *);
228static int me4000_dio_get_byte(me4000_dio_byte_t *, me4000_dio_context_t *);
229static int me4000_dio_set_byte(me4000_dio_byte_t *, me4000_dio_context_t *);
230static int me4000_dio_reset(me4000_dio_context_t *);
231
232/*-----------------------------------------------------------------------------
233 Counter stuff
234 ---------------------------------------------------------------------------*/
235static int me4000_cnt_ioctl(struct inode *, struct file *, unsigned int,
236 unsigned long);
237static int me4000_cnt_config(me4000_cnt_config_t *, me4000_cnt_context_t *);
238static int me4000_cnt_read(me4000_cnt_t *, me4000_cnt_context_t *);
239static int me4000_cnt_write(me4000_cnt_t *, me4000_cnt_context_t *);
240static int me4000_cnt_reset(me4000_cnt_context_t *);
241
242/*-----------------------------------------------------------------------------
243 External interrupt routines
244 ---------------------------------------------------------------------------*/
245static int me4000_ext_int_ioctl(struct inode *, struct file *, unsigned int,
246 unsigned long);
247static int me4000_ext_int_enable(me4000_ext_int_context_t *);
248static int me4000_ext_int_disable(me4000_ext_int_context_t *);
249static int me4000_ext_int_count(unsigned long *arg,
250 me4000_ext_int_context_t * ext_int_context);
251static int me4000_ext_int_fasync(int fd, struct file *file_ptr, int mode);
252
253/*-----------------------------------------------------------------------------
254 The interrupt service routines
255 ---------------------------------------------------------------------------*/
256static irqreturn_t me4000_ao_isr(int, void *);
257static irqreturn_t me4000_ai_isr(int, void *);
258static irqreturn_t me4000_ext_int_isr(int, void *);
259
260/*-----------------------------------------------------------------------------
261 Inline functions
262 ---------------------------------------------------------------------------*/
263static int inline me4000_buf_count(me4000_circ_buf_t, int);
264static int inline me4000_buf_space(me4000_circ_buf_t, int);
265static int inline me4000_space_to_end(me4000_circ_buf_t, int);
266static int inline me4000_values_to_end(me4000_circ_buf_t, int);
267
268static void inline me4000_outb(unsigned char value, unsigned long port);
269static void inline me4000_outl(unsigned long value, unsigned long port);
270static unsigned long inline me4000_inl(unsigned long port);
271static unsigned char inline me4000_inb(unsigned long port);
272
273static int me4000_buf_count(me4000_circ_buf_t buf, int size)
274{
275 return ((buf.head - buf.tail) & (size - 1));
276}
277
278static int me4000_buf_space(me4000_circ_buf_t buf, int size)
279{
280 return ((buf.tail - (buf.head + 1)) & (size - 1));
281}
282
283static int me4000_values_to_end(me4000_circ_buf_t buf, int size)
284{
285 int end;
286 int n;
287 end = size - buf.tail;
288 n = (buf.head + end) & (size - 1);
289 return (n < end) ? n : end;
290}
291
292static int me4000_space_to_end(me4000_circ_buf_t buf, int size)
293{
294 int end;
295 int n;
296
297 end = size - 1 - buf.head;
298 n = (end + buf.tail) & (size - 1);
299 return (n <= end) ? n : (end + 1);
300}
301
302static void me4000_outb(unsigned char value, unsigned long port)
303{
304 PORT_PDEBUG("--> 0x%02X port 0x%04lX\n", value, port);
305 outb(value, port);
306}
307
308static void me4000_outl(unsigned long value, unsigned long port)
309{
310 PORT_PDEBUG("--> 0x%08lX port 0x%04lX\n", value, port);
311 outl(value, port);
312}
313
314static unsigned long me4000_inl(unsigned long port)
315{
316 unsigned long value;
317 value = inl(port);
318 PORT_PDEBUG("<-- 0x%08lX port 0x%04lX\n", value, port);
319 return value;
320}
321
322static unsigned char me4000_inb(unsigned long port)
323{
324 unsigned char value;
325 value = inb(port);
326 PORT_PDEBUG("<-- 0x%08X port 0x%04lX\n", value, port);
327 return value;
328}
329
330struct pci_driver me4000_driver = {
331 .name = ME4000_NAME,
332 .id_table = me4000_pci_table,
333 .probe = me4000_probe
334};
335
336static struct file_operations me4000_ao_fops_sing = {
337 owner:THIS_MODULE,
338 write:me4000_ao_write_sing,
339 ioctl:me4000_ao_ioctl_sing,
340 open:me4000_open,
341 release:me4000_release,
342};
343
344static struct file_operations me4000_ao_fops_wrap = {
345 owner:THIS_MODULE,
346 write:me4000_ao_write_wrap,
347 ioctl:me4000_ao_ioctl_wrap,
348 open:me4000_open,
349 release:me4000_release,
350};
351
352static struct file_operations me4000_ao_fops_cont = {
353 owner:THIS_MODULE,
354 write:me4000_ao_write_cont,
355 poll:me4000_ao_poll_cont,
356 ioctl:me4000_ao_ioctl_cont,
357 open:me4000_open,
358 release:me4000_release,
359 fsync:me4000_ao_fsync_cont,
360};
361
362static struct file_operations me4000_ai_fops_sing = {
363 owner:THIS_MODULE,
364 ioctl:me4000_ai_ioctl_sing,
365 open:me4000_open,
366 release:me4000_release,
367};
368
369static struct file_operations me4000_ai_fops_cont_sw = {
370 owner:THIS_MODULE,
371 read:me4000_ai_read,
372 poll:me4000_ai_poll,
373 ioctl:me4000_ai_ioctl_sw,
374 open:me4000_open,
375 release:me4000_release,
376 fasync:me4000_ai_fasync,
377};
378
379static struct file_operations me4000_ai_fops_cont_et = {
380 owner:THIS_MODULE,
381 read:me4000_ai_read,
382 poll:me4000_ai_poll,
383 ioctl:me4000_ai_ioctl_ext,
384 open:me4000_open,
385 release:me4000_release,
386};
387
388static struct file_operations me4000_ai_fops_cont_et_value = {
389 owner:THIS_MODULE,
390 read:me4000_ai_read,
391 poll:me4000_ai_poll,
392 ioctl:me4000_ai_ioctl_ext,
393 open:me4000_open,
394 release:me4000_release,
395};
396
397static struct file_operations me4000_ai_fops_cont_et_chanlist = {
398 owner:THIS_MODULE,
399 read:me4000_ai_read,
400 poll:me4000_ai_poll,
401 ioctl:me4000_ai_ioctl_ext,
402 open:me4000_open,
403 release:me4000_release,
404};
405
406static struct file_operations me4000_dio_fops = {
407 owner:THIS_MODULE,
408 ioctl:me4000_dio_ioctl,
409 open:me4000_open,
410 release:me4000_release,
411};
412
413static struct file_operations me4000_cnt_fops = {
414 owner:THIS_MODULE,
415 ioctl:me4000_cnt_ioctl,
416 open:me4000_open,
417 release:me4000_release,
418};
419
420static struct file_operations me4000_ext_int_fops = {
421 owner:THIS_MODULE,
422 ioctl:me4000_ext_int_ioctl,
423 open:me4000_open,
424 release:me4000_release,
425 fasync:me4000_ext_int_fasync,
426};
427
428static struct file_operations *me4000_ao_fops_array[] = {
429 &me4000_ao_fops_sing, // single operations
430 &me4000_ao_fops_wrap, // wraparound operations
431 &me4000_ao_fops_cont, // continous operations
432};
433
434static struct file_operations *me4000_ai_fops_array[] = {
435 &me4000_ai_fops_sing, // single operations
436 &me4000_ai_fops_cont_sw, // continuous operations with software start
437 &me4000_ai_fops_cont_et, // continous operations with external trigger
438 &me4000_ai_fops_cont_et_value, // sample values by external trigger
439 &me4000_ai_fops_cont_et_chanlist, // work through one channel list by external trigger
440};
441
442int __init me4000_init_module(void)
443{
444 int result = 0;
445
446 CALL_PDEBUG("init_module() is executed\n");
447
448 /* Register driver capabilities */
449 result = pci_register_driver(&me4000_driver);
450 PDEBUG("init_module():%d devices detected\n", result);
451 if (result < 0) {
452 printk(KERN_ERR "ME4000:init_module():Can't register driver\n");
453 goto INIT_ERROR_1;
454 }
455
456 /* Allocate major number for analog output */
457 result =
458 register_chrdev(me4000_ao_major_driver_no, ME4000_AO_NAME,
459 &me4000_ao_fops_sing);
460 if (result < 0) {
461 printk(KERN_ERR "ME4000:init_module():Can't get AO major no\n");
462 goto INIT_ERROR_2;
463 } else {
464 me4000_ao_major_driver_no = result;
465 }
466 PDEBUG("init_module():Major driver number for AO = %ld\n",
467 me4000_ao_major_driver_no);
468
469 /* Allocate major number for analog input */
470 result =
471 register_chrdev(me4000_ai_major_driver_no, ME4000_AI_NAME,
472 &me4000_ai_fops_sing);
473 if (result < 0) {
474 printk(KERN_ERR "ME4000:init_module():Can't get AI major no\n");
475 goto INIT_ERROR_3;
476 } else {
477 me4000_ai_major_driver_no = result;
478 }
479 PDEBUG("init_module():Major driver number for AI = %ld\n",
480 me4000_ai_major_driver_no);
481
482 /* Allocate major number for digital I/O */
483 result =
484 register_chrdev(me4000_dio_major_driver_no, ME4000_DIO_NAME,
485 &me4000_dio_fops);
486 if (result < 0) {
487 printk(KERN_ERR
488 "ME4000:init_module():Can't get DIO major no\n");
489 goto INIT_ERROR_4;
490 } else {
491 me4000_dio_major_driver_no = result;
492 }
493 PDEBUG("init_module():Major driver number for DIO = %ld\n",
494 me4000_dio_major_driver_no);
495
496 /* Allocate major number for counter */
497 result =
498 register_chrdev(me4000_cnt_major_driver_no, ME4000_CNT_NAME,
499 &me4000_cnt_fops);
500 if (result < 0) {
501 printk(KERN_ERR
502 "ME4000:init_module():Can't get CNT major no\n");
503 goto INIT_ERROR_5;
504 } else {
505 me4000_cnt_major_driver_no = result;
506 }
507 PDEBUG("init_module():Major driver number for CNT = %ld\n",
508 me4000_cnt_major_driver_no);
509
510 /* Allocate major number for external interrupt */
511 result =
512 register_chrdev(me4000_ext_int_major_driver_no, ME4000_EXT_INT_NAME,
513 &me4000_ext_int_fops);
514 if (result < 0) {
515 printk(KERN_ERR
516 "ME4000:init_module():Can't get major no for external interrupt\n");
517 goto INIT_ERROR_6;
518 } else {
519 me4000_ext_int_major_driver_no = result;
520 }
521 PDEBUG
522 ("init_module():Major driver number for external interrupt = %ld\n",
523 me4000_ext_int_major_driver_no);
524
525 /* Create the /proc/me4000 entry */
526 if (!create_proc_read_entry
527 ("me4000", 0, NULL, me4000_read_procmem, NULL)) {
528 result = -ENODEV;
529 printk(KERN_ERR
530 "ME4000:init_module():Can't create proc entry\n");
531 goto INIT_ERROR_7;
532 }
533
534 return 0;
535
536 INIT_ERROR_7:
537 unregister_chrdev(me4000_ext_int_major_driver_no, ME4000_EXT_INT_NAME);
538
539 INIT_ERROR_6:
540 unregister_chrdev(me4000_cnt_major_driver_no, ME4000_CNT_NAME);
541
542 INIT_ERROR_5:
543 unregister_chrdev(me4000_dio_major_driver_no, ME4000_DIO_NAME);
544
545 INIT_ERROR_4:
546 unregister_chrdev(me4000_ai_major_driver_no, ME4000_AI_NAME);
547
548 INIT_ERROR_3:
549 unregister_chrdev(me4000_ao_major_driver_no, ME4000_AO_NAME);
550
551 INIT_ERROR_2:
552 pci_unregister_driver(&me4000_driver);
553 clear_board_info_list();
554
555 INIT_ERROR_1:
556 return result;
557}
558
559module_init(me4000_init_module);
560
561static void clear_board_info_list(void)
562{
563 struct list_head *board_p;
564 struct list_head *dac_p;
565 me4000_info_t *board_info;
566 me4000_ao_context_t *ao_context;
567
568 /* Clear context lists */
569 for (board_p = me4000_board_info_list.next;
570 board_p != &me4000_board_info_list; board_p = board_p->next) {
571 board_info = list_entry(board_p, me4000_info_t, list);
572 /* Clear analog output context list */
573 while (!list_empty(&board_info->ao_context_list)) {
574 dac_p = board_info->ao_context_list.next;
575 ao_context =
576 list_entry(dac_p, me4000_ao_context_t, list);
577 me4000_ao_reset(ao_context);
578 free_irq(ao_context->irq, ao_context);
579 if (ao_context->circ_buf.buf)
580 kfree(ao_context->circ_buf.buf);
581 list_del(dac_p);
582 kfree(ao_context);
583 }
584
585 /* Clear analog input context */
586 if (board_info->ai_context->circ_buf.buf)
587 kfree(board_info->ai_context->circ_buf.buf);
588 kfree(board_info->ai_context);
589
590 /* Clear digital I/O context */
591 kfree(board_info->dio_context);
592
593 /* Clear counter context */
594 kfree(board_info->cnt_context);
595
596 /* Clear external interrupt context */
597 kfree(board_info->ext_int_context);
598 }
599
600 /* Clear the board info list */
601 while (!list_empty(&me4000_board_info_list)) {
602 board_p = me4000_board_info_list.next;
603 board_info = list_entry(board_p, me4000_info_t, list);
604 pci_release_regions(board_info->pci_dev_p);
605 list_del(board_p);
606 kfree(board_info);
607 }
608}
609
610static int get_registers(struct pci_dev *dev, me4000_info_t * board_info)
611{
612
613 /*--------------------------- plx regbase ---------------------------------*/
614
615 board_info->plx_regbase = pci_resource_start(dev, 1);
616 if (board_info->plx_regbase == 0) {
617 printk(KERN_ERR
618 "ME4000:get_registers():PCI base address 1 is not available\n");
619 return -ENODEV;
620 }
621 board_info->plx_regbase_size = pci_resource_len(dev, 1);
622
623 PDEBUG
624 ("get_registers():PLX configuration registers at address 0x%4lX [0x%4lX]\n",
625 board_info->plx_regbase, board_info->plx_regbase_size);
626
627 /*--------------------------- me4000 regbase ------------------------------*/
628
629 board_info->me4000_regbase = pci_resource_start(dev, 2);
630 if (board_info->me4000_regbase == 0) {
631 printk(KERN_ERR
632 "ME4000:get_registers():PCI base address 2 is not available\n");
633 return -ENODEV;
634 }
635 board_info->me4000_regbase_size = pci_resource_len(dev, 2);
636
637 PDEBUG("get_registers():ME4000 registers at address 0x%4lX [0x%4lX]\n",
638 board_info->me4000_regbase, board_info->me4000_regbase_size);
639
640 /*--------------------------- timer regbase ------------------------------*/
641
642 board_info->timer_regbase = pci_resource_start(dev, 3);
643 if (board_info->timer_regbase == 0) {
644 printk(KERN_ERR
645 "ME4000:get_registers():PCI base address 3 is not available\n");
646 return -ENODEV;
647 }
648 board_info->timer_regbase_size = pci_resource_len(dev, 3);
649
650 PDEBUG("get_registers():Timer registers at address 0x%4lX [0x%4lX]\n",
651 board_info->timer_regbase, board_info->timer_regbase_size);
652
653 /*--------------------------- program regbase ------------------------------*/
654
655 board_info->program_regbase = pci_resource_start(dev, 5);
656 if (board_info->program_regbase == 0) {
657 printk(KERN_ERR
658 "get_registers():ME4000:PCI base address 5 is not available\n");
659 return -ENODEV;
660 }
661 board_info->program_regbase_size = pci_resource_len(dev, 5);
662
663 PDEBUG("get_registers():Program registers at address 0x%4lX [0x%4lX]\n",
664 board_info->program_regbase, board_info->program_regbase_size);
665
666 return 0;
667}
668
669static int init_board_info(struct pci_dev *pci_dev_p,
670 me4000_info_t * board_info)
671{
672 int i;
673 int result;
674 struct list_head *board_p;
675 board_info->pci_dev_p = pci_dev_p;
676
677 for (i = 0; i < ME4000_BOARD_VERSIONS; i++) {
678 if (me4000_boards[i].device_id == pci_dev_p->device) {
679 board_info->board_p = &me4000_boards[i];
680 break;
681 }
682 }
683 if (i == ME4000_BOARD_VERSIONS) {
684 printk(KERN_ERR
685 "ME4000:init_board_info():Device ID not valid\n");
686 return -ENODEV;
687 }
688
689 /* Get the index of the board in the global list */
690 for (board_p = me4000_board_info_list.next, i = 0;
691 board_p != &me4000_board_info_list; board_p = board_p->next, i++) {
692 if (board_p == &board_info->list) {
693 board_info->board_count = i;
694 break;
695 }
696 }
697 if (board_p == &me4000_board_info_list) {
698 printk(KERN_ERR
699 "ME4000:init_board_info():Cannot get index of baord\n");
700 return -ENODEV;
701 }
702
703 /* Init list head for analog output contexts */
704 INIT_LIST_HEAD(&board_info->ao_context_list);
705
706 /* Init spin locks */
707 spin_lock_init(&board_info->preload_lock);
708 spin_lock_init(&board_info->ai_ctrl_lock);
709
710 /* Get the serial number */
711 result = pci_read_config_dword(pci_dev_p, 0x2C, &board_info->serial_no);
712 if (result != PCIBIOS_SUCCESSFUL) {
713 printk(KERN_WARNING
714 "ME4000:init_board_info: Can't get serial_no\n");
715 return result;
716 }
717 PDEBUG("init_board_info():serial_no = 0x%x\n", board_info->serial_no);
718
719 /* Get the hardware revision */
720 result =
721 pci_read_config_byte(pci_dev_p, 0x08, &board_info->hw_revision);
722 if (result != PCIBIOS_SUCCESSFUL) {
723 printk(KERN_WARNING
724 "ME4000:init_board_info():Can't get hw_revision\n");
725 return result;
726 }
727 PDEBUG("init_board_info():hw_revision = 0x%x\n",
728 board_info->hw_revision);
729
730 /* Get the vendor id */
731 board_info->vendor_id = pci_dev_p->vendor;
732 PDEBUG("init_board_info():vendor_id = 0x%x\n", board_info->vendor_id);
733
734 /* Get the device id */
735 board_info->device_id = pci_dev_p->device;
736 PDEBUG("init_board_info():device_id = 0x%x\n", board_info->device_id);
737
738 /* Get the pci device number */
739 board_info->pci_dev_no = PCI_FUNC(pci_dev_p->devfn);
740 PDEBUG("init_board_info():pci_func_no = 0x%x\n",
741 board_info->pci_func_no);
742
743 /* Get the pci slot number */
744 board_info->pci_dev_no = PCI_SLOT(pci_dev_p->devfn);
745 PDEBUG("init_board_info():pci_dev_no = 0x%x\n", board_info->pci_dev_no);
746
747 /* Get the pci bus number */
748 board_info->pci_bus_no = pci_dev_p->bus->number;
749 PDEBUG("init_board_info():pci_bus_no = 0x%x\n", board_info->pci_bus_no);
750
751 /* Get the irq assigned to the board */
752 board_info->irq = pci_dev_p->irq;
753 PDEBUG("init_board_info():irq = %d\n", board_info->irq);
754
755 return 0;
756}
757
758static int alloc_ao_contexts(me4000_info_t * info)
759{
760 int i;
761 int err;
762 me4000_ao_context_t *ao_context;
763
764 for (i = 0; i < info->board_p->ao.count; i++) {
765 ao_context = kmalloc(sizeof(me4000_ao_context_t), GFP_KERNEL);
766 if (!ao_context) {
767 printk(KERN_ERR
768 "alloc_ao_contexts():Can't get memory for ao context\n");
769 release_ao_contexts(info);
770 return -ENOMEM;
771 }
772 memset(ao_context, 0, sizeof(me4000_ao_context_t));
773
774 spin_lock_init(&ao_context->use_lock);
775 spin_lock_init(&ao_context->int_lock);
776 ao_context->irq = info->irq;
777 init_waitqueue_head(&ao_context->wait_queue);
778 ao_context->board_info = info;
779
780 if (info->board_p->ao.fifo_count) {
781 /* Allocate circular buffer */
782 ao_context->circ_buf.buf =
783 kmalloc(ME4000_AO_BUFFER_SIZE, GFP_KERNEL);
784 if (!ao_context->circ_buf.buf) {
785 printk(KERN_ERR
786 "alloc_ao_contexts():Can't get circular buffer\n");
787 release_ao_contexts(info);
788 return -ENOMEM;
789 }
790 memset(ao_context->circ_buf.buf, 0,
791 ME4000_AO_BUFFER_SIZE);
792
793 /* Clear the circular buffer */
794 ao_context->circ_buf.head = 0;
795 ao_context->circ_buf.tail = 0;
796 }
797
798 switch (i) {
799 case 0:
800 ao_context->ctrl_reg =
801 info->me4000_regbase + ME4000_AO_00_CTRL_REG;
802 ao_context->status_reg =
803 info->me4000_regbase + ME4000_AO_00_STATUS_REG;
804 ao_context->fifo_reg =
805 info->me4000_regbase + ME4000_AO_00_FIFO_REG;
806 ao_context->single_reg =
807 info->me4000_regbase + ME4000_AO_00_SINGLE_REG;
808 ao_context->timer_reg =
809 info->me4000_regbase + ME4000_AO_00_TIMER_REG;
810 ao_context->irq_status_reg =
811 info->me4000_regbase + ME4000_IRQ_STATUS_REG;
812 ao_context->preload_reg =
813 info->me4000_regbase + ME4000_AO_LOADSETREG_XX;
814 break;
815 case 1:
816 ao_context->ctrl_reg =
817 info->me4000_regbase + ME4000_AO_01_CTRL_REG;
818 ao_context->status_reg =
819 info->me4000_regbase + ME4000_AO_01_STATUS_REG;
820 ao_context->fifo_reg =
821 info->me4000_regbase + ME4000_AO_01_FIFO_REG;
822 ao_context->single_reg =
823 info->me4000_regbase + ME4000_AO_01_SINGLE_REG;
824 ao_context->timer_reg =
825 info->me4000_regbase + ME4000_AO_01_TIMER_REG;
826 ao_context->irq_status_reg =
827 info->me4000_regbase + ME4000_IRQ_STATUS_REG;
828 ao_context->preload_reg =
829 info->me4000_regbase + ME4000_AO_LOADSETREG_XX;
830 break;
831 case 2:
832 ao_context->ctrl_reg =
833 info->me4000_regbase + ME4000_AO_02_CTRL_REG;
834 ao_context->status_reg =
835 info->me4000_regbase + ME4000_AO_02_STATUS_REG;
836 ao_context->fifo_reg =
837 info->me4000_regbase + ME4000_AO_02_FIFO_REG;
838 ao_context->single_reg =
839 info->me4000_regbase + ME4000_AO_02_SINGLE_REG;
840 ao_context->timer_reg =
841 info->me4000_regbase + ME4000_AO_02_TIMER_REG;
842 ao_context->irq_status_reg =
843 info->me4000_regbase + ME4000_IRQ_STATUS_REG;
844 ao_context->preload_reg =
845 info->me4000_regbase + ME4000_AO_LOADSETREG_XX;
846 break;
847 case 3:
848 ao_context->ctrl_reg =
849 info->me4000_regbase + ME4000_AO_03_CTRL_REG;
850 ao_context->status_reg =
851 info->me4000_regbase + ME4000_AO_03_STATUS_REG;
852 ao_context->fifo_reg =
853 info->me4000_regbase + ME4000_AO_03_FIFO_REG;
854 ao_context->single_reg =
855 info->me4000_regbase + ME4000_AO_03_SINGLE_REG;
856 ao_context->timer_reg =
857 info->me4000_regbase + ME4000_AO_03_TIMER_REG;
858 ao_context->irq_status_reg =
859 info->me4000_regbase + ME4000_IRQ_STATUS_REG;
860 ao_context->preload_reg =
861 info->me4000_regbase + ME4000_AO_LOADSETREG_XX;
862 break;
863 default:
864 break;
865 }
866
867 if (info->board_p->ao.fifo_count) {
868 /* Request the interrupt line */
869 err =
870 request_irq(ao_context->irq, me4000_ao_isr,
871 IRQF_DISABLED | IRQF_SHARED,
872 ME4000_NAME, ao_context);
873 if (err) {
874 printk(KERN_ERR
875 "alloc_ao_contexts():Can't get interrupt line");
876 if (ao_context->circ_buf.buf)
877 kfree(ao_context->circ_buf.buf);
878 kfree(ao_context);
879 release_ao_contexts(info);
880 return -ENODEV;
881 }
882 }
883
884 list_add_tail(&ao_context->list, &info->ao_context_list);
885 ao_context->index = i;
886 }
887
888 return 0;
889}
890
891static void release_ao_contexts(me4000_info_t * board_info)
892{
893 struct list_head *dac_p;
894 me4000_ao_context_t *ao_context;
895
896 /* Clear analog output context list */
897 while (!list_empty(&board_info->ao_context_list)) {
898 dac_p = board_info->ao_context_list.next;
899 ao_context = list_entry(dac_p, me4000_ao_context_t, list);
900 free_irq(ao_context->irq, ao_context);
901 if (ao_context->circ_buf.buf)
902 kfree(ao_context->circ_buf.buf);
903 list_del(dac_p);
904 kfree(ao_context);
905 }
906}
907
908static int alloc_ai_context(me4000_info_t * info)
909{
910 me4000_ai_context_t *ai_context;
911
912 if (info->board_p->ai.count) {
913 ai_context = kmalloc(sizeof(me4000_ai_context_t), GFP_KERNEL);
914 if (!ai_context) {
915 printk(KERN_ERR
916 "ME4000:alloc_ai_context():Can't get memory for ai context\n");
917 return -ENOMEM;
918 }
919 memset(ai_context, 0, sizeof(me4000_ai_context_t));
920
921 info->ai_context = ai_context;
922
923 spin_lock_init(&ai_context->use_lock);
924 spin_lock_init(&ai_context->int_lock);
925 ai_context->number = 0;
926 ai_context->irq = info->irq;
927 init_waitqueue_head(&ai_context->wait_queue);
928 ai_context->board_info = info;
929
930 ai_context->ctrl_reg =
931 info->me4000_regbase + ME4000_AI_CTRL_REG;
932 ai_context->status_reg =
933 info->me4000_regbase + ME4000_AI_STATUS_REG;
934 ai_context->channel_list_reg =
935 info->me4000_regbase + ME4000_AI_CHANNEL_LIST_REG;
936 ai_context->data_reg =
937 info->me4000_regbase + ME4000_AI_DATA_REG;
938 ai_context->chan_timer_reg =
939 info->me4000_regbase + ME4000_AI_CHAN_TIMER_REG;
940 ai_context->chan_pre_timer_reg =
941 info->me4000_regbase + ME4000_AI_CHAN_PRE_TIMER_REG;
942 ai_context->scan_timer_low_reg =
943 info->me4000_regbase + ME4000_AI_SCAN_TIMER_LOW_REG;
944 ai_context->scan_timer_high_reg =
945 info->me4000_regbase + ME4000_AI_SCAN_TIMER_HIGH_REG;
946 ai_context->scan_pre_timer_low_reg =
947 info->me4000_regbase + ME4000_AI_SCAN_PRE_TIMER_LOW_REG;
948 ai_context->scan_pre_timer_high_reg =
949 info->me4000_regbase + ME4000_AI_SCAN_PRE_TIMER_HIGH_REG;
950 ai_context->start_reg =
951 info->me4000_regbase + ME4000_AI_START_REG;
952 ai_context->irq_status_reg =
953 info->me4000_regbase + ME4000_IRQ_STATUS_REG;
954 ai_context->sample_counter_reg =
955 info->me4000_regbase + ME4000_AI_SAMPLE_COUNTER_REG;
956 }
957
958 return 0;
959}
960
961static int alloc_dio_context(me4000_info_t * info)
962{
963 me4000_dio_context_t *dio_context;
964
965 if (info->board_p->dio.count) {
966 dio_context = kmalloc(sizeof(me4000_dio_context_t), GFP_KERNEL);
967 if (!dio_context) {
968 printk(KERN_ERR
969 "ME4000:alloc_dio_context():Can't get memory for dio context\n");
970 return -ENOMEM;
971 }
972 memset(dio_context, 0, sizeof(me4000_dio_context_t));
973
974 info->dio_context = dio_context;
975
976 spin_lock_init(&dio_context->use_lock);
977 dio_context->board_info = info;
978
979 dio_context->dio_count = info->board_p->dio.count;
980
981 dio_context->dir_reg =
982 info->me4000_regbase + ME4000_DIO_DIR_REG;
983 dio_context->ctrl_reg =
984 info->me4000_regbase + ME4000_DIO_CTRL_REG;
985 dio_context->port_0_reg =
986 info->me4000_regbase + ME4000_DIO_PORT_0_REG;
987 dio_context->port_1_reg =
988 info->me4000_regbase + ME4000_DIO_PORT_1_REG;
989 dio_context->port_2_reg =
990 info->me4000_regbase + ME4000_DIO_PORT_2_REG;
991 dio_context->port_3_reg =
992 info->me4000_regbase + ME4000_DIO_PORT_3_REG;
993 }
994
995 return 0;
996}
997
998static int alloc_cnt_context(me4000_info_t * info)
999{
1000 me4000_cnt_context_t *cnt_context;
1001
1002 if (info->board_p->cnt.count) {
1003 cnt_context = kmalloc(sizeof(me4000_cnt_context_t), GFP_KERNEL);
1004 if (!cnt_context) {
1005 printk(KERN_ERR
1006 "ME4000:alloc_cnt_context():Can't get memory for cnt context\n");
1007 return -ENOMEM;
1008 }
1009 memset(cnt_context, 0, sizeof(me4000_cnt_context_t));
1010
1011 info->cnt_context = cnt_context;
1012
1013 spin_lock_init(&cnt_context->use_lock);
1014 cnt_context->board_info = info;
1015
1016 cnt_context->ctrl_reg =
1017 info->timer_regbase + ME4000_CNT_CTRL_REG;
1018 cnt_context->counter_0_reg =
1019 info->timer_regbase + ME4000_CNT_COUNTER_0_REG;
1020 cnt_context->counter_1_reg =
1021 info->timer_regbase + ME4000_CNT_COUNTER_1_REG;
1022 cnt_context->counter_2_reg =
1023 info->timer_regbase + ME4000_CNT_COUNTER_2_REG;
1024 }
1025
1026 return 0;
1027}
1028
1029static int alloc_ext_int_context(me4000_info_t * info)
1030{
1031 me4000_ext_int_context_t *ext_int_context;
1032
1033 if (info->board_p->cnt.count) {
1034 ext_int_context =
1035 kmalloc(sizeof(me4000_ext_int_context_t), GFP_KERNEL);
1036 if (!ext_int_context) {
1037 printk(KERN_ERR
1038 "ME4000:alloc_ext_int_context():Can't get memory for cnt context\n");
1039 return -ENOMEM;
1040 }
1041 memset(ext_int_context, 0, sizeof(me4000_ext_int_context_t));
1042
1043 info->ext_int_context = ext_int_context;
1044
1045 spin_lock_init(&ext_int_context->use_lock);
1046 ext_int_context->board_info = info;
1047
1048 ext_int_context->fasync_ptr = NULL;
1049 ext_int_context->irq = info->irq;
1050
1051 ext_int_context->ctrl_reg =
1052 info->me4000_regbase + ME4000_AI_CTRL_REG;
1053 ext_int_context->irq_status_reg =
1054 info->me4000_regbase + ME4000_IRQ_STATUS_REG;
1055 }
1056
1057 return 0;
1058}
1059
1060static int me4000_probe(struct pci_dev *dev, const struct pci_device_id *id)
1061{
1062 int result = 0;
1063 me4000_info_t *board_info;
1064
1065 CALL_PDEBUG("me4000_probe() is executed\n");
1066
1067 /* Allocate structure for board context */
1068 board_info = kmalloc(sizeof(me4000_info_t), GFP_KERNEL);
1069 if (!board_info) {
1070 printk(KERN_ERR
1071 "ME4000:Can't get memory for board info structure\n");
1072 result = -ENOMEM;
1073 goto PROBE_ERROR_1;
1074 }
1075 memset(board_info, 0, sizeof(me4000_info_t));
1076
1077 /* Add to global linked list */
1078 list_add_tail(&board_info->list, &me4000_board_info_list);
1079
1080 /* Get the PCI base registers */
1081 result = get_registers(dev, board_info);
1082 if (result) {
1083 printk(KERN_ERR "me4000_probe():Cannot get registers\n");
1084 goto PROBE_ERROR_2;
1085 }
1086
1087 /* Enable the device */
1088 result = pci_enable_device(dev);
1089 if (result < 0) {
1090 printk(KERN_ERR "me4000_probe():Cannot enable PCI device\n");
1091 goto PROBE_ERROR_2;
1092 }
1093
1094 /* Request the PCI register regions */
1095 result = pci_request_regions(dev, ME4000_NAME);
1096 if (result < 0) {
1097 printk(KERN_ERR "me4000_probe():Cannot request I/O regions\n");
1098 goto PROBE_ERROR_2;
1099 }
1100
1101 /* Initialize board info */
1102 result = init_board_info(dev, board_info);
1103 if (result) {
1104 printk(KERN_ERR "me4000_probe():Cannot init baord info\n");
1105 goto PROBE_ERROR_3;
1106 }
1107
1108 /* Download the xilinx firmware */
1109 result = me4000_xilinx_download(board_info);
1110 if (result) {
1111 printk(KERN_ERR "me4000_probe:Can't download firmware\n");
1112 goto PROBE_ERROR_3;
1113 }
1114
1115 /* Make a hardware reset */
1116 result = me4000_reset_board(board_info);
1117 if (result) {
1118 printk(KERN_ERR "me4000_probe:Can't reset board\n");
1119 goto PROBE_ERROR_3;
1120 }
1121
1122 /* Allocate analog output context structures */
1123 result = alloc_ao_contexts(board_info);
1124 if (result) {
1125 printk(KERN_ERR "me4000_probe():Cannot allocate ao contexts\n");
1126 goto PROBE_ERROR_3;
1127 }
1128
1129 /* Allocate analog input context */
1130 result = alloc_ai_context(board_info);
1131 if (result) {
1132 printk(KERN_ERR "me4000_probe():Cannot allocate ai context\n");
1133 goto PROBE_ERROR_4;
1134 }
1135
1136 /* Allocate digital I/O context */
1137 result = alloc_dio_context(board_info);
1138 if (result) {
1139 printk(KERN_ERR "me4000_probe():Cannot allocate dio context\n");
1140 goto PROBE_ERROR_5;
1141 }
1142
1143 /* Allocate counter context */
1144 result = alloc_cnt_context(board_info);
1145 if (result) {
1146 printk(KERN_ERR "me4000_probe():Cannot allocate cnt context\n");
1147 goto PROBE_ERROR_6;
1148 }
1149
1150 /* Allocate external interrupt context */
1151 result = alloc_ext_int_context(board_info);
1152 if (result) {
1153 printk(KERN_ERR
1154 "me4000_probe():Cannot allocate ext_int context\n");
1155 goto PROBE_ERROR_7;
1156 }
1157
1158 return 0;
1159
1160 PROBE_ERROR_7:
1161 kfree(board_info->cnt_context);
1162
1163 PROBE_ERROR_6:
1164 kfree(board_info->dio_context);
1165
1166 PROBE_ERROR_5:
1167 kfree(board_info->ai_context);
1168
1169 PROBE_ERROR_4:
1170 release_ao_contexts(board_info);
1171
1172 PROBE_ERROR_3:
1173 pci_release_regions(dev);
1174
1175 PROBE_ERROR_2:
1176 list_del(&board_info->list);
1177 kfree(board_info);
1178
1179 PROBE_ERROR_1:
1180 return result;
1181}
1182
1183static int me4000_xilinx_download(me4000_info_t * info)
1184{
1185 int size = 0;
1186 u32 value = 0;
1187 int idx = 0;
1188 unsigned char *firm;
1189 wait_queue_head_t queue;
1190
1191 CALL_PDEBUG("me4000_xilinx_download() is executed\n");
1192
1193 init_waitqueue_head(&queue);
1194
1195 firm = (info->device_id == 0x4610) ? xilinx_firm_4610 : xilinx_firm;
1196
1197 /*
1198 * Set PLX local interrupt 2 polarity to high.
1199 * Interrupt is thrown by init pin of xilinx.
1200 */
1201 outl(0x10, info->plx_regbase + PLX_INTCSR);
1202
1203 /* Set /CS and /WRITE of the Xilinx */
1204 value = inl(info->plx_regbase + PLX_ICR);
1205 value |= 0x100;
1206 outl(value, info->plx_regbase + PLX_ICR);
1207
1208 /* Init Xilinx with CS1 */
1209 inb(info->program_regbase + 0xC8);
1210
1211 /* Wait until /INIT pin is set */
1212 udelay(20);
1213 if (!inl(info->plx_regbase + PLX_INTCSR) & 0x20) {
1214 printk(KERN_ERR "me4000_xilinx_download():Can't init Xilinx\n");
1215 return -EIO;
1216 }
1217
1218 /* Reset /CS and /WRITE of the Xilinx */
1219 value = inl(info->plx_regbase + PLX_ICR);
1220 value &= ~0x100;
1221 outl(value, info->plx_regbase + PLX_ICR);
1222
1223 /* Download Xilinx firmware */
1224 size = (firm[0] << 24) + (firm[1] << 16) + (firm[2] << 8) + firm[3];
1225 udelay(10);
1226
1227 for (idx = 0; idx < size; idx++) {
1228 outb(firm[16 + idx], info->program_regbase);
1229
1230 udelay(10);
1231
1232 /* Check if BUSY flag is low */
1233 if (inl(info->plx_regbase + PLX_ICR) & 0x20) {
1234 printk(KERN_ERR
1235 "me4000_xilinx_download():Xilinx is still busy (idx = %d)\n",
1236 idx);
1237 return -EIO;
1238 }
1239 }
1240
1241 PDEBUG("me4000_xilinx_download():%d bytes written\n", idx);
1242
1243 /* If done flag is high download was successful */
1244 if (inl(info->plx_regbase + PLX_ICR) & 0x4) {
1245 PDEBUG("me4000_xilinx_download():Done flag is set\n");
1246 PDEBUG("me4000_xilinx_download():Download was successful\n");
1247 } else {
1248 printk(KERN_ERR
1249 "ME4000:me4000_xilinx_download():DONE flag is not set\n");
1250 printk(KERN_ERR
1251 "ME4000:me4000_xilinx_download():Download not succesful\n");
1252 return -EIO;
1253 }
1254
1255 /* Set /CS and /WRITE */
1256 value = inl(info->plx_regbase + PLX_ICR);
1257 value |= 0x100;
1258 outl(value, info->plx_regbase + PLX_ICR);
1259
1260 return 0;
1261}
1262
1263static int me4000_reset_board(me4000_info_t * info)
1264{
1265 unsigned long icr;
1266
1267 CALL_PDEBUG("me4000_reset_board() is executed\n");
1268
1269 /* Make a hardware reset */
1270 icr = me4000_inl(info->plx_regbase + PLX_ICR);
1271 icr |= 0x40000000;
1272 me4000_outl(icr, info->plx_regbase + PLX_ICR);
1273 icr &= ~0x40000000;
1274 me4000_outl(icr, info->plx_regbase + PLX_ICR);
1275
1276 /* Set both stop bits in the analog input control register */
1277 me4000_outl(ME4000_AI_CTRL_BIT_IMMEDIATE_STOP | ME4000_AI_CTRL_BIT_STOP,
1278 info->me4000_regbase + ME4000_AI_CTRL_REG);
1279
1280 /* Set both stop bits in the analog output control register */
1281 me4000_outl(ME4000_AO_CTRL_BIT_IMMEDIATE_STOP | ME4000_AO_CTRL_BIT_STOP,
1282 info->me4000_regbase + ME4000_AO_00_CTRL_REG);
1283 me4000_outl(ME4000_AO_CTRL_BIT_IMMEDIATE_STOP | ME4000_AO_CTRL_BIT_STOP,
1284 info->me4000_regbase + ME4000_AO_01_CTRL_REG);
1285 me4000_outl(ME4000_AO_CTRL_BIT_IMMEDIATE_STOP | ME4000_AO_CTRL_BIT_STOP,
1286 info->me4000_regbase + ME4000_AO_02_CTRL_REG);
1287 me4000_outl(ME4000_AO_CTRL_BIT_IMMEDIATE_STOP | ME4000_AO_CTRL_BIT_STOP,
1288 info->me4000_regbase + ME4000_AO_03_CTRL_REG);
1289
1290 /* 0x8000 to the DACs means an output voltage of 0V */
1291 me4000_outl(0x8000, info->me4000_regbase + ME4000_AO_00_SINGLE_REG);
1292 me4000_outl(0x8000, info->me4000_regbase + ME4000_AO_01_SINGLE_REG);
1293 me4000_outl(0x8000, info->me4000_regbase + ME4000_AO_02_SINGLE_REG);
1294 me4000_outl(0x8000, info->me4000_regbase + ME4000_AO_03_SINGLE_REG);
1295
1296 /* Enable interrupts on the PLX */
1297 me4000_outl(0x43, info->plx_regbase + PLX_INTCSR);
1298
1299 /* Set the adustment register for AO demux */
1300 me4000_outl(ME4000_AO_DEMUX_ADJUST_VALUE,
1301 info->me4000_regbase + ME4000_AO_DEMUX_ADJUST_REG);
1302
1303 /* Set digital I/O direction for port 0 to output on isolated versions */
1304 if (!(me4000_inl(info->me4000_regbase + ME4000_DIO_DIR_REG) & 0x1)) {
1305 me4000_outl(0x1, info->me4000_regbase + ME4000_DIO_CTRL_REG);
1306 }
1307
1308 return 0;
1309}
1310
1311static int me4000_open(struct inode *inode_p, struct file *file_p)
1312{
1313 int board, dev, mode;
1314 int err = 0;
1315 int i;
1316 struct list_head *ptr;
1317 me4000_info_t *board_info = NULL;
1318 me4000_ao_context_t *ao_context = NULL;
1319 me4000_ai_context_t *ai_context = NULL;
1320 me4000_dio_context_t *dio_context = NULL;
1321 me4000_cnt_context_t *cnt_context = NULL;
1322 me4000_ext_int_context_t *ext_int_context = NULL;
1323
1324 CALL_PDEBUG("me4000_open() is executed\n");
1325
1326 /* Analog output */
1327 if (MAJOR(inode_p->i_rdev) == me4000_ao_major_driver_no) {
1328 board = AO_BOARD(inode_p->i_rdev);
1329 dev = AO_PORT(inode_p->i_rdev);
1330 mode = AO_MODE(inode_p->i_rdev);
1331
1332 PDEBUG("me4000_open():board = %d ao = %d mode = %d\n", board,
1333 dev, mode);
1334
1335 /* Search for the board context */
1336 for (ptr = me4000_board_info_list.next, i = 0;
1337 ptr != &me4000_board_info_list; ptr = ptr->next, i++) {
1338 board_info = list_entry(ptr, me4000_info_t, list);
1339 if (i == board)
1340 break;
1341 }
1342
1343 if (ptr == &me4000_board_info_list) {
1344 printk(KERN_ERR
1345 "ME4000:me4000_open():Board %d not in device list\n",
1346 board);
1347 return -ENODEV;
1348 }
1349
1350 /* Search for the dac context */
1351 for (ptr = board_info->ao_context_list.next, i = 0;
1352 ptr != &board_info->ao_context_list;
1353 ptr = ptr->next, i++) {
1354 ao_context = list_entry(ptr, me4000_ao_context_t, list);
1355 if (i == dev)
1356 break;
1357 }
1358
1359 if (ptr == &board_info->ao_context_list) {
1360 printk(KERN_ERR
1361 "ME4000:me4000_open():Device %d not in device list\n",
1362 dev);
1363 return -ENODEV;
1364 }
1365
1366 /* Check if mode is valid */
1367 if (mode > 2) {
1368 printk(KERN_ERR
1369 "ME4000:me4000_open():Mode is not valid\n");
1370 return -ENODEV;
1371 }
1372
1373 /* Check if mode is valid for this AO */
1374 if ((mode != ME4000_AO_CONV_MODE_SINGLE)
1375 && (dev >= board_info->board_p->ao.fifo_count)) {
1376 printk(KERN_ERR
1377 "ME4000:me4000_open():AO %d only in single mode available\n",
1378 dev);
1379 return -ENODEV;
1380 }
1381
1382 /* Check if already opened */
1383 spin_lock(&ao_context->use_lock);
1384 if (ao_context->dac_in_use) {
1385 printk(KERN_ERR
1386 "ME4000:me4000_open():AO %d already in use\n",
1387 dev);
1388 spin_unlock(&ao_context->use_lock);
1389 return -EBUSY;
1390 }
1391 ao_context->dac_in_use = 1;
1392 spin_unlock(&ao_context->use_lock);
1393
1394 ao_context->mode = mode;
1395
1396 /* Hold the context in private data */
1397 file_p->private_data = ao_context;
1398
1399 /* Set file operations pointer */
1400 file_p->f_op = me4000_ao_fops_array[mode];
1401
1402 err = me4000_ao_prepare(ao_context);
1403 if (err) {
1404 ao_context->dac_in_use = 0;
1405 return 1;
1406 }
1407 }
1408 /* Analog input */
1409 else if (MAJOR(inode_p->i_rdev) == me4000_ai_major_driver_no) {
1410 board = AI_BOARD(inode_p->i_rdev);
1411 mode = AI_MODE(inode_p->i_rdev);
1412
1413 PDEBUG("me4000_open():ai board = %d mode = %d\n", board, mode);
1414
1415 /* Search for the board context */
1416 for (ptr = me4000_board_info_list.next, i = 0;
1417 ptr != &me4000_board_info_list; ptr = ptr->next, i++) {
1418 board_info = list_entry(ptr, me4000_info_t, list);
1419 if (i == board)
1420 break;
1421 }
1422
1423 if (ptr == &me4000_board_info_list) {
1424 printk(KERN_ERR
1425 "ME4000:me4000_open():Board %d not in device list\n",
1426 board);
1427 return -ENODEV;
1428 }
1429
1430 ai_context = board_info->ai_context;
1431
1432 /* Check if mode is valid */
1433 if (mode > 5) {
1434 printk(KERN_ERR
1435 "ME4000:me4000_open():Mode is not valid\n");
1436 return -EINVAL;
1437 }
1438
1439 /* Check if already opened */
1440 spin_lock(&ai_context->use_lock);
1441 if (ai_context->in_use) {
1442 printk(KERN_ERR
1443 "ME4000:me4000_open():AI already in use\n");
1444 spin_unlock(&ai_context->use_lock);
1445 return -EBUSY;
1446 }
1447 ai_context->in_use = 1;
1448 spin_unlock(&ai_context->use_lock);
1449
1450 ai_context->mode = mode;
1451
1452 /* Hold the context in private data */
1453 file_p->private_data = ai_context;
1454
1455 /* Set file operations pointer */
1456 file_p->f_op = me4000_ai_fops_array[mode];
1457
1458 /* Prepare analog input */
1459 me4000_ai_prepare(ai_context);
1460 }
1461 /* Digital I/O */
1462 else if (MAJOR(inode_p->i_rdev) == me4000_dio_major_driver_no) {
1463 board = DIO_BOARD(inode_p->i_rdev);
1464 dev = 0;
1465 mode = 0;
1466
1467 PDEBUG("me4000_open():board = %d\n", board);
1468
1469 /* Search for the board context */
1470 for (ptr = me4000_board_info_list.next;
1471 ptr != &me4000_board_info_list; ptr = ptr->next) {
1472 board_info = list_entry(ptr, me4000_info_t, list);
1473 if (board_info->board_count == board)
1474 break;
1475 }
1476
1477 if (ptr == &me4000_board_info_list) {
1478 printk(KERN_ERR
1479 "ME4000:me4000_open():Board %d not in device list\n",
1480 board);
1481 return -ENODEV;
1482 }
1483
1484 /* Search for the dio context */
1485 dio_context = board_info->dio_context;
1486
1487 /* Check if already opened */
1488 spin_lock(&dio_context->use_lock);
1489 if (dio_context->in_use) {
1490 printk(KERN_ERR
1491 "ME4000:me4000_open():DIO already in use\n");
1492 spin_unlock(&dio_context->use_lock);
1493 return -EBUSY;
1494 }
1495 dio_context->in_use = 1;
1496 spin_unlock(&dio_context->use_lock);
1497
1498 /* Hold the context in private data */
1499 file_p->private_data = dio_context;
1500
1501 /* Set file operations pointer to single functions */
1502 file_p->f_op = &me4000_dio_fops;
1503
1504 //me4000_dio_reset(dio_context);
1505 }
1506 /* Counters */
1507 else if (MAJOR(inode_p->i_rdev) == me4000_cnt_major_driver_no) {
1508 board = CNT_BOARD(inode_p->i_rdev);
1509 dev = 0;
1510 mode = 0;
1511
1512 PDEBUG("me4000_open():board = %d\n", board);
1513
1514 /* Search for the board context */
1515 for (ptr = me4000_board_info_list.next;
1516 ptr != &me4000_board_info_list; ptr = ptr->next) {
1517 board_info = list_entry(ptr, me4000_info_t, list);
1518 if (board_info->board_count == board)
1519 break;
1520 }
1521
1522 if (ptr == &me4000_board_info_list) {
1523 printk(KERN_ERR
1524 "ME4000:me4000_open():Board %d not in device list\n",
1525 board);
1526 return -ENODEV;
1527 }
1528
1529 /* Get the cnt context */
1530 cnt_context = board_info->cnt_context;
1531
1532 /* Check if already opened */
1533 spin_lock(&cnt_context->use_lock);
1534 if (cnt_context->in_use) {
1535 printk(KERN_ERR
1536 "ME4000:me4000_open():CNT already in use\n");
1537 spin_unlock(&cnt_context->use_lock);
1538 return -EBUSY;
1539 }
1540 cnt_context->in_use = 1;
1541 spin_unlock(&cnt_context->use_lock);
1542
1543 /* Hold the context in private data */
1544 file_p->private_data = cnt_context;
1545
1546 /* Set file operations pointer to single functions */
1547 file_p->f_op = &me4000_cnt_fops;
1548 }
1549 /* External Interrupt */
1550 else if (MAJOR(inode_p->i_rdev) == me4000_ext_int_major_driver_no) {
1551 board = EXT_INT_BOARD(inode_p->i_rdev);
1552 dev = 0;
1553 mode = 0;
1554
1555 PDEBUG("me4000_open():board = %d\n", board);
1556
1557 /* Search for the board context */
1558 for (ptr = me4000_board_info_list.next;
1559 ptr != &me4000_board_info_list; ptr = ptr->next) {
1560 board_info = list_entry(ptr, me4000_info_t, list);
1561 if (board_info->board_count == board)
1562 break;
1563 }
1564
1565 if (ptr == &me4000_board_info_list) {
1566 printk(KERN_ERR
1567 "ME4000:me4000_open():Board %d not in device list\n",
1568 board);
1569 return -ENODEV;
1570 }
1571
1572 /* Get the external interrupt context */
1573 ext_int_context = board_info->ext_int_context;
1574
1575 /* Check if already opened */
1576 spin_lock(&cnt_context->use_lock);
1577 if (ext_int_context->in_use) {
1578 printk(KERN_ERR
1579 "ME4000:me4000_open():External interrupt already in use\n");
1580 spin_unlock(&ext_int_context->use_lock);
1581 return -EBUSY;
1582 }
1583 ext_int_context->in_use = 1;
1584 spin_unlock(&ext_int_context->use_lock);
1585
1586 /* Hold the context in private data */
1587 file_p->private_data = ext_int_context;
1588
1589 /* Set file operations pointer to single functions */
1590 file_p->f_op = &me4000_ext_int_fops;
1591
1592 /* Request the interrupt line */
1593 err =
1594 request_irq(ext_int_context->irq, me4000_ext_int_isr,
1595 IRQF_DISABLED | IRQF_SHARED, ME4000_NAME,
1596 ext_int_context);
1597 if (err) {
1598 printk(KERN_ERR
1599 "ME4000:me4000_open():Can't get interrupt line");
1600 ext_int_context->in_use = 0;
1601 return -ENODEV;
1602 }
1603
1604 /* Reset the counter */
1605 me4000_ext_int_disable(ext_int_context);
1606 } else {
1607 printk(KERN_ERR "ME4000:me4000_open():Major number unknown\n");
1608 return -EINVAL;
1609 }
1610
1611 return 0;
1612}
1613
1614static int me4000_release(struct inode *inode_p, struct file *file_p)
1615{
1616 me4000_ao_context_t *ao_context;
1617 me4000_ai_context_t *ai_context;
1618 me4000_dio_context_t *dio_context;
1619 me4000_cnt_context_t *cnt_context;
1620 me4000_ext_int_context_t *ext_int_context;
1621
1622 CALL_PDEBUG("me4000_release() is executed\n");
1623
1624 if (MAJOR(inode_p->i_rdev) == me4000_ao_major_driver_no) {
1625 ao_context = file_p->private_data;
1626
1627 /* Mark DAC as unused */
1628 ao_context->dac_in_use = 0;
1629 } else if (MAJOR(inode_p->i_rdev) == me4000_ai_major_driver_no) {
1630 ai_context = file_p->private_data;
1631
1632 /* Reset the analog input */
1633 me4000_ai_reset(ai_context);
1634
1635 /* Free the interrupt and the circular buffer */
1636 if (ai_context->mode) {
1637 free_irq(ai_context->irq, ai_context);
1638 kfree(ai_context->circ_buf.buf);
1639 ai_context->circ_buf.buf = NULL;
1640 ai_context->circ_buf.head = 0;
1641 ai_context->circ_buf.tail = 0;
1642 }
1643
1644 /* Mark AI as unused */
1645 ai_context->in_use = 0;
1646 } else if (MAJOR(inode_p->i_rdev) == me4000_dio_major_driver_no) {
1647 dio_context = file_p->private_data;
1648
1649 /* Mark digital I/O as unused */
1650 dio_context->in_use = 0;
1651 } else if (MAJOR(inode_p->i_rdev) == me4000_cnt_major_driver_no) {
1652 cnt_context = file_p->private_data;
1653
1654 /* Mark counters as unused */
1655 cnt_context->in_use = 0;
1656 } else if (MAJOR(inode_p->i_rdev) == me4000_ext_int_major_driver_no) {
1657 ext_int_context = file_p->private_data;
1658
1659 /* Disable the externel interrupt */
1660 me4000_ext_int_disable(ext_int_context);
1661
1662 free_irq(ext_int_context->irq, ext_int_context);
1663
1664 /* Delete the fasync structure and free memory */
1665 me4000_ext_int_fasync(0, file_p, 0);
1666
1667 /* Mark as unused */
1668 ext_int_context->in_use = 0;
1669 } else {
1670 printk(KERN_ERR
1671 "ME4000:me4000_release():Major number unknown\n");
1672 return -EINVAL;
1673 }
1674
1675 return 0;
1676}
1677
1678/*------------------------------- Analog output stuff --------------------------------------*/
1679
1680static int me4000_ao_prepare(me4000_ao_context_t * ao_context)
1681{
1682 unsigned long flags;
1683
1684 CALL_PDEBUG("me4000_ao_prepare() is executed\n");
1685
1686 if (ao_context->mode == ME4000_AO_CONV_MODE_CONTINUOUS) {
1687 /* Only do anything if not already in the correct mode */
1688 unsigned long mode = me4000_inl(ao_context->ctrl_reg);
1689 if ((mode & ME4000_AO_CONV_MODE_CONTINUOUS)
1690 && (mode & ME4000_AO_CTRL_BIT_ENABLE_FIFO)) {
1691 return 0;
1692 }
1693
1694 /* Stop any conversion */
1695 me4000_ao_immediate_stop(ao_context);
1696
1697 /* Set the control register to default state */
1698 spin_lock_irqsave(&ao_context->int_lock, flags);
1699 me4000_outl(ME4000_AO_CONV_MODE_CONTINUOUS |
1700 ME4000_AO_CTRL_BIT_ENABLE_FIFO |
1701 ME4000_AO_CTRL_BIT_STOP |
1702 ME4000_AO_CTRL_BIT_IMMEDIATE_STOP,
1703 ao_context->ctrl_reg);
1704 spin_unlock_irqrestore(&ao_context->int_lock, flags);
1705
1706 /* Set to fastest sample rate */
1707 me4000_outl(65, ao_context->timer_reg);
1708 } else if (ao_context->mode == ME4000_AO_CONV_MODE_WRAPAROUND) {
1709 /* Only do anything if not already in the correct mode */
1710 unsigned long mode = me4000_inl(ao_context->ctrl_reg);
1711 if ((mode & ME4000_AO_CONV_MODE_WRAPAROUND)
1712 && (mode & ME4000_AO_CTRL_BIT_ENABLE_FIFO)) {
1713 return 0;
1714 }
1715
1716 /* Stop any conversion */
1717 me4000_ao_immediate_stop(ao_context);
1718
1719 /* Set the control register to default state */
1720 spin_lock_irqsave(&ao_context->int_lock, flags);
1721 me4000_outl(ME4000_AO_CONV_MODE_WRAPAROUND |
1722 ME4000_AO_CTRL_BIT_ENABLE_FIFO |
1723 ME4000_AO_CTRL_BIT_STOP |
1724 ME4000_AO_CTRL_BIT_IMMEDIATE_STOP,
1725 ao_context->ctrl_reg);
1726 spin_unlock_irqrestore(&ao_context->int_lock, flags);
1727
1728 /* Set to fastest sample rate */
1729 me4000_outl(65, ao_context->timer_reg);
1730 } else if (ao_context->mode == ME4000_AO_CONV_MODE_SINGLE) {
1731 /* Only do anything if not already in the correct mode */
1732 unsigned long mode = me4000_inl(ao_context->ctrl_reg);
1733 if (!
1734 (mode &
1735 (ME4000_AO_CONV_MODE_WRAPAROUND |
1736 ME4000_AO_CONV_MODE_CONTINUOUS))) {
1737 return 0;
1738 }
1739
1740 /* Stop any conversion */
1741 me4000_ao_immediate_stop(ao_context);
1742
1743 /* Clear the control register */
1744 spin_lock_irqsave(&ao_context->int_lock, flags);
1745 me4000_outl(0x0, ao_context->ctrl_reg);
1746 spin_unlock_irqrestore(&ao_context->int_lock, flags);
1747
1748 /* Set voltage to 0V */
1749 me4000_outl(0x8000, ao_context->single_reg);
1750 } else {
1751 printk(KERN_ERR
1752 "ME4000:me4000_ao_prepare():Invalid mode specified\n");
1753 return -EINVAL;
1754 }
1755
1756 return 0;
1757}
1758
1759static int me4000_ao_reset(me4000_ao_context_t * ao_context)
1760{
1761 u32 tmp;
1762 wait_queue_head_t queue;
1763 unsigned long flags;
1764
1765 CALL_PDEBUG("me4000_ao_reset() is executed\n");
1766
1767 init_waitqueue_head(&queue);
1768
1769 if (ao_context->mode == ME4000_AO_CONV_MODE_WRAPAROUND) {
1770 /*
1771 * First stop conversion of the DAC before reconfigure.
1772 * This is essantial, cause of the state machine.
1773 * If not stopped before configuring mode, it could
1774 * walk in a undefined state.
1775 */
1776 tmp = me4000_inl(ao_context->ctrl_reg);
1777 tmp |= ME4000_AO_CTRL_BIT_IMMEDIATE_STOP;
1778 me4000_outl(tmp, ao_context->ctrl_reg);
1779
1780 while (inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) {
1781 sleep_on_timeout(&queue, 1);
1782 }
1783
1784 /* Set to transparent mode */
1785 me4000_ao_simultaneous_disable(ao_context);
1786
1787 /* Set to single mode in order to set default voltage */
1788 me4000_outl(0x0, ao_context->ctrl_reg);
1789
1790 /* Set voltage to 0V */
1791 me4000_outl(0x8000, ao_context->single_reg);
1792
1793 /* Set to fastest sample rate */
1794 me4000_outl(65, ao_context->timer_reg);
1795
1796 /* Set the original mode and enable FIFO */
1797 me4000_outl(ME4000_AO_CONV_MODE_WRAPAROUND |
1798 ME4000_AO_CTRL_BIT_ENABLE_FIFO |
1799 ME4000_AO_CTRL_BIT_STOP |
1800 ME4000_AO_CTRL_BIT_IMMEDIATE_STOP,
1801 ao_context->ctrl_reg);
1802 } else if (ao_context->mode == ME4000_AO_CONV_MODE_CONTINUOUS) {
1803 /*
1804 * First stop conversion of the DAC before reconfigure.
1805 * This is essantial, cause of the state machine.
1806 * If not stopped before configuring mode, it could
1807 * walk in a undefined state.
1808 */
1809 spin_lock_irqsave(&ao_context->int_lock, flags);
1810 tmp = me4000_inl(ao_context->ctrl_reg);
1811 tmp |= ME4000_AO_CTRL_BIT_STOP;
1812 me4000_outl(tmp, ao_context->ctrl_reg);
1813 spin_unlock_irqrestore(&ao_context->int_lock, flags);
1814
1815 while (inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) {
1816 sleep_on_timeout(&queue, 1);
1817 }
1818
1819 /* Clear the circular buffer */
1820 ao_context->circ_buf.head = 0;
1821 ao_context->circ_buf.tail = 0;
1822
1823 /* Set to transparent mode */
1824 me4000_ao_simultaneous_disable(ao_context);
1825
1826 /* Set to single mode in order to set default voltage */
1827 spin_lock_irqsave(&ao_context->int_lock, flags);
1828 tmp = me4000_inl(ao_context->ctrl_reg);
1829 me4000_outl(0x0, ao_context->ctrl_reg);
1830
1831 /* Set voltage to 0V */
1832 me4000_outl(0x8000, ao_context->single_reg);
1833
1834 /* Set to fastest sample rate */
1835 me4000_outl(65, ao_context->timer_reg);
1836
1837 /* Set the original mode and enable FIFO */
1838 me4000_outl(ME4000_AO_CONV_MODE_CONTINUOUS |
1839 ME4000_AO_CTRL_BIT_ENABLE_FIFO |
1840 ME4000_AO_CTRL_BIT_STOP |
1841 ME4000_AO_CTRL_BIT_IMMEDIATE_STOP,
1842 ao_context->ctrl_reg);
1843 spin_unlock_irqrestore(&ao_context->int_lock, flags);
1844 } else {
1845 /* Set to transparent mode */
1846 me4000_ao_simultaneous_disable(ao_context);
1847
1848 /* Set voltage to 0V */
1849 me4000_outl(0x8000, ao_context->single_reg);
1850 }
1851
1852 return 0;
1853}
1854
1855static ssize_t me4000_ao_write_sing(struct file *filep, const char *buff,
1856 size_t cnt, loff_t * offp)
1857{
1858 me4000_ao_context_t *ao_context = filep->private_data;
1859 u32 value;
1860 const u16 *buffer = (const u16 *)buff;
1861
1862 CALL_PDEBUG("me4000_ao_write_sing() is executed\n");
1863
1864 if (cnt != 2) {
1865 printk(KERN_ERR
1866 "me4000_ao_write_sing():Write count is not 2\n");
1867 return -EINVAL;
1868 }
1869
1870 if (get_user(value, buffer)) {
1871 printk(KERN_ERR
1872 "me4000_ao_write_sing():Cannot copy data from user\n");
1873 return -EFAULT;
1874 }
1875
1876 me4000_outl(value, ao_context->single_reg);
1877
1878 return 2;
1879}
1880
1881static ssize_t me4000_ao_write_wrap(struct file *filep, const char *buff,
1882 size_t cnt, loff_t * offp)
1883{
1884 me4000_ao_context_t *ao_context = filep->private_data;
1885 size_t i;
1886 u32 value;
1887 u32 tmp;
1888 const u16 *buffer = (const u16 *)buff;
1889 size_t count = cnt / 2;
1890
1891 CALL_PDEBUG("me4000_ao_write_wrap() is executed\n");
1892
1893 /* Check if a conversion is already running */
1894 if (inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) {
1895 printk(KERN_ERR
1896 "ME4000:me4000_ao_write_wrap():There is already a conversion running\n");
1897 return -EBUSY;
1898 }
1899
1900 if (count > ME4000_AO_FIFO_COUNT) {
1901 printk(KERN_ERR
1902 "me4000_ao_write_wrap():Can't load more than %d values\n",
1903 ME4000_AO_FIFO_COUNT);
1904 return -ENOSPC;
1905 }
1906
1907 /* Reset the FIFO */
1908 tmp = inl(ao_context->ctrl_reg);
1909 tmp &= ~ME4000_AO_CTRL_BIT_ENABLE_FIFO;
1910 outl(tmp, ao_context->ctrl_reg);
1911 tmp |= ME4000_AO_CTRL_BIT_ENABLE_FIFO;
1912 outl(tmp, ao_context->ctrl_reg);
1913
1914 for (i = 0; i < count; i++) {
1915 if (get_user(value, buffer + i)) {
1916 printk(KERN_ERR
1917 "me4000_ao_write_single():Cannot copy data from user\n");
1918 return -EFAULT;
1919 }
1920 if (((ao_context->fifo_reg & 0xFF) == ME4000_AO_01_FIFO_REG)
1921 || ((ao_context->fifo_reg & 0xFF) == ME4000_AO_03_FIFO_REG))
1922 value = value << 16;
1923 outl(value, ao_context->fifo_reg);
1924 }
1925 CALL_PDEBUG("me4000_ao_write_wrap() is leaved with %d\n", i * 2);
1926
1927 return i * 2;
1928}
1929
1930static ssize_t me4000_ao_write_cont(struct file *filep, const char *buff,
1931 size_t cnt, loff_t * offp)
1932{
1933 me4000_ao_context_t *ao_context = filep->private_data;
1934 const u16 *buffer = (const u16 *)buff;
1935 size_t count = cnt / 2;
1936 unsigned long flags;
1937 u32 tmp;
1938 int c = 0;
1939 int k = 0;
1940 int ret = 0;
1941 u16 svalue;
1942 u32 lvalue;
1943 int i;
1944 wait_queue_head_t queue;
1945
1946 CALL_PDEBUG("me4000_ao_write_cont() is executed\n");
1947
1948 init_waitqueue_head(&queue);
1949
1950 /* Check count */
1951 if (count <= 0) {
1952 PDEBUG("me4000_ao_write_cont():Count is 0\n");
1953 return 0;
1954 }
1955
1956 if (filep->f_flags & O_APPEND) {
1957 PDEBUG("me4000_ao_write_cont():Append data to data stream\n");
1958 while (count > 0) {
1959 if (filep->f_flags & O_NONBLOCK) {
1960 if (ao_context->pipe_flag) {
1961 printk(KERN_ERR
1962 "ME4000:me4000_ao_write_cont():Broken pipe in nonblocking write\n");
1963 return -EPIPE;
1964 }
1965 c = me4000_space_to_end(ao_context->circ_buf,
1966 ME4000_AO_BUFFER_COUNT);
1967 if (!c) {
1968 PDEBUG
1969 ("me4000_ao_write_cont():Returning from nonblocking write\n");
1970 break;
1971 }
1972 } else {
1973 wait_event_interruptible(ao_context->wait_queue,
1974 (c =
1975 me4000_space_to_end
1976 (ao_context->circ_buf,
1977 ME4000_AO_BUFFER_COUNT)));
1978 if (ao_context->pipe_flag) {
1979 printk(KERN_ERR
1980 "me4000_ao_write_cont():Broken pipe in blocking write\n");
1981 return -EPIPE;
1982 }
1983 if (signal_pending(current)) {
1984 printk(KERN_ERR
1985 "me4000_ao_write_cont():Wait for free buffer interrupted from signal\n");
1986 return -EINTR;
1987 }
1988 }
1989
1990 PDEBUG("me4000_ao_write_cont():Space to end = %d\n", c);
1991
1992 /* Only able to write size of free buffer or size of count */
1993 if (count < c)
1994 c = count;
1995
1996 k = 2 * c;
1997 k -= copy_from_user(ao_context->circ_buf.buf +
1998 ao_context->circ_buf.head, buffer,
1999 k);
2000 c = k / 2;
2001 PDEBUG
2002 ("me4000_ao_write_cont():Copy %d values from user space\n",
2003 c);
2004
2005 if (!c)
2006 return -EFAULT;
2007
2008 ao_context->circ_buf.head =
2009 (ao_context->circ_buf.head +
2010 c) & (ME4000_AO_BUFFER_COUNT - 1);
2011 buffer += c;
2012 count -= c;
2013 ret += c;
2014
2015 /* Values are now available so enable interrupts */
2016 spin_lock_irqsave(&ao_context->int_lock, flags);
2017 if (me4000_buf_count
2018 (ao_context->circ_buf, ME4000_AO_BUFFER_COUNT)) {
2019 tmp = me4000_inl(ao_context->ctrl_reg);
2020 tmp |= ME4000_AO_CTRL_BIT_ENABLE_IRQ;
2021 me4000_outl(tmp, ao_context->ctrl_reg);
2022 }
2023 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2024 }
2025
2026 /* Wait until the state machine is stopped if O_SYNC is set */
2027 if (filep->f_flags & O_SYNC) {
2028 while (inl(ao_context->status_reg) &
2029 ME4000_AO_STATUS_BIT_FSM) {
2030 interruptible_sleep_on_timeout(&queue, 1);
2031 if (ao_context->pipe_flag) {
2032 PDEBUG
2033 ("me4000_ao_write_cont():Broken pipe detected after sync\n");
2034 return -EPIPE;
2035 }
2036 if (signal_pending(current)) {
2037 printk(KERN_ERR
2038 "me4000_ao_write_cont():Wait on state machine after sync interrupted\n");
2039 return -EINTR;
2040 }
2041 }
2042 }
2043 } else {
2044 PDEBUG("me4000_ao_write_cont():Preload DAC FIFO\n");
2045 if ((me4000_inl(ao_context->status_reg) &
2046 ME4000_AO_STATUS_BIT_FSM)) {
2047 printk(KERN_ERR
2048 "me4000_ao_write_cont():Can't Preload DAC FIFO while conversion is running\n");
2049 return -EBUSY;
2050 }
2051
2052 /* Clear the FIFO */
2053 spin_lock_irqsave(&ao_context->int_lock, flags);
2054 tmp = me4000_inl(ao_context->ctrl_reg);
2055 tmp &=
2056 ~(ME4000_AO_CTRL_BIT_ENABLE_FIFO |
2057 ME4000_AO_CTRL_BIT_ENABLE_IRQ);
2058 me4000_outl(tmp, ao_context->ctrl_reg);
2059 tmp |= ME4000_AO_CTRL_BIT_ENABLE_FIFO;
2060 me4000_outl(tmp, ao_context->ctrl_reg);
2061 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2062
2063 /* Clear the circular buffer */
2064 ao_context->circ_buf.head = 0;
2065 ao_context->circ_buf.tail = 0;
2066
2067 /* Reset the broken pipe flag */
2068 ao_context->pipe_flag = 0;
2069
2070 /* Only able to write size of fifo or count */
2071 c = ME4000_AO_FIFO_COUNT;
2072 if (count < c)
2073 c = count;
2074
2075 PDEBUG
2076 ("me4000_ao_write_cont():Write %d values to DAC on 0x%lX\n",
2077 c, ao_context->fifo_reg);
2078
2079 /* Write values to the fifo */
2080 for (i = 0; i < c; i++) {
2081 if (get_user(svalue, buffer))
2082 return -EFAULT;
2083
2084 if (((ao_context->fifo_reg & 0xFF) ==
2085 ME4000_AO_01_FIFO_REG)
2086 || ((ao_context->fifo_reg & 0xFF) ==
2087 ME4000_AO_03_FIFO_REG)) {
2088 lvalue = ((u32) svalue) << 16;
2089 } else
2090 lvalue = (u32) svalue;
2091
2092 outl(lvalue, ao_context->fifo_reg);
2093 buffer++;
2094 }
2095 count -= c;
2096 ret += c;
2097
2098 while (1) {
2099 /* Get free buffer */
2100 c = me4000_space_to_end(ao_context->circ_buf,
2101 ME4000_AO_BUFFER_COUNT);
2102
2103 if (c == 0)
2104 return (2 * ret);
2105
2106 /* Only able to write size of free buffer or size of count */
2107 if (count < c)
2108 c = count;
2109
2110 /* If count = 0 return to user */
2111 if (c <= 0) {
2112 PDEBUG
2113 ("me4000_ao_write_cont():Count reached 0\n");
2114 break;
2115 }
2116
2117 k = 2 * c;
2118 k -= copy_from_user(ao_context->circ_buf.buf +
2119 ao_context->circ_buf.head, buffer,
2120 k);
2121 c = k / 2;
2122 PDEBUG
2123 ("me4000_ao_write_cont():Wrote %d values to buffer\n",
2124 c);
2125
2126 if (!c)
2127 return -EFAULT;
2128
2129 ao_context->circ_buf.head =
2130 (ao_context->circ_buf.head +
2131 c) & (ME4000_AO_BUFFER_COUNT - 1);
2132 buffer += c;
2133 count -= c;
2134 ret += c;
2135
2136 /* If values in the buffer are available so enable interrupts */
2137 spin_lock_irqsave(&ao_context->int_lock, flags);
2138 if (me4000_buf_count
2139 (ao_context->circ_buf, ME4000_AO_BUFFER_COUNT)) {
2140 PDEBUG
2141 ("me4000_ao_write_cont():Enable Interrupts\n");
2142 tmp = me4000_inl(ao_context->ctrl_reg);
2143 tmp |= ME4000_AO_CTRL_BIT_ENABLE_IRQ;
2144 me4000_outl(tmp, ao_context->ctrl_reg);
2145 }
2146 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2147 }
2148 }
2149
2150 if (filep->f_flags & O_NONBLOCK) {
2151 return (ret == 0) ? -EAGAIN : 2 * ret;
2152 }
2153
2154 return 2 * ret;
2155}
2156
2157static unsigned int me4000_ao_poll_cont(struct file *file_p, poll_table * wait)
2158{
2159 me4000_ao_context_t *ao_context;
2160 unsigned long mask = 0;
2161
2162 CALL_PDEBUG("me4000_ao_poll_cont() is executed\n");
2163
2164 ao_context = file_p->private_data;
2165
2166 poll_wait(file_p, &ao_context->wait_queue, wait);
2167
2168 /* Get free buffer */
2169 if (me4000_space_to_end(ao_context->circ_buf, ME4000_AO_BUFFER_COUNT))
2170 mask |= POLLOUT | POLLWRNORM;
2171
2172 CALL_PDEBUG("me4000_ao_poll_cont():Return mask %lX\n", mask);
2173
2174 return mask;
2175}
2176
2177static int me4000_ao_fsync_cont(struct file *file_p, struct dentry *dentry_p,
2178 int datasync)
2179{
2180 me4000_ao_context_t *ao_context;
2181 wait_queue_head_t queue;
2182
2183 CALL_PDEBUG("me4000_ao_fsync_cont() is executed\n");
2184
2185 ao_context = file_p->private_data;
2186 init_waitqueue_head(&queue);
2187
2188 while (inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) {
2189 interruptible_sleep_on_timeout(&queue, 1);
2190 if (ao_context->pipe_flag) {
2191 printk(KERN_ERR
2192 "me4000_ao_fsync_cont():Broken pipe detected\n");
2193 return -EPIPE;
2194 }
2195
2196 if (signal_pending(current)) {
2197 printk(KERN_ERR
2198 "me4000_ao_fsync_cont():Wait on state machine interrupted\n");
2199 return -EINTR;
2200 }
2201 }
2202
2203 return 0;
2204}
2205
2206static int me4000_ao_ioctl_sing(struct inode *inode_p, struct file *file_p,
2207 unsigned int service, unsigned long arg)
2208{
2209 me4000_ao_context_t *ao_context;
2210
2211 CALL_PDEBUG("me4000_ao_ioctl_sing() is executed\n");
2212
2213 ao_context = file_p->private_data;
2214
2215 if (_IOC_TYPE(service) != ME4000_MAGIC) {
2216 return -ENOTTY;
2217 PDEBUG("me4000_ao_ioctl_sing():Wrong magic number\n");
2218 }
2219
2220 switch (service) {
2221 case ME4000_AO_EX_TRIG_SETUP:
2222 return me4000_ao_ex_trig_set_edge((int *)arg, ao_context);
2223 case ME4000_AO_EX_TRIG_ENABLE:
2224 return me4000_ao_ex_trig_enable(ao_context);
2225 case ME4000_AO_EX_TRIG_DISABLE:
2226 return me4000_ao_ex_trig_disable(ao_context);
2227 case ME4000_AO_PRELOAD:
2228 return me4000_ao_preload(ao_context);
2229 case ME4000_AO_PRELOAD_UPDATE:
2230 return me4000_ao_preload_update(ao_context);
2231 case ME4000_GET_USER_INFO:
2232 return me4000_get_user_info((me4000_user_info_t *) arg,
2233 ao_context->board_info);
2234 case ME4000_AO_SIMULTANEOUS_EX_TRIG:
2235 return me4000_ao_simultaneous_ex_trig(ao_context);
2236 case ME4000_AO_SIMULTANEOUS_SW:
2237 return me4000_ao_simultaneous_sw(ao_context);
2238 case ME4000_AO_SIMULTANEOUS_DISABLE:
2239 return me4000_ao_simultaneous_disable(ao_context);
2240 case ME4000_AO_SIMULTANEOUS_UPDATE:
2241 return
2242 me4000_ao_simultaneous_update((me4000_ao_channel_list_t *)
2243 arg, ao_context);
2244 case ME4000_AO_EX_TRIG_TIMEOUT:
2245 return me4000_ao_ex_trig_timeout((unsigned long *)arg,
2246 ao_context);
2247 case ME4000_AO_DISABLE_DO:
2248 return me4000_ao_disable_do(ao_context);
2249 default:
2250 printk(KERN_ERR
2251 "me4000_ao_ioctl_sing():Service number invalid\n");
2252 return -ENOTTY;
2253 }
2254
2255 return 0;
2256}
2257
2258static int me4000_ao_ioctl_wrap(struct inode *inode_p, struct file *file_p,
2259 unsigned int service, unsigned long arg)
2260{
2261 me4000_ao_context_t *ao_context;
2262
2263 CALL_PDEBUG("me4000_ao_ioctl_wrap() is executed\n");
2264
2265 ao_context = file_p->private_data;
2266
2267 if (_IOC_TYPE(service) != ME4000_MAGIC) {
2268 return -ENOTTY;
2269 PDEBUG("me4000_ao_ioctl_wrap():Wrong magic number\n");
2270 }
2271
2272 switch (service) {
2273 case ME4000_AO_START:
2274 return me4000_ao_start((unsigned long *)arg, ao_context);
2275 case ME4000_AO_STOP:
2276 return me4000_ao_stop(ao_context);
2277 case ME4000_AO_IMMEDIATE_STOP:
2278 return me4000_ao_immediate_stop(ao_context);
2279 case ME4000_AO_RESET:
2280 return me4000_ao_reset(ao_context);
2281 case ME4000_AO_TIMER_SET_DIVISOR:
2282 return me4000_ao_timer_set_divisor((u32 *) arg, ao_context);
2283 case ME4000_AO_EX_TRIG_SETUP:
2284 return me4000_ao_ex_trig_set_edge((int *)arg, ao_context);
2285 case ME4000_AO_EX_TRIG_ENABLE:
2286 return me4000_ao_ex_trig_enable(ao_context);
2287 case ME4000_AO_EX_TRIG_DISABLE:
2288 return me4000_ao_ex_trig_disable(ao_context);
2289 case ME4000_GET_USER_INFO:
2290 return me4000_get_user_info((me4000_user_info_t *) arg,
2291 ao_context->board_info);
2292 case ME4000_AO_FSM_STATE:
2293 return me4000_ao_fsm_state((int *)arg, ao_context);
2294 case ME4000_AO_ENABLE_DO:
2295 return me4000_ao_enable_do(ao_context);
2296 case ME4000_AO_DISABLE_DO:
2297 return me4000_ao_disable_do(ao_context);
2298 case ME4000_AO_SYNCHRONOUS_EX_TRIG:
2299 return me4000_ao_synchronous_ex_trig(ao_context);
2300 case ME4000_AO_SYNCHRONOUS_SW:
2301 return me4000_ao_synchronous_sw(ao_context);
2302 case ME4000_AO_SYNCHRONOUS_DISABLE:
2303 return me4000_ao_synchronous_disable(ao_context);
2304 default:
2305 return -ENOTTY;
2306 }
2307 return 0;
2308}
2309
2310static int me4000_ao_ioctl_cont(struct inode *inode_p, struct file *file_p,
2311 unsigned int service, unsigned long arg)
2312{
2313 me4000_ao_context_t *ao_context;
2314
2315 CALL_PDEBUG("me4000_ao_ioctl_cont() is executed\n");
2316
2317 ao_context = file_p->private_data;
2318
2319 if (_IOC_TYPE(service) != ME4000_MAGIC) {
2320 return -ENOTTY;
2321 PDEBUG("me4000_ao_ioctl_cont():Wrong magic number\n");
2322 }
2323
2324 switch (service) {
2325 case ME4000_AO_START:
2326 return me4000_ao_start((unsigned long *)arg, ao_context);
2327 case ME4000_AO_STOP:
2328 return me4000_ao_stop(ao_context);
2329 case ME4000_AO_IMMEDIATE_STOP:
2330 return me4000_ao_immediate_stop(ao_context);
2331 case ME4000_AO_RESET:
2332 return me4000_ao_reset(ao_context);
2333 case ME4000_AO_TIMER_SET_DIVISOR:
2334 return me4000_ao_timer_set_divisor((u32 *) arg, ao_context);
2335 case ME4000_AO_EX_TRIG_SETUP:
2336 return me4000_ao_ex_trig_set_edge((int *)arg, ao_context);
2337 case ME4000_AO_EX_TRIG_ENABLE:
2338 return me4000_ao_ex_trig_enable(ao_context);
2339 case ME4000_AO_EX_TRIG_DISABLE:
2340 return me4000_ao_ex_trig_disable(ao_context);
2341 case ME4000_AO_ENABLE_DO:
2342 return me4000_ao_enable_do(ao_context);
2343 case ME4000_AO_DISABLE_DO:
2344 return me4000_ao_disable_do(ao_context);
2345 case ME4000_AO_FSM_STATE:
2346 return me4000_ao_fsm_state((int *)arg, ao_context);
2347 case ME4000_GET_USER_INFO:
2348 return me4000_get_user_info((me4000_user_info_t *) arg,
2349 ao_context->board_info);
2350 case ME4000_AO_SYNCHRONOUS_EX_TRIG:
2351 return me4000_ao_synchronous_ex_trig(ao_context);
2352 case ME4000_AO_SYNCHRONOUS_SW:
2353 return me4000_ao_synchronous_sw(ao_context);
2354 case ME4000_AO_SYNCHRONOUS_DISABLE:
2355 return me4000_ao_synchronous_disable(ao_context);
2356 case ME4000_AO_GET_FREE_BUFFER:
2357 return me4000_ao_get_free_buffer((unsigned long *)arg,
2358 ao_context);
2359 default:
2360 return -ENOTTY;
2361 }
2362 return 0;
2363}
2364
2365static int me4000_ao_start(unsigned long *arg, me4000_ao_context_t * ao_context)
2366{
2367 u32 tmp;
2368 wait_queue_head_t queue;
2369 unsigned long ref;
2370 unsigned long timeout;
2371 unsigned long flags;
2372
2373 CALL_PDEBUG("me4000_ao_start() is executed\n");
2374
2375 if (get_user(timeout, arg)) {
2376 printk(KERN_ERR
2377 "me4000_ao_start():Cannot copy data from user\n");
2378 return -EFAULT;
2379 }
2380
2381 init_waitqueue_head(&queue);
2382
2383 spin_lock_irqsave(&ao_context->int_lock, flags);
2384 tmp = inl(ao_context->ctrl_reg);
2385 tmp &= ~(ME4000_AO_CTRL_BIT_STOP | ME4000_AO_CTRL_BIT_IMMEDIATE_STOP);
2386 me4000_outl(tmp, ao_context->ctrl_reg);
2387 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2388
2389 if ((tmp & ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG)) {
2390 if (timeout) {
2391 ref = jiffies;
2392 while (!
2393 (inl(ao_context->status_reg) &
2394 ME4000_AO_STATUS_BIT_FSM)) {
2395 interruptible_sleep_on_timeout(&queue, 1);
2396 if (signal_pending(current)) {
2397 printk(KERN_ERR
2398 "ME4000:me4000_ao_start():Wait on start of state machine interrupted\n");
2399 return -EINTR;
2400 }
2401 if (((jiffies - ref) > (timeout * HZ / USER_HZ))) { // 2.6 has diffrent definitions for HZ in user and kernel space
2402 printk(KERN_ERR
2403 "ME4000:me4000_ao_start():Timeout reached\n");
2404 return -EIO;
2405 }
2406 }
2407 }
2408 } else {
2409 me4000_outl(0x8000, ao_context->single_reg);
2410 }
2411
2412 return 0;
2413}
2414
2415static int me4000_ao_stop(me4000_ao_context_t * ao_context)
2416{
2417 u32 tmp;
2418 wait_queue_head_t queue;
2419 unsigned long flags;
2420
2421 init_waitqueue_head(&queue);
2422
2423 CALL_PDEBUG("me4000_ao_stop() is executed\n");
2424
2425 /* Set the stop bit */
2426 spin_lock_irqsave(&ao_context->int_lock, flags);
2427 tmp = inl(ao_context->ctrl_reg);
2428 tmp |= ME4000_AO_CTRL_BIT_STOP;
2429 me4000_outl(tmp, ao_context->ctrl_reg);
2430 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2431
2432 while (inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) {
2433 interruptible_sleep_on_timeout(&queue, 1);
2434 if (signal_pending(current)) {
2435 printk(KERN_ERR
2436 "me4000_ao_stop():Wait on state machine after stop interrupted\n");
2437 return -EINTR;
2438 }
2439 }
2440
2441 /* Clear the stop bit */
2442 //tmp &= ~ME4000_AO_CTRL_BIT_STOP;
2443 //me4000_outl(tmp, ao_context->ctrl_reg);
2444
2445 return 0;
2446}
2447
2448static int me4000_ao_immediate_stop(me4000_ao_context_t * ao_context)
2449{
2450 u32 tmp;
2451 wait_queue_head_t queue;
2452 unsigned long flags;
2453
2454 init_waitqueue_head(&queue);
2455
2456 CALL_PDEBUG("me4000_ao_immediate_stop() is executed\n");
2457
2458 spin_lock_irqsave(&ao_context->int_lock, flags);
2459 tmp = inl(ao_context->ctrl_reg);
2460 tmp |= ME4000_AO_CTRL_BIT_STOP | ME4000_AO_CTRL_BIT_IMMEDIATE_STOP;
2461 me4000_outl(tmp, ao_context->ctrl_reg);
2462 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2463
2464 while (inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) {
2465 interruptible_sleep_on_timeout(&queue, 1);
2466 if (signal_pending(current)) {
2467 printk(KERN_ERR
2468 "me4000_ao_immediate_stop():Wait on state machine after stop interrupted\n");
2469 return -EINTR;
2470 }
2471 }
2472
2473 /* Clear the stop bits */
2474 //tmp &= ~(ME4000_AO_CTRL_BIT_STOP | ME4000_AO_CTRL_BIT_IMMEDIATE_STOP);
2475 //me4000_outl(tmp, ao_context->ctrl_reg);
2476
2477 return 0;
2478}
2479
2480static int me4000_ao_timer_set_divisor(u32 * arg,
2481 me4000_ao_context_t * ao_context)
2482{
2483 u32 divisor;
2484 u32 tmp;
2485
2486 CALL_PDEBUG("me4000_ao_timer set_divisor() is executed\n");
2487
2488 if (get_user(divisor, arg))
2489 return -EFAULT;
2490
2491 /* Check if the state machine is stopped */
2492 tmp = me4000_inl(ao_context->status_reg);
2493 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2494 printk(KERN_ERR
2495 "me4000_ao_timer_set_divisor():Can't set timer while DAC is running\n");
2496 return -EBUSY;
2497 }
2498
2499 PDEBUG("me4000_ao_timer set_divisor():Divisor from user = %d\n",
2500 divisor);
2501
2502 /* Check if the divisor is right. ME4000_AO_MIN_TICKS is the lowest */
2503 if (divisor < ME4000_AO_MIN_TICKS) {
2504 printk(KERN_ERR
2505 "ME4000:me4000_ao_timer set_divisor():Divisor to low\n");
2506 return -EINVAL;
2507 }
2508
2509 /* Fix bug in Firmware */
2510 divisor -= 2;
2511
2512 PDEBUG("me4000_ao_timer set_divisor():Divisor to HW = %d\n", divisor);
2513
2514 /* Write the divisor */
2515 me4000_outl(divisor, ao_context->timer_reg);
2516
2517 return 0;
2518}
2519
2520static int me4000_ao_ex_trig_set_edge(int *arg,
2521 me4000_ao_context_t * ao_context)
2522{
2523 int mode;
2524 u32 tmp;
2525 unsigned long flags;
2526
2527 CALL_PDEBUG("me4000_ao_ex_trig_set_edge() is executed\n");
2528
2529 if (get_user(mode, arg))
2530 return -EFAULT;
2531
2532 /* Check if the state machine is stopped */
2533 tmp = me4000_inl(ao_context->status_reg);
2534 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2535 printk(KERN_ERR
2536 "me4000_ao_ex_trig_set_edge():Can't set trigger while DAC is running\n");
2537 return -EBUSY;
2538 }
2539
2540 if (mode == ME4000_AO_TRIGGER_EXT_EDGE_RISING) {
2541 spin_lock_irqsave(&ao_context->int_lock, flags);
2542 tmp = me4000_inl(ao_context->ctrl_reg);
2543 tmp &=
2544 ~(ME4000_AO_CTRL_BIT_EX_TRIG_EDGE |
2545 ME4000_AO_CTRL_BIT_EX_TRIG_BOTH);
2546 me4000_outl(tmp, ao_context->ctrl_reg);
2547 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2548 } else if (mode == ME4000_AO_TRIGGER_EXT_EDGE_FALLING) {
2549 spin_lock_irqsave(&ao_context->int_lock, flags);
2550 tmp = me4000_inl(ao_context->ctrl_reg);
2551 tmp &= ~ME4000_AO_CTRL_BIT_EX_TRIG_BOTH;
2552 tmp |= ME4000_AO_CTRL_BIT_EX_TRIG_EDGE;
2553 me4000_outl(tmp, ao_context->ctrl_reg);
2554 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2555 } else if (mode == ME4000_AO_TRIGGER_EXT_EDGE_BOTH) {
2556 spin_lock_irqsave(&ao_context->int_lock, flags);
2557 tmp = me4000_inl(ao_context->ctrl_reg);
2558 tmp |=
2559 ME4000_AO_CTRL_BIT_EX_TRIG_EDGE |
2560 ME4000_AO_CTRL_BIT_EX_TRIG_BOTH;
2561 me4000_outl(tmp, ao_context->ctrl_reg);
2562 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2563 } else {
2564 printk(KERN_ERR
2565 "me4000_ao_ex_trig_set_edge():Invalid trigger mode\n");
2566 return -EINVAL;
2567 }
2568
2569 return 0;
2570}
2571
2572static int me4000_ao_ex_trig_enable(me4000_ao_context_t * ao_context)
2573{
2574 u32 tmp;
2575 unsigned long flags;
2576
2577 CALL_PDEBUG("me4000_ao_ex_trig_enable() is executed\n");
2578
2579 /* Check if the state machine is stopped */
2580 tmp = me4000_inl(ao_context->status_reg);
2581 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2582 printk(KERN_ERR
2583 "me4000_ao_ex_trig_enable():Can't enable trigger while DAC is running\n");
2584 return -EBUSY;
2585 }
2586
2587 spin_lock_irqsave(&ao_context->int_lock, flags);
2588 tmp = me4000_inl(ao_context->ctrl_reg);
2589 tmp |= ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG;
2590 me4000_outl(tmp, ao_context->ctrl_reg);
2591 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2592
2593 return 0;
2594}
2595
2596static int me4000_ao_ex_trig_disable(me4000_ao_context_t * ao_context)
2597{
2598 u32 tmp;
2599 unsigned long flags;
2600
2601 CALL_PDEBUG("me4000_ao_ex_trig_disable() is executed\n");
2602
2603 /* Check if the state machine is stopped */
2604 tmp = me4000_inl(ao_context->status_reg);
2605 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2606 printk(KERN_ERR
2607 "me4000_ao_ex_trig_disable():Can't disable trigger while DAC is running\n");
2608 return -EBUSY;
2609 }
2610
2611 spin_lock_irqsave(&ao_context->int_lock, flags);
2612 tmp = me4000_inl(ao_context->ctrl_reg);
2613 tmp &= ~ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG;
2614 me4000_outl(tmp, ao_context->ctrl_reg);
2615 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2616
2617 return 0;
2618}
2619
2620static int me4000_ao_simultaneous_disable(me4000_ao_context_t * ao_context)
2621{
2622 u32 tmp;
2623
2624 CALL_PDEBUG("me4000_ao_simultaneous_disable() is executed\n");
2625
2626 /* Check if the state machine is stopped */
2627 /* Be careful here because this function is called from
2628 me4000_ao_synchronous disable */
2629 tmp = me4000_inl(ao_context->status_reg);
2630 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2631 printk(KERN_ERR
2632 "me4000_ao_simultaneous_disable():Can't disable while DAC is running\n");
2633 return -EBUSY;
2634 }
2635
2636 spin_lock(&ao_context->board_info->preload_lock);
2637 tmp = me4000_inl(ao_context->preload_reg);
2638 tmp &= ~(0x1 << ao_context->index); // Disable preload bit
2639 tmp &= ~(0x1 << (ao_context->index + 16)); // Disable hw simultaneous bit
2640 me4000_outl(tmp, ao_context->preload_reg);
2641 spin_unlock(&ao_context->board_info->preload_lock);
2642
2643 return 0;
2644}
2645
2646static int me4000_ao_simultaneous_ex_trig(me4000_ao_context_t * ao_context)
2647{
2648 u32 tmp;
2649
2650 CALL_PDEBUG("me4000_ao_simultaneous_ex_trig() is executed\n");
2651
2652 spin_lock(&ao_context->board_info->preload_lock);
2653 tmp = me4000_inl(ao_context->preload_reg);
2654 tmp |= (0x1 << ao_context->index); // Enable preload bit
2655 tmp |= (0x1 << (ao_context->index + 16)); // Enable hw simultaneous bit
2656 me4000_outl(tmp, ao_context->preload_reg);
2657 spin_unlock(&ao_context->board_info->preload_lock);
2658
2659 return 0;
2660}
2661
2662static int me4000_ao_simultaneous_sw(me4000_ao_context_t * ao_context)
2663{
2664 u32 tmp;
2665
2666 CALL_PDEBUG("me4000_ao_simultaneous_sw() is executed\n");
2667
2668 spin_lock(&ao_context->board_info->preload_lock);
2669 tmp = me4000_inl(ao_context->preload_reg);
2670 tmp |= (0x1 << ao_context->index); // Enable preload bit
2671 tmp &= ~(0x1 << (ao_context->index + 16)); // Disable hw simultaneous bit
2672 me4000_outl(tmp, ao_context->preload_reg);
2673 spin_unlock(&ao_context->board_info->preload_lock);
2674
2675 return 0;
2676}
2677
2678static int me4000_ao_preload(me4000_ao_context_t * ao_context)
2679{
2680 CALL_PDEBUG("me4000_ao_preload() is executed\n");
2681 return me4000_ao_simultaneous_sw(ao_context);
2682}
2683
2684static int me4000_ao_preload_update(me4000_ao_context_t * ao_context)
2685{
2686 u32 tmp;
2687 u32 ctrl;
2688 struct list_head *entry;
2689
2690 CALL_PDEBUG("me4000_ao_preload_update() is executed\n");
2691
2692 spin_lock(&ao_context->board_info->preload_lock);
2693 tmp = me4000_inl(ao_context->preload_reg);
2694 list_for_each(entry, &ao_context->board_info->ao_context_list) {
2695 /* The channels we update must be in the following state :
2696 - Mode A
2697 - Hardware trigger is disabled
2698 - Corresponding simultaneous bit is reset
2699 */
2700 ctrl = me4000_inl(ao_context->ctrl_reg);
2701 if (!
2702 (ctrl &
2703 (ME4000_AO_CTRL_BIT_MODE_0 | ME4000_AO_CTRL_BIT_MODE_1 |
2704 ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG))) {
2705 if (!
2706 (tmp &
2707 (0x1 <<
2708 (((me4000_ao_context_t *) entry)->index + 16)))) {
2709 tmp &=
2710 ~(0x1 <<
2711 (((me4000_ao_context_t *) entry)->index));
2712 }
2713 }
2714 }
2715 me4000_outl(tmp, ao_context->preload_reg);
2716 spin_unlock(&ao_context->board_info->preload_lock);
2717
2718 return 0;
2719}
2720
2721static int me4000_ao_simultaneous_update(me4000_ao_channel_list_t * arg,
2722 me4000_ao_context_t * ao_context)
2723{
2724 int err;
2725 int i;
2726 u32 tmp;
2727 me4000_ao_channel_list_t channels;
2728
2729 CALL_PDEBUG("me4000_ao_simultaneous_update() is executed\n");
2730
2731 /* Copy data from user */
2732 err = copy_from_user(&channels, arg, sizeof(me4000_ao_channel_list_t));
2733 if (err) {
2734 printk(KERN_ERR
2735 "ME4000:me4000_ao_simultaneous_update():Can't copy command\n");
2736 return -EFAULT;
2737 }
2738
2739 channels.list =
2740 kmalloc(sizeof(unsigned long) * channels.count, GFP_KERNEL);
2741 if (!channels.list) {
2742 printk(KERN_ERR
2743 "ME4000:me4000_ao_simultaneous_update():Can't get buffer\n");
2744 return -ENOMEM;
2745 }
2746 memset(channels.list, 0, sizeof(unsigned long) * channels.count);
2747
2748 /* Copy channel list from user */
2749 err =
2750 copy_from_user(channels.list, arg->list,
2751 sizeof(unsigned long) * channels.count);
2752 if (err) {
2753 printk(KERN_ERR
2754 "ME4000:me4000_ao_simultaneous_update():Can't copy list\n");
2755 kfree(channels.list);
2756 return -EFAULT;
2757 }
2758
2759 spin_lock(&ao_context->board_info->preload_lock);
2760 tmp = me4000_inl(ao_context->preload_reg);
2761 for (i = 0; i < channels.count; i++) {
2762 if (channels.list[i] >
2763 ao_context->board_info->board_p->ao.count) {
2764 spin_unlock(&ao_context->board_info->preload_lock);
2765 kfree(channels.list);
2766 printk(KERN_ERR
2767 "ME4000:me4000_ao_simultaneous_update():Invalid board number specified\n");
2768 return -EFAULT;
2769 }
2770 tmp &= ~(0x1 << channels.list[i]); // Clear the preload bit
2771 tmp &= ~(0x1 << (channels.list[i] + 16)); // Clear the hw simultaneous bit
2772 }
2773 me4000_outl(tmp, ao_context->preload_reg);
2774 spin_unlock(&ao_context->board_info->preload_lock);
2775 kfree(channels.list);
2776
2777 return 0;
2778}
2779
2780static int me4000_ao_synchronous_ex_trig(me4000_ao_context_t * ao_context)
2781{
2782 u32 tmp;
2783 unsigned long flags;
2784
2785 CALL_PDEBUG("me4000_ao_synchronous_ex_trig() is executed\n");
2786
2787 /* Check if the state machine is stopped */
2788 tmp = me4000_inl(ao_context->status_reg);
2789 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2790 printk(KERN_ERR
2791 "me4000_ao_synchronous_ex_trig(): DAC is running\n");
2792 return -EBUSY;
2793 }
2794
2795 spin_lock(&ao_context->board_info->preload_lock);
2796 tmp = me4000_inl(ao_context->preload_reg);
2797 tmp &= ~(0x1 << ao_context->index); // Disable synchronous sw bit
2798 tmp |= 0x1 << (ao_context->index + 16); // Enable synchronous hw bit
2799 me4000_outl(tmp, ao_context->preload_reg);
2800 spin_unlock(&ao_context->board_info->preload_lock);
2801
2802 /* Make runnable */
2803 spin_lock_irqsave(&ao_context->int_lock, flags);
2804 tmp = me4000_inl(ao_context->ctrl_reg);
2805 if (tmp & (ME4000_AO_CTRL_BIT_MODE_0 | ME4000_AO_CTRL_BIT_MODE_1)) {
2806 tmp &=
2807 ~(ME4000_AO_CTRL_BIT_STOP |
2808 ME4000_AO_CTRL_BIT_IMMEDIATE_STOP);
2809 me4000_outl(tmp, ao_context->ctrl_reg);
2810 }
2811 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2812
2813 return 0;
2814}
2815
2816static int me4000_ao_synchronous_sw(me4000_ao_context_t * ao_context)
2817{
2818 u32 tmp;
2819 unsigned long flags;
2820
2821 CALL_PDEBUG("me4000_ao_synchronous_sw() is executed\n");
2822
2823 /* Check if the state machine is stopped */
2824 tmp = me4000_inl(ao_context->status_reg);
2825 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2826 printk(KERN_ERR "me4000_ao_synchronous_sw(): DAC is running\n");
2827 return -EBUSY;
2828 }
2829
2830 spin_lock(&ao_context->board_info->preload_lock);
2831 tmp = me4000_inl(ao_context->preload_reg);
2832 tmp |= 0x1 << ao_context->index; // Enable synchronous sw bit
2833 tmp &= ~(0x1 << (ao_context->index + 16)); // Disable synchronous hw bit
2834 me4000_outl(tmp, ao_context->preload_reg);
2835 spin_unlock(&ao_context->board_info->preload_lock);
2836
2837 /* Make runnable */
2838 spin_lock_irqsave(&ao_context->int_lock, flags);
2839 tmp = me4000_inl(ao_context->ctrl_reg);
2840 if (tmp & (ME4000_AO_CTRL_BIT_MODE_0 | ME4000_AO_CTRL_BIT_MODE_1)) {
2841 tmp &=
2842 ~(ME4000_AO_CTRL_BIT_STOP |
2843 ME4000_AO_CTRL_BIT_IMMEDIATE_STOP);
2844 me4000_outl(tmp, ao_context->ctrl_reg);
2845 }
2846 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2847
2848 return 0;
2849}
2850
2851static int me4000_ao_synchronous_disable(me4000_ao_context_t * ao_context)
2852{
2853 return me4000_ao_simultaneous_disable(ao_context);
2854}
2855
2856static int me4000_ao_get_free_buffer(unsigned long *arg,
2857 me4000_ao_context_t * ao_context)
2858{
2859 unsigned long c;
2860 int err;
2861
2862 c = me4000_buf_space(ao_context->circ_buf, ME4000_AO_BUFFER_COUNT);
2863
2864 err = copy_to_user(arg, &c, sizeof(unsigned long));
2865 if (err) {
2866 printk(KERN_ERR
2867 "ME4000:me4000_ao_get_free_buffer():Can't copy to user space\n");
2868 return -EFAULT;
2869 }
2870
2871 return 0;
2872}
2873
2874static int me4000_ao_ex_trig_timeout(unsigned long *arg,
2875 me4000_ao_context_t * ao_context)
2876{
2877 u32 tmp;
2878 wait_queue_head_t queue;
2879 unsigned long ref;
2880 unsigned long timeout;
2881
2882 CALL_PDEBUG("me4000_ao_ex_trig_timeout() is executed\n");
2883
2884 if (get_user(timeout, arg)) {
2885 printk(KERN_ERR
2886 "me4000_ao_ex_trig_timeout():Cannot copy data from user\n");
2887 return -EFAULT;
2888 }
2889
2890 init_waitqueue_head(&queue);
2891
2892 tmp = inl(ao_context->ctrl_reg);
2893
2894 if ((tmp & ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG)) {
2895 if (timeout) {
2896 ref = jiffies;
2897 while ((inl(ao_context->status_reg) &
2898 ME4000_AO_STATUS_BIT_FSM)) {
2899 interruptible_sleep_on_timeout(&queue, 1);
2900 if (signal_pending(current)) {
2901 printk(KERN_ERR
2902 "ME4000:me4000_ao_ex_trig_timeout():Wait on start of state machine interrupted\n");
2903 return -EINTR;
2904 }
2905 if (((jiffies - ref) > (timeout * HZ / USER_HZ))) { // 2.6 has diffrent definitions for HZ in user and kernel space
2906 printk(KERN_ERR
2907 "ME4000:me4000_ao_ex_trig_timeout():Timeout reached\n");
2908 return -EIO;
2909 }
2910 }
2911 } else {
2912 while ((inl(ao_context->status_reg) &
2913 ME4000_AO_STATUS_BIT_FSM)) {
2914 interruptible_sleep_on_timeout(&queue, 1);
2915 if (signal_pending(current)) {
2916 printk(KERN_ERR
2917 "ME4000:me4000_ao_ex_trig_timeout():Wait on start of state machine interrupted\n");
2918 return -EINTR;
2919 }
2920 }
2921 }
2922 } else {
2923 printk(KERN_ERR
2924 "ME4000:me4000_ao_ex_trig_timeout():External Trigger is not enabled\n");
2925 return -EINVAL;
2926 }
2927
2928 return 0;
2929}
2930
2931static int me4000_ao_enable_do(me4000_ao_context_t * ao_context)
2932{
2933 u32 tmp;
2934 unsigned long flags;
2935
2936 CALL_PDEBUG("me4000_ao_enable_do() is executed\n");
2937
2938 /* Only available for analog output 3 */
2939 if (ao_context->index != 3) {
2940 printk(KERN_ERR
2941 "me4000_ao_enable_do():Only available for analog output 3\n");
2942 return -ENOTTY;
2943 }
2944
2945 /* Check if the state machine is stopped */
2946 tmp = me4000_inl(ao_context->status_reg);
2947 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2948 printk(KERN_ERR "me4000_ao_enable_do(): DAC is running\n");
2949 return -EBUSY;
2950 }
2951
2952 /* Set the stop bit */
2953 spin_lock_irqsave(&ao_context->int_lock, flags);
2954 tmp = inl(ao_context->ctrl_reg);
2955 tmp |= ME4000_AO_CTRL_BIT_ENABLE_DO;
2956 me4000_outl(tmp, ao_context->ctrl_reg);
2957 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2958
2959 return 0;
2960}
2961
2962static int me4000_ao_disable_do(me4000_ao_context_t * ao_context)
2963{
2964 u32 tmp;
2965 unsigned long flags;
2966
2967 CALL_PDEBUG("me4000_ao_disable_do() is executed\n");
2968
2969 /* Only available for analog output 3 */
2970 if (ao_context->index != 3) {
2971 printk(KERN_ERR
2972 "me4000_ao_disable():Only available for analog output 3\n");
2973 return -ENOTTY;
2974 }
2975
2976 /* Check if the state machine is stopped */
2977 tmp = me4000_inl(ao_context->status_reg);
2978 if (tmp & ME4000_AO_STATUS_BIT_FSM) {
2979 printk(KERN_ERR "me4000_ao_disable_do(): DAC is running\n");
2980 return -EBUSY;
2981 }
2982
2983 spin_lock_irqsave(&ao_context->int_lock, flags);
2984 tmp = inl(ao_context->ctrl_reg);
2985 tmp &= ~(ME4000_AO_CTRL_BIT_ENABLE_DO);
2986 me4000_outl(tmp, ao_context->ctrl_reg);
2987 spin_unlock_irqrestore(&ao_context->int_lock, flags);
2988
2989 return 0;
2990}
2991
2992static int me4000_ao_fsm_state(int *arg, me4000_ao_context_t * ao_context)
2993{
2994 unsigned long tmp;
2995
2996 CALL_PDEBUG("me4000_ao_fsm_state() is executed\n");
2997
2998 tmp =
2999 (me4000_inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM) ? 1
3000 : 0;
3001
3002 if (ao_context->pipe_flag) {
3003 printk(KERN_ERR "me4000_ao_fsm_state():Broken pipe detected\n");
3004 return -EPIPE;
3005 }
3006
3007 if (put_user(tmp, arg)) {
3008 printk(KERN_ERR "me4000_ao_fsm_state():Cannot copy to user\n");
3009 return -EFAULT;
3010 }
3011
3012 return 0;
3013}
3014
3015/*------------------------------- Analog input stuff --------------------------------------*/
3016
3017static int me4000_ai_prepare(me4000_ai_context_t * ai_context)
3018{
3019 wait_queue_head_t queue;
3020 int err;
3021
3022 CALL_PDEBUG("me4000_ai_prepare() is executed\n");
3023
3024 init_waitqueue_head(&queue);
3025
3026 /* Set the new mode and stop bits */
3027 me4000_outl(ai_context->
3028 mode | ME4000_AI_CTRL_BIT_STOP |
3029 ME4000_AI_CTRL_BIT_IMMEDIATE_STOP, ai_context->ctrl_reg);
3030
3031 /* Set the timer registers */
3032 ai_context->chan_timer = 66;
3033 ai_context->chan_pre_timer = 66;
3034 ai_context->scan_timer_low = 0;
3035 ai_context->scan_timer_high = 0;
3036
3037 me4000_outl(65, ai_context->chan_timer_reg);
3038 me4000_outl(65, ai_context->chan_pre_timer_reg);
3039 me4000_outl(0, ai_context->scan_timer_low_reg);
3040 me4000_outl(0, ai_context->scan_timer_high_reg);
3041 me4000_outl(0, ai_context->scan_pre_timer_low_reg);
3042 me4000_outl(0, ai_context->scan_pre_timer_high_reg);
3043
3044 ai_context->channel_list_count = 0;
3045
3046 if (ai_context->mode) {
3047 /* Request the interrupt line */
3048 err =
3049 request_irq(ai_context->irq, me4000_ai_isr,
3050 IRQF_DISABLED | IRQF_SHARED, ME4000_NAME,
3051 ai_context);
3052 if (err) {
3053 printk(KERN_ERR
3054 "ME4000:me4000_ai_prepare():Can't get interrupt line");
3055 return -ENODEV;
3056 }
3057
3058 /* Allocate circular buffer */
3059 ai_context->circ_buf.buf =
3060 kmalloc(ME4000_AI_BUFFER_SIZE, GFP_KERNEL);
3061 if (!ai_context->circ_buf.buf) {
3062 printk(KERN_ERR
3063 "ME4000:me4000_ai_prepare():Can't get circular buffer\n");
3064 free_irq(ai_context->irq, ai_context);
3065 return -ENOMEM;
3066 }
3067 memset(ai_context->circ_buf.buf, 0, ME4000_AI_BUFFER_SIZE);
3068
3069 /* Clear the circular buffer */
3070 ai_context->circ_buf.head = 0;
3071 ai_context->circ_buf.tail = 0;
3072 }
3073
3074 return 0;
3075}
3076
3077static int me4000_ai_reset(me4000_ai_context_t * ai_context)
3078{
3079 wait_queue_head_t queue;
3080 u32 tmp;
3081 unsigned long flags;
3082
3083 CALL_PDEBUG("me4000_ai_reset() is executed\n");
3084
3085 init_waitqueue_head(&queue);
3086
3087 /*
3088 * First stop conversion of the state machine before reconfigure.
3089 * If not stopped before configuring mode, it could
3090 * walk in a undefined state.
3091 */
3092 spin_lock_irqsave(&ai_context->int_lock, flags);
3093 tmp = me4000_inl(ai_context->ctrl_reg);
3094 tmp |= ME4000_AI_CTRL_BIT_IMMEDIATE_STOP;
3095 me4000_outl(tmp, ai_context->ctrl_reg);
3096 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3097
3098 while (inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM) {
3099 interruptible_sleep_on_timeout(&queue, 1);
3100 if (signal_pending(current)) {
3101 printk(KERN_ERR
3102 "me4000_ai_reset():Wait on state machine after stop interrupted\n");
3103 return -EINTR;
3104 }
3105 }
3106
3107 /* Clear the control register and set the stop bits */
3108 spin_lock_irqsave(&ai_context->int_lock, flags);
3109 tmp = me4000_inl(ai_context->ctrl_reg);
3110 me4000_outl(ME4000_AI_CTRL_BIT_IMMEDIATE_STOP | ME4000_AI_CTRL_BIT_STOP,
3111 ai_context->ctrl_reg);
3112 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3113
3114 /* Reset timer registers */
3115 ai_context->chan_timer = 66;
3116 ai_context->chan_pre_timer = 66;
3117 ai_context->scan_timer_low = 0;
3118 ai_context->scan_timer_high = 0;
3119 ai_context->sample_counter = 0;
3120 ai_context->sample_counter_reload = 0;
3121
3122 me4000_outl(65, ai_context->chan_timer_reg);
3123 me4000_outl(65, ai_context->chan_pre_timer_reg);
3124 me4000_outl(0, ai_context->scan_timer_low_reg);
3125 me4000_outl(0, ai_context->scan_timer_high_reg);
3126 me4000_outl(0, ai_context->scan_pre_timer_low_reg);
3127 me4000_outl(0, ai_context->scan_pre_timer_high_reg);
3128 me4000_outl(0, ai_context->sample_counter_reg);
3129
3130 ai_context->channel_list_count = 0;
3131
3132 /* Clear the circular buffer */
3133 ai_context->circ_buf.head = 0;
3134 ai_context->circ_buf.tail = 0;
3135
3136 return 0;
3137}
3138
3139static int me4000_ai_ioctl_sing(struct inode *inode_p, struct file *file_p,
3140 unsigned int service, unsigned long arg)
3141{
3142 me4000_ai_context_t *ai_context;
3143
3144 CALL_PDEBUG("me4000_ai_ioctl_sing() is executed\n");
3145
3146 ai_context = file_p->private_data;
3147
3148 if (_IOC_TYPE(service) != ME4000_MAGIC) {
3149 printk(KERN_ERR "me4000_ai_ioctl_sing():Wrong magic number\n");
3150 return -ENOTTY;
3151 }
3152 if (_IOC_NR(service) > ME4000_IOCTL_MAXNR) {
3153 printk(KERN_ERR
3154 "me4000_ai_ioctl_sing():Service number to high\n");
3155 return -ENOTTY;
3156 }
3157
3158 switch (service) {
3159 case ME4000_AI_SINGLE:
3160 return me4000_ai_single((me4000_ai_single_t *) arg, ai_context);
3161 case ME4000_AI_EX_TRIG_ENABLE:
3162 return me4000_ai_ex_trig_enable(ai_context);
3163 case ME4000_AI_EX_TRIG_DISABLE:
3164 return me4000_ai_ex_trig_disable(ai_context);
3165 case ME4000_AI_EX_TRIG_SETUP:
3166 return me4000_ai_ex_trig_setup((me4000_ai_trigger_t *) arg,
3167 ai_context);
3168 case ME4000_GET_USER_INFO:
3169 return me4000_get_user_info((me4000_user_info_t *) arg,
3170 ai_context->board_info);
3171 case ME4000_AI_OFFSET_ENABLE:
3172 return me4000_ai_offset_enable(ai_context);
3173 case ME4000_AI_OFFSET_DISABLE:
3174 return me4000_ai_offset_disable(ai_context);
3175 case ME4000_AI_FULLSCALE_ENABLE:
3176 return me4000_ai_fullscale_enable(ai_context);
3177 case ME4000_AI_FULLSCALE_DISABLE:
3178 return me4000_ai_fullscale_disable(ai_context);
3179 case ME4000_AI_EEPROM_READ:
3180 return me4000_eeprom_read((me4000_eeprom_t *) arg, ai_context);
3181 case ME4000_AI_EEPROM_WRITE:
3182 return me4000_eeprom_write((me4000_eeprom_t *) arg, ai_context);
3183 default:
3184 printk(KERN_ERR
3185 "me4000_ai_ioctl_sing():Invalid service number\n");
3186 return -ENOTTY;
3187 }
3188 return 0;
3189}
3190
3191static int me4000_ai_single(me4000_ai_single_t * arg,
3192 me4000_ai_context_t * ai_context)
3193{
3194 me4000_ai_single_t cmd;
3195 int err;
3196 u32 tmp;
3197 wait_queue_head_t queue;
3198 unsigned long jiffy;
3199
3200 CALL_PDEBUG("me4000_ai_single() is executed\n");
3201
3202 init_waitqueue_head(&queue);
3203
3204 /* Copy data from user */
3205 err = copy_from_user(&cmd, arg, sizeof(me4000_ai_single_t));
3206 if (err) {
3207 printk(KERN_ERR
3208 "ME4000:me4000_ai_single():Can't copy from user space\n");
3209 return -EFAULT;
3210 }
3211
3212 /* Check range parameter */
3213 switch (cmd.range) {
3214 case ME4000_AI_LIST_RANGE_BIPOLAR_10:
3215 case ME4000_AI_LIST_RANGE_BIPOLAR_2_5:
3216 case ME4000_AI_LIST_RANGE_UNIPOLAR_10:
3217 case ME4000_AI_LIST_RANGE_UNIPOLAR_2_5:
3218 break;
3219 default:
3220 printk(KERN_ERR
3221 "ME4000:me4000_ai_single():Invalid range specified\n");
3222 return -EINVAL;
3223 }
3224
3225 /* Check mode and channel number */
3226 switch (cmd.mode) {
3227 case ME4000_AI_LIST_INPUT_SINGLE_ENDED:
3228 if (cmd.channel >= ai_context->board_info->board_p->ai.count) {
3229 printk(KERN_ERR
3230 "ME4000:me4000_ai_single():Analog input is not available\n");
3231 return -EINVAL;
3232 }
3233 break;
3234 case ME4000_AI_LIST_INPUT_DIFFERENTIAL:
3235 if (cmd.channel >=
3236 ai_context->board_info->board_p->ai.diff_count) {
3237 printk(KERN_ERR
3238 "ME4000:me4000_ai_single():Analog input is not available in differential mode\n");
3239 return -EINVAL;
3240 }
3241 break;
3242 default:
3243 printk(KERN_ERR
3244 "ME4000:me4000_ai_single():Invalid mode specified\n");
3245 return -EINVAL;
3246 }
3247
3248 /* Clear channel list, data fifo and both stop bits */
3249 tmp = me4000_inl(ai_context->ctrl_reg);
3250 tmp &=
3251 ~(ME4000_AI_CTRL_BIT_CHANNEL_FIFO | ME4000_AI_CTRL_BIT_DATA_FIFO |
3252 ME4000_AI_CTRL_BIT_STOP | ME4000_AI_CTRL_BIT_IMMEDIATE_STOP);
3253 me4000_outl(tmp, ai_context->ctrl_reg);
3254
3255 /* Enable channel list and data fifo */
3256 tmp |= ME4000_AI_CTRL_BIT_CHANNEL_FIFO | ME4000_AI_CTRL_BIT_DATA_FIFO;
3257 me4000_outl(tmp, ai_context->ctrl_reg);
3258
3259 /* Generate channel list entry */
3260 me4000_outl(cmd.channel | cmd.range | cmd.
3261 mode | ME4000_AI_LIST_LAST_ENTRY,
3262 ai_context->channel_list_reg);
3263
3264 /* Set the timer to maximum */
3265 me4000_outl(66, ai_context->chan_timer_reg);
3266 me4000_outl(66, ai_context->chan_pre_timer_reg);
3267
3268 if (tmp & ME4000_AI_CTRL_BIT_EX_TRIG) {
3269 jiffy = jiffies;
3270 while (!
3271 (me4000_inl(ai_context->status_reg) &
3272 ME4000_AI_STATUS_BIT_EF_DATA)) {
3273 interruptible_sleep_on_timeout(&queue, 1);
3274 if (signal_pending(current)) {
3275 printk(KERN_ERR
3276 "ME4000:me4000_ai_single():Wait on start of state machine interrupted\n");
3277 return -EINTR;
3278 }
3279 if (((jiffies - jiffy) > (cmd.timeout * HZ / USER_HZ)) && cmd.timeout) { // 2.6 has diffrent definitions for HZ in user and kernel space
3280 printk(KERN_ERR
3281 "ME4000:me4000_ai_single():Timeout reached\n");
3282 return -EIO;
3283 }
3284 }
3285 } else {
3286 /* Start conversion */
3287 me4000_inl(ai_context->start_reg);
3288
3289 /* Wait until ready */
3290 udelay(10);
3291 if (!
3292 (me4000_inl(ai_context->status_reg) &
3293 ME4000_AI_STATUS_BIT_EF_DATA)) {
3294 printk(KERN_ERR
3295 "ME4000:me4000_ai_single():Value not available after wait\n");
3296 return -EIO;
3297 }
3298 }
3299
3300 /* Read value from data fifo */
3301 cmd.value = me4000_inl(ai_context->data_reg) & 0xFFFF;
3302
3303 /* Copy result back to user */
3304 err = copy_to_user(arg, &cmd, sizeof(me4000_ai_single_t));
3305 if (err) {
3306 printk(KERN_ERR
3307 "ME4000:me4000_ai_single():Can't copy to user space\n");
3308 return -EFAULT;
3309 }
3310
3311 return 0;
3312}
3313
3314static int me4000_ai_ioctl_sw(struct inode *inode_p, struct file *file_p,
3315 unsigned int service, unsigned long arg)
3316{
3317 me4000_ai_context_t *ai_context;
3318
3319 CALL_PDEBUG("me4000_ai_ioctl_sw() is executed\n");
3320
3321 ai_context = file_p->private_data;
3322
3323 if (_IOC_TYPE(service) != ME4000_MAGIC) {
3324 printk(KERN_ERR "me4000_ai_ioctl_sw():Wrong magic number\n");
3325 return -ENOTTY;
3326 }
3327 if (_IOC_NR(service) > ME4000_IOCTL_MAXNR) {
3328 printk(KERN_ERR
3329 "me4000_ai_ioctl_sw():Service number to high\n");
3330 return -ENOTTY;
3331 }
3332
3333 switch (service) {
3334 case ME4000_AI_SC_SETUP:
3335 return me4000_ai_sc_setup((me4000_ai_sc_t *) arg, ai_context);
3336 case ME4000_AI_CONFIG:
3337 return me4000_ai_config((me4000_ai_config_t *) arg, ai_context);
3338 case ME4000_AI_START:
3339 return me4000_ai_start(ai_context);
3340 case ME4000_AI_STOP:
3341 return me4000_ai_stop(ai_context);
3342 case ME4000_AI_IMMEDIATE_STOP:
3343 return me4000_ai_immediate_stop(ai_context);
3344 case ME4000_AI_FSM_STATE:
3345 return me4000_ai_fsm_state((int *)arg, ai_context);
3346 case ME4000_GET_USER_INFO:
3347 return me4000_get_user_info((me4000_user_info_t *) arg,
3348 ai_context->board_info);
3349 case ME4000_AI_EEPROM_READ:
3350 return me4000_eeprom_read((me4000_eeprom_t *) arg, ai_context);
3351 case ME4000_AI_EEPROM_WRITE:
3352 return me4000_eeprom_write((me4000_eeprom_t *) arg, ai_context);
3353 case ME4000_AI_GET_COUNT_BUFFER:
3354 return me4000_ai_get_count_buffer((unsigned long *)arg,
3355 ai_context);
3356 default:
3357 printk(KERN_ERR
3358 "ME4000:me4000_ai_ioctl_sw():Invalid service number %d\n",
3359 service);
3360 return -ENOTTY;
3361 }
3362 return 0;
3363}
3364
3365static int me4000_ai_ioctl_ext(struct inode *inode_p, struct file *file_p,
3366 unsigned int service, unsigned long arg)
3367{
3368 me4000_ai_context_t *ai_context;
3369
3370 CALL_PDEBUG("me4000_ai_ioctl_ext() is executed\n");
3371
3372 ai_context = file_p->private_data;
3373
3374 if (_IOC_TYPE(service) != ME4000_MAGIC) {
3375 printk(KERN_ERR "me4000_ai_ioctl_ext():Wrong magic number\n");
3376 return -ENOTTY;
3377 }
3378 if (_IOC_NR(service) > ME4000_IOCTL_MAXNR) {
3379 printk(KERN_ERR
3380 "me4000_ai_ioctl_ext():Service number to high\n");
3381 return -ENOTTY;
3382 }
3383
3384 switch (service) {
3385 case ME4000_AI_SC_SETUP:
3386 return me4000_ai_sc_setup((me4000_ai_sc_t *) arg, ai_context);
3387 case ME4000_AI_CONFIG:
3388 return me4000_ai_config((me4000_ai_config_t *) arg, ai_context);
3389 case ME4000_AI_START:
3390 return me4000_ai_start_ex((unsigned long *)arg, ai_context);
3391 case ME4000_AI_STOP:
3392 return me4000_ai_stop(ai_context);
3393 case ME4000_AI_IMMEDIATE_STOP:
3394 return me4000_ai_immediate_stop(ai_context);
3395 case ME4000_AI_EX_TRIG_ENABLE:
3396 return me4000_ai_ex_trig_enable(ai_context);
3397 case ME4000_AI_EX_TRIG_DISABLE:
3398 return me4000_ai_ex_trig_disable(ai_context);
3399 case ME4000_AI_EX_TRIG_SETUP:
3400 return me4000_ai_ex_trig_setup((me4000_ai_trigger_t *) arg,
3401 ai_context);
3402 case ME4000_AI_FSM_STATE:
3403 return me4000_ai_fsm_state((int *)arg, ai_context);
3404 case ME4000_GET_USER_INFO:
3405 return me4000_get_user_info((me4000_user_info_t *) arg,
3406 ai_context->board_info);
3407 case ME4000_AI_GET_COUNT_BUFFER:
3408 return me4000_ai_get_count_buffer((unsigned long *)arg,
3409 ai_context);
3410 default:
3411 printk(KERN_ERR
3412 "ME4000:me4000_ai_ioctl_ext():Invalid service number %d\n",
3413 service);
3414 return -ENOTTY;
3415 }
3416 return 0;
3417}
3418
3419static int me4000_ai_fasync(int fd, struct file *file_p, int mode)
3420{
3421 me4000_ai_context_t *ai_context;
3422
3423 CALL_PDEBUG("me4000_ao_fasync_cont() is executed\n");
3424
3425 ai_context = file_p->private_data;
3426 return fasync_helper(fd, file_p, mode, &ai_context->fasync_p);
3427}
3428
3429static int me4000_ai_config(me4000_ai_config_t * arg,
3430 me4000_ai_context_t * ai_context)
3431{
3432 me4000_ai_config_t cmd;
3433 u32 *list = NULL;
3434 u32 mode;
3435 int i;
3436 int err;
3437 wait_queue_head_t queue;
3438 u64 scan;
3439 u32 tmp;
3440
3441 CALL_PDEBUG("me4000_ai_config() is executed\n");
3442
3443 init_waitqueue_head(&queue);
3444
3445 /* Check if conversion is stopped */
3446 if (inl(ai_context->ctrl_reg) & ME4000_AI_STATUS_BIT_FSM) {
3447 printk(KERN_ERR
3448 "ME4000:me4000_ai_config():Conversion is not stopped\n");
3449 err = -EBUSY;
3450 goto AI_CONFIG_ERR;
3451 }
3452
3453 /* Copy data from user */
3454 err = copy_from_user(&cmd, arg, sizeof(me4000_ai_config_t));
3455 if (err) {
3456 printk(KERN_ERR
3457 "ME4000:me4000_ai_config():Can't copy from user space\n");
3458 err = -EFAULT;
3459 goto AI_CONFIG_ERR;
3460 }
3461
3462 PDEBUG
3463 ("me4000_ai_config():chan = %ld, pre_chan = %ld, scan_low = %ld, scan_high = %ld, count = %ld\n",
3464 cmd.timer.chan, cmd.timer.pre_chan, cmd.timer.scan_low,
3465 cmd.timer.scan_high, cmd.channel_list.count);
3466
3467 /* Check whether sample and hold is available for this board */
3468 if (cmd.sh) {
3469 if (!ai_context->board_info->board_p->ai.sh_count) {
3470 printk(KERN_ERR
3471 "ME4000:me4000_ai_config():Sample and Hold is not available for this board\n");
3472 err = -ENODEV;
3473 goto AI_CONFIG_ERR;
3474 }
3475 }
3476
3477 /* Check the channel list size */
3478 if (cmd.channel_list.count > ME4000_AI_CHANNEL_LIST_COUNT) {
3479 printk(KERN_ERR
3480 "me4000_ai_config():Channel list is to large\n");
3481 err = -EINVAL;
3482 goto AI_CONFIG_ERR;
3483 }
3484
3485 /* Copy channel list from user */
3486 list = kmalloc(sizeof(u32) * cmd.channel_list.count, GFP_KERNEL);
3487 if (!list) {
3488 printk(KERN_ERR
3489 "ME4000:me4000_ai_config():Can't get memory for channel list\n");
3490 err = -ENOMEM;
3491 goto AI_CONFIG_ERR;
3492 }
3493 err =
3494 copy_from_user(list, cmd.channel_list.list,
3495 sizeof(u32) * cmd.channel_list.count);
3496 if (err) {
3497 printk(KERN_ERR
3498 "ME4000:me4000_ai_config():Can't copy from user space\n");
3499 err = -EFAULT;
3500 goto AI_CONFIG_ERR;
3501 }
3502
3503 /* Check if last entry bit is set */
3504 if (!(list[cmd.channel_list.count - 1] & ME4000_AI_LIST_LAST_ENTRY)) {
3505 printk(KERN_WARNING
3506 "me4000_ai_config():Last entry bit is not set\n");
3507 list[cmd.channel_list.count - 1] |= ME4000_AI_LIST_LAST_ENTRY;
3508 }
3509
3510 /* Check whether mode is equal for all entries */
3511 mode = list[0] & 0x20;
3512 for (i = 0; i < cmd.channel_list.count; i++) {
3513 if ((list[i] & 0x20) != mode) {
3514 printk(KERN_ERR
3515 "ME4000:me4000_ai_config():Mode is not equal for all entries\n");
3516 err = -EINVAL;
3517 goto AI_CONFIG_ERR;
3518 }
3519 }
3520
3521 /* Check whether channels are available for this mode */
3522 if (mode == ME4000_AI_LIST_INPUT_SINGLE_ENDED) {
3523 for (i = 0; i < cmd.channel_list.count; i++) {
3524 if ((list[i] & 0x1F) >=
3525 ai_context->board_info->board_p->ai.count) {
3526 printk(KERN_ERR
3527 "ME4000:me4000_ai_config():Channel is not available for single ended\n");
3528 err = -EINVAL;
3529 goto AI_CONFIG_ERR;
3530 }
3531 }
3532 } else if (mode == ME4000_AI_LIST_INPUT_DIFFERENTIAL) {
3533 for (i = 0; i < cmd.channel_list.count; i++) {
3534 if ((list[i] & 0x1F) >=
3535 ai_context->board_info->board_p->ai.diff_count) {
3536 printk(KERN_ERR
3537 "ME4000:me4000_ai_config():Channel is not available for differential\n");
3538 err = -EINVAL;
3539 goto AI_CONFIG_ERR;
3540 }
3541 }
3542 }
3543
3544 /* Check if bipolar is set for all entries when in differential mode */
3545 if (mode == ME4000_AI_LIST_INPUT_DIFFERENTIAL) {
3546 for (i = 0; i < cmd.channel_list.count; i++) {
3547 if ((list[i] & 0xC0) != ME4000_AI_LIST_RANGE_BIPOLAR_10
3548 && (list[i] & 0xC0) !=
3549 ME4000_AI_LIST_RANGE_BIPOLAR_2_5) {
3550 printk(KERN_ERR
3551 "ME4000:me4000_ai_config():Bipolar is not selected in differential mode\n");
3552 err = -EINVAL;
3553 goto AI_CONFIG_ERR;
3554 }
3555 }
3556 }
3557
3558 if (ai_context->mode != ME4000_AI_ACQ_MODE_EXT_SINGLE_VALUE) {
3559 /* Check for minimum channel divisor */
3560 if (cmd.timer.chan < ME4000_AI_MIN_TICKS) {
3561 printk(KERN_ERR
3562 "ME4000:me4000_ai_config():Channel timer divisor is to low\n");
3563 err = -EINVAL;
3564 goto AI_CONFIG_ERR;
3565 }
3566
3567 /* Check if minimum channel divisor is adjusted when sample and hold is activated */
3568 if ((cmd.sh) && (cmd.timer.chan != ME4000_AI_MIN_TICKS)) {
3569 printk(KERN_ERR
3570 "ME4000:me4000_ai_config():Channel timer divisor must be at minimum when sample and hold is activated\n");
3571 err = -EINVAL;
3572 goto AI_CONFIG_ERR;
3573 }
3574
3575 /* Check for minimum channel pre divisor */
3576 if (cmd.timer.pre_chan < ME4000_AI_MIN_TICKS) {
3577 printk(KERN_ERR
3578 "ME4000:me4000_ai_config():Channel pre timer divisor is to low\n");
3579 err = -EINVAL;
3580 goto AI_CONFIG_ERR;
3581 }
3582
3583 /* Write the channel timers */
3584 me4000_outl(cmd.timer.chan - 1, ai_context->chan_timer_reg);
3585 me4000_outl(cmd.timer.pre_chan - 1,
3586 ai_context->chan_pre_timer_reg);
3587
3588 /* Save the timer values in the board context */
3589 ai_context->chan_timer = cmd.timer.chan;
3590 ai_context->chan_pre_timer = cmd.timer.pre_chan;
3591
3592 if (ai_context->mode != ME4000_AI_ACQ_MODE_EXT_SINGLE_CHANLIST) {
3593 /* Check for scan timer divisor */
3594 scan =
3595 (u64) cmd.timer.scan_low | ((u64) cmd.timer.
3596 scan_high << 32);
3597 if (scan != 0) {
3598 if (scan <
3599 cmd.channel_list.count * cmd.timer.chan +
3600 1) {
3601 printk(KERN_ERR
3602 "ME4000:me4000_ai_config():Scan timer divisor is to low\n");
3603 err = -EINVAL;
3604 goto AI_CONFIG_ERR;
3605 }
3606 }
3607
3608 /* Write the scan timers */
3609 if (scan != 0) {
3610 scan--;
3611 tmp = (u32) (scan & 0xFFFFFFFF);
3612 me4000_outl(tmp,
3613 ai_context->scan_timer_low_reg);
3614 tmp = (u32) ((scan >> 32) & 0xFFFFFFFF);
3615 me4000_outl(tmp,
3616 ai_context->scan_timer_high_reg);
3617
3618 scan =
3619 scan - (cmd.timer.chan - 1) +
3620 (cmd.timer.pre_chan - 1);
3621 tmp = (u32) (scan & 0xFFFFFFFF);
3622 me4000_outl(tmp,
3623 ai_context->scan_pre_timer_low_reg);
3624 tmp = (u32) ((scan >> 32) & 0xFFFFFFFF);
3625 me4000_outl(tmp,
3626 ai_context->
3627 scan_pre_timer_high_reg);
3628 } else {
3629 me4000_outl(0x0,
3630 ai_context->scan_timer_low_reg);
3631 me4000_outl(0x0,
3632 ai_context->scan_timer_high_reg);
3633
3634 me4000_outl(0x0,
3635 ai_context->scan_pre_timer_low_reg);
3636 me4000_outl(0x0,
3637 ai_context->
3638 scan_pre_timer_high_reg);
3639 }
3640
3641 ai_context->scan_timer_low = cmd.timer.scan_low;
3642 ai_context->scan_timer_high = cmd.timer.scan_high;
3643 }
3644 }
3645
3646 /* Clear the channel list */
3647 tmp = me4000_inl(ai_context->ctrl_reg);
3648 tmp &= ~ME4000_AI_CTRL_BIT_CHANNEL_FIFO;
3649 me4000_outl(tmp, ai_context->ctrl_reg);
3650 tmp |= ME4000_AI_CTRL_BIT_CHANNEL_FIFO;
3651 me4000_outl(tmp, ai_context->ctrl_reg);
3652
3653 /* Write the channel list */
3654 for (i = 0; i < cmd.channel_list.count; i++) {
3655 me4000_outl(list[i], ai_context->channel_list_reg);
3656 }
3657
3658 /* Setup sample and hold */
3659 if (cmd.sh) {
3660 tmp |= ME4000_AI_CTRL_BIT_SAMPLE_HOLD;
3661 me4000_outl(tmp, ai_context->ctrl_reg);
3662 } else {
3663 tmp &= ~ME4000_AI_CTRL_BIT_SAMPLE_HOLD;
3664 me4000_outl(tmp, ai_context->ctrl_reg);
3665 }
3666
3667 /* Save the channel list size in the board context */
3668 ai_context->channel_list_count = cmd.channel_list.count;
3669
3670 kfree(list);
3671
3672 return 0;
3673
3674 AI_CONFIG_ERR:
3675
3676 /* Reset the timers */
3677 ai_context->chan_timer = 66;
3678 ai_context->chan_pre_timer = 66;
3679 ai_context->scan_timer_low = 0;
3680 ai_context->scan_timer_high = 0;
3681
3682 me4000_outl(65, ai_context->chan_timer_reg);
3683 me4000_outl(65, ai_context->chan_pre_timer_reg);
3684 me4000_outl(0, ai_context->scan_timer_high_reg);
3685 me4000_outl(0, ai_context->scan_timer_low_reg);
3686 me4000_outl(0, ai_context->scan_pre_timer_high_reg);
3687 me4000_outl(0, ai_context->scan_pre_timer_low_reg);
3688
3689 ai_context->channel_list_count = 0;
3690
3691 tmp = me4000_inl(ai_context->ctrl_reg);
3692 tmp &=
3693 ~(ME4000_AI_CTRL_BIT_CHANNEL_FIFO | ME4000_AI_CTRL_BIT_SAMPLE_HOLD);
3694
3695 if (list)
3696 kfree(list);
3697
3698 return err;
3699
3700}
3701
3702static int ai_common_start(me4000_ai_context_t * ai_context)
3703{
3704 u32 tmp;
3705 CALL_PDEBUG("ai_common_start() is executed\n");
3706
3707 tmp = me4000_inl(ai_context->ctrl_reg);
3708
3709 /* Check if conversion is stopped */
3710 if (tmp & ME4000_AI_STATUS_BIT_FSM) {
3711 printk(KERN_ERR
3712 "ME4000:ai_common_start():Conversion is not stopped\n");
3713 return -EBUSY;
3714 }
3715
3716 /* Clear data fifo, disable all interrupts, clear sample counter reload */
3717 tmp &= ~(ME4000_AI_CTRL_BIT_DATA_FIFO | ME4000_AI_CTRL_BIT_LE_IRQ |
3718 ME4000_AI_CTRL_BIT_HF_IRQ | ME4000_AI_CTRL_BIT_SC_IRQ |
3719 ME4000_AI_CTRL_BIT_SC_RELOAD);
3720
3721 me4000_outl(tmp, ai_context->ctrl_reg);
3722
3723 /* Clear circular buffer */
3724 ai_context->circ_buf.head = 0;
3725 ai_context->circ_buf.tail = 0;
3726
3727 /* Enable data fifo */
3728 tmp |= ME4000_AI_CTRL_BIT_DATA_FIFO;
3729
3730 /* Determine interrupt setup */
3731 if (ai_context->sample_counter && !ai_context->sample_counter_reload) {
3732 /* Enable Half Full Interrupt and Sample Counter Interrupt */
3733 tmp |= ME4000_AI_CTRL_BIT_SC_IRQ | ME4000_AI_CTRL_BIT_HF_IRQ;
3734 } else if (ai_context->sample_counter
3735 && ai_context->sample_counter_reload) {
3736 if (ai_context->sample_counter <= ME4000_AI_FIFO_COUNT / 2) {
3737 /* Enable only Sample Counter Interrupt */
3738 tmp |=
3739 ME4000_AI_CTRL_BIT_SC_IRQ |
3740 ME4000_AI_CTRL_BIT_SC_RELOAD;
3741 } else {
3742 /* Enable Half Full Interrupt and Sample Counter Interrupt */
3743 tmp |=
3744 ME4000_AI_CTRL_BIT_SC_IRQ |
3745 ME4000_AI_CTRL_BIT_HF_IRQ |
3746 ME4000_AI_CTRL_BIT_SC_RELOAD;
3747 }
3748 } else {
3749 /* Enable only Half Full Interrupt */
3750 tmp |= ME4000_AI_CTRL_BIT_HF_IRQ;
3751 }
3752
3753 /* Clear the stop bits */
3754 tmp &= ~(ME4000_AI_CTRL_BIT_STOP | ME4000_AI_CTRL_BIT_IMMEDIATE_STOP);
3755
3756 /* Write setup to hardware */
3757 me4000_outl(tmp, ai_context->ctrl_reg);
3758
3759 /* Write sample counter */
3760 me4000_outl(ai_context->sample_counter, ai_context->sample_counter_reg);
3761
3762 return 0;
3763}
3764
3765static int me4000_ai_start(me4000_ai_context_t * ai_context)
3766{
3767 int err;
3768 CALL_PDEBUG("me4000_ai_start() is executed\n");
3769
3770 /* Prepare Hardware */
3771 err = ai_common_start(ai_context);
3772 if (err)
3773 return err;
3774
3775 /* Start conversion by dummy read */
3776 me4000_inl(ai_context->start_reg);
3777
3778 return 0;
3779}
3780
3781static int me4000_ai_start_ex(unsigned long *arg,
3782 me4000_ai_context_t * ai_context)
3783{
3784 int err;
3785 wait_queue_head_t queue;
3786 unsigned long ref;
3787 unsigned long timeout;
3788
3789 CALL_PDEBUG("me4000_ai_start_ex() is executed\n");
3790
3791 if (get_user(timeout, arg)) {
3792 printk(KERN_ERR
3793 "me4000_ai_start_ex():Cannot copy data from user\n");
3794 return -EFAULT;
3795 }
3796
3797 init_waitqueue_head(&queue);
3798
3799 /* Prepare Hardware */
3800 err = ai_common_start(ai_context);
3801 if (err)
3802 return err;
3803
3804 if (timeout) {
3805 ref = jiffies;
3806 while (!
3807 (inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM))
3808 {
3809 interruptible_sleep_on_timeout(&queue, 1);
3810 if (signal_pending(current)) {
3811 printk(KERN_ERR
3812 "ME4000:me4000_ai_start_ex():Wait on start of state machine interrupted\n");
3813 return -EINTR;
3814 }
3815 if (((jiffies - ref) > (timeout * HZ / USER_HZ))) { // 2.6 has diffrent definitions for HZ in user and kernel space
3816 printk(KERN_ERR
3817 "ME4000:me4000_ai_start_ex():Timeout reached\n");
3818 return -EIO;
3819 }
3820 }
3821 } else {
3822 while (!
3823 (inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM))
3824 {
3825 interruptible_sleep_on_timeout(&queue, 1);
3826 if (signal_pending(current)) {
3827 printk(KERN_ERR
3828 "ME4000:me4000_ai_start_ex():Wait on start of state machine interrupted\n");
3829 return -EINTR;
3830 }
3831 }
3832 }
3833
3834 return 0;
3835}
3836
3837static int me4000_ai_stop(me4000_ai_context_t * ai_context)
3838{
3839 wait_queue_head_t queue;
3840 u32 tmp;
3841 unsigned long flags;
3842
3843 CALL_PDEBUG("me4000_ai_stop() is executed\n");
3844
3845 init_waitqueue_head(&queue);
3846
3847 /* Disable irqs and clear data fifo */
3848 spin_lock_irqsave(&ai_context->int_lock, flags);
3849 tmp = me4000_inl(ai_context->ctrl_reg);
3850 tmp &=
3851 ~(ME4000_AI_CTRL_BIT_HF_IRQ | ME4000_AI_CTRL_BIT_SC_IRQ |
3852 ME4000_AI_CTRL_BIT_DATA_FIFO);
3853 /* Stop conversion of the state machine */
3854 tmp |= ME4000_AI_CTRL_BIT_STOP;
3855 me4000_outl(tmp, ai_context->ctrl_reg);
3856 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3857
3858 /* Clear circular buffer */
3859 ai_context->circ_buf.head = 0;
3860 ai_context->circ_buf.tail = 0;
3861
3862 while (inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM) {
3863 interruptible_sleep_on_timeout(&queue, 1);
3864 if (signal_pending(current)) {
3865 printk(KERN_ERR
3866 "ME4000:me4000_ai_stop():Wait on state machine after stop interrupted\n");
3867 return -EINTR;
3868 }
3869 }
3870
3871 return 0;
3872}
3873
3874static int me4000_ai_immediate_stop(me4000_ai_context_t * ai_context)
3875{
3876 wait_queue_head_t queue;
3877 u32 tmp;
3878 unsigned long flags;
3879
3880 CALL_PDEBUG("me4000_ai_stop() is executed\n");
3881
3882 init_waitqueue_head(&queue);
3883
3884 /* Disable irqs and clear data fifo */
3885 spin_lock_irqsave(&ai_context->int_lock, flags);
3886 tmp = me4000_inl(ai_context->ctrl_reg);
3887 tmp &=
3888 ~(ME4000_AI_CTRL_BIT_HF_IRQ | ME4000_AI_CTRL_BIT_SC_IRQ |
3889 ME4000_AI_CTRL_BIT_DATA_FIFO);
3890 /* Stop conversion of the state machine */
3891 tmp |= ME4000_AI_CTRL_BIT_IMMEDIATE_STOP;
3892 me4000_outl(tmp, ai_context->ctrl_reg);
3893 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3894
3895 /* Clear circular buffer */
3896 ai_context->circ_buf.head = 0;
3897 ai_context->circ_buf.tail = 0;
3898
3899 while (inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM) {
3900 interruptible_sleep_on_timeout(&queue, 1);
3901 if (signal_pending(current)) {
3902 printk(KERN_ERR
3903 "ME4000:me4000_ai_stop():Wait on state machine after stop interrupted\n");
3904 return -EINTR;
3905 }
3906 }
3907
3908 return 0;
3909}
3910
3911static int me4000_ai_ex_trig_enable(me4000_ai_context_t * ai_context)
3912{
3913 u32 tmp;
3914 unsigned long flags;
3915
3916 CALL_PDEBUG("me4000_ai_ex_trig_enable() is executed\n");
3917
3918 spin_lock_irqsave(&ai_context->int_lock, flags);
3919 tmp = me4000_inl(ai_context->ctrl_reg);
3920 tmp |= ME4000_AI_CTRL_BIT_EX_TRIG;
3921 me4000_outl(tmp, ai_context->ctrl_reg);
3922 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3923
3924 return 0;
3925}
3926
3927static int me4000_ai_ex_trig_disable(me4000_ai_context_t * ai_context)
3928{
3929 u32 tmp;
3930 unsigned long flags;
3931
3932 CALL_PDEBUG("me4000_ai_ex_trig_disable() is executed\n");
3933
3934 spin_lock_irqsave(&ai_context->int_lock, flags);
3935 tmp = me4000_inl(ai_context->ctrl_reg);
3936 tmp &= ~ME4000_AI_CTRL_BIT_EX_TRIG;
3937 me4000_outl(tmp, ai_context->ctrl_reg);
3938 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3939
3940 return 0;
3941}
3942
3943static int me4000_ai_ex_trig_setup(me4000_ai_trigger_t * arg,
3944 me4000_ai_context_t * ai_context)
3945{
3946 me4000_ai_trigger_t cmd;
3947 int err;
3948 u32 tmp;
3949 unsigned long flags;
3950
3951 CALL_PDEBUG("me4000_ai_ex_trig_setup() is executed\n");
3952
3953 /* Copy data from user */
3954 err = copy_from_user(&cmd, arg, sizeof(me4000_ai_trigger_t));
3955 if (err) {
3956 printk(KERN_ERR
3957 "ME4000:me4000_ai_ex_trig_setup():Can't copy from user space\n");
3958 return -EFAULT;
3959 }
3960
3961 spin_lock_irqsave(&ai_context->int_lock, flags);
3962 tmp = me4000_inl(ai_context->ctrl_reg);
3963
3964 if (cmd.mode == ME4000_AI_TRIGGER_EXT_DIGITAL) {
3965 tmp &= ~ME4000_AI_CTRL_BIT_EX_TRIG_ANALOG;
3966 } else if (cmd.mode == ME4000_AI_TRIGGER_EXT_ANALOG) {
3967 if (!ai_context->board_info->board_p->ai.ex_trig_analog) {
3968 printk(KERN_ERR
3969 "ME4000:me4000_ai_ex_trig_setup():No analog trigger available\n");
3970 return -EINVAL;
3971 }
3972 tmp |= ME4000_AI_CTRL_BIT_EX_TRIG_ANALOG;
3973 } else {
3974 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3975 printk(KERN_ERR
3976 "ME4000:me4000_ai_ex_trig_setup():Invalid trigger mode specified\n");
3977 return -EINVAL;
3978 }
3979
3980 if (cmd.edge == ME4000_AI_TRIGGER_EXT_EDGE_RISING) {
3981 tmp &=
3982 ~(ME4000_AI_CTRL_BIT_EX_TRIG_BOTH |
3983 ME4000_AI_CTRL_BIT_EX_TRIG_FALLING);
3984 } else if (cmd.edge == ME4000_AI_TRIGGER_EXT_EDGE_FALLING) {
3985 tmp |= ME4000_AI_CTRL_BIT_EX_TRIG_FALLING;
3986 tmp &= ~ME4000_AI_CTRL_BIT_EX_TRIG_BOTH;
3987 } else if (cmd.edge == ME4000_AI_TRIGGER_EXT_EDGE_BOTH) {
3988 tmp |=
3989 ME4000_AI_CTRL_BIT_EX_TRIG_BOTH |
3990 ME4000_AI_CTRL_BIT_EX_TRIG_FALLING;
3991 } else {
3992 spin_unlock_irqrestore(&ai_context->int_lock, flags);
3993 printk(KERN_ERR
3994 "ME4000:me4000_ai_ex_trig_setup():Invalid trigger edge specified\n");
3995 return -EINVAL;
3996 }
3997
3998 me4000_outl(tmp, ai_context->ctrl_reg);
3999 spin_unlock_irqrestore(&ai_context->int_lock, flags);
4000 return 0;
4001}
4002
4003static int me4000_ai_sc_setup(me4000_ai_sc_t * arg,
4004 me4000_ai_context_t * ai_context)
4005{
4006 me4000_ai_sc_t cmd;
4007 int err;
4008
4009 CALL_PDEBUG("me4000_ai_sc_setup() is executed\n");
4010
4011 /* Copy data from user */
4012 err = copy_from_user(&cmd, arg, sizeof(me4000_ai_sc_t));
4013 if (err) {
4014 printk(KERN_ERR
4015 "ME4000:me4000_ai_sc_setup():Can't copy from user space\n");
4016 return -EFAULT;
4017 }
4018
4019 ai_context->sample_counter = cmd.value;
4020 ai_context->sample_counter_reload = cmd.reload;
4021
4022 return 0;
4023}
4024
4025static ssize_t me4000_ai_read(struct file *filep, char *buff, size_t cnt,
4026 loff_t * offp)
4027{
4028 me4000_ai_context_t *ai_context = filep->private_data;
4029 s16 *buffer = (s16 *) buff;
4030 size_t count = cnt / 2;
4031 unsigned long flags;
4032 int tmp;
4033 int c = 0;
4034 int k = 0;
4035 int ret = 0;
4036 wait_queue_t wait;
4037
4038 CALL_PDEBUG("me4000_ai_read() is executed\n");
4039
4040 init_waitqueue_entry(&wait, current);
4041
4042 /* Check count */
4043 if (count <= 0) {
4044 PDEBUG("me4000_ai_read():Count is 0\n");
4045 return 0;
4046 }
4047
4048 while (count > 0) {
4049 if (filep->f_flags & O_NONBLOCK) {
4050 c = me4000_values_to_end(ai_context->circ_buf,
4051 ME4000_AI_BUFFER_COUNT);
4052 if (!c) {
4053 PDEBUG
4054 ("me4000_ai_read():Returning from nonblocking read\n");
4055 break;
4056 }
4057 } else {
4058 /* Check if conversion is still running */
4059 if (!
4060 (me4000_inl(ai_context->status_reg) &
4061 ME4000_AI_STATUS_BIT_FSM)) {
4062 printk(KERN_ERR
4063 "ME4000:me4000_ai_read():Conversion interrupted\n");
4064 return -EPIPE;
4065 }
4066
4067 wait_event_interruptible(ai_context->wait_queue,
4068 (me4000_values_to_end
4069 (ai_context->circ_buf,
4070 ME4000_AI_BUFFER_COUNT)));
4071 if (signal_pending(current)) {
4072 printk(KERN_ERR
4073 "ME4000:me4000_ai_read():Wait on values interrupted from signal\n");
4074 return -EINTR;
4075 }
4076 }
4077
4078 /* Only read count values or as much as available */
4079 c = me4000_values_to_end(ai_context->circ_buf,
4080 ME4000_AI_BUFFER_COUNT);
4081 PDEBUG("me4000_ai_read():%d values to end\n", c);
4082 if (count < c)
4083 c = count;
4084
4085 PDEBUG("me4000_ai_read():Copy %d values to user space\n", c);
4086 k = 2 * c;
4087 k -= copy_to_user(buffer,
4088 ai_context->circ_buf.buf +
4089 ai_context->circ_buf.tail, k);
4090 c = k / 2;
4091 if (!c) {
4092 printk(KERN_ERR
4093 "ME4000:me4000_ai_read():Cannot copy new values to user\n");
4094 return -EFAULT;
4095 }
4096
4097 ai_context->circ_buf.tail =
4098 (ai_context->circ_buf.tail + c) & (ME4000_AI_BUFFER_COUNT -
4099 1);
4100 buffer += c;
4101 count -= c;
4102 ret += c;
4103
4104 spin_lock_irqsave(&ai_context->int_lock, flags);
4105 if (me4000_buf_space
4106 (ai_context->circ_buf, ME4000_AI_BUFFER_COUNT)) {
4107 tmp = me4000_inl(ai_context->ctrl_reg);
4108
4109 /* Determine interrupt setup */
4110 if (ai_context->sample_counter
4111 && !ai_context->sample_counter_reload) {
4112 /* Enable Half Full Interrupt and Sample Counter Interrupt */
4113 tmp |=
4114 ME4000_AI_CTRL_BIT_SC_IRQ |
4115 ME4000_AI_CTRL_BIT_HF_IRQ;
4116 } else if (ai_context->sample_counter
4117 && ai_context->sample_counter_reload) {
4118 if (ai_context->sample_counter <
4119 ME4000_AI_FIFO_COUNT / 2) {
4120 /* Enable only Sample Counter Interrupt */
4121 tmp |= ME4000_AI_CTRL_BIT_SC_IRQ;
4122 } else {
4123 /* Enable Half Full Interrupt and Sample Counter Interrupt */
4124 tmp |=
4125 ME4000_AI_CTRL_BIT_SC_IRQ |
4126 ME4000_AI_CTRL_BIT_HF_IRQ;
4127 }
4128 } else {
4129 /* Enable only Half Full Interrupt */
4130 tmp |= ME4000_AI_CTRL_BIT_HF_IRQ;
4131 }
4132
4133 me4000_outl(tmp, ai_context->ctrl_reg);
4134 }
4135 spin_unlock_irqrestore(&ai_context->int_lock, flags);
4136 }
4137
4138 /* Check if conversion is still running */
4139 if (!(me4000_inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM)) {
4140 printk(KERN_ERR
4141 "ME4000:me4000_ai_read():Conversion not running after complete read\n");
4142 return -EPIPE;
4143 }
4144
4145 if (filep->f_flags & O_NONBLOCK) {
4146 return (k == 0) ? -EAGAIN : 2 * ret;
4147 }
4148
4149 CALL_PDEBUG("me4000_ai_read() is leaved\n");
4150 return ret * 2;
4151}
4152
4153static unsigned int me4000_ai_poll(struct file *file_p, poll_table * wait)
4154{
4155 me4000_ai_context_t *ai_context;
4156 unsigned long mask = 0;
4157
4158 CALL_PDEBUG("me4000_ai_poll() is executed\n");
4159
4160 ai_context = file_p->private_data;
4161
4162 /* Register wait queue */
4163 poll_wait(file_p, &ai_context->wait_queue, wait);
4164
4165 /* Get available values */
4166 if (me4000_values_to_end(ai_context->circ_buf, ME4000_AI_BUFFER_COUNT))
4167 mask |= POLLIN | POLLRDNORM;
4168
4169 PDEBUG("me4000_ai_poll():Return mask %lX\n", mask);
4170
4171 return mask;
4172}
4173
4174static int me4000_ai_offset_enable(me4000_ai_context_t * ai_context)
4175{
4176 unsigned long tmp;
4177
4178 CALL_PDEBUG("me4000_ai_offset_enable() is executed\n");
4179
4180 tmp = me4000_inl(ai_context->ctrl_reg);
4181 tmp |= ME4000_AI_CTRL_BIT_OFFSET;
4182 me4000_outl(tmp, ai_context->ctrl_reg);
4183
4184 return 0;
4185}
4186
4187static int me4000_ai_offset_disable(me4000_ai_context_t * ai_context)
4188{
4189 unsigned long tmp;
4190
4191 CALL_PDEBUG("me4000_ai_offset_disable() is executed\n");
4192
4193 tmp = me4000_inl(ai_context->ctrl_reg);
4194 tmp &= ~ME4000_AI_CTRL_BIT_OFFSET;
4195 me4000_outl(tmp, ai_context->ctrl_reg);
4196
4197 return 0;
4198}
4199
4200static int me4000_ai_fullscale_enable(me4000_ai_context_t * ai_context)
4201{
4202 unsigned long tmp;
4203
4204 CALL_PDEBUG("me4000_ai_fullscale_enable() is executed\n");
4205
4206 tmp = me4000_inl(ai_context->ctrl_reg);
4207 tmp |= ME4000_AI_CTRL_BIT_FULLSCALE;
4208 me4000_outl(tmp, ai_context->ctrl_reg);
4209
4210 return 0;
4211}
4212
4213static int me4000_ai_fullscale_disable(me4000_ai_context_t * ai_context)
4214{
4215 unsigned long tmp;
4216
4217 CALL_PDEBUG("me4000_ai_fullscale_disable() is executed\n");
4218
4219 tmp = me4000_inl(ai_context->ctrl_reg);
4220 tmp &= ~ME4000_AI_CTRL_BIT_FULLSCALE;
4221 me4000_outl(tmp, ai_context->ctrl_reg);
4222
4223 return 0;
4224}
4225
4226static int me4000_ai_fsm_state(int *arg, me4000_ai_context_t * ai_context)
4227{
4228 unsigned long tmp;
4229
4230 CALL_PDEBUG("me4000_ai_fsm_state() is executed\n");
4231
4232 tmp =
4233 (me4000_inl(ai_context->status_reg) & ME4000_AI_STATUS_BIT_FSM) ? 1
4234 : 0;
4235
4236 if (put_user(tmp, arg)) {
4237 printk(KERN_ERR "me4000_ai_fsm_state():Cannot copy to user\n");
4238 return -EFAULT;
4239 }
4240
4241 return 0;
4242}
4243
4244static int me4000_ai_get_count_buffer(unsigned long *arg,
4245 me4000_ai_context_t * ai_context)
4246{
4247 unsigned long c;
4248 int err;
4249
4250 c = me4000_buf_count(ai_context->circ_buf, ME4000_AI_BUFFER_COUNT);
4251
4252 err = copy_to_user(arg, &c, sizeof(unsigned long));
4253 if (err) {
4254 printk(KERN_ERR
4255 "ME4000:me4000_ai_get_count_buffer():Can't copy to user space\n");
4256 return -EFAULT;
4257 }
4258
4259 return 0;
4260}
4261
4262/*---------------------------------- EEPROM stuff ---------------------------*/
4263
4264static int eeprom_write_cmd(me4000_ai_context_t * ai_context, unsigned long cmd,
4265 int length)
4266{
4267 int i;
4268 unsigned long value;
4269
4270 CALL_PDEBUG("eeprom_write_cmd() is executed\n");
4271
4272 PDEBUG("eeprom_write_cmd():Write command 0x%08lX with length = %d\n",
4273 cmd, length);
4274
4275 /* Get the ICR register and clear the related bits */
4276 value = me4000_inl(ai_context->board_info->plx_regbase + PLX_ICR);
4277 value &= ~(PLX_ICR_MASK_EEPROM);
4278 me4000_outl(value, ai_context->board_info->plx_regbase + PLX_ICR);
4279
4280 /* Raise the chip select */
4281 value |= PLX_ICR_BIT_EEPROM_CHIP_SELECT;
4282 me4000_outl(value, ai_context->board_info->plx_regbase + PLX_ICR);
4283 udelay(EEPROM_DELAY);
4284
4285 for (i = 0; i < length; i++) {
4286 if (cmd & ((0x1 << (length - 1)) >> i)) {
4287 value |= PLX_ICR_BIT_EEPROM_WRITE;
4288 } else {
4289 value &= ~PLX_ICR_BIT_EEPROM_WRITE;
4290 }
4291
4292 /* Write to EEPROM */
4293 me4000_outl(value,
4294 ai_context->board_info->plx_regbase + PLX_ICR);
4295 udelay(EEPROM_DELAY);
4296
4297 /* Raising edge of the clock */
4298 value |= PLX_ICR_BIT_EEPROM_CLOCK_SET;
4299 me4000_outl(value,
4300 ai_context->board_info->plx_regbase + PLX_ICR);
4301 udelay(EEPROM_DELAY);
4302
4303 /* Falling edge of the clock */
4304 value &= ~PLX_ICR_BIT_EEPROM_CLOCK_SET;
4305 me4000_outl(value,
4306 ai_context->board_info->plx_regbase + PLX_ICR);
4307 udelay(EEPROM_DELAY);
4308 }
4309
4310 /* Clear the chip select */
4311 value &= ~PLX_ICR_BIT_EEPROM_CHIP_SELECT;
4312 me4000_outl(value, ai_context->board_info->plx_regbase + PLX_ICR);
4313 udelay(EEPROM_DELAY);
4314
4315 /* Wait until hardware is ready for sure */
4316 mdelay(10);
4317
4318 return 0;
4319}
4320
4321static unsigned short eeprom_read_cmd(me4000_ai_context_t * ai_context,
4322 unsigned long cmd, int length)
4323{
4324 int i;
4325 unsigned long value;
4326 unsigned short id = 0;
4327
4328 CALL_PDEBUG("eeprom_read_cmd() is executed\n");
4329
4330 PDEBUG("eeprom_read_cmd():Read command 0x%08lX with length = %d\n", cmd,
4331 length);
4332
4333 /* Get the ICR register and clear the related bits */
4334 value = me4000_inl(ai_context->board_info->plx_regbase + PLX_ICR);
4335 value &= ~(PLX_ICR_MASK_EEPROM);
4336
4337 me4000_outl(value, ai_context->board_info->plx_regbase + PLX_ICR);
4338
4339 /* Raise the chip select */
4340 value |= PLX_ICR_BIT_EEPROM_CHIP_SELECT;
4341 me4000_outl(value, ai_context->board_info->plx_regbase + PLX_ICR);
4342 udelay(EEPROM_DELAY);
4343
4344 /* Write the read command to the eeprom */
4345 for (i = 0; i < length; i++) {
4346 if (cmd & ((0x1 << (length - 1)) >> i)) {
4347 value |= PLX_ICR_BIT_EEPROM_WRITE;
4348 } else {
4349 value &= ~PLX_ICR_BIT_EEPROM_WRITE;
4350 }
4351 me4000_outl(value,
4352 ai_context->board_info->plx_regbase + PLX_ICR);
4353 udelay(EEPROM_DELAY);
4354
4355 /* Raising edge of the clock */
4356 value |= PLX_ICR_BIT_EEPROM_CLOCK_SET;
4357 me4000_outl(value,
4358 ai_context->board_info->plx_regbase + PLX_ICR);
4359 udelay(EEPROM_DELAY);
4360
4361 /* Falling edge of the clock */
4362 value &= ~PLX_ICR_BIT_EEPROM_CLOCK_SET;
4363 me4000_outl(value,
4364 ai_context->board_info->plx_regbase + PLX_ICR);
4365 udelay(EEPROM_DELAY);
4366 }
4367
4368 /* Read the value from the eeprom */
4369 for (i = 0; i < 16; i++) {
4370 /* Raising edge of the clock */
4371 value |= PLX_ICR_BIT_EEPROM_CLOCK_SET;
4372 me4000_outl(value,
4373 ai_context->board_info->plx_regbase + PLX_ICR);
4374 udelay(EEPROM_DELAY);
4375
4376 if (me4000_inl(ai_context->board_info->plx_regbase + PLX_ICR) &
4377 PLX_ICR_BIT_EEPROM_READ) {
4378 id |= (0x8000 >> i);
4379 PDEBUG("eeprom_read_cmd():OR with 0x%04X\n",
4380 (0x8000 >> i));
4381 } else {
4382 PDEBUG("eeprom_read_cmd():Dont't OR\n");
4383 }
4384
4385 /* Falling edge of the clock */
4386 value &= ~PLX_ICR_BIT_EEPROM_CLOCK_SET;
4387 me4000_outl(value,
4388 ai_context->board_info->plx_regbase + PLX_ICR);
4389 udelay(EEPROM_DELAY);
4390 }
4391
4392 /* Clear the chip select */
4393 value &= ~PLX_ICR_BIT_EEPROM_CHIP_SELECT;
4394 me4000_outl(value, ai_context->board_info->plx_regbase + PLX_ICR);
4395 udelay(EEPROM_DELAY);
4396
4397 return id;
4398}
4399
4400static int me4000_eeprom_write(me4000_eeprom_t * arg,
4401 me4000_ai_context_t * ai_context)
4402{
4403 int err;
4404 me4000_eeprom_t setup;
4405 unsigned long cmd;
4406 unsigned long date_high;
4407 unsigned long date_low;
4408
4409 CALL_PDEBUG("me4000_eeprom_write() is executed\n");
4410
4411 err = copy_from_user(&setup, arg, sizeof(setup));
4412 if (err) {
4413 printk(KERN_ERR
4414 "ME4000:me4000_eeprom_write():Cannot copy from user\n");
4415 return err;
4416 }
4417
4418 /* Enable writing */
4419 eeprom_write_cmd(ai_context, ME4000_EEPROM_CMD_WRITE_ENABLE,
4420 ME4000_EEPROM_CMD_LENGTH_WRITE_ENABLE);
4421
4422 /* Command for date */
4423 date_high = (setup.date & 0xFFFF0000) >> 16;
4424 date_low = (setup.date & 0x0000FFFF);
4425
4426 cmd =
4427 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_DATE_HIGH <<
4428 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4429 (unsigned
4430 long)
4431 date_high);
4432 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4433 if (err)
4434 return err;
4435
4436 cmd =
4437 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_DATE_LOW <<
4438 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4439 (unsigned
4440 long)
4441 date_low);
4442 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4443 if (err)
4444 return err;
4445
4446 /* Command for unipolar 10V offset */
4447 cmd =
4448 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_1_UNI_OFFSET <<
4449 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4450 (unsigned
4451 long)
4452 setup.
4453 uni_10_offset);
4454 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4455 if (err)
4456 return err;
4457
4458 /* Command for unipolar 10V fullscale */
4459 cmd =
4460 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_1_UNI_FULLSCALE <<
4461 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4462 (unsigned
4463 long)
4464 setup.
4465 uni_10_fullscale);
4466 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4467 if (err)
4468 return err;
4469
4470 /* Command for unipolar 2,5V offset */
4471 cmd =
4472 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_4_UNI_OFFSET <<
4473 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4474 (unsigned
4475 long)
4476 setup.
4477 uni_2_5_offset);
4478 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4479 if (err)
4480 return err;
4481
4482 /* Command for unipolar 2,5V fullscale */
4483 cmd =
4484 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_4_UNI_FULLSCALE <<
4485 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4486 (unsigned
4487 long)
4488 setup.
4489 uni_2_5_fullscale);
4490 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4491 if (err)
4492 return err;
4493
4494 /* Command for bipolar 10V offset */
4495 cmd =
4496 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_1_BI_OFFSET <<
4497 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4498 (unsigned
4499 long)
4500 setup.
4501 bi_10_offset);
4502 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4503 if (err)
4504 return err;
4505
4506 /* Command for bipolar 10V fullscale */
4507 cmd =
4508 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_1_BI_FULLSCALE <<
4509 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4510 (unsigned
4511 long)
4512 setup.
4513 bi_10_fullscale);
4514 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4515 if (err)
4516 return err;
4517
4518 /* Command for bipolar 2,5V offset */
4519 cmd =
4520 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_4_BI_OFFSET <<
4521 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4522 (unsigned
4523 long)
4524 setup.
4525 bi_2_5_offset);
4526 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4527 if (err)
4528 return err;
4529
4530 /* Command for bipolar 2,5V fullscale */
4531 cmd =
4532 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_4_BI_FULLSCALE <<
4533 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4534 (unsigned
4535 long)
4536 setup.
4537 bi_2_5_fullscale);
4538 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4539 if (err)
4540 return err;
4541
4542 /* Command for differential 10V offset */
4543 cmd =
4544 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_1_DIFF_OFFSET <<
4545 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4546 (unsigned
4547 long)
4548 setup.
4549 diff_10_offset);
4550 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4551 if (err)
4552 return err;
4553
4554 /* Command for differential 10V fullscale */
4555 cmd =
4556 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_1_DIFF_FULLSCALE
4557 << ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4558 (unsigned
4559 long)
4560 setup.
4561 diff_10_fullscale);
4562 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4563 if (err)
4564 return err;
4565
4566 /* Command for differential 2,5V offset */
4567 cmd =
4568 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_4_DIFF_OFFSET <<
4569 ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4570 (unsigned
4571 long)
4572 setup.
4573 diff_2_5_offset);
4574 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4575 if (err)
4576 return err;
4577
4578 /* Command for differential 2,5V fullscale */
4579 cmd =
4580 ME4000_EEPROM_CMD_WRITE | (ME4000_EEPROM_ADR_GAIN_4_DIFF_FULLSCALE
4581 << ME4000_EEPROM_DATA_LENGTH) | (0xFFFF &
4582 (unsigned
4583 long)
4584 setup.
4585 diff_2_5_fullscale);
4586 err = eeprom_write_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_WRITE);
4587 if (err)
4588 return err;
4589
4590 /* Disable writing */
4591 eeprom_write_cmd(ai_context, ME4000_EEPROM_CMD_WRITE_DISABLE,
4592 ME4000_EEPROM_CMD_LENGTH_WRITE_DISABLE);
4593
4594 return 0;
4595}
4596
4597static int me4000_eeprom_read(me4000_eeprom_t * arg,
4598 me4000_ai_context_t * ai_context)
4599{
4600 int err;
4601 unsigned long cmd;
4602 me4000_eeprom_t setup;
4603
4604 CALL_PDEBUG("me4000_eeprom_read() is executed\n");
4605
4606 /* Command for date */
4607 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_DATE_HIGH;
4608 setup.date =
4609 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4610 setup.date <<= 16;
4611 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_DATE_LOW;
4612 setup.date |=
4613 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4614
4615 /* Command for unipolar 10V offset */
4616 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_1_UNI_OFFSET;
4617 setup.uni_10_offset =
4618 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4619
4620 /* Command for unipolar 10V fullscale */
4621 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_1_UNI_FULLSCALE;
4622 setup.uni_10_fullscale =
4623 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4624
4625 /* Command for unipolar 2,5V offset */
4626 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_4_UNI_OFFSET;
4627 setup.uni_2_5_offset =
4628 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4629
4630 /* Command for unipolar 2,5V fullscale */
4631 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_4_UNI_FULLSCALE;
4632 setup.uni_2_5_fullscale =
4633 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4634
4635 /* Command for bipolar 10V offset */
4636 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_1_BI_OFFSET;
4637 setup.bi_10_offset =
4638 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4639
4640 /* Command for bipolar 10V fullscale */
4641 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_1_BI_FULLSCALE;
4642 setup.bi_10_fullscale =
4643 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4644
4645 /* Command for bipolar 2,5V offset */
4646 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_4_BI_OFFSET;
4647 setup.bi_2_5_offset =
4648 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4649
4650 /* Command for bipolar 2,5V fullscale */
4651 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_4_BI_FULLSCALE;
4652 setup.bi_2_5_fullscale =
4653 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4654
4655 /* Command for differntial 10V offset */
4656 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_1_DIFF_OFFSET;
4657 setup.diff_10_offset =
4658 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4659
4660 /* Command for differential 10V fullscale */
4661 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_1_DIFF_FULLSCALE;
4662 setup.diff_10_fullscale =
4663 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4664
4665 /* Command for differntial 2,5V offset */
4666 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_4_DIFF_OFFSET;
4667 setup.diff_2_5_offset =
4668 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4669
4670 /* Command for differential 2,5V fullscale */
4671 cmd = ME4000_EEPROM_CMD_READ | ME4000_EEPROM_ADR_GAIN_4_DIFF_FULLSCALE;
4672 setup.diff_2_5_fullscale =
4673 eeprom_read_cmd(ai_context, cmd, ME4000_EEPROM_CMD_LENGTH_READ);
4674
4675 err = copy_to_user(arg, &setup, sizeof(setup));
4676 if (err) {
4677 printk(KERN_ERR
4678 "ME4000:me4000_eeprom_read():Cannot copy to user\n");
4679 return err;
4680 }
4681
4682 return 0;
4683}
4684
4685/*------------------------------------ DIO stuff ----------------------------------------------*/
4686
4687static int me4000_dio_ioctl(struct inode *inode_p, struct file *file_p,
4688 unsigned int service, unsigned long arg)
4689{
4690 me4000_dio_context_t *dio_context;
4691
4692 CALL_PDEBUG("me4000_dio_ioctl() is executed\n");
4693
4694 dio_context = file_p->private_data;
4695
4696 if (_IOC_TYPE(service) != ME4000_MAGIC) {
4697 printk(KERN_ERR "me4000_dio_ioctl():Wrong magic number\n");
4698 return -ENOTTY;
4699 }
4700 if (_IOC_NR(service) > ME4000_IOCTL_MAXNR) {
4701 printk(KERN_ERR "me4000_dio_ioctl():Service number to high\n");
4702 return -ENOTTY;
4703 }
4704
4705 switch (service) {
4706 case ME4000_DIO_CONFIG:
4707 return me4000_dio_config((me4000_dio_config_t *) arg,
4708 dio_context);
4709 case ME4000_DIO_SET_BYTE:
4710 return me4000_dio_set_byte((me4000_dio_byte_t *) arg,
4711 dio_context);
4712 case ME4000_DIO_GET_BYTE:
4713 return me4000_dio_get_byte((me4000_dio_byte_t *) arg,
4714 dio_context);
4715 case ME4000_DIO_RESET:
4716 return me4000_dio_reset(dio_context);
4717 default:
4718 printk(KERN_ERR
4719 "ME4000:me4000_dio_ioctl():Invalid service number %d\n",
4720 service);
4721 return -ENOTTY;
4722 }
4723 return 0;
4724}
4725
4726static int me4000_dio_config(me4000_dio_config_t * arg,
4727 me4000_dio_context_t * dio_context)
4728{
4729 me4000_dio_config_t cmd;
4730 u32 tmp;
4731 int err;
4732
4733 CALL_PDEBUG("me4000_dio_config() is executed\n");
4734
4735 /* Copy data from user */
4736 err = copy_from_user(&cmd, arg, sizeof(me4000_dio_config_t));
4737 if (err) {
4738 printk(KERN_ERR
4739 "ME4000:me4000_dio_config():Can't copy from user space\n");
4740 return -EFAULT;
4741 }
4742
4743 /* Check port parameter */
4744 if (cmd.port >= dio_context->dio_count) {
4745 printk(KERN_ERR
4746 "ME4000:me4000_dio_config():Port %d is not available\n",
4747 cmd.port);
4748 return -EINVAL;
4749 }
4750
4751 PDEBUG("me4000_dio_config(): port %d, mode %d, function %d\n", cmd.port,
4752 cmd.mode, cmd.function);
4753
4754 if (cmd.port == ME4000_DIO_PORT_A) {
4755 if (cmd.mode == ME4000_DIO_PORT_INPUT) {
4756 /* Check if opto isolated version */
4757 if (!(me4000_inl(dio_context->dir_reg) & 0x1)) {
4758 printk(KERN_ERR
4759 "ME4000:me4000_dio_config():Cannot set to input on opto isolated versions\n");
4760 return -EIO;
4761 }
4762
4763 tmp = me4000_inl(dio_context->ctrl_reg);
4764 tmp &=
4765 ~(ME4000_DIO_CTRL_BIT_MODE_0 |
4766 ME4000_DIO_CTRL_BIT_MODE_1);
4767 me4000_outl(tmp, dio_context->ctrl_reg);
4768 } else if (cmd.mode == ME4000_DIO_PORT_OUTPUT) {
4769 tmp = me4000_inl(dio_context->ctrl_reg);
4770 tmp &=
4771 ~(ME4000_DIO_CTRL_BIT_MODE_0 |
4772 ME4000_DIO_CTRL_BIT_MODE_1);
4773 tmp |= ME4000_DIO_CTRL_BIT_MODE_0;
4774 me4000_outl(tmp, dio_context->ctrl_reg);
4775 } else if (cmd.mode == ME4000_DIO_FIFO_LOW) {
4776 tmp = me4000_inl(dio_context->ctrl_reg);
4777 tmp &=
4778 ~(ME4000_DIO_CTRL_BIT_MODE_0 |
4779 ME4000_DIO_CTRL_BIT_MODE_1 |
4780 ME4000_DIO_CTRL_BIT_FIFO_HIGH_0);
4781 tmp |=
4782 ME4000_DIO_CTRL_BIT_MODE_0 |
4783 ME4000_DIO_CTRL_BIT_MODE_1;
4784 me4000_outl(tmp, dio_context->ctrl_reg);
4785 } else if (cmd.mode == ME4000_DIO_FIFO_HIGH) {
4786 tmp = me4000_inl(dio_context->ctrl_reg);
4787 tmp |=
4788 ME4000_DIO_CTRL_BIT_MODE_0 |
4789 ME4000_DIO_CTRL_BIT_MODE_1 |
4790 ME4000_DIO_CTRL_BIT_FIFO_HIGH_0;
4791 me4000_outl(tmp, dio_context->ctrl_reg);
4792 } else {
4793 printk(KERN_ERR
4794 "ME4000:me4000_dio_config():Mode %d is not available\n",
4795 cmd.mode);
4796 return -EINVAL;
4797 }
4798 } else if (cmd.port == ME4000_DIO_PORT_B) {
4799 if (cmd.mode == ME4000_DIO_PORT_INPUT) {
4800 /* Only do anything when TTL version is installed */
4801 if ((me4000_inl(dio_context->dir_reg) & 0x1)) {
4802 tmp = me4000_inl(dio_context->ctrl_reg);
4803 tmp &=
4804 ~(ME4000_DIO_CTRL_BIT_MODE_2 |
4805 ME4000_DIO_CTRL_BIT_MODE_3);
4806 me4000_outl(tmp, dio_context->ctrl_reg);
4807 }
4808 } else if (cmd.mode == ME4000_DIO_PORT_OUTPUT) {
4809 /* Check if opto isolated version */
4810 if (!(me4000_inl(dio_context->dir_reg) & 0x1)) {
4811 printk(KERN_ERR
4812 "ME4000:me4000_dio_config():Cannot set to output on opto isolated versions\n");
4813 return -EIO;
4814 }
4815
4816 tmp = me4000_inl(dio_context->ctrl_reg);
4817 tmp &=
4818 ~(ME4000_DIO_CTRL_BIT_MODE_2 |
4819 ME4000_DIO_CTRL_BIT_MODE_3);
4820 tmp |= ME4000_DIO_CTRL_BIT_MODE_2;
4821 me4000_outl(tmp, dio_context->ctrl_reg);
4822 } else if (cmd.mode == ME4000_DIO_FIFO_LOW) {
4823 /* Check if opto isolated version */
4824 if (!(me4000_inl(dio_context->dir_reg) & 0x1)) {
4825 printk(KERN_ERR
4826 "ME4000:me4000_dio_config():Cannot set to FIFO low output on opto isolated versions\n");
4827 return -EIO;
4828 }
4829
4830 tmp = me4000_inl(dio_context->ctrl_reg);
4831 tmp &=
4832 ~(ME4000_DIO_CTRL_BIT_MODE_2 |
4833 ME4000_DIO_CTRL_BIT_MODE_3 |
4834 ME4000_DIO_CTRL_BIT_FIFO_HIGH_1);
4835 tmp |=
4836 ME4000_DIO_CTRL_BIT_MODE_2 |
4837 ME4000_DIO_CTRL_BIT_MODE_3;
4838 me4000_outl(tmp, dio_context->ctrl_reg);
4839 } else if (cmd.mode == ME4000_DIO_FIFO_HIGH) {
4840 /* Check if opto isolated version */
4841 if (!(me4000_inl(dio_context->dir_reg) & 0x1)) {
4842 printk(KERN_ERR
4843 "ME4000:me4000_dio_config():Cannot set to FIFO high output on opto isolated versions\n");
4844 return -EIO;
4845 }
4846
4847 tmp = me4000_inl(dio_context->ctrl_reg);
4848 tmp |=
4849 ME4000_DIO_CTRL_BIT_MODE_2 |
4850 ME4000_DIO_CTRL_BIT_MODE_3 |
4851 ME4000_DIO_CTRL_BIT_FIFO_HIGH_1;
4852 me4000_outl(tmp, dio_context->ctrl_reg);
4853 } else {
4854 printk(KERN_ERR
4855 "ME4000:me4000_dio_config():Mode %d is not available\n",
4856 cmd.mode);
4857 return -EINVAL;
4858 }
4859 } else if (cmd.port == ME4000_DIO_PORT_C) {
4860 if (cmd.mode == ME4000_DIO_PORT_INPUT) {
4861 tmp = me4000_inl(dio_context->ctrl_reg);
4862 tmp &=
4863 ~(ME4000_DIO_CTRL_BIT_MODE_4 |
4864 ME4000_DIO_CTRL_BIT_MODE_5);
4865 me4000_outl(tmp, dio_context->ctrl_reg);
4866 } else if (cmd.mode == ME4000_DIO_PORT_OUTPUT) {
4867 tmp = me4000_inl(dio_context->ctrl_reg);
4868 tmp &=
4869 ~(ME4000_DIO_CTRL_BIT_MODE_4 |
4870 ME4000_DIO_CTRL_BIT_MODE_5);
4871 tmp |= ME4000_DIO_CTRL_BIT_MODE_4;
4872 me4000_outl(tmp, dio_context->ctrl_reg);
4873 } else if (cmd.mode == ME4000_DIO_FIFO_LOW) {
4874 tmp = me4000_inl(dio_context->ctrl_reg);
4875 tmp &=
4876 ~(ME4000_DIO_CTRL_BIT_MODE_4 |
4877 ME4000_DIO_CTRL_BIT_MODE_5 |
4878 ME4000_DIO_CTRL_BIT_FIFO_HIGH_2);
4879 tmp |=
4880 ME4000_DIO_CTRL_BIT_MODE_4 |
4881 ME4000_DIO_CTRL_BIT_MODE_5;
4882 me4000_outl(tmp, dio_context->ctrl_reg);
4883 } else if (cmd.mode == ME4000_DIO_FIFO_HIGH) {
4884 tmp = me4000_inl(dio_context->ctrl_reg);
4885 tmp |=
4886 ME4000_DIO_CTRL_BIT_MODE_4 |
4887 ME4000_DIO_CTRL_BIT_MODE_5 |
4888 ME4000_DIO_CTRL_BIT_FIFO_HIGH_2;
4889 me4000_outl(tmp, dio_context->ctrl_reg);
4890 } else {
4891 printk(KERN_ERR
4892 "ME4000:me4000_dio_config():Mode %d is not available\n",
4893 cmd.mode);
4894 return -EINVAL;
4895 }
4896 } else if (cmd.port == ME4000_DIO_PORT_D) {
4897 if (cmd.mode == ME4000_DIO_PORT_INPUT) {
4898 tmp = me4000_inl(dio_context->ctrl_reg);
4899 tmp &=
4900 ~(ME4000_DIO_CTRL_BIT_MODE_6 |
4901 ME4000_DIO_CTRL_BIT_MODE_7);
4902 me4000_outl(tmp, dio_context->ctrl_reg);
4903 } else if (cmd.mode == ME4000_DIO_PORT_OUTPUT) {
4904 tmp = me4000_inl(dio_context->ctrl_reg);
4905 tmp &=
4906 ~(ME4000_DIO_CTRL_BIT_MODE_6 |
4907 ME4000_DIO_CTRL_BIT_MODE_7);
4908 tmp |= ME4000_DIO_CTRL_BIT_MODE_6;
4909 me4000_outl(tmp, dio_context->ctrl_reg);
4910 } else if (cmd.mode == ME4000_DIO_FIFO_LOW) {
4911 tmp = me4000_inl(dio_context->ctrl_reg);
4912 tmp &=
4913 ~(ME4000_DIO_CTRL_BIT_MODE_6 |
4914 ME4000_DIO_CTRL_BIT_MODE_7 |
4915 ME4000_DIO_CTRL_BIT_FIFO_HIGH_3);
4916 tmp |=
4917 ME4000_DIO_CTRL_BIT_MODE_6 |
4918 ME4000_DIO_CTRL_BIT_MODE_7;
4919 me4000_outl(tmp, dio_context->ctrl_reg);
4920 } else if (cmd.mode == ME4000_DIO_FIFO_HIGH) {
4921 tmp = me4000_inl(dio_context->ctrl_reg);
4922 tmp |=
4923 ME4000_DIO_CTRL_BIT_MODE_6 |
4924 ME4000_DIO_CTRL_BIT_MODE_7 |
4925 ME4000_DIO_CTRL_BIT_FIFO_HIGH_3;
4926 me4000_outl(tmp, dio_context->ctrl_reg);
4927 } else {
4928 printk(KERN_ERR
4929 "ME4000:me4000_dio_config():Mode %d is not available\n",
4930 cmd.mode);
4931 return -EINVAL;
4932 }
4933 } else {
4934 printk(KERN_ERR
4935 "ME4000:me4000_dio_config():Port %d is not available\n",
4936 cmd.port);
4937 return -EINVAL;
4938 }
4939
4940 PDEBUG("me4000_dio_config(): port %d, mode %d, function %d\n", cmd.port,
4941 cmd.mode, cmd.function);
4942
4943 if ((cmd.mode == ME4000_DIO_FIFO_HIGH)
4944 || (cmd.mode == ME4000_DIO_FIFO_LOW)) {
4945 tmp = me4000_inl(dio_context->ctrl_reg);
4946 tmp &=
4947 ~(ME4000_DIO_CTRL_BIT_FUNCTION_0 |
4948 ME4000_DIO_CTRL_BIT_FUNCTION_1);
4949 if (cmd.function == ME4000_DIO_FUNCTION_PATTERN) {
4950 me4000_outl(tmp, dio_context->ctrl_reg);
4951 } else if (cmd.function == ME4000_DIO_FUNCTION_DEMUX) {
4952 tmp |= ME4000_DIO_CTRL_BIT_FUNCTION_0;
4953 me4000_outl(tmp, dio_context->ctrl_reg);
4954 } else if (cmd.function == ME4000_DIO_FUNCTION_MUX) {
4955 tmp |= ME4000_DIO_CTRL_BIT_FUNCTION_1;
4956 me4000_outl(tmp, dio_context->ctrl_reg);
4957 } else {
4958 printk(KERN_ERR
4959 "ME4000:me4000_dio_config():Invalid port function specified\n");
4960 return -EINVAL;
4961 }
4962 }
4963
4964 return 0;
4965}
4966
4967static int me4000_dio_set_byte(me4000_dio_byte_t * arg,
4968 me4000_dio_context_t * dio_context)
4969{
4970 me4000_dio_byte_t cmd;
4971 int err;
4972
4973 CALL_PDEBUG("me4000_dio_set_byte() is executed\n");
4974
4975 /* Copy data from user */
4976 err = copy_from_user(&cmd, arg, sizeof(me4000_dio_byte_t));
4977 if (err) {
4978 printk(KERN_ERR
4979 "ME4000:me4000_dio_set_byte():Can't copy from user space\n");
4980 return -EFAULT;
4981 }
4982
4983 /* Check port parameter */
4984 if (cmd.port >= dio_context->dio_count) {
4985 printk(KERN_ERR
4986 "ME4000:me4000_dio_set_byte():Port %d is not available\n",
4987 cmd.port);
4988 return -EINVAL;
4989 }
4990
4991 if (cmd.port == ME4000_DIO_PORT_A) {
4992 if ((me4000_inl(dio_context->ctrl_reg) & 0x3) != 0x1) {
4993 printk(KERN_ERR
4994 "ME4000:me4000_dio_set_byte():Port %d is not in output mode\n",
4995 cmd.port);
4996 return -EIO;
4997 }
4998 me4000_outl(cmd.byte, dio_context->port_0_reg);
4999 } else if (cmd.port == ME4000_DIO_PORT_B) {
5000 if ((me4000_inl(dio_context->ctrl_reg) & 0xC) != 0x4) {
5001 printk(KERN_ERR
5002 "ME4000:me4000_dio_set_byte():Port %d is not in output mode\n",
5003 cmd.port);
5004 return -EIO;
5005 }
5006 me4000_outl(cmd.byte, dio_context->port_1_reg);
5007 } else if (cmd.port == ME4000_DIO_PORT_C) {
5008 if ((me4000_inl(dio_context->ctrl_reg) & 0x30) != 0x10) {
5009 printk(KERN_ERR
5010 "ME4000:me4000_dio_set_byte():Port %d is not in output mode\n",
5011 cmd.port);
5012 return -EIO;
5013 }
5014 me4000_outl(cmd.byte, dio_context->port_2_reg);
5015 } else if (cmd.port == ME4000_DIO_PORT_D) {
5016 if ((me4000_inl(dio_context->ctrl_reg) & 0xC0) != 0x40) {
5017 printk(KERN_ERR
5018 "ME4000:me4000_dio_set_byte():Port %d is not in output mode\n",
5019 cmd.port);
5020 return -EIO;
5021 }
5022 me4000_outl(cmd.byte, dio_context->port_3_reg);
5023 } else {
5024 printk(KERN_ERR
5025 "ME4000:me4000_dio_set_byte():Port %d is not available\n",
5026 cmd.port);
5027 return -EINVAL;
5028 }
5029
5030 return 0;
5031}
5032
5033static int me4000_dio_get_byte(me4000_dio_byte_t * arg,
5034 me4000_dio_context_t * dio_context)
5035{
5036 me4000_dio_byte_t cmd;
5037 int err;
5038
5039 CALL_PDEBUG("me4000_dio_get_byte() is executed\n");
5040
5041 /* Copy data from user */
5042 err = copy_from_user(&cmd, arg, sizeof(me4000_dio_byte_t));
5043 if (err) {
5044 printk(KERN_ERR
5045 "ME4000:me4000_dio_get_byte():Can't copy from user space\n");
5046 return -EFAULT;
5047 }
5048
5049 /* Check port parameter */
5050 if (cmd.port >= dio_context->dio_count) {
5051 printk(KERN_ERR
5052 "ME4000:me4000_dio_get_byte():Port %d is not available\n",
5053 cmd.port);
5054 return -EINVAL;
5055 }
5056
5057 if (cmd.port == ME4000_DIO_PORT_A) {
5058 cmd.byte = me4000_inl(dio_context->port_0_reg) & 0xFF;
5059 } else if (cmd.port == ME4000_DIO_PORT_B) {
5060 cmd.byte = me4000_inl(dio_context->port_1_reg) & 0xFF;
5061 } else if (cmd.port == ME4000_DIO_PORT_C) {
5062 cmd.byte = me4000_inl(dio_context->port_2_reg) & 0xFF;
5063 } else if (cmd.port == ME4000_DIO_PORT_D) {
5064 cmd.byte = me4000_inl(dio_context->port_3_reg) & 0xFF;
5065 } else {
5066 printk(KERN_ERR
5067 "ME4000:me4000_dio_get_byte():Port %d is not available\n",
5068 cmd.port);
5069 return -EINVAL;
5070 }
5071
5072 /* Copy result back to user */
5073 err = copy_to_user(arg, &cmd, sizeof(me4000_dio_byte_t));
5074 if (err) {
5075 printk(KERN_ERR
5076 "ME4000:me4000_dio_get_byte():Can't copy to user space\n");
5077 return -EFAULT;
5078 }
5079
5080 return 0;
5081}
5082
5083static int me4000_dio_reset(me4000_dio_context_t * dio_context)
5084{
5085 CALL_PDEBUG("me4000_dio_reset() is executed\n");
5086
5087 /* Clear the control register */
5088 me4000_outl(0, dio_context->ctrl_reg);
5089
5090 /* Check for opto isolated version */
5091 if (!(me4000_inl(dio_context->dir_reg) & 0x1)) {
5092 me4000_outl(0x1, dio_context->ctrl_reg);
5093 me4000_outl(0x0, dio_context->port_0_reg);
5094 }
5095
5096 return 0;
5097}
5098
5099/*------------------------------------ COUNTER STUFF ------------------------------------*/
5100
5101static int me4000_cnt_ioctl(struct inode *inode_p, struct file *file_p,
5102 unsigned int service, unsigned long arg)
5103{
5104 me4000_cnt_context_t *cnt_context;
5105
5106 CALL_PDEBUG("me4000_cnt_ioctl() is executed\n");
5107
5108 cnt_context = file_p->private_data;
5109
5110 if (_IOC_TYPE(service) != ME4000_MAGIC) {
5111 printk(KERN_ERR "me4000_dio_ioctl():Wrong magic number\n");
5112 return -ENOTTY;
5113 }
5114 if (_IOC_NR(service) > ME4000_IOCTL_MAXNR) {
5115 printk(KERN_ERR "me4000_dio_ioctl():Service number to high\n");
5116 return -ENOTTY;
5117 }
5118
5119 switch (service) {
5120 case ME4000_CNT_READ:
5121 return me4000_cnt_read((me4000_cnt_t *) arg, cnt_context);
5122 case ME4000_CNT_WRITE:
5123 return me4000_cnt_write((me4000_cnt_t *) arg, cnt_context);
5124 case ME4000_CNT_CONFIG:
5125 return me4000_cnt_config((me4000_cnt_config_t *) arg,
5126 cnt_context);
5127 case ME4000_CNT_RESET:
5128 return me4000_cnt_reset(cnt_context);
5129 default:
5130 printk(KERN_ERR
5131 "ME4000:me4000_dio_ioctl():Invalid service number %d\n",
5132 service);
5133 return -ENOTTY;
5134 }
5135 return 0;
5136}
5137
5138static int me4000_cnt_config(me4000_cnt_config_t * arg,
5139 me4000_cnt_context_t * cnt_context)
5140{
5141 me4000_cnt_config_t cmd;
5142 u8 counter;
5143 u8 mode;
5144 int err;
5145
5146 CALL_PDEBUG("me4000_cnt_config() is executed\n");
5147
5148 /* Copy data from user */
5149 err = copy_from_user(&cmd, arg, sizeof(me4000_cnt_config_t));
5150 if (err) {
5151 printk(KERN_ERR
5152 "ME4000:me4000_cnt_config():Can't copy from user space\n");
5153 return -EFAULT;
5154 }
5155
5156 /* Check counter parameter */
5157 switch (cmd.counter) {
5158 case ME4000_CNT_COUNTER_0:
5159 counter = ME4000_CNT_CTRL_BIT_COUNTER_0;
5160 break;
5161 case ME4000_CNT_COUNTER_1:
5162 counter = ME4000_CNT_CTRL_BIT_COUNTER_1;
5163 break;
5164 case ME4000_CNT_COUNTER_2:
5165 counter = ME4000_CNT_CTRL_BIT_COUNTER_2;
5166 break;
5167 default:
5168 printk(KERN_ERR
5169 "ME4000:me4000_cnt_config():Counter %d is not available\n",
5170 cmd.counter);
5171 return -EINVAL;
5172 }
5173
5174 /* Check mode parameter */
5175 switch (cmd.mode) {
5176 case ME4000_CNT_MODE_0:
5177 mode = ME4000_CNT_CTRL_BIT_MODE_0;
5178 break;
5179 case ME4000_CNT_MODE_1:
5180 mode = ME4000_CNT_CTRL_BIT_MODE_1;
5181 break;
5182 case ME4000_CNT_MODE_2:
5183 mode = ME4000_CNT_CTRL_BIT_MODE_2;
5184 break;
5185 case ME4000_CNT_MODE_3:
5186 mode = ME4000_CNT_CTRL_BIT_MODE_3;
5187 break;
5188 case ME4000_CNT_MODE_4:
5189 mode = ME4000_CNT_CTRL_BIT_MODE_4;
5190 break;
5191 case ME4000_CNT_MODE_5:
5192 mode = ME4000_CNT_CTRL_BIT_MODE_5;
5193 break;
5194 default:
5195 printk(KERN_ERR
5196 "ME4000:me4000_cnt_config():Mode %d is not available\n",
5197 cmd.mode);
5198 return -EINVAL;
5199 }
5200
5201 /* Write the control word */
5202 me4000_outb((counter | mode | 0x30), cnt_context->ctrl_reg);
5203
5204 return 0;
5205}
5206
5207static int me4000_cnt_read(me4000_cnt_t * arg,
5208 me4000_cnt_context_t * cnt_context)
5209{
5210 me4000_cnt_t cmd;
5211 u8 tmp;
5212 int err;
5213
5214 CALL_PDEBUG("me4000_cnt_read() is executed\n");
5215
5216 /* Copy data from user */
5217 err = copy_from_user(&cmd, arg, sizeof(me4000_cnt_t));
5218 if (err) {
5219 printk(KERN_ERR
5220 "ME4000:me4000_cnt_read():Can't copy from user space\n");
5221 return -EFAULT;
5222 }
5223
5224 /* Read counter */
5225 switch (cmd.counter) {
5226 case ME4000_CNT_COUNTER_0:
5227 tmp = me4000_inb(cnt_context->counter_0_reg);
5228 cmd.value = tmp;
5229 tmp = me4000_inb(cnt_context->counter_0_reg);
5230 cmd.value |= ((u16) tmp) << 8;
5231 break;
5232 case ME4000_CNT_COUNTER_1:
5233 tmp = me4000_inb(cnt_context->counter_1_reg);
5234 cmd.value = tmp;
5235 tmp = me4000_inb(cnt_context->counter_1_reg);
5236 cmd.value |= ((u16) tmp) << 8;
5237 break;
5238 case ME4000_CNT_COUNTER_2:
5239 tmp = me4000_inb(cnt_context->counter_2_reg);
5240 cmd.value = tmp;
5241 tmp = me4000_inb(cnt_context->counter_2_reg);
5242 cmd.value |= ((u16) tmp) << 8;
5243 break;
5244 default:
5245 printk(KERN_ERR
5246 "ME4000:me4000_cnt_read():Counter %d is not available\n",
5247 cmd.counter);
5248 return -EINVAL;
5249 }
5250
5251 /* Copy result back to user */
5252 err = copy_to_user(arg, &cmd, sizeof(me4000_cnt_t));
5253 if (err) {
5254 printk(KERN_ERR
5255 "ME4000:me4000_cnt_read():Can't copy to user space\n");
5256 return -EFAULT;
5257 }
5258
5259 return 0;
5260}
5261
5262static int me4000_cnt_write(me4000_cnt_t * arg,
5263 me4000_cnt_context_t * cnt_context)
5264{
5265 me4000_cnt_t cmd;
5266 u8 tmp;
5267 int err;
5268
5269 CALL_PDEBUG("me4000_cnt_write() is executed\n");
5270
5271 /* Copy data from user */
5272 err = copy_from_user(&cmd, arg, sizeof(me4000_cnt_t));
5273 if (err) {
5274 printk(KERN_ERR
5275 "ME4000:me4000_cnt_write():Can't copy from user space\n");
5276 return -EFAULT;
5277 }
5278
5279 /* Write counter */
5280 switch (cmd.counter) {
5281 case ME4000_CNT_COUNTER_0:
5282 tmp = cmd.value & 0xFF;
5283 me4000_outb(tmp, cnt_context->counter_0_reg);
5284 tmp = (cmd.value >> 8) & 0xFF;
5285 me4000_outb(tmp, cnt_context->counter_0_reg);
5286 break;
5287 case ME4000_CNT_COUNTER_1:
5288 tmp = cmd.value & 0xFF;
5289 me4000_outb(tmp, cnt_context->counter_1_reg);
5290 tmp = (cmd.value >> 8) & 0xFF;
5291 me4000_outb(tmp, cnt_context->counter_1_reg);
5292 break;
5293 case ME4000_CNT_COUNTER_2:
5294 tmp = cmd.value & 0xFF;
5295 me4000_outb(tmp, cnt_context->counter_2_reg);
5296 tmp = (cmd.value >> 8) & 0xFF;
5297 me4000_outb(tmp, cnt_context->counter_2_reg);
5298 break;
5299 default:
5300 printk(KERN_ERR
5301 "ME4000:me4000_cnt_write():Counter %d is not available\n",
5302 cmd.counter);
5303 return -EINVAL;
5304 }
5305
5306 return 0;
5307}
5308
5309static int me4000_cnt_reset(me4000_cnt_context_t * cnt_context)
5310{
5311 CALL_PDEBUG("me4000_cnt_reset() is executed\n");
5312
5313 /* Set the mode and value for counter 0 */
5314 me4000_outb(0x30, cnt_context->ctrl_reg);
5315 me4000_outb(0x00, cnt_context->counter_0_reg);
5316 me4000_outb(0x00, cnt_context->counter_0_reg);
5317
5318 /* Set the mode and value for counter 1 */
5319 me4000_outb(0x70, cnt_context->ctrl_reg);
5320 me4000_outb(0x00, cnt_context->counter_1_reg);
5321 me4000_outb(0x00, cnt_context->counter_1_reg);
5322
5323 /* Set the mode and value for counter 2 */
5324 me4000_outb(0xB0, cnt_context->ctrl_reg);
5325 me4000_outb(0x00, cnt_context->counter_2_reg);
5326 me4000_outb(0x00, cnt_context->counter_2_reg);
5327
5328 return 0;
5329}
5330
5331/*------------------------------------ External Interrupt stuff ------------------------------------*/
5332
5333static int me4000_ext_int_ioctl(struct inode *inode_p, struct file *file_p,
5334 unsigned int service, unsigned long arg)
5335{
5336 me4000_ext_int_context_t *ext_int_context;
5337
5338 CALL_PDEBUG("me4000_ext_int_ioctl() is executed\n");
5339
5340 ext_int_context = file_p->private_data;
5341
5342 if (_IOC_TYPE(service) != ME4000_MAGIC) {
5343 printk(KERN_ERR "me4000_ext_int_ioctl():Wrong magic number\n");
5344 return -ENOTTY;
5345 }
5346 if (_IOC_NR(service) > ME4000_IOCTL_MAXNR) {
5347 printk(KERN_ERR
5348 "me4000_ext_int_ioctl():Service number to high\n");
5349 return -ENOTTY;
5350 }
5351
5352 switch (service) {
5353 case ME4000_EXT_INT_ENABLE:
5354 return me4000_ext_int_enable(ext_int_context);
5355 case ME4000_EXT_INT_DISABLE:
5356 return me4000_ext_int_disable(ext_int_context);
5357 case ME4000_EXT_INT_COUNT:
5358 return me4000_ext_int_count((unsigned long *)arg,
5359 ext_int_context);
5360 default:
5361 printk(KERN_ERR
5362 "ME4000:me4000_ext_int_ioctl():Invalid service number %d\n",
5363 service);
5364 return -ENOTTY;
5365 }
5366 return 0;
5367}
5368
5369static int me4000_ext_int_enable(me4000_ext_int_context_t * ext_int_context)
5370{
5371 unsigned long tmp;
5372
5373 CALL_PDEBUG("me4000_ext_int_enable() is executed\n");
5374
5375 tmp = me4000_inl(ext_int_context->ctrl_reg);
5376 tmp |= ME4000_AI_CTRL_BIT_EX_IRQ;
5377 me4000_outl(tmp, ext_int_context->ctrl_reg);
5378
5379 return 0;
5380}
5381
5382static int me4000_ext_int_disable(me4000_ext_int_context_t * ext_int_context)
5383{
5384 unsigned long tmp;
5385
5386 CALL_PDEBUG("me4000_ext_int_disable() is executed\n");
5387
5388 tmp = me4000_inl(ext_int_context->ctrl_reg);
5389 tmp &= ~ME4000_AI_CTRL_BIT_EX_IRQ;
5390 me4000_outl(tmp, ext_int_context->ctrl_reg);
5391
5392 return 0;
5393}
5394
5395static int me4000_ext_int_count(unsigned long *arg,
5396 me4000_ext_int_context_t * ext_int_context)
5397{
5398
5399 CALL_PDEBUG("me4000_ext_int_count() is executed\n");
5400
5401 put_user(ext_int_context->int_count, arg);
5402 return 0;
5403}
5404
5405/*------------------------------------ General stuff ------------------------------------*/
5406
5407static int me4000_get_user_info(me4000_user_info_t * arg,
5408 me4000_info_t * board_info)
5409{
5410 me4000_user_info_t user_info;
5411
5412 CALL_PDEBUG("me4000_get_user_info() is executed\n");
5413
5414 user_info.board_count = board_info->board_count;
5415 user_info.plx_regbase = board_info->plx_regbase;
5416 user_info.plx_regbase_size = board_info->plx_regbase_size;
5417 user_info.me4000_regbase = board_info->me4000_regbase;
5418 user_info.me4000_regbase_size = board_info->me4000_regbase_size;
5419 user_info.serial_no = board_info->serial_no;
5420 user_info.hw_revision = board_info->hw_revision;
5421 user_info.vendor_id = board_info->vendor_id;
5422 user_info.device_id = board_info->device_id;
5423 user_info.pci_bus_no = board_info->pci_bus_no;
5424 user_info.pci_dev_no = board_info->pci_dev_no;
5425 user_info.pci_func_no = board_info->pci_func_no;
5426 user_info.irq = board_info->irq;
5427 user_info.irq_count = board_info->irq_count;
5428 user_info.driver_version = ME4000_DRIVER_VERSION;
5429 user_info.ao_count = board_info->board_p->ao.count;
5430 user_info.ao_fifo_count = board_info->board_p->ao.fifo_count;
5431
5432 user_info.ai_count = board_info->board_p->ai.count;
5433 user_info.ai_sh_count = board_info->board_p->ai.sh_count;
5434 user_info.ai_ex_trig_analog = board_info->board_p->ai.ex_trig_analog;
5435
5436 user_info.dio_count = board_info->board_p->dio.count;
5437
5438 user_info.cnt_count = board_info->board_p->cnt.count;
5439
5440 if (copy_to_user(arg, &user_info, sizeof(me4000_user_info_t)))
5441 return -EFAULT;
5442
5443 return 0;
5444}
5445
5446/*------------------------------------ ISR STUFF ------------------------------------*/
5447
5448static int me4000_ext_int_fasync(int fd, struct file *file_ptr, int mode)
5449{
5450 int result = 0;
5451 me4000_ext_int_context_t *ext_int_context;
5452
5453 CALL_PDEBUG("me4000_ext_int_fasync() is executed\n");
5454
5455 ext_int_context = file_ptr->private_data;
5456
5457 result =
5458 fasync_helper(fd, file_ptr, mode, &ext_int_context->fasync_ptr);
5459
5460 CALL_PDEBUG("me4000_ext_int_fasync() is leaved\n");
5461 return result;
5462}
5463
5464static irqreturn_t me4000_ao_isr(int irq, void *dev_id)
5465{
5466 u32 tmp;
5467 u32 value;
5468 me4000_ao_context_t *ao_context;
5469 int i;
5470 int c = 0;
5471 int c1 = 0;
5472 //unsigned long before;
5473 //unsigned long after;
5474
5475 ISR_PDEBUG("me4000_ao_isr() is executed\n");
5476
5477 ao_context = dev_id;
5478
5479 /* Check if irq number is right */
5480 if (irq != ao_context->irq) {
5481 ISR_PDEBUG("me4000_ao_isr():incorrect interrupt num: %d\n",
5482 irq);
5483 return IRQ_NONE;
5484 }
5485
5486 /* Check if this DAC rised an interrupt */
5487 if (!
5488 ((0x1 << (ao_context->index + 3)) &
5489 me4000_inl(ao_context->irq_status_reg))) {
5490 ISR_PDEBUG("me4000_ao_isr():Not this DAC\n");
5491 return IRQ_NONE;
5492 }
5493
5494 /* Read status register to find out what happened */
5495 tmp = me4000_inl(ao_context->status_reg);
5496
5497 if (!(tmp & ME4000_AO_STATUS_BIT_EF) && (tmp & ME4000_AO_STATUS_BIT_HF)
5498 && (tmp & ME4000_AO_STATUS_BIT_HF)) {
5499 c = ME4000_AO_FIFO_COUNT;
5500 ISR_PDEBUG("me4000_ao_isr():Fifo empty\n");
5501 } else if ((tmp & ME4000_AO_STATUS_BIT_EF)
5502 && (tmp & ME4000_AO_STATUS_BIT_HF)
5503 && (tmp & ME4000_AO_STATUS_BIT_HF)) {
5504 c = ME4000_AO_FIFO_COUNT / 2;
5505 ISR_PDEBUG("me4000_ao_isr():Fifo under half full\n");
5506 } else {
5507 c = 0;
5508 ISR_PDEBUG("me4000_ao_isr():Fifo full\n");
5509 }
5510
5511 ISR_PDEBUG("me4000_ao_isr():Try to write 0x%04X values\n", c);
5512
5513 while (1) {
5514 c1 = me4000_values_to_end(ao_context->circ_buf,
5515 ME4000_AO_BUFFER_COUNT);
5516 ISR_PDEBUG("me4000_ao_isr():Values to end = %d\n", c1);
5517 if (c1 > c)
5518 c1 = c;
5519
5520 if (c1 <= 0) {
5521 ISR_PDEBUG
5522 ("me4000_ao_isr():Work done or buffer empty\n");
5523 break;
5524 }
5525 //rdtscl(before);
5526 if (((ao_context->fifo_reg & 0xFF) == ME4000_AO_01_FIFO_REG) ||
5527 ((ao_context->fifo_reg & 0xFF) == ME4000_AO_03_FIFO_REG)) {
5528 for (i = 0; i < c1; i++) {
5529 value =
5530 ((u32)
5531 (*
5532 (ao_context->circ_buf.buf +
5533 ao_context->circ_buf.tail + i))) << 16;
5534 outl(value, ao_context->fifo_reg);
5535 }
5536 } else
5537 outsw(ao_context->fifo_reg,
5538 ao_context->circ_buf.buf +
5539 ao_context->circ_buf.tail, c1);
5540
5541 //rdtscl(after);
5542 //printk(KERN_ERR"ME4000:me4000_ao_isr():Time lapse = %lu\n", after - before);
5543
5544 ao_context->circ_buf.tail =
5545 (ao_context->circ_buf.tail + c1) & (ME4000_AO_BUFFER_COUNT -
5546 1);
5547 ISR_PDEBUG("me4000_ao_isr():%d values wrote to port 0x%04X\n",
5548 c1, ao_context->fifo_reg);
5549 c -= c1;
5550 }
5551
5552 /* If there are no values left in the buffer, disable interrupts */
5553 spin_lock(&ao_context->int_lock);
5554 if (!me4000_buf_count(ao_context->circ_buf, ME4000_AO_BUFFER_COUNT)) {
5555 ISR_PDEBUG
5556 ("me4000_ao_isr():Disable Interrupt because no values left in buffer\n");
5557 tmp = me4000_inl(ao_context->ctrl_reg);
5558 tmp &= ~ME4000_AO_CTRL_BIT_ENABLE_IRQ;
5559 me4000_outl(tmp, ao_context->ctrl_reg);
5560 }
5561 spin_unlock(&ao_context->int_lock);
5562
5563 /* Reset the interrupt */
5564 spin_lock(&ao_context->int_lock);
5565 tmp = me4000_inl(ao_context->ctrl_reg);
5566 tmp |= ME4000_AO_CTRL_BIT_RESET_IRQ;
5567 me4000_outl(tmp, ao_context->ctrl_reg);
5568 tmp &= ~ME4000_AO_CTRL_BIT_RESET_IRQ;
5569 me4000_outl(tmp, ao_context->ctrl_reg);
5570
5571 /* If state machine is stopped, flow was interrupted */
5572 if (!(me4000_inl(ao_context->status_reg) & ME4000_AO_STATUS_BIT_FSM)) {
5573 printk(KERN_ERR "ME4000:me4000_ao_isr():Broken pipe\n");
5574 ao_context->pipe_flag = 1; // Set flag in order to inform write routine
5575 tmp &= ~ME4000_AO_CTRL_BIT_ENABLE_IRQ; // Disable interrupt
5576 }
5577 me4000_outl(tmp, ao_context->ctrl_reg);
5578 spin_unlock(&ao_context->int_lock);
5579
5580 /* Wake up waiting process */
5581 wake_up_interruptible(&(ao_context->wait_queue));
5582
5583 /* Count the interrupt */
5584 ao_context->board_info->irq_count++;
5585
5586 return IRQ_HANDLED;
5587}
5588
5589static irqreturn_t me4000_ai_isr(int irq, void *dev_id)
5590{
5591 u32 tmp;
5592 me4000_ai_context_t *ai_context;
5593 int i;
5594 int c = 0;
5595 int c1 = 0;
5596#ifdef ME4000_ISR_DEBUG
5597 unsigned long before;
5598 unsigned long after;
5599#endif
5600
5601 ISR_PDEBUG("me4000_ai_isr() is executed\n");
5602
5603#ifdef ME4000_ISR_DEBUG
5604 rdtscl(before);
5605#endif
5606
5607 ai_context = dev_id;
5608
5609 /* Check if irq number is right */
5610 if (irq != ai_context->irq) {
5611 ISR_PDEBUG("me4000_ai_isr():incorrect interrupt num: %d\n",
5612 irq);
5613 return IRQ_NONE;
5614 }
5615
5616 if (me4000_inl(ai_context->irq_status_reg) &
5617 ME4000_IRQ_STATUS_BIT_AI_HF) {
5618 ISR_PDEBUG
5619 ("me4000_ai_isr():Fifo half full interrupt occured\n");
5620
5621 /* Read status register to find out what happened */
5622 tmp = me4000_inl(ai_context->ctrl_reg);
5623
5624 if (!(tmp & ME4000_AI_STATUS_BIT_FF_DATA) &&
5625 !(tmp & ME4000_AI_STATUS_BIT_HF_DATA)
5626 && (tmp & ME4000_AI_STATUS_BIT_EF_DATA)) {
5627 ISR_PDEBUG("me4000_ai_isr():Fifo full\n");
5628 c = ME4000_AI_FIFO_COUNT;
5629
5630 /* FIFO overflow, so stop conversion and disable all interrupts */
5631 spin_lock(&ai_context->int_lock);
5632 tmp = me4000_inl(ai_context->ctrl_reg);
5633 tmp |= ME4000_AI_CTRL_BIT_IMMEDIATE_STOP;
5634 tmp &=
5635 ~(ME4000_AI_CTRL_BIT_HF_IRQ |
5636 ME4000_AI_CTRL_BIT_SC_IRQ);
5637 outl(tmp, ai_context->ctrl_reg);
5638 spin_unlock(&ai_context->int_lock);
5639 } else if ((tmp & ME4000_AI_STATUS_BIT_FF_DATA) &&
5640 !(tmp & ME4000_AI_STATUS_BIT_HF_DATA)
5641 && (tmp & ME4000_AI_STATUS_BIT_EF_DATA)) {
5642 ISR_PDEBUG("me4000_ai_isr():Fifo half full\n");
5643 c = ME4000_AI_FIFO_COUNT / 2;
5644 } else {
5645 c = 0;
5646 ISR_PDEBUG
5647 ("me4000_ai_isr():Can't determine state of fifo\n");
5648 }
5649
5650 ISR_PDEBUG("me4000_ai_isr():Try to read %d values\n", c);
5651
5652 while (1) {
5653 c1 = me4000_space_to_end(ai_context->circ_buf,
5654 ME4000_AI_BUFFER_COUNT);
5655 ISR_PDEBUG("me4000_ai_isr():Space to end = %d\n", c1);
5656 if (c1 > c)
5657 c1 = c;
5658
5659 if (c1 <= 0) {
5660 ISR_PDEBUG
5661 ("me4000_ai_isr():Work done or buffer full\n");
5662 break;
5663 }
5664
5665 insw(ai_context->data_reg,
5666 ai_context->circ_buf.buf +
5667 ai_context->circ_buf.head, c1);
5668 ai_context->circ_buf.head =
5669 (ai_context->circ_buf.head +
5670 c1) & (ME4000_AI_BUFFER_COUNT - 1);
5671 c -= c1;
5672 }
5673
5674 /* Work is done, so reset the interrupt */
5675 ISR_PDEBUG
5676 ("me4000_ai_isr():reset interrupt fifo half full interrupt\n");
5677 spin_lock(&ai_context->int_lock);
5678 tmp = me4000_inl(ai_context->ctrl_reg);
5679 tmp |= ME4000_AI_CTRL_BIT_HF_IRQ_RESET;
5680 me4000_outl(tmp, ai_context->ctrl_reg);
5681 tmp &= ~ME4000_AI_CTRL_BIT_HF_IRQ_RESET;
5682 me4000_outl(tmp, ai_context->ctrl_reg);
5683 spin_unlock(&ai_context->int_lock);
5684 }
5685
5686 if (me4000_inl(ai_context->irq_status_reg) & ME4000_IRQ_STATUS_BIT_SC) {
5687 ISR_PDEBUG
5688 ("me4000_ai_isr():Sample counter interrupt occured\n");
5689
5690 if (!ai_context->sample_counter_reload) {
5691 ISR_PDEBUG
5692 ("me4000_ai_isr():Single data block available\n");
5693
5694 /* Poll data until fifo empty */
5695 for (i = 0;
5696 (i < ME4000_AI_FIFO_COUNT / 2)
5697 && (inl(ai_context->ctrl_reg) &
5698 ME4000_AI_STATUS_BIT_EF_DATA); i++) {
5699 if (me4000_space_to_end
5700 (ai_context->circ_buf,
5701 ME4000_AI_BUFFER_COUNT)) {
5702 *(ai_context->circ_buf.buf +
5703 ai_context->circ_buf.head) =
5704 inw(ai_context->data_reg);
5705 ai_context->circ_buf.head =
5706 (ai_context->circ_buf.head +
5707 1) & (ME4000_AI_BUFFER_COUNT - 1);
5708 } else
5709 break;
5710 }
5711 ISR_PDEBUG("me4000_ai_isr():%d values read\n", i);
5712 } else {
5713 if (ai_context->sample_counter <=
5714 ME4000_AI_FIFO_COUNT / 2) {
5715 ISR_PDEBUG
5716 ("me4000_ai_isr():Interrupt from adjustable half full threshold\n");
5717
5718 /* Read status register to find out what happened */
5719 tmp = me4000_inl(ai_context->ctrl_reg);
5720
5721 if (!(tmp & ME4000_AI_STATUS_BIT_FF_DATA) &&
5722 !(tmp & ME4000_AI_STATUS_BIT_HF_DATA)
5723 && (tmp & ME4000_AI_STATUS_BIT_EF_DATA)) {
5724 ISR_PDEBUG
5725 ("me4000_ai_isr():Fifo full\n");
5726 c = ME4000_AI_FIFO_COUNT;
5727
5728 /* FIFO overflow, so stop conversion */
5729 spin_lock(&ai_context->int_lock);
5730 tmp = me4000_inl(ai_context->ctrl_reg);
5731 tmp |=
5732 ME4000_AI_CTRL_BIT_IMMEDIATE_STOP;
5733 outl(tmp, ai_context->ctrl_reg);
5734 spin_unlock(&ai_context->int_lock);
5735 } else if ((tmp & ME4000_AI_STATUS_BIT_FF_DATA)
5736 && !(tmp &
5737 ME4000_AI_STATUS_BIT_HF_DATA)
5738 && (tmp &
5739 ME4000_AI_STATUS_BIT_EF_DATA)) {
5740 ISR_PDEBUG
5741 ("me4000_ai_isr():Fifo half full\n");
5742 c = ME4000_AI_FIFO_COUNT / 2;
5743 } else {
5744 c = ai_context->sample_counter;
5745 ISR_PDEBUG
5746 ("me4000_ai_isr():Sample count values\n");
5747 }
5748
5749 ISR_PDEBUG
5750 ("me4000_ai_isr():Try to read %d values\n",
5751 c);
5752
5753 while (1) {
5754 c1 = me4000_space_to_end(ai_context->
5755 circ_buf,
5756 ME4000_AI_BUFFER_COUNT);
5757 ISR_PDEBUG
5758 ("me4000_ai_isr():Space to end = %d\n",
5759 c1);
5760 if (c1 > c)
5761 c1 = c;
5762
5763 if (c1 <= 0) {
5764 ISR_PDEBUG
5765 ("me4000_ai_isr():Work done or buffer full\n");
5766 break;
5767 }
5768
5769 insw(ai_context->data_reg,
5770 ai_context->circ_buf.buf +
5771 ai_context->circ_buf.head, c1);
5772 ai_context->circ_buf.head =
5773 (ai_context->circ_buf.head +
5774 c1) & (ME4000_AI_BUFFER_COUNT - 1);
5775 c -= c1;
5776 }
5777 } else {
5778 ISR_PDEBUG
5779 ("me4000_ai_isr():Multiple data block available\n");
5780
5781 /* Read status register to find out what happened */
5782 tmp = me4000_inl(ai_context->ctrl_reg);
5783
5784 if (!(tmp & ME4000_AI_STATUS_BIT_FF_DATA) &&
5785 !(tmp & ME4000_AI_STATUS_BIT_HF_DATA)
5786 && (tmp & ME4000_AI_STATUS_BIT_EF_DATA)) {
5787 ISR_PDEBUG
5788 ("me4000_ai_isr():Fifo full\n");
5789 c = ME4000_AI_FIFO_COUNT;
5790
5791 /* FIFO overflow, so stop conversion */
5792 spin_lock(&ai_context->int_lock);
5793 tmp = me4000_inl(ai_context->ctrl_reg);
5794 tmp |=
5795 ME4000_AI_CTRL_BIT_IMMEDIATE_STOP;
5796 outl(tmp, ai_context->ctrl_reg);
5797 spin_unlock(&ai_context->int_lock);
5798
5799 while (1) {
5800 c1 = me4000_space_to_end
5801 (ai_context->circ_buf,
5802 ME4000_AI_BUFFER_COUNT);
5803 ISR_PDEBUG
5804 ("me4000_ai_isr():Space to end = %d\n",
5805 c1);
5806 if (c1 > c)
5807 c1 = c;
5808
5809 if (c1 <= 0) {
5810 ISR_PDEBUG
5811 ("me4000_ai_isr():Work done or buffer full\n");
5812 break;
5813 }
5814
5815 insw(ai_context->data_reg,
5816 ai_context->circ_buf.buf +
5817 ai_context->circ_buf.head,
5818 c1);
5819 ai_context->circ_buf.head =
5820 (ai_context->circ_buf.head +
5821 c1) &
5822 (ME4000_AI_BUFFER_COUNT -
5823 1);
5824 c -= c1;
5825 }
5826 } else if ((tmp & ME4000_AI_STATUS_BIT_FF_DATA)
5827 && !(tmp &
5828 ME4000_AI_STATUS_BIT_HF_DATA)
5829 && (tmp &
5830 ME4000_AI_STATUS_BIT_EF_DATA)) {
5831 ISR_PDEBUG
5832 ("me4000_ai_isr():Fifo half full\n");
5833 c = ME4000_AI_FIFO_COUNT / 2;
5834
5835 while (1) {
5836 c1 = me4000_space_to_end
5837 (ai_context->circ_buf,
5838 ME4000_AI_BUFFER_COUNT);
5839 ISR_PDEBUG
5840 ("me4000_ai_isr():Space to end = %d\n",
5841 c1);
5842 if (c1 > c)
5843 c1 = c;
5844
5845 if (c1 <= 0) {
5846 ISR_PDEBUG
5847 ("me4000_ai_isr():Work done or buffer full\n");
5848 break;
5849 }
5850
5851 insw(ai_context->data_reg,
5852 ai_context->circ_buf.buf +
5853 ai_context->circ_buf.head,
5854 c1);
5855 ai_context->circ_buf.head =
5856 (ai_context->circ_buf.head +
5857 c1) &
5858 (ME4000_AI_BUFFER_COUNT -
5859 1);
5860 c -= c1;
5861 }
5862 } else {
5863 /* Poll data until fifo empty */
5864 for (i = 0;
5865 (i < ME4000_AI_FIFO_COUNT / 2)
5866 && (inl(ai_context->ctrl_reg) &
5867 ME4000_AI_STATUS_BIT_EF_DATA);
5868 i++) {
5869 if (me4000_space_to_end
5870 (ai_context->circ_buf,
5871 ME4000_AI_BUFFER_COUNT)) {
5872 *(ai_context->circ_buf.
5873 buf +
5874 ai_context->circ_buf.
5875 head) =
5876 inw(ai_context->data_reg);
5877 ai_context->circ_buf.
5878 head =
5879 (ai_context->
5880 circ_buf.head +
5881 1) &
5882 (ME4000_AI_BUFFER_COUNT
5883 - 1);
5884 } else
5885 break;
5886 }
5887 ISR_PDEBUG
5888 ("me4000_ai_isr():%d values read\n",
5889 i);
5890 }
5891 }
5892 }
5893
5894 /* Work is done, so reset the interrupt */
5895 ISR_PDEBUG
5896 ("me4000_ai_isr():reset interrupt from sample counter\n");
5897 spin_lock(&ai_context->int_lock);
5898 tmp = me4000_inl(ai_context->ctrl_reg);
5899 tmp |= ME4000_AI_CTRL_BIT_SC_IRQ_RESET;
5900 me4000_outl(tmp, ai_context->ctrl_reg);
5901 tmp &= ~ME4000_AI_CTRL_BIT_SC_IRQ_RESET;
5902 me4000_outl(tmp, ai_context->ctrl_reg);
5903 spin_unlock(&ai_context->int_lock);
5904 }
5905
5906 /* Values are now available, so wake up waiting process */
5907 if (me4000_buf_count(ai_context->circ_buf, ME4000_AI_BUFFER_COUNT)) {
5908 ISR_PDEBUG("me4000_ai_isr():Wake up waiting process\n");
5909 wake_up_interruptible(&(ai_context->wait_queue));
5910 }
5911
5912 /* If there is no space left in the buffer, disable interrupts */
5913 spin_lock(&ai_context->int_lock);
5914 if (!me4000_buf_space(ai_context->circ_buf, ME4000_AI_BUFFER_COUNT)) {
5915 ISR_PDEBUG
5916 ("me4000_ai_isr():Disable Interrupt because no space left in buffer\n");
5917 tmp = me4000_inl(ai_context->ctrl_reg);
5918 tmp &=
5919 ~(ME4000_AI_CTRL_BIT_SC_IRQ | ME4000_AI_CTRL_BIT_HF_IRQ |
5920 ME4000_AI_CTRL_BIT_LE_IRQ);
5921 me4000_outl(tmp, ai_context->ctrl_reg);
5922 }
5923 spin_unlock(&ai_context->int_lock);
5924
5925#ifdef ME4000_ISR_DEBUG
5926 rdtscl(after);
5927 printk(KERN_ERR "ME4000:me4000_ai_isr():Time lapse = %lu\n",
5928 after - before);
5929#endif
5930
5931 return IRQ_HANDLED;
5932}
5933
5934static irqreturn_t me4000_ext_int_isr(int irq, void *dev_id)
5935{
5936 me4000_ext_int_context_t *ext_int_context;
5937 unsigned long tmp;
5938
5939 ISR_PDEBUG("me4000_ext_int_isr() is executed\n");
5940
5941 ext_int_context = dev_id;
5942
5943 /* Check if irq number is right */
5944 if (irq != ext_int_context->irq) {
5945 ISR_PDEBUG("me4000_ext_int_isr():incorrect interrupt num: %d\n",
5946 irq);
5947 return IRQ_NONE;
5948 }
5949
5950 if (me4000_inl(ext_int_context->irq_status_reg) &
5951 ME4000_IRQ_STATUS_BIT_EX) {
5952 ISR_PDEBUG("me4000_ext_int_isr():External interrupt occured\n");
5953 tmp = me4000_inl(ext_int_context->ctrl_reg);
5954 tmp |= ME4000_AI_CTRL_BIT_EX_IRQ_RESET;
5955 me4000_outl(tmp, ext_int_context->ctrl_reg);
5956 tmp &= ~ME4000_AI_CTRL_BIT_EX_IRQ_RESET;
5957 me4000_outl(tmp, ext_int_context->ctrl_reg);
5958
5959 ext_int_context->int_count++;
5960
5961 if (ext_int_context->fasync_ptr) {
5962 ISR_PDEBUG
5963 ("me2600_ext_int_isr():Send signal to process\n");
5964 kill_fasync(&ext_int_context->fasync_ptr, SIGIO,
5965 POLL_IN);
5966 }
5967 }
5968
5969 return IRQ_HANDLED;
5970}
5971
5972void __exit me4000_module_exit(void)
5973{
5974 struct list_head *board_p;
5975 me4000_info_t *board_info;
5976
5977 CALL_PDEBUG("cleanup_module() is executed\n");
5978
5979 unregister_chrdev(me4000_ext_int_major_driver_no, ME4000_EXT_INT_NAME);
5980
5981 unregister_chrdev(me4000_cnt_major_driver_no, ME4000_CNT_NAME);
5982
5983 unregister_chrdev(me4000_dio_major_driver_no, ME4000_DIO_NAME);
5984
5985 unregister_chrdev(me4000_ai_major_driver_no, ME4000_AI_NAME);
5986
5987 unregister_chrdev(me4000_ao_major_driver_no, ME4000_AO_NAME);
5988
5989 remove_proc_entry("me4000", NULL);
5990
5991 pci_unregister_driver(&me4000_driver);
5992
5993 /* Reset the boards */
5994 for (board_p = me4000_board_info_list.next;
5995 board_p != &me4000_board_info_list; board_p = board_p->next) {
5996 board_info = list_entry(board_p, me4000_info_t, list);
5997 me4000_reset_board(board_info);
5998 }
5999
6000 clear_board_info_list();
6001}
6002
6003module_exit(me4000_module_exit);
6004
6005static int me4000_read_procmem(char *buf, char **start, off_t offset, int count,
6006 int *eof, void *data)
6007{
6008 int len = 0;
6009 int limit = count - 1000;
6010 me4000_info_t *board_info;
6011 struct list_head *ptr;
6012
6013 len += sprintf(buf + len, "\nME4000 DRIVER VERSION %X.%X.%X\n\n",
6014 (ME4000_DRIVER_VERSION & 0xFF0000) >> 16,
6015 (ME4000_DRIVER_VERSION & 0xFF00) >> 8,
6016 (ME4000_DRIVER_VERSION & 0xFF));
6017
6018 /* Search for the board context */
6019 for (ptr = me4000_board_info_list.next;
6020 (ptr != &me4000_board_info_list) && (len < limit);
6021 ptr = ptr->next) {
6022 board_info = list_entry(ptr, me4000_info_t, list);
6023
6024 len +=
6025 sprintf(buf + len, "Board number %d:\n",
6026 board_info->board_count);
6027 len += sprintf(buf + len, "---------------\n");
6028 len +=
6029 sprintf(buf + len, "PLX base register = 0x%lX\n",
6030 board_info->plx_regbase);
6031 len +=
6032 sprintf(buf + len, "PLX base register size = 0x%lX\n",
6033 board_info->plx_regbase_size);
6034 len +=
6035 sprintf(buf + len, "ME4000 base register = 0x%lX\n",
6036 board_info->me4000_regbase);
6037 len +=
6038 sprintf(buf + len, "ME4000 base register size = 0x%lX\n",
6039 board_info->me4000_regbase_size);
6040 len +=
6041 sprintf(buf + len, "Serial number = 0x%X\n",
6042 board_info->serial_no);
6043 len +=
6044 sprintf(buf + len, "Hardware revision = 0x%X\n",
6045 board_info->hw_revision);
6046 len +=
6047 sprintf(buf + len, "Vendor id = 0x%X\n",
6048 board_info->vendor_id);
6049 len +=
6050 sprintf(buf + len, "Device id = 0x%X\n",
6051 board_info->device_id);
6052 len +=
6053 sprintf(buf + len, "PCI bus number = %d\n",
6054 board_info->pci_bus_no);
6055 len +=
6056 sprintf(buf + len, "PCI device number = %d\n",
6057 board_info->pci_dev_no);
6058 len +=
6059 sprintf(buf + len, "PCI function number = %d\n",
6060 board_info->pci_func_no);
6061 len += sprintf(buf + len, "IRQ = %u\n", board_info->irq);
6062 len +=
6063 sprintf(buf + len,
6064 "Count of interrupts since module was loaded = %d\n",
6065 board_info->irq_count);
6066
6067 len +=
6068 sprintf(buf + len, "Count of analog outputs = %d\n",
6069 board_info->board_p->ao.count);
6070 len +=
6071 sprintf(buf + len, "Count of analog output fifos = %d\n",
6072 board_info->board_p->ao.fifo_count);
6073
6074 len +=
6075 sprintf(buf + len, "Count of analog inputs = %d\n",
6076 board_info->board_p->ai.count);
6077 len +=
6078 sprintf(buf + len,
6079 "Count of sample and hold devices for analog input = %d\n",
6080 board_info->board_p->ai.sh_count);
6081 len +=
6082 sprintf(buf + len,
6083 "Analog external trigger available for analog input = %d\n",
6084 board_info->board_p->ai.ex_trig_analog);
6085
6086 len +=
6087 sprintf(buf + len, "Count of digital ports = %d\n",
6088 board_info->board_p->dio.count);
6089
6090 len +=
6091 sprintf(buf + len, "Count of counter devices = %d\n",
6092 board_info->board_p->cnt.count);
6093 len +=
6094 sprintf(buf + len, "AI control register = 0x%08X\n",
6095 inl(board_info->me4000_regbase +
6096 ME4000_AI_CTRL_REG));
6097
6098 len += sprintf(buf + len, "AO 0 control register = 0x%08X\n",
6099 inl(board_info->me4000_regbase +
6100 ME4000_AO_00_CTRL_REG));
6101 len +=
6102 sprintf(buf + len, "AO 0 status register = 0x%08X\n",
6103 inl(board_info->me4000_regbase +
6104 ME4000_AO_00_STATUS_REG));
6105 len +=
6106 sprintf(buf + len, "AO 1 control register = 0x%08X\n",
6107 inl(board_info->me4000_regbase +
6108 ME4000_AO_01_CTRL_REG));
6109 len +=
6110 sprintf(buf + len, "AO 1 status register = 0x%08X\n",
6111 inl(board_info->me4000_regbase +
6112 ME4000_AO_01_STATUS_REG));
6113 len +=
6114 sprintf(buf + len, "AO 2 control register = 0x%08X\n",
6115 inl(board_info->me4000_regbase +
6116 ME4000_AO_02_CTRL_REG));
6117 len +=
6118 sprintf(buf + len, "AO 2 status register = 0x%08X\n",
6119 inl(board_info->me4000_regbase +
6120 ME4000_AO_02_STATUS_REG));
6121 len +=
6122 sprintf(buf + len, "AO 3 control register = 0x%08X\n",
6123 inl(board_info->me4000_regbase +
6124 ME4000_AO_03_CTRL_REG));
6125 len +=
6126 sprintf(buf + len, "AO 3 status register = 0x%08X\n",
6127 inl(board_info->me4000_regbase +
6128 ME4000_AO_03_STATUS_REG));
6129 }
6130
6131 *eof = 1;
6132 return len;
6133}
diff --git a/drivers/staging/me4000/me4000.h b/drivers/staging/me4000/me4000.h
new file mode 100644
index 00000000000..c35e4b9793a
--- /dev/null
+++ b/drivers/staging/me4000/me4000.h
@@ -0,0 +1,954 @@
1/*
2 * Copyright (C) 2003 Meilhaus Electronic GmbH (support@meilhaus.de)
3 *
4 * Source File : me4000.h
5 * Author : GG (Guenter Gebhardt) <g.gebhardt@meilhaus.de>
6 */
7
8#ifndef _ME4000_H_
9#define _ME4000_H_
10
11#ifdef __KERNEL__
12
13/*=============================================================================
14 The version of the driver release
15 ===========================================================================*/
16
17#define ME4000_DRIVER_VERSION 0x10009 // Version 1.00.09
18
19/*=============================================================================
20 Debug section
21 ===========================================================================*/
22
23#undef ME4000_CALL_DEBUG // Debug function entry and exit
24#undef ME4000_ISR_DEBUG // Debug the interrupt service routine
25#undef ME4000_PORT_DEBUG // Debug port access
26#undef ME4000_DEBUG // General purpose debug masseges
27
28#ifdef ME4000_CALL_DEBUG
29#undef CALL_PDEBUG
30#define CALL_PDEBUG(fmt, args...) printk(KERN_DEBUG"ME4000:" fmt, ##args)
31#else
32# define CALL_PDEBUG(fmt, args...) // no debugging, do nothing
33#endif
34
35#ifdef ME4000_ISR_DEBUG
36#undef ISR_PDEBUG
37#define ISR_PDEBUG(fmt, args...) printk(KERN_DEBUG"ME4000:" fmt, ##args)
38#else
39#define ISR_PDEBUG(fmt, args...) // no debugging, do nothing
40#endif
41
42#ifdef ME4000_PORT_DEBUG
43#undef PORT_PDEBUG
44#define PORT_PDEBUG(fmt, args...) printk(KERN_DEBUG"ME4000:" fmt, ##args)
45#else
46#define PORT_PDEBUG(fmt, args...) // no debugging, do nothing
47#endif
48
49#ifdef ME4000_DEBUG
50#undef PDEBUG
51#define PDEBUG(fmt, args...) printk(KERN_DEBUG"ME4000:" fmt, ##args)
52#else
53#define PDEBUG(fmt, args...) // no debugging, do nothing
54#endif
55
56/*=============================================================================
57 PCI vendor and device IDs
58 ===========================================================================*/
59
60#define PCI_VENDOR_ID_MEILHAUS 0x1402
61
62#define PCI_DEVICE_ID_MEILHAUS_ME4650 0x4650 // Low Cost version
63
64#define PCI_DEVICE_ID_MEILHAUS_ME4660 0x4660 // Standard version
65#define PCI_DEVICE_ID_MEILHAUS_ME4660I 0x4661 // Isolated version
66#define PCI_DEVICE_ID_MEILHAUS_ME4660S 0x4662 // Standard version with Sample and Hold
67#define PCI_DEVICE_ID_MEILHAUS_ME4660IS 0x4663 // Isolated version with Sample and Hold
68
69#define PCI_DEVICE_ID_MEILHAUS_ME4670 0x4670 // Standard version
70#define PCI_DEVICE_ID_MEILHAUS_ME4670I 0x4671 // Isolated version
71#define PCI_DEVICE_ID_MEILHAUS_ME4670S 0x4672 // Standard version with Sample and Hold
72#define PCI_DEVICE_ID_MEILHAUS_ME4670IS 0x4673 // Isolated version with Sample and Hold
73
74#define PCI_DEVICE_ID_MEILHAUS_ME4680 0x4680 // Standard version
75#define PCI_DEVICE_ID_MEILHAUS_ME4680I 0x4681 // Isolated version
76#define PCI_DEVICE_ID_MEILHAUS_ME4680S 0x4682 // Standard version with Sample and Hold
77#define PCI_DEVICE_ID_MEILHAUS_ME4680IS 0x4683 // Isolated version with Sample and Hold
78
79/*=============================================================================
80 Device names, for entries in /proc/..
81 ===========================================================================*/
82
83#define ME4000_NAME "me4000"
84#define ME4000_AO_NAME "me4000_ao"
85#define ME4000_AI_NAME "me4000_ai"
86#define ME4000_DIO_NAME "me4000_dio"
87#define ME4000_CNT_NAME "me4000_cnt"
88#define ME4000_EXT_INT_NAME "me4000_ext_int"
89
90/*=============================================================================
91 ME-4000 base register offsets
92 ===========================================================================*/
93
94#define ME4000_AO_00_CTRL_REG 0x00 // R/W
95#define ME4000_AO_00_STATUS_REG 0x04 // R/_
96#define ME4000_AO_00_FIFO_REG 0x08 // _/W
97#define ME4000_AO_00_SINGLE_REG 0x0C // R/W
98#define ME4000_AO_00_TIMER_REG 0x10 // _/W
99
100#define ME4000_AO_01_CTRL_REG 0x18 // R/W
101#define ME4000_AO_01_STATUS_REG 0x1C // R/_
102#define ME4000_AO_01_FIFO_REG 0x20 // _/W
103#define ME4000_AO_01_SINGLE_REG 0x24 // R/W
104#define ME4000_AO_01_TIMER_REG 0x28 // _/W
105
106#define ME4000_AO_02_CTRL_REG 0x30 // R/W
107#define ME4000_AO_02_STATUS_REG 0x34 // R/_
108#define ME4000_AO_02_FIFO_REG 0x38 // _/W
109#define ME4000_AO_02_SINGLE_REG 0x3C // R/W
110#define ME4000_AO_02_TIMER_REG 0x40 // _/W
111
112#define ME4000_AO_03_CTRL_REG 0x48 // R/W
113#define ME4000_AO_03_STATUS_REG 0x4C // R/_
114#define ME4000_AO_03_FIFO_REG 0x50 // _/W
115#define ME4000_AO_03_SINGLE_REG 0x54 // R/W
116#define ME4000_AO_03_TIMER_REG 0x58 // _/W
117
118#define ME4000_AI_CTRL_REG 0x74 // _/W
119#define ME4000_AI_STATUS_REG 0x74 // R/_
120#define ME4000_AI_CHANNEL_LIST_REG 0x78 // _/W
121#define ME4000_AI_DATA_REG 0x7C // R/_
122#define ME4000_AI_CHAN_TIMER_REG 0x80 // _/W
123#define ME4000_AI_CHAN_PRE_TIMER_REG 0x84 // _/W
124#define ME4000_AI_SCAN_TIMER_LOW_REG 0x88 // _/W
125#define ME4000_AI_SCAN_TIMER_HIGH_REG 0x8C // _/W
126#define ME4000_AI_SCAN_PRE_TIMER_LOW_REG 0x90 // _/W
127#define ME4000_AI_SCAN_PRE_TIMER_HIGH_REG 0x94 // _/W
128#define ME4000_AI_START_REG 0x98 // R/_
129
130#define ME4000_IRQ_STATUS_REG 0x9C // R/_
131
132#define ME4000_DIO_PORT_0_REG 0xA0 // R/W
133#define ME4000_DIO_PORT_1_REG 0xA4 // R/W
134#define ME4000_DIO_PORT_2_REG 0xA8 // R/W
135#define ME4000_DIO_PORT_3_REG 0xAC // R/W
136#define ME4000_DIO_DIR_REG 0xB0 // R/W
137
138#define ME4000_AO_LOADSETREG_XX 0xB4 // R/W
139
140#define ME4000_DIO_CTRL_REG 0xB8 // R/W
141
142#define ME4000_AO_DEMUX_ADJUST_REG 0xBC // -/W
143
144#define ME4000_AI_SAMPLE_COUNTER_REG 0xC0 // _/W
145
146/*=============================================================================
147 Value to adjust Demux
148 ===========================================================================*/
149
150#define ME4000_AO_DEMUX_ADJUST_VALUE 0x4C
151
152/*=============================================================================
153 Counter base register offsets
154 ===========================================================================*/
155
156#define ME4000_CNT_COUNTER_0_REG 0x00
157#define ME4000_CNT_COUNTER_1_REG 0x01
158#define ME4000_CNT_COUNTER_2_REG 0x02
159#define ME4000_CNT_CTRL_REG 0x03
160
161/*=============================================================================
162 PLX base register offsets
163 ===========================================================================*/
164
165#define PLX_INTCSR 0x4C // Interrupt control and status register
166#define PLX_ICR 0x50 // Initialization control register
167
168/*=============================================================================
169 Bits for the PLX_ICSR register
170 ===========================================================================*/
171
172#define PLX_INTCSR_LOCAL_INT1_EN 0x01 // If set, local interrupt 1 is enabled (r/w)
173#define PLX_INTCSR_LOCAL_INT1_POL 0x02 // If set, local interrupt 1 polarity is active high (r/w)
174#define PLX_INTCSR_LOCAL_INT1_STATE 0x04 // If set, local interrupt 1 is active (r/_)
175#define PLX_INTCSR_LOCAL_INT2_EN 0x08 // If set, local interrupt 2 is enabled (r/w)
176#define PLX_INTCSR_LOCAL_INT2_POL 0x10 // If set, local interrupt 2 polarity is active high (r/w)
177#define PLX_INTCSR_LOCAL_INT2_STATE 0x20 // If set, local interrupt 2 is active (r/_)
178#define PLX_INTCSR_PCI_INT_EN 0x40 // If set, PCI interrupt is enabled (r/w)
179#define PLX_INTCSR_SOFT_INT 0x80 // If set, a software interrupt is generated (r/w)
180
181/*=============================================================================
182 Bits for the PLX_ICR register
183 ===========================================================================*/
184
185#define PLX_ICR_BIT_EEPROM_CLOCK_SET 0x01000000
186#define PLX_ICR_BIT_EEPROM_CHIP_SELECT 0x02000000
187#define PLX_ICR_BIT_EEPROM_WRITE 0x04000000
188#define PLX_ICR_BIT_EEPROM_READ 0x08000000
189#define PLX_ICR_BIT_EEPROM_VALID 0x10000000
190
191#define PLX_ICR_MASK_EEPROM 0x1F000000
192
193#define EEPROM_DELAY 1
194
195/*=============================================================================
196 Bits for the ME4000_AO_CTRL_REG register
197 ===========================================================================*/
198
199#define ME4000_AO_CTRL_BIT_MODE_0 0x001
200#define ME4000_AO_CTRL_BIT_MODE_1 0x002
201#define ME4000_AO_CTRL_MASK_MODE 0x003
202#define ME4000_AO_CTRL_BIT_STOP 0x004
203#define ME4000_AO_CTRL_BIT_ENABLE_FIFO 0x008
204#define ME4000_AO_CTRL_BIT_ENABLE_EX_TRIG 0x010
205#define ME4000_AO_CTRL_BIT_EX_TRIG_EDGE 0x020
206#define ME4000_AO_CTRL_BIT_IMMEDIATE_STOP 0x080
207#define ME4000_AO_CTRL_BIT_ENABLE_DO 0x100
208#define ME4000_AO_CTRL_BIT_ENABLE_IRQ 0x200
209#define ME4000_AO_CTRL_BIT_RESET_IRQ 0x400
210#define ME4000_AO_CTRL_BIT_EX_TRIG_BOTH 0x800
211
212/*=============================================================================
213 Bits for the ME4000_AO_STATUS_REG register
214 ===========================================================================*/
215
216#define ME4000_AO_STATUS_BIT_FSM 0x01
217#define ME4000_AO_STATUS_BIT_FF 0x02
218#define ME4000_AO_STATUS_BIT_HF 0x04
219#define ME4000_AO_STATUS_BIT_EF 0x08
220
221/*=============================================================================
222 Bits for the ME4000_AI_CTRL_REG register
223 ===========================================================================*/
224
225#define ME4000_AI_CTRL_BIT_MODE_0 0x00000001
226#define ME4000_AI_CTRL_BIT_MODE_1 0x00000002
227#define ME4000_AI_CTRL_BIT_MODE_2 0x00000004
228#define ME4000_AI_CTRL_BIT_SAMPLE_HOLD 0x00000008
229#define ME4000_AI_CTRL_BIT_IMMEDIATE_STOP 0x00000010
230#define ME4000_AI_CTRL_BIT_STOP 0x00000020
231#define ME4000_AI_CTRL_BIT_CHANNEL_FIFO 0x00000040
232#define ME4000_AI_CTRL_BIT_DATA_FIFO 0x00000080
233#define ME4000_AI_CTRL_BIT_FULLSCALE 0x00000100
234#define ME4000_AI_CTRL_BIT_OFFSET 0x00000200
235#define ME4000_AI_CTRL_BIT_EX_TRIG_ANALOG 0x00000400
236#define ME4000_AI_CTRL_BIT_EX_TRIG 0x00000800
237#define ME4000_AI_CTRL_BIT_EX_TRIG_FALLING 0x00001000
238#define ME4000_AI_CTRL_BIT_EX_IRQ 0x00002000
239#define ME4000_AI_CTRL_BIT_EX_IRQ_RESET 0x00004000
240#define ME4000_AI_CTRL_BIT_LE_IRQ 0x00008000
241#define ME4000_AI_CTRL_BIT_LE_IRQ_RESET 0x00010000
242#define ME4000_AI_CTRL_BIT_HF_IRQ 0x00020000
243#define ME4000_AI_CTRL_BIT_HF_IRQ_RESET 0x00040000
244#define ME4000_AI_CTRL_BIT_SC_IRQ 0x00080000
245#define ME4000_AI_CTRL_BIT_SC_IRQ_RESET 0x00100000
246#define ME4000_AI_CTRL_BIT_SC_RELOAD 0x00200000
247#define ME4000_AI_CTRL_BIT_EX_TRIG_BOTH 0x80000000
248
249/*=============================================================================
250 Bits for the ME4000_AI_STATUS_REG register
251 ===========================================================================*/
252
253#define ME4000_AI_STATUS_BIT_EF_CHANNEL 0x00400000
254#define ME4000_AI_STATUS_BIT_HF_CHANNEL 0x00800000
255#define ME4000_AI_STATUS_BIT_FF_CHANNEL 0x01000000
256#define ME4000_AI_STATUS_BIT_EF_DATA 0x02000000
257#define ME4000_AI_STATUS_BIT_HF_DATA 0x04000000
258#define ME4000_AI_STATUS_BIT_FF_DATA 0x08000000
259#define ME4000_AI_STATUS_BIT_LE 0x10000000
260#define ME4000_AI_STATUS_BIT_FSM 0x20000000
261
262/*=============================================================================
263 Bits for the ME4000_IRQ_STATUS_REG register
264 ===========================================================================*/
265
266#define ME4000_IRQ_STATUS_BIT_EX 0x01
267#define ME4000_IRQ_STATUS_BIT_LE 0x02
268#define ME4000_IRQ_STATUS_BIT_AI_HF 0x04
269#define ME4000_IRQ_STATUS_BIT_AO_0_HF 0x08
270#define ME4000_IRQ_STATUS_BIT_AO_1_HF 0x10
271#define ME4000_IRQ_STATUS_BIT_AO_2_HF 0x20
272#define ME4000_IRQ_STATUS_BIT_AO_3_HF 0x40
273#define ME4000_IRQ_STATUS_BIT_SC 0x80
274
275/*=============================================================================
276 Bits for the ME4000_DIO_CTRL_REG register
277 ===========================================================================*/
278
279#define ME4000_DIO_CTRL_BIT_MODE_0 0X0001
280#define ME4000_DIO_CTRL_BIT_MODE_1 0X0002
281#define ME4000_DIO_CTRL_BIT_MODE_2 0X0004
282#define ME4000_DIO_CTRL_BIT_MODE_3 0X0008
283#define ME4000_DIO_CTRL_BIT_MODE_4 0X0010
284#define ME4000_DIO_CTRL_BIT_MODE_5 0X0020
285#define ME4000_DIO_CTRL_BIT_MODE_6 0X0040
286#define ME4000_DIO_CTRL_BIT_MODE_7 0X0080
287
288#define ME4000_DIO_CTRL_BIT_FUNCTION_0 0X0100
289#define ME4000_DIO_CTRL_BIT_FUNCTION_1 0X0200
290
291#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_0 0X0400
292#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_1 0X0800
293#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_2 0X1000
294#define ME4000_DIO_CTRL_BIT_FIFO_HIGH_3 0X2000
295
296/*=============================================================================
297 Bits for the ME4000_CNT_CTRL_REG register
298 ===========================================================================*/
299
300#define ME4000_CNT_CTRL_BIT_COUNTER_0 0x00
301#define ME4000_CNT_CTRL_BIT_COUNTER_1 0x40
302#define ME4000_CNT_CTRL_BIT_COUNTER_2 0x80
303
304#define ME4000_CNT_CTRL_BIT_MODE_0 0x00 // Change state if zero crossing
305#define ME4000_CNT_CTRL_BIT_MODE_1 0x02 // Retriggerable One-Shot
306#define ME4000_CNT_CTRL_BIT_MODE_2 0x04 // Asymmetrical divider
307#define ME4000_CNT_CTRL_BIT_MODE_3 0x06 // Symmetrical divider
308#define ME4000_CNT_CTRL_BIT_MODE_4 0x08 // Counter start by software trigger
309#define ME4000_CNT_CTRL_BIT_MODE_5 0x0A // Counter start by hardware trigger
310
311/*=============================================================================
312 Extract information from minor device number
313 ===========================================================================*/
314
315#define AO_BOARD(dev) ((MINOR(dev) >> 6) & 0x3)
316#define AO_PORT(dev) ((MINOR(dev) >> 2) & 0xF)
317#define AO_MODE(dev) (MINOR(dev) & 0x3)
318
319#define AI_BOARD(dev) ((MINOR(dev) >> 3) & 0x1F)
320#define AI_MODE(dev) (MINOR(dev) & 0x7)
321
322#define DIO_BOARD(dev) (MINOR(dev))
323
324#define CNT_BOARD(dev) (MINOR(dev))
325
326#define EXT_INT_BOARD(dev) (MINOR(dev))
327
328/*=============================================================================
329 Circular buffer used for analog input/output reads/writes.
330 ===========================================================================*/
331
332typedef struct me4000_circ_buf {
333 s16 *buf;
334 int volatile head;
335 int volatile tail;
336} me4000_circ_buf_t;
337
338/*=============================================================================
339 Information about the hardware capabilities
340 ===========================================================================*/
341
342typedef struct me4000_ao_info {
343 int count;
344 int fifo_count;
345} me4000_ao_info_t;
346
347typedef struct me4000_ai_info {
348 int count;
349 int sh_count;
350 int diff_count;
351 int ex_trig_analog;
352} me4000_ai_info_t;
353
354typedef struct me4000_dio_info {
355 int count;
356} me4000_dio_info_t;
357
358typedef struct me4000_cnt_info {
359 int count;
360} me4000_cnt_info_t;
361
362typedef struct me4000_board {
363 u16 vendor_id;
364 u16 device_id;
365 me4000_ao_info_t ao;
366 me4000_ai_info_t ai;
367 me4000_dio_info_t dio;
368 me4000_cnt_info_t cnt;
369} me4000_board_t;
370
371static me4000_board_t me4000_boards[] = {
372 {PCI_VENDOR_ID_MEILHAUS, 0x4610, {0, 0}, {16, 0, 0, 0}, {4}, {3}},
373
374 {PCI_VENDOR_ID_MEILHAUS, 0x4650, {0, 0}, {16, 0, 0, 0}, {4}, {0}},
375
376 {PCI_VENDOR_ID_MEILHAUS, 0x4660, {2, 0}, {16, 0, 0, 0}, {4}, {3}},
377 {PCI_VENDOR_ID_MEILHAUS, 0x4661, {2, 0}, {16, 0, 0, 0}, {4}, {3}},
378 {PCI_VENDOR_ID_MEILHAUS, 0x4662, {2, 0}, {16, 8, 0, 0}, {4}, {3}},
379 {PCI_VENDOR_ID_MEILHAUS, 0x4663, {2, 0}, {16, 8, 0, 0}, {4}, {3}},
380
381 {PCI_VENDOR_ID_MEILHAUS, 0x4670, {4, 0}, {32, 0, 16, 1}, {4}, {3}},
382 {PCI_VENDOR_ID_MEILHAUS, 0x4671, {4, 0}, {32, 0, 16, 1}, {4}, {3}},
383 {PCI_VENDOR_ID_MEILHAUS, 0x4672, {4, 0}, {32, 8, 16, 1}, {4}, {3}},
384 {PCI_VENDOR_ID_MEILHAUS, 0x4673, {4, 0}, {32, 8, 16, 1}, {4}, {3}},
385
386 {PCI_VENDOR_ID_MEILHAUS, 0x4680, {4, 4}, {32, 0, 16, 1}, {4}, {3}},
387 {PCI_VENDOR_ID_MEILHAUS, 0x4681, {4, 4}, {32, 0, 16, 1}, {4}, {3}},
388 {PCI_VENDOR_ID_MEILHAUS, 0x4682, {4, 4}, {32, 8, 16, 1}, {4}, {3}},
389 {PCI_VENDOR_ID_MEILHAUS, 0x4683, {4, 4}, {32, 8, 16, 1}, {4}, {3}},
390
391 {0},
392};
393
394#define ME4000_BOARD_VERSIONS (sizeof(me4000_boards) / sizeof(me4000_board_t) - 1)
395
396/*=============================================================================
397 PCI device table.
398 This is used by modprobe to translate PCI IDs to drivers.
399 ===========================================================================*/
400
401static struct pci_device_id me4000_pci_table[] __devinitdata = {
402 {PCI_VENDOR_ID_MEILHAUS, 0x4610, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
403
404 {PCI_VENDOR_ID_MEILHAUS, 0x4650, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
405
406 {PCI_VENDOR_ID_MEILHAUS, 0x4660, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
407 {PCI_VENDOR_ID_MEILHAUS, 0x4661, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
408 {PCI_VENDOR_ID_MEILHAUS, 0x4662, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
409 {PCI_VENDOR_ID_MEILHAUS, 0x4663, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
410
411 {PCI_VENDOR_ID_MEILHAUS, 0x4670, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
412 {PCI_VENDOR_ID_MEILHAUS, 0x4671, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
413 {PCI_VENDOR_ID_MEILHAUS, 0x4672, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
414 {PCI_VENDOR_ID_MEILHAUS, 0x4673, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
415
416 {PCI_VENDOR_ID_MEILHAUS, 0x4680, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
417 {PCI_VENDOR_ID_MEILHAUS, 0x4681, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
418 {PCI_VENDOR_ID_MEILHAUS, 0x4682, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
419 {PCI_VENDOR_ID_MEILHAUS, 0x4683, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
420
421 {0}
422};
423
424MODULE_DEVICE_TABLE(pci, me4000_pci_table);
425
426/*=============================================================================
427 Global board and subdevice information structures
428 ===========================================================================*/
429
430typedef struct me4000_info {
431 struct list_head list; // List of all detected boards
432 int board_count; // Index of the board after detection
433
434 unsigned long plx_regbase; // PLX configuration space base address
435 unsigned long me4000_regbase; // Base address of the ME4000
436 unsigned long timer_regbase; // Base address of the timer circuit
437 unsigned long program_regbase; // Base address to set the program pin for the xilinx
438
439 unsigned long plx_regbase_size; // PLX register set space
440 unsigned long me4000_regbase_size; // ME4000 register set space
441 unsigned long timer_regbase_size; // Timer circuit register set space
442 unsigned long program_regbase_size; // Size of program base address of the ME4000
443
444 unsigned int serial_no; // Serial number of the board
445 unsigned char hw_revision; // Hardware revision of the board
446 unsigned short vendor_id; // Meilhaus vendor id (0x1402)
447 unsigned short device_id; // Device ID
448
449 int pci_bus_no; // PCI bus number
450 int pci_dev_no; // PCI device number
451 int pci_func_no; // PCI function number
452 struct pci_dev *pci_dev_p; // General PCI information
453
454 me4000_board_t *board_p; // Holds the board capabilities
455
456 unsigned int irq; // IRQ assigned from the PCI BIOS
457 unsigned int irq_count; // Count of external interrupts
458
459 spinlock_t preload_lock; // Guards the analog output preload register
460 spinlock_t ai_ctrl_lock; // Guards the analog input control register
461
462 struct list_head ao_context_list; // List with analog output specific context
463 struct me4000_ai_context *ai_context; // Analog input specific context
464 struct me4000_dio_context *dio_context; // Digital I/O specific context
465 struct me4000_cnt_context *cnt_context; // Counter specific context
466 struct me4000_ext_int_context *ext_int_context; // External interrupt specific context
467} me4000_info_t;
468
469typedef struct me4000_ao_context {
470 struct list_head list; // linked list of me4000_ao_context_t
471 int index; // Index in the list
472 int mode; // Indicates mode (0 = single, 1 = wraparound, 2 = continous)
473 int dac_in_use; // Indicates if already opend
474 spinlock_t use_lock; // Guards in_use
475 spinlock_t int_lock; // Used when locking out interrupts
476 me4000_circ_buf_t circ_buf; // Circular buffer
477 wait_queue_head_t wait_queue; // Wait queue to sleep while blocking write
478 me4000_info_t *board_info;
479 unsigned int irq; // The irq associated with this ADC
480 int volatile pipe_flag; // Indicates broken pipe set from me4000_ao_isr()
481 unsigned long ctrl_reg;
482 unsigned long status_reg;
483 unsigned long fifo_reg;
484 unsigned long single_reg;
485 unsigned long timer_reg;
486 unsigned long irq_status_reg;
487 unsigned long preload_reg;
488 struct fasync_struct *fasync_p; // Queue for asynchronous notification
489} me4000_ao_context_t;
490
491typedef struct me4000_ai_context {
492 struct list_head list; // linked list of me4000_ai_info_t
493 int mode; // Indicates mode
494 int in_use; // Indicates if already opend
495 spinlock_t use_lock; // Guards in_use
496 spinlock_t int_lock; // Used when locking out interrupts
497 int number; // Number of the DAC
498 unsigned int irq; // The irq associated with this ADC
499 me4000_circ_buf_t circ_buf; // Circular buffer
500 wait_queue_head_t wait_queue; // Wait queue to sleep while blocking read
501 me4000_info_t *board_info;
502
503 struct fasync_struct *fasync_p; // Queue for asynchronous notification
504
505 unsigned long ctrl_reg;
506 unsigned long status_reg;
507 unsigned long channel_list_reg;
508 unsigned long data_reg;
509 unsigned long chan_timer_reg;
510 unsigned long chan_pre_timer_reg;
511 unsigned long scan_timer_low_reg;
512 unsigned long scan_timer_high_reg;
513 unsigned long scan_pre_timer_low_reg;
514 unsigned long scan_pre_timer_high_reg;
515 unsigned long start_reg;
516 unsigned long irq_status_reg;
517 unsigned long sample_counter_reg;
518
519 unsigned long chan_timer;
520 unsigned long chan_pre_timer;
521 unsigned long scan_timer_low;
522 unsigned long scan_timer_high;
523 unsigned long channel_list_count;
524 unsigned long sample_counter;
525 int sample_counter_reload;
526} me4000_ai_context_t;
527
528typedef struct me4000_dio_context {
529 struct list_head list; // linked list of me4000_dio_context_t
530 int in_use; // Indicates if already opend
531 spinlock_t use_lock; // Guards in_use
532 int number;
533 int dio_count;
534 me4000_info_t *board_info;
535 unsigned long dir_reg;
536 unsigned long ctrl_reg;
537 unsigned long port_0_reg;
538 unsigned long port_1_reg;
539 unsigned long port_2_reg;
540 unsigned long port_3_reg;
541} me4000_dio_context_t;
542
543typedef struct me4000_cnt_context {
544 struct list_head list; // linked list of me4000_dio_context_t
545 int in_use; // Indicates if already opend
546 spinlock_t use_lock; // Guards in_use
547 int number;
548 int cnt_count;
549 me4000_info_t *board_info;
550 unsigned long ctrl_reg;
551 unsigned long counter_0_reg;
552 unsigned long counter_1_reg;
553 unsigned long counter_2_reg;
554} me4000_cnt_context_t;
555
556typedef struct me4000_ext_int_context {
557 struct list_head list; // linked list of me4000_dio_context_t
558 int in_use; // Indicates if already opend
559 spinlock_t use_lock; // Guards in_use
560 int number;
561 me4000_info_t *board_info;
562 unsigned int irq;
563 unsigned long int_count;
564 struct fasync_struct *fasync_ptr;
565 unsigned long ctrl_reg;
566 unsigned long irq_status_reg;
567} me4000_ext_int_context_t;
568
569#endif
570
571/*=============================================================================
572 Application include section starts here
573 ===========================================================================*/
574
575/*-----------------------------------------------------------------------------
576 Defines for analog input
577 ----------------------------------------------------------------------------*/
578
579/* General stuff */
580#define ME4000_AI_FIFO_COUNT 2048
581
582#define ME4000_AI_MIN_TICKS 66
583#define ME4000_AI_MAX_SCAN_TICKS 0xFFFFFFFFFFLL
584
585#define ME4000_AI_BUFFER_SIZE (32 * 1024) // Size in bytes
586
587#define ME4000_AI_BUFFER_COUNT ((ME4000_AI_BUFFER_SIZE) / 2) // Size in values
588
589/* Channel list defines and masks */
590#define ME4000_AI_CHANNEL_LIST_COUNT 1024
591
592#define ME4000_AI_LIST_INPUT_SINGLE_ENDED 0x000
593#define ME4000_AI_LIST_INPUT_DIFFERENTIAL 0x020
594
595#define ME4000_AI_LIST_RANGE_BIPOLAR_10 0x000
596#define ME4000_AI_LIST_RANGE_BIPOLAR_2_5 0x040
597#define ME4000_AI_LIST_RANGE_UNIPOLAR_10 0x080
598#define ME4000_AI_LIST_RANGE_UNIPOLAR_2_5 0x0C0
599
600#define ME4000_AI_LIST_LAST_ENTRY 0x100
601
602/* External trigger defines */
603#define ME4000_AI_TRIGGER_SOFTWARE 0x0 // Use only with API
604#define ME4000_AI_TRIGGER_EXT_DIGITAL 0x1
605#define ME4000_AI_TRIGGER_EXT_ANALOG 0x2
606
607#define ME4000_AI_TRIGGER_EXT_EDGE_RISING 0x0
608#define ME4000_AI_TRIGGER_EXT_EDGE_FALLING 0x1
609#define ME4000_AI_TRIGGER_EXT_EDGE_BOTH 0x2
610
611/* Sample and Hold */
612#define ME4000_AI_SIMULTANEOUS_DISABLE 0x0
613#define ME4000_AI_SIMULTANEOUS_ENABLE 0x1
614
615/* Defines for the Sample Counter */
616#define ME4000_AI_SC_RELOAD 0x0
617#define ME4000_AI_SC_ONCE 0x1
618
619/* Modes for analog input */
620#define ME4000_AI_ACQ_MODE_SINGLE 0x00 // Catch one single value
621#define ME4000_AI_ACQ_MODE_SOFTWARE 0x01 // Continous sampling with software start
622#define ME4000_AI_ACQ_MODE_EXT 0x02 // Continous sampling with external trigger start
623#define ME4000_AI_ACQ_MODE_EXT_SINGLE_VALUE 0x03 // Sample one value by external trigger
624#define ME4000_AI_ACQ_MODE_EXT_SINGLE_CHANLIST 0x04 // Sample one channel list by external trigger
625
626/* Staus of AI FSM */
627#define ME4000_AI_STATUS_IDLE 0x0
628#define ME4000_AI_STATUS_BUSY 0x1
629
630/* Voltages for calibration */
631#define ME4000_AI_GAIN_1_UNI_OFFSET 10.0E-3
632#define ME4000_AI_GAIN_1_UNI_FULLSCALE 9950.0E-3
633#define ME4000_AI_GAIN_1_BI_OFFSET 0.0
634#define ME4000_AI_GAIN_1_BI_FULLSCALE 9950.0E-3
635#define ME4000_AI_GAIN_4_UNI_OFFSET 10.0E-3
636#define ME4000_AI_GAIN_4_UNI_FULLSCALE 2450.0E-3
637#define ME4000_AI_GAIN_4_BI_OFFSET 0.0
638#define ME4000_AI_GAIN_4_BI_FULLSCALE 2450.0E-3
639
640/* Ideal digits for calibration */
641#define ME4000_AI_GAIN_1_UNI_OFFSET_DIGITS (-32702)
642#define ME4000_AI_GAIN_1_UNI_FULLSCALE_DIGITS 32440
643#define ME4000_AI_GAIN_1_BI_OFFSET_DIGITS 0
644#define ME4000_AI_GAIN_1_BI_FULLSCALE_DIGITS 32604
645#define ME4000_AI_GAIN_4_UNI_OFFSET_DIGITS (-32505)
646#define ME4000_AI_GAIN_4_UNI_FULLSCALE_DIGITS 31457
647#define ME4000_AI_GAIN_4_BI_OFFSET_DIGITS 0
648#define ME4000_AI_GAIN_4_BI_FULLSCALE_DIGITS 32113
649
650/*-----------------------------------------------------------------------------
651 Defines for analog output
652 ----------------------------------------------------------------------------*/
653
654/* General stuff */
655#define ME4000_AO_FIFO_COUNT (4 * 1024)
656
657#define ME4000_AO_MIN_TICKS 66
658
659#define ME4000_AO_BUFFER_SIZE (32 * 1024) // Size in bytes
660
661#define ME4000_AO_BUFFER_COUNT ((ME4000_AO_BUFFER_SIZE) / 2) // Size in values
662
663/* Conversion modes for analog output */
664#define ME4000_AO_CONV_MODE_SINGLE 0x0
665#define ME4000_AO_CONV_MODE_WRAPAROUND 0x1
666#define ME4000_AO_CONV_MODE_CONTINUOUS 0x2
667
668/* Trigger setup */
669#define ME4000_AO_TRIGGER_EXT_EDGE_RISING 0x0
670#define ME4000_AO_TRIGGER_EXT_EDGE_FALLING 0x1
671#define ME4000_AO_TRIGGER_EXT_EDGE_BOTH 0x2
672
673/* Status of AO FSM */
674#define ME4000_AO_STATUS_IDLE 0x0
675#define ME4000_AO_STATUS_BUSY 0x1
676
677/*-----------------------------------------------------------------------------
678 Defines for eeprom
679 ----------------------------------------------------------------------------*/
680
681#define ME4000_EEPROM_CMD_READ 0x180
682#define ME4000_EEPROM_CMD_WRITE_ENABLE 0x130
683#define ME4000_EEPROM_CMD_WRITE_DISABLE 0x100
684#define ME4000_EEPROM_CMD_WRITE 0x1400000
685
686#define ME4000_EEPROM_CMD_LENGTH_READ 9
687#define ME4000_EEPROM_CMD_LENGTH_WRITE_ENABLE 9
688#define ME4000_EEPROM_CMD_LENGTH_WRITE_DISABLE 9
689#define ME4000_EEPROM_CMD_LENGTH_WRITE 25
690
691#define ME4000_EEPROM_ADR_DATE_HIGH 0x32
692#define ME4000_EEPROM_ADR_DATE_LOW 0x33
693
694#define ME4000_EEPROM_ADR_GAIN_1_UNI_OFFSET 0x34
695#define ME4000_EEPROM_ADR_GAIN_1_UNI_FULLSCALE 0x35
696#define ME4000_EEPROM_ADR_GAIN_1_BI_OFFSET 0x36
697#define ME4000_EEPROM_ADR_GAIN_1_BI_FULLSCALE 0x37
698#define ME4000_EEPROM_ADR_GAIN_1_DIFF_OFFSET 0x38
699#define ME4000_EEPROM_ADR_GAIN_1_DIFF_FULLSCALE 0x39
700
701#define ME4000_EEPROM_ADR_GAIN_4_UNI_OFFSET 0x3A
702#define ME4000_EEPROM_ADR_GAIN_4_UNI_FULLSCALE 0x3B
703#define ME4000_EEPROM_ADR_GAIN_4_BI_OFFSET 0x3C
704#define ME4000_EEPROM_ADR_GAIN_4_BI_FULLSCALE 0x3D
705#define ME4000_EEPROM_ADR_GAIN_4_DIFF_OFFSET 0x3E
706#define ME4000_EEPROM_ADR_GAIN_4_DIFF_FULLSCALE 0x3F
707
708#define ME4000_EEPROM_ADR_LENGTH 6
709#define ME4000_EEPROM_DATA_LENGTH 16
710
711/*-----------------------------------------------------------------------------
712 Defines for digital I/O
713 ----------------------------------------------------------------------------*/
714
715#define ME4000_DIO_PORT_A 0x0
716#define ME4000_DIO_PORT_B 0x1
717#define ME4000_DIO_PORT_C 0x2
718#define ME4000_DIO_PORT_D 0x3
719
720#define ME4000_DIO_PORT_INPUT 0x0
721#define ME4000_DIO_PORT_OUTPUT 0x1
722#define ME4000_DIO_FIFO_LOW 0x2
723#define ME4000_DIO_FIFO_HIGH 0x3
724
725#define ME4000_DIO_FUNCTION_PATTERN 0x0
726#define ME4000_DIO_FUNCTION_DEMUX 0x1
727#define ME4000_DIO_FUNCTION_MUX 0x2
728
729/*-----------------------------------------------------------------------------
730 Defines for counters
731 ----------------------------------------------------------------------------*/
732
733#define ME4000_CNT_COUNTER_0 0
734#define ME4000_CNT_COUNTER_1 1
735#define ME4000_CNT_COUNTER_2 2
736
737#define ME4000_CNT_MODE_0 0 // Change state if zero crossing
738#define ME4000_CNT_MODE_1 1 // Retriggerable One-Shot
739#define ME4000_CNT_MODE_2 2 // Asymmetrical divider
740#define ME4000_CNT_MODE_3 3 // Symmetrical divider
741#define ME4000_CNT_MODE_4 4 // Counter start by software trigger
742#define ME4000_CNT_MODE_5 5 // Counter start by hardware trigger
743
744/*-----------------------------------------------------------------------------
745 General type definitions
746 ----------------------------------------------------------------------------*/
747
748typedef struct me4000_user_info {
749 int board_count; // Index of the board after detection
750 unsigned long plx_regbase; // PLX configuration space base address
751 unsigned long me4000_regbase; // Base address of the ME4000
752 unsigned long plx_regbase_size; // PLX register set space
753 unsigned long me4000_regbase_size; // ME4000 register set space
754 unsigned long serial_no; // Serial number of the board
755 unsigned char hw_revision; // Hardware revision of the board
756 unsigned short vendor_id; // Meilhaus vendor id (0x1402)
757 unsigned short device_id; // Device ID
758 int pci_bus_no; // PCI bus number
759 int pci_dev_no; // PCI device number
760 int pci_func_no; // PCI function number
761 char irq; // IRQ assigned from the PCI BIOS
762 int irq_count; // Count of external interrupts
763
764 int driver_version; // Version of the driver release
765
766 int ao_count; // Count of analog output channels
767 int ao_fifo_count; // Count fo analog output fifos
768
769 int ai_count; // Count of analog input channels
770 int ai_sh_count; // Count of sample and hold devices
771 int ai_ex_trig_analog; // Flag to indicate if analogous external trigger is available
772
773 int dio_count; // Count of digital I/O ports
774
775 int cnt_count; // Count of counters
776} me4000_user_info_t;
777
778/*-----------------------------------------------------------------------------
779 Type definitions for analog output
780 ----------------------------------------------------------------------------*/
781
782typedef struct me4000_ao_channel_list {
783 unsigned long count;
784 unsigned long *list;
785} me4000_ao_channel_list_t;
786
787/*-----------------------------------------------------------------------------
788 Type definitions for analog input
789 ----------------------------------------------------------------------------*/
790
791typedef struct me4000_ai_channel_list {
792 unsigned long count;
793 unsigned long *list;
794} me4000_ai_channel_list_t;
795
796typedef struct me4000_ai_timer {
797 unsigned long pre_chan;
798 unsigned long chan;
799 unsigned long scan_low;
800 unsigned long scan_high;
801} me4000_ai_timer_t;
802
803typedef struct me4000_ai_config {
804 me4000_ai_timer_t timer;
805 me4000_ai_channel_list_t channel_list;
806 int sh;
807} me4000_ai_config_t;
808
809typedef struct me4000_ai_single {
810 int channel;
811 int range;
812 int mode;
813 short value;
814 unsigned long timeout;
815} me4000_ai_single_t;
816
817typedef struct me4000_ai_trigger {
818 int mode;
819 int edge;
820} me4000_ai_trigger_t;
821
822typedef struct me4000_ai_sc {
823 unsigned long value;
824 int reload;
825} me4000_ai_sc_t;
826
827/*-----------------------------------------------------------------------------
828 Type definitions for eeprom
829 ----------------------------------------------------------------------------*/
830
831typedef struct me4000_eeprom {
832 unsigned long date;
833 short uni_10_offset;
834 short uni_10_fullscale;
835 short uni_2_5_offset;
836 short uni_2_5_fullscale;
837 short bi_10_offset;
838 short bi_10_fullscale;
839 short bi_2_5_offset;
840 short bi_2_5_fullscale;
841 short diff_10_offset;
842 short diff_10_fullscale;
843 short diff_2_5_offset;
844 short diff_2_5_fullscale;
845} me4000_eeprom_t;
846
847/*-----------------------------------------------------------------------------
848 Type definitions for digital I/O
849 ----------------------------------------------------------------------------*/
850
851typedef struct me4000_dio_config {
852 int port;
853 int mode;
854 int function;
855} me4000_dio_config_t;
856
857typedef struct me4000_dio_byte {
858 int port;
859 unsigned char byte;
860} me4000_dio_byte_t;
861
862/*-----------------------------------------------------------------------------
863 Type definitions for counters
864 ----------------------------------------------------------------------------*/
865
866typedef struct me4000_cnt {
867 int counter;
868 unsigned short value;
869} me4000_cnt_t;
870
871typedef struct me4000_cnt_config {
872 int counter;
873 int mode;
874} me4000_cnt_config_t;
875
876/*-----------------------------------------------------------------------------
877 Type definitions for external interrupt
878 ----------------------------------------------------------------------------*/
879
880typedef struct {
881 int int1_count;
882 int int2_count;
883} me4000_int_type;
884
885/*-----------------------------------------------------------------------------
886 The ioctls of the board
887 ----------------------------------------------------------------------------*/
888
889#define ME4000_IOCTL_MAXNR 50
890#define ME4000_MAGIC 'y'
891#define ME4000_GET_USER_INFO _IOR (ME4000_MAGIC, 0, me4000_user_info_t)
892
893#define ME4000_AO_START _IOW (ME4000_MAGIC, 1, unsigned long)
894#define ME4000_AO_STOP _IO (ME4000_MAGIC, 2)
895#define ME4000_AO_IMMEDIATE_STOP _IO (ME4000_MAGIC, 3)
896#define ME4000_AO_RESET _IO (ME4000_MAGIC, 4)
897#define ME4000_AO_PRELOAD _IO (ME4000_MAGIC, 5)
898#define ME4000_AO_PRELOAD_UPDATE _IO (ME4000_MAGIC, 6)
899#define ME4000_AO_EX_TRIG_ENABLE _IO (ME4000_MAGIC, 7)
900#define ME4000_AO_EX_TRIG_DISABLE _IO (ME4000_MAGIC, 8)
901#define ME4000_AO_EX_TRIG_SETUP _IOW (ME4000_MAGIC, 9, int)
902#define ME4000_AO_TIMER_SET_DIVISOR _IOW (ME4000_MAGIC, 10, unsigned long)
903#define ME4000_AO_ENABLE_DO _IO (ME4000_MAGIC, 11)
904#define ME4000_AO_DISABLE_DO _IO (ME4000_MAGIC, 12)
905#define ME4000_AO_FSM_STATE _IOR (ME4000_MAGIC, 13, int)
906
907#define ME4000_AI_SINGLE _IOR (ME4000_MAGIC, 14, me4000_ai_single_t)
908#define ME4000_AI_START _IOW (ME4000_MAGIC, 15, unsigned long)
909#define ME4000_AI_STOP _IO (ME4000_MAGIC, 16)
910#define ME4000_AI_IMMEDIATE_STOP _IO (ME4000_MAGIC, 17)
911#define ME4000_AI_EX_TRIG_ENABLE _IO (ME4000_MAGIC, 18)
912#define ME4000_AI_EX_TRIG_DISABLE _IO (ME4000_MAGIC, 19)
913#define ME4000_AI_EX_TRIG_SETUP _IOW (ME4000_MAGIC, 20, me4000_ai_trigger_t)
914#define ME4000_AI_CONFIG _IOW (ME4000_MAGIC, 21, me4000_ai_config_t)
915#define ME4000_AI_SC_SETUP _IOW (ME4000_MAGIC, 22, me4000_ai_sc_t)
916#define ME4000_AI_FSM_STATE _IOR (ME4000_MAGIC, 23, int)
917
918#define ME4000_DIO_CONFIG _IOW (ME4000_MAGIC, 24, me4000_dio_config_t)
919#define ME4000_DIO_GET_BYTE _IOR (ME4000_MAGIC, 25, me4000_dio_byte_t)
920#define ME4000_DIO_SET_BYTE _IOW (ME4000_MAGIC, 26, me4000_dio_byte_t)
921#define ME4000_DIO_RESET _IO (ME4000_MAGIC, 27)
922
923#define ME4000_CNT_READ _IOR (ME4000_MAGIC, 28, me4000_cnt_t)
924#define ME4000_CNT_WRITE _IOW (ME4000_MAGIC, 29, me4000_cnt_t)
925#define ME4000_CNT_CONFIG _IOW (ME4000_MAGIC, 30, me4000_cnt_config_t)
926#define ME4000_CNT_RESET _IO (ME4000_MAGIC, 31)
927
928#define ME4000_EXT_INT_DISABLE _IO (ME4000_MAGIC, 32)
929#define ME4000_EXT_INT_ENABLE _IO (ME4000_MAGIC, 33)
930#define ME4000_EXT_INT_COUNT _IOR (ME4000_MAGIC, 34, int)
931
932#define ME4000_AI_OFFSET_ENABLE _IO (ME4000_MAGIC, 35)
933#define ME4000_AI_OFFSET_DISABLE _IO (ME4000_MAGIC, 36)
934#define ME4000_AI_FULLSCALE_ENABLE _IO (ME4000_MAGIC, 37)
935#define ME4000_AI_FULLSCALE_DISABLE _IO (ME4000_MAGIC, 38)
936
937#define ME4000_AI_EEPROM_READ _IOR (ME4000_MAGIC, 39, me4000_eeprom_t)
938#define ME4000_AI_EEPROM_WRITE _IOW (ME4000_MAGIC, 40, me4000_eeprom_t)
939
940#define ME4000_AO_SIMULTANEOUS_EX_TRIG _IO (ME4000_MAGIC, 41)
941#define ME4000_AO_SIMULTANEOUS_SW _IO (ME4000_MAGIC, 42)
942#define ME4000_AO_SIMULTANEOUS_DISABLE _IO (ME4000_MAGIC, 43)
943#define ME4000_AO_SIMULTANEOUS_UPDATE _IOW (ME4000_MAGIC, 44, me4000_ao_channel_list_t)
944
945#define ME4000_AO_SYNCHRONOUS_EX_TRIG _IO (ME4000_MAGIC, 45)
946#define ME4000_AO_SYNCHRONOUS_SW _IO (ME4000_MAGIC, 46)
947#define ME4000_AO_SYNCHRONOUS_DISABLE _IO (ME4000_MAGIC, 47)
948
949#define ME4000_AO_EX_TRIG_TIMEOUT _IOW (ME4000_MAGIC, 48, unsigned long)
950#define ME4000_AO_GET_FREE_BUFFER _IOR (ME4000_MAGIC, 49, unsigned long)
951
952#define ME4000_AI_GET_COUNT_BUFFER _IOR (ME4000_MAGIC, 50, unsigned long)
953
954#endif
diff --git a/drivers/staging/me4000/me4000_firmware.h b/drivers/staging/me4000/me4000_firmware.h
new file mode 100644
index 00000000000..87c23f6757b
--- /dev/null
+++ b/drivers/staging/me4000/me4000_firmware.h
@@ -0,0 +1,10033 @@
1/*
2 This file is copyright by Meilhaus Electronic GmbH 2003.
3 You are not allowed to distribute, sell, modify, reverse engineer or use this
4 code (or parts of it) for any other purpose or under any other conditions
5 than stated below.
6
7 1) You are allowed to distribute verbatim copies of this file together
8 with device drivers for the Meilhaus ME-4000, board family.
9
10 2) Derived work (device drivers using this file) can be published under
11 the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version. Any other license terms have
14 to be agreed by Meilhaus GmbH in written.
15
16 2) This file is distributed WITHOUT ANY WARRANTY;
17 without even the implied warranty of MERCHANTABILITY
18 or FITNESS FOR A PARTICULAR PURPOSE. Meilhaus is under
19 no means liable for products using this file or parts of it.
20
21 3) The copyright of this file has to be mentioned in derived work.
22
23 4) If this license terms are not valid due to any other law
24 or restrictions imposed on you, you are not allowed to use
25 this file in any way at all.
26 */
27
28/* Version 18 of standard firmware */
29static unsigned char xilinx_firm[] = {
300x00, 0x01, 0xfb, 0xdc, 0x01, 0x01, 0x04, 0x00, 0x00, 0x09, 0x04, 0x02, 0x00,
310x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x99, 0xAA, 0x66, 0x0C, 0x00,
320x01, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x0C, 0x80, 0x06, 0x80, 0x00, 0x00, 0x00,
330xF0, 0x0C, 0x80, 0x04, 0x80, 0x00, 0x01, 0xFC, 0xB4, 0x0C, 0x00, 0x03, 0x80,
340x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x90, 0x0C,
350x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00,
360x00, 0x80, 0x0C, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x6E, 0x0D, 0x01, 0x49, 0x04,
370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
410x80, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00,
420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
460x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
510x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00,
520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
560x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00,
570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01,
610x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x00,
660x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
710x00, 0x00, 0x00, 0xFE, 0x4B, 0x02, 0x3E, 0x00, 0xEA, 0x00, 0xA8, 0x00, 0xA0,
720x0A, 0x80, 0x2A, 0x00, 0xAE, 0x00, 0xB8, 0x02, 0xA0, 0x02, 0x80, 0x28, 0x00,
730xAA, 0x00, 0xB8, 0x02, 0x60, 0x02, 0x80, 0x0B, 0x00, 0x26, 0x00, 0xB8, 0x00,
740xE0, 0x02, 0x80, 0x0B, 0x00, 0x2E, 0x00, 0xB8, 0x00, 0xE0, 0x02, 0x80, 0x0B,
750x00, 0xAE, 0x00, 0xB8, 0x02, 0x80, 0x0A, 0xFC, 0x23, 0x01, 0x00, 0x00, 0x00,
760x00, 0x00, 0x03, 0xA0, 0x5B, 0x00, 0xF3, 0x04, 0xCC, 0x01, 0xF2, 0x96, 0xC2,
770xDF, 0x30, 0xBB, 0x43, 0xD0, 0x73, 0xB0, 0x8F, 0xC0, 0x3D, 0x02, 0xFB, 0x48,
780xFC, 0x13, 0x30, 0x13, 0xC0, 0x4F, 0x02, 0x3F, 0x01, 0xDC, 0x13, 0xB0, 0x4F,
790xC0, 0x4F, 0x00, 0x3B, 0xC9, 0xCC, 0x04, 0xF2, 0x13, 0xC0, 0xFC, 0x00, 0xFB,
800xC9, 0x8C, 0x27, 0x30, 0x03, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
810x00, 0x01, 0x08, 0x57, 0x40, 0xE1, 0x08, 0x44, 0x03, 0xD0, 0x09, 0x40, 0x13,
820x01, 0xD1, 0x04, 0xC4, 0x1B, 0x10, 0x6D, 0x40, 0x3C, 0x02, 0xDD, 0x06, 0xF4,
830x0F, 0x10, 0x11, 0x40, 0x27, 0x11, 0x57, 0x81, 0xC4, 0x0F, 0xD0, 0xBF, 0x40,
840x64, 0x00, 0x51, 0x04, 0x44, 0x04, 0xD0, 0x11, 0x50, 0x34, 0x00, 0xD1, 0x00,
850x54, 0x11, 0x14, 0x19, 0x40, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
860x11, 0x00, 0x37, 0x00, 0xC1, 0x00, 0x04, 0x00, 0xD8, 0x48, 0x44, 0x21, 0x00,
870xC9, 0x00, 0x14, 0x03, 0xD0, 0xCC, 0x64, 0x33, 0x11, 0xCD, 0x06, 0x34, 0x23,
880x50, 0x00, 0x00, 0x02, 0x01, 0x8D, 0x00, 0x04, 0x23, 0xD0, 0x0C, 0x42, 0x01,
890x00, 0xC1, 0x00, 0x14, 0x00, 0xD0, 0x00, 0x44, 0x30, 0x09, 0xCD, 0x44, 0x44,
900x12, 0x10, 0x00, 0x44, 0x47, 0x88, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
910xA8, 0xB5, 0x01, 0xD1, 0x00, 0x44, 0x0A, 0xD8, 0x09, 0x40, 0x27, 0x00, 0xD1,
920x40, 0x44, 0x03, 0x50, 0x0D, 0x60, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x03, 0x50,
930x01, 0x40, 0x27, 0x10, 0xD5, 0x00, 0x44, 0x03, 0xCA, 0x0D, 0x40, 0x65, 0x00,
940xC1, 0x00, 0x44, 0xC6, 0xD0, 0x19, 0x40, 0x30, 0x00, 0xD1, 0x00, 0x54, 0x09,
950x14, 0x11, 0x40, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8,
960xE3, 0x00, 0xD3, 0x00, 0x4C, 0x0A, 0xF0, 0x0D, 0xC4, 0xF7, 0x00, 0x9B, 0x40,
970x5C, 0x03, 0xF2, 0x0D, 0xC6, 0x37, 0x10, 0xDB, 0x00, 0x74, 0x03, 0x70, 0xA1,
980x81, 0x37, 0x00, 0xCF, 0x03, 0x4C, 0x03, 0xF0, 0x0D, 0xC0, 0xC7, 0x01, 0x93,
990x00, 0x5D, 0x0C, 0xF0, 0x31, 0xC0, 0x34, 0x00, 0x5F, 0xC0, 0x0C, 0x07, 0x30,
1000x71, 0x80, 0x03, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D,
1010x08, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0xFF, 0x18, 0xFF, 0x04, 0xAC,
1020x03, 0xB1, 0x0D, 0xC8, 0x3D, 0x00, 0xFF, 0x80, 0x7C, 0x03, 0xB4, 0x13, 0xCA,
1030xFF, 0x00, 0xF7, 0x03, 0xE4, 0x43, 0xF0, 0x0E, 0xC1, 0x0E, 0x00, 0xFF, 0x00,
1040xFC, 0x40, 0xF0, 0x0B, 0xE2, 0x3F, 0x00, 0xFF, 0x83, 0xFD, 0x25, 0xF0, 0x0B,
1050xC0, 0x1E, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x25, 0x00,
1060xD3, 0x00, 0x4C, 0x0A, 0x30, 0x0D, 0xC0, 0xA4, 0x00, 0xD7, 0x00, 0x5C, 0x03,
1070xF0, 0x0D, 0xC0, 0x35, 0x00, 0xD7, 0x00, 0x0C, 0x03, 0x30, 0x41, 0xC4, 0x35,
1080x00, 0xD3, 0x02, 0x5C, 0x03, 0xF0, 0x0D, 0xC0, 0x05, 0x00, 0xDF, 0x00, 0x7C,
1090x0E, 0x30, 0x01, 0xC1, 0x37, 0x10, 0xD7, 0x04, 0x4C, 0x0B, 0x30, 0x21, 0xC0,
1100x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xF4, 0x01, 0xF5,
1110x00, 0x44, 0x2E, 0x10, 0x09, 0x40, 0x25, 0x00, 0xD1, 0x00, 0xC4, 0x03, 0x10,
1120x0F, 0xC0, 0x3E, 0x00, 0xF1, 0x00, 0xEC, 0x03, 0x10, 0x11, 0xC0, 0x35, 0x00,
1130xD1, 0x01, 0xDC, 0x07, 0x70, 0x2F, 0xC3, 0x23, 0x06, 0xDD, 0x20, 0x64, 0x02,
1140xB0, 0x38, 0x41, 0x37, 0x00, 0xD1, 0x03, 0x6C, 0x29, 0x50, 0xA9, 0x40, 0x4E,
1150x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x22, 0x01, 0xD1, 0x00,
1160x04, 0x29, 0x90, 0x04, 0x40, 0x24, 0x00, 0xD5, 0x00, 0x34, 0x03, 0x50, 0x0D,
1170x40, 0x33, 0x00, 0xCD, 0x00, 0x04, 0x03, 0x5D, 0x00, 0x40, 0x12, 0x20, 0x01,
1180x04, 0x10, 0x0B, 0xD0, 0x1C, 0x42, 0x21, 0x80, 0x0D, 0x40, 0x34, 0x08, 0x90,
1190x30, 0x40, 0x31, 0x10, 0xD5, 0x03, 0x04, 0x05, 0x18, 0x18, 0x44, 0x1F, 0x00,
1200x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x68, 0x00, 0xE5, 0x01, 0x84,
1210x07, 0x98, 0x1B, 0x40, 0x69, 0x80, 0xE1, 0x81, 0x24, 0x07, 0x10, 0x9E, 0x40,
1220x78, 0x80, 0xED, 0x01, 0xA4, 0x07, 0x50, 0x52, 0x61, 0x79, 0x00, 0x21, 0x19,
1230x90, 0x07, 0x51, 0x1C, 0x40, 0x6A, 0x00, 0x6D, 0x41, 0xA4, 0x06, 0xD2, 0x12,
1240x40, 0x7B, 0x00, 0xF1, 0x09, 0xE4, 0x45, 0x54, 0x1A, 0x40, 0x12, 0x00, 0x02,
1250x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x20, 0x02, 0xC3, 0x88, 0x44, 0x02,
1260xB0, 0x88, 0x40, 0x20, 0x00, 0xD7, 0x08, 0x34, 0x03, 0x70, 0x0C, 0x40, 0x37,
1270x02, 0xDD, 0x00, 0x04, 0x03, 0x71, 0x10, 0xC0, 0x16, 0x02, 0x01, 0x80, 0x1C,
1280xC3, 0xF0, 0x0C, 0x40, 0x21, 0x00, 0xCF, 0x09, 0x3C, 0x91, 0xB0, 0x88, 0xC0,
1290x37, 0x00, 0xC7, 0x10, 0x0C, 0x11, 0x38, 0x84, 0xC1, 0x4B, 0x40, 0x00, 0x00,
1300x00, 0x00, 0x00, 0x00, 0x02, 0xB0, 0x2D, 0x00, 0xFF, 0x02, 0xFC, 0x02, 0x60,
1310x0B, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xDC, 0x43, 0x70, 0x0F, 0xC0, 0x3F, 0x04,
1320xF3, 0x00, 0xFC, 0x0B, 0xB0, 0x02, 0xC0, 0x3F, 0x48, 0xFF, 0x00, 0x7C, 0x2B,
1330xF0, 0x8F, 0xC0, 0x2F, 0x00, 0xFF, 0x20, 0x3C, 0x03, 0x90, 0x09, 0xC0, 0x3F,
1340x00, 0xEE, 0x20, 0x7C, 0x01, 0xD4, 0x01, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00,
1350x00, 0x00, 0x00, 0x15, 0xA0, 0x27, 0x00, 0xDF, 0x0E, 0x7C, 0x00, 0xC0, 0x0D,
1360xC0, 0x75, 0x00, 0xD3, 0x00, 0x7C, 0x53, 0x70, 0x8D, 0xC6, 0xB4, 0x04, 0xDF,
1370x00, 0x7C, 0x13, 0xB0, 0x00, 0xC0, 0x34, 0x10, 0x07, 0x80, 0x5C, 0x13, 0x30,
1380x5C, 0xC1, 0x04, 0x00, 0x9F, 0x40, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0x37, 0x00,
1390x5F, 0x00, 0x4C, 0x01, 0x30, 0x09, 0xC0, 0x47, 0x00, 0x0E, 0x00, 0x00, 0x00,
1400x00, 0x00, 0x12, 0x88, 0x29, 0x00, 0xED, 0x04, 0xB4, 0x03, 0xD0, 0x0A, 0x40,
1410x3B, 0x00, 0xE1, 0x00, 0xB4, 0x13, 0xD0, 0x4F, 0x40, 0x3A, 0x11, 0xED, 0x00,
1420xB4, 0x03, 0xD0, 0x02, 0x40, 0x39, 0x00, 0xAD, 0x00, 0x04, 0x03, 0x10, 0x2E,
1430x40, 0x08, 0x08, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0A, 0x40, 0x3B, 0x00, 0xED,
1440x20, 0xC4, 0x01, 0x10, 0x0A, 0x40, 0x4B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
1450x00, 0x03, 0x00, 0x69, 0x00, 0xED, 0x01, 0xB4, 0x06, 0x90, 0x3E, 0x4C, 0x6F,
1460x10, 0xE1, 0x01, 0xB4, 0x17, 0xD0, 0x0E, 0x40, 0x7A, 0x00, 0xED, 0x0D, 0x94,
1470x27, 0xD0, 0x13, 0x41, 0x7A, 0x80, 0x6D, 0x01, 0x94, 0x37, 0x51, 0x5E, 0x40,
1480x6A, 0x04, 0xED, 0x01, 0xB4, 0x07, 0xD1, 0x1A, 0x48, 0x7B, 0x80, 0xAD, 0x01,
1490x84, 0x05, 0x14, 0x1E, 0x42, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
1500x12, 0x28, 0x23, 0x84, 0xCD, 0x00, 0x34, 0x2E, 0xD0, 0x08, 0x40, 0x23, 0x49,
1510xC1, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x32, 0x00, 0xCD, 0x00, 0x36, 0x03,
1520xD0, 0x0C, 0x40, 0x33, 0x11, 0xCD, 0x03, 0x04, 0x03, 0x50, 0x0C, 0x40, 0x70,
1530x00, 0xCD, 0x00, 0x34, 0x6F, 0xD2, 0x0C, 0x40, 0x33, 0x00, 0x8D, 0x44, 0x05,
1540x21, 0x14, 0x1C, 0x40, 0x4B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17,
1550xA8, 0xD9, 0x00, 0x5F, 0x00, 0xFC, 0x01, 0xB0, 0x07, 0xC4, 0xDF, 0x01, 0x53,
1560x00, 0x7C, 0x01, 0x78, 0x05, 0xC0, 0x14, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xB0,
1570x17, 0xC0, 0x9E, 0x01, 0x7F, 0x0E, 0x5C, 0x01, 0x74, 0x05, 0xC8, 0x1E, 0x00,
1580x7F, 0x02, 0xFC, 0x0D, 0xE0, 0x07, 0xC0, 0x17, 0x20, 0x7F, 0x07, 0xCC, 0x05,
1590x10, 0x07, 0xC1, 0x5F, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00,
1600x07, 0x02, 0x1F, 0x00, 0x3C, 0x40, 0xF0, 0x41, 0xC0, 0x07, 0x00, 0x1F, 0x60,
1610x7C, 0x00, 0xF0, 0x01, 0xC0, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01,
1620xC1, 0x05, 0x10, 0x1F, 0x00, 0x7C, 0x80, 0x91, 0x01, 0xD0, 0x87, 0x01, 0x1F,
1630x30, 0x70, 0x08, 0xF0, 0x41, 0xC0, 0x07, 0x18, 0x1F, 0x40, 0x7D, 0x00, 0xF0,
1640x11, 0xC0, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27,
1650x01, 0x9B, 0x00, 0x4D, 0x02, 0x30, 0x09, 0xC0, 0x25, 0x00, 0x9F, 0x00, 0x74,
1660x02, 0xF0, 0x09, 0xC0, 0x23, 0x40, 0x93, 0x00, 0x7C, 0x06, 0xF0, 0x09, 0xC0,
1670x24, 0x00, 0x9F, 0x00, 0x44, 0x02, 0x70, 0x09, 0xC4, 0x67, 0x02, 0x9D, 0x00,
1680x4C, 0x16, 0xF0, 0x19, 0xC0, 0x27, 0x80, 0x9F, 0x03, 0x4C, 0x22, 0x34, 0x08,
1690xC0, 0x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x66, 0x00,
1700x95, 0x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02,
1710xD0, 0x09, 0x40, 0x27, 0x00, 0x91, 0x00, 0x74, 0x06, 0xF0, 0xB8, 0x40, 0x24,
1720x00, 0x8D, 0x08, 0x01, 0x06, 0x30, 0x29, 0xC0, 0x27, 0x21, 0x8D, 0x00, 0x44,
1730x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x8D, 0x03, 0x6C, 0x1E, 0x54, 0x29, 0x40,
1740x05, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x81,
1750x00, 0x44, 0x22, 0x10, 0x08, 0x40, 0x35, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0,
1760x09, 0x40, 0x26, 0x00, 0x99, 0x00, 0x74, 0x22, 0xD0, 0x09, 0x60, 0x24, 0x80,
1770xDD, 0x80, 0x54, 0x12, 0x00, 0xA9, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x44, 0x02,
1780xD0, 0x4D, 0x43, 0x27, 0x00, 0x98, 0x10, 0x04, 0x02, 0x10, 0xA9, 0x40, 0x60,
1790x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0x85, 0x04,
1800x04, 0x1A, 0x14, 0x08, 0x40, 0x20, 0x20, 0x8D, 0x08, 0x34, 0x12, 0xD0, 0x88,
1810x64, 0x23, 0x01, 0x89, 0x08, 0x34, 0x12, 0xD0, 0x09, 0x40, 0x20, 0x02, 0xDD,
1820x00, 0x14, 0x02, 0x14, 0x08, 0x44, 0x23, 0x00, 0x9D, 0x08, 0x04, 0x02, 0xD8,
1830x08, 0x42, 0x23, 0x02, 0x9D, 0x08, 0x24, 0x22, 0x10, 0x48, 0x40, 0x41, 0x88,
1840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x13, 0x0A, 0x4C,
1850x09, 0x30, 0xA1, 0xC0, 0x85, 0x02, 0x1D, 0x02, 0x7C, 0x28, 0xF0, 0x61, 0xC1,
1860x87, 0x02, 0x19, 0x16, 0x74, 0x00, 0xF0, 0x05, 0xC0, 0x84, 0x00, 0x1F, 0x00,
1870x5C, 0x51, 0x70, 0x41, 0x45, 0x07, 0x10, 0x1F, 0x02, 0x4D, 0x01, 0xF0, 0x01,
1880xC4, 0x87, 0x00, 0x0D, 0x02, 0x4C, 0x88, 0x30, 0x01, 0xC4, 0x74, 0xC0, 0x0A,
1890x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x2F, 0x00, 0x9F, 0x08, 0xFC, 0x0A,
1900xF0, 0x0B, 0xC0, 0x2B, 0x00, 0xBF, 0x04, 0x7C, 0x22, 0xF0, 0x49, 0xC0, 0x27,
1910x02, 0x93, 0x04, 0x7C, 0x22, 0x70, 0x0B, 0xD0, 0x2F, 0x01, 0xBF, 0x00, 0x6C,
1920x02, 0x70, 0x09, 0xC0, 0x2D, 0x10, 0xBF, 0x04, 0xFC, 0x02, 0xF0, 0x0B, 0xC0,
1930x27, 0x01, 0xBF, 0x84, 0xFC, 0x12, 0xF0, 0x8B, 0xC0, 0x67, 0x60, 0x0E, 0x00,
1940x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F, 0x00, 0x93, 0x8C, 0xE8, 0x02, 0xF0,
1950x09, 0xC0, 0x27, 0x02, 0x93, 0x60, 0x7C, 0x52, 0x30, 0xC9, 0xC0, 0x25, 0x00,
1960x9B, 0x00, 0xDC, 0x02, 0xF0, 0x0B, 0xC0, 0x27, 0x00, 0xBF, 0x00, 0xCC, 0x02,
1970xB0, 0x0B, 0xC0, 0x2B, 0x28, 0x9F, 0x40, 0xBC, 0x02, 0xF0, 0x0F, 0xC0, 0x24,
1980x20, 0xBF, 0x40, 0xCC, 0x02, 0x30, 0x0B, 0xC0, 0x60, 0x00, 0x0E, 0x00, 0x00,
1990x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00, 0x11, 0x0C, 0x44, 0x49, 0xD0, 0x01,
2000x41, 0x07, 0x00, 0x11, 0x14, 0x74, 0x10, 0x10, 0xC1, 0x48, 0x84, 0x04, 0x11,
2010x10, 0x44, 0x20, 0xD2, 0x01, 0x40, 0x07, 0x01, 0x1D, 0x00, 0x50, 0x08, 0x14,
2020x01, 0x40, 0x17, 0x00, 0x1D, 0x14, 0x64, 0x00, 0xD0, 0x01, 0x40, 0x05, 0x0C,
2030x5D, 0x90, 0x54, 0x00, 0x14, 0x01, 0x50, 0x70, 0x20, 0x0C, 0x00, 0x00, 0x00,
2040x00, 0x00, 0x10, 0xA0, 0x27, 0x40, 0x81, 0x04, 0x34, 0x32, 0xD0, 0x08, 0x40,
2050x27, 0x40, 0x85, 0x04, 0x34, 0x52, 0x10, 0x48, 0x40, 0x21, 0x03, 0x89, 0x08,
2060x14, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x05, 0x9D, 0x00, 0x04, 0x22, 0x12, 0x8C,
2070x42, 0x23, 0x00, 0x8D, 0x04, 0x34, 0x02, 0x50, 0x09, 0x40, 0x23, 0x01, 0x8D,
2080x00, 0x44, 0x02, 0x10, 0x08, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
2090x00, 0x18, 0xA8, 0x25, 0x04, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x69, 0x60, 0x27,
2100x00, 0x95, 0x00, 0x34, 0x02, 0x10, 0x09, 0x60, 0x21, 0x00, 0x91, 0x00, 0x44,
2110x02, 0xD0, 0x29, 0x40, 0x27, 0x80, 0x9C, 0x02, 0x54, 0x02, 0x10, 0x09, 0x40,
2120x27, 0x00, 0x9D, 0x00, 0x64, 0x0A, 0xD0, 0x29, 0x40, 0x27, 0x80, 0x8D, 0x08,
2130x54, 0x12, 0x12, 0x19, 0x40, 0x60, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
2140x05, 0xA8, 0x27, 0x00, 0x93, 0x00, 0x7C, 0x0E, 0xF0, 0x39, 0xE0, 0x27, 0x21,
2150x97, 0x00, 0x7C, 0x02, 0x30, 0x09, 0xC2, 0x25, 0x00, 0x9B, 0x00, 0x5C, 0x02,
2160xF0, 0x29, 0xC0, 0x27, 0x00, 0x9F, 0x03, 0x4C, 0x02, 0xB0, 0x09, 0xC0, 0x67,
2170x00, 0x9F, 0x24, 0x7C, 0x02, 0xF8, 0x88, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x4C,
2180x02, 0x30, 0x59, 0xC0, 0x14, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
2190x00, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x56, 0xF0, 0x19, 0xC0, 0x67, 0x01, 0x9B,
2200x04, 0x7C, 0x02, 0xF4, 0x08, 0xCC, 0x26, 0x00, 0x8F, 0x00, 0x7C, 0x02, 0xF0,
2210x39, 0xC2, 0x27, 0x00, 0x9F, 0x02, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x01,
2220x9F, 0x05, 0x7C, 0x22, 0xF0, 0x19, 0xC2, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02,
2230xF0, 0x08, 0xC0, 0x53, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08,
2240x05, 0x00, 0x0F, 0x00, 0x5C, 0x08, 0xF0, 0x21, 0xC0, 0x85, 0x00, 0x1F, 0x00,
2250x7C, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x21,
2260xC1, 0x07, 0x00, 0x1B, 0x06, 0x4C, 0x40, 0xF0, 0x01, 0xC1, 0x04, 0x01, 0x13,
2270x02, 0x7C, 0x00, 0xB0, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x00, 0x4C, 0x20, 0x31,
2280x21, 0x80, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x18,
2290x00, 0x5D, 0x00, 0xC0, 0x05, 0x70, 0x05, 0x40, 0x10, 0x00, 0x5C, 0x00, 0x74,
2300x01, 0xD0, 0x05, 0xC0, 0x15, 0x00, 0x5D, 0x00, 0x74, 0x45, 0xD0, 0x07, 0xC0,
2310x15, 0x00, 0x61, 0x00, 0xDC, 0x4D, 0x70, 0x07, 0x40, 0xDD, 0x40, 0x51, 0x00,
2320xF4, 0x3D, 0x10, 0x77, 0x40, 0x17, 0x40, 0x71, 0x00, 0x84, 0x0D, 0xF0, 0xA7,
2330xC0, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x22, 0x20,
2340xCD, 0x80, 0x10, 0x0F, 0x50, 0x0C, 0x40, 0x33, 0x80, 0xCC, 0x00, 0x34, 0x03,
2350xD0, 0x0C, 0x00, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x02, 0xD0, 0xBC, 0x40, 0x33,
2360x00, 0xC9, 0x01, 0x24, 0x07, 0x50, 0x0C, 0x40, 0xF0, 0x00, 0xC1, 0x20, 0x34,
2370x07, 0x10, 0x4C, 0x60, 0x33, 0x90, 0xC9, 0x00, 0x04, 0x4F, 0x10, 0x2C, 0x42,
2380x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x00, 0xCD,
2390x04, 0x84, 0x0B, 0x50, 0x1E, 0x40, 0x3A, 0x03, 0xED, 0x08, 0xB4, 0x03, 0xD0,
2400x8E, 0x40, 0x39, 0xA1, 0xED, 0x00, 0xB4, 0x02, 0xD0, 0x0E, 0x40, 0x7D, 0x00,
2410xFD, 0x42, 0x90, 0x03, 0x50, 0x18, 0x40, 0xFD, 0x10, 0xE1, 0x04, 0xF4, 0x06,
2420x10, 0x0E, 0x40, 0x7B, 0x00, 0xE9, 0x00, 0xC5, 0x01, 0x90, 0x0C, 0x60, 0x12,
2430x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x68, 0x00, 0xEF, 0x07,
2440x94, 0x07, 0x70, 0x1F, 0xC8, 0x7B, 0x00, 0xEF, 0x05, 0xB4, 0x0F, 0xF0, 0x1E,
2450x40, 0x7B, 0x04, 0xED, 0x01, 0xBC, 0x07, 0xF2, 0x1A, 0xC8, 0x7B, 0x24, 0xFB,
2460x01, 0xAC, 0x84, 0x70, 0x1A, 0xC0, 0x78, 0x00, 0xE1, 0x09, 0xB4, 0x06, 0x34,
2470x1E, 0xC4, 0x7F, 0x08, 0x79, 0x01, 0xCC, 0x06, 0x32, 0x16, 0xC0, 0x50, 0x40,
2480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x25, 0x10, 0xDF, 0x02, 0x7C,
2490x03, 0x70, 0xED, 0xC8, 0xB5, 0x21, 0xDF, 0x00, 0x7C, 0x43, 0xF0, 0x0D, 0xC8,
2500x37, 0x02, 0xDF, 0x88, 0x7C, 0x03, 0xD0, 0x09, 0xC0, 0x33, 0x01, 0x93, 0x80,
2510x7C, 0x01, 0x60, 0x01, 0xC0, 0x17, 0x00, 0xDF, 0x2A, 0x7C, 0x00, 0x60, 0x09,
2520xC0, 0xB7, 0x06, 0x97, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC2, 0x43, 0x60, 0x06,
2530x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x6F, 0x00, 0xFF, 0x03, 0xC8, 0x21,
2540xE0, 0x3E, 0xC2, 0xFC, 0x12, 0xFF, 0x09, 0xEC, 0x07, 0x30, 0x1F, 0xC0, 0x7F,
2550x02, 0xFB, 0x01, 0xDC, 0x27, 0xF0, 0x9F, 0xC0, 0x7D, 0x04, 0xB3, 0x41, 0xBC,
2560x27, 0xB0, 0x13, 0xC0, 0x7F, 0x00, 0xFF, 0x21, 0xFC, 0x06, 0xF0, 0x1F, 0xC0,
2570x7F, 0x00, 0xFF, 0x01, 0xBC, 0x87, 0x30, 0x1F, 0xC0, 0x0B, 0x00, 0x0E, 0x00,
2580x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x39, 0x10, 0xFD, 0x04, 0x84, 0x01, 0xF0,
2590x0E, 0xC1, 0x3A, 0x00, 0xED, 0x00, 0xEC, 0x03, 0x15, 0x8E, 0x48, 0x3B, 0x40,
2600xF1, 0x00, 0x84, 0x23, 0xD0, 0xA8, 0x40, 0x3B, 0x20, 0x21, 0x00, 0xB4, 0x29,
2610x10, 0x62, 0x40, 0x3B, 0x00, 0xDF, 0x00, 0x84, 0x02, 0xF0, 0x0E, 0x40, 0x3B,
2620x02, 0xED, 0x08, 0xBC, 0x01, 0xB0, 0x0E, 0x41, 0x57, 0x20, 0x06, 0x00, 0x00,
2630x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0xED, 0x00, 0x86, 0x63, 0xD8, 0x0F,
2640x40, 0x38, 0x80, 0xFD, 0x40, 0x84, 0x23, 0x90, 0x0E, 0x40, 0x33, 0x10, 0xE1,
2650x00, 0xB4, 0x23, 0xD2, 0x22, 0x60, 0x39, 0x00, 0xA5, 0x00, 0xB4, 0x00, 0x12,
2660x02, 0x40, 0x2A, 0x00, 0xED, 0x10, 0x94, 0x02, 0xD0, 0x06, 0x40, 0x3B, 0x00,
2670x6D, 0x00, 0xF4, 0x02, 0x10, 0x06, 0x40, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00,
2680x00, 0x00, 0x06, 0x28, 0x23, 0x00, 0xCD, 0x00, 0x04, 0x06, 0x58, 0x3C, 0x40,
2690x32, 0x00, 0xCD, 0x08, 0x24, 0x03, 0x90, 0x0C, 0x42, 0x33, 0x20, 0xC1, 0x00,
2700x16, 0x03, 0xD0, 0x00, 0x40, 0xB3, 0x00, 0x05, 0x0B, 0x36, 0x01, 0x10, 0x00,
2710x40, 0x03, 0x10, 0xCD, 0x40, 0x04, 0x10, 0x51, 0x00, 0x40, 0x33, 0x00, 0x9D,
2720x12, 0x14, 0xAF, 0x90, 0x50, 0x00, 0x1B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
2730x00, 0x15, 0xA8, 0x25, 0x01, 0xFF, 0x00, 0x4D, 0x22, 0xD0, 0x3F, 0xC0, 0x3C,
2740x00, 0xFF, 0x00, 0xCC, 0x03, 0xB0, 0x0F, 0xC0, 0x3F, 0x00, 0xF3, 0x00, 0x1C,
2750x02, 0xF0, 0x25, 0xC0, 0xBD, 0x02, 0x57, 0x0B, 0x7C, 0x03, 0x11, 0x09, 0xC0,
2760xF7, 0x02, 0xEF, 0x00, 0x5C, 0x0A, 0xD0, 0x9D, 0x40, 0x3F, 0x00, 0x9F, 0x02,
2770x70, 0x03, 0x10, 0x21, 0xC0, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
2780x01, 0x00, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x0A, 0xF0, 0x4D, 0xC4, 0x37, 0x10,
2790xDF, 0x80, 0x7C, 0x83, 0x70, 0x0D, 0xC8, 0x37, 0x00, 0xD7, 0x80, 0x64, 0x02,
2800xF0, 0x3D, 0xC0, 0x37, 0x48, 0x5A, 0x00, 0x7C, 0x03, 0x70, 0x29, 0xC0, 0x67,
2810x00, 0xD7, 0x00, 0x5C, 0x0A, 0xF0, 0x15, 0xC4, 0x37, 0x20, 0x5F, 0x02, 0x7C,
2820x09, 0xF0, 0x29, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
2830x08, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0x30, 0x0F, 0xC0, 0x3D, 0x00, 0xFF,
2840x00, 0xFE, 0x03, 0xF2, 0x0F, 0xC2, 0x3F, 0x80, 0xFF, 0x00, 0xFC, 0x03, 0xB1,
2850x17, 0xC2, 0x3F, 0x00, 0xF3, 0x01, 0xFC, 0x06, 0xF0, 0x0B, 0xC0, 0x7F, 0x00,
2860xFF, 0x00, 0xCC, 0x02, 0xD0, 0x8F, 0xC0, 0x3F, 0x00, 0x31, 0x00, 0xCC, 0x62,
2870x30, 0x03, 0xC0, 0x03, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20,
2880x56, 0x00, 0xDD, 0x00, 0x34, 0x0E, 0xD0, 0x0D, 0x40, 0x37, 0x80, 0xDD, 0x00,
2890x74, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0xA0, 0xDF, 0x20, 0x74, 0x03, 0x31, 0x9D,
2900xC0, 0x31, 0x00, 0x91, 0x0A, 0x74, 0x0F, 0x78, 0x11, 0x40, 0x87, 0x01, 0xDD,
2910x00, 0x6C, 0x44, 0x70, 0x01, 0x41, 0x37, 0x00, 0x13, 0x0F, 0x14, 0x44, 0x10,
2920x39, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xA6,
2930x02, 0xDD, 0x00, 0x74, 0x0C, 0x90, 0x0D, 0x40, 0x37, 0x00, 0xDD, 0x80, 0x74,
2940x03, 0xD2, 0x0D, 0x48, 0x37, 0x00, 0xDD, 0x00, 0x74, 0x03, 0x90, 0x05, 0x40,
2950x37, 0x00, 0x55, 0x82, 0x74, 0x12, 0xD0, 0x19, 0x40, 0x17, 0x02, 0xD9, 0x00,
2960x44, 0x04, 0xD0, 0x09, 0x42, 0x33, 0x00, 0x95, 0x00, 0x44, 0x03, 0x10, 0x19,
2970x41, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00,
2980xCD, 0x00, 0x74, 0x00, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x36, 0x03,
2990xD0, 0x0C, 0x40, 0x33, 0x20, 0xC5, 0x00, 0x34, 0x03, 0x10, 0x88, 0x48, 0x35,
3000x00, 0x45, 0x00, 0x34, 0x00, 0x58, 0x08, 0x60, 0x03, 0x00, 0xDD, 0x00, 0x25,
3010x00, 0x50, 0x00, 0x48, 0x33, 0x40, 0x45, 0x00, 0x44, 0x00, 0x11, 0x08, 0x40,
3020x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, 0x00, 0xFF,
3030x00, 0x7C, 0x00, 0x10, 0x0F, 0xC0, 0x3D, 0x00, 0xDD, 0x00, 0xF4, 0x03, 0xF0,
3040x0D, 0xC0, 0x3F, 0x00, 0xDD, 0x00, 0x7E, 0x03, 0xB0, 0x05, 0x48, 0x3B, 0x00,
3050xD5, 0x00, 0x7C, 0x02, 0xD0, 0x09, 0xC0, 0x07, 0x00, 0xFF, 0x08, 0x4C, 0x00,
3060xF0, 0x01, 0xC0, 0x3F, 0x00, 0x17, 0x00, 0x4D, 0x00, 0x30, 0x09, 0xC0, 0x03,
3070x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x1F, 0x00, 0xFF, 0x00,
3080xFC, 0x02, 0x70, 0x0F, 0xC0, 0x3F, 0x00, 0xEF, 0x80, 0xFC, 0x03, 0xF0, 0x0F,
3090xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0x71, 0x43, 0xC0, 0x3D, 0x00, 0x3B,
3100x00, 0xFC, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0xDC, 0x00, 0x78,
3110x03, 0xC0, 0x3F, 0x00, 0x33, 0x00, 0xFF, 0x80, 0xF0, 0x0B, 0xC2, 0x17, 0x60,
3120x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x04, 0x33, 0x01, 0xC4,
3130x02, 0xB8, 0x0B, 0xC0, 0xBF, 0x01, 0xFB, 0x2C, 0xEC, 0x8E, 0x70, 0x2F, 0xC0,
3140x4F, 0x00, 0xF7, 0x18, 0x8C, 0x24, 0xF0, 0x4F, 0xC1, 0x4F, 0x02, 0xFF, 0x44,
3150xDC, 0x27, 0x30, 0x8F, 0xC0, 0x3F, 0x00, 0xE7, 0x00, 0xEC, 0x04, 0xF0, 0x0F,
3160xC0, 0x6C, 0x00, 0xFB, 0x10, 0x9C, 0x52, 0xF0, 0x13, 0xC0, 0x0C, 0x00, 0x0E,
3170x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x87, 0x00, 0x11, 0x00, 0x6C, 0x02,
3180xF0, 0x09, 0x40, 0xBF, 0x00, 0xF1, 0x02, 0x4C, 0x13, 0x10, 0x8F, 0x40, 0x67,
3190x08, 0xF1, 0x02, 0x44, 0x10, 0xD2, 0x3F, 0xC2, 0x23, 0x08, 0xF1, 0x03, 0x44,
3200x13, 0x04, 0x6F, 0x40, 0xFC, 0x20, 0xF1, 0x0B, 0x44, 0x04, 0xD1, 0x3F, 0xC0,
3210x44, 0x00, 0xD5, 0x43, 0x74, 0x04, 0xD0, 0x15, 0xC0, 0x06, 0x20, 0x0C, 0x00,
3220x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x03, 0x00, 0x01, 0x00, 0x15, 0x00, 0x92,
3230x08, 0x42, 0x33, 0x03, 0xC9, 0x0C, 0x34, 0x03, 0x50, 0x4C, 0x44, 0x07, 0x80,
3240xC5, 0x20, 0x04, 0x12, 0xD0, 0x0C, 0x42, 0x13, 0x10, 0xC9, 0x02, 0x14, 0x03,
3250x10, 0x2C, 0x40, 0xB1, 0x00, 0xC5, 0x00, 0x07, 0x00, 0x50, 0x2C, 0x40, 0x26,
3260x00, 0xC1, 0x20, 0x34, 0x02, 0xD0, 0x05, 0x40, 0x44, 0x80, 0x0E, 0x00, 0x00,
3270x00, 0x00, 0x00, 0x03, 0xA8, 0x41, 0x04, 0x01, 0x01, 0x54, 0x0E, 0x50, 0x19,
3280x40, 0x37, 0x00, 0xD1, 0x00, 0x44, 0x03, 0x10, 0x0D, 0x40, 0x47, 0x00, 0xD1,
3290x00, 0x44, 0x0C, 0xD0, 0x0D, 0x40, 0x25, 0x04, 0xD5, 0x00, 0x44, 0x03, 0x18,
3300x0D, 0x08, 0x34, 0x00, 0xD1, 0x00, 0x64, 0x04, 0xD0, 0x0D, 0x40, 0x64, 0x00,
3310xD5, 0x00, 0x74, 0x06, 0xD0, 0x35, 0x40, 0x0E, 0x20, 0x06, 0x00, 0x00, 0x00,
3320x00, 0x00, 0x02, 0xA8, 0xC7, 0x00, 0x13, 0x03, 0x54, 0x0C, 0x90, 0x51, 0xC0,
3330x37, 0x00, 0xDB, 0x00, 0x7C, 0x03, 0x70, 0x0D, 0xC4, 0x43, 0x00, 0xD7, 0x00,
3340x4C, 0x0E, 0xF0, 0x0D, 0x48, 0x97, 0x02, 0xDF, 0x00, 0x5C, 0x03, 0x32, 0x0D,
3350xC0, 0x37, 0x10, 0xD7, 0x00, 0x6E, 0x44, 0xF0, 0x0D, 0xD0, 0x62, 0x00, 0xDB,
3360x00, 0x5C, 0x16, 0xF2, 0x1D, 0xE0, 0x08, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
3370x00, 0x07, 0x80, 0x05, 0x00, 0x3F, 0x00, 0x6D, 0x80, 0xF0, 0x03, 0xC0, 0x3F,
3380x00, 0xEF, 0x00, 0xEC, 0x03, 0xF8, 0x0D, 0xC0, 0x2F, 0x80, 0xEB, 0x40, 0xFC,
3390x00, 0xF2, 0x0F, 0xC0, 0x4F, 0x00, 0xEB, 0x00, 0xFC, 0x03, 0xF0, 0x0E, 0xC0,
3400x3B, 0x04, 0xFD, 0x80, 0xDC, 0x40, 0xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xFF, 0x00,
3410xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
3420x02, 0x08, 0x85, 0x00, 0x1B, 0x00, 0x4D, 0x08, 0x30, 0x09, 0xC3, 0x33, 0x00,
3430xDF, 0x00, 0x5C, 0x03, 0x70, 0x0D, 0xC0, 0x85, 0x00, 0xDF, 0x00, 0x4C, 0x0A,
3440x30, 0x0D, 0xC6, 0x16, 0x00, 0xD3, 0x10, 0x5C, 0x03, 0xF0, 0x0D, 0xC0, 0x36,
3450x00, 0xDF, 0x20, 0x4C, 0x08, 0x70, 0x0C, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7E,
3460x42, 0x70, 0x2D, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
3470xA0, 0x04, 0x00, 0x11, 0x01, 0x44, 0x4E, 0x00, 0x69, 0x40, 0x3F, 0x10, 0xFD,
3480x00, 0x4C, 0x03, 0x10, 0x0F, 0x40, 0xA4, 0x03, 0xFD, 0x00, 0x44, 0x00, 0x12,
3490x0F, 0x40, 0x24, 0x00, 0xF0, 0x03, 0x54, 0x03, 0xD0, 0x0F, 0x40, 0x7C, 0x04,
3500xED, 0x00, 0x45, 0x04, 0xD0, 0x1F, 0x40, 0x47, 0x00, 0xFD, 0x00, 0x74, 0x0E,
3510x10, 0x0D, 0x43, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0,
3520x42, 0x00, 0x09, 0x24, 0x00, 0x46, 0x90, 0x00, 0x40, 0x33, 0x20, 0xC9, 0x00,
3530x52, 0x02, 0xD0, 0x0C, 0x48, 0xA1, 0x00, 0xCC, 0x00, 0x14, 0x00, 0x10, 0x0C,
3540x48, 0x27, 0x60, 0xC1, 0x01, 0x44, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD,
3550x04, 0x24, 0x04, 0xD0, 0x8C, 0x49, 0x23, 0x12, 0xCD, 0x00, 0x16, 0x04, 0x51,
3560x0D, 0x41, 0x1C, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x48,
3570x24, 0x21, 0x01, 0x84, 0x07, 0x18, 0x1E, 0x40, 0x7B, 0x00, 0xCD, 0x01, 0x94,
3580x07, 0x90, 0x9E, 0x40, 0x78, 0xA0, 0xED, 0x01, 0xD4, 0x04, 0x14, 0x1E, 0x40,
3590x69, 0x00, 0xE1, 0x11, 0x94, 0x07, 0xC0, 0x1C, 0x40, 0x79, 0x00, 0xED, 0x95,
3600x84, 0x05, 0xD2, 0x1E, 0x40, 0x4B, 0x00, 0xED, 0x09, 0xB6, 0x44, 0x10, 0x1F,
3610x40, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x00, 0x00,
3620x1B, 0x10, 0x0D, 0x21, 0xB0, 0x04, 0xC0, 0x33, 0x00, 0xCF, 0x00, 0x5C, 0x03,
3630xF0, 0x0C, 0xC8, 0x81, 0x00, 0xDE, 0x00, 0x1C, 0x03, 0x30, 0x0C, 0xC0, 0x33,
3640x03, 0xC3, 0x80, 0x1C, 0x83, 0xF0, 0x4C, 0xC0, 0x33, 0x00, 0xCF, 0x00, 0x0C,
3650x40, 0x70, 0x0C, 0xE4, 0x23, 0x22, 0xCF, 0x00, 0x1E, 0x14, 0x70, 0x0C, 0xC0,
3660x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x2D, 0x12, 0x7F,
3670x08, 0xFC, 0x03, 0x54, 0x0F, 0xC0, 0x3F, 0x80, 0xFF, 0x02, 0xEC, 0x03, 0x70,
3680x0F, 0xC3, 0x1F, 0x00, 0xFF, 0x08, 0xEC, 0x03, 0xF0, 0x2E, 0xC4, 0x3E, 0x02,
3690xEF, 0x10, 0xF8, 0x23, 0xF0, 0x0F, 0xC1, 0x3E, 0x00, 0xFF, 0x06, 0xDC, 0x01,
3700xF0, 0x0F, 0xC0, 0x2F, 0x08, 0xFF, 0x20, 0xFE, 0x20, 0xF2, 0x0C, 0xC0, 0x0B,
3710x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x07, 0x00, 0x03, 0x00,
3720x4C, 0x03, 0xF0, 0x05, 0xC0, 0xB7, 0x01, 0xDB, 0x0E, 0x7C, 0x03, 0xF0, 0x5D,
3730xC1, 0x24, 0x00, 0xDF, 0x86, 0x7C, 0x86, 0x70, 0x3D, 0xC0, 0x16, 0x00, 0xDF,
3740x10, 0x7C, 0x03, 0xF0, 0x4D, 0xC1, 0x36, 0x01, 0xDF, 0x01, 0x4C, 0x00, 0xF0,
3750xAC, 0xC0, 0x24, 0x00, 0xDF, 0x01, 0x4C, 0x06, 0x30, 0x0D, 0xC0, 0x54, 0x00,
3760x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x09, 0x08, 0x21, 0x00, 0x84,
3770x03, 0xD0, 0x0E, 0x40, 0xBB, 0x0D, 0xE1, 0x00, 0x9C, 0x03, 0xD0, 0x4E, 0x50,
3780x38, 0x80, 0xED, 0x12, 0xB4, 0x02, 0x10, 0x0E, 0x40, 0x18, 0x00, 0xED, 0x04,
3790xB0, 0x83, 0xD0, 0x4E, 0x42, 0xB8, 0x82, 0xCD, 0x04, 0xA5, 0x01, 0xD0, 0x4E,
3800x49, 0x29, 0x00, 0xED, 0x00, 0x94, 0x00, 0x11, 0x0E, 0xC0, 0x4A, 0x20, 0x06,
3810x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x49, 0x04, 0x21, 0x01, 0x84, 0x0D,
3820xD0, 0x16, 0x41, 0x73, 0x01, 0xE9, 0x05, 0x94, 0x07, 0xD0, 0x5E, 0x40, 0x68,
3830x00, 0xED, 0x05, 0xB4, 0x07, 0x50, 0x9C, 0x50, 0x79, 0x80, 0xED, 0x01, 0xB4,
3840x87, 0x58, 0x1E, 0x40, 0x78, 0x00, 0xED, 0x08, 0xA4, 0x04, 0x50, 0x1E, 0x40,
3850x78, 0x00, 0xCD, 0x01, 0x04, 0x06, 0x10, 0x1F, 0x40, 0x0C, 0x00, 0x04, 0x00,
3860x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x77, 0x20, 0xD1, 0x04, 0x04, 0x07, 0xD0,
3870x3C, 0x41, 0x33, 0x00, 0xC1, 0x40, 0x14, 0xA7, 0xD8, 0x0C, 0x40, 0xB0, 0x00,
3880xCD, 0x00, 0x34, 0x0B, 0x10, 0x0C, 0x40, 0x71, 0x83, 0xCD, 0x00, 0x34, 0x03,
3890xD9, 0x0D, 0x50, 0x30, 0x00, 0xDD, 0x00, 0x24, 0x4B, 0xD1, 0x0C, 0x48, 0x11,
3900x14, 0xCD, 0x00, 0x16, 0x27, 0x10, 0x0C, 0x40, 0x4A, 0x20, 0x0C, 0x00, 0x00,
3910x00, 0x00, 0x00, 0x17, 0xA8, 0x5D, 0x40, 0x73, 0x00, 0xCD, 0x0D, 0xF0, 0x07,
3920xC0, 0x17, 0x00, 0x5B, 0x00, 0x5C, 0x01, 0xF0, 0x05, 0xC0, 0x18, 0x02, 0x5F,
3930x00, 0xFC, 0x01, 0x70, 0x05, 0xC0, 0x5D, 0x18, 0x5F, 0x00, 0x7C, 0x01, 0xF0,
3940x05, 0xC0, 0x14, 0x00, 0x5D, 0x80, 0xC5, 0x01, 0xF8, 0x05, 0xC0, 0x5C, 0x00,
3950x5F, 0x00, 0xCC, 0x01, 0x30, 0x67, 0xC0, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00,
3960x00, 0x00, 0x12, 0x00, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x10, 0xF0, 0x01, 0xC0,
3970x07, 0x00, 0x1F, 0x00, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00,
3980x7C, 0x00, 0xF0, 0x01, 0x40, 0x04, 0x20, 0x1F, 0x82, 0x7C, 0x00, 0xF0, 0x01,
3990xC0, 0x01, 0x00, 0x1F, 0x02, 0x5C, 0x80, 0xF0, 0x21, 0xC0, 0x07, 0x02, 0x1F,
4000x00, 0x7C, 0x8C, 0xF0, 0x01, 0xC1, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
4010x00, 0x10, 0x08, 0x67, 0x02, 0x93, 0x00, 0x4C, 0x0E, 0xF0, 0x39, 0xC0, 0x27,
4020x00, 0x97, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x02, 0x93, 0x00, 0x7C,
4030x42, 0xF0, 0x29, 0xC0, 0x27, 0x00, 0x9F, 0x02, 0x7C, 0x02, 0xB2, 0x09, 0xC2,
4040xE5, 0x00, 0x97, 0x05, 0x4C, 0x02, 0xF0, 0x08, 0xD0, 0x24, 0x00, 0x9F, 0x00,
4050x5E, 0x02, 0xF0, 0x29, 0xC0, 0x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
4060x01, 0x20, 0xE6, 0x60, 0x91, 0x03, 0x44, 0x06, 0xD0, 0x19, 0x40, 0x27, 0x00,
4070x91, 0x00, 0x5C, 0x02, 0xD0, 0x09, 0x46, 0x27, 0x00, 0x95, 0x00, 0x74, 0x02,
4080xD0, 0x19, 0x40, 0x27, 0x00, 0x9D, 0x03, 0x74, 0x02, 0x10, 0x09, 0x48, 0xE4,
4090x04, 0x91, 0x00, 0x44, 0x26, 0xD1, 0x49, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x74,
4100x4E, 0xD2, 0x18, 0xC0, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
4110xA0, 0x24, 0x04, 0xD1, 0x08, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x23, 0x00, 0x95,
4120x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x04, 0x99, 0x00, 0x74, 0x02, 0xD0,
4130x09, 0x40, 0x27, 0x00, 0x95, 0x02, 0x34, 0x02, 0x90, 0x09, 0x60, 0x25, 0x00,
4140x95, 0x40, 0x46, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x01, 0x9D, 0x00, 0x54, 0x22,
4150xD0, 0x09, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
4160x20, 0x01, 0x81, 0x00, 0x04, 0x13, 0xD0, 0xC8, 0x40, 0x23, 0x11, 0x81, 0x0C,
4170x14, 0x22, 0xD0, 0x48, 0x40, 0x23, 0x00, 0x85, 0x04, 0x34, 0x22, 0xD0, 0x48,
4180x60, 0x23, 0x02, 0x8D, 0x00, 0x34, 0x22, 0x10, 0x88, 0x40, 0x20, 0x08, 0x91,
4190x00, 0x04, 0x06, 0xD0, 0x08, 0x40, 0x20, 0x00, 0x8D, 0x04, 0x34, 0x12, 0xD0,
4200x08, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x82,
4210x02, 0x53, 0x0A, 0x4D, 0x30, 0xF0, 0x45, 0xC1, 0x87, 0x02, 0x17, 0x02, 0x7C,
4220x08, 0xF0, 0xA0, 0xC0, 0x07, 0x08, 0x13, 0x0A, 0x3C, 0x08, 0xF0, 0x01, 0xC0,
4230x87, 0x00, 0x17, 0x14, 0x7C, 0x08, 0xB0, 0x60, 0xC1, 0x05, 0x85, 0x56, 0x14,
4240x44, 0x00, 0xF0, 0x41, 0xD1, 0x04, 0x00, 0x1F, 0x14, 0x5C, 0x00, 0xF0, 0x01,
4250xD0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x90, 0x2F, 0x22,
4260xBF, 0x00, 0xFC, 0x33, 0xF0, 0x4B, 0xC0, 0x27, 0x02, 0x9F, 0x0C, 0xDC, 0x12,
4270xF0, 0x89, 0xC0, 0x2F, 0x30, 0x9F, 0x08, 0xFC, 0x12, 0xF0, 0x89, 0xC8, 0x2F,
4280x01, 0x9F, 0x40, 0x7C, 0x12, 0xF0, 0x49, 0xC2, 0x27, 0x08, 0x9F, 0x00, 0xFC,
4290x02, 0xD0, 0x09, 0xC0, 0x2F, 0x08, 0x9F, 0x00, 0xFC, 0x22, 0xF0, 0x0A, 0xC0,
4300x65, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F, 0x01, 0xBF,
4310x00, 0xCC, 0x32, 0xE0, 0x0B, 0xC8, 0x24, 0x00, 0x9F, 0x08, 0x6C, 0x02, 0xE0,
4320x49, 0xC1, 0x2E, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x0B, 0xD8, 0x24, 0x20,
4330xBF, 0x34, 0x7C, 0x22, 0xF0, 0x09, 0xE0, 0x2D, 0x00, 0xB3, 0x00, 0xEC, 0x02,
4340xF0, 0x4B, 0xC1, 0x2C, 0x20, 0x9F, 0x55, 0xF8, 0x02, 0xF0, 0x0A, 0xC0, 0x60,
4350x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x05, 0x1D, 0x04,
4360x44, 0xB0, 0xD0, 0x25, 0x41, 0x04, 0x04, 0x1D, 0x08, 0x44, 0x50, 0xD2, 0x41,
4370x44, 0x04, 0x00, 0x17, 0x12, 0x74, 0x40, 0x14, 0x81, 0x68, 0x04, 0x05, 0x1D,
4380x00, 0x74, 0x10, 0x71, 0x21, 0x41, 0x04, 0x00, 0x15, 0x08, 0x44, 0x00, 0xD0,
4390x01, 0x40, 0x05, 0x20, 0x1D, 0x00, 0x74, 0x00, 0xD0, 0x01, 0xC0, 0x72, 0x20,
4400x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x03, 0x8D, 0x15, 0x04,
4410x92, 0xD0, 0xC8, 0x40, 0x20, 0x02, 0x8D, 0x00, 0x24, 0x12, 0xD0, 0x48, 0x41,
4420x22, 0x20, 0x8D, 0x0C, 0x36, 0x02, 0x10, 0x08, 0x40, 0x22, 0x21, 0x8D, 0x00,
4430x30, 0x12, 0xD1, 0xC8, 0x40, 0x31, 0x02, 0x81, 0x00, 0x14, 0x02, 0xD0, 0x08,
4440x40, 0x22, 0x00, 0x8D, 0x80, 0x34, 0x02, 0xD0, 0x09, 0x40, 0x40, 0x88, 0x0E,
4450x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x65, 0x00, 0x8D, 0x00, 0x44, 0x02,
4460xD0, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x44, 0x22, 0xD0, 0x09, 0x40, 0x24,
4470x00, 0x95, 0x00, 0x74, 0x42, 0x10, 0x09, 0x40, 0x26, 0x06, 0x9D, 0x00, 0x74,
4480x02, 0x50, 0x08, 0x48, 0x34, 0x08, 0x95, 0x20, 0x46, 0x43, 0xD0, 0x09, 0x40,
4490x67, 0x00, 0x9D, 0x00, 0x76, 0x0E, 0xD0, 0x49, 0x40, 0x62, 0x20, 0x06, 0x00,
4500x00, 0x00, 0x00, 0x00, 0x05, 0x88, 0xE7, 0x04, 0x9F, 0x01, 0x4D, 0x02, 0xF0,
4510x39, 0xE0, 0x24, 0x00, 0x9D, 0x00, 0x6C, 0x02, 0xF0, 0x09, 0xC0, 0x26, 0x04,
4520x9F, 0x00, 0x7C, 0x0A, 0x30, 0x09, 0x40, 0x66, 0x00, 0x9F, 0x20, 0x7C, 0x02,
4530xD0, 0x09, 0x40, 0x25, 0x00, 0x93, 0x00, 0x5D, 0x8A, 0xF0, 0x09, 0xC0, 0xE6,
4540x04, 0x9F, 0x00, 0x7C, 0x0E, 0xF0, 0x08, 0x40, 0x14, 0x20, 0x0E, 0x00, 0x00,
4550x00, 0x00, 0x00, 0x14, 0x80, 0x25, 0x00, 0x9F, 0x04, 0x7C, 0x66, 0xF3, 0x88,
4560xD1, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x09, 0xC8, 0x27, 0x00, 0x9F,
4570x00, 0x7C, 0x26, 0xF0, 0x09, 0xC0, 0x25, 0x00, 0x9F, 0x20, 0x7C, 0x02, 0xF0,
4580x09, 0xC0, 0x27, 0x00, 0x8F, 0x00, 0x5C, 0x02, 0xF0, 0x08, 0xC1, 0x25, 0x00,
4590x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC1, 0x53, 0x00, 0x06, 0x00, 0x00, 0x00,
4600x00, 0x00, 0x14, 0x08, 0x85, 0x02, 0x1F, 0x00, 0x4D, 0x08, 0xF8, 0x21, 0xC0,
4610x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC4, 0x07, 0x00, 0x1F, 0x00,
4620x7C, 0x08, 0xF0, 0x00, 0xC0, 0x84, 0x00, 0x1F, 0x01, 0x4C, 0x00, 0xF0, 0x01,
4630xC0, 0x02, 0x00, 0x13, 0x00, 0x7C, 0x40, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x1F,
4640x00, 0x7C, 0x40, 0x32, 0x01, 0xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
4650x00, 0x14, 0xA0, 0x1C, 0x02, 0x7D, 0x02, 0xC4, 0x01, 0xD0, 0x37, 0xC0, 0x15,
4660x00, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x48, 0x5F, 0x00, 0x5F, 0x00, 0x74,
4670x01, 0xD0, 0x15, 0x01, 0x14, 0x00, 0x7D, 0x05, 0x45, 0x01, 0xF0, 0x05, 0xC0,
4680x1D, 0x00, 0x7F, 0x20, 0xF4, 0x4D, 0xD0, 0x07, 0x40, 0x54, 0x20, 0x5D, 0x00,
4690xF4, 0x01, 0x34, 0x07, 0xD0, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
4700x14, 0xA0, 0x72, 0x80, 0x8D, 0x10, 0x04, 0x03, 0xD0, 0xBC, 0x40, 0x31, 0x00,
4710xDD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x06, 0xCD, 0x00, 0x74, 0x03,
4720xD0, 0x18, 0x60, 0x30, 0x00, 0xCD, 0x00, 0x04, 0x03, 0x90, 0x0C, 0x40, 0xB0,
4730x01, 0xC1, 0x12, 0x34, 0x0B, 0xD0, 0x34, 0x50, 0x70, 0x00, 0xCD, 0x00, 0x34,
4740x03, 0x90, 0x0C, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4750x80, 0x28, 0x01, 0x7D, 0x08, 0x84, 0x43, 0xD0, 0x0E, 0x40, 0x39, 0x00, 0xED,
4760x0C, 0xB4, 0x13, 0xDA, 0xCE, 0x40, 0x1B, 0x00, 0xED, 0x08, 0xB4, 0x13, 0xD1,
4770x0B, 0x40, 0x38, 0x21, 0x0D, 0x01, 0x86, 0x23, 0xD2, 0x4C, 0x40, 0x21, 0x00,
4780x65, 0x10, 0xB0, 0x01, 0xD0, 0x0E, 0x41, 0x38, 0x04, 0xED, 0x00, 0xF4, 0x47,
4790x10, 0x0F, 0x40, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10,
4800xF8, 0x00, 0xAF, 0x05, 0x8C, 0x07, 0xD0, 0x16, 0xC0, 0x79, 0x00, 0xEF, 0x05,
4810xBC, 0x0F, 0xF0, 0x1E, 0xC4, 0x7B, 0x20, 0xED, 0x11, 0xB4, 0x87, 0xD0, 0x0F,
4820xC0, 0x78, 0x01, 0x2F, 0x21, 0x8C, 0x57, 0xF0, 0xBE, 0xC4, 0x68, 0x00, 0xE1,
4830x01, 0xB0, 0x05, 0xF0, 0x1C, 0xC4, 0x78, 0x00, 0xEF, 0x01, 0xF8, 0x05, 0xB0,
4840x1E, 0xD0, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35,
4850x00, 0x8F, 0x40, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0xB5, 0x00, 0xDF, 0x00, 0x7C,
4860x03, 0xF1, 0x4D, 0xC1, 0x37, 0x00, 0xD6, 0x44, 0x7C, 0xAB, 0xF0, 0x0D, 0xCC,
4870xB7, 0x06, 0x1F, 0x00, 0x6C, 0x03, 0x60, 0x6D, 0xC0, 0x25, 0x00, 0x5F, 0x00,
4880x7C, 0x00, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x80, 0x7C, 0x03, 0xF0, 0x0D,
4890xC0, 0x41, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x4F, 0x00,
4900x23, 0x41, 0xDD, 0x27, 0xF8, 0x8F, 0xC0, 0xFF, 0x04, 0xFB, 0x01, 0xDC, 0x07,
4910xF0, 0x9F, 0xC0, 0x6C, 0x02, 0xFF, 0x01, 0xEC, 0x2F, 0xF2, 0x9B, 0xC2, 0x7F,
4920x42, 0x33, 0x01, 0xCC, 0x07, 0xF0, 0x1F, 0xC0, 0x48, 0x00, 0xB3, 0x89, 0xAE,
4930x25, 0x30, 0x1F, 0xC2, 0x7F, 0x02, 0xFF, 0x01, 0xFC, 0x06, 0xF0, 0x1E, 0xC0,
4940x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x09, 0x00, 0x61,
4950x08, 0x85, 0x01, 0xD8, 0x0E, 0x41, 0x3F, 0x00, 0xF1, 0x00, 0x84, 0x03, 0xD2,
4960x0F, 0x54, 0x88, 0x20, 0xE7, 0x00, 0x85, 0x23, 0xD0, 0xCA, 0x40, 0x3B, 0x02,
4970x21, 0x08, 0xAC, 0x03, 0x70, 0x0F, 0x48, 0x28, 0x00, 0xEB, 0x00, 0x8C, 0x01,
4980xB0, 0x4A, 0x40, 0x3B, 0x02, 0xED, 0x00, 0x34, 0x1B, 0xD0, 0x0E, 0x50, 0x54,
4990x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x04, 0x21, 0x02,
5000x94, 0xC3, 0xD0, 0x86, 0x40, 0x3B, 0x00, 0xE9, 0x00, 0x94, 0x23, 0xD0, 0x0E,
5010x42, 0x38, 0x90, 0xED, 0x00, 0x84, 0x03, 0xD2, 0x0A, 0x00, 0x3F, 0x04, 0x01,
5020x00, 0x84, 0x23, 0xD0, 0x0E, 0x40, 0x09, 0x00, 0xA1, 0x40, 0x97, 0x01, 0x12,
5030x0E, 0x48, 0x2B, 0x10, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x00, 0x00,
5040x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0xA7, 0x01, 0x01, 0x81, 0x44,
5050x0E, 0xD0, 0x31, 0x40, 0x33, 0x00, 0xC1, 0x00, 0x04, 0x03, 0xD8, 0x0C, 0x40,
5060xB0, 0x08, 0xC5, 0x00, 0x04, 0x13, 0xD0, 0x08, 0x60, 0x33, 0x00, 0x01, 0x00,
5070x24, 0x03, 0x58, 0x0C, 0x50, 0x21, 0x00, 0xC9, 0x00, 0x04, 0x40, 0x12, 0x08,
5080x40, 0x23, 0x01, 0xCD, 0x00, 0x74, 0x9E, 0xD1, 0x8C, 0x40, 0x10, 0x20, 0x0C,
5090x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0xFD, 0x40, 0x33, 0x01, 0x5C, 0x04,
5100xD0, 0x19, 0xC0, 0x3F, 0x00, 0xFB, 0x00, 0xD4, 0x03, 0xF0, 0x0F, 0xC0, 0x74,
5110x00, 0xFE, 0x00, 0xCC, 0x03, 0xF0, 0x09, 0xC0, 0xBB, 0x80, 0x13, 0x00, 0xCC,
5120x03, 0xF0, 0x0F, 0x40, 0x25, 0x00, 0xD3, 0x00, 0x5C, 0x05, 0x10, 0x05, 0xC8,
5130x37, 0x00, 0xDF, 0x00, 0x7C, 0x4B, 0xF0, 0x0D, 0xC0, 0x54, 0x20, 0x06, 0x00,
5140x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x08, 0x5F, 0x0A, 0x7C, 0x40, 0xF0,
5150x29, 0xC1, 0x37, 0x00, 0xDF, 0x80, 0x7C, 0x23, 0xF3, 0x0D, 0xC4, 0xC7, 0x00,
5160xC4, 0x80, 0x5C, 0x03, 0xF0, 0x09, 0xC0, 0x37, 0x01, 0x1F, 0x00, 0x7C, 0x03,
5170x70, 0x0C, 0xC0, 0x26, 0x00, 0x5F, 0x02, 0x50, 0x05, 0xF0, 0x0D, 0xC0, 0x27,
5180x00, 0xDE, 0x40, 0x7C, 0x03, 0xF0, 0x2D, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00,
5190x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x02, 0x33, 0x20, 0xCC, 0x00, 0x30, 0x0B,
5200xC0, 0x3C, 0x00, 0xFE, 0x00, 0xFE, 0x03, 0xB2, 0x0F, 0xC2, 0x7F, 0x05, 0xFF,
5210x00, 0xCD, 0x83, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0x33, 0x00, 0xFC, 0x03, 0xF0,
5220x0F, 0xC2, 0x0E, 0x00, 0x0F, 0x01, 0xCD, 0x01, 0x30, 0x4F, 0xC0, 0x7C, 0x01,
5230xEF, 0x00, 0xCC, 0x07, 0x30, 0x1B, 0xC0, 0x00, 0x22, 0x0C, 0x00, 0x00, 0x00,
5240x00, 0x00, 0x81, 0x20, 0x76, 0x20, 0x05, 0x04, 0x44, 0x04, 0x10, 0x39, 0x41,
5250x34, 0x00, 0xDD, 0x00, 0x34, 0x03, 0x70, 0x0D, 0x40, 0xA7, 0x80, 0xDD, 0x00,
5260x44, 0x03, 0xD0, 0x0D, 0xC0, 0x35, 0x00, 0x11, 0x03, 0x74, 0x03, 0x72, 0x0D,
5270x48, 0x45, 0x00, 0x1D, 0x05, 0x04, 0x08, 0x52, 0x0C, 0x40, 0x24, 0x00, 0xDD,
5280x00, 0x44, 0x09, 0x10, 0x9C, 0x40, 0x04, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00,
5290x00, 0x01, 0xA0, 0x14, 0x50, 0x11, 0x00, 0x44, 0x06, 0x10, 0x11, 0x60, 0x36,
5300x10, 0xDD, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x4A, 0x07, 0x80, 0xDD, 0x00, 0x44,
5310x03, 0xD0, 0x09, 0x68, 0x37, 0x00, 0x11, 0x03, 0x74, 0x03, 0xD0, 0x0D, 0x40,
5320x44, 0x00, 0x9D, 0x08, 0x44, 0x20, 0x10, 0x0D, 0x40, 0x35, 0x00, 0xDD, 0x00,
5330x54, 0x13, 0x50, 0x05, 0x41, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
5340x10, 0x22, 0x00, 0x00, 0x51, 0x00, 0x05, 0x04, 0x14, 0x08, 0x50, 0x32, 0x00,
5350xCD, 0x00, 0x74, 0x03, 0x50, 0x0C, 0x40, 0x03, 0x00, 0xCD, 0x80, 0x04, 0x03,
5360xD0, 0x08, 0x40, 0x34, 0x20, 0x01, 0x00, 0x34, 0x03, 0x52, 0x0C, 0x40, 0x21,
5370x10, 0xCD, 0x00, 0x44, 0x00, 0x50, 0x0C, 0x44, 0x20, 0x00, 0xCD, 0x00, 0x45,
5380x0B, 0x14, 0x0D, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5390xB0, 0x32, 0x00, 0x11, 0x00, 0x4D, 0x02, 0x30, 0x01, 0xC2, 0x3E, 0x10, 0xDF,
5400x00, 0x74, 0x03, 0x30, 0x0F, 0xC0, 0x17, 0x10, 0xED, 0x00, 0xCC, 0x03, 0xF0,
5410x09, 0x88, 0x3F, 0x40, 0x13, 0x40, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x04, 0x20,
5420x1F, 0x00, 0x4E, 0x00, 0x30, 0x0D, 0xC0, 0x24, 0x00, 0xDF, 0x00, 0x4C, 0x0B,
5430x30, 0x01, 0xC0, 0x00, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8,
5440x3F, 0x00, 0x3F, 0x00, 0xFC, 0x02, 0xF1, 0x0B, 0xCA, 0x3D, 0x00, 0xFF, 0x20,
5450xFC, 0x03, 0x70, 0x0F, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B,
5460xC0, 0x39, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0x40, 0x0F, 0xC0, 0x0D, 0x00, 0x3F,
5470x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC8, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x13, 0xF0,
5480x0F, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x3F,
5490x00, 0xFB, 0x1C, 0xEC, 0x05, 0x30, 0x0B, 0xC0, 0x5F, 0x00, 0xBF, 0x00, 0xEC,
5500x03, 0xB0, 0x0F, 0xC1, 0x3F, 0x00, 0x3B, 0x81, 0xEC, 0x33, 0x70, 0x0F, 0xC0,
5510x4F, 0x00, 0x2F, 0x01, 0xFC, 0x84, 0xF0, 0x4F, 0x80, 0x7C, 0x00, 0x7B, 0x01,
5520xBC, 0x04, 0xF0, 0x13, 0xC2, 0x4E, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xF0, 0x03,
5530x44, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0xFF, 0x02,
5540xF1, 0x02, 0x44, 0x06, 0x14, 0x19, 0x40, 0x26, 0x00, 0x8D, 0x70, 0x74, 0xAF,
5550x10, 0x1F, 0x40, 0xFF, 0x00, 0x9D, 0x01, 0x74, 0x3B, 0x10, 0xBF, 0x40, 0x77,
5560x00, 0xDD, 0x01, 0x74, 0x07, 0xD0, 0xBF, 0x40, 0x38, 0x05, 0x91, 0x01, 0x74,
5570x04, 0xD0, 0x11, 0x40, 0x47, 0x00, 0xDD, 0x00, 0x76, 0x86, 0xD2, 0x19, 0x40,
5580x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x20, 0xC8,
5590x04, 0x64, 0x01, 0x50, 0x08, 0x40, 0x21, 0x00, 0x8D, 0x04, 0x06, 0x03, 0x90,
5600x0C, 0x42, 0xB3, 0x00, 0x81, 0x00, 0x34, 0x13, 0x50, 0x0C, 0x60, 0x33, 0x20,
5610xCD, 0x80, 0x34, 0x02, 0x52, 0x0C, 0x60, 0x30, 0x40, 0x85, 0x40, 0x16, 0x00,
5620xD0, 0x00, 0x42, 0x03, 0x00, 0xC5, 0x80, 0x34, 0x00, 0xD2, 0x00, 0x42, 0x47,
5630x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00, 0xD1, 0x00,
5640x44, 0x02, 0x50, 0x19, 0x40, 0x26, 0x00, 0x9D, 0x23, 0x74, 0x03, 0x50, 0x0D,
5650x40, 0x37, 0x00, 0x9C, 0x01, 0x34, 0x03, 0x10, 0x0D, 0x00, 0x37, 0x00, 0xDD,
5660x06, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0x30, 0x10, 0x95, 0x00, 0x74, 0x0E, 0xD0,
5670x11, 0x40, 0x67, 0x00, 0xDD, 0x00, 0x74, 0x06, 0xC0, 0x19, 0x40, 0x0F, 0x20,
5680x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x37, 0x00, 0xDB, 0x80, 0x2C,
5690x12, 0x71, 0x11, 0xC1, 0x17, 0x01, 0x1F, 0x03, 0x4C, 0x03, 0xB0, 0x0D, 0xC0,
5700x37, 0x00, 0x13, 0x03, 0x6C, 0x03, 0x72, 0x0D, 0xC8, 0x07, 0x01, 0x1E, 0x00,
5710x7C, 0x01, 0xF0, 0x0C, 0xC0, 0x34, 0x00, 0x55, 0x05, 0x7C, 0x04, 0xD0, 0x31,
5720xC0, 0x47, 0x01, 0xDF, 0xA0, 0x74, 0x04, 0xF0, 0x19, 0xC1, 0x03, 0x20, 0x0E,
5730x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x39, 0x00, 0xEF, 0x00, 0xFC, 0x02,
5740xB0, 0x03, 0xC0, 0x2F, 0x00, 0xBF, 0x80, 0xBC, 0x03, 0xB0, 0x0F, 0xC0, 0x3F,
5750x00, 0x3F, 0x00, 0x7C, 0x03, 0xD0, 0x0F, 0xC0, 0x3F, 0x01, 0xFF, 0x41, 0xFC,
5760x03, 0xF0, 0x0F, 0xC1, 0x3F, 0x00, 0xB3, 0x09, 0xF8, 0x02, 0xF0, 0x03, 0xC0,
5770x0F, 0x00, 0xFF, 0x00, 0xF8, 0x40, 0xF0, 0x09, 0xC1, 0x1F, 0x00, 0x06, 0x00,
5780x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xD7, 0x00, 0x7C, 0x03, 0xF0,
5790x29, 0xC0, 0x37, 0x00, 0x1F, 0x22, 0x6C, 0x03, 0x30, 0x8D, 0xC0, 0x37, 0x00,
5800x13, 0x46, 0x7C, 0x03, 0xB2, 0x0D, 0xC4, 0x34, 0x00, 0xDF, 0x02, 0x4C, 0x17,
5810xB0, 0x8D, 0xC2, 0x37, 0x10, 0x9F, 0x80, 0x7E, 0x08, 0xB4, 0x81, 0xC8, 0x27,
5820x11, 0xDF, 0x00, 0x5E, 0x00, 0xF0, 0x29, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00,
5830x00, 0x00, 0x00, 0x13, 0xA0, 0x3C, 0x00, 0xF1, 0x00, 0x44, 0x12, 0xD0, 0x09,
5840x40, 0x27, 0x22, 0x9D, 0xA0, 0xC4, 0x4B, 0x50, 0x1F, 0x40, 0x3F, 0x00, 0x1A,
5850x03, 0xF4, 0x03, 0x10, 0x0F, 0x40, 0x74, 0x01, 0xDD, 0x00, 0x44, 0x0B, 0x10,
5860x2F, 0x42, 0x37, 0x00, 0x91, 0x0B, 0x74, 0x02, 0x21, 0x01, 0x40, 0xA7, 0x01,
5870xDD, 0x00, 0x46, 0x1A, 0x90, 0x29, 0xC0, 0x4E, 0x00, 0x02, 0x00, 0x00, 0x00,
5880x00, 0x00, 0x07, 0xA0, 0x32, 0x00, 0xC5, 0x00, 0x14, 0x13, 0xD0, 0x00, 0x40,
5890x32, 0x02, 0x0D, 0x00, 0x24, 0x1F, 0x10, 0x0C, 0x48, 0x33, 0x00, 0x04, 0x00,
5900x34, 0x03, 0x90, 0x0C, 0x40, 0x43, 0x01, 0x0D, 0xA0, 0x26, 0x88, 0x10, 0x2C,
5910x48, 0x33, 0x00, 0xC4, 0x08, 0x34, 0x00, 0x10, 0x50, 0x48, 0x42, 0x20, 0xC9,
5920x80, 0x24, 0x02, 0xD2, 0x20, 0x40, 0x1E, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
5930x00, 0x04, 0x80, 0x70, 0x00, 0xC1, 0x01, 0x84, 0x06, 0xD0, 0x1E, 0x40, 0x6B,
5940x00, 0x6D, 0x01, 0x84, 0x07, 0x50, 0x1E, 0x40, 0x7B, 0x02, 0xAD, 0x29, 0xB4,
5950x07, 0x10, 0x1E, 0x40, 0x4B, 0x00, 0x2D, 0x41, 0xB4, 0x07, 0x10, 0x1E, 0x60,
5960x7B, 0x22, 0xE1, 0x41, 0xF4, 0x04, 0x90, 0x92, 0x40, 0x7B, 0x00, 0xED, 0x01,
5970x84, 0x06, 0x90, 0x12, 0x40, 0x1A, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
5980x12, 0x10, 0x30, 0x00, 0xC7, 0x08, 0x1C, 0x03, 0xD0, 0x04, 0xC0, 0x23, 0x00,
5990xCF, 0x00, 0x2E, 0x03, 0x30, 0x0C, 0xE8, 0x33, 0x02, 0x87, 0x12, 0x3C, 0x03,
6000xB0, 0x0C, 0xC1, 0x03, 0x20, 0x0D, 0x01, 0x2D, 0x16, 0x30, 0x8C, 0xC0, 0x33,
6010x00, 0x87, 0x08, 0x34, 0x06, 0x30, 0x50, 0xC2, 0x13, 0x00, 0xCF, 0x00, 0x3C,
6020x03, 0xF0, 0x84, 0xC0, 0x4A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
6030xB8, 0x3D, 0x00, 0xFC, 0x22, 0xDC, 0x02, 0xF0, 0x0F, 0x80, 0x2F, 0x02, 0xFF,
6040x00, 0x9C, 0x63, 0xF0, 0xAF, 0xC0, 0x33, 0x4A, 0x93, 0x00, 0xFC, 0x03, 0xF0,
6050x0E, 0xC1, 0x0C, 0x92, 0x1F, 0x80, 0x0C, 0x23, 0x74, 0x0F, 0xC0, 0x77, 0x00,
6060xB7, 0x08, 0x7C, 0x02, 0x70, 0x87, 0xE0, 0x3F, 0x00, 0xEF, 0x00, 0xFD, 0x02,
6070xF0, 0x0F, 0xC2, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0,
6080xB7, 0x03, 0xDF, 0x02, 0x7C, 0x02, 0x30, 0x05, 0xC0, 0x37, 0x00, 0x7F, 0x01,
6090x6C, 0x03, 0xF0, 0x0D, 0xC0, 0xB7, 0x86, 0x13, 0x01, 0x5C, 0x03, 0x71, 0x5D,
6100xC0, 0x40, 0x90, 0x13, 0x00, 0x7C, 0x01, 0x38, 0x0D, 0xC4, 0x37, 0x00, 0xD3,
6110x80, 0x7C, 0x02, 0xD0, 0x11, 0xC0, 0x24, 0x80, 0xCF, 0x00, 0x4C, 0x00, 0xF1,
6120x01, 0xC0, 0x57, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x39,
6130x03, 0xED, 0x02, 0xB4, 0x02, 0x10, 0x06, 0x40, 0x2B, 0x00, 0xFD, 0x00, 0x84,
6140x93, 0xD0, 0x2E, 0x42, 0x33, 0x21, 0xA1, 0x00, 0x84, 0x13, 0xD0, 0xCE, 0x68,
6150x39, 0x30, 0xE1, 0x00, 0xB4, 0x03, 0x10, 0xCE, 0x40, 0x3F, 0x19, 0xE1, 0x20,
6160xB4, 0x02, 0xD2, 0x02, 0x44, 0x38, 0x10, 0xED, 0x00, 0x84, 0x00, 0xD0, 0x02,
6170x40, 0x4B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x00,
6180xED, 0x01, 0x94, 0x07, 0x10, 0x1E, 0x41, 0x7B, 0x08, 0x6D, 0x00, 0xB4, 0x07,
6190xD0, 0x5E, 0x40, 0x7B, 0x01, 0xB1, 0x21, 0xB4, 0x27, 0x50, 0x1C, 0x50, 0x3A,
6200x00, 0xE1, 0x01, 0x94, 0x07, 0x91, 0x9E, 0x44, 0x3B, 0x03, 0xA1, 0x01, 0xB4,
6210x46, 0xD8, 0x13, 0x44, 0x78, 0x00, 0xE5, 0x81, 0x84, 0xC7, 0xD0, 0x1A, 0x40,
6220x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x08, 0xCD,
6230x00, 0x34, 0x2E, 0x15, 0x2C, 0x41, 0x23, 0x20, 0xCD, 0x13, 0x04, 0x03, 0xD0,
6240x0C, 0x40, 0x33, 0x00, 0xC1, 0x11, 0x24, 0x03, 0xD0, 0x0C, 0x44, 0x37, 0x00,
6250xC1, 0x00, 0x34, 0x87, 0x90, 0x0C, 0x40, 0x37, 0x00, 0x81, 0x00, 0x34, 0x47,
6260xD0, 0x0C, 0x40, 0x30, 0x00, 0xCD, 0x00, 0x04, 0x87, 0xD0, 0xEC, 0x40, 0x4B,
6270x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15, 0x00, 0x5F, 0x00,
6280xBC, 0x0D, 0x30, 0x07, 0xC0, 0x5F, 0x01, 0x7F, 0x40, 0x7C, 0x01, 0xD0, 0x05,
6290xC0, 0x17, 0x10, 0x73, 0x03, 0x7C, 0x01, 0x71, 0x05, 0xC0, 0x9E, 0xC0, 0x73,
6300x09, 0x9C, 0x05, 0x91, 0x05, 0xC0, 0x17, 0x00, 0x61, 0x00, 0xF4, 0x01, 0xF0,
6310x27, 0x40, 0x1C, 0x80, 0x4F, 0x00, 0xC4, 0x8D, 0xF0, 0x37, 0x40, 0x5F, 0x20,
6320x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7C,
6330x48, 0xF0, 0x01, 0xC0, 0x87, 0x20, 0x1F, 0x08, 0x7C, 0x00, 0xF0, 0x01, 0xE0,
6340x07, 0x40, 0x1F, 0x08, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x84, 0x26, 0x1F, 0x8A,
6350x7C, 0x20, 0x70, 0x21, 0xC0, 0x07, 0x00, 0x1F, 0x02, 0x7C, 0x08, 0xF2, 0x01,
6360xC0, 0x87, 0x39, 0x1F, 0x00, 0x7D, 0x40, 0xF0, 0x01, 0xC0, 0x4B, 0x00, 0x0C,
6370x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x9F, 0x00, 0x5C, 0x06,
6380x30, 0x09, 0xC0, 0x67, 0x00, 0x83, 0x00, 0x0C, 0x02, 0xB2, 0x09, 0xC8, 0x27,
6390x02, 0x9B, 0x05, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x20, 0x91, 0x00, 0x7C,
6400x22, 0xB4, 0x98, 0xC0, 0x25, 0x00, 0x93, 0x40, 0x4C, 0x26, 0x30, 0x09, 0xC1,
6410x67, 0x02, 0x9B, 0x00, 0x0C, 0x02, 0x30, 0x39, 0xC0, 0x43, 0x20, 0x0C, 0x00,
6420x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x26, 0x00, 0x9D, 0x00, 0x44, 0x02, 0x14,
6430x09, 0xC0, 0x21, 0x02, 0x95, 0x00, 0x44, 0x02, 0x30, 0x09, 0xC0, 0x23, 0x00,
6440x90, 0x01, 0x74, 0x02, 0xD0, 0x99, 0x40, 0x27, 0x00, 0x91, 0x04, 0x7C, 0x0E,
6450x10, 0x09, 0x40, 0x2C, 0x00, 0x9B, 0x12, 0x2C, 0x0E, 0x14, 0x99, 0x40, 0xE3,
6460x40, 0x91, 0x00, 0x44, 0x0A, 0x50, 0x39, 0x48, 0x07, 0x00, 0x08, 0x00, 0x00,
6470x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x80, 0x8D, 0x00, 0x54, 0x22, 0x10, 0x09,
6480x60, 0x27, 0x00, 0x91, 0x00, 0x44, 0x02, 0x90, 0x09, 0x44, 0x27, 0x00, 0x99,
6490x00, 0x70, 0x02, 0xD8, 0x09, 0x40, 0x67, 0x00, 0x95, 0x20, 0x76, 0x0A, 0x18,
6500x09, 0x41, 0x25, 0x00, 0x91, 0x08, 0x40, 0x02, 0x10, 0x0D, 0x40, 0x27, 0x04,
6510x91, 0x01, 0x44, 0x47, 0x11, 0x29, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00,
6520x00, 0x00, 0x10, 0x20, 0xA0, 0x01, 0x8D, 0x04, 0x04, 0x02, 0x10, 0x48, 0x40,
6530xA5, 0xA0, 0x85, 0x14, 0x04, 0x02, 0x90, 0x08, 0x40, 0x21, 0x00, 0xC9, 0x00,
6540x34, 0x22, 0xD2, 0x08, 0x40, 0x27, 0x00, 0x85, 0x00, 0x74, 0x02, 0x1A, 0x08,
6550x40, 0x20, 0x02, 0x99, 0x20, 0x24, 0x03, 0x10, 0x0C, 0x40, 0x27, 0x00, 0x81,
6560x01, 0x04, 0x12, 0x50, 0x48, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
6570x00, 0x1D, 0xB0, 0x06, 0x00, 0x1D, 0x8A, 0x54, 0x01, 0x31, 0x01, 0xC1, 0x97,
6580x00, 0x13, 0x0A, 0x4C, 0x50, 0xB0, 0x41, 0x41, 0x07, 0x05, 0x1B, 0x00, 0x7C,
6590x58, 0xD0, 0x41, 0x41, 0x17, 0x00, 0x17, 0x20, 0x7E, 0x00, 0xB0, 0x41, 0xC1,
6600xC5, 0x00, 0x13, 0x00, 0x4D, 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x0A,
6610x4C, 0x00, 0x33, 0x01, 0xC2, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
6620x19, 0xB8, 0x67, 0x02, 0x9F, 0x08, 0xBC, 0x02, 0xD0, 0x0B, 0xC8, 0x2D, 0x01,
6630xBF, 0x00, 0x7C, 0x02, 0x70, 0x09, 0xC0, 0x27, 0x00, 0xA6, 0x00, 0x7C, 0x12,
6640xF0, 0x09, 0xC0, 0x2F, 0x00, 0xBB, 0x00, 0x9C, 0x82, 0xF0, 0x09, 0xC0, 0xA7,
6650x09, 0xBF, 0x60, 0xDC, 0x82, 0xF0, 0x0A, 0xC0, 0x2F, 0x08, 0x97, 0x00, 0xFD,
6660x22, 0xF0, 0x8B, 0xC0, 0x67, 0x48, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
6670xA0, 0x27, 0x05, 0x9F, 0x0C, 0xFC, 0x02, 0xF0, 0x09, 0x40, 0x2F, 0x02, 0x9F,
6680x84, 0xF4, 0xD2, 0x70, 0x4B, 0xC0, 0x2C, 0x00, 0xBF, 0x00, 0x7C, 0x22, 0x70,
6690x4B, 0xC0, 0x2C, 0x00, 0xB7, 0x20, 0xFC, 0x02, 0xF0, 0x0B, 0xC2, 0x64, 0x03,
6700xA5, 0x80, 0xCC, 0x02, 0x71, 0x0B, 0x40, 0x2D, 0x00, 0xBB, 0x20, 0xCC, 0x02,
6710xF0, 0x0B, 0x82, 0x64, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08,
6720x47, 0x05, 0x1D, 0x4C, 0x74, 0x00, 0xC0, 0x01, 0x44, 0x07, 0x20, 0x1D, 0xB4,
6730x74, 0x00, 0x70, 0x81, 0x40, 0x84, 0x00, 0x19, 0x80, 0x74, 0xA0, 0xD0, 0x01,
6740x44, 0x06, 0x00, 0x13, 0x80, 0x5C, 0x00, 0xD0, 0x01, 0x40, 0x84, 0x10, 0x57,
6750x00, 0x4C, 0x00, 0xD0, 0x01, 0xC0, 0x15, 0x20, 0x19, 0x50, 0x6C, 0x00, 0xD0,
6760x01, 0x50, 0x70, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23,
6770x00, 0x8D, 0x04, 0x34, 0x02, 0xD0, 0x88, 0x40, 0x23, 0x00, 0x8D, 0x0C, 0x34,
6780x02, 0x50, 0x08, 0x40, 0x20, 0x02, 0x8D, 0x00, 0x34, 0x02, 0x50, 0x88, 0x48,
6790x26, 0x80, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x88, 0x40, 0xA0, 0x20, 0x85, 0x00,
6800x17, 0x82, 0x50, 0x08, 0x40, 0x21, 0x00, 0x8D, 0x00, 0x24, 0x02, 0xD0, 0x08,
6810x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00,
6820x9D, 0x00, 0x74, 0x13, 0xD0, 0x09, 0x40, 0xA7, 0x00, 0x9D, 0x10, 0x74, 0x02,
6830x50, 0x09, 0x40, 0x24, 0x00, 0xD9, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x26,
6840x00, 0x91, 0x06, 0x56, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x10, 0x95, 0x08, 0x44,
6850x06, 0xD8, 0x19, 0x40, 0x25, 0x00, 0x99, 0x00, 0x64, 0x06, 0xD0, 0x19, 0x00,
6860x60, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28, 0x2D, 0x00, 0x9F,
6870x00, 0x7C, 0x06, 0xF0, 0x59, 0xC0, 0xA7, 0x02, 0x9F, 0x03, 0x7C, 0x02, 0x70,
6880x09, 0xC4, 0x24, 0x00, 0x9F, 0x05, 0x7C, 0x02, 0x70, 0x09, 0xC0, 0x60, 0x01,
6890x9F, 0x00, 0x7C, 0x42, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x97, 0x00, 0x5C, 0x46,
6900x70, 0x59, 0xCE, 0xE5, 0x02, 0x9B, 0x00, 0x6C, 0x4E, 0xF0, 0x19, 0xC1, 0x14,
6910x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x25, 0x00, 0x9F, 0x00,
6920x7C, 0x02, 0xF0, 0x29, 0xC0, 0x67, 0x00, 0x9F, 0x04, 0x7C, 0x02, 0xF0, 0x09,
6930x50, 0x27, 0x24, 0x9F, 0x09, 0x7C, 0x02, 0xF0, 0x09, 0xC4, 0x65, 0x02, 0x9F,
6940x41, 0x78, 0x02, 0xF1, 0x08, 0xD0, 0x27, 0x08, 0x9F, 0x01, 0x78, 0x02, 0xF0,
6950x09, 0xC0, 0x67, 0x80, 0x9E, 0x00, 0x78, 0x02, 0xF1, 0x08, 0xC0, 0x53, 0x00,
6960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x5C,
6970x00, 0xF8, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0x80, 0xC0,
6980x07, 0x00, 0x1F, 0x03, 0x7C, 0x00, 0xD2, 0x00, 0xD0, 0x04, 0x00, 0x1F, 0x12,
6990x4C, 0x40, 0xB0, 0x81, 0xC0, 0x04, 0x00, 0x1F, 0x02, 0x7C, 0x18, 0xF0, 0x21,
7000xC0, 0x07, 0x04, 0x13, 0x00, 0x4C, 0x18, 0x30, 0x01, 0xC0, 0x53, 0x00, 0x04,
7010x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x5D, 0x00, 0xC4, 0x01,
7020x70, 0x05, 0x40, 0x9F, 0x08, 0x51, 0x00, 0xF4, 0x6D, 0xD0, 0x15, 0x40, 0x9F,
7030x00, 0x7D, 0x10, 0x74, 0x01, 0xD1, 0x15, 0x43, 0x9C, 0x10, 0x7D, 0x00, 0xEC,
7040x11, 0x70, 0x37, 0xC8, 0x16, 0x00, 0x6D, 0x10, 0xC5, 0x01, 0xD0, 0x87, 0x40,
7050x5F, 0x04, 0x61, 0x18, 0xC4, 0x09, 0xB0, 0x07, 0x40, 0x53, 0x00, 0x00, 0x00,
7060x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x14, 0x01, 0x50,
7070x0C, 0x48, 0xB3, 0x04, 0xC1, 0x00, 0x36, 0x0E, 0xD0, 0x08, 0x40, 0xB3, 0x00,
7080xCD, 0x01, 0x34, 0x03, 0xD8, 0x1C, 0x44, 0xB2, 0x81, 0xCD, 0x0B, 0x24, 0x03,
7090x50, 0x3C, 0x41, 0x31, 0x00, 0xCD, 0x11, 0x04, 0x0E, 0xD0, 0x2C, 0x40, 0x73,
7100x00, 0xC1, 0x40, 0x04, 0x03, 0x10, 0xAC, 0x61, 0x53, 0x00, 0x0A, 0x00, 0x00,
7110x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x01, 0xED, 0x09, 0x84, 0x01, 0x50, 0x0E,
7120x40, 0xFB, 0x40, 0xE1, 0x00, 0xB6, 0x02, 0xD0, 0x0E, 0x40, 0x3B, 0x04, 0xED,
7130x20, 0xB4, 0x93, 0xD0, 0x1E, 0x40, 0xAA, 0x08, 0xFD, 0x01, 0xA4, 0x00, 0x51,
7140x0E, 0x40, 0x3B, 0x02, 0x2D, 0x00, 0x86, 0x0A, 0xD0, 0x0E, 0x60, 0x7B, 0x08,
7150xE1, 0x00, 0x05, 0x87, 0x90, 0x0E, 0x60, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00,
7160x00, 0x00, 0x14, 0x10, 0x78, 0x01, 0xFF, 0x05, 0x9C, 0x05, 0x70, 0x1E, 0xC0,
7170x7F, 0x00, 0xE3, 0x0F, 0xBC, 0x06, 0xF0, 0x1A, 0x40, 0x7B, 0x00, 0x2D, 0x01,
7180xB4, 0x3F, 0xF0, 0x0C, 0xCC, 0x4A, 0x80, 0xEF, 0x01, 0xAE, 0x04, 0x70, 0x1C,
7190xC0, 0x79, 0x05, 0x2D, 0x01, 0x9C, 0x07, 0xE9, 0x1E, 0xC0, 0x7B, 0x40, 0xE1,
7200x21, 0x8C, 0x05, 0x30, 0x16, 0xC0, 0x53, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
7210x00, 0x10, 0xB8, 0x35, 0x00, 0xDF, 0x10, 0x7C, 0x01, 0x70, 0x0D, 0xC0, 0x37,
7220x00, 0xDF, 0x04, 0x7C, 0x02, 0xF2, 0x0D, 0xC4, 0x37, 0x00, 0xDF, 0x00, 0x7C,
7230x83, 0xF1, 0x0D, 0xC2, 0x25, 0x00, 0xCF, 0x40, 0x7C, 0x00, 0x60, 0x0D, 0xC0,
7240xB6, 0x20, 0x1F, 0x00, 0x58, 0x83, 0xFA, 0x09, 0xC0, 0x13, 0x08, 0xCF, 0x00,
7250x74, 0x02, 0xF1, 0x05, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
7260x02, 0xA2, 0x7F, 0x14, 0xFF, 0x01, 0xFC, 0x11, 0xF0, 0x1F, 0xC0, 0x7F, 0x02,
7270xFF, 0x09, 0xFC, 0x06, 0x30, 0x9F, 0xC0, 0x7E, 0x02, 0xFF, 0x09, 0xFC, 0x07,
7280x70, 0x1F, 0xC8, 0x6F, 0x02, 0xEF, 0x41, 0xDC, 0x24, 0xF0, 0x1E, 0xC0, 0x7C,
7290x00, 0x33, 0x09, 0xF8, 0x07, 0xF0, 0x9F, 0xC0, 0x7F, 0x02, 0xFB, 0x41, 0xCC,
7300x05, 0x30, 0x97, 0xC4, 0x0B, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
7310x88, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x41, 0xD1, 0x0E, 0xC0, 0x39, 0x23, 0xED,
7320x08, 0xB4, 0x02, 0xB0, 0x8E, 0x08, 0x38, 0x00, 0xED, 0x08, 0xDC, 0x23, 0x30,
7330x4E, 0x44, 0x6B, 0x2A, 0xC9, 0xC0, 0x10, 0x20, 0xD0, 0x82, 0x40, 0x39, 0x00,
7340x2D, 0x0C, 0x34, 0x07, 0xD0, 0x04, 0x00, 0x3B, 0x07, 0xE7, 0x08, 0xAC, 0x29,
7350x30, 0xAE, 0xC0, 0x55, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7360x79, 0x00, 0xED, 0x00, 0xB4, 0x21, 0xD0, 0x0E, 0x40, 0x1B, 0x24, 0xED, 0x40,
7370x96, 0x02, 0x90, 0x8E, 0x48, 0x29, 0x08, 0x2D, 0x00, 0x90, 0x03, 0x50, 0x0A,
7380x48, 0x0B, 0x07, 0x65, 0x18, 0x94, 0x40, 0xD0, 0x0E, 0x40, 0x31, 0x00, 0x2D,
7390x80, 0xB4, 0x43, 0xD0, 0x0E, 0x48, 0x2B, 0x00, 0x65, 0x00, 0x84, 0x01, 0x90,
7400x82, 0x40, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x33,
7410x00, 0xCD, 0x00, 0x34, 0x0D, 0xD0, 0x2C, 0x40, 0xE1, 0x04, 0xCD, 0x02, 0x34,
7420x02, 0x80, 0x0C, 0x50, 0x21, 0x10, 0xCD, 0x12, 0x14, 0x03, 0x10, 0x08, 0x40,
7430x63, 0x11, 0x49, 0x01, 0x04, 0x0C, 0xC0, 0x00, 0x42, 0x31, 0x00, 0x0D, 0x00,
7440x34, 0x4B, 0xD8, 0x90, 0x42, 0x73, 0x01, 0x45, 0x00, 0x24, 0x2E, 0x14, 0x18,
7450x40, 0x19, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x00,
7460xFF, 0x00, 0x3C, 0x0F, 0xF0, 0x2D, 0xC1, 0x83, 0x00, 0xFF, 0x05, 0x5E, 0x03,
7470xB0, 0x08, 0xC0, 0x35, 0x00, 0xCF, 0x81, 0xDC, 0x83, 0x70, 0x09, 0xC2, 0x23,
7480x10, 0xD7, 0x00, 0x5C, 0x00, 0xF0, 0x0D, 0xC0, 0x3D, 0x08, 0x17, 0x18, 0x74,
7490x03, 0xF0, 0x39, 0x68, 0x37, 0x10, 0xD7, 0x00, 0x4C, 0x82, 0xB8, 0x59, 0xC0,
7500x77, 0x21, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xDF,
7510x40, 0x7C, 0x11, 0xF0, 0x4D, 0xC2, 0x87, 0x00, 0xDF, 0x00, 0x7C, 0x0A, 0xF1,
7520x0D, 0x40, 0xB4, 0x00, 0xDF, 0x01, 0x5C, 0x03, 0x70, 0x0D, 0x82, 0xA7, 0x00,
7530xDC, 0x44, 0x7C, 0x00, 0xF2, 0x0D, 0xC0, 0x33, 0x00, 0x16, 0x20, 0x7C, 0x03,
7540xF0, 0x09, 0xC5, 0x36, 0x00, 0xD7, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC9, 0x07,
7550x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0xFB, 0x00,
7560xFC, 0x0B, 0x30, 0x0E, 0xC0, 0x2C, 0x00, 0xF3, 0x10, 0xFC, 0x27, 0xF0, 0x09,
7570xC0, 0x38, 0x40, 0x33, 0x05, 0xCC, 0x03, 0xF0, 0x0A, 0xC0, 0x0C, 0x00, 0xF3,
7580xA0, 0xE8, 0xC0, 0x30, 0x13, 0xC0, 0x3F, 0x00, 0x3B, 0x01, 0xCC, 0x05, 0xF0,
7590x03, 0xC2, 0x3D, 0x00, 0xFB, 0x01, 0x7C, 0x42, 0xF0, 0x02, 0x40, 0x04, 0x28,
7600x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0xD1, 0x00, 0x74,
7610x02, 0x14, 0x0D, 0x60, 0x64, 0x81, 0xD5, 0x00, 0x74, 0x0E, 0xD0, 0x0D, 0x40,
7620x35, 0x81, 0xD1, 0x23, 0x4C, 0x03, 0x30, 0x0D, 0x40, 0xE5, 0x00, 0xC1, 0x00,
7630x10, 0x20, 0xB0, 0x51, 0x40, 0x37, 0x00, 0x05, 0x43, 0x44, 0x15, 0xD0, 0x11,
7640x43, 0x13, 0x00, 0xD1, 0x00, 0x7C, 0x0E, 0xD1, 0x31, 0x50, 0x04, 0x06, 0x08,
7650x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x32, 0x00, 0xD9, 0x00, 0x74, 0x03,
7660x92, 0x0D, 0x50, 0x44, 0x08, 0xD1, 0x00, 0x74, 0xC3, 0xDA, 0x0D, 0x00, 0x14,
7670x20, 0x11, 0x40, 0x64, 0x03, 0xD0, 0x49, 0x40, 0xC4, 0x00, 0x91, 0x08, 0x74,
7680x40, 0x90, 0x4D, 0x40, 0x37, 0x00, 0x15, 0x14, 0x64, 0x23, 0xD1, 0x19, 0x04,
7690x37, 0x00, 0x91, 0x04, 0x74, 0x04, 0xD9, 0x19, 0x40, 0x05, 0x00, 0x0A, 0x00,
7700x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0xC1, 0x00, 0x74, 0x01, 0x90,
7710x0C, 0x40, 0x04, 0x00, 0xC5, 0x00, 0x34, 0x01, 0xD0, 0x0C, 0x40, 0x11, 0x10,
7720x01, 0x00, 0x24, 0x03, 0x50, 0x0C, 0x46, 0x05, 0xE1, 0x91, 0x02, 0x54, 0x20,
7730x90, 0x00, 0x40, 0x33, 0x00, 0x15, 0x00, 0x05, 0xB3, 0xD8, 0x00, 0x00, 0x33,
7740xC0, 0x81, 0x40, 0x24, 0x00, 0xD0, 0x08, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00,
7750x00, 0x00, 0x00, 0x00, 0x90, 0x3E, 0x00, 0xFB, 0x00, 0x7C, 0x03, 0xB0, 0x0D,
7760x40, 0x04, 0x00, 0xF1, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x04, 0x00, 0x11,
7770x00, 0xEC, 0x03, 0xF0, 0x09, 0xC0, 0x04, 0x05, 0x13, 0x02, 0x6C, 0x00, 0xB0,
7780x01, 0x40, 0x3F, 0x00, 0x17, 0x00, 0x6C, 0x03, 0xF2, 0xA1, 0xC0, 0x27, 0x00,
7790x43, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC8, 0x05, 0x40, 0x08, 0x00, 0x00, 0x00,
7800x00, 0x00, 0x05, 0xB8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0x70, 0x0F, 0xC0,
7810x2F, 0x00, 0xFF, 0x00, 0xBC, 0x01, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0x3F, 0x00,
7820xD0, 0x03, 0x30, 0x0B, 0xC0, 0x07, 0x10, 0x3F, 0x80, 0xEC, 0x90, 0xF0, 0x03,
7830xC0, 0x3F, 0x00, 0x3C, 0x00, 0x7C, 0x1B, 0xF0, 0x43, 0xC0, 0x3F, 0x00, 0x7F,
7840x00, 0xDC, 0x02, 0xF0, 0x0B, 0xC8, 0x17, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
7850x00, 0x03, 0x80, 0x0F, 0x06, 0xAF, 0x00, 0xEC, 0x02, 0xE0, 0x1E, 0xC0, 0x0F,
7860x05, 0xFB, 0x0C, 0xFC, 0x50, 0x30, 0x43, 0xC0, 0x2C, 0x01, 0x33, 0x00, 0xCC,
7870x03, 0x30, 0x1F, 0xC0, 0x0F, 0x05, 0x23, 0x01, 0xEC, 0x03, 0xB0, 0x13, 0xC0,
7880x3F, 0x01, 0x3B, 0x01, 0xC4, 0x06, 0xB6, 0x83, 0xC0, 0x0D, 0x03, 0x37, 0x00,
7890xAC, 0x27, 0x30, 0x1E, 0xC0, 0x0E, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
7900x01, 0x10, 0x87, 0x01, 0x9D, 0x01, 0x44, 0x00, 0xD0, 0x0D, 0x40, 0x83, 0x00,
7910xF1, 0x08, 0x74, 0x10, 0x10, 0x09, 0x40, 0xB4, 0x07, 0x55, 0x10, 0x84, 0x2B,
7920x10, 0x41, 0xC3, 0x44, 0x00, 0x11, 0x01, 0xC4, 0x07, 0xB0, 0x15, 0xC0, 0xBD,
7930x12, 0xD1, 0x01, 0x44, 0x42, 0x10, 0xE1, 0x40, 0x90, 0x03, 0x11, 0x23, 0x44,
7940x12, 0x10, 0x11, 0x40, 0x0C, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
7950xA0, 0x03, 0x00, 0x8D, 0x80, 0x14, 0x06, 0xC0, 0x0C, 0x40, 0x01, 0x00, 0xC9,
7960x04, 0x36, 0x40, 0x10, 0x64, 0x49, 0x20, 0x09, 0x01, 0x08, 0x04, 0xC3, 0x10,
7970x44, 0x40, 0x13, 0x00, 0x01, 0x00, 0x14, 0x0B, 0x98, 0x08, 0x42, 0x33, 0x95,
7980x15, 0x00, 0x64, 0x13, 0x10, 0x48, 0x48, 0x01, 0x00, 0x05, 0x82, 0x76, 0x11,
7990x11, 0x0C, 0x50, 0x4C, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0,
8000x45, 0x00, 0xDD, 0x22, 0x54, 0x04, 0xD1, 0x0D, 0x40, 0x47, 0x10, 0xD1, 0x00,
8010x74, 0x09, 0x10, 0x0D, 0x40, 0x34, 0x00, 0xD5, 0x10, 0x44, 0x03, 0x10, 0x21,
8020x40, 0x84, 0x00, 0x11, 0x01, 0x54, 0x03, 0x80, 0x0D, 0x42, 0x35, 0x00, 0x15,
8030x10, 0x64, 0x02, 0x10, 0x09, 0x44, 0x25, 0x04, 0xD5, 0x14, 0x54, 0x03, 0x10,
8040x09, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x47,
8050x00, 0x9F, 0x09, 0x7D, 0x04, 0xF0, 0x9D, 0xC0, 0xC7, 0x20, 0xDB, 0x80, 0x7C,
8060x09, 0x31, 0x51, 0xC0, 0x64, 0x02, 0x13, 0x02, 0x4C, 0x03, 0x30, 0x2D, 0xC0,
8070xC7, 0x42, 0x13, 0x01, 0x7C, 0x03, 0xB0, 0x89, 0xC0, 0x37, 0x00, 0x9F, 0x02,
8080x2D, 0x02, 0xB1, 0xB5, 0xC0, 0x85, 0x00, 0x05, 0x03, 0x7C, 0x6F, 0x24, 0x1C,
8090x80, 0x8A, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x0D, 0x00,
8100xAF, 0x00, 0xEC, 0x00, 0xF0, 0x0F, 0xC0, 0x0B, 0x10, 0xFF, 0x00, 0xBC, 0x02,
8110xF2, 0x91, 0xC0, 0x7B, 0x00, 0x2F, 0x00, 0xBC, 0x03, 0xF0, 0x57, 0xC0, 0x2D,
8120x00, 0x3E, 0x00, 0xAC, 0x83, 0xF0, 0x0B, 0xC8, 0x3B, 0x00, 0xFB, 0x49, 0xDC,
8130x02, 0xD0, 0x12, 0xC0, 0x1A, 0x40, 0xFB, 0x00, 0xEC, 0x03, 0xF4, 0x5F, 0xC0,
8140x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x05, 0x80, 0x9F,
8150x07, 0x6C, 0x02, 0x70, 0x8D, 0xC0, 0x06, 0x00, 0xD3, 0x20, 0x5E, 0x09, 0x38,
8160x00, 0xC0, 0x24, 0x02, 0x5F, 0x00, 0x4C, 0x03, 0x30, 0x0D, 0xC0, 0x93, 0x00,
8170x1F, 0x06, 0x4C, 0x63, 0x30, 0x09, 0xC0, 0x34, 0x20, 0x1B, 0x20, 0x4E, 0x03,
8180xF1, 0x0D, 0xC0, 0x96, 0x0A, 0x17, 0x02, 0x6C, 0x43, 0x30, 0x0D, 0xC0, 0x28,
8190x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x44, 0x86, 0xDD, 0xC2,
8200x44, 0xE8, 0x12, 0x1D, 0x40, 0x04, 0x00, 0xF1, 0x00, 0x6C, 0x03, 0x31, 0x01,
8210x40, 0xF4, 0x02, 0xDD, 0x04, 0xC4, 0x03, 0x10, 0x05, 0xC6, 0xE7, 0x81, 0x0F,
8220x40, 0xD0, 0x0B, 0xB1, 0x1D, 0x40, 0x3D, 0x00, 0x41, 0x00, 0x4C, 0x02, 0x70,
8230x09, 0x44, 0x34, 0x12, 0xDB, 0x1B, 0x08, 0x43, 0x10, 0x7D, 0x40, 0x4D, 0x00,
8240x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x02, 0x30, 0x0D, 0x00, 0x04,
8250x06, 0x10, 0x58, 0x50, 0x00, 0x00, 0xC1, 0x00, 0x24, 0x02, 0x90, 0x00, 0x40,
8260x30, 0x00, 0x8D, 0x01, 0x04, 0x27, 0x10, 0x09, 0x40, 0x23, 0x21, 0x09, 0x42,
8270x04, 0x0F, 0x50, 0xF4, 0x48, 0x30, 0x10, 0x41, 0x00, 0x06, 0x02, 0xDA, 0x00,
8280x00, 0x62, 0x40, 0xCC, 0x03, 0x01, 0x07, 0x58, 0x7C, 0x40, 0x0C, 0x20, 0x08,
8290x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x4A, 0x00, 0x6D, 0x01, 0x84, 0x07,
8300x12, 0x1F, 0x44, 0x48, 0x00, 0xE1, 0x01, 0x24, 0x04, 0x10, 0x9A, 0x40, 0x78,
8310x80, 0x4D, 0x01, 0x84, 0x27, 0x10, 0x1A, 0x42, 0x59, 0x00, 0x35, 0x01, 0x94,
8320x03, 0xDC, 0x16, 0x60, 0x71, 0x02, 0xE1, 0x01, 0x84, 0x06, 0x50, 0x94, 0x40,
8330x78, 0x83, 0xE9, 0x09, 0xC4, 0x27, 0x50, 0x16, 0x40, 0x35, 0x20, 0x08, 0x00,
8340x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x82, 0x00, 0x8D, 0x00, 0x4C, 0x23, 0x70,
8350x88, 0xC0, 0x80, 0x42, 0xD3, 0x00, 0x34, 0x02, 0x90, 0x84, 0xC4, 0x30, 0x00,
8360x8D, 0x00, 0x0C, 0x03, 0x30, 0x44, 0x40, 0x33, 0x01, 0x0D, 0x08, 0x0C, 0x13,
8370x50, 0x04, 0x40, 0x30, 0x00, 0x03, 0x08, 0x0C, 0x83, 0xF0, 0xA0, 0xD0, 0x02,
8380x01, 0x07, 0x88, 0x0C, 0x23, 0x70, 0x4C, 0xC0, 0x48, 0x40, 0x08, 0x00, 0x00,
8390x00, 0x00, 0x00, 0x02, 0xB8, 0x0D, 0x00, 0xFF, 0x08, 0xDE, 0x03, 0xF4, 0x0F,
8400xC2, 0x0D, 0x00, 0xFF, 0x00, 0xFC, 0x01, 0xF0, 0x8F, 0xC2, 0x3F, 0x00, 0xFF,
8410x40, 0xFC, 0x03, 0xF0, 0x03, 0xC0, 0x1F, 0x00, 0x3F, 0x08, 0xBC, 0x1B, 0x30,
8420x8E, 0xC0, 0x3F, 0x00, 0xA7, 0xA0, 0xFD, 0x02, 0xF0, 0x87, 0xC0, 0x2F, 0x41,
8430xEF, 0x08, 0x7C, 0x23, 0xB0, 0x0D, 0xC4, 0x0B, 0x20, 0x06, 0x00, 0x00, 0x00,
8440x00, 0x00, 0x10, 0xA8, 0x0F, 0x00, 0x1F, 0x00, 0x4C, 0x01, 0xE1, 0x09, 0xC0,
8450x07, 0x08, 0xDF, 0x06, 0x5C, 0x03, 0xF0, 0x1D, 0xC0, 0x34, 0x00, 0x93, 0x00,
8460x4C, 0x27, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x1B, 0x00, 0x7C, 0x23, 0xF8, 0x11,
8470xC0, 0x36, 0x03, 0xDB, 0x00, 0x7C, 0x02, 0xF0, 0x1D, 0xC0, 0x24, 0x00, 0x13,
8480x20, 0x4D, 0x03, 0x30, 0x0D, 0xC0, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
8490x00, 0x12, 0x98, 0x29, 0x00, 0x6D, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x0B,
8500x00, 0xFD, 0x12, 0x84, 0x02, 0xD0, 0x0F, 0x48, 0x38, 0x00, 0x21, 0x00, 0x04,
8510x33, 0x14, 0x0A, 0x40, 0x3B, 0x40, 0x22, 0x00, 0xB4, 0x13, 0xD0, 0x0A, 0x40,
8520x3C, 0x02, 0xE1, 0x00, 0xB4, 0x02, 0xD0, 0x0E, 0x52, 0x3D, 0x00, 0xC5, 0x00,
8530x84, 0x02, 0x10, 0x0E, 0x40, 0x4F, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
8540x04, 0x00, 0xF9, 0x00, 0x8D, 0x01, 0x94, 0x0F, 0xD0, 0x1A, 0x40, 0x5B, 0x08,
8550xED, 0x01, 0x94, 0x07, 0xD0, 0x3E, 0x40, 0x78, 0x40, 0xC1, 0x11, 0xA5, 0x07,
8560x18, 0x1E, 0x40, 0x73, 0x00, 0x21, 0x01, 0xB4, 0x07, 0x50, 0x17, 0x46, 0x79,
8570x01, 0xE9, 0x01, 0xB4, 0x07, 0xD2, 0x1C, 0x70, 0x58, 0x00, 0x21, 0x01, 0x86,
8580x47, 0x10, 0x1E, 0x41, 0x13, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
8590x20, 0xB3, 0x00, 0xCD, 0x00, 0x14, 0x03, 0xD0, 0x0C, 0x40, 0xB7, 0x00, 0xCD,
8600x00, 0x04, 0x17, 0xD8, 0x0C, 0x40, 0x34, 0x00, 0xC1, 0x00, 0x24, 0x03, 0x10,
8610x2C, 0x40, 0xB3, 0x01, 0xC1, 0x07, 0x34, 0x03, 0xD8, 0x2C, 0x40, 0x31, 0x00,
8620xC1, 0x48, 0x74, 0x02, 0xD0, 0x2C, 0x64, 0x71, 0x80, 0xC5, 0x0B, 0x04, 0x9B,
8630x12, 0x3C, 0x60, 0x5B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0,
8640x1F, 0x00, 0x6F, 0x00, 0xDD, 0x0D, 0xF0, 0x05, 0xC0, 0x1F, 0x00, 0x5F, 0x00,
8650xDC, 0x49, 0xF0, 0x07, 0xD0, 0x14, 0x00, 0x73, 0x01, 0x6C, 0x01, 0x30, 0xD7,
8660xC0, 0x9B, 0x40, 0x73, 0x11, 0x7C, 0x01, 0xF0, 0xB7, 0x54, 0x17, 0x00, 0x7B,
8670x02, 0x7C, 0x01, 0xF0, 0x47, 0xC0, 0x5C, 0x09, 0x73, 0x80, 0x8C, 0x05, 0x35,
8680x06, 0xC0, 0x5F, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x05,
8690x00, 0x1F, 0x00, 0x6C, 0x98, 0xF2, 0x01, 0xC0, 0x07, 0x04, 0x0F, 0x00, 0x7C,
8700x00, 0xF0, 0x41, 0xC0, 0x07, 0x08, 0x0F, 0x02, 0x5C, 0x80, 0xF0, 0x01, 0xC0,
8710x07, 0x00, 0x1F, 0x82, 0x7C, 0x80, 0xF0, 0x81, 0xC0, 0x04, 0x00, 0x1F, 0x04,
8720x7C, 0x00, 0xB8, 0x01, 0xC1, 0x07, 0x00, 0x0F, 0x12, 0x7C, 0x00, 0xF0, 0x21,
8730xC5, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x61, 0x04,
8740x93, 0x00, 0x0D, 0x0E, 0x30, 0x19, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x1C, 0x02,
8750xB4, 0x09, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x4D, 0x02, 0xF0, 0x09, 0xC8, 0x27,
8760x02, 0x9F, 0x40, 0x7C, 0x02, 0xF2, 0x89, 0xC0, 0x27, 0x00, 0x97, 0x00, 0x7C,
8770x02, 0x30, 0x09, 0xC8, 0x23, 0x20, 0x9B, 0x01, 0x4D, 0x22, 0x70, 0x19, 0xC2,
8780x41, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x02, 0x95,
8790x02, 0x44, 0x0E, 0x14, 0x09, 0x42, 0x27, 0x00, 0x91, 0x00, 0x44, 0x02, 0x10,
8800x09, 0x48, 0x27, 0x08, 0x91, 0x12, 0x44, 0x42, 0xD0, 0x09, 0x44, 0x67, 0x10,
8810x91, 0x00, 0x74, 0x46, 0xD0, 0x39, 0xE0, 0x25, 0x00, 0x93, 0x00, 0x5C, 0x02,
8820x50, 0x09, 0x40, 0x27, 0x00, 0x91, 0x03, 0x4C, 0x02, 0x10, 0xA9, 0x40, 0x04,
8830x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x24, 0x00, 0x91, 0x02,
8840x44, 0x02, 0x90, 0x89, 0x40, 0x27, 0x00, 0x91, 0x00, 0x54, 0x02, 0x10, 0x09,
8850x40, 0x27, 0x00, 0x9D, 0x40, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x20, 0xD5,
8860x00, 0x74, 0x12, 0xD8, 0x0D, 0x45, 0x23, 0x00, 0x95, 0x00, 0x74, 0x02, 0x10,
8870x09, 0x40, 0x27, 0x40, 0x99, 0x88, 0x44, 0x42, 0x50, 0x09, 0x42, 0x71, 0x00,
8880x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x28, 0x20, 0x01, 0x85, 0x04, 0x04,
8890x1B, 0x90, 0x28, 0x40, 0x23, 0x41, 0x81, 0x0C, 0x04, 0x12, 0x10, 0x48, 0x40,
8900x23, 0x01, 0x8D, 0x04, 0x06, 0x12, 0xD0, 0x88, 0x40, 0x23, 0x01, 0xC1, 0x00,
8910x36, 0x02, 0xD0, 0x08, 0x44, 0x23, 0x03, 0x81, 0x00, 0x14, 0x02, 0x50, 0x08,
8920x44, 0x23, 0x02, 0xC9, 0x00, 0x44, 0x22, 0x10, 0x0D, 0x60, 0x50, 0xA8, 0x00,
8930x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x86, 0x02, 0x13, 0x00, 0x4C, 0x08,
8940xB0, 0x25, 0xC0, 0x87, 0x02, 0x13, 0x02, 0x5C, 0x28, 0x30, 0xA1, 0xC0, 0x83,
8950x42, 0x1F, 0x0A, 0x44, 0x28, 0xD0, 0x21, 0x00, 0x17, 0x00, 0x1F, 0x40, 0x7C,
8960x50, 0xF0, 0x01, 0x40, 0x87, 0x00, 0x17, 0x00, 0x7C, 0x28, 0x30, 0xE1, 0xC1,
8970x87, 0x45, 0x1B, 0x14, 0x0C, 0x08, 0x70, 0x01, 0xC0, 0x75, 0xC0, 0x0A, 0x00,
8980x00, 0x00, 0x00, 0x00, 0x19, 0xA8, 0x2F, 0x12, 0xBF, 0x08, 0xFC, 0x0A, 0x70,
8990x0B, 0xC2, 0x2F, 0x02, 0x9F, 0x0C, 0xFC, 0x22, 0xF0, 0x8B, 0xC0, 0x2F, 0x02,
9000xB3, 0x08, 0x7C, 0x22, 0xF2, 0x4F, 0xC0, 0x2F, 0x22, 0xBF, 0x00, 0x7C, 0x02,
9010xF0, 0x0A, 0xC0, 0x25, 0x03, 0xB6, 0x00, 0xD8, 0x02, 0xF0, 0x0B, 0xC0, 0x3F,
9020x41, 0xB7, 0x00, 0xDC, 0x12, 0xF4, 0x0F, 0xC0, 0x67, 0x20, 0x0E, 0x00, 0x00,
9030x00, 0x00, 0x00, 0x18, 0xA0, 0x2F, 0x05, 0xBF, 0x04, 0xCC, 0x02, 0xF0, 0x0B,
9040xC0, 0x33, 0x02, 0x93, 0x04, 0x7C, 0xD2, 0xB0, 0xC9, 0xC0, 0x2C, 0x00, 0xB3,
9050x00, 0xCC, 0x22, 0x34, 0x09, 0xC0, 0x28, 0x05, 0xBB, 0x00, 0xDC, 0x02, 0xB0,
9060x0B, 0xC0, 0x27, 0x02, 0xB3, 0x20, 0x5C, 0x8A, 0xF2, 0x49, 0xC2, 0x2D, 0x40,
9070xBE, 0x00, 0xCC, 0x02, 0x30, 0x0A, 0xD0, 0x60, 0x00, 0x0E, 0x00, 0x00, 0x00,
9080x00, 0x00, 0x1C, 0x18, 0x15, 0x01, 0x1D, 0x08, 0x45, 0xC8, 0xD0, 0x01, 0x49,
9090x07, 0x02, 0x11, 0x14, 0x30, 0x10, 0x00, 0xC1, 0x42, 0x84, 0x04, 0x01, 0x10,
9100x44, 0x20, 0x11, 0x41, 0x83, 0x05, 0x20, 0x57, 0x40, 0x5C, 0x08, 0x01, 0x01,
9110x40, 0x03, 0x02, 0x11, 0x00, 0x64, 0x14, 0xD0, 0xD1, 0x41, 0x81, 0x44, 0x55,
9120x00, 0x04, 0x01, 0x50, 0x01, 0x40, 0x70, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00,
9130x00, 0x12, 0x20, 0x31, 0x05, 0x8D, 0x00, 0x34, 0xB2, 0xD0, 0x08, 0x40, 0x23,
9140x00, 0x81, 0x2C, 0x34, 0x52, 0x98, 0x48, 0x48, 0x20, 0x03, 0x81, 0xC8, 0x04,
9150x02, 0x10, 0x49, 0x04, 0x20, 0x10, 0x81, 0x00, 0x14, 0x22, 0xD1, 0x08, 0x40,
9160x23, 0x20, 0x81, 0x00, 0x16, 0x12, 0xD0, 0x08, 0x40, 0x21, 0x4B, 0x8D, 0xC0,
9170x45, 0x02, 0x12, 0x09, 0x40, 0x48, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
9180x18, 0x00, 0x25, 0x01, 0x9D, 0x03, 0x74, 0x0A, 0xD2, 0x09, 0x40, 0xA3, 0x40,
9190x91, 0x40, 0x74, 0x02, 0x10, 0x08, 0x40, 0x30, 0x00, 0x91, 0x03, 0x04, 0x02,
9200x10, 0x49, 0x50, 0x26, 0x12, 0x95, 0x00, 0x54, 0x03, 0x50, 0xA9, 0x40, 0x27,
9210x00, 0x91, 0x00, 0x64, 0x12, 0xD0, 0x09, 0x40, 0x25, 0x40, 0x95, 0x08, 0x44,
9220x12, 0x50, 0x09, 0x40, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
9230xA8, 0x67, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC4, 0x27, 0x00, 0x93,
9240x60, 0x7C, 0x02, 0xB0, 0x19, 0xD0, 0x24, 0x40, 0x93, 0x02, 0x44, 0x02, 0x30,
9250x08, 0xC2, 0x24, 0x08, 0x93, 0x02, 0x5C, 0x82, 0xF0, 0x19, 0xC8, 0x27, 0x40,
9260x91, 0x18, 0x5C, 0x06, 0xF0, 0x29, 0xC1, 0x25, 0x00, 0x9F, 0x00, 0x44, 0x02,
9270x20, 0x28, 0xC0, 0x14, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80,
9280x65, 0x00, 0x8F, 0x00, 0x4C, 0x4E, 0xF0, 0x09, 0xC1, 0xE7, 0x30, 0x9F, 0x40,
9290x7C, 0x22, 0xF0, 0x49, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7D, 0x02, 0xF0, 0x09,
9300xC0, 0x65, 0x00, 0x9F, 0x19, 0x7C, 0x02, 0xB0, 0x09, 0xC0, 0x27, 0x10, 0x9F,
9310x01, 0x7C, 0x02, 0xF0, 0x09, 0xC8, 0xE7, 0x40, 0x8B, 0x10, 0x7C, 0x82, 0xF0,
9320x09, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x05,
9330x80, 0x1F, 0x06, 0x4E, 0x08, 0xF0, 0x01, 0xC4, 0x04, 0x80, 0x13, 0x00, 0x7E,
9340x80, 0xF0, 0x01, 0xC0, 0x07, 0x06, 0x1F, 0x12, 0x5C, 0x20, 0xF8, 0x21, 0xC0,
9350x07, 0x94, 0x13, 0x02, 0x3C, 0x00, 0xF0, 0x21, 0xC0, 0x07, 0x00, 0x1B, 0x0A,
9360x7C, 0x00, 0xE1, 0x20, 0xC0, 0x80, 0x04, 0x17, 0x20, 0x4C, 0x00, 0x30, 0x81,
9370xC2, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x1C, 0x00,
9380x7D, 0x00, 0xC4, 0x01, 0x70, 0x57, 0x40, 0x15, 0x80, 0x5B, 0x40, 0x64, 0x01,
9390xB2, 0x05, 0xC2, 0x1F, 0x20, 0x7D, 0x11, 0xC4, 0x25, 0x78, 0x05, 0xE0, 0xDB,
9400x00, 0x7B, 0x04, 0xFC, 0x2D, 0x70, 0x37, 0x44, 0x17, 0x20, 0x53, 0x40, 0x58,
9410x01, 0x70, 0x05, 0xD0, 0x1C, 0x00, 0x71, 0x00, 0xC4, 0x05, 0x14, 0x17, 0x40,
9420x51, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD,
9430x20, 0x06, 0x03, 0x50, 0x3C, 0x40, 0x30, 0x00, 0xC1, 0x00, 0x74, 0x03, 0x50,
9440x0C, 0x60, 0xF3, 0x08, 0xDD, 0x02, 0x14, 0x0F, 0xD1, 0x0C, 0x40, 0x13, 0x02,
9450xC1, 0x03, 0x34, 0x0F, 0x41, 0x4C, 0x60, 0x37, 0x80, 0x81, 0x01, 0x34, 0x03,
9460x90, 0x0C, 0x40, 0x32, 0x00, 0xC5, 0x03, 0x44, 0x1F, 0x50, 0x4C, 0x40, 0x50,
9470x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x28, 0x00, 0xAD, 0x00,
9480x86, 0x41, 0x58, 0x1E, 0x60, 0x3D, 0x10, 0xE9, 0x40, 0xB4, 0x33, 0x10, 0x4E,
9490x40, 0x39, 0x08, 0xED, 0x00, 0x84, 0x03, 0x50, 0x4E, 0x40, 0x19, 0x08, 0xE9,
9500x00, 0x94, 0x09, 0x50, 0x26, 0x40, 0x3B, 0x03, 0xA1, 0x40, 0xB6, 0x13, 0x50,
9510x8E, 0x40, 0x08, 0x04, 0xC1, 0x02, 0x84, 0x40, 0x50, 0x0E, 0x40, 0x05, 0x20,
9520x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x68, 0x00, 0xCD, 0x01, 0x85,
9530x07, 0x70, 0x17, 0xC0, 0x78, 0x01, 0xE1, 0x01, 0xB4, 0x07, 0x50, 0x5E, 0x40,
9540x7B, 0x00, 0xED, 0x01, 0x9C, 0x85, 0xD0, 0x1E, 0x60, 0x7B, 0x00, 0xE1, 0x01,
9550xB4, 0x06, 0x70, 0x1E, 0xC0, 0x7B, 0x40, 0xA3, 0x01, 0xBC, 0x1F, 0xF1, 0x5F,
9560xC0, 0x7A, 0x00, 0xE7, 0x01, 0x8D, 0x07, 0x70, 0x1E, 0xC0, 0x44, 0x40, 0x00,
9570x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x2D, 0x00, 0x9F, 0x00, 0x7C, 0x01,
9580x70, 0x0D, 0xC0, 0xB7, 0x00, 0xDF, 0x00, 0x6C, 0x43, 0xF1, 0x2D, 0xC1, 0x37,
9590x30, 0xDC, 0x00, 0x7C, 0x81, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C,
9600x02, 0x70, 0x0D, 0xC0, 0xB7, 0x04, 0x9B, 0x00, 0x58, 0x83, 0xFA, 0x0D, 0xCC,
9610x06, 0x00, 0xDF, 0x00, 0x7C, 0x00, 0xB0, 0x0D, 0xC0, 0x43, 0x20, 0x06, 0x00,
9620x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6F, 0x00, 0xF3, 0x41, 0xCC, 0x13, 0xF0,
9630x1F, 0xC0, 0xFF, 0x04, 0xFB, 0x91, 0xEC, 0x07, 0x80, 0x9F, 0xC1, 0x5C, 0x08,
9640x7B, 0x89, 0xCC, 0x06, 0x30, 0x1F, 0xC1, 0x5F, 0x00, 0xB3, 0x01, 0xF8, 0xA7,
9650xB0, 0x1F, 0xD0, 0x7C, 0x00, 0xFF, 0x21, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7D,
9660x02, 0x77, 0x01, 0xCC, 0x07, 0xB0, 0x1F, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x00,
9670x00, 0x00, 0x00, 0x15, 0x10, 0xAD, 0x40, 0xA1, 0x30, 0x84, 0x03, 0xD0, 0x0E,
9680x45, 0x3F, 0x00, 0xE1, 0x00, 0x84, 0x63, 0x10, 0x0E, 0x48, 0x0C, 0x02, 0x31,
9690x0C, 0xC5, 0x22, 0x10, 0x0E, 0x43, 0x9B, 0x02, 0xA1, 0x02, 0xB4, 0x01, 0x50,
9700xA2, 0x40, 0x38, 0x80, 0xED, 0x10, 0xB4, 0x03, 0x70, 0x4E, 0x50, 0x18, 0x47,
9710xFB, 0x00, 0xC4, 0x08, 0x14, 0x0A, 0x48, 0x57, 0x60, 0x04, 0x00, 0x00, 0x00,
9720x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x61, 0x08, 0x84, 0x63, 0xD0, 0x86, 0x40,
9730x3B, 0x00, 0xE1, 0x00, 0x24, 0x03, 0x14, 0x0C, 0x50, 0x18, 0x44, 0x61, 0x00,
9740xA4, 0x00, 0x14, 0x0E, 0x40, 0x33, 0x44, 0x21, 0x10, 0xB4, 0x03, 0x11, 0x0E,
9750x40, 0x38, 0x00, 0xED, 0x00, 0xB4, 0x43, 0xD0, 0x0E, 0x44, 0x39, 0x80, 0xF5,
9760x00, 0x84, 0x43, 0x90, 0x0E, 0x40, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
9770x00, 0x04, 0x20, 0x23, 0x14, 0x01, 0x20, 0x04, 0x0E, 0xD0, 0x18, 0x40, 0xB3,
9780x04, 0xC1, 0x00, 0x04, 0x03, 0x10, 0x2C, 0x41, 0x40, 0x00, 0x01, 0x03, 0x64,
9790x00, 0x11, 0x2C, 0x40, 0xF3, 0x00, 0x01, 0x12, 0x34, 0x03, 0x50, 0x38, 0x40,
9800x30, 0x00, 0xCD, 0x03, 0x76, 0x07, 0x50, 0x0D, 0x40, 0x54, 0x00, 0x49, 0x0C,
9810x05, 0x0E, 0x10, 0x9C, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
9820x15, 0x28, 0x25, 0x00, 0x93, 0x01, 0x45, 0x0A, 0xF8, 0x09, 0xC0, 0xBF, 0x40,
9830xF3, 0x00, 0xEC, 0x0F, 0x30, 0x2F, 0xC0, 0x64, 0x00, 0x93, 0x12, 0x6C, 0x03,
9840x30, 0x0E, 0xC0, 0x17, 0x10, 0x13, 0x03, 0x7C, 0x83, 0xB0, 0x18, 0xC0, 0x3C,
9850x20, 0x9F, 0x00, 0xF4, 0x07, 0xF0, 0x5F, 0xC0, 0x75, 0x00, 0x97, 0x22, 0x04,
9860x2F, 0xB0, 0xBC, 0xC0, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
9870x00, 0x87, 0x00, 0x0F, 0x80, 0x7E, 0x00, 0xF0, 0x21, 0xC0, 0x37, 0x00, 0xD7,
9880x80, 0x7C, 0x13, 0x70, 0x0D, 0xC0, 0x87, 0x00, 0x97, 0x02, 0x5C, 0x0A, 0xF0,
9890x0D, 0xE0, 0x17, 0x00, 0x9F, 0x20, 0x3C, 0x08, 0xF0, 0xC1, 0xC8, 0x37, 0x00,
9900x9F, 0x04, 0x7C, 0x03, 0xF1, 0x0D, 0xC0, 0xA7, 0x44, 0xDF, 0x02, 0x7C, 0x88,
9910xF2, 0x0D, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08,
9920x2D, 0x00, 0x9F, 0x00, 0xEC, 0x42, 0xE0, 0x03, 0xE0, 0x3F, 0x00, 0xDF, 0x00,
9930xFC, 0x03, 0xF8, 0x0E, 0xD0, 0x2C, 0x02, 0x3F, 0x10, 0xCD, 0x07, 0x34, 0x0F,
9940xC1, 0x3C, 0x04, 0x3F, 0x00, 0xFC, 0x02, 0xB1, 0x8F, 0xC0, 0x3E, 0x00, 0xBF,
9950x00, 0xCC, 0x03, 0x30, 0x0D, 0xC0, 0x74, 0x40, 0xF7, 0x00, 0xFC, 0x17, 0x30,
9960x0F, 0x00, 0x10, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x20, 0xC6,
9970x08, 0x1D, 0x81, 0x44, 0x44, 0xD0, 0x11, 0x41, 0x37, 0x00, 0xDD, 0x00, 0x74,
9980x03, 0xD0, 0x0D, 0x40, 0xC4, 0x08, 0x19, 0x02, 0x4C, 0x0A, 0x10, 0x0D, 0x40,
9990x84, 0x00, 0x97, 0x03, 0x74, 0x06, 0xB8, 0x1D, 0x00, 0x34, 0x00, 0x8D, 0x01,
10000x54, 0x03, 0x10, 0x0D, 0x40, 0x24, 0x42, 0xD3, 0x09, 0x74, 0x05, 0x10, 0x05,
10010x48, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x64, 0x00,
10020x9D, 0x01, 0x64, 0x04, 0xD0, 0x19, 0x40, 0x37, 0x00, 0xDD, 0x00, 0x54, 0x03,
10030xD0, 0x0D, 0x40, 0x34, 0x00, 0xCD, 0x03, 0x44, 0x19, 0x10, 0x0D, 0x50, 0x14,
10040x00, 0x18, 0x01, 0x74, 0x21, 0x10, 0x01, 0x00, 0x36, 0x00, 0x9D, 0x04, 0x44,
10050x03, 0x10, 0x0D, 0x40, 0x84, 0x40, 0xDD, 0x02, 0x74, 0x03, 0x10, 0x0D, 0x40,
10060x04, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x0D,
10070x01, 0x05, 0x00, 0xD1, 0x08, 0x48, 0x33, 0x80, 0xCD, 0x00, 0x34, 0x03, 0xD0,
10080x0C, 0x40, 0x00, 0x00, 0x8D, 0x00, 0x06, 0x00, 0x10, 0x0D, 0x60, 0x10, 0x10,
10090x85, 0x00, 0x34, 0x00, 0x91, 0x01, 0x40, 0x30, 0x00, 0x9D, 0x80, 0x16, 0x03,
10100x10, 0x0C, 0x50, 0x00, 0x00, 0x81, 0x00, 0x74, 0x00, 0x50, 0x18, 0x50, 0x41,
10110xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x26, 0x00, 0x1F, 0x00,
10120x6C, 0x02, 0xF1, 0x01, 0x40, 0x3F, 0x00, 0xDF, 0x00, 0xDC, 0x03, 0xD0, 0x0F,
10130xC0, 0x34, 0x00, 0x5D, 0x00, 0x4C, 0x01, 0x30, 0x0D, 0xC0, 0x34, 0x00, 0x1F,
10140x00, 0x7C, 0x01, 0x11, 0x05, 0xC0, 0x3E, 0x00, 0x9F, 0x00, 0x4C, 0x03, 0x30,
10150x0D, 0xC0, 0x04, 0x00, 0xDF, 0x80, 0x7C, 0x00, 0x31, 0x0D, 0xC0, 0x00, 0xC0,
10160x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x0F, 0x00, 0x3F, 0x00, 0xFE,
10170x02, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
10180x0F, 0x00, 0x3B, 0x00, 0xDC, 0x00, 0xF0, 0x0F, 0xC4, 0x3F, 0x08, 0x37, 0x00,
10190xBC, 0x00, 0xF2, 0x02, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
10200xC0, 0x0F, 0x00, 0xF7, 0x40, 0xFC, 0x00, 0xB0, 0x0F, 0xC0, 0x16, 0x21, 0x0E,
10210x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x5F, 0x00, 0x73, 0x01, 0xCC, 0x07,
10220xF0, 0x1F, 0xC0, 0x3C, 0x01, 0xB3, 0x01, 0xAC, 0x05, 0xF0, 0x4F, 0xC0, 0x4D,
10230x08, 0x3F, 0x03, 0x4C, 0x04, 0xF0, 0x0F, 0xC0, 0x4F, 0x40, 0x33, 0x01, 0xFC,
10240x0C, 0x71, 0x90, 0xC0, 0x4C, 0x00, 0xA3, 0x01, 0xED, 0x04, 0xF0, 0x12, 0xC0,
10250x4F, 0x00, 0x3F, 0x02, 0xCE, 0x26, 0x34, 0x03, 0xC0, 0x0F, 0x08, 0x0E, 0x00,
10260x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0x53, 0x00, 0x51, 0x01, 0xEC, 0x07, 0xD0,
10270x1F, 0x40, 0x74, 0x00, 0x95, 0x01, 0x51, 0x06, 0xD0, 0x9F, 0x42, 0x44, 0x00,
10280x1D, 0x00, 0x4C, 0x04, 0xD0, 0x3F, 0x40, 0x47, 0x00, 0x11, 0x01, 0x74, 0x00,
10290x10, 0x45, 0x44, 0x45, 0x00, 0x11, 0x41, 0x44, 0x00, 0xD0, 0x11, 0x40, 0x47,
10300x00, 0x97, 0x82, 0x6C, 0x10, 0x10, 0x11, 0x48, 0x0F, 0x00, 0x0C, 0x00, 0x00,
10310x00, 0x00, 0x00, 0x11, 0xA0, 0x25, 0x00, 0x81, 0x00, 0x04, 0x03, 0x51, 0x0C,
10320x40, 0xB0, 0x00, 0x45, 0x00, 0x04, 0x01, 0x50, 0x0C, 0x40, 0x21, 0x00, 0x05,
10330x04, 0x24, 0x03, 0xD0, 0x2C, 0x40, 0x07, 0x00, 0x01, 0x00, 0x74, 0x10, 0xD0,
10340x09, 0x40, 0x35, 0x00, 0x95, 0x80, 0x14, 0x50, 0xD1, 0x00, 0x40, 0x01, 0x08,
10350x4D, 0x06, 0x44, 0x02, 0x10, 0x08, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00,
10360x00, 0x00, 0x03, 0xA0, 0x27, 0x00, 0xC1, 0x00, 0x64, 0x03, 0xD0, 0x0D, 0x40,
10370x34, 0x00, 0x55, 0x06, 0x54, 0x02, 0xD0, 0x0D, 0x40, 0x44, 0x00, 0x0D, 0x81,
10380x44, 0x23, 0xD0, 0x0D, 0x40, 0x07, 0x00, 0x11, 0x04, 0x74, 0x46, 0x10, 0x0D,
10390x40, 0x35, 0x40, 0x15, 0x02, 0x50, 0x06, 0xD0, 0x11, 0x60, 0x07, 0x00, 0x95,
10400x08, 0x45, 0x06, 0x10, 0x11, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
10410x00, 0x00, 0xA8, 0x73, 0x00, 0x93, 0x02, 0x4C, 0x03, 0xF0, 0x0C, 0xD0, 0x34,
10420x80, 0xC7, 0x03, 0x6C, 0x1B, 0xF0, 0x0C, 0xC0, 0x65, 0x01, 0x9F, 0x01, 0x6C,
10430x4E, 0xF0, 0x0D, 0xC0, 0x83, 0x01, 0x13, 0x00, 0x3C, 0x04, 0x70, 0x3D, 0xC0,
10440xF5, 0x08, 0x87, 0x03, 0x54, 0x44, 0xF0, 0x31, 0xC1, 0x07, 0x11, 0x1F, 0x05,
10450x44, 0x06, 0x30, 0x31, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
10460x07, 0x80, 0xFD, 0x40, 0xBF, 0x00, 0xFC, 0x03, 0xF2, 0x0F, 0xC0, 0x3B, 0x20,
10470xFF, 0x00, 0xE8, 0x96, 0xF0, 0x0F, 0xC0, 0x0F, 0x20, 0x3F, 0x00, 0xFC, 0x06,
10480xE0, 0x0D, 0xC4, 0x4E, 0x02, 0x3F, 0x41, 0xF4, 0x02, 0xF0, 0x2F, 0xC0, 0xBF,
10490x00, 0xBB, 0x02, 0xC4, 0x02, 0xD0, 0x03, 0x41, 0x0F, 0x00, 0x1F, 0x01, 0xFC,
10500x00, 0xF0, 0x03, 0xC4, 0x3F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
10510x08, 0xA5, 0x00, 0x93, 0x02, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
10520x00, 0x6E, 0x0B, 0x30, 0x0D, 0xC0, 0xA4, 0x80, 0x9F, 0x02, 0x7C, 0x02, 0xF0,
10530x8D, 0xC2, 0x07, 0x02, 0x1E, 0x00, 0x7C, 0x18, 0xF0, 0x0D, 0xC0, 0x36, 0x01,
10540x9F, 0x06, 0x6C, 0x08, 0xF2, 0x81, 0xC8, 0x16, 0x44, 0x83, 0x02, 0x4D, 0x8A,
10550x30, 0x29, 0xC4, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
10560x24, 0x00, 0x91, 0x00, 0x74, 0x03, 0x50, 0x0D, 0x40, 0x3F, 0x00, 0xDD, 0x07,
10570x76, 0x1E, 0xF0, 0xAF, 0x40, 0x44, 0x00, 0x9F, 0x80, 0x74, 0x4F, 0xD0, 0x1F,
10580xC0, 0xC4, 0x00, 0x1F, 0x0C, 0x70, 0x02, 0xF0, 0x0C, 0x40, 0xF0, 0x08, 0x9D,
10590x02, 0x50, 0x02, 0xD2, 0x11, 0x50, 0x54, 0x04, 0x91, 0x09, 0x64, 0x02, 0x34,
10600x39, 0xC0, 0x6C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x22,
10610x00, 0xC1, 0x40, 0x24, 0x03, 0x10, 0x4C, 0x60, 0x33, 0x00, 0x4D, 0x04, 0x34,
10620x1E, 0x10, 0x1C, 0x40, 0x40, 0x00, 0x89, 0x00, 0x36, 0x11, 0xD0, 0x4C, 0x60,
10630x02, 0x04, 0x09, 0x00, 0x34, 0x0C, 0xDA, 0x00, 0x00, 0x82, 0x02, 0x08, 0x00,
10640x14, 0x00, 0xD0, 0x20, 0x40, 0x40, 0x00, 0x09, 0x83, 0x64, 0x32, 0x90, 0xC8,
10650x40, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x08, 0x7A, 0x40,
10660xE1, 0x01, 0x34, 0x07, 0x50, 0x1E, 0x40, 0x7B, 0x00, 0x6D, 0x81, 0xF6, 0x26,
10670xD0, 0x1C, 0x40, 0x48, 0x00, 0x25, 0x49, 0xB6, 0x25, 0xD0, 0x9E, 0x40, 0x48,
10680x00, 0x2D, 0x01, 0xB4, 0x05, 0xD1, 0x53, 0x40, 0x4A, 0x01, 0x7D, 0x81, 0x94,
10690x24, 0xD8, 0x12, 0x60, 0x4C, 0x80, 0x69, 0x21, 0xA4, 0x24, 0x10, 0x13, 0x40,
10700x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0xA2, 0x00, 0x81,
10710x00, 0x2C, 0x23, 0x10, 0x0C, 0xC0, 0x33, 0x00, 0x4F, 0x00, 0x34, 0x22, 0x10,
10720x0C, 0xC1, 0x60, 0x05, 0x89, 0x07, 0x3C, 0x15, 0xF0, 0x8C, 0xC0, 0x03, 0x02,
10730x0F, 0x01, 0x38, 0x46, 0xF0, 0x50, 0xE8, 0x42, 0x10, 0xCD, 0x14, 0x14, 0x23,
10740xF0, 0x80, 0xC0, 0x00, 0x00, 0xCB, 0x10, 0x4C, 0x23, 0xB2, 0x2D, 0xE0, 0x4A,
10750x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x2D, 0x00, 0xFF, 0x80,
10760xFC, 0x07, 0x70, 0x1F, 0xC0, 0x3F, 0x00, 0x7F, 0x08, 0xFC, 0x22, 0x70, 0x0D,
10770xD0, 0x27, 0x02, 0xBE, 0x00, 0xFC, 0x23, 0xF0, 0x8F, 0xC0, 0x0F, 0x02, 0x35,
10780x40, 0xFC, 0x03, 0x70, 0x0F, 0xE8, 0x3D, 0x00, 0x7F, 0x00, 0xDC, 0x23, 0xF0,
10790x03, 0xC8, 0x09, 0x02, 0xF7, 0x00, 0xDC, 0x23, 0xD0, 0x83, 0xD0, 0x0B, 0x60,
10800x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x67, 0x00, 0x93, 0x00, 0x7C,
10810x23, 0xF0, 0x1D, 0xD0, 0x34, 0x00, 0x57, 0x00, 0x7C, 0x03, 0x30, 0xDC, 0xC0,
10820x65, 0x20, 0x9B, 0x20, 0x6C, 0x04, 0xB0, 0x9D, 0xC0, 0x04, 0x00, 0x1F, 0x80,
10830x7C, 0x07, 0xBC, 0x01, 0xC0, 0x07, 0x00, 0x5F, 0x01, 0x6E, 0x07, 0x39, 0x01,
10840xC0, 0x07, 0x80, 0x5F, 0x00, 0x4C, 0x01, 0x33, 0x09, 0xC0, 0x40, 0x00, 0x0E,
10850x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x39, 0x00, 0xAB, 0x00, 0xB4, 0x13,
10860xD0, 0x2C, 0x40, 0x38, 0x11, 0x61, 0x00, 0x8C, 0x02, 0x18, 0x4E, 0x41, 0x28,
10870x30, 0x31, 0x00, 0x84, 0x03, 0x11, 0xCC, 0x40, 0x08, 0x88, 0x2D, 0x00, 0xB4,
10880x03, 0x10, 0x0A, 0x42, 0x3B, 0x80, 0x6D, 0x00, 0x94, 0x03, 0x14, 0x02, 0x40,
10890x0B, 0x00, 0x7D, 0xC0, 0xC4, 0x01, 0xB0, 0x0A, 0x40, 0x4D, 0x00, 0x06, 0x00,
10900x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x69, 0x00, 0xA1, 0x03, 0x94, 0x07, 0x52,
10910x5E, 0x60, 0x70, 0x03, 0x65, 0x43, 0xB4, 0x07, 0x90, 0x1E, 0x40, 0x6D, 0x00,
10920xA5, 0x01, 0x84, 0x04, 0x10, 0x1E, 0x40, 0xC9, 0x00, 0x25, 0x01, 0xB4, 0x07,
10930x10, 0x16, 0x44, 0x4B, 0x10, 0xFD, 0x01, 0x94, 0x87, 0x10, 0x16, 0x44, 0x5B,
10940x20, 0xED, 0x01, 0xA4, 0x05, 0x10, 0x1C, 0x64, 0x10, 0x00, 0x04, 0x00, 0x00,
10950x00, 0x00, 0x00, 0x16, 0x28, 0x23, 0x04, 0x89, 0x00, 0x34, 0x03, 0xD0, 0x0C,
10960x40, 0x30, 0x00, 0x41, 0x45, 0x30, 0x2E, 0x10, 0x0C, 0x40, 0x30, 0x00, 0xC5,
10970x20, 0x04, 0x1F, 0x10, 0x0C, 0x50, 0xF1, 0x01, 0xCD, 0x48, 0x34, 0x0F, 0x12,
10980x3C, 0x41, 0xF3, 0x00, 0xCD, 0x22, 0x14, 0x13, 0x10, 0x1C, 0x40, 0xF3, 0x0C,
10990xCD, 0x07, 0x24, 0x4F, 0x10, 0x4C, 0x48, 0x59, 0x20, 0x0C, 0x00, 0x00, 0x00,
11000x00, 0x00, 0x17, 0xA0, 0x9F, 0x00, 0x73, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0,
11010x14, 0x00, 0x77, 0x00, 0xB4, 0x01, 0xB5, 0x05, 0xC0, 0xDD, 0x01, 0x77, 0x08,
11020xEC, 0x0D, 0xB0, 0x05, 0xE0, 0xDD, 0x00, 0x7F, 0x0B, 0xFC, 0x15, 0xB1, 0x37,
11030xC1, 0xDB, 0x16, 0x7F, 0x02, 0xDD, 0x09, 0x30, 0x27, 0xC1, 0x5F, 0x14, 0x7F,
11040x04, 0xE4, 0x1D, 0x10, 0x17, 0x45, 0x5C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
11050x00, 0x12, 0x80, 0x05, 0x00, 0x1F, 0x24, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07,
11060x00, 0x1F, 0x80, 0x4C, 0x10, 0xF0, 0x21, 0xC0, 0x07, 0x04, 0x12, 0x00, 0x7D,
11070x20, 0xF0, 0x01, 0x00, 0x86, 0x00, 0x1F, 0x00, 0x7C, 0x48, 0xF2, 0x01, 0xC0,
11080x87, 0x00, 0x1F, 0x0A, 0x64, 0x20, 0xF0, 0x01, 0xC1, 0x87, 0x00, 0x1F, 0x40,
11090x5D, 0x00, 0xF4, 0x01, 0xC0, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
11100x10, 0x00, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0xF0, 0x89, 0xC0, 0x27, 0x00,
11110x93, 0x80, 0x7C, 0x0A, 0x30, 0x19, 0x40, 0x27, 0x00, 0x9F, 0x00, 0x6C, 0x02,
11120xF0, 0x19, 0xC8, 0x26, 0x00, 0x93, 0x01, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27,
11130x00, 0x93, 0x10, 0x5C, 0x02, 0xF0, 0x19, 0xC0, 0x24, 0x00, 0x9F, 0x02, 0x6C,
11140x0A, 0x30, 0x58, 0xC4, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
11150x20, 0x26, 0x00, 0x8D, 0x00, 0xC4, 0x02, 0xD8, 0x1B, 0x40, 0x27, 0x00, 0x95,
11160x01, 0x74, 0x02, 0x50, 0x09, 0x44, 0x27, 0x00, 0x87, 0x00, 0x44, 0x06, 0xD0,
11170x29, 0x44, 0xE3, 0x1C, 0x91, 0x01, 0x74, 0x12, 0xD0, 0x09, 0x4A, 0x67, 0x00,
11180x95, 0x22, 0x74, 0x82, 0xD0, 0x18, 0x40, 0x24, 0x08, 0x9C, 0x03, 0x04, 0x42,
11190x14, 0x19, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0,
11200x24, 0x00, 0xDD, 0x00, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x23, 0x00, 0x91, 0x04,
11210x54, 0x02, 0x10, 0x69, 0x44, 0x27, 0x80, 0x9D, 0x00, 0x44, 0x06, 0xD0, 0x89,
11220x41, 0x27, 0x41, 0xD1, 0x0A, 0x74, 0x02, 0xD2, 0x0D, 0x48, 0x37, 0x02, 0x91,
11230x82, 0x74, 0x02, 0x52, 0x89, 0x00, 0x24, 0x00, 0x8D, 0x00, 0x42, 0x03, 0x10,
11240x09, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x28, 0xA0,
11250x00, 0x9D, 0x02, 0x04, 0x0A, 0xD0, 0x08, 0x40, 0xA3, 0x00, 0x85, 0x20, 0x74,
11260x03, 0x50, 0x08, 0x48, 0x23, 0x00, 0x95, 0x08, 0x04, 0x83, 0xD2, 0x08, 0x40,
11270x23, 0x00, 0x81, 0x00, 0x34, 0x22, 0xD0, 0x88, 0x40, 0x23, 0x00, 0x85, 0x80,
11280x34, 0x22, 0xD0, 0x09, 0x50, 0x30, 0x90, 0xCD, 0x68, 0x45, 0xA2, 0x10, 0x48,
11290x50, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x02, 0x00,
11300x1F, 0x00, 0x4D, 0x04, 0xD0, 0x11, 0xC0, 0x07, 0x05, 0x13, 0x80, 0x5C, 0x80,
11310x30, 0x41, 0xC1, 0x07, 0x20, 0x1F, 0x02, 0x4D, 0x00, 0xF0, 0x41, 0xC1, 0x07,
11320x00, 0x13, 0x80, 0x38, 0x08, 0xF0, 0x21, 0xC0, 0x17, 0x20, 0x13, 0x00, 0x3E,
11330x08, 0x70, 0x01, 0xC0, 0x04, 0x08, 0x1F, 0x16, 0x4C, 0x08, 0x30, 0x05, 0xC0,
11340x74, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA8, 0x7F, 0x00, 0xBF,
11350x01, 0x7C, 0x0E, 0xD0, 0x29, 0xC0, 0x67, 0x10, 0xBF, 0x00, 0xBC, 0x02, 0xF0,
11360x09, 0xC0, 0x2B, 0x00, 0xB7, 0x04, 0x9C, 0x02, 0xF2, 0x09, 0xC0, 0x3F, 0x20,
11370xFF, 0x40, 0xFC, 0x12, 0xD0, 0x4B, 0xC0, 0x2F, 0x10, 0xAF, 0x80, 0xFE, 0x12,
11380xF0, 0x0B, 0xC8, 0x2F, 0x00, 0xBE, 0x44, 0xDC, 0x13, 0xF0, 0x8B, 0xC0, 0x77,
11390x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x27, 0x00, 0x9F, 0x42,
11400x7C, 0x36, 0xF0, 0x1B, 0xC1, 0x27, 0x02, 0xBF, 0x00, 0xDC, 0x02, 0xF2, 0x4B,
11410xC1, 0x2F, 0x00, 0xDB, 0x80, 0xCC, 0x02, 0xF0, 0x0B, 0xC8, 0x2F, 0x00, 0xBF,
11420x00, 0xC4, 0x22, 0xF0, 0x09, 0x40, 0x28, 0x00, 0xBE, 0x00, 0x4C, 0x82, 0x30,
11430x0B, 0xC0, 0x2B, 0x08, 0xBF, 0x00, 0xCC, 0x02, 0x30, 0x0B, 0xC0, 0x74, 0x00,
11440x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x10, 0x47, 0x05, 0x1D, 0xC1, 0x34,
11450x0C, 0xD0, 0x21, 0x40, 0x43, 0x20, 0x1D, 0x00, 0x44, 0x00, 0xD0, 0x01, 0x40,
11460x07, 0x00, 0x1D, 0x70, 0x44, 0x00, 0xD0, 0x81, 0x40, 0x07, 0x00, 0x1D, 0x00,
11470x44, 0x11, 0x72, 0x01, 0x41, 0x04, 0x30, 0x1D, 0x20, 0x54, 0x50, 0x10, 0x01,
11480x40, 0x17, 0x00, 0x1D, 0x00, 0x0C, 0x00, 0x10, 0x01, 0x44, 0x61, 0x20, 0x0C,
11490x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x21, 0x00, 0x8D, 0x00, 0x34, 0x32,
11500xD0, 0x08, 0x40, 0x23, 0x03, 0x8D, 0x00, 0x05, 0x02, 0xD0, 0x08, 0x40, 0x23,
11510x00, 0x89, 0x04, 0x05, 0x02, 0xD0, 0x08, 0x08, 0x33, 0x00, 0x9D, 0x00, 0x05,
11520x12, 0xD8, 0x48, 0x40, 0x20, 0x00, 0x8D, 0x00, 0x14, 0x92, 0x10, 0x08, 0x60,
11530x23, 0x00, 0x8D, 0x00, 0x04, 0x82, 0x10, 0x09, 0x40, 0x4A, 0x00, 0x04, 0x00,
11540x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x25, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0,
11550x09, 0x40, 0x27, 0x08, 0xDD, 0x00, 0x44, 0x02, 0xD0, 0x0D, 0x40, 0x67, 0x20,
11560x8D, 0x18, 0x44, 0x02, 0xD0, 0x09, 0x44, 0x66, 0x10, 0x9D, 0x00, 0x44, 0x02,
11570x50, 0x28, 0x54, 0xB4, 0x02, 0x9D, 0x10, 0x55, 0x02, 0x10, 0x09, 0x41, 0x27,
11580x00, 0xDD, 0x00, 0x04, 0x02, 0x90, 0x19, 0x60, 0x63, 0x28, 0x04, 0x00, 0x00,
11590x00, 0x00, 0x00, 0x05, 0xA8, 0xEF, 0x00, 0xBF, 0x0D, 0xFC, 0x82, 0xF2, 0x09,
11600xC0, 0x2F, 0x00, 0x9F, 0x13, 0x4C, 0x02, 0xF0, 0x09, 0xC4, 0xE7, 0x24, 0x9B,
11610x81, 0x44, 0x46, 0xF2, 0x09, 0xC8, 0x67, 0x20, 0x9F, 0x00, 0x4C, 0x02, 0xF0,
11620x09, 0xC0, 0xE4, 0x00, 0x9F, 0x20, 0x54, 0x1A, 0x30, 0x29, 0xC0, 0x27, 0x00,
11630x9F, 0x12, 0x4C, 0x0E, 0x34, 0x59, 0xC0, 0x16, 0x00, 0x0C, 0x00, 0x00, 0x00,
11640x00, 0x00, 0x12, 0x80, 0xE5, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0,
11650x27, 0x00, 0x9F, 0x05, 0x6C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x01,
11660x7C, 0x62, 0xE0, 0x09, 0x00, 0x27, 0x00, 0x9F, 0x02, 0x7C, 0x02, 0x72, 0x49,
11670xC0, 0x27, 0x00, 0x9F, 0x03, 0x7C, 0x22, 0xD4, 0x99, 0xC0, 0x27, 0x01, 0x9D,
11680x13, 0x7F, 0xD2, 0x70, 0x09, 0xC1, 0x59, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
11690x00, 0x10, 0x08, 0x85, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xB0, 0x01, 0xD0, 0x06,
11700x00, 0x13, 0x02, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x87, 0x80, 0x1F, 0x02, 0x5C,
11710x88, 0x30, 0x01, 0xC5, 0x85, 0x40, 0x13, 0x30, 0x4C, 0x00, 0xF0, 0x21, 0xC0,
11720x07, 0x01, 0x13, 0x23, 0x5C, 0x08, 0xF0, 0x01, 0xC1, 0x05, 0x14, 0x03, 0x00,
11730x4C, 0x00, 0x21, 0x01, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
11740x14, 0xA0, 0x14, 0x00, 0x5D, 0x00, 0x74, 0x01, 0x58, 0x77, 0x40, 0x14, 0x00,
11750x65, 0x02, 0xD8, 0x01, 0xD0, 0x17, 0x40, 0x17, 0x80, 0x5C, 0x00, 0xD4, 0x01,
11760x11, 0x07, 0x01, 0x9D, 0x00, 0x61, 0x02, 0xC4, 0x85, 0x32, 0x05, 0xC0, 0x9D,
11770x40, 0x61, 0x10, 0x48, 0x01, 0xD1, 0x07, 0x40, 0x5F, 0x04, 0x71, 0x00, 0xD4,
11780x81, 0x50, 0x07, 0x48, 0x43, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
11790xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x10, 0x78, 0x40, 0x30, 0x00, 0x41,
11800x04, 0x24, 0x02, 0xD0, 0xDC, 0x40, 0x33, 0x20, 0xCD, 0x40, 0x14, 0x03, 0x10,
11810x0C, 0x0A, 0xB0, 0x0C, 0xC1, 0x08, 0x05, 0x07, 0xD0, 0x0C, 0x40, 0x71, 0x00,
11820xC1, 0x80, 0x50, 0x83, 0xD0, 0x0C, 0x40, 0x31, 0x00, 0xC1, 0x03, 0x04, 0x2B,
11830x1C, 0x2D, 0x40, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80,
11840x38, 0x01, 0xED, 0x04, 0xB4, 0x27, 0x58, 0x1A, 0x40, 0x78, 0x01, 0xF5, 0x00,
11850x94, 0x02, 0xD8, 0x0A, 0x40, 0x3B, 0x00, 0xED, 0x0C, 0x94, 0x0C, 0x10, 0x1A,
11860x4A, 0x7D, 0x00, 0xE1, 0x20, 0x84, 0x43, 0x00, 0x4E, 0x40, 0x4D, 0x24, 0xF1,
11870x40, 0xA4, 0x03, 0xD0, 0x0E, 0x40, 0x7F, 0x08, 0xE1, 0x82, 0x84, 0x01, 0x10,
11880x06, 0x44, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0xF8,
11890x00, 0xEF, 0x03, 0xBC, 0x07, 0x30, 0x1A, 0xC2, 0x78, 0x01, 0x63, 0x01, 0xAC,
11900x06, 0xF0, 0x1E, 0xC0, 0x7B, 0x00, 0xFD, 0x31, 0x96, 0x04, 0x30, 0x1A, 0x40,
11910x79, 0x00, 0x63, 0x01, 0x8C, 0x07, 0xF0, 0x1E, 0xC1, 0x49, 0x20, 0xE3, 0x01,
11920x9E, 0x17, 0xF2, 0x1E, 0xC8, 0x79, 0x40, 0xF3, 0x01, 0x8D, 0x06, 0x30, 0x1E,
11930xC0, 0x53, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x35, 0x00,
11940xDF, 0x00, 0x7C, 0x03, 0xF0, 0x08, 0xC0, 0x37, 0x10, 0xCF, 0x00, 0x7C, 0x02,
11950xF1, 0x01, 0xC0, 0x37, 0x00, 0xDD, 0x02, 0x2C, 0x00, 0xF0, 0x08, 0xE0, 0x33,
11960x00, 0x4F, 0x00, 0x7C, 0x01, 0xA2, 0x4D, 0xC0, 0x05, 0x20, 0xCF, 0x20, 0x5C,
11970x1B, 0xF2, 0x09, 0xE0, 0x37, 0x00, 0xDD, 0x00, 0x7C, 0x00, 0xF0, 0x09, 0xC0,
11980x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x79, 0x00, 0xE3,
11990x01, 0xCC, 0x13, 0xF8, 0x8F, 0xC0, 0x7D, 0x04, 0x7F, 0x09, 0xCC, 0x06, 0xF0,
12000x9F, 0xC0, 0x7F, 0x02, 0xF7, 0x01, 0x3C, 0x24, 0x70, 0x9B, 0xC0, 0x47, 0x22,
12010xBF, 0x0D, 0xCC, 0x06, 0xB0, 0x9D, 0x41, 0x4F, 0x02, 0xBF, 0x01, 0xCD, 0x4F,
12020x30, 0x9E, 0xC8, 0x7C, 0x12, 0x3B, 0x09, 0xCC, 0x07, 0x34, 0x97, 0xD8, 0x18,
12030x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x38, 0x00, 0xE1, 0x18,
12040x84, 0x03, 0xD8, 0x0E, 0x40, 0x38, 0x20, 0xED, 0x0C, 0xAC, 0x02, 0xD0, 0x0A,
12050x44, 0x33, 0x00, 0xCD, 0x08, 0xB4, 0x24, 0x10, 0xCA, 0x08, 0x7B, 0x01, 0x4D,
12060x98, 0x44, 0x43, 0x10, 0x5E, 0x40, 0x03, 0x03, 0xAD, 0x04, 0x94, 0x23, 0x10,
12070x0E, 0x42, 0x29, 0x03, 0x2D, 0x0C, 0xFC, 0x11, 0x10, 0x86, 0x40, 0x54, 0x00,
12080x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7D, 0x00, 0xF1, 0x01, 0x84,
12090x27, 0xD0, 0xC8, 0x40, 0x79, 0x02, 0x7D, 0x00, 0xA6, 0x02, 0x50, 0x0A, 0x48,
12100x3B, 0x80, 0xED, 0x00, 0xF4, 0x00, 0xD0, 0x02, 0x0A, 0x09, 0x08, 0x3D, 0x06,
12110xA6, 0x22, 0x10, 0x0E, 0x44, 0x0B, 0x14, 0xBD, 0x00, 0xC6, 0x03, 0x10, 0x0E,
12120x40, 0x19, 0x10, 0x2D, 0x40, 0xC4, 0x02, 0x12, 0x06, 0x42, 0x60, 0x02, 0x04,
12130x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x31, 0x00, 0xC1, 0x00, 0x04, 0x03,
12140xD8, 0x08, 0x40, 0x30, 0x00, 0xCD, 0x00, 0x24, 0x22, 0xD0, 0x00, 0x40, 0x33,
12150x00, 0xCD, 0x20, 0x34, 0x4C, 0x90, 0x00, 0x40, 0xB2, 0x01, 0x4D, 0x01, 0x24,
12160x85, 0x9A, 0x2D, 0x48, 0xC3, 0x00, 0x8D, 0x10, 0x14, 0x9B, 0x10, 0x28, 0x41,
12170x81, 0x00, 0x8D, 0x08, 0x05, 0x08, 0x10, 0xB8, 0x40, 0x08, 0x20, 0x04, 0x00,
12180x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x35, 0x41, 0xD3, 0x01, 0x4D, 0x03, 0xD0,
12190x09, 0xC0, 0x35, 0x00, 0x5F, 0x00, 0x2C, 0x03, 0x70, 0x05, 0xC0, 0x77, 0x04,
12200xFF, 0x11, 0x7C, 0x1C, 0xF0, 0x01, 0xC0, 0x35, 0x08, 0xDF, 0x02, 0x6D, 0x09,
12210x34, 0x0F, 0xC0, 0xC7, 0x20, 0xCD, 0x81, 0xC4, 0x03, 0x30, 0x2D, 0xC0, 0x21,
12220x00, 0xDB, 0x2B, 0x44, 0x0B, 0x30, 0xB9, 0xC0, 0x74, 0x00, 0x06, 0x00, 0x00,
12230x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xDF, 0x00, 0x3C, 0x03, 0xF0, 0x29,
12240xC0, 0x37, 0x00, 0x5F, 0x42, 0x7C, 0x4A, 0xF0, 0x05, 0xC0, 0x27, 0x91, 0xDF,
12250x24, 0x7C, 0x00, 0x70, 0x09, 0xC0, 0x37, 0x0A, 0xDF, 0x02, 0x5C, 0x42, 0x70,
12260xCD, 0xC0, 0x07, 0x04, 0x9F, 0x01, 0x6C, 0x03, 0xF0, 0x25, 0x40, 0x07, 0x01,
12270xDF, 0x02, 0x7C, 0x09, 0xF0, 0x29, 0xC8, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00,
12280x00, 0x00, 0x05, 0x08, 0x3F, 0x00, 0xFF, 0x00, 0xC8, 0x03, 0x30, 0x1B, 0xC0,
12290x3F, 0x20, 0x7F, 0x41, 0xFC, 0x27, 0x30, 0x46, 0xC0, 0x7E, 0x01, 0xFF, 0x20,
12300xCC, 0x0C, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xBF, 0x08, 0xF8, 0x05, 0xB4, 0x0F,
12310xC0, 0x0D, 0x08, 0xFF, 0x00, 0xDC, 0x03, 0xF0, 0x0F, 0xC0, 0x2F, 0x10, 0xE7,
12320x01, 0xCC, 0x46, 0xF0, 0x09, 0xC0, 0x07, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00,
12330x00, 0x85, 0x20, 0x36, 0x00, 0xDD, 0x00, 0x54, 0x03, 0x50, 0x19, 0x40, 0x37,
12340x00, 0x1D, 0x02, 0x74, 0x0D, 0x10, 0x15, 0x40, 0x24, 0x00, 0xDD, 0x00, 0x44,
12350x0C, 0xD1, 0x19, 0xC0, 0x07, 0x01, 0x9D, 0x02, 0x74, 0x08, 0x90, 0x0D, 0x40,
12360xC4, 0x00, 0x9D, 0x03, 0x6C, 0x03, 0xD2, 0xF5, 0x40, 0x47, 0x00, 0x11, 0x01,
12370x44, 0x02, 0xD0, 0x39, 0x48, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
12380x01, 0xA0, 0x34, 0x00, 0xCD, 0x00, 0x54, 0x03, 0x90, 0x8D, 0x41, 0x37, 0x00,
12390x5D, 0x08, 0x74, 0x43, 0x50, 0x0D, 0x40, 0x36, 0x00, 0xC9, 0x00, 0x44, 0xC0,
12400xD8, 0x11, 0x00, 0x07, 0x02, 0x9D, 0x02, 0x36, 0x18, 0x12, 0x0D, 0x40, 0x46,
12410x00, 0x9D, 0x03, 0x60, 0x03, 0xD0, 0x0D, 0x40, 0xE7, 0x00, 0x11, 0x04, 0x44,
12420x9B, 0xD0, 0x11, 0x4D, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
12430x28, 0x30, 0x00, 0xCD, 0x00, 0x14, 0x03, 0x50, 0x04, 0x40, 0x32, 0x00, 0xCD,
12440x00, 0x34, 0x02, 0x56, 0x0C, 0x42, 0x20, 0x80, 0xCD, 0x00, 0x05, 0x10, 0xD0,
12450x18, 0x40, 0x31, 0x09, 0x4D, 0x20, 0x34, 0x22, 0x11, 0x6C, 0x50, 0x02, 0x02,
12460x8D, 0x00, 0x24, 0x03, 0xD2, 0x0C, 0x42, 0x03, 0x80, 0x01, 0x00, 0x04, 0x00,
12470xD0, 0x08, 0x4A, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB0,
12480x3E, 0x08, 0xFF, 0x00, 0xDC, 0x03, 0x30, 0x0D, 0xC0, 0x3F, 0x00, 0x5F, 0x00,
12490x74, 0x03, 0x70, 0x09, 0xC0, 0x36, 0x10, 0xFB, 0x00, 0x4C, 0x50, 0x71, 0x01,
12500x64, 0x07, 0x00, 0x9F, 0x08, 0x7C, 0x00, 0xB0, 0x6F, 0xC0, 0x07, 0xA0, 0x9F,
12510x80, 0xDC, 0x03, 0xF0, 0x0D, 0xC0, 0x07, 0x40, 0x47, 0x80, 0x4E, 0x01, 0xF2,
12520x01, 0xC0, 0x07, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA0, 0x3F,
12530x00, 0xFF, 0x00, 0xFC, 0x03, 0x70, 0x07, 0xC0, 0x3F, 0x00, 0xAF, 0x00, 0xFC,
12540x01, 0xB0, 0x03, 0xC0, 0x2F, 0x04, 0xFC, 0x10, 0xFC, 0x40, 0xF0, 0x03, 0xC0,
12550x8F, 0x08, 0x2F, 0x00, 0xFC, 0x10, 0xD2, 0x8F, 0xC0, 0x0D, 0x01, 0x2E, 0x00,
12560xBC, 0x03, 0xE0, 0x0F, 0xC2, 0x0F, 0x00, 0x3F, 0x00, 0xFD, 0x00, 0xF0, 0x0B,
12570xC2, 0x17, 0x64, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x3F, 0x00,
12580xA3, 0x40, 0xCC, 0x02, 0xF0, 0x0B, 0xC0, 0x3F, 0x11, 0xB3, 0x20, 0xFC, 0x26,
12590xB0, 0x9F, 0xD2, 0x2C, 0x00, 0xFF, 0x21, 0xEC, 0x10, 0xB2, 0x8F, 0xC8, 0x3C,
12600x12, 0xFF, 0x04, 0xEC, 0x20, 0x72, 0x0F, 0xC0, 0x7F, 0x02, 0xF3, 0x03, 0xED,
12610x1B, 0xB0, 0x9B, 0xC0, 0x7C, 0x0A, 0xDF, 0x01, 0xFC, 0x1A, 0x34, 0x49, 0xC0,
12620x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3F, 0x00, 0xB1,
12630x01, 0x44, 0x82, 0x70, 0x01, 0x02, 0x3F, 0x22, 0x91, 0x00, 0x34, 0x13, 0x10,
12640x4C, 0x48, 0xB4, 0x01, 0xD1, 0x01, 0x54, 0x24, 0xD0, 0x6F, 0x60, 0xBC, 0x01,
12650xFD, 0x09, 0x44, 0x18, 0x10, 0x9F, 0x40, 0x33, 0x01, 0xD1, 0x00, 0x84, 0x1B,
12660x14, 0x48, 0x50, 0x34, 0x21, 0xDD, 0x04, 0x74, 0x12, 0x11, 0x19, 0x40, 0x0D,
12670x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x31, 0x00, 0x81, 0x00,
12680x04, 0x02, 0xD0, 0x08, 0x40, 0x33, 0x20, 0xC5, 0x20, 0x14, 0x07, 0x50, 0x0C,
12690x40, 0x81, 0x04, 0xC5, 0x00, 0x04, 0x00, 0xD0, 0x6C, 0x48, 0xB0, 0x01, 0xCD,
12700x00, 0x24, 0x1C, 0x10, 0x0C, 0x40, 0x33, 0x00, 0xC1, 0x04, 0x04, 0x0B, 0x50,
12710x0D, 0x40, 0x30, 0x01, 0xCD, 0x14, 0x34, 0x18, 0x10, 0x81, 0x40, 0x5C, 0x80,
12720x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x37, 0x00, 0x91, 0x41, 0x44,
12730x0E, 0x52, 0x11, 0x45, 0x37, 0x10, 0xD5, 0x43, 0x74, 0x07, 0x50, 0x0D, 0x44,
12740x55, 0x00, 0xD5, 0x04, 0x56, 0x88, 0xD0, 0x0C, 0x40, 0x34, 0x00, 0xDD, 0x00,
12750x24, 0x02, 0x13, 0x0D, 0x40, 0x37, 0x80, 0xC1, 0x01, 0x44, 0x03, 0x50, 0x0D,
12760x40, 0x34, 0x00, 0xDD, 0x80, 0x74, 0x06, 0x10, 0x11, 0x40, 0x1D, 0x20, 0x06,
12770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x37, 0x00, 0x93, 0x01, 0x4D, 0x04,
12780xF0, 0x11, 0xC4, 0x37, 0xC0, 0xD7, 0x03, 0x7C, 0x07, 0xF0, 0x8D, 0xC0, 0xC5,
12790x00, 0xDF, 0x01, 0x4C, 0x0C, 0xB2, 0x0D, 0x40, 0x34, 0x00, 0xDF, 0x00, 0x6C,
12800x01, 0x70, 0x0D, 0xC0, 0x77, 0x0A, 0xD3, 0x80, 0x6C, 0x03, 0xF0, 0x08, 0xC4,
12810x34, 0x00, 0xDF, 0x00, 0x7C, 0x0E, 0x30, 0x39, 0xC0, 0x82, 0x00, 0x0E, 0x00,
12820x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x3D, 0x10, 0xEF, 0x00, 0xFC, 0x80, 0x70,
12830x03, 0xC0, 0x3F, 0x00, 0xFB, 0x80, 0xF8, 0x03, 0xB4, 0x0F, 0xC0, 0x1A, 0x00,
12840xFB, 0x00, 0x5C, 0x22, 0xF0, 0x0F, 0xC2, 0x37, 0x30, 0xEF, 0x00, 0x5C, 0x0D,
12850xF3, 0x0F, 0xC0, 0x7F, 0x40, 0xFF, 0x80, 0xDC, 0x03, 0xB0, 0x0B, 0xC0, 0x3F,
12860x20, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x0F, 0x20, 0x06, 0x00, 0x00,
12870x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x0A, 0x93, 0x00, 0x4C, 0x0A, 0xF2, 0x69,
12880xC0, 0x33, 0x20, 0xDF, 0x02, 0x5D, 0x83, 0xF0, 0xCD, 0xC0, 0x84, 0x00, 0xD3,
12890x01, 0x7C, 0x09, 0x70, 0x0D, 0xC0, 0x34, 0x40, 0xD3, 0x84, 0x7C, 0x81, 0x30,
12900x8D, 0xC0, 0x35, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0x70, 0x09, 0xC0, 0x34, 0x00,
12910xDB, 0x00, 0x7C, 0x08, 0xF0, 0x09, 0xC0, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00,
12920x00, 0x00, 0x13, 0xA0, 0xF8, 0x02, 0x51, 0x20, 0x44, 0x02, 0xD0, 0x09, 0x45,
12930x3F, 0x00, 0xDD, 0x01, 0x7C, 0x83, 0x10, 0x3D, 0x40, 0x14, 0x08, 0xC0, 0x20,
12940x74, 0x03, 0x12, 0xBF, 0x40, 0xFC, 0x02, 0xF1, 0x00, 0x74, 0x83, 0x10, 0x1F,
12950x40, 0x34, 0x00, 0xD1, 0x00, 0xF4, 0x03, 0x10, 0x09, 0x40, 0x34, 0x80, 0xD1,
12960x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
12970x00, 0x03, 0x20, 0x30, 0x00, 0x81, 0x12, 0x04, 0x4C, 0xD9, 0x38, 0x40, 0x33,
12980x00, 0xCD, 0x09, 0x54, 0x03, 0x10, 0x2D, 0x40, 0x20, 0x08, 0xC1, 0x00, 0x34,
12990x07, 0x11, 0xAC, 0x48, 0xB1, 0x00, 0xC1, 0x01, 0x34, 0x82, 0x10, 0x1C, 0x41,
13000x36, 0x00, 0xC9, 0x20, 0x74, 0x03, 0x50, 0x08, 0x40, 0x30, 0x00, 0xC1, 0x00,
13010x74, 0x00, 0xD0, 0x01, 0x60, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13020x04, 0x00, 0x70, 0x00, 0xA1, 0x89, 0x84, 0x07, 0xD8, 0x1E, 0x40, 0x7B, 0x02,
13030xFD, 0x09, 0xB4, 0x07, 0x12, 0x1E, 0x40, 0x68, 0x00, 0xE1, 0x81, 0xB4, 0x07,
13040x10, 0x1E, 0x40, 0x79, 0x05, 0xE1, 0x11, 0xB4, 0x27, 0x10, 0x1C, 0x40, 0xFA,
13050x00, 0xE9, 0x81, 0xB4, 0x07, 0x10, 0x1A, 0x40, 0x78, 0x00, 0xE8, 0x0B, 0xB4,
13060x84, 0xD0, 0x1A, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
13070x18, 0x30, 0x00, 0x83, 0x20, 0x0C, 0x41, 0xF0, 0x8C, 0xC4, 0x33, 0x20, 0x4F,
13080x00, 0x1D, 0x23, 0x70, 0x8C, 0xC0, 0x84, 0x40, 0xC3, 0x00, 0x3C, 0x43, 0x74,
13090x0D, 0xC0, 0x31, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0x30, 0x0C, 0xD0, 0x33, 0x00,
13100xCA, 0x08, 0x3C, 0x03, 0x74, 0x0C, 0xD0, 0x34, 0x00, 0xC3, 0x1D, 0x3C, 0x08,
13110xF0, 0x70, 0xC8, 0x4B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38,
13120x3D, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x04, 0x6F, 0x00,
13130xFC, 0xA3, 0x70, 0x0F, 0xE0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x2F,
13140xC1, 0x3E, 0x0D, 0xFF, 0x00, 0xFE, 0x03, 0xF2, 0x0F, 0xC0, 0x3D, 0x00, 0xF7,
13150x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xF5, 0x28, 0xFC, 0x00, 0xF0,
13160x83, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37,
13170x01, 0xB3, 0x02, 0x4D, 0x01, 0xF0, 0x05, 0xC0, 0xB7, 0x00, 0xD3, 0x80, 0x6C,
13180x03, 0xF2, 0x0D, 0xC2, 0x17, 0x00, 0xDF, 0x00, 0x7C, 0x00, 0x30, 0x2D, 0xC0,
13190xB4, 0x04, 0xD3, 0x04, 0x7C, 0x86, 0x30, 0x6D, 0xC0, 0x77, 0x00, 0xD3, 0x40,
13200x7C, 0x53, 0xB0, 0x09, 0xC0, 0x37, 0x00, 0xDF, 0x01, 0x44, 0x82, 0xF0, 0x11,
13210xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x3D, 0x05,
13220xE1, 0x10, 0x84, 0x01, 0xD0, 0x06, 0x40, 0x3F, 0x04, 0xE5, 0x00, 0x84, 0x03,
13230xD0, 0x0E, 0x40, 0x3B, 0x20, 0xED, 0xA0, 0x9C, 0x02, 0x10, 0x4F, 0x42, 0x3C,
13240x21, 0xE1, 0x0A, 0x9C, 0x03, 0x18, 0x8E, 0x40, 0x3B, 0x00, 0xE1, 0x00, 0xB4,
13250x0B, 0x10, 0x0A, 0x48, 0x3B, 0x00, 0xFD, 0x00, 0x84, 0x02, 0xD0, 0x0A, 0x40,
13260x4C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x42, 0x81,
13270x01, 0x84, 0x07, 0x50, 0x1E, 0x40, 0x7B, 0x00, 0x49, 0x01, 0xA4, 0x47, 0x50,
13280x1E, 0x40, 0x5B, 0x00, 0xED, 0x01, 0x14, 0x05, 0x14, 0x1E, 0x50, 0x7A, 0x40,
13290xE1, 0x21, 0x34, 0x04, 0xD0, 0x9E, 0x60, 0x7B, 0x40, 0xE1, 0x01, 0x34, 0x17,
13300x90, 0x1A, 0x40, 0x7B, 0x00, 0xED, 0x01, 0x84, 0x04, 0xD0, 0x10, 0x40, 0x02,
13310x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x33, 0x00, 0x41, 0x0A,
13320x04, 0xC3, 0xC1, 0xBC, 0x44, 0x33, 0x00, 0x5D, 0x01, 0x04, 0x05, 0xD0, 0x08,
13330x40, 0x73, 0x0A, 0x8D, 0x20, 0x14, 0x0F, 0x10, 0x0C, 0x40, 0x32, 0x80, 0xC1,
13340x00, 0x14, 0x03, 0xD0, 0x0C, 0x40, 0x23, 0x00, 0x81, 0x40, 0x34, 0x03, 0x12,
13350x89, 0x42, 0x33, 0x00, 0xCD, 0x00, 0x04, 0x83, 0xD8, 0x1C, 0x40, 0x5A, 0x20,
13360x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x15, 0x00, 0x73, 0x03, 0xCC,
13370x0D, 0xE0, 0x07, 0xC0, 0x17, 0x00, 0x7B, 0x00, 0xEC, 0x05, 0xF0, 0x15, 0xC2,
13380x1F, 0x00, 0x5F, 0x05, 0xDC, 0x61, 0x30, 0x05, 0xC0, 0x16, 0x60, 0x53, 0x80,
13390xF4, 0x01, 0xF1, 0x05, 0xC0, 0x17, 0x00, 0x53, 0x00, 0x7C, 0x01, 0xB0, 0x05,
13400xC0, 0x17, 0x10, 0x5F, 0x00, 0xCC, 0x39, 0xF0, 0x37, 0xC0, 0x5E, 0x00, 0x04,
13410x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x81, 0x00, 0x0F, 0x04, 0x7C, 0x28,
13420xF1, 0x01, 0xC3, 0x07, 0x10, 0x17, 0x08, 0x7C, 0x04, 0xF0, 0xA1, 0xC0, 0x07,
13430x01, 0x1F, 0x00, 0x1C, 0x00, 0xF0, 0x20, 0xC0, 0x05, 0x00, 0x1F, 0x00, 0x5C,
13440x80, 0x34, 0x21, 0xC0, 0x07, 0x02, 0x1F, 0x00, 0x3C, 0x80, 0xF0, 0x01, 0xC0,
13450x07, 0x80, 0x1E, 0x02, 0x7C, 0x00, 0xF0, 0x81, 0xC1, 0x49, 0x20, 0x04, 0x00,
13460x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x65, 0x00, 0x93, 0x08, 0x6C, 0x06, 0xF0,
13470x89, 0xC0, 0x63, 0x00, 0x93, 0x02, 0x4C, 0x02, 0x31, 0x09, 0xD0, 0x24, 0x00,
13480x9B, 0x00, 0x7C, 0x02, 0x34, 0x09, 0xD0, 0x64, 0xC0, 0x93, 0x08, 0x7C, 0x02,
13490xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x70, 0x09, 0xC0, 0x24,
13500x00, 0x97, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00,
13510x00, 0x00, 0x00, 0x01, 0x20, 0x64, 0x40, 0x91, 0x00, 0x44, 0x6E, 0xD2, 0x29,
13520x40, 0x27, 0x02, 0x91, 0x03, 0x04, 0x02, 0x10, 0x39, 0x41, 0x24, 0x08, 0x91,
13530x20, 0x7C, 0x26, 0x11, 0x29, 0x40, 0x24, 0x02, 0x91, 0x02, 0x74, 0x02, 0xD0,
13540x79, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x7C, 0x02, 0xB0, 0x09, 0x40, 0x24, 0x00,
13550x9D, 0x04, 0x74, 0x02, 0xD0, 0x09, 0x42, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
13560x00, 0x00, 0x18, 0xA0, 0x24, 0x02, 0x91, 0x00, 0x64, 0x02, 0xD0, 0x29, 0x40,
13570x27, 0x00, 0x91, 0x10, 0x44, 0x02, 0x10, 0x88, 0x48, 0x20, 0x00, 0x99, 0x04,
13580x74, 0x02, 0x10, 0x09, 0x40, 0x20, 0x00, 0x91, 0x10, 0x74, 0x02, 0x50, 0x49,
13590x40, 0x67, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x50, 0x09, 0x40, 0x64, 0x00, 0x95,
13600x01, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
13610x00, 0x10, 0x20, 0x20, 0x41, 0x81, 0x04, 0x04, 0x1A, 0x90, 0x08, 0x40, 0x23,
13620xC1, 0x81, 0x04, 0x45, 0x02, 0x18, 0x08, 0x40, 0x20, 0x01, 0x89, 0x00, 0x34,
13630x12, 0x10, 0x4C, 0x40, 0x20, 0x01, 0x81, 0x04, 0x34, 0x12, 0xD0, 0x48, 0x40,
13640x23, 0x00, 0x8D, 0x00, 0x34, 0x22, 0x90, 0x08, 0x54, 0x20, 0x00, 0x8D, 0x00,
13650x34, 0x12, 0xD0, 0x48, 0x60, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13660x1D, 0xB8, 0x96, 0x02, 0x13, 0x00, 0x6C, 0x08, 0xF0, 0x81, 0x44, 0x87, 0x02,
13670x13, 0x0A, 0x4C, 0x28, 0x30, 0xA1, 0xC0, 0x84, 0x02, 0x1B, 0x00, 0x7C, 0x00,
13680x30, 0xA1, 0x42, 0x84, 0x02, 0x11, 0x00, 0x7C, 0xA8, 0xF0, 0x01, 0xC0, 0x83,
13690x12, 0x1F, 0x0A, 0x7C, 0x58, 0x70, 0xA1, 0xC0, 0x84, 0x02, 0x17, 0x0A, 0x7C,
13700x28, 0xF0, 0x01, 0xC0, 0x77, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
13710xB0, 0x27, 0x02, 0xBF, 0x08, 0xF4, 0x0A, 0xF0, 0x8B, 0xC0, 0x27, 0x02, 0xFF,
13720x08, 0xFC, 0x02, 0xF4, 0x0B, 0xC2, 0x2F, 0x02, 0xB7, 0x00, 0xDC, 0x22, 0xF0,
13730x89, 0xC8, 0x27, 0x02, 0x9F, 0x08, 0xFC, 0x22, 0xF0, 0x89, 0xC0, 0x2F, 0x08,
13740xBF, 0x00, 0x5C, 0x92, 0x70, 0x0B, 0xC2, 0x27, 0x00, 0x9F, 0x00, 0xFC, 0x22,
13750xF0, 0x8B, 0xC0, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0,
13760x2F, 0x05, 0xB3, 0x84, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x2F, 0x02, 0xB3, 0x04,
13770x5C, 0x02, 0x30, 0x8B, 0xE0, 0x25, 0x00, 0xB7, 0x00, 0xDC, 0x02, 0xF0, 0x4B,
13780xC0, 0x2F, 0x05, 0xBF, 0x04, 0x4C, 0x03, 0xF4, 0x0B, 0xC0, 0x2F, 0x02, 0xDF,
13790x00, 0x4C, 0x52, 0xB0, 0x89, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0x7C, 0x02, 0xE2,
13800x09, 0x00, 0x77, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07,
13810x01, 0x11, 0x88, 0x74, 0x49, 0xD0, 0x05, 0x41, 0x07, 0x02, 0x15, 0x14, 0x44,
13820x90, 0x11, 0x41, 0x42, 0x87, 0x44, 0x11, 0x00, 0x74, 0x20, 0x72, 0x41, 0xC1,
13830x05, 0x01, 0x1C, 0x08, 0x54, 0x49, 0x10, 0x01, 0x44, 0x07, 0x00, 0x1D, 0x14,
13840x54, 0x10, 0x70, 0x41, 0x40, 0x07, 0x24, 0x1D, 0x00, 0x74, 0x00, 0xD0, 0x01,
13850x42, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x20, 0x05,
13860x81, 0x00, 0x34, 0x32, 0xD0, 0x88, 0x40, 0x23, 0x20, 0x81, 0x2C, 0x44, 0x56,
13870x04, 0x48, 0x40, 0x25, 0x43, 0x85, 0x40, 0x14, 0x02, 0xD0, 0xC8, 0x40, 0x23,
13880x25, 0xCD, 0x00, 0x24, 0x32, 0x10, 0x88, 0x40, 0x33, 0x00, 0x9D, 0x04, 0x04,
13890x52, 0x90, 0x48, 0x44, 0x23, 0x01, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x08, 0x40,
13900x4B, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0x91,
13910x01, 0x74, 0x83, 0xD0, 0x89, 0x40, 0x23, 0x00, 0x95, 0x00, 0x44, 0x02, 0x10,
13920x19, 0x40, 0xA7, 0xC0, 0x91, 0x01, 0x74, 0x06, 0x50, 0x09, 0x00, 0x27, 0x08,
13930x99, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x50, 0x02,
13940x58, 0x09, 0x40, 0x27, 0x08, 0x9D, 0x00, 0x74, 0x12, 0xD0, 0x09, 0x43, 0x63,
13950x28, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x24, 0x40, 0x93, 0x05,
13960x7C, 0x0E, 0xF0, 0x39, 0xC0, 0x27, 0x00, 0x93, 0x03, 0x1D, 0x02, 0x10, 0x09,
13970xC8, 0x25, 0x40, 0x97, 0x20, 0x5C, 0x02, 0xF3, 0x09, 0xC0, 0x27, 0x10, 0x9F,
13980x00, 0x6C, 0x02, 0x70, 0x09, 0xC0, 0x67, 0x20, 0x8F, 0x01, 0x49, 0x02, 0xB0,
13990x19, 0xC8, 0x27, 0x10, 0x9F, 0x00, 0x7C, 0x16, 0xF0, 0x29, 0xC0, 0x17, 0x08,
14000x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x21, 0x10, 0x9F, 0x20, 0x7C,
14010x12, 0xF0, 0x09, 0xC1, 0x27, 0x00, 0x9F, 0x02, 0x7C, 0x26, 0xF0, 0x09, 0xC0,
14020x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xE0, 0x25, 0x04, 0x9F, 0x00,
14030x5C, 0x02, 0x70, 0x09, 0xC1, 0x27, 0x01, 0x9F, 0x84, 0x6C, 0x02, 0xB0, 0x59,
14040xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x59, 0xC0, 0x5B, 0x20, 0x04,
14050x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x13, 0x04, 0x7E, 0x68,
14060xB4, 0x21, 0xD0, 0x04, 0x08, 0x1D, 0x02, 0x6C, 0x00, 0xF0, 0x01, 0xC8, 0x07,
14070x00, 0x1F, 0x08, 0x7C, 0x00, 0xF0, 0x81, 0xC0, 0x07, 0x40, 0x13, 0x00, 0x5C,
14080x08, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC0,
14090x07, 0x00, 0x1F, 0x0C, 0x7C, 0x08, 0x30, 0x21, 0xC2, 0x53, 0x20, 0x04, 0x00,
14100x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x40, 0x71, 0x01, 0xE4, 0x0D, 0x30,
14110x07, 0x41, 0x14, 0x00, 0x7D, 0x0D, 0x44, 0x01, 0x70, 0x07, 0xC0, 0x11, 0x00,
14120x5D, 0x00, 0x76, 0x05, 0x90, 0x07, 0x40, 0x9F, 0x08, 0x61, 0x02, 0x44, 0x01,
14130x70, 0x17, 0xC8, 0x9E, 0x02, 0x5D, 0x00, 0x74, 0x01, 0x52, 0x05, 0x40, 0x17,
14140x01, 0x7D, 0x03, 0x74, 0x01, 0x10, 0x05, 0x44, 0x43, 0x00, 0x00, 0x00, 0x00,
14150x00, 0x00, 0x00, 0x10, 0xA0, 0x72, 0x00, 0x81, 0x09, 0x24, 0x0B, 0x50, 0x2C,
14160x42, 0x30, 0x00, 0xDD, 0x03, 0x24, 0x03, 0xD0, 0x9C, 0x40, 0x33, 0x00, 0x8D,
14170x01, 0x34, 0x22, 0xD0, 0x1C, 0x40, 0x33, 0x00, 0xC1, 0x10, 0x54, 0x83, 0x50,
14180xB4, 0x40, 0x30, 0x00, 0xCD, 0x40, 0x74, 0x03, 0x10, 0x0C, 0x40, 0x72, 0x00,
14190xCD, 0x81, 0x36, 0x83, 0x10, 0x0C, 0x40, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00,
14200x00, 0x00, 0x04, 0x80, 0x20, 0x05, 0xA1, 0x00, 0xA4, 0x07, 0x50, 0x1E, 0x60,
14210x38, 0x00, 0xAD, 0x04, 0x84, 0x13, 0xD0, 0x0E, 0x48, 0x3B, 0x00, 0xED, 0x80,
14220xB4, 0x03, 0x90, 0x0E, 0x44, 0x6B, 0x10, 0x21, 0x40, 0x84, 0x23, 0x40, 0x1E,
14230x40, 0x3A, 0x00, 0xED, 0x08, 0xB4, 0x13, 0x50, 0x4E, 0x40, 0x3B, 0x10, 0xAC,
14240x00, 0x34, 0x27, 0x10, 0x0E, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
14250x00, 0x14, 0x18, 0xE8, 0x00, 0xA1, 0x01, 0xF4, 0x07, 0x70, 0x17, 0xC0, 0x78,
14260x00, 0xEF, 0x03, 0xAC, 0x27, 0xF0, 0x1E, 0xC0, 0x7B, 0x22, 0xED, 0x01, 0xB6,
14270x07, 0xF0, 0x16, 0x82, 0x73, 0x00, 0x03, 0x01, 0x9C, 0x17, 0x60, 0x1E, 0xC0,
14280x78, 0x08, 0xEF, 0x89, 0x3C, 0x17, 0x38, 0xDE, 0xC8, 0x7B, 0x00, 0xAF, 0x01,
14290xBC, 0x27, 0x30, 0x1E, 0xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14300x10, 0xB8, 0x05, 0x00, 0x9F, 0x00, 0x74, 0x03, 0x30, 0x05, 0xC0, 0x37, 0x08,
14310x8F, 0x00, 0x7C, 0x03, 0x70, 0x01, 0xC0, 0x35, 0x03, 0xDF, 0x00, 0x7C, 0x83,
14320xB1, 0x0D, 0xC0, 0x27, 0x00, 0x1F, 0x00, 0x7C, 0x9B, 0x51, 0x0C, 0xC0, 0x37,
14330x00, 0xDF, 0x02, 0x7C, 0x4B, 0x70, 0x8D, 0xC0, 0x37, 0x00, 0x9F, 0x00, 0x7C,
14340x03, 0xF2, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
14350x20, 0x6D, 0x00, 0xF3, 0x01, 0xCC, 0x11, 0xB0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF,
14360x01, 0xCC, 0x47, 0xF0, 0x1B, 0xC0, 0x7F, 0x00, 0xFF, 0x01, 0xBC, 0x07, 0x30,
14370x9F, 0xE0, 0x5C, 0x00, 0x3F, 0x01, 0xF8, 0x2F, 0x38, 0x1F, 0xC8, 0x6E, 0x28,
14380xF3, 0x81, 0xFC, 0x47, 0xFA, 0x9F, 0xC8, 0x6F, 0x00, 0x33, 0x21, 0x7C, 0x27,
14390x30, 0x9F, 0xC4, 0x1B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00,
14400x29, 0x20, 0xE1, 0x08, 0x84, 0x21, 0x31, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00,
14410x84, 0x03, 0xD0, 0x0A, 0x40, 0x3B, 0x14, 0xED, 0x80, 0x9C, 0x23, 0x70, 0x8A,
14420xC0, 0x28, 0x01, 0x2D, 0x20, 0x9C, 0x03, 0x30, 0x4E, 0x40, 0x0C, 0x12, 0xE1,
14430x18, 0xB4, 0x03, 0x70, 0x0E, 0x40, 0x2F, 0x30, 0x01, 0x00, 0xB4, 0x07, 0xB0,
14440x0C, 0x40, 0x57, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
14450x00, 0xA1, 0x00, 0x84, 0x01, 0x10, 0x0E, 0x41, 0x3B, 0x00, 0x6D, 0x00, 0x84,
14460x0B, 0x50, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x03, 0x10, 0x06, 0x70,
14470x18, 0x10, 0x2D, 0x00, 0x14, 0x43, 0x1D, 0x0E, 0x40, 0x28, 0x44, 0xE5, 0x00,
14480xB4, 0x03, 0xD0, 0x0E, 0x44, 0x2B, 0x02, 0xA9, 0x00, 0xB4, 0x03, 0x10, 0x0E,
14490x40, 0x23, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x01, 0x00,
14500x81, 0x06, 0x05, 0x80, 0x10, 0x08, 0x40, 0x37, 0x00, 0x4D, 0x00, 0x04, 0x87,
14510xD0, 0x00, 0x46, 0x73, 0x08, 0xCD, 0x00, 0x14, 0x93, 0x51, 0x08, 0x40, 0x20,
14520x08, 0x0D, 0x00, 0x14, 0x03, 0x10, 0x0C, 0x40, 0x40, 0x10, 0xD5, 0x80, 0x34,
14530x03, 0x50, 0x0C, 0x60, 0x23, 0x00, 0x89, 0x20, 0x76, 0x13, 0x1C, 0xED, 0x48,
14540x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x2D, 0x40, 0x93,
14550x00, 0x44, 0x06, 0x30, 0x09, 0xC0, 0x27, 0x00, 0xBF, 0x00, 0xCD, 0x07, 0xF0,
14560x05, 0xC0, 0xFF, 0x02, 0xDF, 0x00, 0x7C, 0x0B, 0x30, 0x09, 0xC4, 0x34, 0x00,
14570x1F, 0x00, 0xDC, 0x07, 0x30, 0x0D, 0xD0, 0x54, 0x00, 0xF7, 0x01, 0xFC, 0x03,
14580xF0, 0x0F, 0xC0, 0x37, 0x40, 0x1B, 0x00, 0xFC, 0x03, 0x10, 0x3D, 0xC4, 0x77,
14590x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x27, 0x00, 0x0F, 0x01,
14600x7C, 0x68, 0x70, 0x29, 0xC0, 0x27, 0x10, 0x9F, 0x00, 0x7C, 0x23, 0xF0, 0x1D,
14610xC8, 0x37, 0x00, 0xDF, 0x01, 0x1C, 0x03, 0x72, 0x25, 0xC0, 0x95, 0x00, 0x1F,
14620x82, 0x1C, 0x03, 0x70, 0x0D, 0xC0, 0x17, 0x00, 0xDB, 0x00, 0x7C, 0x03, 0x70,
14630x0D, 0xC0, 0x37, 0x00, 0x97, 0x00, 0x7C, 0x87, 0xF0, 0x0D, 0xC4, 0x17, 0x20,
14640x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x2F, 0x00, 0x93, 0x00, 0x4C,
14650x02, 0xF0, 0x02, 0xC1, 0x3C, 0x00, 0xF3, 0x02, 0xCC, 0x03, 0xF0, 0x07, 0xC0,
14660x3C, 0x00, 0xFF, 0x03, 0xCC, 0x03, 0x30, 0x82, 0xC0, 0x6C, 0x40, 0x33, 0x00,
14670xFC, 0x43, 0x30, 0x0D, 0xC0, 0x4F, 0x00, 0xF3, 0x00, 0x8D, 0x03, 0x30, 0x0F,
14680xC0, 0x6F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0x30, 0x0F, 0xD0, 0x04, 0x20, 0x0C,
14690x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x46, 0x02, 0x11, 0x02, 0x54, 0x06,
14700x90, 0x71, 0x40, 0x34, 0x00, 0x91, 0x00, 0x44, 0x03, 0xD0, 0x20, 0x40, 0x34,
14710x00, 0xCD, 0x00, 0x6C, 0x03, 0x10, 0x25, 0x41, 0x84, 0x06, 0x11, 0x01, 0x74,
14720x03, 0x10, 0x1D, 0xC0, 0x41, 0x00, 0xD1, 0x00, 0x44, 0x03, 0x50, 0x0D, 0x40,
14730x67, 0x00, 0x9D, 0x05, 0x74, 0x03, 0x10, 0x0D, 0xC2, 0x06, 0x00, 0x08, 0x00,
14740x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x22, 0x00, 0xD1, 0x02, 0x44, 0x06, 0xD0,
14750x11, 0x40, 0x64, 0x00, 0x81, 0x00, 0x44, 0x03, 0xD8, 0x21, 0x40, 0x34, 0x00,
14760xDD, 0x00, 0x44, 0x07, 0x10, 0x09, 0x40, 0x10, 0x80, 0x11, 0x03, 0x74, 0x03,
14770x90, 0x1D, 0x41, 0x37, 0x01, 0xD1, 0x00, 0x44, 0x03, 0x10, 0x0D, 0x40, 0x37,
14780x01, 0x1D, 0x01, 0x74, 0x03, 0x14, 0x0D, 0x44, 0x04, 0x00, 0x0A, 0x00, 0x00,
14790x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0xC1, 0x00, 0x14, 0x00, 0x98, 0x08,
14800x40, 0x20, 0x00, 0x81, 0x80, 0x05, 0x03, 0xD0, 0x09, 0x40, 0x30, 0x00, 0xDD,
14810x00, 0x24, 0x03, 0x14, 0x00, 0x50, 0x10, 0x00, 0x01, 0x00, 0x34, 0x03, 0x90,
14820x0C, 0x40, 0x57, 0x00, 0xC1, 0x00, 0x04, 0x03, 0x50, 0x0C, 0x40, 0x33, 0x80,
14830x0D, 0x02, 0x74, 0x03, 0x10, 0x0D, 0x4C, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00,
14840x00, 0x00, 0x00, 0x98, 0x22, 0x40, 0x93, 0x00, 0x4C, 0x02, 0xF1, 0x01, 0x50,
14850x3C, 0x00, 0x43, 0x00, 0xCC, 0x03, 0xF0, 0x05, 0xD0, 0x3C, 0x00, 0xDF, 0x00,
14860x44, 0x03, 0x30, 0x00, 0xC0, 0x04, 0x00, 0x13, 0x00, 0xFC, 0x03, 0xB0, 0x0D,
14870xC0, 0x27, 0x40, 0xF3, 0x00, 0xC4, 0x03, 0x30, 0x0F, 0xC0, 0x27, 0x00, 0x1F,
14880x02, 0xBC, 0x13, 0x30, 0xAD, 0xC2, 0x04, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00,
14890x00, 0x05, 0xB0, 0x0F, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0xF8, 0x0B, 0xC0, 0x3F,
14900x00, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x03, 0x40, 0x3F, 0x00, 0xFF, 0x00, 0xFC,
14910x03, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0x74, 0x0B, 0xE0,
14920x0D, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC8, 0x2F, 0x30, 0xBF, 0x04,
14930x7C, 0x0B, 0xF0, 0x4F, 0xC0, 0x17, 0x62, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
14940x03, 0xA0, 0x7F, 0x00, 0x7E, 0x01, 0xFC, 0x07, 0x30, 0x1F, 0x44, 0x3C, 0x05,
14950xF7, 0x00, 0xEC, 0x23, 0xB0, 0x4F, 0xC0, 0x49, 0x00, 0x37, 0x03, 0xFC, 0x03,
14960x32, 0x2F, 0x40, 0x3D, 0x02, 0x23, 0x03, 0xDC, 0x24, 0x78, 0x93, 0xC0, 0x48,
14970x00, 0x23, 0x01, 0xE4, 0x03, 0xB0, 0x17, 0xC0, 0x4C, 0x00, 0xFF, 0x21, 0xCC,
14980x06, 0xE0, 0x03, 0xC0, 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
14990x08, 0x7F, 0x00, 0xDD, 0x01, 0xF4, 0x07, 0x10, 0x1F, 0x40, 0xF4, 0x00, 0xF1,
15000x03, 0x84, 0x3B, 0x10, 0x9D, 0xC0, 0x64, 0x00, 0x1D, 0x00, 0xF4, 0x2F, 0x14,
15010x6F, 0x44, 0xBC, 0x03, 0x11, 0x84, 0x4C, 0x00, 0xD0, 0x41, 0xC0, 0x54, 0x48,
15020x51, 0x01, 0x44, 0x2F, 0x10, 0x11, 0x50, 0x44, 0x00, 0xFD, 0xA1, 0x44, 0x04,
15030xD1, 0x09, 0x40, 0x0C, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
15040x33, 0x00, 0x0D, 0x40, 0x34, 0x03, 0x91, 0x0C, 0x40, 0x30, 0x00, 0xC5, 0x22,
15050x24, 0x13, 0x91, 0x0C, 0x40, 0x01, 0x08, 0x0D, 0x84, 0x34, 0x03, 0x90, 0x2C,
15060x40, 0x31, 0x21, 0x01, 0xC0, 0x14, 0x14, 0x50, 0x01, 0x40, 0x32, 0x20, 0x91,
15070x00, 0x04, 0x03, 0x90, 0x0D, 0x40, 0x02, 0x00, 0xCD, 0x00, 0x04, 0x02, 0xD0,
15080x01, 0x42, 0x4D, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35,
15090x00, 0xDD, 0x00, 0x74, 0x03, 0x90, 0x0D, 0x40, 0x34, 0x00, 0xD1, 0x60, 0x44,
15100x03, 0x10, 0x0D, 0x40, 0x64, 0x24, 0x1D, 0x01, 0x74, 0x03, 0x92, 0x0D, 0x40,
15110x32, 0x88, 0x01, 0x01, 0x54, 0x04, 0xC0, 0x19, 0x50, 0x94, 0x01, 0x90, 0x08,
15120x44, 0x03, 0xD0, 0x09, 0x40, 0x46, 0x04, 0xDD, 0x00, 0x44, 0x46, 0xD1, 0x31,
15130x40, 0x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x37, 0x00,
15140x9F, 0x04, 0x3C, 0x03, 0x94, 0x0C, 0xD0, 0x34, 0x10, 0xD7, 0x00, 0x6C, 0x03,
15150xB0, 0x0D, 0xC8, 0x45, 0x10, 0x9F, 0x03, 0x7C, 0x03, 0xB0, 0x0D, 0xC0, 0x35,
15160x00, 0x13, 0x11, 0x5C, 0x04, 0x71, 0x30, 0xC0, 0x26, 0x00, 0x13, 0x83, 0x6C,
15170x03, 0xB0, 0x48, 0xC0, 0xC6, 0x00, 0xCF, 0x00, 0x4D, 0x0E, 0xF0, 0x31, 0xD0,
15180x23, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3D, 0x00, 0xBF,
15190x00, 0xFC, 0x03, 0x70, 0x0F, 0xC0, 0x3B, 0x00, 0xED, 0x40, 0xFC, 0x83, 0xF0,
15200x0E, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0x70, 0x0E, 0xC4, 0x3D, 0x00,
15210xBF, 0x00, 0xEC, 0x02, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7F, 0x00, 0x3C, 0x03,
15220x10, 0x4B, 0xC0, 0x0D, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x09, 0xC0, 0x1E,
15230x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x35, 0x20, 0x9F, 0x00,
15240x7C, 0x03, 0xF0, 0x4D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x5C, 0x83, 0x70, 0x0D,
15250xC0, 0x07, 0x00, 0x93, 0x02, 0x7C, 0x03, 0xB0, 0x0D, 0xC0, 0x34, 0x00, 0x9F,
15260x02, 0x5C, 0x02, 0xF0, 0x29, 0xC2, 0xA7, 0x01, 0x93, 0x06, 0x7C, 0x47, 0x30,
15270x49, 0xC0, 0x87, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x01, 0xC4, 0x08, 0x20,
15280x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x34, 0x20, 0x9D, 0x80, 0x74,
15290x03, 0xD0, 0x4D, 0x60, 0x3F, 0x00, 0xFD, 0x00, 0xC4, 0x83, 0x10, 0x0F, 0x44,
15300xA7, 0x1A, 0x91, 0x00, 0xBC, 0x13, 0xD0, 0x0F, 0x40, 0x3C, 0x00, 0x9D, 0x00,
15310x44, 0x02, 0xD0, 0x19, 0x40, 0x83, 0x01, 0xC1, 0x51, 0xC4, 0x0B, 0x50, 0x09,
15320x40, 0x87, 0x00, 0xDC, 0x00, 0x74, 0x0A, 0xD0, 0x99, 0x40, 0x6D, 0x00, 0x02,
15330x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x13,
15340xD0, 0x2C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x54, 0x03, 0x58, 0x0C, 0x41, 0x23,
15350x00, 0x81, 0x00, 0x34, 0x13, 0x90, 0x0C, 0x44, 0x30, 0x00, 0x0D, 0x80, 0x14,
15360x00, 0xD1, 0x00, 0x40, 0x82, 0x08, 0xC5, 0x63, 0x14, 0x03, 0x10, 0x3C, 0x40,
15370xC3, 0x03, 0xCD, 0x00, 0x34, 0x16, 0xD0, 0x19, 0x40, 0x0C, 0x00, 0x00, 0x00,
15380x00, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x78, 0x00, 0xED, 0x81, 0xB4, 0x27, 0xD0,
15390x1E, 0x40, 0x7B, 0x00, 0xCD, 0x89, 0x84, 0x07, 0x18, 0x1E, 0x40, 0x6F, 0x01,
15400x21, 0x01, 0xB4, 0x07, 0xC0, 0x1C, 0x48, 0x78, 0x00, 0xBD, 0x41, 0x84, 0x07,
15410xD0, 0x1A, 0x41, 0x5F, 0x00, 0xE5, 0x01, 0x84, 0x07, 0x50, 0x1E, 0x40, 0x4B,
15420x01, 0xED, 0x21, 0xB4, 0x04, 0xD0, 0x5A, 0x40, 0x3D, 0x00, 0x00, 0x00, 0x00,
15430x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0x8F, 0x08, 0x3C, 0x03, 0xF0, 0x8C,
15440x40, 0x33, 0x00, 0xCF, 0x00, 0x1C, 0x23, 0x70, 0x1C, 0xC0, 0x63, 0x21, 0x83,
15450x02, 0x3E, 0x03, 0xB0, 0x8C, 0xC0, 0x30, 0x00, 0xCF, 0x08, 0x1C, 0x02, 0xF0,
15460x04, 0xC0, 0x33, 0x01, 0x87, 0x04, 0x1C, 0x23, 0x38, 0x0C, 0xC1, 0x03, 0x02,
15470xCF, 0x00, 0x3C, 0xE3, 0xF0, 0x00, 0xC1, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00,
15480x00, 0x00, 0x02, 0xB8, 0x7D, 0x00, 0xFF, 0x00, 0xFC, 0x87, 0xF0, 0x9F, 0xC0,
15490x3F, 0x00, 0xFF, 0x50, 0xFC, 0x03, 0xF2, 0x8F, 0xC0, 0x2F, 0x42, 0xBF, 0x08,
15500xDC, 0x03, 0xF8, 0x0F, 0xC2, 0x3F, 0x94, 0xFF, 0x40, 0xFC, 0x23, 0xF0, 0x8D,
15510x40, 0x3F, 0x40, 0xBB, 0x00, 0x5C, 0x63, 0xF0, 0x0F, 0xC8, 0x0F, 0x03, 0xFF,
15520x01, 0xFC, 0x03, 0xF0, 0x43, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00,
15530x00, 0x15, 0xA0, 0x37, 0x80, 0x9E, 0x00, 0x7C, 0x03, 0xB0, 0x0D, 0xC0, 0x37,
15540x02, 0xDF, 0x11, 0x4C, 0x53, 0xF0, 0x0D, 0xC0, 0x07, 0x00, 0x9F, 0x20, 0x4C,
15550x03, 0xF0, 0x4D, 0xC0, 0xF7, 0x01, 0x5B, 0x00, 0x7C, 0x01, 0x72, 0x1D, 0xC0,
15560x24, 0x00, 0xDF, 0x00, 0x4C, 0x03, 0xF0, 0x08, 0xC0, 0x44, 0xC0, 0xDB, 0x01,
15570x4C, 0x01, 0xD0, 0x1D, 0x40, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
15580x13, 0x88, 0x39, 0x01, 0xAD, 0x00, 0x34, 0x8B, 0x10, 0x2E, 0x48, 0x3B, 0x31,
15590xED, 0x04, 0xAC, 0x03, 0xD0, 0x2E, 0x40, 0x0B, 0x28, 0x3D, 0x00, 0x84, 0x3B,
15600xD0, 0xAE, 0xC0, 0x39, 0x0A, 0xE1, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x00, 0x38,
15610x00, 0xED, 0x80, 0x84, 0x13, 0xD2, 0x0A, 0x40, 0x08, 0x00, 0xC5, 0x02, 0x94,
15620x01, 0xD0, 0x0F, 0x40, 0x4C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
15630x00, 0x79, 0x02, 0xA5, 0x43, 0xB4, 0x17, 0x10, 0x5E, 0x40, 0x7B, 0x00, 0xED,
15640x01, 0x84, 0x27, 0x58, 0x5E, 0x44, 0x6B, 0x10, 0xAD, 0x11, 0x85, 0x07, 0xD0,
15650x1E, 0x46, 0x73, 0x01, 0xE9, 0x91, 0xB4, 0x87, 0x42, 0x1E, 0x40, 0x7A, 0x00,
15660xFD, 0x01, 0x94, 0x07, 0xD0, 0x0A, 0x41, 0xC8, 0x40, 0xED, 0x05, 0x84, 0x05,
15670xD0, 0x1A, 0x40, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28,
15680x33, 0x00, 0x8D, 0x00, 0x34, 0x03, 0x14, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00,
15690x24, 0x03, 0xD0, 0x0C, 0x40, 0x73, 0x02, 0xCD, 0x03, 0x44, 0x03, 0xD0, 0x0C,
15700x40, 0x31, 0x00, 0xC9, 0x01, 0x34, 0x17, 0xD0, 0x5C, 0x42, 0xF2, 0x00, 0xCD,
15710x80, 0x04, 0x03, 0xD0, 0x38, 0x40, 0x70, 0x41, 0xCD, 0x40, 0x14, 0x63, 0xD0,
15720x3C, 0x49, 0x58, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15,
15730x00, 0x7F, 0x00, 0x3C, 0x01, 0xB0, 0x04, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x4C,
15740x01, 0xF0, 0x04, 0xC0, 0x9F, 0x00, 0x7F, 0x01, 0x44, 0x01, 0xF0, 0x05, 0xC4,
15750x17, 0x00, 0x7B, 0x02, 0xF4, 0x15, 0x70, 0x17, 0xD0, 0x9A, 0x10, 0x7F, 0x10,
15760x5C, 0x01, 0xF0, 0x07, 0xC0, 0x1C, 0x00, 0x5F, 0x00, 0xCC, 0x05, 0xF0, 0x57,
15770xD0, 0x5C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00,
15780x1F, 0x04, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00,
15790xF0, 0x01, 0xC4, 0x07, 0x00, 0x1D, 0x00, 0x7C, 0x88, 0xF0, 0x01, 0xC0, 0x05,
15800x00, 0x17, 0x10, 0x7C, 0x00, 0xF0, 0x81, 0xC0, 0x05, 0x02, 0x1F, 0x00, 0x75,
15810x00, 0xF0, 0x01, 0xC0, 0x07, 0x40, 0x17, 0x80, 0x7C, 0x08, 0xF0, 0x01, 0xC0,
15820x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x9F,
15830x00, 0x4C, 0x12, 0x30, 0x29, 0xC2, 0x24, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30,
15840x49, 0xC0, 0x24, 0x06, 0x9F, 0x10, 0x4C, 0x22, 0x30, 0x09, 0xE0, 0x27, 0x00,
15850x97, 0x00, 0x7C, 0x02, 0x32, 0x59, 0xC0, 0x27, 0x26, 0x93, 0x80, 0x7D, 0x0A,
15860xF0, 0x19, 0xC1, 0x67, 0x02, 0x9F, 0x02, 0x7C, 0x02, 0x30, 0x59, 0xC0, 0x43,
15870x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x2E, 0x00, 0x8D, 0x00,
15880xC4, 0x1E, 0x10, 0x2B, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x79,
15890x40, 0x65, 0x00, 0x9D, 0x80, 0x68, 0x06, 0x50, 0x09, 0x60, 0x27, 0x00, 0x9D,
15900x00, 0x5C, 0x02, 0xB1, 0x39, 0xC2, 0xE7, 0x00, 0x81, 0x82, 0x6C, 0x1A, 0xD0,
15910x89, 0xC0, 0x25, 0x00, 0xBD, 0x03, 0x34, 0x1A, 0x12, 0x49, 0x40, 0x07, 0x00,
15920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x20, 0x9D, 0x40, 0x44,
15930x02, 0x10, 0x29, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x18, 0x09, 0x42,
15940x24, 0x00, 0x8D, 0x00, 0x44, 0x82, 0x12, 0x09, 0x40, 0x27, 0x00, 0x95, 0x60,
15950x34, 0x02, 0x58, 0x2D, 0x40, 0xA7, 0x80, 0xD1, 0x98, 0x64, 0x02, 0xD0, 0x09,
15960x40, 0x27, 0x00, 0x9D, 0x40, 0x74, 0x22, 0x14, 0x09, 0x40, 0x63, 0x00, 0x02,
15970x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x9D, 0x02, 0x04, 0x02,
15980x10, 0x08, 0x40, 0xA0, 0x00, 0x8D, 0x06, 0x34, 0x02, 0x10, 0x08, 0x40, 0x21,
15990x00, 0x8D, 0x08, 0x45, 0x83, 0x5A, 0x88, 0x60, 0x23, 0x82, 0x8D, 0x08, 0x34,
16000x22, 0xD0, 0x88, 0x40, 0x27, 0x00, 0x81, 0x00, 0x24, 0x02, 0xD0, 0x08, 0x40,
16010x31, 0x80, 0xCD, 0x00, 0x74, 0x02, 0x10, 0x48, 0x40, 0x43, 0x80, 0x00, 0x00,
16020x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x46, 0x00, 0x1F, 0x00, 0x4D, 0x04, 0x34,
16030x11, 0x50, 0x04, 0x05, 0x0F, 0x00, 0x7C, 0x78, 0x30, 0x41, 0x41, 0x04, 0x00,
16040x1D, 0x02, 0x44, 0x50, 0x31, 0x61, 0x41, 0x87, 0x05, 0x17, 0x42, 0x74, 0x08,
16050x74, 0x20, 0xC0, 0x07, 0x00, 0x13, 0x40, 0x6C, 0x50, 0xF0, 0x01, 0xC0, 0x07,
16060x00, 0x1F, 0x81, 0x7C, 0x00, 0x30, 0xA1, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00,
16070x00, 0x00, 0x00, 0x19, 0xB8, 0xA7, 0x00, 0xBF, 0x01, 0x7C, 0x0A, 0xF1, 0x29,
16080xC0, 0x67, 0x00, 0x9F, 0x09, 0x7C, 0x82, 0xF4, 0x09, 0xC0, 0x2F, 0x20, 0xBF,
16090x04, 0x7C, 0x02, 0xF0, 0x49, 0xC0, 0x27, 0x01, 0xFF, 0x24, 0xDC, 0x12, 0x00,
16100x4B, 0xC0, 0x2D, 0x40, 0xAF, 0x00, 0x6C, 0x02, 0xF0, 0x0B, 0xC8, 0x39, 0x00,
16110x9F, 0x22, 0xFC, 0x03, 0xF0, 0x8B, 0xC0, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00,
16120x00, 0x00, 0x18, 0xA0, 0x67, 0x01, 0x93, 0x02, 0xCC, 0x06, 0xF0, 0x1B, 0xC0,
16130x25, 0x02, 0x9B, 0xE0, 0x7C, 0x12, 0xF0, 0x4B, 0xC5, 0x2F, 0x00, 0x93, 0x00,
16140xDC, 0x02, 0x38, 0x89, 0xC0, 0x27, 0x49, 0x93, 0x00, 0x5E, 0x22, 0x30, 0x0B,
16150x40, 0x2C, 0x00, 0xA3, 0x00, 0xCC, 0x12, 0xF0, 0x0A, 0xC0, 0x2F, 0x00, 0xBB,
16160x11, 0xFC, 0x82, 0xE0, 0x0B, 0xD0, 0x74, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
16170x00, 0x1C, 0x08, 0x07, 0x08, 0x0B, 0x01, 0x45, 0x00, 0xD0, 0x01, 0x46, 0x47,
16180x01, 0x1D, 0x9D, 0x74, 0x50, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x11, 0x10, 0x5C,
16190x00, 0x14, 0x81, 0x00, 0x07, 0x25, 0x11, 0x04, 0x5C, 0x10, 0x10, 0x01, 0x51,
16200x04, 0x20, 0x11, 0x00, 0x74, 0x00, 0xD2, 0x05, 0x48, 0x07, 0x10, 0x13, 0x42,
16210x74, 0x00, 0xD0, 0x05, 0x40, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
16220x12, 0xA0, 0xA3, 0x00, 0x81, 0x00, 0x04, 0x0A, 0xD0, 0x28, 0x40, 0x23, 0x02,
16230x8D, 0x00, 0x34, 0x32, 0xD0, 0x08, 0x40, 0x21, 0x00, 0x81, 0x04, 0x14, 0x22,
16240x90, 0x08, 0x44, 0x23, 0x03, 0x89, 0x14, 0x54, 0x12, 0x18, 0x48, 0x40, 0x22,
16250x40, 0x81, 0x00, 0x04, 0x22, 0xD0, 0x08, 0x40, 0x23, 0x00, 0x89, 0x00, 0x34,
16260x02, 0xD1, 0x08, 0x40, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
16270x88, 0x25, 0x00, 0x89, 0x04, 0x44, 0x02, 0xD0, 0x0D, 0x40, 0x27, 0x00, 0x9D,
16280x80, 0x74, 0x02, 0xD0, 0x09, 0x00, 0xA7, 0x42, 0x91, 0x02, 0x54, 0x02, 0x98,
16290x09, 0x40, 0x27, 0x00, 0x91, 0x00, 0x54, 0x02, 0x10, 0x0C, 0x40, 0x26, 0x20,
16300x91, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x01, 0x91, 0x00, 0x74, 0x02,
16310xD0, 0x0D, 0x40, 0x60, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28,
16320x25, 0x00, 0xB3, 0x81, 0x4C, 0x02, 0xF0, 0x09, 0xC8, 0x2F, 0x08, 0xBB, 0x80,
16330x7C, 0x02, 0xF1, 0x09, 0x80, 0x65, 0x00, 0x93, 0x00, 0x1C, 0x02, 0x90, 0x09,
16340x48, 0x27, 0x00, 0x9B, 0x03, 0x1C, 0x1A, 0x30, 0x59, 0xC0, 0x22, 0x01, 0x83,
16350xA7, 0x4C, 0x02, 0xD0, 0x29, 0xC4, 0x67, 0x00, 0x9B, 0x80, 0x7C, 0x2A, 0xF0,
16360x29, 0xC0, 0x14, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x25,
16370x00, 0x9F, 0x01, 0x70, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x80, 0x9C, 0xA0, 0x7C,
16380x82, 0xF0, 0x09, 0xC0, 0x67, 0x00, 0x9F, 0x03, 0x7E, 0x02, 0x50, 0x09, 0xC4,
16390x27, 0x00, 0x9F, 0x05, 0x7C, 0x02, 0xF4, 0x49, 0xE0, 0x65, 0x01, 0x9C, 0x44,
16400x5C, 0x42, 0xF0, 0x09, 0x00, 0x67, 0x04, 0x9F, 0x20, 0x7E, 0x06, 0xD0, 0x58,
16410xC1, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x01, 0x00,
16420x1F, 0x00, 0x5C, 0x40, 0xF0, 0x01, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00,
16430x31, 0x01, 0xE0, 0x06, 0x11, 0x1F, 0x00, 0x7C, 0x00, 0x90, 0x01, 0xC8, 0x03,
16440x00, 0x1F, 0x00, 0x7C, 0x80, 0xF8, 0x01, 0xC0, 0x86, 0x00, 0x1F, 0x80, 0x5C,
16450x00, 0x60, 0x01, 0xC0, 0x85, 0x00, 0x1F, 0x04, 0x4D, 0x00, 0xF0, 0x21, 0xC0,
16460x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x14, 0x00, 0x5D,
16470x00, 0xD4, 0x0D, 0xD8, 0x07, 0x60, 0x17, 0x10, 0x5E, 0x00, 0x74, 0x01, 0x10,
16480x57, 0xE0, 0x9B, 0x80, 0x5D, 0x20, 0xF4, 0x01, 0xB2, 0x05, 0xC0, 0x17, 0x80,
16490x5D, 0x00, 0x7C, 0x01, 0x70, 0x17, 0xC0, 0x1C, 0x00, 0x7D, 0x02, 0xC4, 0x01,
16500xB0, 0x17, 0x40, 0x98, 0x00, 0x7F, 0x03, 0xC4, 0x45, 0xD2, 0x07, 0x48, 0x41,
16510x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x00,
16520x04, 0x2E, 0x50, 0x08, 0x40, 0x31, 0x80, 0xC9, 0x00, 0x34, 0x03, 0x13, 0x18,
16530x60, 0x32, 0x80, 0xCD, 0x00, 0x34, 0x02, 0x18, 0x0C, 0x40, 0x33, 0x10, 0xCD,
16540x00, 0x34, 0x03, 0xD0, 0x7C, 0x50, 0x20, 0x00, 0xCD, 0x1A, 0x16, 0x0B, 0x10,
16550x04, 0x00, 0xF1, 0x02, 0x8D, 0x00, 0x04, 0x1E, 0xD0, 0x8C, 0x40, 0x40, 0x00,
16560x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x00, 0xED, 0x04, 0x94,
16570x02, 0xD0, 0x0A, 0x40, 0x3B, 0x01, 0xED, 0x04, 0x34, 0x07, 0x18, 0x0A, 0x40,
16580x3B, 0x00, 0xED, 0x04, 0x34, 0x02, 0x92, 0x4E, 0x40, 0x3B, 0x01, 0xED, 0x00,
16590xB4, 0x03, 0x50, 0x0E, 0x41, 0x28, 0x10, 0xAD, 0x40, 0x84, 0x04, 0x90, 0x3E,
16600x40, 0x38, 0x00, 0xAD, 0x83, 0x86, 0x03, 0xD0, 0x0A, 0x40, 0x11, 0x00, 0x02,
16610x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x78, 0x00, 0xEF, 0x03, 0x94, 0x07,
16620x70, 0x1A, 0xC0, 0x79, 0x01, 0xED, 0x05, 0xB4, 0x37, 0x31, 0x1E, 0x40, 0x7A,
16630x08, 0xED, 0x0B, 0xB4, 0x06, 0x34, 0x1E, 0xC0, 0x7B, 0x02, 0xED, 0x85, 0xBC,
16640x27, 0xD8, 0x17, 0xE0, 0x68, 0x00, 0xAF, 0x81, 0x9C, 0x04, 0x78, 0x16, 0xC0,
16650x79, 0x00, 0xEF, 0x01, 0x8C, 0x07, 0xF0, 0x1B, 0xC0, 0x50, 0x60, 0x00, 0x00,
16660x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x10, 0xDF, 0x40, 0x7C, 0x03, 0xF0,
16670x09, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x7C, 0x2B, 0xF4, 0x0D, 0xC0, 0x35, 0x00,
16680xDF, 0x00, 0x7C, 0x02, 0x70, 0x0D, 0xC0, 0x35, 0x82, 0xDF, 0x3E, 0x5C, 0x3B,
16690x70, 0x01, 0xE0, 0x25, 0x20, 0x9F, 0x00, 0x3C, 0x00, 0x70, 0x0D, 0xC2, 0x27,
16700x00, 0xC7, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00,
16710x00, 0x00, 0x00, 0x02, 0xA0, 0x7F, 0x00, 0xEF, 0x09, 0xCC, 0x32, 0xF8, 0x8B,
16720xC0, 0x7C, 0x04, 0xFF, 0x11, 0xFC, 0x07, 0xF0, 0x1B, 0xC8, 0x7F, 0x00, 0xFF,
16730x01, 0xDE, 0x06, 0xF0, 0xBD, 0xC1, 0x74, 0x00, 0xFF, 0x01, 0xFC, 0x07, 0xF0,
16740x1B, 0xC0, 0x6C, 0x00, 0x9B, 0x89, 0xFC, 0x25, 0xF0, 0x17, 0xC0, 0x7C, 0x00,
16750xBB, 0x01, 0xBC, 0x07, 0x38, 0x9F, 0xC0, 0x1B, 0x00, 0x04, 0x00, 0x00, 0x00,
16760x00, 0x00, 0x15, 0x80, 0x39, 0x00, 0xED, 0x1C, 0x84, 0x22, 0xD8, 0x0A, 0xC0,
16770x3A, 0xA0, 0xED, 0x08, 0xB4, 0x03, 0xD0, 0x08, 0x40, 0x13, 0x00, 0xED, 0x00,
16780x8C, 0x12, 0xD0, 0x5E, 0x40, 0x78, 0x02, 0xED, 0x00, 0x9C, 0x43, 0xD0, 0x0B,
16790x60, 0x28, 0x06, 0xAD, 0x05, 0xB4, 0x24, 0xD2, 0x0E, 0xC0, 0x3A, 0x80, 0xA5,
16800x00, 0xB4, 0x09, 0xF2, 0xC2, 0x40, 0x57, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
16810x00, 0x00, 0x08, 0x39, 0x00, 0xFD, 0x81, 0xA4, 0x03, 0xD8, 0x88, 0x40, 0x78,
16820x02, 0xE5, 0x01, 0xB4, 0x03, 0x50, 0x0A, 0x40, 0x3B, 0x02, 0xFD, 0x18, 0x94,
16830x02, 0xD1, 0x4E, 0x54, 0x3A, 0x10, 0xED, 0x00, 0xB4, 0x23, 0xD0, 0x0E, 0x40,
16840x28, 0x00, 0xA9, 0x14, 0xB4, 0x80, 0xD8, 0x86, 0x40, 0x39, 0x00, 0xE1, 0x00,
16850xB4, 0x03, 0x10, 0x0E, 0x40, 0x63, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
16860x06, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x04, 0x01, 0xD0, 0x08, 0x64, 0x32, 0x00,
16870xCD, 0x80, 0x34, 0x03, 0xD0, 0x08, 0x60, 0x13, 0x00, 0xCD, 0x81, 0x04, 0x02,
16880xD0, 0x0D, 0x40, 0x36, 0x00, 0xDD, 0x40, 0x54, 0x0F, 0xD1, 0x28, 0x44, 0xE0,
16890x10, 0x8D, 0x40, 0x34, 0x00, 0xD0, 0x88, 0x40, 0x63, 0x00, 0xC5, 0x00, 0x34,
16900x09, 0x52, 0x30, 0x40, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
16910xA8, 0x35, 0x00, 0xDF, 0x41, 0x6D, 0x02, 0xD0, 0x0D, 0xC0, 0x34, 0x00, 0xDF,
16920x00, 0xFC, 0x03, 0xF0, 0x09, 0xC8, 0xF7, 0x08, 0xFF, 0x03, 0x54, 0x83, 0xD2,
16930x0F, 0x48, 0x3E, 0x00, 0xFF, 0x08, 0xF4, 0x0B, 0xD0, 0x2D, 0xD0, 0x34, 0x02,
16940x8B, 0x01, 0x7C, 0x00, 0xD0, 0x0C, 0xC0, 0xB5, 0x06, 0x93, 0x00, 0x7C, 0x0A,
16950x10, 0x21, 0xC0, 0x57, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
16960x33, 0x00, 0xDF, 0x10, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0x37, 0x00, 0xDF, 0x00,
16970x7C, 0x03, 0xF0, 0x29, 0xC4, 0x77, 0x04, 0xDF, 0x04, 0x1C, 0x0A, 0xF0, 0x0D,
16980xC0, 0x35, 0x00, 0xDF, 0x00, 0x5C, 0x03, 0xF0, 0x4D, 0xC0, 0xA7, 0x08, 0x9F,
16990x60, 0x7C, 0x88, 0xF1, 0x2D, 0x40, 0xB6, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0,
17000xA1, 0xC8, 0x37, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F,
17010x00, 0xF3, 0x00, 0xFC, 0x12, 0x30, 0x2F, 0xC0, 0x3F, 0x20, 0xF3, 0x40, 0xFC,
17020x03, 0xF0, 0x1F, 0xC0, 0x2C, 0x02, 0xFF, 0x80, 0xFC, 0x87, 0x30, 0x0F, 0xD0,
17030x3C, 0x00, 0xF5, 0x00, 0xCD, 0x43, 0xB0, 0x07, 0xC0, 0x7F, 0x00, 0xBF, 0x00,
17040xCC, 0x80, 0xF0, 0x0F, 0x80, 0x3C, 0x00, 0xB3, 0x04, 0xFC, 0x40, 0xF0, 0x0A,
17050xC1, 0x04, 0x26, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x36, 0x20,
17060xD1, 0x00, 0x74, 0x06, 0x94, 0x05, 0xC0, 0x35, 0x00, 0xD1, 0x00, 0x74, 0x03,
17070xD0, 0x84, 0x41, 0x25, 0x00, 0xDD, 0x20, 0x74, 0x01, 0x10, 0x0D, 0x40, 0x34,
17080x00, 0xD1, 0x00, 0x44, 0x03, 0xB0, 0x21, 0x40, 0x17, 0x00, 0x9D, 0x23, 0x44,
17090x4C, 0xD0, 0x0D, 0x50, 0x60, 0x84, 0x95, 0x07, 0x74, 0x0C, 0xD0, 0x39, 0x50,
17100x04, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x36, 0xC0, 0xD1,
17110x00, 0x74, 0x02, 0x90, 0x0D, 0x40, 0x33, 0x00, 0xD1, 0x00, 0x74, 0x03, 0xD0,
17120x09, 0x40, 0x34, 0x00, 0xDD, 0x00, 0x64, 0x1B, 0x10, 0x0D, 0x40, 0x34, 0x00,
17130xD5, 0x00, 0x64, 0x03, 0x10, 0x01, 0x40, 0xB7, 0x01, 0x9D, 0x11, 0x44, 0x04,
17140xD0, 0x0D, 0x41, 0x45, 0x00, 0x91, 0x00, 0x74, 0x06, 0x50, 0x11, 0x40, 0x04,
17150x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0xC1, 0x00,
17160x34, 0x02, 0x90, 0x08, 0x40, 0x31, 0x00, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x08,
17170x40, 0x11, 0x00, 0xCD, 0x00, 0x34, 0x02, 0x14, 0x4C, 0x40, 0x30, 0x04, 0xC5,
17180x20, 0x04, 0x03, 0xD4, 0x00, 0x44, 0x23, 0x80, 0x8D, 0x30, 0x05, 0x40, 0xD0,
17190x0D, 0x40, 0x25, 0x00, 0x85, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x42, 0x40, 0x81,
17200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0xF3, 0x40, 0x7C,
17210x03, 0x30, 0x0D, 0xC4, 0x3F, 0x00, 0xF3, 0x00, 0xFC, 0x03, 0xF0, 0x2D, 0xC2,
17220xA4, 0x02, 0xFD, 0x00, 0x7C, 0x03, 0x30, 0x0E, 0xC0, 0x3C, 0x01, 0xF7, 0x00,
17230xCC, 0x03, 0x32, 0x05, 0xC2, 0x37, 0x00, 0x9F, 0x00, 0x4C, 0x10, 0xF0, 0x0D,
17240xC0, 0x25, 0x00, 0x51, 0x00, 0x7C, 0x00, 0x70, 0x09, 0xC0, 0x04, 0x04, 0x00,
17250x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xA8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x01,
17260x78, 0x07, 0xC8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x47, 0xC1, 0x0F,
17270x00, 0xEF, 0x00, 0xFC, 0x01, 0xF0, 0x2F, 0xC0, 0x3F, 0x00, 0xFB, 0x00, 0xFC,
17280x03, 0x30, 0x03, 0xC0, 0x1F, 0x00, 0x3F, 0x00, 0x7C, 0x00, 0xF0, 0x0A, 0x40,
17290x2A, 0x08, 0x7F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x17, 0x20, 0x0E, 0x00,
17300x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x3F, 0x08, 0xA3, 0x00, 0xFC, 0x33, 0x30,
17310x9B, 0xC0, 0xEF, 0x00, 0xFF, 0x03, 0x9D, 0x27, 0xB0, 0x1F, 0xC0, 0x7C, 0x02,
17320xFB, 0x09, 0xCD, 0x07, 0x70, 0x1F, 0xC8, 0x7A, 0x08, 0xFF, 0x01, 0xFC, 0x07,
17330x31, 0x9F, 0xC0, 0x7F, 0x00, 0xFF, 0x09, 0xFE, 0x27, 0x30, 0x1F, 0xC0, 0x7A,
17340x40, 0xB3, 0x01, 0xFC, 0x00, 0x30, 0x26, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00,
17350x00, 0x00, 0x00, 0x01, 0x00, 0x3B, 0x38, 0xD1, 0x43, 0xF4, 0x13, 0x12, 0x4C,
17360x44, 0x27, 0x11, 0x1C, 0x84, 0x44, 0x10, 0x10, 0x11, 0x50, 0x04, 0x01, 0x11,
17370x04, 0x44, 0xD0, 0x50, 0x11, 0x40, 0x07, 0x05, 0x0D, 0x10, 0x34, 0x40, 0x10,
17380x41, 0x40, 0x07, 0x00, 0x1D, 0x44, 0x5C, 0x10, 0x10, 0x11, 0x40, 0x44, 0x00,
17390x91, 0x01, 0x5C, 0x0C, 0x14, 0x45, 0x40, 0x0F, 0x60, 0x0C, 0x00, 0x00, 0x00,
17400x00, 0x00, 0x11, 0xA0, 0x23, 0x05, 0x81, 0x22, 0x14, 0x33, 0x10, 0x0C, 0x48,
17410x21, 0x01, 0xCD, 0x00, 0x44, 0x13, 0x54, 0x0D, 0x40, 0x31, 0x00, 0xC1, 0x80,
17420x04, 0x03, 0x56, 0x0C, 0x44, 0x33, 0x00, 0xCD, 0x04, 0x34, 0x13, 0x90, 0x4C,
17430x40, 0x33, 0x05, 0xCD, 0x20, 0x34, 0x13, 0x10, 0x0D, 0x40, 0x30, 0x00, 0x01,
17440x01, 0x34, 0x0A, 0xD0, 0x40, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
17450x00, 0x07, 0x88, 0x35, 0x40, 0xD1, 0x84, 0x74, 0x03, 0x14, 0x3D, 0x40, 0x27,
17460x20, 0x0D, 0x00, 0x54, 0x00, 0x90, 0x01, 0x42, 0x05, 0x00, 0x01, 0x00, 0x44,
17470x00, 0x54, 0x01, 0x60, 0x07, 0x00, 0x1D, 0x80, 0x70, 0x00, 0x90, 0x01, 0x40,
17480x07, 0x00, 0x1D, 0x20, 0x14, 0x00, 0x18, 0x01, 0x40, 0x04, 0x00, 0x51, 0x01,
17490x74, 0x00, 0xD1, 0x01, 0x40, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
17500x00, 0xA0, 0x37, 0x00, 0x93, 0x01, 0x5C, 0x03, 0x30, 0x3D, 0xC0, 0x65, 0x0A,
17510xDF, 0x00, 0x4C, 0x83, 0xF0, 0x0D, 0xC8, 0x35, 0x40, 0xDB, 0x80, 0x08, 0x03,
17520x74, 0x0D, 0xC4, 0x36, 0x10, 0xDF, 0x00, 0x78, 0x03, 0xA0, 0x0D, 0xC0, 0x37,
17530x80, 0xDF, 0x00, 0x74, 0x03, 0x34, 0x0C, 0xC2, 0x36, 0x00, 0x91, 0x01, 0x3C,
17540x15, 0xF0, 0x15, 0xC0, 0x03, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
17550x88, 0x3D, 0x00, 0xFF, 0x21, 0xF4, 0x03, 0xD0, 0x0F, 0xC0, 0x2F, 0x00, 0x3F,
17560x40, 0xE4, 0x00, 0x30, 0x03, 0xC0, 0x0E, 0x00, 0x3F, 0x00, 0xFC, 0x40, 0xF0,
17570x03, 0x00, 0x0F, 0x00, 0x3F, 0x30, 0xFC, 0x80, 0x70, 0x03, 0xC0, 0x0F, 0xA0,
17580x3F, 0x40, 0xDC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x14, 0xFF, 0x00, 0xDC, 0x24,
17590x30, 0x47, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08,
17600x61, 0x10, 0x9B, 0x01, 0x6C, 0x03, 0x34, 0x3D, 0xC0, 0x24, 0x00, 0xD3, 0x50,
17610x7C, 0x03, 0x30, 0x0D, 0xC0, 0x77, 0x00, 0xD3, 0x08, 0x4C, 0x07, 0xB0, 0x4D,
17620xC0, 0x37, 0x00, 0xD7, 0x01, 0x4C, 0x83, 0x30, 0x1D, 0xC1, 0x37, 0x00, 0xDF,
17630x01, 0x7C, 0x97, 0xF0, 0x1D, 0xC0, 0x34, 0x00, 0x93, 0x10, 0x7C, 0x20, 0x30,
17640x25, 0xD0, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xB4,
17650x02, 0xD1, 0x20, 0xD4, 0x2B, 0x10, 0x2D, 0x40, 0x64, 0x01, 0x1A, 0x03, 0x3C,
17660x00, 0x14, 0x40, 0x42, 0x87, 0x00, 0x11, 0x01, 0x44, 0x00, 0x10, 0x51, 0xC0,
17670x05, 0x40, 0x15, 0x01, 0x44, 0x04, 0x10, 0x11, 0x40, 0x07, 0x00, 0x1D, 0x21,
17680x74, 0x0C, 0xD0, 0x01, 0x44, 0xC0, 0x04, 0x59, 0x03, 0x74, 0x20, 0x00, 0xB5,
17690x40, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x20, 0x30, 0x00,
17700x89, 0x40, 0x44, 0x03, 0x90, 0x2C, 0x41, 0x60, 0x00, 0xC9, 0x02, 0x34, 0x03,
17710x10, 0x1C, 0x40, 0xB7, 0x04, 0xC1, 0x01, 0x14, 0x03, 0x90, 0x2C, 0x40, 0x33,
17720x00, 0xC9, 0x02, 0x54, 0x27, 0x91, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x34,
17730x0B, 0xD0, 0x0C, 0x40, 0xF0, 0x40, 0x89, 0x03, 0x14, 0x0C, 0x10, 0x9C, 0x40,
17740x4C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x78, 0x00, 0xF1,
17750x01, 0x14, 0x07, 0x90, 0x1E, 0x40, 0x68, 0x00, 0x29, 0x11, 0xC4, 0x04, 0x10,
17760x92, 0x48, 0x4B, 0x00, 0x21, 0x03, 0x94, 0x04, 0x12, 0x12, 0x40, 0x4D, 0x20,
17770x29, 0x09, 0x95, 0x0C, 0x50, 0x12, 0x40, 0x4B, 0x20, 0x2C, 0x41, 0xB0, 0x04,
17780xD0, 0x13, 0x40, 0x48, 0x00, 0xA9, 0x29, 0xB4, 0x17, 0x10, 0x1F, 0x40, 0x3C,
17790x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x18, 0x20, 0x00, 0x8B, 0x00,
17800x0C, 0x03, 0x30, 0x0C, 0xC0, 0x24, 0x00, 0xCB, 0x88, 0x34, 0x23, 0x31, 0x0C,
17810xC0, 0x37, 0x00, 0xD3, 0x80, 0x5C, 0x23, 0xB0, 0x8C, 0xC0, 0x33, 0x02, 0xCF,
17820x00, 0x1C, 0x23, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x00, 0x3C, 0x03, 0xF2,
17830x0C, 0xC4, 0x30, 0x00, 0x43, 0x30, 0x1C, 0x03, 0x30, 0x7C, 0xC0, 0x48, 0x40,
17840x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0x3D, 0x00, 0xFF, 0x00, 0xDC,
17850x4B, 0x50, 0x0F, 0xC0, 0x2F, 0x02, 0x3F, 0x28, 0xFE, 0x00, 0xF2, 0x03, 0x48,
17860x0F, 0x00, 0x3F, 0x00, 0xEC, 0x80, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x37, 0x00,
17870xEC, 0x00, 0xB0, 0x83, 0xC0, 0x0F, 0x00, 0x3F, 0x40, 0xFC, 0x00, 0xF0, 0x02,
17880xC0, 0x4F, 0x40, 0x77, 0x00, 0x3C, 0x13, 0xF2, 0x8D, 0xC0, 0x0B, 0x20, 0x06,
17890x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37, 0x01, 0x9F, 0x00, 0x7C, 0x13,
17900xF0, 0x0D, 0xC0, 0x24, 0x00, 0xDD, 0x00, 0x7C, 0x03, 0xF0, 0x1C, 0xC0, 0x30,
17910x40, 0xD3, 0x00, 0x6F, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x4D,
17920x03, 0xF0, 0x1D, 0xD0, 0x34, 0x00, 0xDF, 0x21, 0x4D, 0x07, 0x24, 0x0D, 0xC0,
17930x33, 0x00, 0x53, 0x00, 0x4C, 0x07, 0x32, 0x15, 0xC0, 0x40, 0x00, 0x0E, 0x00,
17940x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x39, 0x22, 0xED, 0x00, 0xB4, 0x03, 0xD0,
17950x0F, 0x50, 0x28, 0x00, 0x2D, 0x00, 0xBC, 0x00, 0xD0, 0x02, 0x48, 0x09, 0x00,
17960x21, 0x00, 0x84, 0x00, 0xD2, 0x02, 0x40, 0x0B, 0x00, 0x3D, 0x00, 0x84, 0x00,
17970xD0, 0x03, 0x40, 0x08, 0x00, 0x3D, 0x00, 0xC4, 0x00, 0x10, 0x02, 0x44, 0x0B,
17980x00, 0xE1, 0x20, 0xAC, 0x03, 0xB0, 0x07, 0xC0, 0x4E, 0x68, 0x06, 0x00, 0x00,
17990x00, 0x00, 0x00, 0x00, 0x02, 0x69, 0x10, 0xED, 0x03, 0x94, 0x17, 0xD0, 0x1E,
18000x40, 0x68, 0x04, 0xED, 0x41, 0xB4, 0x07, 0x50, 0x1E, 0x44, 0x7C, 0x20, 0xF9,
18010x81, 0x84, 0x07, 0x50, 0x1E, 0x40, 0x7B, 0x00, 0xE5, 0x01, 0x84, 0x07, 0xD0,
18020x1E, 0x40, 0x79, 0x00, 0xED, 0x01, 0x84, 0x87, 0x18, 0x1E, 0x40, 0x7B, 0x40,
18030x71, 0x01, 0x04, 0x07, 0x10, 0x16, 0x40, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
18040x00, 0x00, 0x16, 0x28, 0x33, 0x00, 0xCD, 0x01, 0x34, 0x03, 0xD0, 0x24, 0x4C,
18050x30, 0x10, 0x0D, 0x00, 0x12, 0x00, 0xD0, 0x00, 0x40, 0x01, 0x10, 0x09, 0xC0,
18060x04, 0x80, 0xD0, 0x00, 0x42, 0x03, 0x08, 0x1D, 0x00, 0x44, 0x00, 0xD0, 0x00,
18070x40, 0x01, 0x00, 0x0D, 0x00, 0x06, 0x00, 0x10, 0x00, 0x40, 0x03, 0x00, 0x51,
18080x03, 0x24, 0xCF, 0x12, 0x34, 0x40, 0x58, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
18090x00, 0x17, 0xA0, 0x15, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xD0, 0x27, 0xC0, 0x54,
18100x00, 0x5F, 0x00, 0x74, 0x01, 0x70, 0x05, 0xC4, 0x14, 0x00, 0x4B, 0x00, 0x6C,
18110x01, 0xF0, 0x04, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x4C, 0x01, 0xF0, 0x05, 0xC0,
18120x15, 0x00, 0x5F, 0x00, 0x44, 0x01, 0x30, 0x05, 0xC0, 0x13, 0x00, 0x71, 0x07,
18130xCC, 0x11, 0x14, 0x17, 0x40, 0x5C, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
18140x12, 0x08, 0x04, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x21, 0xC1, 0x07, 0x00,
18150x3D, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x37, 0x02, 0xFC, 0x00,
18160xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0E,
18170x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x40, 0x1F, 0x06, 0x7C,
18180x00, 0xF0, 0xA1, 0xC9, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
18190x08, 0x21, 0x00, 0x93, 0x00, 0x3C, 0x02, 0xB0, 0x09, 0xC0, 0x24, 0x10, 0x9F,
18200x01, 0x4C, 0x02, 0xF0, 0x19, 0xC0, 0xE7, 0x00, 0x93, 0x00, 0x6C, 0x06, 0xF0,
18210x99, 0xC0, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x34, 0x59, 0xC0, 0x27, 0x00,
18220x9F, 0x05, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x40, 0x9B, 0x00, 0x6C, 0x02,
18230xF0, 0x49, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20,
18240x26, 0x40, 0x91, 0x80, 0x74, 0x42, 0x10, 0xA9, 0x41, 0x24, 0x00, 0x8D, 0x09,
18250x5E, 0x2A, 0xD0, 0x19, 0x40, 0x63, 0x40, 0x91, 0x02, 0x45, 0x1A, 0xD0, 0x69,
18260xC2, 0x26, 0x08, 0x9D, 0x02, 0x44, 0x42, 0x10, 0x39, 0x40, 0x27, 0x00, 0x9D,
18270x02, 0x74, 0x0A, 0xD0, 0x09, 0x48, 0x67, 0x04, 0x91, 0x82, 0x44, 0x86, 0xD0,
18280x69, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x64,
18290x00, 0x91, 0x00, 0x74, 0x02, 0x10, 0x08, 0x40, 0x24, 0x00, 0x9D, 0x00, 0xC4,
18300x42, 0xD0, 0x4B, 0x40, 0x2F, 0x00, 0xB9, 0x03, 0xC4, 0x12, 0xD0, 0x0B, 0x40,
18310x2C, 0x00, 0xBD, 0x00, 0xC4, 0x06, 0x92, 0x0B, 0x44, 0x2F, 0x00, 0xBD, 0xC0,
18320xF4, 0x02, 0xD0, 0x1B, 0x40, 0x2F, 0x41, 0x91, 0x08, 0x64, 0x22, 0xD0, 0x09,
18330x40, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x2A, 0x20, 0x01,
18340x81, 0x04, 0x34, 0x12, 0x18, 0x08, 0x50, 0x20, 0x00, 0xBC, 0x00, 0x84, 0x02,
18350xD0, 0x0A, 0x40, 0x6F, 0x00, 0xB9, 0x00, 0x84, 0x02, 0xD0, 0x0A, 0x40, 0x2A,
18360x00, 0xAD, 0x01, 0x84, 0x02, 0x90, 0x1A, 0x40, 0x2B, 0x00, 0xAD, 0x41, 0xB4,
18370x06, 0xD0, 0x0A, 0x40, 0x2B, 0x00, 0x91, 0x00, 0x24, 0x02, 0xD0, 0x48, 0x40,
18380x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA0, 0x86, 0x02, 0x13,
18390x00, 0x7C, 0x28, 0x34, 0xA1, 0xC0, 0x84, 0x02, 0x1F, 0x0A, 0x44, 0x28, 0xF0,
18400x01, 0xC0, 0x87, 0x02, 0x1B, 0x0A, 0x4C, 0x28, 0xF0, 0x01, 0xC0, 0x85, 0x02,
18410x1F, 0x0A, 0x4C, 0x28, 0xB3, 0xA1, 0xC0, 0x87, 0x02, 0x1F, 0x0A, 0x7C, 0x28,
18420xF0, 0x01, 0xC0, 0x0F, 0x10, 0x53, 0x00, 0x6C, 0x51, 0xFA, 0xA1, 0xC0, 0x77,
18430xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x88, 0x2F, 0x02, 0xBF, 0x08,
18440x7C, 0x22, 0x78, 0x0B, 0xC0, 0x2F, 0x20, 0x9E, 0x00, 0x5D, 0x02, 0xF0, 0x09,
18450xC0, 0x27, 0x00, 0x87, 0x00, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F,
18460x00, 0x7D, 0x02, 0x71, 0x09, 0xC0, 0x27, 0x08, 0x9F, 0x20, 0x7C, 0x82, 0xF0,
18470x09, 0xC2, 0x27, 0x00, 0xA7, 0x00, 0xDC, 0x02, 0xF0, 0x8B, 0xC0, 0x67, 0x20,
18480x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x2F, 0x01, 0xB3, 0x14, 0xCC,
18490xB2, 0x30, 0x0F, 0xC0, 0x2D, 0x00, 0xBF, 0x08, 0xCC, 0x02, 0x10, 0x0B, 0xC0,
18500x2F, 0x02, 0xBF, 0x00, 0xCC, 0x02, 0x30, 0x0B, 0xC0, 0x24, 0x00, 0xB3, 0x00,
18510xFC, 0x22, 0xF0, 0x0B, 0xC0, 0x24, 0x00, 0xB3, 0x08, 0xDC, 0x02, 0x30, 0x0B,
18520xC0, 0x2F, 0x00, 0xB3, 0x00, 0xFC, 0x82, 0x30, 0x0B, 0xC0, 0x67, 0x00, 0x0E,
18530x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x0D, 0x11, 0x00, 0x45, 0x30,
18540x10, 0x01, 0x43, 0x04, 0x04, 0x1D, 0x00, 0x04, 0x50, 0x10, 0x01, 0x40, 0x03,
18550x01, 0x1D, 0x10, 0x4C, 0x40, 0x14, 0x01, 0x50, 0x04, 0x05, 0x01, 0x04, 0x74,
18560x10, 0xD0, 0x00, 0x41, 0x00, 0x24, 0x01, 0x40, 0x5C, 0x50, 0x10, 0x01, 0x40,
18570x07, 0x00, 0x11, 0x00, 0x74, 0x00, 0x10, 0x81, 0x40, 0x73, 0x60, 0x0C, 0x00,
18580x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x03, 0x91, 0x20, 0x04, 0x12, 0x90,
18590x49, 0x40, 0x21, 0x80, 0x8D, 0x00, 0x04, 0x12, 0x10, 0x0C, 0x40, 0x23, 0x01,
18600x8D, 0x04, 0x65, 0x02, 0x10, 0x09, 0x40, 0x24, 0x41, 0x81, 0x14, 0x34, 0x12,
18610xD8, 0x48, 0x50, 0x20, 0x00, 0x81, 0x00, 0x14, 0x12, 0x10, 0x08, 0x40, 0x23,
18620x00, 0x89, 0x00, 0x34, 0x02, 0x10, 0x08, 0x48, 0x4B, 0x00, 0x04, 0x00, 0x00,
18630x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x41, 0x91, 0x00, 0x44, 0x03, 0x90, 0x29,
18640x40, 0x24, 0x02, 0x8D, 0x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x27, 0x00, 0x8D,
18650x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x91, 0x00, 0x74, 0x02, 0xD0,
18660x09, 0x40, 0x24, 0x00, 0xD1, 0x00, 0x54, 0x02, 0x10, 0x09, 0x40, 0x37, 0x20,
18670x99, 0x00, 0x74, 0x0A, 0x12, 0x89, 0x40, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00,
18680x00, 0x00, 0x05, 0x00, 0x25, 0x00, 0x83, 0x89, 0x0C, 0x02, 0xB4, 0x18, 0xC0,
18690x65, 0x20, 0x9F, 0x00, 0x4D, 0x02, 0x34, 0x09, 0xC0, 0x27, 0x80, 0x9F, 0x00,
18700x6C, 0x02, 0x30, 0x08, 0xC0, 0x24, 0x00, 0x93, 0x00, 0x7C, 0x02, 0xF0, 0x09,
18710xC0, 0x24, 0x40, 0x93, 0x00, 0x5C, 0x02, 0x34, 0x09, 0xC0, 0x27, 0x00, 0x99,
18720x12, 0x7C, 0x02, 0x34, 0x19, 0xC0, 0x17, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
18730x00, 0x16, 0x08, 0x25, 0x00, 0x9F, 0x41, 0x7C, 0x02, 0x74, 0x29, 0xC0, 0x27,
18740x00, 0x9F, 0x50, 0x7C, 0x42, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
18750x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0,
18760x27, 0x00, 0x9F, 0x00, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x40, 0x97, 0x15,
18770x7E, 0x52, 0xF0, 0x09, 0xE0, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
18780x14, 0x08, 0x41, 0x40, 0x13, 0x00, 0x7C, 0x10, 0xF0, 0x41, 0xC0, 0x07, 0x00,
18790x1F, 0x08, 0x4C, 0x00, 0x34, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x00, 0x7C, 0x00,
18800xF0, 0x11, 0xF0, 0x04, 0x00, 0x1F, 0x20, 0x4C, 0x04, 0xD0, 0x01, 0xC0, 0x06,
18810x40, 0x13, 0x40, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x02, 0x0C,
18820x08, 0x14, 0x01, 0xC4, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
18830xA0, 0x5C, 0x00, 0x51, 0x00, 0xF4, 0x09, 0xD0, 0x27, 0xC0, 0x15, 0x00, 0x7D,
18840x00, 0xC6, 0x05, 0x50, 0x05, 0x40, 0x5F, 0x04, 0x73, 0x02, 0xB4, 0x29, 0xD1,
18850x07, 0xC2, 0x12, 0x00, 0x7D, 0x45, 0xC4, 0x15, 0xD0, 0x07, 0xC0, 0x14, 0x00,
18860x71, 0x02, 0xCC, 0x01, 0xD0, 0x15, 0x40, 0x9B, 0x08, 0x71, 0x02, 0xD4, 0x0D,
18870x50, 0xF7, 0x40, 0x50, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0,
18880x32, 0x00, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x31, 0x20, 0xCD, 0x00,
18890x64, 0x0F, 0x50, 0x08, 0x44, 0x73, 0x00, 0xC1, 0x04, 0x24, 0x03, 0xD0, 0x04,
18900x40, 0x32, 0x10, 0xCD, 0x01, 0x05, 0x03, 0x50, 0x0D, 0x40, 0x34, 0x00, 0xC1,
18910x06, 0x65, 0x07, 0xD0, 0x98, 0x40, 0x63, 0x03, 0x41, 0x08, 0x04, 0x23, 0x10,
18920x0C, 0x40, 0x52, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x08,
18930x04, 0xE1, 0x00, 0xB4, 0x43, 0x90, 0x0E, 0x40, 0x39, 0x00, 0x7D, 0x00, 0xA5,
18940x0B, 0x50, 0x0E, 0x40, 0x7B, 0x00, 0xE1, 0x00, 0xB4, 0x02, 0xD0, 0x0E, 0x41,
18950x38, 0x01, 0xED, 0x01, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x38, 0x0A, 0xE1, 0x83,
18960xA4, 0x43, 0xD0, 0x0E, 0x40, 0x1F, 0x00, 0x71, 0x01, 0x14, 0x03, 0x10, 0x12,
18970x58, 0x06, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x60, 0x00,
18980xE3, 0x01, 0xBC, 0x07, 0xD0, 0x1E, 0xC0, 0x79, 0x00, 0xEF, 0x01, 0xA4, 0x06,
18990x70, 0x1E, 0xC0, 0x6B, 0x40, 0xE3, 0x01, 0xB0, 0x05, 0xF0, 0x1E, 0x40, 0x7A,
19000x00, 0xEF, 0x01, 0x8C, 0x07, 0x70, 0x1E, 0xC0, 0x78, 0x05, 0xE3, 0x01, 0xAC,
19010x07, 0xF1, 0x1E, 0xC0, 0x6B, 0x00, 0x63, 0x81, 0x84, 0x07, 0x30, 0x18, 0xC0,
19020x46, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x05, 0x00, 0xDF,
19030x00, 0x7C, 0x03, 0xF0, 0x01, 0xC0, 0x35, 0x10, 0x0F, 0x00, 0x5C, 0x02, 0xB0,
19040x0D, 0xC0, 0x07, 0x00, 0x17, 0x00, 0x7C, 0x80, 0xF0, 0x0C, 0xC0, 0x37, 0x04,
19050x5F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xD0, 0xB5, 0x00, 0x9F, 0x00, 0x5C, 0x01,
19060xF0, 0x0D, 0xC0, 0x33, 0x20, 0x4F, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0x41,
19070x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x4D, 0x00, 0xE7, 0x21,
19080xCC, 0x07, 0xF8, 0x87, 0xC0, 0x7C, 0x02, 0xBF, 0x01, 0xCC, 0x07, 0x30, 0x1F,
19090xC0, 0x7C, 0x00, 0x73, 0x01, 0xEC, 0x05, 0x32, 0x1F, 0xC0, 0x7F, 0x04, 0xF3,
19100x01, 0xFC, 0x04, 0xB0, 0x1F, 0xC0, 0x7F, 0x10, 0xB3, 0x01, 0xCC, 0x07, 0xF0,
19110x1E, 0xC0, 0x3C, 0x00, 0xF3, 0x05, 0xCC, 0x06, 0xF0, 0x13, 0x84, 0x0B, 0x00,
19120x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x8D, 0x10, 0xE1, 0x08, 0x84,
19130x21, 0x78, 0x0E, 0x44, 0x38, 0x00, 0x7D, 0x06, 0xC5, 0x03, 0x10, 0x0E, 0x40,
19140x28, 0x00, 0x71, 0x40, 0x84, 0xE0, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xA1, 0x10,
19150xB4, 0x01, 0x10, 0x0E, 0x40, 0x3B, 0x02, 0xBB, 0x18, 0x8C, 0x0A, 0xD0, 0x8E,
19160x40, 0x19, 0x02, 0xA1, 0x06, 0xAC, 0x03, 0xD0, 0x20, 0x40, 0x57, 0x60, 0x04,
19170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xE5, 0x00, 0x85, 0x01,
19180x50, 0x87, 0x40, 0x38, 0x8C, 0xAD, 0x00, 0x86, 0x01, 0x90, 0x0F, 0x40, 0x3A,
19190x40, 0xE1, 0x00, 0xC4, 0x01, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xE1, 0x00, 0xF4,
19200x0A, 0x10, 0x0E, 0x40, 0x3F, 0x00, 0x61, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40,
19210x29, 0x42, 0x61, 0x0C, 0x94, 0x43, 0xD0, 0x02, 0x40, 0x23, 0x00, 0x04, 0x00,
19220x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x01, 0x00, 0xC1, 0x00, 0x04, 0x01, 0x50,
19230x31, 0x40, 0x70, 0x00, 0x1D, 0x41, 0x02, 0x45, 0x90, 0x3C, 0x50, 0x82, 0x04,
19240x01, 0x10, 0x04, 0x08, 0x10, 0x2C, 0x42, 0x77, 0x01, 0x01, 0x05, 0x30, 0x04,
19250x10, 0xD0, 0x40, 0xB3, 0x04, 0x09, 0x05, 0x06, 0x34, 0xD0, 0x1C, 0x40, 0x91,
19260x00, 0x81, 0x13, 0x34, 0x0E, 0xD0, 0x00, 0x40, 0x1B, 0x00, 0x04, 0x00, 0x00,
19270x00, 0x00, 0x00, 0x15, 0x80, 0x05, 0x00, 0xD7, 0x00, 0x4C, 0x03, 0x70, 0xE9,
19280xC0, 0x74, 0x00, 0xDF, 0x05, 0x4C, 0x09, 0xB0, 0x0D, 0xC0, 0x16, 0x00, 0x93,
19290x01, 0x4C, 0x07, 0x34, 0x7C, 0x40, 0xBF, 0x00, 0x13, 0x03, 0x3C, 0x03, 0x10,
19300x21, 0xC0, 0x3B, 0x00, 0x53, 0x03, 0x4C, 0x08, 0xF0, 0x3D, 0xC0, 0xB5, 0x02,
19310x43, 0x11, 0x50, 0x0D, 0xF0, 0x09, 0x40, 0x77, 0x20, 0x06, 0x00, 0x00, 0x00,
19320x00, 0x00, 0x05, 0x00, 0x47, 0x00, 0x9F, 0x01, 0x7C, 0x83, 0x70, 0x09, 0xD2,
19330x27, 0x00, 0xDF, 0x04, 0x7C, 0x21, 0x70, 0x8D, 0xC0, 0xB5, 0x02, 0xDF, 0x08,
19340x7C, 0x8B, 0xF2, 0x0D, 0xC0, 0x37, 0x42, 0x9F, 0x00, 0x7C, 0x23, 0x70, 0x29,
19350xC0, 0x77, 0x00, 0x57, 0x02, 0x5C, 0x02, 0xF0, 0xCD, 0xC0, 0xF7, 0x40, 0x5F,
19360x40, 0x2C, 0x0B, 0xF2, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
19370x00, 0x80, 0x00, 0x0B, 0x40, 0xE3, 0x00, 0xEC, 0x03, 0xF0, 0x8F, 0xC0, 0x3C,
19380x00, 0xFB, 0x00, 0xCC, 0x02, 0x30, 0x0F, 0xC1, 0x0F, 0x00, 0xBF, 0x09, 0xFC,
19390x40, 0xF0, 0x0F, 0xC1, 0x3C, 0x00, 0x33, 0x05, 0xFC, 0x03, 0xB0, 0x47, 0xC0,
19400x3D, 0x00, 0x73, 0x00, 0xCC, 0x20, 0x30, 0x9F, 0xC0, 0xFF, 0x00, 0xB3, 0x00,
19410xCC, 0x43, 0x32, 0x0B, 0xC4, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
19420x81, 0x20, 0xC6, 0x00, 0x91, 0x00, 0x44, 0x0F, 0xF0, 0x11, 0x60, 0x61, 0x02,
19430x91, 0x02, 0x44, 0x02, 0x10, 0x0D, 0x40, 0x87, 0x04, 0x1D, 0x00, 0x5C, 0x1E,
19440xD1, 0x1D, 0x40, 0x34, 0x08, 0x11, 0x12, 0x74, 0x00, 0x10, 0x71, 0x40, 0x34,
19450x00, 0x11, 0x02, 0x4C, 0x0C, 0x10, 0x0D, 0x40, 0x33, 0x00, 0x11, 0x01, 0x44,
19460x2F, 0x15, 0x19, 0x40, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
19470xA0, 0x46, 0x00, 0xD1, 0x04, 0x64, 0x04, 0xD0, 0x01, 0x40, 0x37, 0x20, 0x19,
19480x00, 0x04, 0x10, 0x10, 0x1D, 0x48, 0x17, 0x10, 0x1D, 0x00, 0x74, 0x05, 0x50,
19490x1D, 0x44, 0x34, 0x40, 0x51, 0x00, 0x74, 0x00, 0x10, 0x00, 0x40, 0x36, 0x00,
19500x81, 0x00, 0x04, 0x01, 0x10, 0x0D, 0x40, 0x37, 0x00, 0xD9, 0x01, 0x64, 0xC3,
19510x10, 0x19, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
19520x00, 0x18, 0x81, 0x00, 0x04, 0x00, 0xD8, 0x08, 0x40, 0x26, 0x80, 0x41, 0x00,
19530x05, 0x04, 0x18, 0x0C, 0x40, 0x23, 0x00, 0x4D, 0x00, 0x34, 0x03, 0xD0, 0x1D,
19540x40, 0x30, 0x00, 0x81, 0x00, 0x74, 0x01, 0x18, 0x08, 0x50, 0x36, 0x00, 0x81,
19550x00, 0x04, 0x02, 0x14, 0x0C, 0x40, 0x37, 0x00, 0x89, 0x00, 0x04, 0x03, 0x10,
19560x00, 0x44, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x06,
19570x00, 0xD3, 0x00, 0x6C, 0x00, 0xF0, 0x05, 0x50, 0x37, 0x00, 0x1B, 0x00, 0x4C,
19580x00, 0x20, 0x0D, 0xC0, 0x13, 0x00, 0x9F, 0x00, 0x7C, 0x00, 0xF0, 0x0D, 0x50,
19590x38, 0x00, 0x53, 0x00, 0x7C, 0x02, 0x30, 0x05, 0xC0, 0x3F, 0x00, 0x53, 0x00,
19600x4C, 0x01, 0x30, 0x0D, 0xC0, 0x37, 0x10, 0x9B, 0x20, 0x6C, 0x81, 0x30, 0xA9,
19610xC0, 0x07, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x0F, 0x00,
19620xBF, 0x00, 0xFC, 0x00, 0x70, 0x02, 0xC0, 0x2D, 0x00, 0x3F, 0x00, 0xFC, 0x00,
19630xF0, 0x0E, 0xC0, 0x0F, 0x00, 0x3F, 0x40, 0x9C, 0x02, 0xF0, 0x0B, 0xC0, 0x3F,
19640x00, 0x3F, 0x00, 0xBC, 0x00, 0x78, 0x03, 0xC0, 0x39, 0x00, 0x3E, 0x00, 0xDC,
19650x80, 0xF0, 0x0F, 0xC0, 0x3B, 0x00, 0xA7, 0x00, 0xFE, 0x03, 0xF0, 0x4B, 0xE0,
19660x17, 0x22, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0xDF, 0x00, 0xB3,
19670x08, 0xFC, 0x06, 0x70, 0x9F, 0xC8, 0x7E, 0x12, 0xF3, 0x09, 0xEC, 0x27, 0x11,
19680x1F, 0xC0, 0x7C, 0x00, 0xE3, 0x09, 0xDC, 0x27, 0xF0, 0x1F, 0xC0, 0x7C, 0x40,
19690xF3, 0x09, 0xBC, 0x0F, 0xF8, 0x1F, 0xC0, 0x7F, 0x00, 0xFF, 0x09, 0x9C, 0x07,
19700xF0, 0x1F, 0xC0, 0x5C, 0x00, 0x33, 0x01, 0xCC, 0x06, 0xF0, 0x1B, 0xC8, 0x0D,
19710x08, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0x27, 0x01, 0x91, 0x20,
19720x44, 0x53, 0x10, 0x01, 0x40, 0x06, 0x00, 0x15, 0x00, 0x50, 0x00, 0x50, 0x11,
19730x40, 0x44, 0x08, 0x15, 0x00, 0x04, 0x10, 0xD2, 0x01, 0x41, 0x45, 0x00, 0x11,
19740x80, 0x74, 0x00, 0xD0, 0x11, 0x42, 0x03, 0x25, 0x11, 0x04, 0x64, 0x04, 0xD1,
19750x1F, 0x48, 0x74, 0x40, 0x15, 0x81, 0x54, 0x02, 0xD2, 0x09, 0x42, 0x0F, 0x60,
19760x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x37, 0x00, 0xC1, 0x44, 0x14,
19770x13, 0x50, 0x4D, 0x48, 0x37, 0x11, 0xD1, 0x84, 0x46, 0x13, 0x10, 0x0C, 0x62,
19780x30, 0x20, 0xC5, 0x04, 0x14, 0x03, 0xD0, 0x4D, 0x40, 0x30, 0x00, 0xC9, 0x44,
19790x14, 0x13, 0xD0, 0x0C, 0x40, 0x36, 0x10, 0xD5, 0x00, 0x14, 0x03, 0x58, 0x0C,
19800x40, 0x21, 0x00, 0x15, 0x20, 0x14, 0x00, 0xD8, 0x00, 0x40, 0x4F, 0x80, 0x0E,
19810x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x25, 0x10, 0xD1, 0x21, 0x64, 0x07,
19820x10, 0x01, 0x40, 0x07, 0x00, 0x15, 0x00, 0x54, 0x00, 0x50, 0x01, 0x70, 0x04,
19830x00, 0x15, 0x00, 0x54, 0x00, 0xD0, 0x01, 0x40, 0x05, 0x00, 0x19, 0x00, 0x74,
19840x00, 0xD0, 0x01, 0x42, 0x07, 0x00, 0x11, 0x00, 0x64, 0x00, 0xD0, 0x0D, 0x00,
19850x25, 0x00, 0x15, 0x01, 0x54, 0x44, 0xD0, 0x11, 0x41, 0x0F, 0x00, 0x06, 0x00,
19860x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x13, 0x03, 0xD3, 0x31, 0x7C, 0x17, 0x70,
19870x0C, 0xC0, 0x37, 0x00, 0xD3, 0x00, 0x0C, 0x03, 0x30, 0x0D, 0xC0, 0x34, 0x30,
19880xD3, 0x00, 0x5C, 0x03, 0xF0, 0x0D, 0x02, 0x34, 0x00, 0xDB, 0x00, 0x7C, 0x03,
19890xD0, 0x0D, 0x40, 0x37, 0x20, 0xC7, 0x40, 0x5C, 0x03, 0xF0, 0x0D, 0xD0, 0x15,
19900x00, 0x06, 0x01, 0x5C, 0x0E, 0xF0, 0x39, 0xC0, 0x09, 0x20, 0x0E, 0x00, 0x00,
19910x00, 0x00, 0x00, 0x07, 0x80, 0x2D, 0x40, 0xDF, 0x00, 0xDC, 0x03, 0xF0, 0x03,
19920xC0, 0x0C, 0x00, 0x3F, 0x80, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x40, 0x3B,
19930x00, 0xEC, 0x00, 0xF0, 0x03, 0x08, 0x0F, 0x00, 0x37, 0x00, 0xFC, 0x00, 0xF0,
19940x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xCC, 0x00, 0xD0, 0x0F, 0xC0, 0x3E, 0x81,
19950xBB, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00,
19960x00, 0x00, 0x02, 0x08, 0xB5, 0x00, 0xDF, 0x00, 0x4D, 0x03, 0x70, 0x8D, 0xC0,
19970x37, 0x01, 0xD3, 0x00, 0x7C, 0x03, 0x30, 0x8D, 0xC0, 0x37, 0x01, 0xD7, 0x00,
19980x4C, 0x03, 0x30, 0x0D, 0xC0, 0x37, 0x01, 0xDF, 0x00, 0x7C, 0x03, 0xB0, 0x0D,
19990xC2, 0x34, 0x00, 0xD7, 0x00, 0x6C, 0x13, 0xB0, 0x0C, 0xC0, 0x24, 0x01, 0x9F,
20000x00, 0x7C, 0x08, 0xF0, 0x21, 0x48, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
20010x00, 0x13, 0xA0, 0x24, 0x00, 0xDD, 0x00, 0x44, 0x03, 0x10, 0x11, 0x40, 0x00,
20020x04, 0x0B, 0x00, 0x5C, 0x00, 0xB0, 0x00, 0x40, 0x83, 0x00, 0x1B, 0x00, 0x6E,
20030x00, 0x10, 0x00, 0x40, 0xC3, 0x00, 0x1D, 0x00, 0x5C, 0x00, 0x10, 0x01, 0xE8,
20040x03, 0x00, 0x11, 0x80, 0x44, 0x40, 0x10, 0x0D, 0xC0, 0x20, 0x01, 0x9D, 0x00,
20050x5C, 0x00, 0xD0, 0x11, 0x41, 0x4F, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
20060x03, 0x20, 0x22, 0x00, 0x9D, 0x00, 0x44, 0x03, 0x50, 0x0C, 0x40, 0xB1, 0x00,
20070xC5, 0x00, 0x14, 0x03, 0x10, 0x1C, 0x40, 0x33, 0x00, 0xD1, 0x00, 0x04, 0x03,
20080x10, 0x0C, 0x48, 0x73, 0x00, 0xC9, 0x00, 0x34, 0x83, 0x90, 0x0C, 0x40, 0x30,
20090x00, 0xC5, 0x00, 0x24, 0x07, 0x80, 0x0C, 0x40, 0xE3, 0x00, 0x4D, 0x05, 0x36,
20100x12, 0xD0, 0x48, 0x40, 0x4F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
20110x08, 0x6A, 0x00, 0xED, 0x09, 0x86, 0x07, 0x10, 0x13, 0x60, 0x4C, 0x00, 0x2D,
20120x01, 0xD4, 0x04, 0x90, 0x12, 0x40, 0x4F, 0x00, 0x38, 0x01, 0xA4, 0x04, 0x1C,
20130x12, 0x40, 0x4B, 0x04, 0x2D, 0x01, 0xD4, 0x04, 0x00, 0x13, 0x40, 0x49, 0x00,
20140x21, 0x01, 0xC4, 0x04, 0x50, 0x1C, 0x40, 0x79, 0x00, 0xED, 0x11, 0x94, 0x07,
20150xD0, 0x9A, 0x40, 0x37, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10,
20160x32, 0x02, 0x0D, 0x08, 0x4C, 0x03, 0x50, 0x0C, 0x40, 0x31, 0x12, 0xD7, 0x00,
20170x1C, 0x03, 0x30, 0x0C, 0x40, 0x33, 0x00, 0xC7, 0x00, 0x04, 0x03, 0x30, 0x0C,
20180xC0, 0x33, 0x00, 0xCF, 0x08, 0x34, 0x13, 0xB0, 0x0D, 0x40, 0x30, 0x02, 0xD7,
20190x00, 0x2C, 0x03, 0xB0, 0x0C, 0xD0, 0x23, 0x02, 0xCF, 0x20, 0x3C, 0x42, 0xF0,
20200x8C, 0xC0, 0x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x2D,
20210x00, 0x7F, 0x08, 0xF8, 0x03, 0xE0, 0x02, 0x80, 0x09, 0x00, 0x3B, 0x00, 0xA8,
20220x20, 0xF2, 0x81, 0xC0, 0x0B, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xC8,
20230x07, 0x00, 0x3F, 0x28, 0x7C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x40,
20240x54, 0x24, 0x20, 0x9D, 0xC0, 0x2C, 0x08, 0xFF, 0x00, 0xFC, 0x23, 0xF0, 0x8F,
20250xC2, 0x0B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x27, 0x00,
20260xDF, 0x00, 0x4C, 0x03, 0xF0, 0x1D, 0xC0, 0x35, 0x00, 0xDE, 0x00, 0x7C, 0x07,
20270x30, 0x1D, 0xC0, 0x34, 0x00, 0xDF, 0x00, 0x3C, 0x03, 0x30, 0x1D, 0xC0, 0x34,
20280x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x3C,
20290x03, 0xB0, 0x0D, 0xC4, 0x24, 0x00, 0x5F, 0x00, 0x7C, 0x83, 0x30, 0x0D, 0xC2,
20300x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x29, 0x00, 0xFD,
20310x00, 0x84, 0x03, 0xD0, 0x03, 0x40, 0x08, 0x00, 0x2D, 0x00, 0xB4, 0x00, 0x50,
20320x02, 0x00, 0x08, 0x88, 0x2D, 0x00, 0xB4, 0x00, 0x50, 0x02, 0x40, 0x09, 0x00,
20330x2F, 0x00, 0xA4, 0x00, 0xD1, 0x02, 0x48, 0x0B, 0x00, 0x2D, 0x20, 0xB6, 0x00,
20340x18, 0x4E, 0x40, 0x38, 0x20, 0xED, 0x00, 0xF4, 0x01, 0x10, 0x07, 0x40, 0x4C,
20350x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0x6D, 0x00,
20360x84, 0x47, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x81, 0xF4, 0x07, 0x18, 0x1F,
20370x48, 0x78, 0x80, 0xED, 0x01, 0xF6, 0x07, 0x13, 0x1F, 0x44, 0x7B, 0x80, 0xED,
20380x01, 0xB4, 0x87, 0x58, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x01, 0xF4, 0x07, 0xD8,
20390xDE, 0x40, 0x6A, 0x00, 0xED, 0x01, 0xB4, 0x07, 0x10, 0x1E, 0x40, 0x10, 0x00,
20400x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x20, 0x23, 0x00, 0x4C, 0x00, 0x04,
20410x05, 0xD0, 0x00, 0x40, 0x00, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x50, 0x00, 0x40,
20420x00, 0xA0, 0x0D, 0x00, 0x74, 0x00, 0x50, 0x00, 0x40, 0x03, 0x10, 0x05, 0x00,
20430x34, 0x00, 0xD0, 0x00, 0x40, 0x03, 0x00, 0x0D, 0x20, 0x34, 0x00, 0x51, 0x0C,
20440x50, 0x22, 0x00, 0x8D, 0x0F, 0x74, 0x0F, 0x1A, 0x6D, 0x40, 0x58, 0x00, 0x0C,
20450x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x1F, 0x00, 0x7F, 0x10, 0xCC, 0x0D,
20460xF0, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0x30, 0x05, 0xD0, 0x14,
20470x00, 0x5F, 0x00, 0x7C, 0x01, 0x30, 0x05, 0xC0, 0x17, 0x00, 0x5D, 0x00, 0x7C,
20480x01, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x3C, 0x01, 0xF0, 0x04, 0xC0,
20490x1A, 0x00, 0x7F, 0x00, 0xFC, 0x0D, 0x34, 0x07, 0xD0, 0x5C, 0x20, 0x0E, 0x00,
20500x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x00, 0x1F, 0x20, 0x7C, 0x40, 0xF2,
20510x03, 0xC0, 0x0F, 0x00, 0x3F, 0x20, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x8F, 0x00,
20520x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0D, 0x00, 0x3D, 0x00, 0xE4, 0x00,
20530xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x20, 0xFC, 0x08, 0x90, 0x01, 0xC0, 0x05,
20540x00, 0x1F, 0x00, 0x7C, 0x28, 0xF0, 0x81, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00,
20550x00, 0x00, 0x00, 0x10, 0x00, 0x65, 0x00, 0x9F, 0x40, 0x7C, 0x02, 0xF0, 0x19,
20560xC0, 0x27, 0x00, 0x9F, 0x00, 0x5C, 0x82, 0xF0, 0x09, 0xC0, 0x27, 0x02, 0x9F,
20570x00, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0xE7, 0x80, 0x9F, 0x00, 0x4D, 0x02, 0x34,
20580x09, 0xC0, 0x27, 0x00, 0x9B, 0x00, 0x7C, 0x06, 0x72, 0x09, 0xC0, 0x24, 0x00,
20590x93, 0x05, 0x7C, 0x42, 0x30, 0x09, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00,
20600x00, 0x00, 0x01, 0x28, 0x66, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x19, 0x40,
20610x27, 0x00, 0x8D, 0x00, 0x44, 0x02, 0xD8, 0x19, 0x40, 0xE7, 0x20, 0x9D, 0x00,
20620x74, 0x02, 0x10, 0x09, 0x40, 0x27, 0x04, 0x97, 0x20, 0x44, 0x02, 0x30, 0x09,
20630x40, 0x23, 0x00, 0x91, 0x20, 0x70, 0x16, 0x30, 0x0B, 0xD0, 0x24, 0x00, 0x91,
20640x00, 0x74, 0x96, 0x50, 0x39, 0x40, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
20650x00, 0x1C, 0xA0, 0x24, 0x02, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x89, 0x40, 0x6F,
20660x00, 0xBD, 0x00, 0xD4, 0x02, 0xD0, 0xAB, 0x40, 0x2F, 0x00, 0xBD, 0x00, 0xF4,
20670x02, 0x10, 0x0B, 0x60, 0x2F, 0x00, 0xAD, 0x00, 0x84, 0x02, 0x10, 0x0B, 0x40,
20680x2F, 0x80, 0xB9, 0x00, 0xF4, 0x12, 0x10, 0x69, 0x60, 0x36, 0x00, 0xD9, 0x02,
20690x74, 0x06, 0x10, 0x19, 0x41, 0x70, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
20700x14, 0x28, 0xA0, 0x00, 0x8D, 0x1C, 0x34, 0x22, 0xD0, 0x2A, 0x40, 0xEB, 0x00,
20710xBD, 0x08, 0x84, 0x22, 0xD0, 0x0A, 0x40, 0x2B, 0x00, 0xAD, 0x00, 0xB0, 0x22,
20720x10, 0x8A, 0x40, 0x2B, 0x00, 0xA5, 0x88, 0x84, 0x22, 0x10, 0x0A, 0x40, 0x2F,
20730x02, 0xA1, 0x08, 0xB4, 0x02, 0x14, 0x08, 0x64, 0x24, 0x08, 0x89, 0x00, 0x34,
20740x02, 0x50, 0x09, 0x40, 0x50, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
20750xB0, 0x06, 0x00, 0x1F, 0x06, 0x7C, 0x08, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F,
20760x02, 0x5C, 0x08, 0xD0, 0x01, 0xC0, 0x17, 0x00, 0x1D, 0x8A, 0x7C, 0x08, 0x34,
20770x21, 0xC0, 0x07, 0x00, 0x1D, 0x02, 0x44, 0x08, 0x30, 0x01, 0xC0, 0x87, 0x00,
20780x1B, 0x02, 0xFC, 0x00, 0x70, 0x11, 0xC0, 0x06, 0x40, 0x1B, 0x00, 0x7C, 0x28,
20790x32, 0xA1, 0xD0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0,
20800x6F, 0x00, 0xBF, 0x04, 0xFC, 0x12, 0xF0, 0x19, 0x40, 0x67, 0x00, 0x9F, 0x44,
20810x3C, 0x12, 0xF2, 0x08, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x7C, 0x12, 0xF0, 0x48,
20820xC0, 0x27, 0x00, 0x97, 0x84, 0x7C, 0x12, 0x70, 0x09, 0xC2, 0x27, 0x01, 0x9F,
20830x84, 0x7C, 0x02, 0x70, 0x28, 0xC0, 0x2D, 0x00, 0xB7, 0x00, 0xFC, 0x02, 0xF0,
20840x0B, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F,
20850x00, 0x93, 0x2C, 0x7C, 0x02, 0xF0, 0x0B, 0xC0, 0xAB, 0x00, 0x97, 0x00, 0x7C,
20860x02, 0xF0, 0x0B, 0xC0, 0x28, 0x00, 0x9F, 0x00, 0x7C, 0x22, 0xF0, 0x09, 0xC8,
20870x2D, 0x00, 0x93, 0x08, 0x5C, 0x02, 0x70, 0x09, 0xC0, 0x27, 0x02, 0x9F, 0x00,
20880xDC, 0x02, 0xB0, 0x1B, 0xC3, 0x2B, 0x00, 0xBF, 0x60, 0xFC, 0x82, 0x30, 0x0B,
20890xC0, 0x63, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x54, 0x45,
20900x51, 0x4C, 0x74, 0x40, 0xD0, 0x51, 0x41, 0x47, 0x01, 0x11, 0x14, 0x74, 0x10,
20910xD0, 0x01, 0x40, 0x04, 0x08, 0x1D, 0x05, 0x74, 0x80, 0xD2, 0x41, 0x41, 0x04,
20920x00, 0x11, 0x04, 0x4C, 0x40, 0x10, 0x01, 0xC0, 0x05, 0x00, 0x1D, 0x14, 0x74,
20930x00, 0x10, 0x21, 0x42, 0x07, 0x08, 0x5D, 0x00, 0x74, 0x00, 0x50, 0x05, 0x40,
20940x73, 0x40, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x21, 0x00, 0x81,
20950x04, 0x34, 0x12, 0xD0, 0x08, 0x40, 0x23, 0x01, 0x85, 0x04, 0x34, 0x52, 0xD0,
20960x09, 0x62, 0x21, 0x00, 0x8D, 0x10, 0x34, 0x02, 0xD0, 0x48, 0x40, 0x25, 0x00,
20970x91, 0x04, 0x54, 0x12, 0x50, 0x08, 0x48, 0x23, 0x80, 0x8D, 0x04, 0x14, 0x02,
20980xD2, 0x08, 0x48, 0x23, 0x20, 0x8D, 0x20, 0x74, 0x02, 0x18, 0x08, 0x40, 0x4B,
20990x28, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x25, 0x00, 0x91, 0x00,
21000x74, 0x0A, 0xD0, 0x09, 0x40, 0x23, 0x00, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x09,
21010x00, 0x25, 0x80, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x00, 0x91,
21020x00, 0x54, 0x02, 0x10, 0x09, 0x40, 0x25, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10,
21030x0D, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x76, 0x02, 0x50, 0x09, 0x40, 0x63, 0x00,
21040x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x6F, 0x00, 0x93, 0x02, 0x78,
21050x02, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0x97, 0x00, 0x7C, 0x02, 0xF0, 0x08, 0xC0,
21060x25, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0x48, 0x21, 0x40, 0x81, 0x00,
21070x54, 0x02, 0x70, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x1C, 0x02, 0xB0, 0x09,
21080xC0, 0xE7, 0x81, 0x9F, 0x02, 0x78, 0x42, 0x32, 0x29, 0xC0, 0x17, 0x20, 0x0E,
21090x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0xA5, 0x00, 0x9F, 0x04, 0x7C, 0x26,
21100xF1, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xD0, 0x26,
21110x20, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC2, 0x27, 0x08, 0x9F, 0x00, 0x4C,
21120x02, 0xF0, 0x09, 0xC0, 0x25, 0x00, 0x9F, 0x80, 0x7C, 0x02, 0xBC, 0x09, 0xC0,
21130x67, 0x01, 0x9F, 0x09, 0x7C, 0x02, 0xF1, 0x49, 0xC0, 0x4B, 0x00, 0x06, 0x00,
21140x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x05, 0x00, 0x1F, 0x02, 0x4D, 0x00, 0xF0,
21150x01, 0xC0, 0x06, 0x00, 0x13, 0x00, 0x7E, 0x00, 0x70, 0x01, 0xC0, 0x04, 0x00,
21160x17, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE2, 0x07, 0x08, 0x1B, 0x00, 0x4C, 0x00,
21170xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x40, 0xF0, 0x41, 0xC8, 0x87,
21180x40, 0x17, 0x00, 0x7C, 0x00, 0x34, 0x01, 0x87, 0x40, 0x20, 0x04, 0x00, 0x00,
21190x00, 0x00, 0x00, 0x14, 0x80, 0x54, 0x80, 0x5D, 0x00, 0x44, 0x01, 0x70, 0x45,
21200x40, 0x1C, 0x00, 0x5B, 0x00, 0x74, 0x01, 0x70, 0x07, 0x60, 0x9C, 0x00, 0x51,
21210x00, 0x74, 0x01, 0xD8, 0x05, 0xC0, 0x1F, 0x00, 0x55, 0x00, 0x1E, 0x01, 0x72,
21220x05, 0x40, 0x17, 0x08, 0x53, 0x00, 0xCC, 0x0D, 0xC0, 0x07, 0xC0, 0xDD, 0x01,
21230x70, 0x0A, 0xF0, 0x35, 0x10, 0x17, 0x50, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00,
21240x00, 0x00, 0x14, 0xA0, 0x36, 0x10, 0xCD, 0x00, 0x16, 0x03, 0x50, 0x0C, 0x40,
21250x62, 0x00, 0xC1, 0x00, 0x34, 0x03, 0x58, 0x98, 0x48, 0xF3, 0x06, 0xCD, 0x00,
21260x34, 0x03, 0xD2, 0x0D, 0x40, 0xB3, 0x01, 0xC1, 0x00, 0x04, 0x03, 0x50, 0x0C,
21270x40, 0x33, 0x80, 0xC9, 0x00, 0x14, 0x0A, 0x90, 0x34, 0x40, 0xE3, 0x01, 0x81,
21280x02, 0x74, 0x03, 0x90, 0x0C, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
21290x00, 0x01, 0x88, 0xB8, 0x11, 0xED, 0xA5, 0x96, 0x13, 0x50, 0x5E, 0x40, 0x9C,
21300x01, 0xE9, 0x08, 0xB4, 0x03, 0x50, 0x0B, 0x40, 0x5F, 0x00, 0xE9, 0x04, 0xB4,
21310x13, 0xD8, 0x0E, 0x40, 0x3D, 0x00, 0xF5, 0x00, 0x96, 0x13, 0x50, 0x0E, 0x40,
21320x7F, 0x03, 0xE1, 0x05, 0x90, 0x0B, 0xD0, 0x26, 0x60, 0x6D, 0x00, 0xE1, 0x82,
21330xB4, 0x02, 0x90, 0x1E, 0x41, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
21340x11, 0x10, 0xF8, 0x00, 0xFD, 0x07, 0x9C, 0x17, 0x70, 0x1F, 0xC0, 0xFA, 0x01,
21350xE3, 0x01, 0xB4, 0x17, 0x70, 0x1E, 0x50, 0x6B, 0x00, 0xED, 0x05, 0xBC, 0x47,
21360xD0, 0x9E, 0x68, 0x7B, 0x08, 0xEB, 0x01, 0x84, 0x17, 0x70, 0x1E, 0xC0, 0x7B,
21370x00, 0xFB, 0x09, 0x9C, 0x07, 0xF0, 0x1E, 0x80, 0x6B, 0x00, 0xE6, 0x21, 0xFC,
21380x06, 0xB0, 0x1B, 0xC0, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
21390xA8, 0x35, 0x00, 0xDF, 0x00, 0x6C, 0x03, 0x70, 0x89, 0xC0, 0x17, 0x00, 0xDF,
21400x00, 0x7C, 0x03, 0xF0, 0x0C, 0xC0, 0x24, 0x18, 0xD7, 0x00, 0x7C, 0xB3, 0xF0,
21410x4D, 0xC2, 0x23, 0x00, 0xC7, 0x92, 0x7C, 0x4B, 0x70, 0x0D, 0xC0, 0xB3, 0x04,
21420xDB, 0x08, 0x6C, 0x03, 0xF0, 0x0D, 0x80, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x02,
21430x70, 0x01, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
21440x79, 0x00, 0xE3, 0x04, 0xCD, 0x53, 0x70, 0x1B, 0xC0, 0x7F, 0x40, 0xF2, 0x01,
21450xDC, 0x67, 0xF0, 0x1B, 0xC0, 0x6F, 0x00, 0xEF, 0x19, 0xCC, 0x07, 0x30, 0x1F,
21460x85, 0x7F, 0x00, 0xF3, 0x11, 0xFC, 0x67, 0x70, 0x1F, 0xC0, 0x7D, 0x00, 0xF7,
21470x01, 0xCD, 0x07, 0xF0, 0x17, 0xC0, 0x7F, 0x00, 0xFF, 0xC1, 0xF4, 0x07, 0xF2,
21480x1B, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x39,
21490x00, 0xE1, 0x00, 0xAC, 0x03, 0x10, 0x0A, 0x40, 0x1B, 0x00, 0xE1, 0x08, 0xDC,
21500xC3, 0x11, 0x0A, 0xC0, 0x09, 0x09, 0xED, 0x00, 0x94, 0x23, 0x50, 0x0E, 0x42,
21510x1B, 0x00, 0xE1, 0x04, 0xDC, 0x03, 0x10, 0x8E, 0x40, 0x38, 0x00, 0xED, 0x00,
21520x84, 0x2B, 0xD0, 0x86, 0x40, 0x2B, 0x06, 0x6D, 0x08, 0xB4, 0x11, 0xD0, 0x4F,
21530xC0, 0x56, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00,
21540xF1, 0x00, 0xC4, 0x23, 0x50, 0x8E, 0x41, 0x3B, 0x00, 0xE1, 0x00, 0xB4, 0x03,
21550x59, 0x8A, 0x41, 0x2A, 0x30, 0xFD, 0x10, 0xE6, 0x03, 0x90, 0x0E, 0x40, 0x3F,
21560x06, 0xE1, 0x20, 0xA6, 0x03, 0x51, 0x0F, 0x40, 0x39, 0x02, 0xED, 0x00, 0xA4,
21570x43, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x02, 0xD2, 0x0A, 0x40,
21580x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x25, 0x02, 0xC1,
21590x09, 0x24, 0x07, 0x10, 0x08, 0x60, 0x53, 0x0E, 0xC1, 0x0A, 0x34, 0x07, 0x12,
21600x08, 0x41, 0xA3, 0x20, 0xCD, 0x02, 0x34, 0x1F, 0x50, 0x3C, 0x40, 0x43, 0x00,
21610xD1, 0x0B, 0x14, 0x37, 0x10, 0x3C, 0x40, 0x74, 0x00, 0xCD, 0x05, 0x24, 0x17,
21620xD1, 0x0C, 0x40, 0x23, 0x00, 0x4D, 0x26, 0x34, 0x18, 0xD0, 0x00, 0x42, 0x12,
21630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x25, 0x40, 0xF3, 0x00,
21640xCD, 0x1B, 0x70, 0x2D, 0xC0, 0xB3, 0x00, 0xF3, 0x8A, 0xFC, 0x0B, 0x70, 0x18,
21650xC0, 0x26, 0x04, 0xFE, 0x01, 0xEC, 0x4F, 0xB0, 0x5F, 0xC0, 0x27, 0x40, 0xF3,
21660x00, 0xFC, 0x0B, 0x70, 0x9C, 0xC0, 0xBD, 0x02, 0xE7, 0x06, 0x6C, 0x0F, 0xD0,
21670x05, 0xC0, 0xE7, 0x00, 0x8D, 0x06, 0x7E, 0x00, 0xF0, 0x01, 0xD0, 0x56, 0x20,
21680x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x04, 0xDF, 0x00, 0x7C,
21690x43, 0xF0, 0x0D, 0xC0, 0xB7, 0x00, 0xDF, 0x00, 0x5C, 0x03, 0x70, 0x29, 0xC0,
21700x05, 0x00, 0xDF, 0x00, 0x5C, 0x03, 0xF0, 0x0D, 0xC0, 0xA7, 0x88, 0xDF, 0x00,
21710x7C, 0x03, 0x72, 0x8D, 0xC0, 0x37, 0x82, 0xDF, 0x00, 0x5C, 0x0B, 0xB0, 0x25,
21720x88, 0xA7, 0x09, 0x9F, 0x02, 0x7C, 0x0C, 0xF0, 0x01, 0xC1, 0x05, 0x00, 0x04,
21730x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x3F, 0x00, 0xFB, 0x00, 0xFC, 0x03,
21740xF0, 0x0F, 0xC1, 0x5F, 0x08, 0xF3, 0x00, 0xFC, 0x43, 0xF0, 0x03, 0xC2, 0x2C,
21750x0C, 0xFF, 0x10, 0xF8, 0x83, 0xF0, 0x0F, 0xC1, 0x0D, 0x04, 0xFB, 0x90, 0xCC,
21760x03, 0xF1, 0x0F, 0xC0, 0x3F, 0x00, 0xF7, 0x40, 0xE8, 0x03, 0xD0, 0x27, 0xC0,
21770x6F, 0x00, 0x33, 0x00, 0xCC, 0x02, 0xF0, 0x03, 0xC0, 0x13, 0x22, 0x0C, 0x00,
21780x00, 0x00, 0x00, 0x00, 0x85, 0x20, 0x36, 0x08, 0xD1, 0x00, 0x74, 0x83, 0xD0,
21790x09, 0x60, 0x16, 0x0A, 0xD1, 0x00, 0x74, 0x03, 0xD2, 0x15, 0x40, 0x64, 0x00,
21800xDD, 0x00, 0x5C, 0x03, 0xD0, 0x0D, 0x40, 0xC4, 0x04, 0xDD, 0x00, 0x44, 0x03,
21810xD8, 0x0D, 0x40, 0x34, 0x00, 0xD1, 0x00, 0x44, 0x07, 0xC0, 0x25, 0x42, 0xE3,
21820xC0, 0x13, 0x05, 0x44, 0x4E, 0xD0, 0x31, 0x40, 0x17, 0x80, 0x00, 0x00, 0x00,
21830x00, 0x00, 0x00, 0x01, 0xA2, 0x64, 0x20, 0xD9, 0x00, 0x74, 0x03, 0xD0, 0x09,
21840x48, 0x37, 0x04, 0xD1, 0x00, 0x74, 0x03, 0x50, 0x19, 0x41, 0x45, 0x20, 0xDD,
21850x00, 0x74, 0x03, 0x50, 0x0C, 0x40, 0x67, 0x00, 0xDD, 0x00, 0x64, 0x03, 0xD0,
21860x0D, 0x40, 0x36, 0x00, 0xD5, 0x00, 0x76, 0x07, 0xD0, 0x05, 0x40, 0xB7, 0x01,
21870x91, 0x01, 0x44, 0x04, 0xD2, 0x39, 0x42, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00,
21880x00, 0x00, 0x10, 0x28, 0x20, 0x00, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x08, 0x40,
21890x33, 0x08, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x09, 0x40, 0x40, 0x00, 0xCD, 0x00,
21900x14, 0x03, 0xD0, 0x0C, 0x40, 0x00, 0x00, 0xCD, 0x00, 0x24, 0x03, 0xD0, 0x0D,
21910x40, 0x30, 0x00, 0xD1, 0x00, 0x16, 0x83, 0xD0, 0x04, 0x40, 0x13, 0x10, 0x01,
21920x00, 0x05, 0x00, 0xD0, 0x08, 0x60, 0x43, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00,
21930x00, 0x00, 0xB0, 0x26, 0x00, 0xDB, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0x48, 0x13,
21940x40, 0xD3, 0x80, 0x7C, 0x03, 0xF1, 0x01, 0xD0, 0x04, 0x00, 0xDE, 0x00, 0xFC,
21950x03, 0x72, 0x0F, 0xC4, 0x05, 0x00, 0xFF, 0x00, 0xEC, 0x03, 0xD0, 0x0D, 0xC0,
21960x3E, 0x00, 0xE7, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0xC4, 0x37, 0x88, 0x11, 0x00,
21970x4C, 0x82, 0xF0, 0x09, 0xC0, 0x01, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
21980x05, 0xA8, 0x2F, 0x10, 0xFF, 0x00, 0xBC, 0x03, 0xF0, 0x0B, 0xC0, 0x1E, 0x00,
21990xFF, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0E, 0x00, 0xFF, 0x00, 0x9C, 0x03,
22000xF0, 0x0F, 0xC8, 0x0B, 0x00, 0xFF, 0x00, 0xDC, 0x03, 0xF0, 0x0E, 0x40, 0x3F,
22010x00, 0xFF, 0x00, 0xEC, 0x01, 0xF0, 0x0B, 0xC2, 0x1F, 0x08, 0x37, 0x00, 0xFC,
22020x00, 0xE1, 0x03, 0xC0, 0x17, 0x22, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
22030xA0, 0x2F, 0x00, 0x3B, 0x14, 0xBC, 0x0F, 0x34, 0x1F, 0xC0, 0x7E, 0x02, 0xFF,
22040x09, 0xFC, 0x07, 0xB0, 0x1F, 0xC0, 0x7C, 0x00, 0xF3, 0x09, 0x8C, 0x27, 0x72,
22050x1F, 0xC4, 0x7E, 0x02, 0xFB, 0x29, 0xCC, 0x07, 0xF0, 0x1F, 0xC0, 0x7C, 0x20,
22060xF3, 0x09, 0xCC, 0x27, 0x30, 0x83, 0xC2, 0x7C, 0x02, 0xF3, 0x24, 0xEE, 0x1A,
22070x30, 0x4B, 0xC4, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08,
22080x27, 0x20, 0x01, 0x02, 0x74, 0x13, 0x18, 0x11, 0x40, 0x00, 0x00, 0x1D, 0x80,
22090x74, 0x04, 0x40, 0x11, 0x40, 0x00, 0x04, 0x11, 0x00, 0x44, 0x10, 0x10, 0x40,
22100x40, 0x00, 0x00, 0x11, 0x04, 0x44, 0x04, 0xD0, 0x11, 0x41, 0x44, 0x00, 0x13,
22110x44, 0x44, 0x10, 0x30, 0x65, 0x40, 0x34, 0x00, 0xF5, 0x0B, 0x6E, 0x10, 0x10,
22120x11, 0x40, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x02,
22130x40, 0x01, 0x40, 0x36, 0x03, 0x50, 0x0D, 0x50, 0x30, 0x01, 0xCD, 0x84, 0x34,
22140x03, 0x81, 0x0D, 0x50, 0x30, 0x01, 0xC1, 0x00, 0x24, 0x13, 0xD0, 0x0C, 0x41,
22150x30, 0x01, 0xC1, 0x04, 0x24, 0x03, 0xD0, 0x4D, 0x40, 0x34, 0x00, 0xC9, 0x04,
22160x24, 0x03, 0x10, 0x28, 0x40, 0x31, 0x81, 0xCD, 0x20, 0x04, 0x1A, 0x11, 0x88,
22170x40, 0x45, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x15, 0x00,
22180x11, 0x22, 0x34, 0x03, 0x50, 0x01, 0x44, 0x04, 0x00, 0x1D, 0x00, 0x74, 0x80,
22190x90, 0x01, 0x40, 0x04, 0x00, 0x01, 0x00, 0x24, 0x00, 0x90, 0x01, 0x40, 0x04,
22200x00, 0x01, 0x00, 0x67, 0x00, 0xD0, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x64,
22210x00, 0x10, 0x4D, 0x42, 0x36, 0x08, 0xDD, 0x00, 0x47, 0x04, 0x10, 0x19, 0x41,
22220x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x67, 0x40, 0x1B,
22230x01, 0x7C, 0x27, 0x50, 0x0C, 0xC8, 0x34, 0x20, 0xDF, 0x80, 0x3C, 0x03, 0xB4,
22240x0C, 0xC0, 0x34, 0x00, 0xD3, 0x00, 0x6C, 0x03, 0xF0, 0x0D, 0xC0, 0x34, 0x00,
22250xD3, 0x00, 0x6C, 0x03, 0xF2, 0x0C, 0x80, 0x30, 0x00, 0xDB, 0x00, 0x6D, 0x03,
22260x34, 0x01, 0xD1, 0x35, 0x00, 0xDF, 0x40, 0x44, 0x04, 0x22, 0x31, 0xC0, 0x01,
22270x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x69, 0x01, 0x3F, 0x03,
22280xF8, 0x03, 0xB0, 0x03, 0x80, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0x70, 0x03,
22290xC0, 0x0F, 0x00, 0x3F, 0x00, 0xDD, 0x00, 0x70, 0x03, 0xD0, 0x0D, 0x00, 0x37,
22300x00, 0xDC, 0x00, 0xF0, 0x03, 0xC4, 0x0F, 0x00, 0x3F, 0x00, 0xDC, 0x00, 0xF1,
22310x07, 0xC0, 0x3D, 0x20, 0xF7, 0x00, 0xF4, 0x00, 0xF5, 0x03, 0xC3, 0x1E, 0x00,
22320x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x81, 0x37, 0x0A, 0x4D,
22330x03, 0x30, 0x0D, 0xC0, 0x77, 0x41, 0xD3, 0x05, 0x5C, 0x03, 0x30, 0x8D, 0xC0,
22340x35, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0x30, 0x0D, 0xC0, 0x34, 0x00, 0xD3, 0x01,
22350x4C, 0x03, 0x70, 0x0D, 0xC0, 0x34, 0x02, 0xD7, 0x01, 0x7C, 0x03, 0xF0, 0x09,
22360xC0, 0x37, 0x00, 0xDF, 0x10, 0x74, 0x8A, 0x33, 0x21, 0xC4, 0x0B, 0x20, 0x04,
22370x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xB4, 0x00, 0x11, 0x81, 0x44, 0x03,
22380x10, 0x41, 0x44, 0x47, 0x00, 0x11, 0x03, 0x74, 0x00, 0xB0, 0x11, 0x40, 0x04,
22390x00, 0x11, 0x20, 0x74, 0x00, 0x14, 0x01, 0x48, 0x04, 0x00, 0x10, 0x01, 0x44,
22400x44, 0xD0, 0x11, 0x40, 0x44, 0x08, 0x11, 0x01, 0x64, 0x00, 0xD0, 0x0D, 0xC0,
22410x37, 0x10, 0xE0, 0x13, 0x34, 0x04, 0x10, 0x30, 0x00, 0x4F, 0x00, 0x02, 0x00,
22420x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x22, 0x00, 0x41, 0x00, 0x25, 0x03, 0x50,
22430x1C, 0x40, 0xB3, 0x00, 0xC9, 0x02, 0x34, 0x43, 0x90, 0x0C, 0x41, 0x35, 0x80,
22440xC1, 0x00, 0x34, 0x03, 0x10, 0x0D, 0x40, 0x36, 0x00, 0xC1, 0x00, 0x34, 0x07,
22450x50, 0x8C, 0x40, 0x71, 0x80, 0xC9, 0x00, 0x74, 0x03, 0xD0, 0x01, 0x40, 0x36,
22460x08, 0xC4, 0x02, 0x34, 0x02, 0x54, 0x28, 0x02, 0x1F, 0x00, 0x0A, 0x00, 0x00,
22470x00, 0x00, 0x00, 0x06, 0x80, 0x78, 0x40, 0x61, 0x09, 0xE4, 0x07, 0x10, 0x12,
22480x40, 0x4B, 0x00, 0x29, 0x09, 0xB4, 0x24, 0x90, 0x92, 0x40, 0x48, 0x00, 0x21,
22490x01, 0xF6, 0x24, 0x10, 0x12, 0x40, 0x4A, 0x00, 0x21, 0x01, 0xB4, 0x04, 0xD0,
22500x13, 0x40, 0x4D, 0x08, 0x29, 0x09, 0xA6, 0x04, 0xC0, 0x12, 0x40, 0x7B, 0x30,
22510xE9, 0x01, 0xB4, 0x66, 0x50, 0x12, 0x41, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00,
22520x00, 0x00, 0x12, 0x10, 0x04, 0x40, 0x45, 0x00, 0x2C, 0x03, 0x70, 0x8C, 0xC0,
22530x33, 0x00, 0xCB, 0x00, 0x1C, 0x23, 0x30, 0x0C, 0xC0, 0x31, 0x90, 0xC3, 0x00,
22540x3C, 0x03, 0x30, 0x0C, 0xC0, 0x32, 0x00, 0xD3, 0x00, 0x34, 0x03, 0x70, 0x0C,
22550xC0, 0x31, 0x00, 0xCE, 0x80, 0x3E, 0x03, 0xF0, 0x00, 0xC0, 0x37, 0x00, 0xC7,
22560x08, 0x3C, 0x22, 0x70, 0x08, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
22570x00, 0x02, 0xB0, 0x1D, 0x00, 0x7F, 0x00, 0xDE, 0x03, 0xF0, 0x03, 0x60, 0x0F,
22580x00, 0x37, 0x00, 0xBC, 0x20, 0xF0, 0x02, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xF4,
22590x00, 0xF0, 0x03, 0xC0, 0x0D, 0x00, 0x3F, 0x00, 0xCD, 0x00, 0xF0, 0x02, 0xC0,
22600x0A, 0x00, 0x37, 0x80, 0xEE, 0x04, 0xF0, 0x03, 0xC0, 0x3D, 0x82, 0xF7, 0x38,
22610xBC, 0x22, 0xB0, 0x89, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
22620x15, 0xA0, 0x37, 0x40, 0x13, 0x00, 0x6C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x40,
22630xD3, 0x01, 0x0D, 0x03, 0xB0, 0x1C, 0xD0, 0x34, 0x00, 0xDF, 0x00, 0x3C, 0x07,
22640xB4, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x01, 0x0D, 0x07, 0x30, 0x0D, 0xC0, 0x37,
22650x00, 0xDF, 0x01, 0x6D, 0x03, 0x70, 0x0D, 0xC0, 0x37, 0x80, 0xDF, 0x04, 0x3C,
22660x00, 0x30, 0x19, 0xC0, 0x54, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
22670x88, 0x39, 0x00, 0x31, 0x00, 0x85, 0x03, 0xD0, 0x02, 0x40, 0x0F, 0x00, 0x31,
22680x00, 0x84, 0x00, 0x30, 0x02, 0x40, 0x08, 0x00, 0x2D, 0x00, 0xB4, 0x00, 0x10,
22690x02, 0x40, 0x0B, 0x00, 0x3D, 0x00, 0xA4, 0x00, 0x70, 0x02, 0x40, 0x0B, 0x00,
22700x37, 0x00, 0x8C, 0x80, 0xD0, 0x0E, 0xC0, 0x39, 0x00, 0xED, 0x14, 0x9C, 0x00,
22710x14, 0x03, 0xC0, 0x4A, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
22720x79, 0x00, 0x29, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xE1, 0x01,
22730x94, 0x07, 0x90, 0x1F, 0x40, 0x78, 0x00, 0xED, 0x01, 0xF4, 0x07, 0x10, 0x1E,
22740x40, 0x7B, 0x00, 0xED, 0x01, 0xA4, 0x07, 0x10, 0x1E, 0x40, 0x7B, 0x00, 0xED,
22750x01, 0x84, 0x87, 0x50, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x85, 0x94, 0x06, 0x55,
22760x1B, 0x40, 0x0D, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x77,
22770x02, 0x91, 0x10, 0x04, 0x06, 0xD0, 0x00, 0x40, 0x07, 0x00, 0x01, 0x00, 0x14,
22780x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x0C, 0x00, 0x34, 0x00, 0x10, 0x00, 0x40,
22790x03, 0x00, 0x0D, 0x00, 0x24, 0x00, 0x50, 0x01, 0x40, 0x03, 0x10, 0x05, 0x40,
22800x04, 0x00, 0xD0, 0xEC, 0x40, 0x31, 0x00, 0xCD, 0x00, 0x14, 0x0B, 0x50, 0x8C,
22810x40, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x9D, 0x00,
22820x7B, 0x87, 0x6C, 0x41, 0xF1, 0x05, 0xC0, 0x17, 0x00, 0x53, 0x00, 0x5C, 0x01,
22830xB4, 0x05, 0xC8, 0x14, 0x10, 0x5F, 0x00, 0x7C, 0x01, 0x30, 0x05, 0xC4, 0x17,
22840x00, 0x5F, 0x00, 0x44, 0x01, 0x30, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x4C,
22850x01, 0x70, 0x37, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x9E, 0x21, 0x50, 0xB7, 0x40,
22860x5D, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x04, 0x1F,
22870x00, 0x7C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x40, 0xE8, 0x00, 0x70,
22880x03, 0xC0, 0x0F, 0x00, 0x3F, 0x20, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00,
22890x3F, 0x00, 0xDC, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x37, 0x20, 0xDC, 0x00,
22900xF0, 0x01, 0xE0, 0x05, 0x00, 0x1F, 0x00, 0x5E, 0x80, 0x90, 0x01, 0x80, 0x4A,
22910x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x26, 0x02, 0x93, 0x00,
22920x5C, 0x02, 0xF0, 0x89, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x7C, 0x16, 0x30, 0x09,
22930xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x93,
22940x00, 0x5C, 0x02, 0xF0, 0x19, 0xC0, 0x27, 0x00, 0x9F, 0x02, 0x7C, 0x02, 0x30,
22950x09, 0xC0, 0x24, 0x10, 0x9F, 0x80, 0x7E, 0x26, 0x30, 0x89, 0xC2, 0x43, 0x00,
22960x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x66, 0x00, 0x91, 0x20, 0x44,
22970x02, 0x90, 0x19, 0x44, 0xA7, 0x00, 0x91, 0x02, 0x34, 0x02, 0x10, 0x09, 0x40,
22980x27, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x08, 0x50, 0x20, 0x40, 0x91, 0x02,
22990x74, 0x02, 0xD0, 0x19, 0x40, 0x24, 0x00, 0x9F, 0x02, 0x34, 0x02, 0x10, 0x09,
23000x40, 0x24, 0x00, 0x9D, 0x02, 0x74, 0x06, 0x14, 0x39, 0x40, 0x07, 0x00, 0x08,
23010x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x40, 0x91, 0x00, 0x44, 0x02,
23020xD0, 0x09, 0x40, 0x2F, 0x00, 0xB1, 0x00, 0xF4, 0x02, 0x10, 0x0B, 0x40, 0x2F,
23030x00, 0xBD, 0x00, 0xF4, 0x82, 0xD0, 0x0B, 0x40, 0x2C, 0x00, 0xB1, 0x00, 0xF4,
23040x22, 0xD0, 0x4B, 0x40, 0x2E, 0x01, 0xBD, 0x00, 0xF4, 0x02, 0x10, 0x08, 0x40,
23050x24, 0x00, 0x9D, 0x0A, 0x54, 0x03, 0x10, 0x09, 0x40, 0x63, 0x00, 0x02, 0x00,
23060x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x41, 0x81, 0x04, 0x05, 0x02, 0x90,
23070x0A, 0x40, 0x6B, 0x00, 0xA1, 0x01, 0xF4, 0x02, 0x15, 0x0E, 0x42, 0x2B, 0x00,
23080xAD, 0x00, 0xB4, 0x82, 0xD0, 0x0B, 0x40, 0x2C, 0x00, 0xA1, 0x01, 0xB6, 0x02,
23090xD0, 0x0A, 0x40, 0x28, 0x00, 0xAD, 0x01, 0xF4, 0x02, 0x14, 0x48, 0x40, 0x20,
23100x02, 0x8D, 0x04, 0x34, 0x12, 0x10, 0x4C, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00,
23110x00, 0x00, 0x00, 0x1D, 0xB0, 0x82, 0x02, 0x13, 0x0A, 0x5C, 0x28, 0xF0, 0x01,
23120xC0, 0x87, 0x42, 0x13, 0x0A, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x87, 0x02, 0x1F,
23130x0A, 0x7C, 0x28, 0xD0, 0xA1, 0xC0, 0x84, 0x02, 0x13, 0x0A, 0x7C, 0x00, 0xF0,
23140xA1, 0xC0, 0x07, 0x00, 0x1F, 0x0A, 0xFC, 0x28, 0x30, 0xA1, 0xD0, 0x84, 0x10,
23150x1F, 0x00, 0x7C, 0x28, 0x30, 0x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00,
23160x00, 0x00, 0x19, 0xB8, 0x3F, 0x02, 0xBF, 0x08, 0xFC, 0x02, 0xF0, 0x09, 0xC0,
23170x27, 0x00, 0x9F, 0x80, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00,
23180x7C, 0x02, 0xF0, 0x09, 0x80, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09,
23190xC0, 0x27, 0x00, 0x97, 0x00, 0x7C, 0x02, 0xF0, 0x8B, 0xC0, 0x27, 0x21, 0x9F,
23200x08, 0xFC, 0x23, 0xF8, 0x8B, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
23210x00, 0x19, 0xA0, 0x2F, 0x05, 0xA3, 0x8C, 0x5C, 0x02, 0x35, 0x0B, 0xC0, 0x2F,
23220x02, 0xBF, 0x00, 0xFC, 0x02, 0x70, 0x0B, 0xE0, 0x25, 0x00, 0x9F, 0x00, 0x4D,
23230x22, 0xF1, 0x09, 0xC0, 0x24, 0x00, 0xBF, 0x08, 0xFC, 0x02, 0xF0, 0x0B, 0xC0,
23240x2E, 0x00, 0xBF, 0x00, 0x7C, 0x02, 0x30, 0xC9, 0xE2, 0x24, 0x80, 0xBF, 0xA0,
23250xC8, 0x83, 0x30, 0x0B, 0xC0, 0x67, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
23260x1C, 0x08, 0x03, 0x01, 0x11, 0x0C, 0x45, 0x40, 0x10, 0x01, 0x40, 0x03, 0x00,
23270x1D, 0x14, 0x74, 0x00, 0x10, 0x01, 0x40, 0x04, 0x04, 0x1D, 0x10, 0x44, 0x00,
23280xD0, 0x41, 0x41, 0x04, 0x01, 0x0D, 0x04, 0x74, 0x00, 0xD0, 0x01, 0x41, 0x04,
23290x10, 0x0D, 0x54, 0x74, 0x10, 0x50, 0xC1, 0x50, 0x04, 0x24, 0x1D, 0x00, 0x45,
23300x00, 0x10, 0x01, 0x40, 0x73, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
23310xA0, 0x23, 0x05, 0x81, 0x04, 0x04, 0x12, 0x10, 0x08, 0x40, 0x23, 0x00, 0x8D,
23320x04, 0x34, 0x02, 0x50, 0x08, 0x40, 0x20, 0x01, 0x8D, 0x00, 0x14, 0x02, 0xD0,
23330x49, 0x50, 0x20, 0x05, 0x8D, 0x04, 0x34, 0x03, 0xD0, 0x08, 0x40, 0x22, 0x00,
23340x8D, 0x04, 0x34, 0x52, 0x50, 0x58, 0x40, 0x21, 0x01, 0x8D, 0xA8, 0x04, 0x82,
23350x10, 0x08, 0x40, 0x43, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8,
23360x25, 0x40, 0x91, 0x02, 0x44, 0x22, 0x10, 0x09, 0x40, 0x37, 0x00, 0x9D, 0x00,
23370x74, 0x02, 0x50, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x56, 0x02, 0xC0, 0x09,
23380x40, 0x24, 0x00, 0xDD, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x00, 0xDD,
23390x00, 0x34, 0x02, 0x50, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x40, 0x06, 0x02, 0x14,
23400x49, 0x40, 0x63, 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0xA3,
23410x00, 0x93, 0x00, 0x4C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
23420x02, 0x50, 0x08, 0x50, 0x25, 0x08, 0x9F, 0x00, 0x5C, 0x02, 0xF2, 0x09, 0xC8,
23430x24, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x26, 0x00, 0x9D, 0x00,
23440x7C, 0x02, 0x34, 0x09, 0x40, 0x25, 0x00, 0x9D, 0x80, 0x4C, 0x0A, 0x20, 0x09,
23450xC1, 0x17, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x65, 0x02,
23460x9F, 0x00, 0x7C, 0x06, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02,
23470xB0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x6C, 0x02, 0xF0, 0x09, 0xC4, 0x27,
23480x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x10, 0x64,
23490x02, 0xB0, 0x08, 0xC0, 0x27, 0x00, 0x8F, 0x10, 0x7C, 0x0A, 0xF0, 0x09, 0xC2,
23500x53, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x85, 0x20, 0x13,
23510x40, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x00, 0x4C, 0x90, 0xE2,
23520x01, 0xC0, 0x07, 0x20, 0x1F, 0x00, 0x6C, 0x00, 0xD0, 0x01, 0xC0, 0x07, 0x00,
23530x1F, 0x08, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x02, 0x13, 0x00, 0x4C, 0x00,
23540xF0, 0x01, 0xC0, 0x05, 0x08, 0x1D, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x50,
23550x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x1C, 0x02, 0x51, 0x81,
23560x45, 0x01, 0x70, 0x15, 0x40, 0x5F, 0x01, 0x71, 0x00, 0x84, 0x0D, 0x10, 0x97,
23570x40, 0x17, 0x00, 0x5D, 0x00, 0x70, 0x01, 0x98, 0x04, 0x40, 0x17, 0x00, 0x7D,
23580x00, 0x44, 0x01, 0x70, 0x05, 0x40, 0x57, 0x00, 0x7B, 0x03, 0x44, 0x01, 0xC0,
23590x05, 0x40, 0x17, 0x10, 0x7C, 0x02, 0x74, 0x01, 0x10, 0x07, 0x00, 0x50, 0x00,
23600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x72, 0x00, 0xD1, 0x00, 0x44,
23610x03, 0x50, 0x88, 0x40, 0x73, 0x40, 0xC5, 0x08, 0x04, 0x0B, 0x50, 0x2C, 0x40,
23620x33, 0x00, 0xDD, 0x00, 0x24, 0x03, 0xD2, 0x0C, 0x44, 0x33, 0x00, 0xCD, 0x10,
23630x25, 0x02, 0x50, 0x1D, 0x40, 0x63, 0x00, 0xC1, 0x0A, 0x25, 0x03, 0xD0, 0x0C,
23640x60, 0x33, 0x00, 0x4D, 0x0B, 0x34, 0x02, 0x50, 0x0C, 0x00, 0x50, 0x00, 0x0A,
23650x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x38, 0x04, 0xB1, 0x02, 0x84, 0x33,
23660x50, 0x0E, 0x40, 0x5B, 0x00, 0x65, 0x01, 0x84, 0x43, 0x10, 0x0A, 0x41, 0x3B,
23670x01, 0xED, 0x04, 0xB4, 0x23, 0x90, 0x0E, 0x40, 0x3B, 0x10, 0xED, 0x01, 0xA4,
23680x03, 0x50, 0x2E, 0x40, 0x7B, 0x00, 0xE9, 0x21, 0xA6, 0x03, 0xD0, 0x4E, 0x40,
23690x3B, 0x01, 0x69, 0x00, 0xB4, 0x03, 0x58, 0x1C, 0x44, 0x10, 0x00, 0x02, 0x00,
23700x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x78, 0x02, 0xE3, 0x01, 0x9C, 0x27, 0x71,
23710x1E, 0xC0, 0x7B, 0x20, 0xF7, 0x01, 0x8D, 0x06, 0x70, 0x1E, 0xC0, 0x7B, 0x00,
23720xED, 0x05, 0xAC, 0x87, 0xD0, 0x3E, 0xC0, 0x7B, 0x02, 0xEF, 0x01, 0xAC, 0x07,
23730x70, 0x1E, 0xC0, 0x7B, 0x00, 0xE3, 0x01, 0xAC, 0x97, 0xF0, 0x9E, 0xE0, 0x7B,
23740x20, 0x6D, 0x21, 0xBC, 0x07, 0x74, 0x1E, 0xC2, 0x50, 0x40, 0x00, 0x00, 0x00,
23750x00, 0x00, 0x00, 0x10, 0xB0, 0xBD, 0x40, 0x9F, 0x06, 0x7C, 0x03, 0x70, 0x0D,
23760xC0, 0x17, 0x00, 0x5B, 0x00, 0x3C, 0x02, 0x70, 0x09, 0xC0, 0x37, 0x04, 0xDF,
23770x02, 0x7C, 0x0B, 0xF0, 0x2D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x5C, 0x03, 0x60,
23780x0D, 0xC0, 0x33, 0x00, 0x9F, 0x00, 0x5C, 0x0B, 0xF0, 0xAD, 0xC0, 0x37, 0x00,
23790x1F, 0x00, 0x3C, 0x5B, 0xB0, 0x09, 0xC2, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00,
23800x00, 0x00, 0x02, 0xA0, 0x4F, 0x40, 0xB3, 0x03, 0xCC, 0x13, 0xF0, 0x1E, 0xC0,
23810x6C, 0x00, 0xBF, 0x01, 0x8C, 0x06, 0x30, 0x1B, 0xC0, 0x7B, 0x04, 0xF3, 0x13,
23820xCC, 0x0F, 0x30, 0x3F, 0xC0, 0x7F, 0x04, 0xFF, 0x81, 0xFC, 0x87, 0xB0, 0x1F,
23830xC0, 0x7F, 0x00, 0xBF, 0x01, 0xFC, 0x4F, 0xF0, 0x1F, 0xC0, 0x7C, 0x04, 0x7F,
23840x09, 0xCC, 0x06, 0x30, 0x9D, 0xC2, 0x0B, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
23850x00, 0x15, 0x88, 0x09, 0x00, 0xA1, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x08,
23860x04, 0x2D, 0x44, 0x84, 0x02, 0x10, 0x0A, 0x40, 0x3B, 0x00, 0xE1, 0x00, 0xC4,
23870x03, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xAD, 0x10, 0xB4, 0x03, 0x10, 0x0E, 0x40,
23880x3B, 0x00, 0xAD, 0x10, 0xBC, 0x23, 0xD0, 0x0E, 0xC0, 0x3A, 0x00, 0x6D, 0x08,
23890x84, 0x03, 0x11, 0x3E, 0x40, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
23900x08, 0x00, 0x11, 0x00, 0x81, 0x00, 0x84, 0x63, 0xD0, 0x0F, 0x40, 0x2A, 0x00,
23910xAD, 0x00, 0xC6, 0x02, 0x10, 0x0A, 0x40, 0xBF, 0x00, 0xF1, 0x02, 0x84, 0x23,
23920x10, 0x0E, 0x40, 0x3B, 0x00, 0x6D, 0x08, 0xF4, 0x03, 0x10, 0x0E, 0x40, 0x3B,
23930x02, 0x6D, 0x08, 0xB4, 0x03, 0xD0, 0x0C, 0x40, 0x38, 0x02, 0xCD, 0x48, 0x86,
23940x03, 0x50, 0x8E, 0x40, 0x23, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
23950x28, 0x13, 0x00, 0x81, 0x42, 0x06, 0x07, 0xD0, 0x4C, 0x40, 0x42, 0x01, 0x0D,
23960x0D, 0x04, 0x0E, 0x10, 0x68, 0x40, 0x73, 0x00, 0xC1, 0x01, 0x04, 0x43, 0x10,
23970x1C, 0x41, 0x33, 0x04, 0x0D, 0x05, 0x34, 0x43, 0x18, 0x38, 0x40, 0x73, 0x00,
23980x1D, 0x05, 0x16, 0x2B, 0xD1, 0x0C, 0x50, 0x30, 0x08, 0x0D, 0x00, 0x40, 0x0B,
23990x58, 0x28, 0x41, 0x1B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA8,
24000x21, 0x11, 0xD1, 0x02, 0xCC, 0x07, 0xF0, 0x2C, 0xC0, 0xF6, 0x00, 0xDF, 0x02,
24010x4D, 0x44, 0x34, 0x1D, 0xC0, 0x3F, 0x00, 0xE3, 0x04, 0xC4, 0x07, 0x30, 0x0F,
24020x40, 0x7B, 0x00, 0x1F, 0x03, 0x3C, 0x0B, 0x30, 0x9D, 0x40, 0xB7, 0x04, 0x5F,
24030x03, 0xB4, 0x07, 0xF0, 0x0F, 0x00, 0x3C, 0x00, 0xDF, 0x00, 0x4C, 0x22, 0x72,
24040x3D, 0xC4, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x87,
24050x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x1D, 0xC0, 0x25, 0x00, 0x9F, 0x00, 0x7C,
24060x02, 0xF0, 0x8D, 0xC0, 0x37, 0x22, 0xDF, 0x00, 0x7C, 0x23, 0xF0, 0x8D, 0xC0,
24070x37, 0x02, 0x1F, 0x02, 0x7C, 0x07, 0x70, 0x8D, 0xC0, 0x37, 0x01, 0x5F, 0x40,
24080x7C, 0x43, 0xF0, 0x1D, 0xC0, 0x37, 0x00, 0xDD, 0x02, 0x7C, 0x07, 0x96, 0x1D,
24090x40, 0x27, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x2F, 0x80,
24100xF3, 0x10, 0xCC, 0x03, 0xF0, 0x1F, 0xC0, 0x9C, 0x20, 0x7F, 0x00, 0xCC, 0x51,
24110x70, 0x0F, 0xC0, 0x3F, 0x00, 0xF3, 0x20, 0xCC, 0x03, 0xF0, 0x0F, 0xC4, 0x3F,
24120x80, 0x33, 0x00, 0xFC, 0x03, 0x31, 0x0F, 0xC0, 0x3F, 0x00, 0x7F, 0x00, 0xCC,
24130x03, 0x30, 0x0E, 0xC0, 0x3C, 0x00, 0xFF, 0xA0, 0x4C, 0x83, 0x30, 0x17, 0xC2,
24140x07, 0x24, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x20, 0x46, 0x01, 0xC1,
24150x09, 0x45, 0x03, 0xD0, 0x1D, 0x40, 0xC4, 0x10, 0x1D, 0x5B, 0x04, 0x1F, 0x50,
24160x75, 0x40, 0x33, 0x00, 0xD1, 0x00, 0x44, 0x03, 0xD0, 0x0D, 0x42, 0x37, 0x40,
24170x11, 0x02, 0x74, 0x03, 0x50, 0x0D, 0x48, 0x37, 0x20, 0x1D, 0x02, 0x6C, 0x03,
24180xB0, 0x0D, 0x40, 0x35, 0x10, 0x8D, 0x07, 0x54, 0x03, 0x14, 0x3D, 0x40, 0x87,
24190x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x44, 0x00, 0x99, 0x00,
24200x44, 0x03, 0xD0, 0x8D, 0x40, 0x34, 0x00, 0xCD, 0x00, 0x44, 0x03, 0x50, 0x1D,
24210x40, 0x37, 0x00, 0xD1, 0x00, 0x44, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xD1,
24220x08, 0x74, 0x07, 0x90, 0x0D, 0x40, 0x37, 0x02, 0x9D, 0x00, 0x44, 0x03, 0x10,
24230x0D, 0x40, 0x34, 0x00, 0x1D, 0x01, 0x65, 0x02, 0x10, 0x8D, 0x40, 0x07, 0x00,
24240x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x04, 0x00, 0x91, 0x80, 0x04,
24250x03, 0xD0, 0x0C, 0x40, 0x20, 0x00, 0x8D, 0x00, 0x05, 0x03, 0x50, 0x0C, 0x40,
24260x37, 0x00, 0xD1, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x37, 0x00, 0x81, 0x00,
24270x64, 0x03, 0x98, 0x0C, 0x40, 0x33, 0x00, 0x8D, 0x00, 0x65, 0x03, 0x90, 0x0C,
24280x40, 0x30, 0x00, 0x8D, 0x00, 0x14, 0x03, 0x10, 0x4C, 0x40, 0x43, 0x00, 0x00,
24290x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x0E, 0x00, 0xBB, 0x40, 0xCC, 0x03,
24300xF0, 0x0D, 0xC0, 0x14, 0x00, 0x4F, 0x00, 0x4C, 0x03, 0x70, 0x0D, 0xC0, 0x3F,
24310x00, 0xF3, 0x00, 0xCC, 0x03, 0xF0, 0x0F, 0x40, 0x3F, 0x00, 0x51, 0x00, 0x7C,
24320x03, 0xB0, 0x0D, 0xC0, 0x37, 0x10, 0x5F, 0x40, 0xCC, 0x03, 0x30, 0x0F, 0xC0,
24330x34, 0x00, 0x9F, 0x20, 0xCC, 0x03, 0x30, 0x05, 0xC2, 0x07, 0x40, 0x08, 0x00,
24340x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x0F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0,
24350x0F, 0xC0, 0x0F, 0x00, 0x3F, 0x40, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00,
24360xEF, 0x40, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x3F, 0x80, 0xBC, 0x03,
24370x70, 0x0B, 0xC0, 0x3F, 0x10, 0x3F, 0x80, 0xDC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F,
24380x20, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x2F, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00,
24390x00, 0x00, 0x00, 0x03, 0xA0, 0x7B, 0x00, 0xFF, 0x01, 0xCC, 0x27, 0xE0, 0x1F,
24400xC0, 0x7C, 0x02, 0xFB, 0x01, 0xBE, 0x0F, 0x11, 0x3F, 0xC0, 0x7C, 0x82, 0xF3,
24410x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFB, 0x01, 0xDC, 0x07, 0x30,
24420x9F, 0xC0, 0x5E, 0x02, 0xB3, 0x84, 0xEC, 0x31, 0xF0, 0x1F, 0xE4, 0x7F, 0x00,
24430xFF, 0xC1, 0xEC, 0x24, 0xB0, 0x17, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00,
24440x00, 0x00, 0x01, 0x08, 0x07, 0x00, 0x1D, 0x10, 0x69, 0x00, 0xF1, 0x11, 0x40,
24450x00, 0x20, 0x11, 0x01, 0x74, 0x00, 0x10, 0x01, 0x40, 0x00, 0x01, 0x17, 0x01,
24460x74, 0x04, 0xD0, 0x11, 0x40, 0x04, 0x20, 0x1D, 0x01, 0x44, 0x84, 0xB0, 0x01,
24470x40, 0x15, 0x01, 0xD5, 0x09, 0x44, 0xB3, 0xD0, 0x1F, 0x42, 0x7F, 0x00, 0xFD,
24480x01, 0x04, 0x10, 0x10, 0x19, 0x40, 0x05, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
24490x00, 0x11, 0xA0, 0x33, 0x00, 0xDD, 0x84, 0x00, 0x13, 0xD0, 0x0D, 0x40, 0x30,
24500x21, 0xC9, 0x00, 0x30, 0x13, 0x10, 0x4D, 0x40, 0x34, 0x00, 0xC1, 0x00, 0x34,
24510x83, 0xC0, 0x0D, 0x00, 0x30, 0x01, 0xCD, 0x60, 0x40, 0x03, 0x92, 0x4C, 0x40,
24520x20, 0x00, 0x85, 0x00, 0x14, 0x01, 0x50, 0x0C, 0x40, 0x33, 0x80, 0xC5, 0x00,
24530x44, 0x10, 0x91, 0x0D, 0x64, 0x44, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
24540x03, 0xA8, 0x05, 0x00, 0x1D, 0x00, 0x46, 0x80, 0x50, 0x01, 0x40, 0x04, 0x00,
24550x11, 0x00, 0x74, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x15, 0x00, 0x74, 0x00,
24560xD0, 0x01, 0x50, 0x04, 0x08, 0x1D, 0x00, 0x54, 0x00, 0x98, 0x01, 0x40, 0x21,
24570x00, 0x94, 0x00, 0x64, 0x11, 0xD0, 0x0D, 0x60, 0x37, 0x00, 0xDD, 0x00, 0x44,
24580x06, 0x10, 0x09, 0x40, 0x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24590x88, 0x37, 0x00, 0xCF, 0x00, 0x44, 0x03, 0xD1, 0x0C, 0xD0, 0x34, 0x00, 0xDB,
24600x00, 0x74, 0x03, 0x34, 0x0C, 0xD0, 0x30, 0x00, 0xD3, 0x80, 0x7C, 0x03, 0xF1,
24610x0D, 0x40, 0x36, 0x08, 0xDB, 0x00, 0x1C, 0x03, 0xB0, 0x0D, 0xC2, 0xA6, 0x00,
24620x87, 0x01, 0x7D, 0x01, 0xF0, 0x0D, 0x40, 0x37, 0x00, 0xCF, 0x00, 0x2D, 0x04,
24630xB0, 0xD4, 0x40, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80,
24640x0D, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00,
24650xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x80, 0xF4, 0x00, 0xF0, 0x03,
24660xC0, 0x0D, 0x00, 0x3D, 0x00, 0xED, 0x40, 0xF0, 0x03, 0xC0, 0x3F, 0x08, 0xFF,
24670x05, 0xCC, 0x03, 0xF0, 0x0F, 0x40, 0x3E, 0x20, 0xFF, 0x00, 0xFE, 0x00, 0xF0,
24680x1B, 0xD0, 0x1E, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35,
24690x04, 0xD3, 0x01, 0x7C, 0x03, 0xF0, 0x0D, 0xC8, 0x34, 0x10, 0xD7, 0x08, 0x6E,
24700xA3, 0x30, 0x0D, 0xC0, 0x37, 0x00, 0xDB, 0x84, 0x7C, 0x83, 0xF0, 0x0D, 0xC0,
24710x37, 0x00, 0xDF, 0x08, 0x6C, 0x03, 0xF0, 0x0D, 0xC0, 0xA6, 0x20, 0x97, 0x24,
24720x6E, 0x09, 0xF0, 0x0D, 0xC0, 0x37, 0x28, 0xDF, 0x20, 0x7C, 0x02, 0x30, 0x2D,
24730xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xC4, 0x01,
24740x11, 0x01, 0x74, 0x00, 0xD0, 0x01, 0xD0, 0x06, 0x00, 0x11, 0x01, 0x44, 0x04,
24750x14, 0x51, 0x40, 0x07, 0x30, 0x11, 0x10, 0x5C, 0x00, 0xD9, 0x00, 0xC1, 0x45,
24760x24, 0x0D, 0xAA, 0x64, 0x00, 0x70, 0x41, 0x40, 0x64, 0x00, 0x9B, 0x04, 0x74,
24770x01, 0xD0, 0x0D, 0x48, 0x37, 0x00, 0xDD, 0x04, 0x5C, 0x6E, 0x10, 0x09, 0xC0,
24780x4D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x32, 0x80, 0xC1,
24790x00, 0x34, 0x03, 0xD0, 0x8C, 0x40, 0x34, 0x00, 0xC5, 0x01, 0x44, 0x07, 0x92,
24800x1C, 0x00, 0x33, 0x00, 0xC1, 0x02, 0x34, 0x03, 0xD0, 0x1C, 0x60, 0x73, 0x20,
24810xCD, 0x23, 0x34, 0x27, 0xD0, 0x1D, 0x40, 0xF0, 0x04, 0x81, 0x03, 0x34, 0x01,
24820xD0, 0x0C, 0x40, 0x73, 0x00, 0xCD, 0x05, 0x34, 0x0D, 0x10, 0x08, 0x40, 0x1F,
24830x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x4C, 0x00, 0x21, 0x01,
24840xB4, 0x04, 0xD0, 0x13, 0x40, 0x48, 0x00, 0x21, 0x01, 0xC4, 0x04, 0x98, 0x52,
24850x44, 0x4B, 0x00, 0x21, 0x05, 0x94, 0x04, 0xD0, 0x12, 0x68, 0x4B, 0x00, 0x2D,
24860x01, 0xB0, 0x04, 0x50, 0x12, 0x40, 0x79, 0x00, 0xE9, 0x01, 0xB4, 0x07, 0xD0,
24870x1E, 0x40, 0x7B, 0x00, 0xED, 0xA1, 0x94, 0x27, 0x10, 0x9A, 0x40, 0x19, 0x00,
24880x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xC3, 0x00, 0x3C,
24890x03, 0xF0, 0x8C, 0x40, 0x30, 0x20, 0xC7, 0x00, 0x05, 0x23, 0xB0, 0x5C, 0xC4,
24900x33, 0x00, 0xC1, 0x05, 0x3C, 0x03, 0xD0, 0x0C, 0xC0, 0x33, 0x20, 0xCF, 0x88,
24910x3C, 0x03, 0xF2, 0x0D, 0x50, 0xA0, 0x04, 0xC3, 0x00, 0x34, 0x03, 0xF0, 0x8C,
24920xC0, 0x33, 0x06, 0xCF, 0x00, 0x3C, 0x01, 0x30, 0x88, 0xC4, 0x4B, 0x40, 0x00,
24930x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x0D, 0x00, 0x3F, 0x80, 0xFC, 0x00,
24940xF0, 0x82, 0xC0, 0x0F, 0x00, 0x2E, 0x08, 0xD4, 0x00, 0x71, 0x03, 0xC0, 0x07,
24950x02, 0x17, 0x08, 0xFC, 0x00, 0xF0, 0x01, 0xC0, 0x0D, 0x00, 0x1D, 0x80, 0x64,
24960x00, 0xF0, 0x11, 0xC0, 0x20, 0x02, 0xD8, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0,
24970x7F, 0x08, 0xFF, 0x01, 0xDC, 0x03, 0xF0, 0x8B, 0xC0, 0x0B, 0x60, 0x06, 0x00,
24980x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0,
24990x0D, 0xC0, 0x35, 0x10, 0xCE, 0x01, 0x6C, 0x03, 0xD0, 0x0C, 0xC0, 0x34, 0x20,
25000xDF, 0x00, 0x7C, 0x03, 0x30, 0x0D, 0xC0, 0x73, 0x00, 0xD7, 0x00, 0x7C, 0x03,
25010xF0, 0x0D, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x01, 0x70, 0x8D, 0xC0, 0x37,
25020x02, 0xDF, 0x00, 0x7C, 0x07, 0x30, 0x1D, 0xC0, 0x54, 0x00, 0x0E, 0x00, 0x00,
25030x00, 0x00, 0x00, 0x12, 0x88, 0x09, 0x00, 0x2D, 0x00, 0xB4, 0x00, 0xC0, 0x02,
25040x40, 0x0B, 0x00, 0x2D, 0x00, 0x84, 0x00, 0xD0, 0x02, 0x40, 0x09, 0x00, 0x2D,
25050x00, 0xB4, 0x00, 0x50, 0x02, 0x40, 0x0B, 0x00, 0x21, 0x00, 0xA4, 0x00, 0xD0,
25060x02, 0x40, 0x3B, 0x00, 0xED, 0x02, 0x9C, 0x1B, 0xF0, 0x4E, 0x48, 0x3B, 0x01,
25070xE9, 0x02, 0xB4, 0x03, 0x10, 0x0A, 0xC0, 0x4B, 0x20, 0x06, 0x00, 0x00, 0x00,
25080x00, 0x00, 0x03, 0x02, 0x79, 0x08, 0xED, 0x01, 0xB4, 0x07, 0xC0, 0x1E, 0x40,
25090x7B, 0x00, 0xFD, 0x01, 0x84, 0x07, 0xD0, 0x1F, 0x40, 0x78, 0x10, 0xE4, 0x01,
25100xB4, 0x07, 0x10, 0x1E, 0x08, 0x7F, 0x00, 0xE5, 0x01, 0xB4, 0x07, 0x40, 0x1E,
25110x60, 0x6B, 0x04, 0xE5, 0x05, 0x94, 0x17, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED,
25120x05, 0xB4, 0x07, 0x10, 0x1E, 0x44, 0x0E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
25130x00, 0x12, 0x28, 0x03, 0x80, 0x0D, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x44, 0x03,
25140x00, 0x0D, 0x00, 0x04, 0x00, 0xD8, 0x01, 0x42, 0x05, 0x00, 0x08, 0x00, 0x34,
25150x80, 0x52, 0x00, 0x40, 0x03, 0x00, 0x01, 0x00, 0x34, 0x00, 0x90, 0x00, 0x40,
25160xE3, 0x00, 0xCD, 0x00, 0x04, 0x06, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xC9, 0x00,
25170x34, 0x0E, 0x1C, 0x08, 0x40, 0x4B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
25180x17, 0xA8, 0x15, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00,
25190x5F, 0x00, 0x45, 0x01, 0xF0, 0x05, 0xC0, 0x14, 0x00, 0x57, 0x00, 0x7C, 0x01,
25200x30, 0x05, 0xC0, 0x17, 0x00, 0x57, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x1F,
25210x00, 0x4F, 0x00, 0xDC, 0x81, 0x78, 0x05, 0xC4, 0x17, 0x00, 0x5F, 0x80, 0xFC,
25220x25, 0x30, 0x47, 0x40, 0x5E, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
25230x00, 0x8F, 0x20, 0x3F, 0x00, 0xFC, 0x00, 0xF2, 0x03, 0xC0, 0x0F, 0x08, 0x3F,
25240x00, 0xDC, 0x00, 0xF1, 0x03, 0xC0, 0x0F, 0x20, 0x3D, 0x00, 0xFC, 0x00, 0xF0,
25250x03, 0xC8, 0x0F, 0x00, 0x3F, 0x00, 0xEC, 0x00, 0xF0, 0x03, 0x40, 0x87, 0x01,
25260x1F, 0x00, 0x5C, 0x20, 0x70, 0x00, 0xC0, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x20,
25270xF0, 0x01, 0xE0, 0x49, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08,
25280x67, 0x00, 0x9F, 0x08, 0x7C, 0x02, 0xF8, 0x29, 0xC0, 0x27, 0x00, 0x93, 0x04,
25290x7C, 0x02, 0xF0, 0x19, 0xC0, 0x24, 0x20, 0x97, 0x09, 0x4C, 0x02, 0xB0, 0x09,
25300xC0, 0x27, 0x01, 0x9F, 0x00, 0x7C, 0x22, 0xF0, 0x59, 0xC0, 0x24, 0x01, 0x9F,
25310x00, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x7C, 0x16, 0xF0,
25320x09, 0xC8, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xA6,
25330x06, 0x9D, 0x20, 0x74, 0x06, 0xD8, 0x39, 0x44, 0x23, 0x20, 0x91, 0x01, 0x74,
25340x06, 0xD0, 0x09, 0x40, 0x24, 0x08, 0x83, 0x01, 0x04, 0x02, 0x10, 0x09, 0x44,
25350x27, 0x00, 0x9D, 0x10, 0x74, 0x06, 0xD0, 0x18, 0x50, 0xE4, 0x00, 0xBD, 0x00,
25360xC4, 0x02, 0xD0, 0x0B, 0x40, 0x2C, 0x01, 0xBD, 0x40, 0x74, 0x0E, 0xD2, 0x09,
25370x42, 0x07, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x08,
25380xBD, 0x00, 0xF4, 0x06, 0xD2, 0x0B, 0x40, 0x2F, 0x00, 0xB1, 0x40, 0xF4, 0x12,
25390x50, 0x8B, 0x40, 0x2C, 0x20, 0xBD, 0x00, 0xE4, 0x02, 0x90, 0x0B, 0x60, 0x2E,
25400x00, 0xB5, 0x01, 0xF4, 0x0A, 0xD0, 0x0B, 0x40, 0x25, 0x00, 0x9D, 0x00, 0x64,
25410x13, 0xD2, 0x09, 0x40, 0x24, 0x80, 0x9D, 0x00, 0x74, 0x43, 0xD0, 0x09, 0x60,
25420x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22, 0x28, 0x00, 0xAD,
25430x02, 0xB4, 0x0A, 0xD0, 0x0E, 0x40, 0x2F, 0x00, 0xA1, 0x00, 0xB6, 0x0A, 0xD0,
25440x2A, 0x50, 0x28, 0x02, 0xBD, 0x00, 0xE5, 0x0A, 0x10, 0x0A, 0x60, 0xAB, 0x00,
25450xAD, 0x00, 0xB6, 0x02, 0xD0, 0x2B, 0x62, 0xA1, 0x00, 0x8D, 0x20, 0x04, 0x8A,
25460xD2, 0x28, 0x40, 0x20, 0x88, 0x8D, 0x80, 0x34, 0x22, 0xD0, 0x28, 0x40, 0x43,
25470x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x00,
25480x7C, 0x00, 0xD0, 0x01, 0xC0, 0x87, 0x42, 0x13, 0x00, 0x7E, 0x00, 0x70, 0x01,
25490xC0, 0x84, 0x00, 0x57, 0x00, 0x2C, 0x00, 0xB0, 0x01, 0xC0, 0x06, 0x00, 0x1F,
25500x00, 0x7C, 0x00, 0xF0, 0x03, 0xC2, 0x15, 0x00, 0x1F, 0x01, 0x4D, 0x04, 0xE0,
25510x11, 0xD0, 0x44, 0x00, 0x1D, 0x01, 0x3C, 0x08, 0xF0, 0x00, 0xE2, 0x77, 0xC0,
25520x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x27, 0x0D, 0x9F, 0x01, 0x7C,
25530x86, 0xF2, 0x09, 0xC0, 0x27, 0x10, 0x9D, 0x00, 0x7C, 0x06, 0xF0, 0x19, 0x44,
25540x27, 0x01, 0x93, 0x00, 0x5C, 0x06, 0xE0, 0x09, 0x40, 0x67, 0x00, 0x9F, 0x00,
25550x7C, 0x02, 0xF0, 0x19, 0xC8, 0x6E, 0x00, 0xBF, 0x02, 0xF4, 0x0E, 0xF0, 0x39,
25560xC0, 0xA7, 0x08, 0x9F, 0x02, 0xFC, 0x12, 0xF0, 0x1F, 0xC0, 0x67, 0x60, 0x0E,
25570x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F, 0x00, 0xB3, 0x02, 0xFC, 0x02,
25580xD1, 0x0A, 0xC0, 0x27, 0x10, 0xBE, 0x00, 0xD8, 0x02, 0xF0, 0x0B, 0xC0, 0x27,
25590x02, 0xBF, 0x00, 0x74, 0x02, 0xF0, 0x0B, 0xC0, 0xAF, 0x00, 0xB7, 0x00, 0xDC,
25600x02, 0xC0, 0x2B, 0xC0, 0x2F, 0x00, 0xB3, 0x01, 0xBC, 0x46, 0x30, 0xD9, 0xC0,
25610x6C, 0x01, 0xB3, 0x11, 0xC8, 0x02, 0xF0, 0x09, 0xC0, 0x67, 0x00, 0x0E, 0x00,
25620x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x05, 0x1B, 0x05, 0x74, 0x14, 0xD0,
25630x01, 0x40, 0x07, 0x04, 0x1D, 0x00, 0x74, 0x54, 0xD0, 0x11, 0x40, 0x07, 0x01,
25640x1D, 0x00, 0x74, 0x54, 0xD0, 0x01, 0xC0, 0x44, 0x00, 0x11, 0x00, 0x44, 0x00,
25650x90, 0x51, 0x40, 0x47, 0x05, 0x11, 0x20, 0x74, 0x14, 0x50, 0x31, 0x40, 0x85,
25660x00, 0x11, 0x02, 0x54, 0x00, 0xD0, 0x50, 0x41, 0x73, 0x20, 0x0C, 0x00, 0x00,
25670x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x01, 0x81, 0x00, 0x34, 0x42, 0xD0, 0x08,
25680x40, 0x23, 0x00, 0xCD, 0x00, 0x14, 0x02, 0xD0, 0x48, 0x41, 0x23, 0x21, 0x8C,
25690x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x27, 0x20, 0x94, 0x00, 0x14, 0x02, 0x90,
25700x08, 0x40, 0x27, 0x00, 0x81, 0x02, 0x34, 0x52, 0x50, 0xC8, 0x40, 0x20, 0x02,
25710x85, 0x00, 0x04, 0x02, 0xD0, 0x08, 0x40, 0x43, 0x80, 0x0E, 0x00, 0x00, 0x00,
25720x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x99, 0x20, 0x74, 0x02, 0xD0, 0x09, 0x40,
25730x27, 0x10, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x80,
25740x74, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x00, 0x91, 0x00, 0x44, 0x02, 0x90, 0x09,
25750x00, 0xA7, 0x01, 0x91, 0x00, 0x70, 0x42, 0x50, 0x08, 0x40, 0x37, 0x00, 0x95,
25760x00, 0x56, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x28, 0x06, 0x00, 0x00, 0x00, 0x00,
25770x00, 0x05, 0x08, 0x25, 0x00, 0xB3, 0x00, 0xFC, 0x02, 0xF0, 0x09, 0xC0, 0x27,
25780x00, 0x9F, 0x00, 0xDC, 0x02, 0xF0, 0x0B, 0xC0, 0x27, 0x00, 0x9D, 0x00, 0xFC,
25790x02, 0xF0, 0x09, 0xC0, 0x2B, 0x00, 0x97, 0x00, 0x5C, 0x02, 0x90, 0x0B, 0xC0,
25800x2F, 0xC0, 0x93, 0x01, 0xFC, 0x2A, 0x71, 0x0B, 0xC8, 0x20, 0x40, 0x97, 0x40,
25810x4C, 0x9E, 0xF0, 0x2B, 0x40, 0x17, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
25820x14, 0x00, 0x25, 0x04, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xE1, 0x27, 0x00,
25830x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC4, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02,
25840xF0, 0x09, 0xC4, 0x25, 0x00, 0x9F, 0x20, 0x7C, 0x02, 0xB0, 0x09, 0xC2, 0x67,
25850x00, 0x9F, 0x89, 0x6C, 0x02, 0xF0, 0x09, 0xC0, 0x25, 0x00, 0x9B, 0x80, 0x7C,
25860x12, 0xF0, 0x09, 0xC0, 0x53, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
25870x08, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x3A, 0x01, 0xD0, 0x06, 0x00, 0x13,
25880x00, 0x6C, 0x00, 0xF2, 0x01, 0xC0, 0x04, 0x80, 0x13, 0x28, 0x7C, 0x00, 0xB2,
25890x01, 0xD0, 0x05, 0x40, 0x13, 0x00, 0x7C, 0x40, 0xF0, 0x01, 0xC2, 0x87, 0x00,
25900x1F, 0x00, 0x0C, 0x08, 0x31, 0x01, 0xD0, 0x04, 0x00, 0x03, 0x00, 0x4D, 0x88,
25910x30, 0x21, 0xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20,
25920xDC, 0x00, 0x5D, 0x40, 0x74, 0x11, 0x15, 0x57, 0xC0, 0x14, 0x10, 0x55, 0x40,
25930x74, 0x01, 0xD0, 0x05, 0x40, 0x14, 0x00, 0x7B, 0x00, 0x74, 0x01, 0x10, 0x05,
25940x40, 0x54, 0x00, 0x6B, 0x02, 0xF4, 0x0D, 0x34, 0x05, 0x40, 0x9B, 0x00, 0x7D,
25950x02, 0x6E, 0x01, 0xB0, 0x05, 0x40, 0x9C, 0x00, 0x7B, 0x1B, 0xC4, 0x05, 0x10,
25960x05, 0xC8, 0x52, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0xF6,
25970x82, 0xCD, 0x09, 0x34, 0x03, 0x10, 0x38, 0x40, 0x30, 0x00, 0x81, 0x00, 0x34,
25980x03, 0xC0, 0x0C, 0x40, 0x30, 0x00, 0x45, 0x05, 0x34, 0x03, 0x90, 0x08, 0x40,
25990x32, 0x02, 0xC1, 0x04, 0x34, 0x01, 0x18, 0x0C, 0x40, 0xE3, 0x03, 0x8D, 0x10,
26000x24, 0x03, 0x10, 0x0C, 0x44, 0xA2, 0x01, 0x89, 0x03, 0x24, 0x1B, 0x1D, 0x0C,
26010x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x18, 0x80,
26020xAD, 0x44, 0xF4, 0x17, 0x10, 0x1A, 0x44, 0x7C, 0x00, 0xE5, 0x00, 0xB4, 0x12,
26030xD2, 0x5A, 0x40, 0x7C, 0x01, 0xE9, 0x00, 0xF6, 0x17, 0x10, 0x1A, 0x40, 0x2A,
26040x00, 0xE1, 0x00, 0xF4, 0x0F, 0x90, 0x0E, 0x40, 0x3B, 0x01, 0x8D, 0x11, 0xF4,
26050x0B, 0x90, 0x8E, 0x40, 0x28, 0x04, 0xA9, 0x20, 0xA4, 0x0F, 0x10, 0x5E, 0x40,
26060x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x78, 0x00, 0xEF,
26070x21, 0xBC, 0x1E, 0x10, 0x1E, 0xC0, 0x78, 0x02, 0xE3, 0x01, 0xBC, 0x07, 0xD2,
26080x5F, 0xC0, 0x78, 0x04, 0xE5, 0x01, 0xBC, 0x97, 0xB0, 0x1A, 0x60, 0x7E, 0x00,
26090xE1, 0x01, 0xBC, 0x07, 0x19, 0x3E, 0xC0, 0x7B, 0x11, 0xAF, 0x01, 0xA6, 0x0E,
26100x30, 0x1C, 0x88, 0x6A, 0x00, 0xAB, 0x01, 0xEC, 0x05, 0x30, 0x3E, 0xC0, 0x50,
26110x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x15, 0x08, 0x9F, 0x00,
26120x3C, 0x02, 0xF0, 0x0D, 0xC8, 0xB1, 0x01, 0xDF, 0x00, 0x7C, 0x22, 0xF0, 0x89,
26130xDA, 0x33, 0x02, 0xDC, 0x00, 0x3C, 0x23, 0xF0, 0x08, 0x80, 0x25, 0x00, 0x9F,
26140x00, 0x3C, 0x03, 0x70, 0x09, 0x80, 0x17, 0x10, 0x9D, 0x00, 0x6C, 0x02, 0xC0,
26150x0D, 0xC0, 0x21, 0x00, 0x8F, 0x00, 0x5C, 0x01, 0xF0, 0x0D, 0xC8, 0x43, 0x60,
26160x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x7B, 0x00, 0xF3, 0x11, 0xCC,
26170x07, 0xB8, 0x0B, 0xC0, 0x7F, 0x04, 0xFF, 0x01, 0xED, 0x07, 0x30, 0x1F, 0xC0,
26180x7F, 0x20, 0xEF, 0x09, 0x4C, 0x27, 0x30, 0x1B, 0xC0, 0x7D, 0x04, 0xFB, 0x01,
26190x9C, 0x07, 0xB0, 0x9E, 0xC2, 0x5D, 0x04, 0xBF, 0x01, 0xFC, 0x07, 0xF0, 0x1F,
26200xC8, 0x6C, 0x00, 0xF3, 0x01, 0xFC, 0x07, 0xF0, 0x1E, 0xC0, 0x08, 0x00, 0x0E,
26210x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x19, 0x06, 0xF1, 0x40, 0xC4, 0x13,
26220x39, 0x4A, 0x40, 0x3B, 0x01, 0xED, 0x00, 0xC4, 0x02, 0x10, 0x08, 0x48, 0x3B,
26230x01, 0xC7, 0x02, 0x84, 0x77, 0x10, 0x0A, 0x40, 0x3C, 0x00, 0x61, 0x00, 0x84,
26240x03, 0x40, 0x1E, 0x40, 0x39, 0x00, 0xAD, 0x84, 0xA4, 0x13, 0xF0, 0x0E, 0x40,
26250x28, 0x00, 0xE5, 0x08, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x54, 0x20, 0x06, 0x00,
26260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x00, 0xA1, 0x08, 0x84, 0x02, 0x01,
26270x8A, 0x41, 0x3B, 0x10, 0xFD, 0x00, 0x84, 0x43, 0x10, 0x0E, 0x40, 0x3B, 0x20,
26280xED, 0x02, 0x80, 0x17, 0x10, 0x0B, 0x41, 0x29, 0x00, 0xF1, 0x00, 0x94, 0x03,
26290x10, 0x4F, 0x40, 0x1A, 0x00, 0xAD, 0x80, 0xB4, 0x42, 0xD0, 0x1E, 0x40, 0x20,
26300x00, 0xE5, 0x00, 0xB4, 0x01, 0xD0, 0x1F, 0x40, 0x20, 0x01, 0x04, 0x00, 0x00,
26310x00, 0x00, 0x00, 0x06, 0x28, 0x03, 0x00, 0x90, 0x02, 0x44, 0x0E, 0x10, 0x3C,
26320x40, 0xB3, 0x02, 0xCD, 0x02, 0x06, 0x0E, 0x00, 0x38, 0x40, 0xF3, 0x01, 0xC9,
26330x08, 0x04, 0x4F, 0x11, 0x68, 0x42, 0xA5, 0x02, 0x01, 0x0B, 0x04, 0x4B, 0x50,
26340x08, 0x41, 0x13, 0x22, 0x8D, 0x81, 0x66, 0x1A, 0x52, 0x0C, 0x44, 0x20, 0x00,
26350xC5, 0x80, 0x74, 0x08, 0xD0, 0x0C, 0x40, 0x18, 0x20, 0x0C, 0x00, 0x00, 0x00,
26360x00, 0x00, 0x15, 0xA8, 0x65, 0x00, 0xD2, 0x01, 0x4C, 0x4F, 0x34, 0x18, 0xC0,
26370x7F, 0x00, 0xDF, 0x03, 0x0C, 0x07, 0x30, 0x3D, 0xC1, 0xBF, 0x04, 0xCD, 0x01,
26380x4D, 0x0B, 0x36, 0x2D, 0xE4, 0xB5, 0x02, 0x93, 0x02, 0x54, 0x42, 0x10, 0x19,
26390xC0, 0x36, 0x00, 0xDD, 0x05, 0x74, 0x0F, 0xD0, 0x0D, 0xD0, 0x34, 0x00, 0x97,
26400x20, 0x7C, 0x02, 0xF2, 0xBD, 0xD5, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
26410x00, 0x01, 0x00, 0xA7, 0x20, 0x9F, 0x18, 0x7C, 0x03, 0x70, 0x29, 0xC0, 0x37,
26420x01, 0xDE, 0x08, 0x7C, 0x03, 0xF4, 0x4D, 0xC0, 0x37, 0x00, 0xD7, 0x02, 0x7C,
26430x03, 0xF0, 0x09, 0xC0, 0x26, 0x00, 0x97, 0x82, 0x7C, 0x0B, 0x70, 0x8D, 0xE0,
26440x35, 0x00, 0xDF, 0x02, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0x9D, 0x02,
26450x7C, 0x2A, 0xF0, 0x0D, 0xC0, 0xA7, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
26460x80, 0x0A, 0x2F, 0x00, 0xFF, 0x00, 0xCC, 0x43, 0x70, 0x0F, 0xC1, 0x3C, 0x00,
26470xFF, 0x15, 0xDC, 0x66, 0x30, 0x1B, 0xC0, 0x3F, 0x20, 0xFF, 0x00, 0xCC, 0x03,
26480xF0, 0x9F, 0xC0, 0x3F, 0x00, 0x33, 0x10, 0xFC, 0x03, 0xE0, 0x0B, 0xC0, 0x7F,
26490x10, 0xE3, 0x49, 0xCC, 0x03, 0x30, 0x0F, 0xC0, 0xBF, 0x00, 0xBF, 0x22, 0xFC,
26500x40, 0x30, 0x0F, 0xC0, 0x07, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
26510x20, 0x66, 0x00, 0x9D, 0x00, 0x44, 0x83, 0x10, 0x2D, 0x40, 0x34, 0x08, 0xDD,
26520x40, 0x74, 0x02, 0x50, 0x09, 0x44, 0x37, 0x08, 0xDD, 0x03, 0x44, 0x03, 0xD0,
26530x19, 0x68, 0x27, 0x80, 0x15, 0x13, 0x74, 0x47, 0xD2, 0x99, 0xC4, 0x51, 0x28,
26540xD1, 0x03, 0x6C, 0x27, 0xF0, 0x0D, 0x40, 0x27, 0x00, 0x9D, 0x04, 0x7C, 0x2F,
26550x11, 0x0D, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0,
26560x46, 0x04, 0xDD, 0x00, 0x44, 0x12, 0x12, 0x09, 0x41, 0x36, 0x00, 0xDD, 0x00,
26570x74, 0x03, 0x12, 0x8D, 0x42, 0x37, 0x00, 0xDD, 0x01, 0x44, 0x03, 0xD0, 0x0D,
26580x42, 0x37, 0x20, 0x91, 0x01, 0x74, 0x07, 0xD0, 0x09, 0x44, 0x17, 0x02, 0x95,
26590x50, 0x44, 0x02, 0x10, 0x0D, 0x48, 0x36, 0x00, 0x9D, 0x00, 0x74, 0x0A, 0x10,
26600x0D, 0x40, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
26610x00, 0xCD, 0x00, 0x05, 0x02, 0x10, 0x08, 0x50, 0x32, 0x08, 0xCD, 0x00, 0x74,
26620x03, 0x50, 0x8C, 0x40, 0x33, 0x00, 0xDD, 0x02, 0x04, 0x13, 0xD0, 0x08, 0x40,
26630x36, 0x00, 0x05, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x61, 0x35, 0x40, 0x45, 0x80,
26640x24, 0x02, 0x98, 0x0C, 0x40, 0x33, 0x00, 0x4D, 0x20, 0x34, 0x00, 0x10, 0x0C,
26650x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, 0x00,
26660x9F, 0x20, 0x4C, 0x02, 0x34, 0x01, 0xC0, 0x3E, 0x00, 0xDF, 0x00, 0x58, 0x82,
26670x30, 0x09, 0xC0, 0x3F, 0x08, 0xDF, 0x02, 0x84, 0x43, 0xF0, 0x0D, 0x40, 0x27,
26680x00, 0x11, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0x40, 0x17, 0x80, 0x97, 0x80, 0x4C,
26690x02, 0x30, 0x0E, 0x80, 0x17, 0x00, 0x9F, 0x00, 0x7C, 0x00, 0x34, 0x0F, 0xC8,
26700x07, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x2F, 0x00, 0xBF,
26710x40, 0xFC, 0x02, 0xB0, 0x07, 0xC0, 0x3D, 0x08, 0xEF, 0x00, 0xFC, 0x02, 0xF0,
26720x4B, 0xC8, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0A, 0xC0, 0x2F, 0x00,
26730x2F, 0x00, 0xFC, 0x03, 0xD0, 0x09, 0xC0, 0x1F, 0x00, 0x7B, 0x00, 0xF8, 0x02,
26740xF0, 0x0F, 0xC2, 0x1F, 0x20, 0x7F, 0x00, 0xDC, 0x00, 0xF0, 0x0F, 0xC0, 0x17,
26750x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x6F, 0x00, 0x2F, 0x04,
26760xCC, 0x06, 0x70, 0x43, 0xC1, 0x0F, 0x01, 0xE3, 0x01, 0xCC, 0x10, 0x74, 0x03,
26770xC0, 0x0F, 0x00, 0x33, 0x10, 0xCC, 0x80, 0x30, 0x03, 0xD0, 0x0C, 0x00, 0x33,
26780x04, 0xCC, 0x00, 0x34, 0x43, 0xC8, 0x7E, 0x02, 0xB3, 0x00, 0xFC, 0x53, 0xF0,
26790x12, 0xC0, 0x6D, 0x02, 0xAF, 0x01, 0xFC, 0x06, 0xF0, 0x4B, 0xC0, 0x0F, 0x00,
26800x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x67, 0x00, 0x1D, 0xAB, 0x44,
26810x07, 0x10, 0x35, 0x48, 0xD7, 0x02, 0xD1, 0xA1, 0x44, 0x0D, 0x10, 0x35, 0x40,
26820x57, 0x02, 0x51, 0x43, 0x4C, 0x0D, 0x10, 0xB5, 0x40, 0xD4, 0x02, 0x51, 0x03,
26830x44, 0x0D, 0x10, 0x95, 0x40, 0x33, 0x11, 0xD1, 0x03, 0x74, 0x8F, 0xD0, 0x19,
26840x40, 0x27, 0x01, 0x9D, 0x01, 0x74, 0x04, 0xD2, 0x11, 0x40, 0x07, 0x60, 0x0C,
26850x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA8, 0x23, 0x00, 0x0D, 0x00, 0x44, 0x03,
26860x50, 0x08, 0x40, 0x21, 0x40, 0xC1, 0x00, 0x14, 0x0A, 0x18, 0x88, 0x40, 0x23,
26870x00, 0x81, 0x00, 0x04, 0x0A, 0x50, 0x08, 0x48, 0x20, 0x00, 0x89, 0x08, 0x06,
26880x0A, 0x10, 0x08, 0x40, 0x33, 0x01, 0x81, 0x02, 0x34, 0x03, 0xD0, 0x08, 0x40,
26890x01, 0x10, 0x85, 0x00, 0x34, 0x02, 0xD0, 0x88, 0x40, 0x47, 0x80, 0x0E, 0x00,
26900x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x25, 0x02, 0x1D, 0xC0, 0x64, 0xC7, 0x10,
26910x05, 0x44, 0x37, 0x02, 0xD1, 0x00, 0x56, 0x08, 0x10, 0x05, 0x40, 0xB7, 0x09,
26920x91, 0x03, 0x64, 0x03, 0x50, 0x09, 0x40, 0x34, 0x00, 0x91, 0x00, 0x44, 0x0E,
26930x10, 0x09, 0x42, 0x37, 0x01, 0x91, 0x00, 0x74, 0x03, 0xD0, 0x19, 0x40, 0x57,
26940x00, 0xDD, 0x01, 0x74, 0x05, 0xD0, 0x19, 0x41, 0x0F, 0x00, 0x06, 0x00, 0x00,
26950x00, 0x00, 0x00, 0x02, 0xA8, 0x27, 0x00, 0xDF, 0x5A, 0x0C, 0x0F, 0x70, 0x91,
26960xC0, 0xC7, 0x04, 0xD3, 0x01, 0x5C, 0x24, 0x30, 0x11, 0xC2, 0xC7, 0x00, 0x13,
26970x02, 0x4C, 0x00, 0x70, 0x21, 0xC1, 0xC4, 0x86, 0x13, 0x1B, 0x4C, 0x08, 0x30,
26980x01, 0xC0, 0x36, 0x00, 0x93, 0x00, 0x7C, 0x03, 0xF0, 0x59, 0xC0, 0xE5, 0x00,
26990x9F, 0x07, 0x7C, 0x16, 0xF0, 0x39, 0xC0, 0x0B, 0x20, 0x0E, 0x00, 0x00, 0x00,
27000x00, 0x00, 0x07, 0x80, 0x2D, 0x20, 0xBF, 0x00, 0xDC, 0x03, 0xF0, 0x17, 0xC0,
27010x4F, 0x00, 0xFD, 0x02, 0xEC, 0x01, 0xB0, 0x3F, 0xC0, 0x1A, 0x40, 0x6F, 0x00,
27020x9C, 0x0D, 0xB0, 0x07, 0xC0, 0x5B, 0x20, 0x7F, 0x00, 0xFD, 0x01, 0xF0, 0x07,
27030xC2, 0x7F, 0x40, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0x7F,
27040x00, 0xFC, 0x01, 0xF2, 0x03, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
27050x00, 0x02, 0x08, 0x25, 0x00, 0xD3, 0x13, 0x4C, 0x23, 0xF0, 0x09, 0xD0, 0xA0,
27060x00, 0xDF, 0x11, 0x1C, 0x0A, 0x70, 0x09, 0xE0, 0x27, 0x00, 0x1F, 0x02, 0x4C,
27070x2A, 0x30, 0x2C, 0xC0, 0xA7, 0x02, 0x83, 0x02, 0x0D, 0x02, 0xF0, 0x2D, 0x41,
27080x74, 0x01, 0xD3, 0x00, 0x4C, 0x03, 0xF0, 0x29, 0xC0, 0x94, 0x00, 0x9F, 0x0E,
27090x4C, 0x0A, 0xF0, 0x29, 0xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
27100x13, 0xA0, 0x64, 0x01, 0x81, 0x22, 0x44, 0x03, 0xD0, 0xB5, 0x40, 0xE4, 0x02,
27110xCD, 0x02, 0x44, 0x28, 0xD0, 0xAD, 0x41, 0xB7, 0x06, 0x1D, 0x1A, 0x44, 0x07,
27120x12, 0xAD, 0x42, 0xB7, 0x00, 0x91, 0x0B, 0x6C, 0x2A, 0xD0, 0x0D, 0x41, 0xB5,
27130x08, 0xD1, 0x01, 0xC4, 0x83, 0xD0, 0x0D, 0xC0, 0x14, 0x00, 0xD1, 0x01, 0x44,
27140x99, 0xD0, 0x19, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
27150x20, 0xE2, 0x01, 0x01, 0x00, 0x14, 0x13, 0xD0, 0x00, 0x40, 0x00, 0x28, 0xCD,
27160x00, 0x20, 0x24, 0x80, 0x10, 0x40, 0x43, 0x00, 0x0D, 0x01, 0x06, 0x90, 0x10,
27170x90, 0x40, 0x43, 0x04, 0x01, 0x00, 0x24, 0x24, 0xD0, 0x10, 0x40, 0x34, 0x00,
27180x81, 0x80, 0x24, 0x83, 0x90, 0x08, 0x40, 0x20, 0x00, 0x01, 0x02, 0x04, 0x42,
27190xD1, 0x00, 0x43, 0x0F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
27200x6A, 0x00, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x98, 0x43, 0x58, 0x00, 0xED, 0x01,
27210xB4, 0x07, 0xD0, 0x12, 0x40, 0x6B, 0x00, 0x4C, 0x01, 0x04, 0x04, 0x10, 0x1E,
27220x40, 0x63, 0x00, 0xC1, 0x11, 0x84, 0x05, 0xD0, 0x14, 0x50, 0x78, 0x00, 0xE1,
27230x01, 0xA4, 0x07, 0xD0, 0x0B, 0x40, 0x7A, 0x12, 0xB1, 0x01, 0x85, 0x06, 0xD0,
27240x12, 0x48, 0x13, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x22,
27250x00, 0x03, 0x08, 0x1C, 0x03, 0xF0, 0xA8, 0xC8, 0x00, 0x84, 0xCF, 0x00, 0x3C,
27260x83, 0x70, 0x0C, 0x40, 0x13, 0x00, 0xCE, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xCA,
27270x13, 0x10, 0x43, 0x00, 0x24, 0x01, 0xF0, 0xE0, 0xC0, 0x30, 0x40, 0x83, 0x18,
27280x2C, 0x03, 0xF0, 0x88, 0xC0, 0x24, 0x40, 0x47, 0x08, 0x0C, 0x03, 0xF0, 0x00,
27290xC1, 0x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x39, 0x40,
27300xFF, 0x00, 0xFC, 0x03, 0xF1, 0x8B, 0xC0, 0x1F, 0x20, 0xFF, 0x00, 0xCC, 0x03,
27310xF8, 0x07, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x8B, 0xC0, 0x3F,
27320x00, 0xFF, 0x08, 0xFC, 0x01, 0xF0, 0x83, 0xE0, 0x3F, 0x00, 0xAF, 0x00, 0xDD,
27330x43, 0xF0, 0x4F, 0xC0, 0x1D, 0x00, 0x7F, 0x00, 0xFC, 0x01, 0xF0, 0x83, 0xC0,
27340x0B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x67, 0x00, 0x53,
27350x00, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0x36, 0x00, 0xD7, 0x00, 0x7C, 0x00, 0xF0,
27360x01, 0xC0, 0x07, 0x00, 0x93, 0x80, 0x7C, 0x07, 0x32, 0x01, 0xC2, 0x44, 0x00,
27370x13, 0x00, 0x4C, 0x02, 0x30, 0x09, 0xC0, 0x37, 0x00, 0x93, 0x00, 0x5C, 0x03,
27380xF0, 0x09, 0xC0, 0x57, 0x00, 0x53, 0x80, 0x7C, 0x01, 0x30, 0x19, 0xC0, 0x40,
27390x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x98, 0x39, 0x00, 0xE1, 0x00,
27400xB4, 0x03, 0xD0, 0x0E, 0x40, 0x38, 0x08, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0A,
27410x40, 0x23, 0x40, 0xE1, 0x00, 0x36, 0x03, 0x04, 0x0C, 0x40, 0x28, 0x40, 0xE1,
27420x20, 0x04, 0x03, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xE5, 0x00, 0xB4, 0x13, 0xD0,
27430x0A, 0x40, 0x3B, 0x00, 0x61, 0x00, 0xF4, 0x01, 0xB1, 0x02, 0x40, 0x48, 0x60,
27440x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x69, 0x00, 0x61, 0x01, 0xB4,
27450x07, 0xD0, 0x1C, 0x44, 0x78, 0x00, 0xE5, 0x11, 0xB6, 0x07, 0x50, 0x1E, 0x40,
27460x5B, 0x00, 0xE1, 0x01, 0xB4, 0x07, 0x10, 0x16, 0x40, 0x50, 0x00, 0x41, 0x01,
27470x84, 0x07, 0x14, 0x3E, 0x40, 0x7F, 0x00, 0xE1, 0x01, 0x94, 0x07, 0xD0, 0x1A,
27480x40, 0xDF, 0x00, 0x61, 0x01, 0xF4, 0x07, 0x10, 0x18, 0x50, 0x10, 0x00, 0x04,
27490x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x20, 0x33, 0x00, 0xC1, 0x13, 0x34, 0x01,
27500xD0, 0x9C, 0x40, 0xB0, 0x04, 0x8D, 0x01, 0x36, 0x03, 0xD0, 0x0C, 0x40, 0x33,
27510x00, 0xC1, 0x02, 0x34, 0x07, 0x10, 0x0C, 0x40, 0x30, 0x00, 0xC1, 0x00, 0x04,
27520x03, 0x10, 0x2C, 0x40, 0x63, 0x02, 0xC5, 0x08, 0x34, 0x03, 0xD0, 0xAC, 0x41,
27530xD3, 0x00, 0x41, 0x62, 0x34, 0x85, 0x90, 0x1C, 0x40, 0x58, 0x00, 0x0C, 0x00,
27540x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x57, 0x04, 0x73, 0x07, 0xBC, 0x09, 0xF0,
27550x07, 0xD0, 0x9E, 0x04, 0x57, 0x00, 0xFC, 0x01, 0xF0, 0x87, 0xE0, 0x1F, 0x00,
27560x73, 0x02, 0xFC, 0x1D, 0x30, 0x17, 0xD1, 0x1C, 0x00, 0x73, 0x00, 0xCD, 0x01,
27570x30, 0x27, 0xC0, 0x17, 0x00, 0x53, 0x01, 0x5C, 0x01, 0xF0, 0x17, 0xC0, 0x1F,
27580x00, 0x63, 0x07, 0xBC, 0x05, 0x30, 0x77, 0xC0, 0x5C, 0x20, 0x0E, 0x00, 0x00,
27590x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x40, 0x0F, 0x00, 0x7C, 0x40, 0xF0, 0x01,
27600xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F,
27610x00, 0x7C, 0x40, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x04, 0xF0,
27620x01, 0xC1, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x44,
27630x1F, 0x06, 0x7C, 0x24, 0xF0, 0x41, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00,
27640x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x30, 0x08, 0xE0,
27650x20, 0x00, 0x93, 0x00, 0x3C, 0x02, 0x30, 0x08, 0xC0, 0x20, 0x00, 0x83, 0x10,
27660x4C, 0x02, 0xF0, 0x08, 0xC0, 0x24, 0x00, 0x8F, 0x00, 0x0C, 0x02, 0x70, 0x08,
27670xC0, 0x64, 0x00, 0x93, 0x00, 0x3C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x9F,
27680x08, 0x4C, 0x22, 0x30, 0x59, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
27690x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x80, 0x44, 0x02, 0x10, 0x09, 0x10, 0x24,
27700x40, 0x91, 0x00, 0x74, 0x02, 0x14, 0x09, 0xD0, 0x24, 0x50, 0x91, 0x40, 0x4D,
27710x02, 0xD0, 0x09, 0x50, 0x24, 0x00, 0x9D, 0x00, 0x45, 0x02, 0x14, 0x09, 0x50,
27720x64, 0x42, 0x91, 0x00, 0x74, 0x06, 0x50, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x01,
27730x54, 0x06, 0x54, 0x29, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
27740x1C, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00,
27750x91, 0x00, 0x74, 0x02, 0x10, 0x09, 0x00, 0x26, 0x00, 0x99, 0x00, 0x44, 0x03,
27760xD0, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x44, 0x02, 0x90, 0x09, 0x40, 0x20,
27770x00, 0x91, 0x00, 0x74, 0x12, 0x10, 0x09, 0x40, 0x37, 0x00, 0x9D, 0x00, 0x44,
27780x42, 0x11, 0x29, 0x40, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
27790x28, 0x20, 0x00, 0x8D, 0x04, 0x05, 0x02, 0x10, 0x48, 0x40, 0x20, 0x01, 0x81,
27800x00, 0x34, 0x12, 0x10, 0x48, 0x44, 0x20, 0x01, 0x89, 0x04, 0x04, 0x12, 0xD0,
27810x48, 0x40, 0x20, 0x01, 0x8D, 0x04, 0x04, 0x12, 0x10, 0x48, 0x40, 0x60, 0x00,
27820x81, 0x04, 0x34, 0x12, 0x50, 0x08, 0x40, 0x23, 0x00, 0x8D, 0x00, 0x54, 0x02,
27830x50, 0x48, 0x40, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0,
27840x06, 0x00, 0x1F, 0x00, 0x44, 0x00, 0x34, 0x01, 0x40, 0x04, 0x00, 0x13, 0x00,
27850x7C, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x00, 0x1B, 0x20, 0x4C, 0x00, 0xF0, 0x01,
27860xC0, 0x04, 0x00, 0x1F, 0x00, 0x4C, 0x00, 0x70, 0x01, 0xC0, 0x84, 0x02, 0x13,
27870x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x87, 0x02, 0x5F, 0x80, 0x4C, 0x00, 0x32,
27880x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA8, 0x2B,
27890x00, 0xBF, 0x28, 0xFD, 0x02, 0xF1, 0x8B, 0xC0, 0x2F, 0x0A, 0xBF, 0x20, 0xFC,
27900x22, 0xF0, 0x8B, 0xC0, 0x2F, 0x02, 0xB7, 0x08, 0xDC, 0x22, 0xF2, 0x8B, 0xC0,
27910x2F, 0x22, 0xBF, 0x08, 0xFC, 0x22, 0xF2, 0x8B, 0xC0, 0x2B, 0x00, 0xBF, 0x08,
27920x7C, 0x22, 0xF0, 0x0B, 0xC0, 0x2B, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0xF1, 0x8B,
27930xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x27, 0x00,
27940x9F, 0x84, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x7C, 0x52,
27950x30, 0x49, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x49, 0xC0, 0x24,
27960x05, 0x9F, 0x04, 0x7C, 0x02, 0xF0, 0x08, 0xC0, 0x2C, 0x02, 0xB3, 0x04, 0xCC,
27970x16, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0xBF, 0x00, 0xBC, 0x02, 0xF2, 0x0B, 0xC0,
27980x63, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x07, 0x00, 0x1D,
27990x28, 0x74, 0x80, 0xD0, 0x01, 0x40, 0x07, 0x02, 0x11, 0x00, 0x74, 0x00, 0x10,
28000x81, 0x40, 0x87, 0x00, 0x1D, 0x00, 0x74, 0xA0, 0x12, 0x01, 0x40, 0x04, 0x00,
28010x1D, 0x88, 0x74, 0x08, 0xD0, 0x03, 0x40, 0x04, 0x40, 0x11, 0x20, 0x45, 0x00,
28020xD0, 0x01, 0x40, 0x16, 0x14, 0x1D, 0x00, 0x74, 0x00, 0xD0, 0x01, 0x40, 0x73,
28030x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x29, 0x00, 0xAD, 0x00,
28040xB4, 0x02, 0xD0, 0x9A, 0x40, 0x6B, 0x00, 0xA1, 0x00, 0xB4, 0x06, 0x10, 0x1A,
28050x40, 0x6B, 0x02, 0xAD, 0x09, 0xB4, 0x06, 0x10, 0x9A, 0x48, 0x68, 0x20, 0xAD,
28060x01, 0xB0, 0x26, 0xD0, 0x9A, 0x40, 0x20, 0x00, 0x81, 0x08, 0x04, 0x0A, 0xD0,
28070x08, 0x40, 0x23, 0x01, 0x8D, 0x80, 0x34, 0x02, 0xD0, 0x18, 0x40, 0x4B, 0x00,
28080x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x65, 0x00, 0xBD, 0x00, 0xF4,
28090x8A, 0xD0, 0x0B, 0x40, 0x2F, 0x00, 0xB1, 0x00, 0xF4, 0x02, 0x10, 0x0B, 0x40,
28100x6F, 0x00, 0xBD, 0x00, 0xF4, 0x02, 0x10, 0x0B, 0x40, 0x6C, 0x00, 0xBD, 0x00,
28110xF4, 0x12, 0xD0, 0x0B, 0x50, 0x24, 0x00, 0x91, 0x04, 0x44, 0x02, 0xD0, 0x09,
28120x40, 0x26, 0x02, 0x9D, 0x02, 0x74, 0x0A, 0xD0, 0x19, 0x40, 0x63, 0x00, 0x06,
28130x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x26,
28140xF0, 0x29, 0xC8, 0xA7, 0x40, 0x91, 0x00, 0x7C, 0x2A, 0x34, 0x39, 0xC0, 0xA7,
28150x00, 0x9F, 0x0B, 0x7C, 0x0A, 0x34, 0xA9, 0xD0, 0xA4, 0x00, 0x9F, 0x03, 0x7C,
28160x0A, 0xF0, 0x09, 0xC0, 0x64, 0x00, 0x93, 0x00, 0x4C, 0x02, 0xF0, 0x39, 0xC1,
28170xA7, 0x00, 0x9F, 0x82, 0x7C, 0x0E, 0xF0, 0x29, 0xC0, 0x17, 0x20, 0x0E, 0x00,
28180x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x25, 0x08, 0x9F, 0x00, 0x78, 0x06, 0xF0,
28190x09, 0x80, 0x27, 0x00, 0x9F, 0x09, 0x7C, 0x02, 0xF0, 0x49, 0xC0, 0x27, 0x00,
28200x9F, 0x01, 0x3C, 0x02, 0xF0, 0x08, 0xC0, 0x27, 0x00, 0x9F, 0x09, 0x7C, 0x06,
28210xF0, 0x98, 0xC0, 0x27, 0x01, 0x8F, 0x01, 0x7C, 0x02, 0xF0, 0x89, 0xC0, 0x27,
28220x00, 0x9F, 0x28, 0x7C, 0x66, 0xF0, 0x09, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00,
28230x00, 0x00, 0x00, 0x10, 0x08, 0x0D, 0x00, 0x3F, 0x00, 0xCC, 0x00, 0xF0, 0x03,
28240xC0, 0x0B, 0x00, 0x3F, 0x00, 0xBC, 0x00, 0x70, 0x03, 0xC0, 0x0C, 0x00, 0x3F,
28250x00, 0xFE, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xB0,
28260x03, 0xC0, 0x44, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00,
28270x1F, 0x12, 0x7C, 0x08, 0x30, 0x01, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00,
28280x00, 0x00, 0x14, 0x80, 0x14, 0x00, 0x5D, 0x20, 0x40, 0x01, 0x70, 0x05, 0x40,
28290x17, 0x00, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x40, 0x14, 0x00, 0x5D, 0x20,
28300x74, 0x01, 0xD2, 0x05, 0x48, 0x17, 0x00, 0x5D, 0x00, 0x74, 0x01, 0x30, 0x05,
28310xC0, 0x1E, 0x00, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x40, 0x17, 0x10, 0x7D,
28320x03, 0xF4, 0x4D, 0x50, 0x17, 0x50, 0x51, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
28330x00, 0x14, 0xA0, 0x02, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x50, 0x00, 0x40, 0x03,
28340x00, 0x0D, 0x00, 0x34, 0x00, 0x50, 0x00, 0x40, 0x02, 0x00, 0x0D, 0x00, 0x36,
28350x00, 0xD0, 0x00, 0x40, 0x03, 0x00, 0x09, 0x00, 0x30, 0x00, 0x14, 0x00, 0x40,
28360x34, 0x08, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x4D, 0x00,
28370x34, 0x09, 0x10, 0x8C, 0x41, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
28380x01, 0x88, 0x38, 0x00, 0xCD, 0x01, 0x84, 0x03, 0x50, 0x0E, 0x40, 0x3B, 0x00,
28390xED, 0x00, 0xB4, 0x03, 0xD0, 0x1E, 0x40, 0x3A, 0x00, 0xED, 0x00, 0xB4, 0x03,
28400xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0x34, 0x07, 0x10, 0x0E, 0x40, 0x2A,
28410x00, 0xAD, 0x00, 0xB4, 0x42, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0x6D, 0x42, 0xB4,
28420x05, 0x50, 0x1E, 0x40, 0x05, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
28430x10, 0x48, 0x00, 0x2F, 0x01, 0x8D, 0x84, 0x70, 0x12, 0xC0, 0x4B, 0x00, 0x2F,
28440x01, 0xBC, 0x04, 0x72, 0x10, 0xD0, 0x4A, 0x08, 0x2D, 0x21, 0xB4, 0x04, 0xF0,
28450x12, 0xC0, 0x4B, 0x00, 0x2F, 0x01, 0xBC, 0x04, 0x30, 0x12, 0xC0, 0x58, 0x00,
28460xAF, 0x01, 0xBC, 0x06, 0xF0, 0x1E, 0xC0, 0x7B, 0x03, 0xEF, 0x01, 0xBC, 0x05,
28470x30, 0x1E, 0xC0, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8,
28480x35, 0x00, 0xDF, 0x00, 0x7E, 0x03, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00,
28490x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
28500xC8, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0x9F,
28510x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF0,
28520x0C, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4D,
28530x00, 0x3F, 0x01, 0xCC, 0x20, 0xF0, 0x13, 0xC0, 0x4C, 0x00, 0x3F, 0x01, 0xCC,
28540x04, 0xF0, 0x13, 0xC0, 0x4E, 0x00, 0x33, 0x01, 0xCC, 0x84, 0xF0, 0x13, 0xC2,
28550x4F, 0x02, 0x3F, 0x09, 0xFC, 0x04, 0xF0, 0x13, 0xC0, 0x7C, 0x00, 0xBF, 0x01,
28560xFC, 0x07, 0xF0, 0x1E, 0xC0, 0x7C, 0x04, 0x73, 0x01, 0x8C, 0x07, 0x30, 0x17,
28570xC0, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x39, 0x08,
28580xED, 0x00, 0x84, 0x03, 0xF0, 0x8E, 0x40, 0x38, 0x00, 0xED, 0x30, 0x94, 0x03,
28590xD0, 0x0E, 0x50, 0x38, 0x42, 0xE1, 0x08, 0x85, 0x23, 0xD0, 0x0E, 0x40, 0x3B,
28600x00, 0xED, 0x08, 0xB4, 0x03, 0xF0, 0x0E, 0x40, 0x08, 0x00, 0xAD, 0x00, 0xB4,
28610x03, 0xF0, 0x0E, 0xC0, 0x3B, 0x00, 0x21, 0x00, 0xAC, 0x12, 0xB0, 0x5E, 0x40,
28620x57, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x2D,
28630x18, 0x84, 0x20, 0xD8, 0x00, 0x40, 0x08, 0x00, 0x3D, 0x00, 0x84, 0x00, 0xD0,
28640x00, 0x40, 0x80, 0x00, 0x01, 0x00, 0x94, 0x00, 0xD0, 0x22, 0x40, 0x8B, 0x20,
28650x2D, 0x08, 0xB4, 0x00, 0xD0, 0x10, 0x40, 0x18, 0x04, 0xAD, 0x00, 0xB4, 0x02,
28660xD0, 0x0F, 0x40, 0x38, 0x00, 0x61, 0x10, 0x84, 0x43, 0x18, 0x4E, 0x40, 0x03,
28670x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x31, 0x00, 0xCD, 0x06,
28680x06, 0x0B, 0x50, 0x2C, 0x40, 0x30, 0x00, 0xCD, 0x00, 0x14, 0x0B, 0xD0, 0x0C,
28690x44, 0x30, 0x00, 0xC1, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD,
28700x02, 0x34, 0x03, 0x50, 0x0C, 0x50, 0x50, 0x00, 0x8D, 0x00, 0x34, 0x02, 0x50,
28710x7C, 0x40, 0xF3, 0x00, 0x81, 0x03, 0x24, 0x16, 0x90, 0x2D, 0x40, 0x13, 0x00,
28720x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x05, 0x00, 0x1F, 0x01, 0x4C,
28730x28, 0xD0, 0x11, 0xD0, 0x44, 0x00, 0x1F, 0x00, 0x4C, 0x04, 0xF0, 0x31, 0xC0,
28740x44, 0x00, 0x13, 0x01, 0x5C, 0x04, 0xF0, 0x11, 0xC0, 0x47, 0x00, 0x1F, 0x01,
28750x7C, 0x04, 0xD0, 0x00, 0xC0, 0x74, 0x00, 0xDF, 0x01, 0x3C, 0x02, 0xD0, 0x0D,
28760xC1, 0xB8, 0x01, 0x43, 0x03, 0x4C, 0x05, 0x30, 0xBD, 0xC0, 0x57, 0x20, 0x06,
28770x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x77, 0x00, 0xDF, 0x20, 0x7D, 0x87,
28780xF0, 0x1D, 0xC1, 0x77, 0x00, 0xDF, 0x00, 0x7C, 0x07, 0xF0, 0x1D, 0xC0, 0x77,
28790x10, 0xDF, 0x01, 0x7C, 0x07, 0xF0, 0x1D, 0xC0, 0x73, 0x00, 0xDF, 0x81, 0x7C,
28800x07, 0xF0, 0x1D, 0xC0, 0x27, 0x10, 0x9F, 0x08, 0x7C, 0x02, 0xF0, 0x0D, 0xC0,
28810x35, 0x44, 0x5F, 0x10, 0x7C, 0x0B, 0xF2, 0x3D, 0xC4, 0x07, 0x00, 0x0C, 0x00,
28820x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x0F, 0x00, 0x13, 0x00, 0xFC, 0x80, 0x30,
28830x03, 0xC0, 0x0B, 0x00, 0x33, 0x00, 0xBC, 0x40, 0x30, 0x02, 0xC1, 0x0C, 0x08,
28840x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x32, 0x10, 0xFC, 0x80,
28850xF0, 0x03, 0xC0, 0x0C, 0x00, 0xEF, 0x09, 0xCC, 0x02, 0x30, 0x0F, 0xC0, 0x3F,
28860x00, 0xB3, 0x00, 0xCC, 0x00, 0x30, 0x5F, 0xC0, 0x10, 0x22, 0x0C, 0x00, 0x00,
28870x00, 0x00, 0x00, 0x85, 0x20, 0x32, 0x00, 0xD1, 0x00, 0x34, 0x03, 0x92, 0x0D,
28880x42, 0x37, 0x00, 0xD1, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x40, 0x34, 0x00, 0xDD,
28890x00, 0x76, 0x03, 0xD0, 0x0D, 0x42, 0x37, 0x40, 0xD1, 0x00, 0x64, 0x03, 0xD2,
28900x0D, 0xC0, 0x24, 0x08, 0x9D, 0x01, 0x44, 0x02, 0x14, 0x0D, 0x40, 0x37, 0x00,
28910x95, 0x93, 0x14, 0x0C, 0x10, 0x4D, 0x40, 0x15, 0x02, 0x08, 0x00, 0x00, 0x00,
28920x00, 0x00, 0x01, 0xA0, 0x04, 0x00, 0x11, 0x40, 0x74, 0x00, 0x90, 0x01, 0x40,
28930x07, 0x00, 0x11, 0x00, 0x74, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x1D, 0x00,
28940x74, 0x00, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x15, 0x00, 0x54, 0x00, 0xD0, 0x01,
28950x40, 0x76, 0x80, 0xD9, 0x00, 0x44, 0x03, 0x18, 0x0D, 0x40, 0x37, 0x00, 0xD1,
28960x21, 0x54, 0x0D, 0x12, 0x0D, 0x48, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
28970x00, 0x10, 0x28, 0x34, 0x00, 0xC1, 0x00, 0x34, 0x03, 0x94, 0x0C, 0x40, 0x33,
28980x00, 0xC1, 0x00, 0x34, 0x03, 0x14, 0x0C, 0x40, 0x30, 0x00, 0xCD, 0x00, 0x34,
28990x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xC5, 0x00, 0x34, 0x03, 0x90, 0x0C, 0x48,
29000x00, 0x00, 0x8D, 0x00, 0x05, 0x03, 0x10, 0x0C, 0x40, 0x37, 0x20, 0x15, 0x00,
29010x54, 0x02, 0x11, 0x0D, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29020x00, 0xB0, 0x06, 0x00, 0x13, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC8, 0x07, 0x40,
29030x13, 0x00, 0x7C, 0x00, 0x32, 0x01, 0xD0, 0x04, 0x00, 0x1F, 0x00, 0x74, 0x00,
29040xF0, 0x01, 0xC0, 0x07, 0x00, 0x17, 0x00, 0x5C, 0x00, 0xF0, 0x01, 0xD0, 0x04,
29050x10, 0xDF, 0x00, 0x4C, 0x02, 0x30, 0x0D, 0xC0, 0x3B, 0x00, 0x93, 0x00, 0x4C,
29060x02, 0x32, 0x45, 0xC0, 0x00, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
29070xA0, 0x3F, 0x40, 0xFF, 0x80, 0xFC, 0x03, 0x51, 0x0F, 0xC0, 0x3F, 0x00, 0xEF,
29080x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC4, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0,
29090x0F, 0xC0, 0x3F, 0x00, 0xFB, 0x00, 0xEC, 0x03, 0xF0, 0x0F, 0xC0, 0x0D, 0x10,
29100xBD, 0x20, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F, 0x40, 0xAF, 0x80, 0xFD, 0x02,
29110xF0, 0x29, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0,
29120x2F, 0x01, 0x73, 0x01, 0xFC, 0x11, 0x34, 0x33, 0xC0, 0x1E, 0x01, 0xB3, 0x14,
29130xCC, 0x07, 0xF0, 0x0B, 0xC0, 0x3C, 0x01, 0xBF, 0x80, 0xCC, 0x27, 0xF0, 0x83,
29140xC0, 0x78, 0x00, 0x23, 0x01, 0xCC, 0xB3, 0xF0, 0x4B, 0xC0, 0x1A, 0x21, 0x73,
29150x01, 0xEC, 0x10, 0xF2, 0x13, 0xC0, 0x3C, 0x05, 0x7F, 0x01, 0xFC, 0x05, 0xF0,
29160x1F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0xF7,
29170x00, 0xD1, 0x81, 0x74, 0x25, 0x12, 0x0D, 0x40, 0xD4, 0x02, 0x91, 0x03, 0x44,
29180x87, 0xD0, 0x39, 0x80, 0xFE, 0x02, 0x9D, 0x03, 0x44, 0x13, 0xD0, 0x61, 0x40,
29190x34, 0x44, 0x13, 0x81, 0xD4, 0x23, 0xD0, 0xB9, 0x40, 0xD4, 0x02, 0x91, 0x01,
29200x44, 0x31, 0xD1, 0x11, 0x40, 0xFC, 0x00, 0x9D, 0x81, 0x34, 0x87, 0xD0, 0x1D,
29210x44, 0x0F, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xA3, 0x00,
29220xC1, 0x00, 0x74, 0x01, 0x50, 0x4C, 0x40, 0x16, 0x00, 0xC5, 0x00, 0x04, 0x03,
29230xD0, 0x20, 0x40, 0x30, 0x00, 0x8D, 0x02, 0x04, 0x13, 0xD0, 0x28, 0x40, 0x30,
29240x01, 0x01, 0x00, 0x04, 0x13, 0xD0, 0x08, 0x60, 0x13, 0x00, 0x81, 0x80, 0x24,
29250x42, 0xD2, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x02, 0x50, 0x0C, 0x40,
29260x4F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x75, 0x00, 0xD1,
29270x00, 0x74, 0x01, 0x10, 0x1D, 0x40, 0x34, 0x04, 0x95, 0x00, 0x44, 0x13, 0xD0,
29280x39, 0x60, 0x36, 0x00, 0x9D, 0x00, 0x44, 0x03, 0xD0, 0x01, 0x40, 0x74, 0x00,
29290x59, 0x00, 0x54, 0x03, 0xD0, 0x0D, 0x40, 0x15, 0x00, 0x91, 0x10, 0x44, 0x63,
29300xD0, 0x21, 0x40, 0x36, 0x00, 0x9D, 0x06, 0x74, 0x9B, 0xD8, 0x0D, 0x40, 0x0F,
29310x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xA8, 0x23, 0x40, 0x93, 0x40,
29320x3C, 0x3B, 0x71, 0x1D, 0xC0, 0xD2, 0x00, 0x97, 0x00, 0x4C, 0x07, 0xF0, 0x1D,
29330xC0, 0x34, 0x00, 0x8F, 0x00, 0x4D, 0x03, 0xF0, 0x91, 0xD0, 0x34, 0x00, 0x11,
29340x07, 0x4C, 0x03, 0xF0, 0x0C, 0xC0, 0x13, 0x46, 0x53, 0x00, 0x6C, 0x0C, 0xF0,
29350x98, 0xE0, 0x36, 0x00, 0x5F, 0x00, 0x7C, 0x05, 0xE0, 0x0D, 0xC0, 0x0B, 0x20,
29360x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x25, 0x00, 0xBF, 0x45, 0xFC,
29370x05, 0xF0, 0x0F, 0xC0, 0x9F, 0x40, 0xEB, 0x00, 0xFC, 0x03, 0xF0, 0x0E, 0xC0,
29380x3F, 0x10, 0xDF, 0x04, 0xFC, 0x03, 0xF0, 0x0C, 0xC0, 0x3F, 0x40, 0xB7, 0x04,
29390xFC, 0x03, 0xF0, 0x0B, 0xC4, 0x7E, 0x00, 0xFF, 0x00, 0x7C, 0x84, 0xF0, 0x03,
29400x70, 0x35, 0x00, 0xBF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, 0x06,
29410x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x25, 0x00, 0x93, 0x01, 0x7C, 0x03,
29420xF0, 0x0D, 0xC0, 0x17, 0x00, 0xD3, 0x10, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0x34,
29430x00, 0x97, 0x00, 0x4C, 0x03, 0xF0, 0x09, 0xC0, 0x34, 0x00, 0xDB, 0x10, 0x5C,
29440x03, 0xF0, 0x0D, 0xC0, 0x96, 0x84, 0x93, 0x02, 0x7C, 0x08, 0xB4, 0x2D, 0xC0,
29450x37, 0x00, 0xD7, 0x02, 0x7C, 0x02, 0xB0, 0x0D, 0xC0, 0x29, 0x20, 0x04, 0x00,
29460x00, 0x00, 0x00, 0x00, 0x1B, 0xA0, 0xE4, 0x01, 0x91, 0x00, 0x76, 0x05, 0xD0,
29470x0D, 0x40, 0x37, 0x00, 0xD1, 0x00, 0x74, 0x03, 0xF0, 0x0D, 0xC0, 0x3D, 0x01,
29480xD1, 0x00, 0x44, 0x83, 0xDA, 0x0D, 0x40, 0x34, 0x00, 0xCB, 0x82, 0xC4, 0x43,
29490xD1, 0x0D, 0xC0, 0x37, 0x10, 0x8B, 0x1A, 0x76, 0x00, 0x10, 0x05, 0x40, 0x3F,
29500x00, 0x91, 0x00, 0x74, 0x03, 0xB0, 0x1D, 0xC0, 0x4F, 0x00, 0x02, 0x00, 0x00,
29510x00, 0x00, 0x00, 0x07, 0xA0, 0x22, 0x01, 0x01, 0x00, 0x34, 0x05, 0xD0, 0x0D,
29520x40, 0x33, 0x02, 0x81, 0x02, 0x34, 0x03, 0xD0, 0x08, 0x44, 0x30, 0x00, 0xC5,
29530x00, 0x24, 0x03, 0xD0, 0x04, 0x40, 0x34, 0x00, 0x01, 0x00, 0x14, 0x07, 0xC0,
29540x08, 0x40, 0xF0, 0x20, 0xC1, 0x03, 0x34, 0x00, 0x90, 0x04, 0x48, 0x33, 0x00,
29550x80, 0x00, 0x36, 0x02, 0x50, 0x8C, 0x40, 0x4E, 0x00, 0x08, 0x00, 0x00, 0x00,
29560x00, 0x00, 0x0D, 0x80, 0x78, 0x20, 0xE1, 0x81, 0xB4, 0x47, 0xD0, 0x1E, 0x60,
29570x5B, 0x10, 0xA1, 0x81, 0xB4, 0x07, 0x50, 0x9B, 0x42, 0x79, 0x00, 0xA1, 0x01,
29580xA4, 0x07, 0xD8, 0x12, 0x40, 0x7C, 0x00, 0xF9, 0x01, 0xA4, 0x07, 0xD0, 0x1A,
29590x40, 0x5E, 0x04, 0xA9, 0x01, 0xB4, 0x05, 0x90, 0x52, 0x40, 0x7B, 0x00, 0xA1,
29600x01, 0xB4, 0x06, 0x90, 0x1E, 0x40, 0x36, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
29610x00, 0x12, 0x10, 0x20, 0x00, 0x81, 0x00, 0x34, 0x01, 0xF2, 0x0C, 0xE0, 0x33,
29620x40, 0xC3, 0x00, 0x3C, 0x03, 0xD0, 0x0D, 0xC0, 0x30, 0x00, 0xC6, 0x20, 0x24,
29630x03, 0xD0, 0x4C, 0xC0, 0x30, 0x30, 0x83, 0x58, 0x1C, 0x03, 0xF0, 0x08, 0xC0,
29640x30, 0x00, 0x81, 0x00, 0x34, 0x02, 0xB4, 0x0C, 0xC0, 0x33, 0x40, 0x87, 0x00,
29650x3C, 0x02, 0x70, 0x0C, 0xC4, 0x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
29660x02, 0xB8, 0x3D, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3B, 0x02,
29670xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0xB3, 0x00, 0xBF, 0x00, 0x5C, 0x03,
29680xF0, 0x03, 0xD0, 0x3F, 0x00, 0xFF, 0x20, 0xDC, 0x03, 0xF0, 0x0E, 0xC0, 0x1F,
29690x00, 0xBF, 0x00, 0xFC, 0x23, 0x70, 0x4B, 0xCA, 0xBF, 0x82, 0xBF, 0x00, 0xFC,
29700x02, 0xF0, 0x0E, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
29710xA8, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC2, 0x77, 0x00, 0x93,
29720x80, 0x5C, 0x83, 0x70, 0x09, 0x80, 0xB5, 0x22, 0xD3, 0x00, 0x5C, 0x03, 0xF0,
29730x05, 0xC0, 0x77, 0x20, 0x53, 0x00, 0x7C, 0x33, 0xE0, 0x0D, 0xC0, 0x37, 0x00,
29740xDF, 0x00, 0x78, 0x03, 0xB0, 0x1D, 0xC0, 0x36, 0x81, 0xDF, 0x00, 0x4C, 0x02,
29750xF0, 0x0D, 0xC0, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x98,
29760xB9, 0x10, 0xAD, 0x40, 0x9C, 0x0B, 0xD3, 0x0E, 0x40, 0x13, 0x01, 0xE1, 0x00,
29770x84, 0x03, 0xD0, 0x2A, 0x40, 0x30, 0x11, 0xE1, 0x22, 0xB4, 0x83, 0xD0, 0x0E,
29780x40, 0x3B, 0x00, 0xE1, 0x00, 0xB4, 0x53, 0x80, 0x0A, 0x40, 0xBB, 0x00, 0xED,
29790x00, 0x34, 0x03, 0x10, 0x0E, 0x60, 0x38, 0x08, 0xAD, 0x00, 0x94, 0x02, 0xD0,
29800x0E, 0x40, 0x4F, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x79,
29810x05, 0xAD, 0x03, 0xB4, 0x57, 0xD0, 0x1E, 0x40, 0x7B, 0x03, 0xC1, 0x09, 0x96,
29820x47, 0xD0, 0x7C, 0x4C, 0x79, 0x60, 0xE1, 0x05, 0xB6, 0x07, 0xD0, 0x1E, 0x40,
29830x7B, 0x00, 0xE1, 0x83, 0xB4, 0x07, 0xC0, 0xDE, 0x08, 0x7B, 0x01, 0xAD, 0x01,
29840xB4, 0x07, 0x10, 0x1F, 0x40, 0x7A, 0x92, 0xED, 0x43, 0x84, 0x06, 0xD0, 0x1E,
29850x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x33, 0x00,
29860x8D, 0x40, 0x14, 0x02, 0xD0, 0x3D, 0x41, 0x23, 0x00, 0xC1, 0x00, 0x04, 0x06,
29870xD0, 0x1C, 0x40, 0x30, 0x00, 0xC1, 0x00, 0x74, 0x03, 0xD0, 0xEC, 0x60, 0x23,
29880x00, 0xC1, 0x07, 0x34, 0x03, 0x91, 0x1C, 0x40, 0xA3, 0x09, 0x8D, 0x00, 0x34,
29890x1F, 0x10, 0x3C, 0x44, 0x30, 0x00, 0x8D, 0x00, 0x14, 0x02, 0xD0, 0x0C, 0x40,
29900x5B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x11, 0x10, 0x6F,
29910x00, 0xBC, 0x21, 0xF0, 0x07, 0xC1, 0x1F, 0x40, 0x53, 0x00, 0x5C, 0x01, 0x72,
29920x17, 0xC2, 0x15, 0x00, 0x52, 0x00, 0x7C, 0x01, 0xF0, 0x37, 0xC0, 0x17, 0x00,
29930x73, 0x23, 0x7C, 0x01, 0xF2, 0x15, 0xC3, 0x9F, 0x01, 0x7F, 0x05, 0xFC, 0x1D,
29940x34, 0x17, 0xC5, 0x16, 0x00, 0x7F, 0x40, 0xCC, 0x81, 0xE0, 0x05, 0xC0, 0x5F,
29950x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x87, 0x20, 0x1F, 0x04,
29960x5C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x02, 0x1F, 0x08, 0x7C, 0x00, 0xF0, 0x01,
29970xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC8, 0x07, 0x42, 0x1F,
29980x02, 0x3C, 0x00, 0xB0, 0x01, 0xC2, 0x03, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x70,
29990x01, 0xC0, 0x07, 0x00, 0x1B, 0x20, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x4B, 0x00,
30000x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x27, 0x01, 0x9B, 0x01, 0x4C,
30010x22, 0x30, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x01, 0x4C, 0x02, 0xF0, 0x09, 0xD0,
30020x61, 0x00, 0x96, 0x04, 0x7C, 0x02, 0x70, 0x09, 0xC2, 0x24, 0x00, 0x9F, 0x00,
30030x5C, 0x02, 0x78, 0x89, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x7C, 0x02, 0x30, 0x49,
30040xC9, 0x27, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x30, 0x09, 0xC0, 0x43, 0x20, 0x04,
30050x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xEE, 0x00, 0x91, 0x89, 0xC4, 0x06,
30060x10, 0x09, 0x40, 0x6C, 0x00, 0xAD, 0x03, 0x44, 0x02, 0xD0, 0x0B, 0x42, 0x64,
30070x00, 0xB1, 0x07, 0x74, 0x02, 0x10, 0x09, 0x40, 0xA4, 0x82, 0x8D, 0x02, 0x44,
30080x02, 0x10, 0x0B, 0x48, 0x2F, 0x00, 0x91, 0x40, 0x74, 0x02, 0xB0, 0x79, 0x40,
30090x27, 0x00, 0x87, 0x00, 0x2C, 0x02, 0x50, 0x09, 0x40, 0x07, 0x00, 0x08, 0x00,
30100x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x04, 0x91, 0x00, 0x44, 0x02, 0x16,
30110x0D, 0x60, 0x24, 0x01, 0x9D, 0x0A, 0x40, 0x02, 0xD0, 0x08, 0x40, 0x24, 0x02,
30120x9D, 0x00, 0x74, 0x02, 0x50, 0x09, 0x40, 0xA4, 0x20, 0x9D, 0x18, 0x54, 0x02,
30130x50, 0x09, 0x41, 0x27, 0x00, 0x91, 0x00, 0x64, 0x02, 0x00, 0x09, 0x40, 0x27,
30140x00, 0x98, 0x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x73, 0x00, 0x02, 0x00, 0x00,
30150x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x81, 0x00, 0x04, 0x02, 0x10, 0x88,
30160x40, 0x20, 0x00, 0x8D, 0x00, 0x04, 0x0A, 0xD0, 0x28, 0x40, 0x20, 0x00, 0x89,
30170x00, 0x34, 0x22, 0x50, 0x88, 0x40, 0x20, 0x02, 0x8D, 0x40, 0x00, 0x0A, 0x10,
30180x08, 0x48, 0x23, 0x40, 0x81, 0x00, 0x34, 0x22, 0x98, 0x08, 0x40, 0x23, 0x20,
30190x95, 0xC2, 0x64, 0x0A, 0x10, 0x08, 0x40, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00,
30200x00, 0x00, 0x1D, 0xB0, 0x46, 0x40, 0x13, 0x00, 0x4C, 0x04, 0x32, 0x21, 0xD0,
30210x44, 0x00, 0x1F, 0x01, 0x4D, 0x00, 0xF0, 0x11, 0xC0, 0x05, 0x15, 0x1F, 0x01,
30220x7C, 0x08, 0x70, 0x61, 0xD1, 0x80, 0x00, 0x1D, 0x00, 0x5C, 0x50, 0x50, 0x11,
30230x40, 0x47, 0x00, 0x53, 0x40, 0x6C, 0x58, 0x30, 0x01, 0xC0, 0x07, 0x05, 0x0F,
30240x00, 0x4D, 0x00, 0x34, 0x01, 0xC4, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00,
30250x00, 0x19, 0xB8, 0xAF, 0x08, 0xBF, 0x00, 0xFD, 0x0A, 0xF0, 0x4B, 0xC0, 0xAF,
30260x00, 0xBF, 0x02, 0xFC, 0x06, 0xF0, 0x3B, 0xC0, 0x27, 0x00, 0xB3, 0x02, 0x7C,
30270x12, 0xB1, 0x4B, 0x80, 0x2F, 0x01, 0xBF, 0x00, 0x7C, 0x06, 0xF0, 0x2B, 0xC0,
30280xAF, 0x08, 0xBF, 0x00, 0xF8, 0x12, 0xF2, 0x0A, 0xC4, 0x27, 0x00, 0xB7, 0x01,
30290xDC, 0x06, 0xF0, 0x09, 0xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
30300x18, 0xA0, 0x6F, 0x00, 0xBF, 0x40, 0xC4, 0x56, 0xF0, 0x09, 0xC0, 0x6F, 0x01,
30310xBF, 0x41, 0x7C, 0x02, 0x30, 0x79, 0xC0, 0x2C, 0x00, 0xFF, 0x31, 0x4C, 0x22,
30320xF0, 0x49, 0xC0, 0x2C, 0x00, 0xB3, 0x00, 0xFC, 0x02, 0xB0, 0x5B, 0xC1, 0x6D,
30330x14, 0xB3, 0x60, 0x4C, 0x52, 0x32, 0x0B, 0xC0, 0x27, 0x28, 0x9F, 0x02, 0x7C,
30340x0A, 0xF0, 0x0B, 0xC6, 0x63, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C,
30350x08, 0x07, 0x00, 0x1D, 0x00, 0x44, 0x08, 0xD0, 0x01, 0x43, 0x97, 0x00, 0x1D,
30360x02, 0x34, 0x54, 0x52, 0x75, 0x50, 0x84, 0x00, 0x1D, 0x02, 0x54, 0x00, 0x90,
30370x41, 0x11, 0x04, 0x41, 0x11, 0x00, 0x74, 0x9C, 0x10, 0x21, 0x40, 0x84, 0x00,
30380x51, 0x00, 0x54, 0x11, 0x50, 0x05, 0x00, 0x87, 0x10, 0x1D, 0x01, 0x74, 0x04,
30390xD0, 0x01, 0x40, 0x73, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0,
30400xA3, 0x80, 0xDD, 0x00, 0x14, 0x02, 0xD0, 0x08, 0x40, 0xB3, 0x30, 0x8C, 0x02,
30410x34, 0x02, 0x10, 0xC8, 0x40, 0x22, 0x02, 0x8D, 0x00, 0x04, 0x02, 0x50, 0xC8,
30420x40, 0x20, 0x25, 0x80, 0x00, 0x34, 0x62, 0x92, 0x08, 0x60, 0x23, 0x00, 0x95,
30430x00, 0x14, 0x52, 0xD0, 0x08, 0x42, 0x23, 0x82, 0x8D, 0x00, 0x34, 0x02, 0xD0,
30440x08, 0x40, 0x4B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25,
30450x00, 0x9D, 0x22, 0x54, 0x02, 0xD0, 0x69, 0x42, 0x27, 0x00, 0x9D, 0x00, 0x34,
30460x02, 0x50, 0x09, 0x40, 0x26, 0x80, 0x9D, 0x00, 0x54, 0x82, 0x90, 0x08, 0x41,
30470x20, 0x00, 0x91, 0x24, 0x76, 0x02, 0x10, 0x09, 0x40, 0x24, 0x02, 0xD5, 0x48,
30480x14, 0x02, 0x50, 0x09, 0x42, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x1A, 0xD0, 0x09,
30490x40, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00,
30500x8F, 0x82, 0x5D, 0x82, 0xF0, 0x09, 0xC0, 0x27, 0x02, 0x9F, 0x00, 0xFC, 0x02,
30510x30, 0xAB, 0xC0, 0x26, 0x10, 0x9F, 0x00, 0x4C, 0x02, 0xF0, 0x29, 0xC0, 0x24,
30520x00, 0x93, 0x04, 0xFC, 0x02, 0xB0, 0x18, 0xC8, 0x27, 0x40, 0x87, 0x00, 0x5C,
30530x0A, 0x60, 0x29, 0xC0, 0x27, 0x00, 0xBF, 0x24, 0xFC, 0x02, 0xF0, 0x09, 0xC0,
30540x17, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x80, 0x25, 0x00, 0x9F,
30550x00, 0x6C, 0x0E, 0xF0, 0x19, 0xC0, 0x27, 0x00, 0x9E, 0x09, 0x7C, 0x0E, 0xF0,
30560x08, 0xC0, 0x25, 0x80, 0x8F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC2, 0xA7, 0x14,
30570x9F, 0x20, 0x3C, 0x02, 0x70, 0x59, 0xCA, 0x27, 0x08, 0x9B, 0x11, 0x7C, 0x02,
30580xF8, 0x49, 0xC0, 0x27, 0x80, 0x9F, 0x00, 0x7C, 0x02, 0xF2, 0x09, 0xC0, 0x4B,
30590x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00,
30600x7C, 0x00, 0xB0, 0x01, 0xC0, 0x87, 0x00, 0x1B, 0x10, 0x7C, 0x00, 0x30, 0x21,
30610xD0, 0x04, 0x02, 0x1F, 0x08, 0x4D, 0x00, 0xF0, 0x01, 0xE0, 0x04, 0x00, 0x17,
30620x10, 0x4C, 0x00, 0xF0, 0x41, 0xC0, 0x02, 0x40, 0x13, 0x02, 0x4C, 0x08, 0xF2,
30630x01, 0xC0, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x43, 0x20,
30640x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x1C, 0x00, 0x5D, 0x00, 0x70,
30650x01, 0x18, 0x05, 0x48, 0x17, 0x00, 0x7C, 0x03, 0x74, 0x01, 0x10, 0x05, 0x50,
30660x54, 0x00, 0x7C, 0x03, 0x44, 0x01, 0xD0, 0x05, 0x40, 0x9C, 0x01, 0x7D, 0x41,
30670x7C, 0x11, 0x70, 0x07, 0xC0, 0xDE, 0x01, 0x70, 0x03, 0x68, 0x01, 0x10, 0x37,
30680x05, 0x14, 0x80, 0x5D, 0x00, 0x74, 0x01, 0xC0, 0x45, 0x40, 0x53, 0x00, 0x02,
30690x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x22, 0x20, 0x8D, 0x00, 0x30, 0x06,
30700x10, 0x0C, 0x40, 0x23, 0x10, 0x8C, 0x08, 0x36, 0x03, 0x10, 0x0C, 0x40, 0x30,
30710x00, 0x8D, 0x13, 0x24, 0x03, 0xC0, 0x0C, 0x40, 0xB0, 0x00, 0xCD, 0x00, 0x24,
30720x03, 0x50, 0x38, 0x40, 0x20, 0x29, 0xC0, 0x0A, 0x04, 0x03, 0x90, 0x38, 0x01,
30730x31, 0x00, 0xCD, 0x80, 0x36, 0x03, 0xC0, 0x0C, 0x40, 0x53, 0x00, 0x0A, 0x00,
30740x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x38, 0x00, 0xED, 0x40, 0xB4, 0x0F, 0x10,
30750x0E, 0x48, 0x3B, 0x00, 0xAD, 0x00, 0xB4, 0x23, 0x10, 0x4C, 0x40, 0x28, 0x00,
30760xAD, 0x00, 0xA4, 0x03, 0xD0, 0x4E, 0x60, 0x38, 0x80, 0xFD, 0x03, 0xA4, 0x23,
30770x50, 0x28, 0x40, 0x3A, 0x00, 0xF1, 0x00, 0x26, 0x23, 0x10, 0x1B, 0x40, 0x38,
30780x00, 0xED, 0x04, 0xB4, 0x13, 0x90, 0x0E, 0x40, 0x07, 0x20, 0x02, 0x00, 0x00,
30790x00, 0x00, 0x00, 0x15, 0x10, 0x68, 0x00, 0xEF, 0x01, 0x3C, 0x07, 0x34, 0x3E,
30800xC0, 0x7B, 0x00, 0xAF, 0x81, 0xBC, 0x07, 0x34, 0x7E, 0x40, 0x78, 0x00, 0xAD,
30810x01, 0xA4, 0x1F, 0xF9, 0xBF, 0x40, 0x48, 0x00, 0xE7, 0x01, 0xAC, 0x17, 0x70,
30820x16, 0xE0, 0x68, 0x00, 0xE3, 0x01, 0x8C, 0x57, 0xB0, 0x1E, 0xE0, 0x79, 0x00,
30830xED, 0x03, 0xBE, 0x0F, 0xF0, 0x1E, 0xC4, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00,
30840x00, 0x00, 0x10, 0xB8, 0x25, 0x20, 0xDF, 0x00, 0x7C, 0x03, 0xF1, 0x0D, 0x44,
30850x37, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xD0, 0x0D, 0x40, 0x27, 0x10, 0x8F, 0x00,
30860x5C, 0x4B, 0xF0, 0x6D, 0xD0, 0x07, 0x00, 0x0F, 0x00, 0x7C, 0x83, 0x70, 0x05,
30870xC0, 0x33, 0x08, 0xCF, 0x00, 0x7C, 0x0B, 0x71, 0x0C, 0xC0, 0x37, 0x10, 0xDF,
30880x00, 0x74, 0x03, 0xF0, 0x0D, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
30890x00, 0x00, 0xA0, 0x6F, 0x00, 0xF3, 0x09, 0xFC, 0x83, 0x30, 0x9F, 0xC0, 0x7F,
30900x02, 0xF3, 0x01, 0xFC, 0x07, 0xF0, 0x1E, 0x80, 0x7D, 0x00, 0xBF, 0x01, 0xFC,
30910x27, 0x30, 0x1F, 0xC0, 0x7E, 0x22, 0xFF, 0x01, 0xFC, 0x06, 0xF0, 0x1F, 0xC0,
30920x6C, 0x00, 0xFF, 0x01, 0xFC, 0x07, 0xB0, 0x1B, 0xC0, 0x7F, 0x02, 0xEF, 0x09,
30930x8C, 0x07, 0x30, 0x1F, 0xC0, 0x03, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
30940x15, 0x88, 0x39, 0x00, 0xE1, 0x80, 0xB0, 0x53, 0xB4, 0x0E, 0x46, 0x3B, 0x02,
30950xE1, 0x80, 0xB4, 0x03, 0x70, 0x4E, 0x48, 0x39, 0x00, 0xAD, 0x04, 0xB4, 0x03,
30960x10, 0x0E, 0x41, 0x38, 0x00, 0xED, 0x06, 0xB4, 0x02, 0x90, 0x0E, 0xC4, 0x39,
30970x00, 0x2F, 0x00, 0xF4, 0x83, 0x10, 0x4A, 0x00, 0x3B, 0x08, 0xED, 0x20, 0xAC,
30980x03, 0xF0, 0x0E, 0x40, 0x57, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30990x00, 0x29, 0x04, 0xE1, 0x00, 0x30, 0x33, 0x18, 0x0E, 0x60, 0x33, 0xC0, 0xE9,
31000x10, 0xB4, 0x27, 0xD0, 0x1F, 0x72, 0x3B, 0x00, 0xAD, 0x80, 0xB4, 0x03, 0x98,
31010x0C, 0x40, 0x29, 0x20, 0xEC, 0x10, 0xA4, 0x02, 0xD0, 0x0E, 0x40, 0x2A, 0x00,
31020xED, 0x00, 0xB4, 0x03, 0x50, 0x0E, 0x48, 0x3B, 0xA0, 0xFD, 0x11, 0xC4, 0x07,
31030x10, 0x0E, 0x40, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28,
31040x63, 0x00, 0xC1, 0x20, 0x34, 0x8B, 0x90, 0x1C, 0x40, 0xB3, 0x01, 0x49, 0x20,
31050x34, 0x07, 0x50, 0x2C, 0x40, 0x31, 0x00, 0x8D, 0x01, 0x34, 0x03, 0x94, 0x1C,
31060x64, 0x61, 0x00, 0x0D, 0x13, 0x74, 0x82, 0x90, 0x9C, 0x40, 0xF1, 0x00, 0x05,
31070x03, 0x34, 0x03, 0x11, 0x1C, 0x40, 0x33, 0x10, 0xCD, 0x03, 0x04, 0x0B, 0x58,
31080x0C, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x65,
31090x00, 0xC3, 0x04, 0x7C, 0x07, 0x10, 0x1F, 0x40, 0x37, 0x04, 0x8B, 0x01, 0x74,
31100x03, 0xF0, 0x0D, 0xD0, 0x37, 0x00, 0xDF, 0x11, 0xFC, 0x03, 0xB0, 0x2F, 0xC0,
31110x35, 0x11, 0x5F, 0x03, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0xA6, 0x08, 0x9D, 0x04,
31120xFC, 0x17, 0x54, 0x68, 0xC0, 0x37, 0x00, 0xDF, 0xC3, 0x45, 0x13, 0x15, 0x0D,
31130xC0, 0x57, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x40,
31140xDF, 0x00, 0x7C, 0x13, 0x70, 0x8D, 0xC0, 0x37, 0x00, 0x97, 0x00, 0x7C, 0x23,
31150xF0, 0x4D, 0xD0, 0x27, 0x00, 0xDF, 0x02, 0x7C, 0x03, 0x70, 0x0D, 0x00, 0xB4,
31160x08, 0x5F, 0x80, 0x7C, 0x02, 0xB2, 0x09, 0xC0, 0x27, 0x06, 0x9F, 0x02, 0x3C,
31170x03, 0x50, 0x09, 0xC0, 0x33, 0x00, 0xDE, 0x00, 0x7C, 0x03, 0xB0, 0x0D, 0xC0,
31180x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x27, 0x00, 0xFF,
31190x90, 0xCD, 0x03, 0xF1, 0x0F, 0xC1, 0x3E, 0x00, 0xBF, 0x01, 0xCE, 0x03, 0x32,
31200x0F, 0xE0, 0x2C, 0x00, 0xBF, 0x01, 0xFC, 0x03, 0xF0, 0x0F, 0xC1, 0x5F, 0x00,
31210x7F, 0x01, 0xFC, 0x23, 0x38, 0x05, 0xE0, 0x2C, 0x01, 0x38, 0x90, 0xFC, 0x03,
31220x30, 0x4B, 0xDD, 0x3D, 0x00, 0xF3, 0x10, 0xCC, 0x43, 0x78, 0x9F, 0xC0, 0x13,
31230x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x56, 0x00, 0xDD, 0x49,
31240x44, 0x03, 0x70, 0x0C, 0x40, 0x74, 0x08, 0x9D, 0x00, 0x04, 0x03, 0xB0, 0x0D,
31250xC0, 0x66, 0x80, 0x9D, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0xC0, 0x15, 0x03, 0x1D,
31260x23, 0x5C, 0x02, 0xB0, 0x04, 0x44, 0x25, 0x00, 0x1D, 0x41, 0x74, 0x03, 0x70,
31270x09, 0x40, 0x34, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0xD0, 0x1D, 0x40, 0x17, 0x02,
31280x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xA4, 0x01, 0xDD, 0x00, 0x44,
31290x07, 0xD0, 0x0D, 0x60, 0x36, 0x02, 0x9D, 0x04, 0x44, 0x03, 0x10, 0x0C, 0x48,
31300x34, 0x02, 0xDD, 0x06, 0x74, 0x03, 0xD0, 0x0D, 0x60, 0x07, 0x00, 0x9D, 0x44,
31310x74, 0x03, 0x93, 0x0D, 0x40, 0xA4, 0x00, 0x9D, 0x01, 0x74, 0x03, 0x10, 0x29,
31320x40, 0x34, 0x00, 0xC0, 0x00, 0x44, 0x03, 0xD0, 0x0D, 0x40, 0x07, 0x20, 0x02,
31330x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0xDD, 0x20, 0x04, 0x03,
31340xD0, 0x0D, 0x40, 0x30, 0x80, 0x8D, 0x00, 0x45, 0x03, 0x99, 0x0C, 0x40, 0x30,
31350x80, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x01, 0x00, 0x8D, 0x00, 0x10,
31360x02, 0x90, 0x0C, 0x60, 0x11, 0x00, 0x0D, 0x00, 0x34, 0x03, 0x50, 0x08, 0x40,
31370x30, 0x40, 0xC1, 0x00, 0x24, 0x03, 0xD0, 0x08, 0x40, 0x43, 0xA1, 0x00, 0x00,
31380x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x26, 0x00, 0xDD, 0x00, 0x44, 0x03, 0xF8,
31390x0D, 0xC0, 0x36, 0x00, 0xDF, 0x40, 0xC6, 0x03, 0x32, 0x0F, 0x50, 0x24, 0x20,
31400x5D, 0x00, 0xBC, 0x03, 0xF0, 0x0F, 0xC0, 0x07, 0x00, 0x9D, 0x00, 0x78, 0x03,
31410x90, 0x0D, 0x40, 0x24, 0x08, 0x1F, 0x00, 0xFC, 0x03, 0x31, 0x05, 0xC0, 0x35,
31420x00, 0xF3, 0x00, 0xCC, 0x03, 0xF0, 0x0D, 0xC0, 0x03, 0xC4, 0x0A, 0x00, 0x00,
31430x00, 0x00, 0x00, 0x05, 0xB8, 0x1F, 0x20, 0xFF, 0x00, 0xFC, 0x03, 0x7A, 0x0F,
31440xC0, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x03, 0xF3, 0x0F, 0xC0, 0x2F, 0x00, 0x7F,
31450x00, 0xFC, 0x83, 0xF1, 0x0F, 0x80, 0x0D, 0x00, 0x3E, 0x00, 0xDC, 0x82, 0xF0,
31460x0F, 0xC0, 0x1F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0x70, 0x07, 0x40, 0x3F, 0x00,
31470xF7, 0x00, 0xFC, 0x03, 0xF8, 0x0B, 0xC0, 0x17, 0x20, 0x0E, 0x00, 0x00, 0x00,
31480x00, 0x00, 0x03, 0x80, 0x5F, 0x00, 0x33, 0x8C, 0xCC, 0x10, 0x30, 0x1F, 0xC0,
31490x2F, 0x00, 0x33, 0x00, 0xCC, 0x02, 0x30, 0x1F, 0xE0, 0x7F, 0x00, 0xBB, 0x01,
31500xF4, 0x07, 0x70, 0x0B, 0xC0, 0x7C, 0x05, 0xFF, 0x42, 0xFC, 0x32, 0xF0, 0x4F,
31510xC8, 0x3F, 0x01, 0xFF, 0x01, 0xFC, 0x0C, 0x30, 0x4F, 0xC0, 0x4E, 0x00, 0xB3,
31520x00, 0x7C, 0x73, 0xF0, 0x4F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
31530x00, 0x01, 0x08, 0x77, 0x00, 0x11, 0x0E, 0x6C, 0x24, 0x30, 0x1D, 0x40, 0x23,
31540x00, 0x51, 0x03, 0x14, 0x02, 0x50, 0x4D, 0x49, 0x33, 0x10, 0xC1, 0x10, 0x74,
31550x04, 0x10, 0xB9, 0xE0, 0xFE, 0x00, 0xFD, 0x0A, 0x74, 0x22, 0xD0, 0xBF, 0x40,
31560x3F, 0x0B, 0xCD, 0x00, 0x74, 0x00, 0x50, 0x3D, 0x40, 0x44, 0x00, 0x91, 0x0B,
31570xF4, 0x03, 0xD1, 0x1F, 0x40, 0x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
31580x11, 0xA0, 0x27, 0x00, 0x41, 0x00, 0x05, 0x00, 0x10, 0x0C, 0x40, 0x23, 0x00,
31590x81, 0x02, 0x04, 0x03, 0x10, 0x4C, 0x40, 0x33, 0x00, 0xC9, 0x00, 0x74, 0x03,
31600x54, 0x04, 0x50, 0x32, 0x20, 0xC5, 0x84, 0x34, 0x12, 0xD0, 0x0C, 0x40, 0x31,
31610x04, 0xCD, 0x00, 0x54, 0x11, 0x10, 0x2C, 0x48, 0x46, 0x80, 0xC1, 0x00, 0x14,
31620x13, 0xD0, 0x2C, 0x40, 0x47, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
31630xA8, 0x25, 0x02, 0x51, 0x00, 0x44, 0x08, 0x10, 0x0D, 0x40, 0x27, 0x02, 0x51,
31640x00, 0x54, 0x03, 0x50, 0x0D, 0x48, 0x37, 0x00, 0xD9, 0x03, 0x74, 0x18, 0x14,
31650x15, 0x50, 0x36, 0x00, 0xD9, 0x00, 0x70, 0x22, 0xD0, 0x0D, 0x40, 0x37, 0x20,
31660xDD, 0x00, 0x74, 0x09, 0x50, 0x0D, 0x40, 0x46, 0x40, 0xD1, 0x11, 0x74, 0x03,
31670xD1, 0x0D, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8,
31680x53, 0x01, 0x13, 0x10, 0x44, 0x0C, 0x30, 0x0D, 0xC0, 0x27, 0x40, 0x13, 0x80,
31690x44, 0x06, 0x34, 0x0D, 0x40, 0x37, 0x00, 0xDB, 0x01, 0x3C, 0x09, 0x70, 0x31,
31700x40, 0x36, 0x30, 0xDF, 0x00, 0x78, 0x02, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
31710x00, 0x7C, 0x0C, 0x30, 0x0D, 0xC0, 0x42, 0x10, 0xD3, 0x01, 0x7C, 0x03, 0xF1,
31720x0D, 0xC0, 0x03, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7D,
31730x50, 0xEF, 0x10, 0xBC, 0x22, 0x70, 0x0F, 0xC0, 0x2B, 0x00, 0x9F, 0x00, 0xB8,
31740x26, 0xB0, 0x0F, 0x88, 0x3F, 0x00, 0xF7, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0,
31750x3F, 0x00, 0xFF, 0x20, 0xF8, 0x06, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x10,
31760xFC, 0x24, 0xF0, 0x0E, 0xC0, 0x0D, 0x28, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
31770xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x25, 0x08,
31780x1F, 0x00, 0x6C, 0x29, 0x30, 0x0D, 0xC0, 0x27, 0x01, 0xC7, 0x80, 0x4C, 0x03,
31790x34, 0x0D, 0xC0, 0x34, 0x00, 0xDF, 0x02, 0x4E, 0x08, 0x22, 0x05, 0xC8, 0x34,
31800x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0xDF, 0x00, 0x6D,
31810x09, 0x70, 0x0D, 0xC0, 0x07, 0x00, 0xDF, 0x0A, 0x7C, 0x03, 0xF1, 0x0D, 0xC4,
31820x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x24, 0x00, 0xDD,
31830x00, 0x45, 0x03, 0x10, 0x0D, 0x40, 0xA7, 0x00, 0xD1, 0x00, 0x4D, 0x03, 0x10,
31840x0D, 0xC0, 0x76, 0x02, 0xD1, 0x00, 0x45, 0x01, 0xB0, 0x04, 0xC1, 0x3E, 0x00,
31850xFD, 0x00, 0x7C, 0x03, 0xC1, 0x1F, 0xC1, 0x3E, 0x00, 0xDD, 0x00, 0x04, 0x01,
31860x10, 0x0F, 0xC0, 0x45, 0x00, 0xDD, 0x41, 0xF4, 0x83, 0xD0, 0x5F, 0x40, 0x4F,
31870x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x22, 0x00, 0x8D, 0x01,
31880x04, 0x07, 0x10, 0x0C, 0x40, 0x32, 0x00, 0x05, 0x00, 0x04, 0x03, 0xD0, 0x0C,
31890x40, 0xF4, 0x00, 0xC5, 0x00, 0x04, 0x06, 0x18, 0x08, 0x40, 0x70, 0x00, 0xCD,
31900x80, 0x34, 0x03, 0xC0, 0x1C, 0x40, 0x30, 0x08, 0xCD, 0xC0, 0x04, 0x01, 0x50,
31910x0C, 0x40, 0x53, 0x00, 0xCD, 0x00, 0x14, 0x03, 0xD0, 0x0C, 0x40, 0x1F, 0x00,
31920x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x68, 0x00, 0x2D, 0x19, 0x04,
31930x07, 0x10, 0x1E, 0x40, 0x6B, 0x00, 0x61, 0x01, 0xA4, 0x27, 0x90, 0x1E, 0x40,
31940x7A, 0x00, 0xE1, 0x01, 0xC4, 0x04, 0x99, 0x9A, 0x40, 0x7A, 0x00, 0xED, 0x81,
31950x94, 0x07, 0xD0, 0x9E, 0x40, 0x7A, 0x00, 0xED, 0x81, 0x84, 0x07, 0x10, 0x1E,
31960x40, 0x49, 0x00, 0x6D, 0x01, 0xB4, 0x27, 0xD0, 0x1E, 0x40, 0x13, 0x00, 0x02,
31970x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x20, 0x00, 0xDF, 0x00, 0x04, 0x03,
31980x30, 0x0C, 0xC0, 0x22, 0x02, 0x85, 0x08, 0x04, 0x23, 0xF0, 0x0D, 0x40, 0x30,
31990x04, 0xC7, 0x08, 0x04, 0x42, 0x30, 0x00, 0xC0, 0x30, 0x04, 0xCF, 0x00, 0x34,
32000x02, 0xF0, 0x8C, 0xC0, 0x30, 0x00, 0xCF, 0x80, 0x4C, 0x01, 0x70, 0x0C, 0xC0,
32010x13, 0x84, 0xCF, 0x00, 0x1C, 0x17, 0xF0, 0x0C, 0xC0, 0x4B, 0x40, 0x00, 0x00,
32020x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x2D, 0x00, 0x7F, 0x00, 0xDD, 0x03, 0xD0,
32030x0F, 0xC0, 0x2F, 0x80, 0x7F, 0x00, 0xDE, 0xA3, 0x70, 0x0F, 0xC8, 0x3F, 0x00,
32040xF7, 0x00, 0xBC, 0x22, 0xF0, 0x0A, 0xC0, 0x3F, 0x00, 0xFF, 0x08, 0xFC, 0x22,
32050xF0, 0xAE, 0xC2, 0x3F, 0x20, 0xFF, 0x08, 0xDC, 0x21, 0xF0, 0x0F, 0xC4, 0x0F,
32060x10, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x2F, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00,
32070x00, 0x00, 0x00, 0x15, 0xA8, 0x37, 0x00, 0x9F, 0x00, 0x4C, 0x00, 0x31, 0x0D,
32080xC0, 0x3F, 0x00, 0x1F, 0x00, 0x7C, 0x07, 0x30, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
32090x00, 0x7C, 0x04, 0x30, 0x15, 0xC0, 0xB5, 0x04, 0xDF, 0x07, 0x6C, 0x03, 0xF0,
32100x5D, 0xC0, 0x36, 0x05, 0xDF, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC0, 0x53, 0x00,
32110xD1, 0x40, 0x78, 0x17, 0x34, 0x2D, 0xC0, 0x57, 0x00, 0x0E, 0x00, 0x00, 0x00,
32120x00, 0x00, 0x12, 0x98, 0x39, 0x00, 0xED, 0x00, 0x84, 0x02, 0x10, 0x0E, 0x40,
32130x3B, 0x90, 0xAC, 0x00, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x3B, 0x10, 0xED, 0x20,
32140xB4, 0x00, 0x50, 0x0E, 0x40, 0x38, 0x01, 0xCD, 0x12, 0x84, 0x03, 0xD0, 0x0E,
32150x40, 0xB8, 0x00, 0xE7, 0x00, 0x9C, 0x03, 0xD0, 0x6E, 0x40, 0x0B, 0x00, 0xE1,
32160x00, 0xF4, 0x2B, 0x10, 0x0E, 0x40, 0x4B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
32170x00, 0x03, 0x00, 0xE9, 0x00, 0x8D, 0x03, 0x24, 0x05, 0x94, 0x1E, 0x40, 0x7B,
32180x10, 0xEC, 0x03, 0xB4, 0x07, 0x90, 0x1E, 0x40, 0x7B, 0x20, 0xED, 0x01, 0xF6,
32190x07, 0x10, 0x14, 0x41, 0x79, 0x02, 0xED, 0x05, 0x84, 0x07, 0x50, 0xDC, 0x40,
32200x7A, 0x00, 0xED, 0x01, 0x96, 0x05, 0xD0, 0x1E, 0x40, 0x5B, 0x80, 0xE1, 0x41,
32210xB4, 0x17, 0x10, 0x9E, 0x40, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
32220x12, 0x20, 0x63, 0x00, 0xCD, 0x00, 0x05, 0x13, 0x90, 0x0C, 0x40, 0x33, 0x02,
32230xC9, 0x00, 0x34, 0x03, 0x90, 0x0C, 0x42, 0x33, 0x00, 0x4C, 0x08, 0x34, 0x0B,
32240x50, 0x3C, 0x40, 0x30, 0x00, 0xCC, 0x00, 0x04, 0x07, 0xD1, 0x0C, 0x40, 0x32,
32250x20, 0xC5, 0x00, 0x54, 0x0B, 0xD0, 0x0C, 0x44, 0x23, 0x00, 0xC1, 0x07, 0x34,
32260x03, 0x10, 0x0C, 0x40, 0x4B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17,
32270xA8, 0x1D, 0x00, 0x7F, 0x0A, 0xEC, 0x1D, 0xB0, 0x05, 0x40, 0x57, 0x00, 0x7F,
32280x0A, 0x7C, 0x01, 0xB4, 0x05, 0xC0, 0x17, 0x10, 0x7D, 0x02, 0xFC, 0x21, 0x30,
32290x27, 0xC0, 0x15, 0x10, 0x5F, 0x00, 0x4C, 0x15, 0xF0, 0x05, 0xC0, 0x16, 0x80,
32300x5F, 0xC0, 0xDC, 0x01, 0xF1, 0x05, 0xC0, 0x1F, 0x02, 0x73, 0x02, 0x74, 0x01,
32310x30, 0x05, 0xC0, 0x5F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00,
32320x07, 0x00, 0x0F, 0x02, 0x3C, 0x00, 0x70, 0x01, 0xC8, 0x07, 0x00, 0x1F, 0x00,
32330x7C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x10, 0x7C, 0x20, 0xF0, 0x41,
32340xC0, 0x03, 0x80, 0x1F, 0x00, 0x5D, 0x00, 0xF0, 0x01, 0xC0, 0x01, 0x80, 0x1F,
32350x02, 0x5C, 0x40, 0xF0, 0x01, 0xC0, 0x07, 0x40, 0x1F, 0x08, 0x7C, 0x00, 0xF0,
32360x01, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27,
32370x00, 0x9F, 0x00, 0x4C, 0x22, 0x34, 0x09, 0xC0, 0x23, 0x00, 0x83, 0x00, 0x4C,
32380x02, 0xF0, 0x09, 0xC0, 0x67, 0x00, 0x9F, 0x00, 0x4C, 0xA2, 0xF0, 0x09, 0xC0,
32390x67, 0x00, 0x9B, 0x80, 0x7C, 0x02, 0xD2, 0x89, 0xC0, 0x27, 0x00, 0x93, 0x84,
32400x7C, 0x02, 0xB0, 0x08, 0xC0, 0x64, 0x00, 0x8F, 0x01, 0x6C, 0x02, 0xF0, 0x09,
32410xC0, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00,
32420x9D, 0x03, 0x44, 0x06, 0x10, 0x09, 0x40, 0x27, 0x00, 0x95, 0x00, 0x6C, 0x22,
32430xD0, 0x09, 0x40, 0xA7, 0x00, 0x8D, 0x00, 0x6C, 0x06, 0xD0, 0x09, 0x40, 0x27,
32440x00, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x09, 0xC4, 0x27, 0x00, 0x91, 0x03, 0x74,
32450x02, 0x50, 0x09, 0xC0, 0x66, 0x02, 0x9D, 0x09, 0x6C, 0x02, 0xD0, 0x09, 0x40,
32460x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x9D,
32470x04, 0x44, 0x02, 0x19, 0x09, 0x40, 0x27, 0x00, 0x91, 0x00, 0x44, 0x02, 0x58,
32480x09, 0x40, 0x27, 0x05, 0x9D, 0x00, 0x66, 0x02, 0x52, 0x8D, 0x40, 0x27, 0x01,
32490x99, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x26, 0x00, 0x90, 0x02, 0x74, 0x02,
32500x10, 0x09, 0x40, 0x24, 0x00, 0x9D, 0xC0, 0x44, 0x82, 0xD0, 0x09, 0x40, 0x63,
32510x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0xA0, 0x00, 0x8D, 0x04,
32520x04, 0x12, 0x10, 0x08, 0x40, 0x33, 0x01, 0x85, 0x04, 0x24, 0x12, 0xD0, 0x08,
32530x40, 0x23, 0x00, 0x9D, 0x00, 0x04, 0x02, 0xD0, 0x48, 0x40, 0x23, 0x01, 0x81,
32540x04, 0x34, 0x12, 0xD0, 0x08, 0x48, 0x21, 0x01, 0x81, 0x00, 0x34, 0x22, 0x50,
32550x08, 0x4A, 0x22, 0x00, 0x8D, 0x04, 0x26, 0x12, 0xD0, 0x48, 0x48, 0x43, 0x80,
32560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x5F, 0x0A, 0x4C,
32570x00, 0x31, 0x01, 0x40, 0x87, 0x02, 0x13, 0x00, 0x0C, 0x28, 0x70, 0xA1, 0xC0,
32580x87, 0x02, 0x1F, 0x0A, 0x64, 0x00, 0x70, 0x01, 0xC4, 0x07, 0x00, 0x1B, 0x0A,
32590x74, 0x28, 0xF0, 0x41, 0x41, 0x87, 0x42, 0x13, 0x0A, 0x7C, 0x08, 0xB0, 0x41,
32600xC1, 0x04, 0x00, 0x1F, 0x00, 0x4C, 0x28, 0xF0, 0x01, 0xC0, 0x77, 0xC0, 0x0A,
32610x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x98, 0x6F, 0x00, 0xBF, 0x28, 0xF5, 0x22,
32620xF0, 0x09, 0xC0, 0x2F, 0x02, 0xBF, 0x28, 0xFC, 0x22, 0xF0, 0x09, 0xC0, 0x27,
32630x00, 0xBE, 0x40, 0xBD, 0x02, 0xF0, 0x8B, 0xC0, 0x27, 0x02, 0x9F, 0x08, 0xFC,
32640x22, 0xF0, 0x09, 0xC2, 0x27, 0x02, 0x9F, 0x00, 0xFC, 0x12, 0xF0, 0x09, 0xC0,
32650x2F, 0x00, 0xBF, 0x08, 0x7C, 0x22, 0xF0, 0x89, 0xC0, 0x67, 0x60, 0x0E, 0x00,
32660x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x27, 0x00, 0xBF, 0x14, 0xCC, 0x12, 0xF0,
32670x09, 0xC0, 0x2F, 0x00, 0x93, 0x00, 0xFC, 0x12, 0x70, 0x0B, 0xC0, 0x2F, 0x02,
32680x8F, 0x00, 0xBC, 0x02, 0x32, 0x0B, 0xC0, 0x2C, 0x01, 0x9F, 0x14, 0x4C, 0x32,
32690x30, 0x0B, 0xC0, 0x24, 0x00, 0xB3, 0x08, 0x4C, 0x02, 0xF2, 0x49, 0xC1, 0x2F,
32700x00, 0xBF, 0x00, 0x7C, 0x02, 0x20, 0x0B, 0xC0, 0x60, 0x00, 0x0E, 0x00, 0x00,
32710x00, 0x00, 0x00, 0x1C, 0x08, 0x57, 0x05, 0x1D, 0x04, 0x44, 0x20, 0xD0, 0x01,
32720x48, 0x07, 0x04, 0x1B, 0x08, 0x74, 0x50, 0x10, 0x41, 0x40, 0x07, 0x81, 0x1D,
32730x50, 0x74, 0x00, 0x11, 0x81, 0xC0, 0x06, 0x00, 0x1D, 0x04, 0x45, 0x30, 0xB0,
32740x21, 0xC0, 0x06, 0x0C, 0x11, 0x00, 0x44, 0x50, 0xD0, 0x01, 0x40, 0x07, 0x00,
32750x1D, 0x02, 0x74, 0x40, 0x10, 0x01, 0xC0, 0x72, 0x20, 0x0C, 0x00, 0x00, 0x00,
32760x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D, 0x14, 0x05, 0x02, 0xD0, 0x08, 0x40,
32770x23, 0x02, 0x81, 0x01, 0x14, 0x32, 0x51, 0x48, 0x41, 0x23, 0x01, 0x8D, 0x05,
32780x74, 0x03, 0x10, 0x08, 0x40, 0x30, 0x02, 0x89, 0x14, 0x04, 0x12, 0x10, 0x88,
32790x40, 0x20, 0x42, 0x81, 0x00, 0x24, 0x12, 0x90, 0x08, 0x40, 0x23, 0x80, 0x8D,
32800x09, 0x34, 0x02, 0x14, 0x08, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
32810x00, 0x18, 0xA8, 0x25, 0x02, 0x9D, 0x04, 0x44, 0x12, 0xD0, 0x09, 0x40, 0x27,
32820x02, 0x99, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x74,
32830x02, 0x10, 0x29, 0x40, 0x24, 0x00, 0x8D, 0x00, 0x44, 0x22, 0x94, 0x09, 0x40,
32840x26, 0x00, 0xD1, 0x00, 0x64, 0x02, 0xD0, 0x09, 0x40, 0xA7, 0x00, 0x9D, 0x08,
32850x74, 0x02, 0x11, 0x09, 0x40, 0x62, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
32860x05, 0x08, 0x2D, 0x10, 0x9F, 0x01, 0x4C, 0x06, 0xF0, 0x09, 0x40, 0x27, 0x00,
32870x93, 0x01, 0x7C, 0x02, 0x70, 0x09, 0xC0, 0x27, 0x00, 0x9D, 0x00, 0x3C, 0x46,
32880x34, 0x09, 0x50, 0x24, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x30, 0x09, 0xC0, 0x24,
32890x00, 0x93, 0x00, 0x6D, 0x6E, 0xF0, 0x09, 0xC0, 0xA7, 0x00, 0x9F, 0x02, 0x78,
32900x02, 0x30, 0x09, 0xC0, 0x14, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
32910x00, 0x65, 0x00, 0x9F, 0x01, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F,
32920x83, 0x7E, 0x0E, 0xF0, 0x09, 0xC0, 0x27, 0x08, 0x9F, 0x49, 0x7C, 0x26, 0xF0,
32930x49, 0xC0, 0x27, 0x08, 0x9F, 0x20, 0x3C, 0x06, 0x71, 0x09, 0xC0, 0x23, 0x00,
32940x9F, 0x00, 0x5C, 0x82, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x01, 0x3C, 0x02,
32950xF0, 0x09, 0xC0, 0x53, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08,
32960x85, 0x00, 0x0F, 0x01, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x01, 0x1F, 0x00,
32970x7E, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x20, 0x1B, 0x00, 0x4F, 0x00, 0xB0, 0x01,
32980xC0, 0x06, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xC0, 0x07, 0x00, 0x1F,
32990x00, 0x6C, 0x00, 0xF0, 0x01, 0xC0, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0,
33000x01, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x14,
33010x00, 0x7D, 0x00, 0x74, 0x81, 0xD0, 0x05, 0xC0, 0x9D, 0x04, 0x5D, 0x00, 0x7E,
33020x01, 0xD0, 0x15, 0x40, 0x5F, 0x01, 0x51, 0x00, 0x44, 0x01, 0x14, 0x04, 0xD0,
33030x16, 0x00, 0x5D, 0x00, 0x74, 0x01, 0x10, 0x45, 0xC0, 0x14, 0x00, 0x7D, 0x10,
33040x44, 0x01, 0xD0, 0x05, 0x44, 0x17, 0x20, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x04,
33050x40, 0x53, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00,
33060xCD, 0x00, 0x34, 0x02, 0xDA, 0x0C, 0x48, 0x35, 0x20, 0xCD, 0x00, 0x74, 0x03,
33070xD0, 0x9C, 0x40, 0x33, 0x80, 0xC9, 0x20, 0x10, 0x02, 0x90, 0x8C, 0x40, 0x22,
33080x00, 0xCD, 0x00, 0x36, 0x03, 0x18, 0x08, 0x40, 0x31, 0x00, 0xDD, 0x01, 0x24,
33090x83, 0xD0, 0x0C, 0x40, 0x23, 0x82, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x08, 0x40,
33100x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x81, 0xED,
33110x00, 0xB4, 0x43, 0xD9, 0x0E, 0x40, 0x39, 0x00, 0xED, 0x00, 0x94, 0x43, 0xD0,
33120x0E, 0x40, 0x6B, 0x01, 0xF1, 0x05, 0xD4, 0x03, 0x10, 0x0F, 0x50, 0x3A, 0x00,
33130xED, 0x08, 0x34, 0x03, 0x18, 0x0E, 0x40, 0x39, 0x08, 0xED, 0x00, 0xA4, 0x03,
33140xC0, 0x0E, 0x40, 0x3B, 0x80, 0xED, 0x00, 0xB4, 0x13, 0xD0, 0x0E, 0x40, 0x13,
33150x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0xF8, 0x00, 0x2F, 0x01,
33160xBC, 0x07, 0xF0, 0x1E, 0xC0, 0x59, 0x00, 0xEF, 0x01, 0xB4, 0x06, 0xF0, 0x1E,
33170xE4, 0xFB, 0x00, 0xEB, 0x11, 0x94, 0x07, 0xB2, 0x1E, 0xD0, 0x7A, 0x00, 0xEF,
33180x15, 0xBC, 0x5F, 0x70, 0x1C, 0xC0, 0x79, 0x00, 0xFF, 0x01, 0xAC, 0x07, 0xE0,
33190x1E, 0xC0, 0x7B, 0x00, 0xEF, 0x01, 0xB4, 0x37, 0xF0, 0x1A, 0xC0, 0x53, 0x40,
33200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0xDF, 0x00, 0x7C,
33210x03, 0xF0, 0x0D, 0xC4, 0x15, 0x10, 0xDF, 0x00, 0x7C, 0x0A, 0xB0, 0x0D, 0xC0,
33220x03, 0x00, 0xDF, 0x08, 0x6C, 0x03, 0xF2, 0x0C, 0xD0, 0x37, 0x00, 0xDF, 0x20,
33230x7C, 0x03, 0xF4, 0x0D, 0xC0, 0x34, 0x07, 0x5F, 0x00, 0x5C, 0x03, 0xF0, 0x0D,
33240xC8, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x23, 0xF0, 0x0D, 0xC0, 0x43, 0x20, 0x06,
33250x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x7B, 0x00, 0xF3, 0x01, 0xCC, 0x07,
33260xFA, 0x8F, 0xC0, 0x6F, 0x02, 0xF3, 0x09, 0x8C, 0x0F, 0x30, 0x1F, 0xC0, 0x7F,
33270x00, 0xF3, 0x01, 0xEC, 0x07, 0x30, 0x1E, 0xC0, 0x7C, 0x30, 0xF7, 0x41, 0xCC,
33280x07, 0x70, 0x1F, 0xC4, 0x7C, 0x00, 0xF3, 0x01, 0xDC, 0x47, 0x72, 0x1F, 0xC8,
33290x7B, 0x22, 0xF7, 0xA1, 0xFC, 0x87, 0x32, 0x1B, 0xC2, 0x08, 0x00, 0x0E, 0x00,
33300x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x39, 0x00, 0x61, 0x40, 0x84, 0x03, 0x78,
33310x0E, 0x44, 0x2B, 0x10, 0xE1, 0x20, 0xAC, 0x03, 0x10, 0x0E, 0x40, 0x3B, 0x00,
33320xF1, 0x00, 0x84, 0x13, 0x50, 0x4E, 0x44, 0x39, 0x00, 0xF1, 0x00, 0xC4, 0x03,
33330x10, 0x0E, 0xC0, 0x3E, 0x02, 0xE1, 0x00, 0x86, 0x03, 0xF0, 0x0E, 0x40, 0x3B,
33340x40, 0xE5, 0x00, 0x34, 0x03, 0x10, 0x0E, 0x40, 0x54, 0x20, 0x06, 0x00, 0x00,
33350x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x25, 0x00, 0x84, 0x03, 0x50, 0x8E,
33360x40, 0x0B, 0x00, 0xC0, 0x20, 0x84, 0x02, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xE1,
33370x02, 0xC4, 0x03, 0x12, 0x0E, 0x60, 0x38, 0x00, 0xE5, 0x00, 0x84, 0x03, 0x10,
33380x0E, 0x40, 0x39, 0x00, 0xE1, 0x00, 0xD4, 0x03, 0x10, 0x0E, 0x40, 0x3F, 0x40,
33390xED, 0x00, 0x34, 0x03, 0x10, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
33400x00, 0x00, 0x06, 0x28, 0x33, 0x00, 0x41, 0x03, 0x05, 0x1B, 0x50, 0x0C, 0x40,
33410x43, 0x40, 0xC1, 0x02, 0x24, 0x02, 0x10, 0x0C, 0x40, 0x13, 0x00, 0xC1, 0x41,
33420x04, 0x03, 0x51, 0x0C, 0x60, 0x31, 0x00, 0xC1, 0x00, 0x05, 0x03, 0x10, 0x0C,
33430x40, 0x33, 0x00, 0x41, 0x00, 0x04, 0x0B, 0xD0, 0x0C, 0x40, 0x33, 0x02, 0x8D,
33440x42, 0x34, 0x03, 0x14, 0x0C, 0x50, 0x18, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
33450x00, 0x15, 0xA8, 0xB5, 0x42, 0xD7, 0x06, 0x0C, 0x03, 0x70, 0x0D, 0xC0, 0x27,
33460x04, 0xD3, 0x00, 0x4C, 0x02, 0x34, 0x0D, 0xC0, 0x3F, 0x40, 0xF1, 0x01, 0x0C,
33470x07, 0x30, 0xAC, 0x40, 0x30, 0x00, 0xF7, 0x00, 0xCC, 0x03, 0x30, 0x0D, 0xC0,
33480x3D, 0x00, 0xD3, 0x00, 0xDC, 0x23, 0x70, 0x0D, 0x40, 0xF7, 0x42, 0xDF, 0x02,
33490xFC, 0x03, 0x30, 0x09, 0xC0, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
33500x01, 0x00, 0x37, 0x00, 0x9F, 0x10, 0x7C, 0x03, 0x70, 0x0D, 0xC0, 0xA7, 0x00,
33510xDF, 0x01, 0x5C, 0x02, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0xDF, 0x08, 0x5C, 0x63,
33520xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x36,
33530x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x7C,
33540x03, 0xF0, 0x09, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
33550x08, 0x3F, 0x00, 0x33, 0x00, 0xFC, 0x03, 0x30, 0x0F, 0xC0, 0x07, 0x00, 0xF7,
33560x10, 0xFC, 0x02, 0x30, 0x5F, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0x30,
33570x9B, 0xC0, 0x34, 0x00, 0xE3, 0x00, 0xCC, 0x03, 0x30, 0x1D, 0xC0, 0x3F, 0x00,
33580xB3, 0x01, 0xFE, 0x03, 0xF0, 0x0F, 0xCA, 0xBF, 0x00, 0xFE, 0x10, 0xF4, 0x03,
33590x30, 0x5A, 0x80, 0x00, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20,
33600x36, 0x00, 0x95, 0x00, 0x74, 0x07, 0x10, 0x0D, 0x40, 0xC7, 0x04, 0xD1, 0x00,
33610x74, 0x26, 0x10, 0x1D, 0x40, 0x07, 0x00, 0xD9, 0x00, 0x74, 0x03, 0x10, 0x1D,
33620x50, 0x35, 0x00, 0xDB, 0x00, 0x44, 0x03, 0x10, 0x0D, 0x40, 0x37, 0x00, 0x91,
33630x03, 0x76, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0x20, 0xDD, 0x09, 0x74, 0x03, 0x10,
33640x09, 0xC0, 0x05, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x32,
33650x00, 0xD1, 0x01, 0x74, 0x23, 0x10, 0x0D, 0x40, 0x63, 0x00, 0xD5, 0x00, 0x34,
33660x03, 0x10, 0x09, 0x40, 0x37, 0x02, 0xDD, 0x00, 0x76, 0x07, 0x10, 0x0D, 0x40,
33670x74, 0x20, 0xD1, 0x00, 0x04, 0x03, 0x10, 0x4D, 0x40, 0x33, 0x28, 0xD1, 0x04,
33680x74, 0x03, 0xD0, 0x0D, 0x40, 0x36, 0x00, 0xDD, 0x00, 0x24, 0x03, 0x00, 0x09,
33690x40, 0x05, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00,
33700x05, 0x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x03, 0x00, 0xC1, 0x00, 0x34, 0x03,
33710x10, 0x08, 0x40, 0x33, 0x00, 0xC9, 0x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x30,
33720x00, 0xC9, 0x00, 0x05, 0x03, 0x10, 0x0C, 0x40, 0x33, 0x00, 0xC1, 0x00, 0x34,
33730x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCC, 0x00, 0x34, 0x23, 0x10, 0x08, 0x40,
33740x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x3E, 0x00, 0x03,
33750x00, 0x7C, 0x03, 0x30, 0x0D, 0xC0, 0x07, 0x00, 0xD7, 0x00, 0xFC, 0x02, 0x14,
33760x09, 0xC0, 0x23, 0x10, 0xFF, 0x00, 0x7C, 0x03, 0x34, 0x0D, 0xC0, 0x34, 0x00,
33770xF3, 0x00, 0xCC, 0x03, 0x30, 0x0D, 0xC0, 0x3F, 0x00, 0xC3, 0x20, 0x74, 0x03,
33780xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0xFC, 0x03, 0x30, 0x09, 0xC0, 0x01,
33790x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x3F, 0x00, 0x3F, 0x00,
33800xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0B,
33810x80, 0x0F, 0x00, 0xFA, 0x00, 0xBC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFF,
33820x00, 0xFC, 0x03, 0xF0, 0x0F, 0x80, 0x3F, 0x08, 0xFF, 0x00, 0xB0, 0x03, 0xF0,
33830x0F, 0xC8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x13, 0xF0, 0x0B, 0xC0, 0x15, 0x60,
33840x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xBF, 0x8C, 0xCC,
33850x12, 0x32, 0xCF, 0xC0, 0x5E, 0x22, 0xB3, 0x21, 0xFC, 0x06, 0xF0, 0xCF, 0xC4,
33860x3D, 0x03, 0x23, 0x01, 0xFC, 0x23, 0xF0, 0x13, 0xC0, 0x3F, 0x00, 0xFF, 0x4C,
33870xCC, 0x06, 0xB0, 0x17, 0xD8, 0x5C, 0x00, 0xF7, 0x04, 0xAC, 0x04, 0xB0, 0x4F,
33880xC1, 0x7A, 0x08, 0x3F, 0x01, 0xDC, 0x30, 0xB0, 0x1B, 0xC4, 0x0F, 0x00, 0x0E,
33890x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x77, 0x00, 0xDD, 0x0E, 0x44, 0x26,
33900x10, 0xEF, 0x40, 0x24, 0x01, 0xD1, 0x04, 0x74, 0x05, 0x70, 0x2F, 0x40, 0xBC,
33910x02, 0x91, 0x01, 0xF4, 0x1B, 0x90, 0x40, 0x40, 0xFF, 0x02, 0xFD, 0x08, 0x44,
33920xC3, 0x10, 0x19, 0x40, 0x34, 0x00, 0xF1, 0x01, 0x44, 0x05, 0x10, 0x3F, 0x40,
33930x74, 0x10, 0x1D, 0xA1, 0x34, 0x38, 0xB0, 0x1C, 0x40, 0x07, 0x20, 0x0C, 0x00,
33940x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x00, 0x8D, 0x04, 0x04, 0x02, 0x10,
33950x4C, 0x40, 0x32, 0x00, 0xC1, 0x10, 0x14, 0x02, 0xD0, 0x6C, 0x48, 0x33, 0x11,
33960x45, 0x00, 0x34, 0x0B, 0xD0, 0x00, 0x41, 0x33, 0x10, 0xC5, 0x44, 0x04, 0x13,
33970x90, 0x08, 0x40, 0x00, 0x05, 0xC9, 0x08, 0x64, 0x01, 0xD0, 0x0C, 0x40, 0x30,
33980x20, 0x05, 0x00, 0x14, 0x00, 0xD0, 0x04, 0x40, 0x47, 0x80, 0x0E, 0x00, 0x00,
33990x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00, 0xDD, 0x20, 0x44, 0x03, 0x10, 0x0D,
34000x40, 0xA4, 0x0A, 0xD1, 0x04, 0x74, 0x01, 0x50, 0x0D, 0x40, 0x34, 0x40, 0x95,
34010x02, 0x74, 0x03, 0xD1, 0x19, 0x42, 0x37, 0x00, 0xCD, 0x00, 0x44, 0x03, 0x90,
34020x08, 0x40, 0xB4, 0x01, 0xD9, 0x00, 0x64, 0x05, 0xD0, 0x0D, 0x50, 0x36, 0x04,
34030x1D, 0x18, 0x74, 0x01, 0xD0, 0x05, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00,
34040x00, 0x00, 0x00, 0xA8, 0x37, 0x00, 0x9F, 0x09, 0x0C, 0x03, 0x34, 0x0D, 0xC0,
34050xD6, 0x08, 0x93, 0x01, 0x5C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x10, 0xD7, 0x09,
34060x7C, 0x03, 0xF0, 0x21, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x4C, 0x83, 0xB1, 0x25,
34070xC9, 0x34, 0x40, 0xDB, 0x00, 0x6C, 0x17, 0xF0, 0x0D, 0xC0, 0xA6, 0x00, 0x1F,
34080x02, 0x5C, 0x16, 0xF0, 0x39, 0xC0, 0x03, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
34090x00, 0x07, 0x80, 0x3D, 0x00, 0xEF, 0xC1, 0x7C, 0x02, 0xF2, 0x0E, 0xC0, 0x6F,
34100x00, 0xFF, 0x80, 0xFC, 0x8D, 0xF0, 0x0F, 0xC0, 0x3B, 0x00, 0xBB, 0x00, 0xFC,
34110x03, 0xB0, 0x0F, 0xC8, 0x3F, 0x00, 0xFF, 0x10, 0xDD, 0x83, 0x70, 0x0B, 0xC0,
34120x3F, 0x00, 0xF7, 0x00, 0xDC, 0x03, 0x30, 0x0F, 0xC0, 0x3D, 0x00, 0x3F, 0x01,
34130xFC, 0x0E, 0xB4, 0x2F, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
34140x02, 0x08, 0x35, 0x01, 0x93, 0x40, 0x7C, 0x03, 0x30, 0x8D, 0xC0, 0x35, 0x08,
34150xDF, 0x00, 0x4C, 0x0B, 0xF0, 0x0D, 0xC0, 0x34, 0x88, 0xDF, 0x00, 0x5C, 0x03,
34160x70, 0x25, 0xC0, 0x34, 0x08, 0xDF, 0x00, 0x7C, 0x03, 0x30, 0x2D, 0xE2, 0x27,
34170x00, 0xDF, 0x04, 0x7C, 0x09, 0xF0, 0x0D, 0xC1, 0x25, 0x00, 0x57, 0x00, 0x5C,
34180x02, 0x30, 0x05, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
34190xA0, 0x34, 0x00, 0xD1, 0x05, 0x74, 0x83, 0x18, 0x1F, 0x40, 0x24, 0x00, 0xDD,
34200x10, 0x44, 0x81, 0xD0, 0x0F, 0xC0, 0x3E, 0x88, 0x9F, 0x00, 0xC4, 0x03, 0x10,
34210x0D, 0x42, 0x3C, 0x00, 0xFD, 0x00, 0x74, 0x03, 0xB0, 0x09, 0x40, 0x77, 0x00,
34220xED, 0x00, 0x36, 0x05, 0x10, 0x6E, 0x40, 0xB4, 0x02, 0x1B, 0x11, 0x4C, 0x03,
34230x40, 0x05, 0xC0, 0x4E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0,
34240xB2, 0x02, 0x81, 0x00, 0x34, 0x82, 0x10, 0x1C, 0x40, 0x65, 0x02, 0xCD, 0x01,
34250x04, 0x81, 0xD0, 0x0D, 0x40, 0x30, 0x08, 0x0D, 0x00, 0x14, 0x03, 0x52, 0x00,
34260x42, 0x32, 0x20, 0xCD, 0x43, 0x74, 0x02, 0x10, 0x0C, 0x40, 0x67, 0x02, 0xCD,
34270x03, 0x24, 0x03, 0x58, 0x0C, 0x44, 0x31, 0x08, 0x05, 0x01, 0x54, 0x11, 0x10,
34280x04, 0x40, 0x1C, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x78,
34290x00, 0xA1, 0x01, 0xB4, 0x06, 0x10, 0x1C, 0x40, 0x68, 0x00, 0xED, 0x01, 0x84,
34300x05, 0xD0, 0x1E, 0x48, 0x7A, 0x00, 0x35, 0x01, 0x84, 0x27, 0x10, 0x96, 0x50,
34310x7A, 0x00, 0xED, 0x19, 0xB4, 0x03, 0x10, 0x1A, 0x40, 0x6B, 0x00, 0xED, 0x01,
34320xF4, 0x05, 0x19, 0x1C, 0x40, 0x7C, 0x00, 0x39, 0x81, 0xA4, 0x24, 0x10, 0x1E,
34330x40, 0x1A, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00,
34340xC3, 0x04, 0x34, 0x02, 0x10, 0x0C, 0xC0, 0x31, 0x00, 0xDF, 0x00, 0x0D, 0x01,
34350xF8, 0x0D, 0xC0, 0x30, 0x02, 0x4D, 0x00, 0x5C, 0x07, 0x70, 0x2C, 0xC0, 0x32,
34360x02, 0xCF, 0x00, 0x7C, 0x23, 0x10, 0x08, 0x40, 0x23, 0x00, 0xCF, 0x14, 0x34,
34370x43, 0x70, 0x0C, 0xC0, 0x31, 0x00, 0xC7, 0x00, 0x1E, 0x03, 0x34, 0x04, 0xC2,
34380x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x39, 0x42, 0xFF,
34390x00, 0xFC, 0x03, 0xF0, 0x2F, 0xC1, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x01, 0xF0,
34400x0F, 0x81, 0x3F, 0x00, 0xFF, 0x00, 0x7C, 0x2B, 0xB0, 0x0F, 0xC0, 0x3D, 0x04,
34410xFF, 0x10, 0xF4, 0x13, 0xF0, 0x09, 0xC0, 0x2F, 0x00, 0xFF, 0x10, 0x7C, 0x21,
34420x70, 0x0F, 0xC0, 0x1F, 0x10, 0xEF, 0x00, 0xDC, 0x03, 0xF0, 0x07, 0xC0, 0x0B,
34430x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x00, 0x9F, 0x00,
34440x4C, 0x03, 0xF0, 0x6D, 0xC0, 0x27, 0x10, 0xDF, 0x00, 0x7C, 0x03, 0xB0, 0x0D,
34450xC0, 0x37, 0x05, 0x57, 0x00, 0x5C, 0x37, 0x34, 0x08, 0xC0, 0x36, 0x01, 0xDF,
34460x12, 0x4D, 0x03, 0x70, 0x0D, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF2,
34470x4C, 0xC1, 0x66, 0x00, 0x9B, 0x01, 0x4C, 0x01, 0xB0, 0x05, 0xC0, 0x57, 0x00,
34480x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x39, 0x00, 0xBD, 0x04, 0x85,
34490x0A, 0xD0, 0x0E, 0x40, 0x2B, 0x00, 0xED, 0x00, 0xB4, 0x01, 0x10, 0x8E, 0x40,
34500x3B, 0x01, 0x6D, 0x00, 0x9C, 0x13, 0x10, 0x0E, 0x40, 0x38, 0x03, 0xE7, 0x04,
34510x84, 0x03, 0xD0, 0x0A, 0x40, 0x2B, 0x08, 0xED, 0x14, 0xB4, 0x03, 0x70, 0x4E,
34520xC2, 0x3A, 0x40, 0x23, 0x00, 0x85, 0x00, 0xB0, 0x0E, 0x40, 0x4B, 0x20, 0x06,
34530x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x00, 0xED, 0x09, 0xA4, 0x17,
34540xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x07, 0x90, 0x5E, 0x40, 0x7B,
34550x02, 0xED, 0x31, 0x16, 0x07, 0x10, 0x1F, 0x42, 0x7A, 0x00, 0xE5, 0x01, 0x84,
34560x07, 0xD0, 0x1E, 0x40, 0x6B, 0x00, 0xED, 0x05, 0xB4, 0x07, 0x50, 0xDE, 0x40,
34570x69, 0x00, 0xE9, 0x81, 0x84, 0x87, 0x90, 0x16, 0x40, 0x0F, 0x00, 0x04, 0x00,
34580x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x04, 0x03, 0xD0,
34590x0C, 0x40, 0x23, 0x20, 0xDD, 0x40, 0x34, 0x45, 0x10, 0x0C, 0x40, 0x37, 0x08,
34600xCD, 0x06, 0x14, 0x03, 0x10, 0xBC, 0x40, 0x30, 0x00, 0xD5, 0x20, 0x04, 0x07,
34610xD0, 0x18, 0x40, 0x23, 0x00, 0xCD, 0x00, 0x34, 0x01, 0x50, 0x0C, 0x40, 0x53,
34620x30, 0xC1, 0x08, 0x04, 0x0B, 0x90, 0x04, 0x40, 0x4B, 0x20, 0x0C, 0x00, 0x00,
34630x00, 0x00, 0x00, 0x17, 0x88, 0x15, 0x00, 0x5F, 0x00, 0x6C, 0x41, 0xF0, 0x05,
34640xC0, 0x1F, 0x00, 0x5F, 0x00, 0xBC, 0x4D, 0xB0, 0x05, 0xC0, 0x17, 0x00, 0x6F,
34650x01, 0x5C, 0x01, 0x30, 0x37, 0xC0, 0x16, 0x00, 0x57, 0x80, 0x4C, 0x91, 0xF0,
34660x47, 0xC0, 0x9F, 0x00, 0x5F, 0x00, 0xBC, 0x15, 0x70, 0x04, 0xC0, 0x5D, 0x0C,
34670x7B, 0x03, 0xCC, 0x09, 0xA0, 0x07, 0xC0, 0x5F, 0x20, 0x06, 0x00, 0x00, 0x00,
34680x00, 0x00, 0x12, 0x00, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0,
34690x07, 0x00, 0x1F, 0x40, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00,
34700x7C, 0x00, 0xF0, 0x01, 0xC1, 0x07, 0x00, 0x17, 0x00, 0x7C, 0x00, 0xF0, 0x01,
34710xC0, 0x07, 0x00, 0x0F, 0x02, 0x7C, 0x40, 0x70, 0x21, 0x80, 0x86, 0x00, 0x17,
34720x12, 0x3C, 0x10, 0xF0, 0x01, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
34730x00, 0x10, 0x08, 0x27, 0x08, 0x8F, 0x40, 0x4D, 0x16, 0xF0, 0x99, 0xC0, 0xE7,
34740x00, 0x93, 0x09, 0x4D, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x97, 0x00, 0x5C,
34750x02, 0xF0, 0x29, 0xC0, 0x23, 0x00, 0x97, 0x00, 0x5C, 0x02, 0x34, 0x09, 0xC0,
34760x64, 0x06, 0x93, 0x03, 0x5C, 0xA2, 0x71, 0x99, 0xC0, 0x24, 0x00, 0x9F, 0x01,
34770x7C, 0x06, 0x30, 0x09, 0xC0, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
34780x01, 0x20, 0xA6, 0x00, 0xBD, 0x40, 0xC4, 0x06, 0x70, 0x09, 0x40, 0x63, 0x00,
34790x91, 0x01, 0x44, 0x02, 0x18, 0x09, 0x44, 0x27, 0x00, 0x99, 0x00, 0x44, 0x02,
34800xD0, 0x28, 0x40, 0x24, 0x08, 0x93, 0x20, 0x04, 0x02, 0x90, 0x08, 0x40, 0x60,
34810x00, 0x91, 0x04, 0x44, 0x4E, 0x10, 0x09, 0x50, 0x25, 0x10, 0x9D, 0x06, 0x74,
34820x06, 0x50, 0x09, 0x42, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
34830xA0, 0x24, 0x10, 0x9D, 0x00, 0x44, 0x0A, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x91,
34840x80, 0x44, 0x03, 0x10, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x54, 0x02, 0xD0,
34850x29, 0x40, 0x25, 0x00, 0x95, 0x00, 0x54, 0x02, 0x90, 0x09, 0x40, 0x24, 0x00,
34860x91, 0x00, 0x54, 0x02, 0x50, 0x29, 0x40, 0x24, 0x30, 0x9D, 0x08, 0x74, 0x52,
34870x10, 0x0D, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22,
34880x30, 0x00, 0x8D, 0x02, 0x04, 0x02, 0x58, 0x68, 0x40, 0xA7, 0x00, 0x81, 0x02,
34890x44, 0x0A, 0x10, 0x88, 0x40, 0x23, 0x02, 0x99, 0x00, 0x04, 0x22, 0xD0, 0x89,
34900x40, 0x20, 0x00, 0x89, 0x08, 0x44, 0x22, 0x90, 0x29, 0x40, 0xA4, 0x00, 0x81,
34910x00, 0x04, 0x02, 0x12, 0x08, 0x40, 0x21, 0x00, 0x8D, 0x00, 0x34, 0x22, 0x54,
34920x28, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x30, 0x06,
34930x00, 0x1F, 0x01, 0x4C, 0x04, 0xF0, 0x01, 0xC0, 0x07, 0x40, 0x13, 0x00, 0x0C,
34940x00, 0x14, 0x61, 0xC1, 0x87, 0x0D, 0x17, 0x00, 0x5C, 0x58, 0xF1, 0x21, 0xC0,
34950x05, 0x05, 0x07, 0x16, 0x5C, 0x88, 0x30, 0x01, 0xD0, 0x04, 0x40, 0x13, 0x54,
34960x5C, 0x80, 0x78, 0x41, 0xC1, 0x14, 0x10, 0x1F, 0x00, 0x3C, 0x58, 0x30, 0x01,
34970xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x38, 0x27, 0x08,
34980xBF, 0x03, 0xFC, 0x0A, 0xF0, 0x99, 0xC0, 0x6F, 0x08, 0xBF, 0x01, 0xFC, 0x06,
34990xF0, 0x49, 0xC0, 0x27, 0x09, 0xB7, 0x00, 0x7C, 0x12, 0xF0, 0x4B, 0xC2, 0x25,
35000x00, 0x97, 0x04, 0xFC, 0x12, 0x70, 0x1B, 0xC0, 0x6F, 0x30, 0x9F, 0x00, 0xFC,
35010x02, 0xF8, 0x09, 0xD2, 0x2B, 0x80, 0xAF, 0x00, 0xFC, 0x12, 0xF0, 0x1B, 0xC0,
35020x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2B, 0x00, 0xBF,
35030x13, 0xFC, 0x46, 0xF0, 0x0B, 0xC0, 0xAC, 0x00, 0xBF, 0x00, 0x7C, 0x0A, 0x30,
35040xC9, 0xC0, 0x26, 0x00, 0x9B, 0x00, 0x7C, 0x22, 0xF0, 0x0B, 0xC0, 0x24, 0x05,
35050xBF, 0x0C, 0x49, 0x02, 0xF2, 0x29, 0xC2, 0xAF, 0x00, 0xAF, 0x04, 0xFC, 0x02,
35060xF0, 0x4B, 0xC0, 0x2C, 0x00, 0xBF, 0x00, 0xFC, 0x22, 0xB0, 0x09, 0xC0, 0x67,
35070x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00, 0x1D, 0x07,
35080x74, 0x88, 0xD0, 0x51, 0x40, 0x44, 0x20, 0x1D, 0x05, 0x74, 0x04, 0x10, 0xC1,
35090x48, 0x84, 0x04, 0x11, 0x00, 0x74, 0x20, 0xD0, 0x45, 0x53, 0x04, 0x00, 0x1D,
35100x0C, 0x44, 0x40, 0xD0, 0x14, 0x40, 0x47, 0x00, 0x1D, 0x00, 0x74, 0x00, 0x10,
35110x81, 0x40, 0x14, 0x20, 0x5D, 0x20, 0x74, 0x20, 0x14, 0x11, 0x40, 0x73, 0x20,
35120x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D, 0x04, 0x34,
35130x02, 0xD0, 0x88, 0x41, 0x20, 0x00, 0x8D, 0x10, 0x34, 0x02, 0x10, 0x48, 0x40,
35140x22, 0x03, 0x89, 0x00, 0x34, 0x02, 0xD1, 0x48, 0x40, 0x20, 0x00, 0x8D, 0x04,
35150x26, 0x12, 0xD0, 0x08, 0x40, 0x23, 0x10, 0x8D, 0x08, 0x34, 0x02, 0xDC, 0x08,
35160x40, 0x20, 0x10, 0x8D, 0x00, 0x34, 0x02, 0x94, 0x48, 0x41, 0x43, 0x80, 0x0E,
35170x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x9D, 0x20, 0x74, 0x82,
35180xD0, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x04, 0x34, 0x02, 0x10, 0x09, 0x40, 0x20,
35190x00, 0x91, 0x10, 0x74, 0x02, 0xD0, 0x88, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x66,
35200x82, 0xD0, 0x89, 0x66, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x51, 0x09, 0x58,
35210x24, 0x00, 0x9D, 0x01, 0x74, 0x2A, 0x10, 0x69, 0x40, 0x63, 0x20, 0x06, 0x00,
35220x00, 0x00, 0x00, 0x00, 0x05, 0x28, 0x25, 0x00, 0xBF, 0x01, 0x7C, 0x06, 0xF0,
35230x0B, 0xD0, 0x2C, 0x03, 0xBF, 0x00, 0xFC, 0x02, 0x10, 0x09, 0xC0, 0x26, 0x00,
35240x9B, 0x00, 0x7C, 0x02, 0xF0, 0x39, 0xC0, 0x24, 0x00, 0x9D, 0x80, 0x64, 0x22,
35250xF0, 0x3B, 0xC0, 0x2F, 0x08, 0x9D, 0x00, 0x34, 0x4A, 0xF0, 0x09, 0x40, 0xA4,
35260x00, 0x9F, 0x03, 0x70, 0x06, 0xB0, 0x3B, 0xC4, 0x17, 0xA0, 0x04, 0x00, 0x00,
35270x00, 0x00, 0x00, 0x14, 0x00, 0x25, 0x00, 0x9F, 0x04, 0x7C, 0x12, 0xF0, 0x09,
35280xC4, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF4, 0x08, 0xC0, 0x27, 0x10, 0x9F,
35290x04, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x40, 0x5C, 0x06, 0xF8,
35300x19, 0xC2, 0x27, 0x01, 0x9F, 0x00, 0x7C, 0x22, 0xB0, 0x09, 0x05, 0x27, 0x80,
35310x9E, 0x10, 0x6C, 0x06, 0xF0, 0x19, 0xC0, 0x53, 0x00, 0x06, 0x00, 0x00, 0x00,
35320x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x13, 0x40, 0x7C, 0x00, 0xB4, 0x81, 0xC0,
35330x07, 0x00, 0x1F, 0x08, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x05, 0x00, 0x13, 0x02,
35340x7C, 0x00, 0xF0, 0xA1, 0xD0, 0x04, 0x00, 0x03, 0x00, 0x7C, 0x00, 0xF2, 0x21,
35350xC0, 0x04, 0x20, 0x13, 0x10, 0x5C, 0x98, 0xF0, 0x01, 0xD0, 0x84, 0x00, 0x1F,
35360x42, 0x2C, 0x00, 0x34, 0x21, 0xD0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
35370x00, 0x14, 0xA0, 0x1C, 0x01, 0x51, 0x01, 0xF4, 0x1D, 0x10, 0x15, 0x40, 0x17,
35380x00, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x40, 0x14, 0x00, 0x51, 0x00, 0x74,
35390x01, 0xD0, 0x97, 0xC0, 0x14, 0x00, 0x71, 0x03, 0x44, 0x01, 0x70, 0x05, 0x40,
35400x14, 0x00, 0x71, 0x01, 0xC4, 0x05, 0xD0, 0x16, 0x42, 0x1C, 0x00, 0x7D, 0x00,
35410xF4, 0x01, 0x14, 0x05, 0x40, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
35420x14, 0xA0, 0x62, 0x00, 0xC1, 0x00, 0x34, 0x1E, 0x10, 0x0D, 0x48, 0x33, 0x00,
35430xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x31, 0xC0, 0xC1, 0x00, 0x34, 0x03,
35440xD0, 0x2C, 0x40, 0x32, 0x40, 0xC1, 0x11, 0x14, 0x03, 0x50, 0x0C, 0x40, 0x32,
35450x02, 0x81, 0x00, 0x14, 0x05, 0x90, 0x18, 0x40, 0x60, 0x01, 0xC9, 0x02, 0x24,
35460x03, 0x14, 0x0C, 0x60, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
35470x80, 0x68, 0x00, 0xA1, 0x06, 0xB4, 0x06, 0x10, 0x8E, 0x40, 0x3B, 0x01, 0xAD,
35480x04, 0xB4, 0x13, 0xD0, 0x8E, 0x40, 0x38, 0x81, 0xE1, 0x00, 0xB4, 0x13, 0xD0,
35490x0E, 0x40, 0x78, 0x00, 0xC1, 0x10, 0x84, 0x13, 0x50, 0x5E, 0x40, 0x7A, 0x11,
35500xA1, 0x11, 0x86, 0x09, 0xD0, 0x2C, 0x42, 0xA8, 0x00, 0xED, 0x00, 0x34, 0x0B,
35510x10, 0x5F, 0x60, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10,
35520x68, 0x00, 0xE3, 0x07, 0xBC, 0x06, 0x30, 0x5A, 0xC0, 0xEB, 0x00, 0xEF, 0x03,
35530xB4, 0x0F, 0xF0, 0x1C, 0xC0, 0xF1, 0x00, 0xE1, 0x01, 0xBC, 0x17, 0xF0, 0x17,
35540xC4, 0x72, 0x00, 0xE3, 0x01, 0x9C, 0x17, 0x70, 0x3E, 0xC8, 0xFE, 0x40, 0xE3,
35550x01, 0x9C, 0x05, 0xB0, 0x1A, 0xC0, 0x68, 0x08, 0xED, 0x01, 0xAC, 0x05, 0x30,
35560x3E, 0xC0, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x25,
35570x50, 0x9F, 0x00, 0x3C, 0x02, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x80, 0x7C,
35580x03, 0xF0, 0x0D, 0xC2, 0xB7, 0x0D, 0xDF, 0x00, 0x7C, 0x4B, 0xF0, 0x05, 0xC0,
35590x37, 0x00, 0xDF, 0x00, 0x5C, 0x23, 0x72, 0x0D, 0xD0, 0x25, 0x00, 0xDF, 0x00,
35600x7E, 0x01, 0xF0, 0x09, 0xC4, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF4, 0x0C,
35610xC0, 0x43, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x6F, 0x00,
35620xFF, 0x09, 0xCC, 0x13, 0x30, 0x1F, 0xC0, 0x7B, 0x00, 0xF3, 0x01, 0xCC, 0x27,
35630x30, 0x5F, 0x80, 0x7F, 0x00, 0xFF, 0x01, 0xFC, 0x47, 0x30, 0x1B, 0xC0, 0x7C,
35640x00, 0xBF, 0x01, 0xCC, 0x07, 0xF0, 0x1E, 0xC0, 0x68, 0x0A, 0xB1, 0x0C, 0xFC,
35650x25, 0xF0, 0x1F, 0xC0, 0x78, 0x42, 0xF3, 0x01, 0xFC, 0x06, 0xF0, 0x1F, 0xC4,
35660x08, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x80, 0x29, 0x00, 0xBD,
35670x18, 0x84, 0x43, 0x11, 0x0A, 0x48, 0x3B, 0x00, 0xA1, 0x10, 0x84, 0x23, 0x10,
35680x0E, 0x48, 0x3B, 0x00, 0xED, 0x00, 0x34, 0x03, 0x10, 0x8B, 0x41, 0x38, 0x00,
35690x7D, 0x00, 0x94, 0x03, 0xD0, 0x4E, 0x40, 0x38, 0x03, 0xA1, 0x04, 0xB4, 0x09,
35700xD0, 0x8E, 0x40, 0x19, 0x02, 0xE1, 0x00, 0xB4, 0x0A, 0xF0, 0x8E, 0x40, 0x54,
35710x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0xED, 0x40,
35720xA7, 0x22, 0x14, 0x0A, 0x40, 0x2F, 0x06, 0xB1, 0x08, 0xC4, 0x07, 0x12, 0x4E,
35730x60, 0x3B, 0x00, 0xED, 0x02, 0xB4, 0x03, 0x90, 0x02, 0x50, 0x38, 0x02, 0xAD,
35740x00, 0xA4, 0x03, 0xD0, 0x1F, 0x49, 0x2C, 0x04, 0xE9, 0x88, 0xB4, 0x01, 0xD0,
35750x0A, 0x40, 0x38, 0x80, 0x61, 0x10, 0xB4, 0x01, 0xD0, 0x1F, 0x40, 0x60, 0x00,
35760x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x23, 0x00, 0x8D, 0x00, 0x24,
35770x06, 0x10, 0x09, 0x40, 0x77, 0x00, 0x81, 0x00, 0x04, 0x23, 0x10, 0x0C, 0x60,
35780x33, 0x00, 0xCD, 0x08, 0x34, 0x03, 0x91, 0x00, 0x41, 0x30, 0x00, 0x4D, 0x00,
35790x06, 0x03, 0xD2, 0x3C, 0x40, 0x60, 0x20, 0xC9, 0x00, 0x34, 0x09, 0xD0, 0x08,
35800x40, 0x31, 0x02, 0x01, 0x03, 0x30, 0x07, 0x50, 0x0C, 0x60, 0x18, 0x20, 0x0C,
35810x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x00, 0xDF, 0x01, 0x6C, 0x02,
35820x30, 0x0D, 0x40, 0xB7, 0x42, 0xD3, 0x21, 0x4D, 0x03, 0x14, 0x0F, 0xC2, 0x3F,
35830x00, 0xDF, 0x00, 0xF4, 0x03, 0x90, 0x1D, 0xC0, 0x34, 0x00, 0x5F, 0x00, 0xCD,
35840x17, 0xF0, 0x3D, 0xD0, 0xF4, 0x40, 0x9A, 0x00, 0x7C, 0x09, 0xF1, 0x0D, 0xC2,
35850xF0, 0x00, 0xD1, 0x23, 0x74, 0x07, 0xD0, 0x2D, 0x50, 0x74, 0x20, 0x06, 0x00,
35860x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xB7, 0x00, 0xDF, 0x00, 0x5C, 0x02, 0xF0,
35870x0D, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x43, 0xF0, 0x0D, 0xC0, 0x37, 0x00,
35880xDF, 0x00, 0x3C, 0x03, 0x72, 0x2D, 0xC0, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x03,
35890xF0, 0x0D, 0xC0, 0x37, 0x01, 0x97, 0x22, 0x7C, 0x0D, 0xE0, 0x0D, 0xC0, 0xB7,
35900x04, 0xDF, 0x20, 0x7C, 0x21, 0xF0, 0xCD, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00,
35910x00, 0x00, 0x00, 0x80, 0x08, 0x7F, 0x02, 0xFF, 0x00, 0x7C, 0x22, 0xF0, 0x0B,
35920xD0, 0x2C, 0x00, 0xF3, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xFF,
35930x00, 0xDC, 0x03, 0x30, 0x9B, 0xC0, 0x3F, 0x00, 0x7F, 0x01, 0xEE, 0x03, 0xF0,
35940x0F, 0xC1, 0x3F, 0x00, 0xEF, 0x05, 0xCC, 0x41, 0xF0, 0x0B, 0xC0, 0x3D, 0x00,
35950xFB, 0x10, 0x8C, 0x10, 0x30, 0x0F, 0xC0, 0x07, 0x20, 0x0C, 0x00, 0x00, 0x00,
35960x00, 0x00, 0x81, 0x20, 0xD6, 0x00, 0xDD, 0x09, 0x74, 0x0A, 0xD0, 0x0D, 0x40,
35970x64, 0x22, 0xD1, 0x20, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xDD, 0x00,
35980x74, 0x03, 0x10, 0x09, 0x40, 0x37, 0x00, 0x9D, 0x02, 0x7E, 0x03, 0xD0, 0x0D,
35990x40, 0x27, 0x00, 0xDD, 0x07, 0x44, 0x05, 0xD0, 0x38, 0xC8, 0x76, 0x01, 0x89,
36000x00, 0x54, 0x0C, 0x50, 0x0D, 0x42, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00,
36010x00, 0x01, 0xA0, 0x24, 0x04, 0x9D, 0x00, 0x74, 0x0B, 0xD2, 0x0D, 0x42, 0x34,
36020x40, 0xD1, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xDD, 0x00, 0x74,
36030x03, 0x10, 0x05, 0x41, 0x37, 0x80, 0x1D, 0x66, 0x74, 0x03, 0xD0, 0x0D, 0x40,
36040x27, 0x00, 0x9D, 0x00, 0x64, 0x07, 0xD2, 0x35, 0x40, 0x75, 0x00, 0xD1, 0x00,
36050x44, 0x02, 0x11, 0x0D, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
36060x10, 0x08, 0x30, 0x00, 0x8D, 0x20, 0x36, 0x03, 0xD0, 0x08, 0x40, 0x20, 0x00,
36070x81, 0x00, 0x34, 0x03, 0xD2, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x03,
36080x18, 0x04, 0x40, 0x33, 0xA0, 0x0D, 0x00, 0x14, 0x03, 0xD2, 0x0C, 0x48, 0x33,
36090x00, 0xCD, 0x00, 0x24, 0x03, 0xD0, 0x0C, 0x5A, 0x36, 0x00, 0xD1, 0x00, 0x14,
36100x00, 0x50, 0x0C, 0x40, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36110x20, 0x26, 0x00, 0x9F, 0x20, 0x7C, 0x01, 0xF0, 0x09, 0xE8, 0x24, 0x00, 0x93,
36120x40, 0xFC, 0x03, 0xF0, 0x0D, 0x40, 0x3F, 0x00, 0xDF, 0x00, 0xBC, 0x23, 0x34,
36130x01, 0xC0, 0x37, 0x00, 0x1F, 0x00, 0x64, 0x03, 0xF0, 0x0F, 0xC0, 0x27, 0x00,
36140xDF, 0x00, 0x6C, 0x01, 0xF0, 0x09, 0xC0, 0x35, 0x80, 0x5B, 0x80, 0x4E, 0x00,
36150x32, 0x0F, 0xC8, 0x07, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8,
36160x1F, 0x00, 0xBF, 0x00, 0xFC, 0x01, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0xAF, 0x20,
36170xBC, 0x03, 0xF0, 0x0F, 0xC8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x03,
36180xC0, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC2, 0x2F, 0x00, 0x3F,
36190x00, 0xDC, 0x00, 0xF0, 0x0A, 0xC0, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x80, 0xF8,
36200x0E, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xB0, 0x7F,
36210x00, 0x3F, 0x00, 0xEC, 0x07, 0x70, 0x03, 0xC0, 0x7D, 0x02, 0xF3, 0x09, 0xFC,
36220x10, 0xF0, 0x0B, 0xC0, 0x3C, 0x01, 0xBF, 0x21, 0xFC, 0x03, 0xF0, 0x0F, 0xC1,
36230x3F, 0x00, 0x3F, 0x18, 0xCD, 0x03, 0x30, 0x1F, 0xC0, 0x0F, 0x00, 0xFB, 0x00,
36240xFC, 0x03, 0xE0, 0x0F, 0xC0, 0x4C, 0x00, 0xF3, 0x00, 0xCC, 0x03, 0x30, 0x0F,
36250xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x77, 0x00,
36260x5D, 0x01, 0x44, 0x07, 0x10, 0xB1, 0x40, 0x33, 0x00, 0xC1, 0x04, 0x74, 0x06,
36270xD0, 0x29, 0x41, 0x3D, 0x00, 0xDD, 0x01, 0xF4, 0x07, 0xD0, 0x0E, 0x40, 0x77,
36280x00, 0x1D, 0x82, 0x44, 0x07, 0x10, 0x2F, 0x40, 0x67, 0x00, 0x51, 0x01, 0x74,
36290x07, 0xD0, 0x15, 0x40, 0x44, 0x00, 0x5B, 0x01, 0x44, 0x05, 0x10, 0x1D, 0x40,
36300x04, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x00, 0x0D,
36310x08, 0x04, 0x03, 0x50, 0x14, 0x68, 0x31, 0x01, 0xC1, 0x00, 0x34, 0x20, 0xD0,
36320x6C, 0x40, 0xB1, 0x04, 0xCD, 0x01, 0x34, 0x23, 0xD0, 0x4C, 0x41, 0x31, 0x02,
36330x0D, 0x05, 0x24, 0x03, 0x10, 0x2C, 0x40, 0x23, 0x00, 0x85, 0x00, 0x34, 0x02,
36340x50, 0x08, 0x40, 0x01, 0x00, 0x85, 0x20, 0x04, 0x03, 0x10, 0x0C, 0x40, 0x44,
36350x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x35, 0x80, 0x5D, 0x14,
36360x65, 0x03, 0x10, 0x01, 0x40, 0x37, 0x00, 0xD1, 0x00, 0x74, 0x00, 0xD0, 0x0D,
36370x40, 0x35, 0x20, 0xDD, 0x01, 0x74, 0x03, 0xD1, 0x0D, 0x40, 0x37, 0x00, 0x1D,
36380x00, 0x64, 0x43, 0x10, 0x0D, 0x44, 0x67, 0x00, 0xD5, 0x06, 0x74, 0x03, 0xD1,
36390x0D, 0x51, 0x45, 0x40, 0xDD, 0x00, 0x44, 0x03, 0x10, 0x8D, 0x40, 0x0C, 0x00,
36400x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0x37, 0x00, 0x9F, 0x01, 0x6C,
36410x07, 0x70, 0x01, 0xC0, 0x75, 0x40, 0xD3, 0x00, 0x7C, 0x11, 0xF0, 0x0D, 0xC0,
36420x35, 0x00, 0xDF, 0x01, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0x5F, 0x00,
36430x6C, 0x03, 0x30, 0x0D, 0xC0, 0xE7, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF0, 0x3D,
36440xC0, 0xC1, 0x84, 0xD7, 0x00, 0x4C, 0x07, 0x30, 0x0D, 0xC0, 0x08, 0x20, 0x0E,
36450x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0x6F, 0x00, 0xDC, 0x0B,
36460xF0, 0x0F, 0xC0, 0x7F, 0x02, 0xFF, 0x00, 0xFC, 0x0F, 0xF0, 0x0D, 0xE0, 0x3F,
36470x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC6, 0x3F, 0x80, 0x9F, 0x28, 0xDC,
36480x27, 0xF0, 0x0F, 0xC0, 0x2F, 0x40, 0x7B, 0x00, 0xFC, 0x03, 0xF0, 0x96, 0xC0,
36490x0E, 0x00, 0xE3, 0x00, 0xBC, 0x09, 0xF0, 0x1E, 0xC0, 0x1F, 0x00, 0x06, 0x00,
36500x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0x9F, 0x02, 0x4C, 0x03, 0xF0,
36510x05, 0xC0, 0x34, 0x00, 0xD3, 0x00, 0x5C, 0x05, 0x70, 0x0D, 0xC8, 0x35, 0x08,
36520xD3, 0x80, 0x7C, 0x07, 0xF1, 0x0D, 0xC2, 0x34, 0x00, 0x5F, 0x00, 0x0C, 0x23,
36530x30, 0x0D, 0xC0, 0xA3, 0x00, 0x97, 0x00, 0x7C, 0x03, 0xB0, 0x29, 0xC0, 0x04,
36540x00, 0xDF, 0x00, 0x4C, 0x03, 0x30, 0x2D, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00,
36550x00, 0x00, 0x00, 0x13, 0xA0, 0x34, 0x00, 0x5C, 0x00, 0x34, 0x3F, 0xD0, 0x0D,
36560xC0, 0x74, 0x01, 0xD1, 0x00, 0x44, 0x01, 0xD0, 0x9C, 0x48, 0x7C, 0x01, 0xD1,
36570x00, 0xF4, 0x03, 0xD0, 0x0F, 0x40, 0x3C, 0x01, 0x9D, 0x00, 0x6E, 0x03, 0xB0,
36580x4F, 0x40, 0x27, 0x08, 0xD1, 0x00, 0x74, 0x03, 0x10, 0x4D, 0xC0, 0x04, 0x00,
36590xDD, 0x00, 0x44, 0x93, 0x10, 0x0D, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00,
36600x00, 0x00, 0x03, 0x20, 0x32, 0x00, 0x0D, 0x00, 0x34, 0x0F, 0x90, 0x08, 0x40,
36610x34, 0x00, 0xC1, 0x00, 0x04, 0x00, 0x50, 0x08, 0x00, 0x31, 0x00, 0xC1, 0x00,
36620x34, 0x03, 0xD8, 0x0C, 0x40, 0x70, 0x00, 0x9D, 0x40, 0x04, 0x04, 0x90, 0x2C,
36630x41, 0x23, 0x00, 0xC5, 0x00, 0x36, 0x03, 0x10, 0x0C, 0x40, 0x42, 0x02, 0xCD,
36640x00, 0x24, 0x02, 0x10, 0x00, 0x40, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
36650x00, 0x04, 0x00, 0x7A, 0x08, 0xAD, 0x21, 0xB4, 0x07, 0xD2, 0x10, 0x40, 0xF8,
36660x02, 0xE1, 0x0B, 0x94, 0x26, 0xD0, 0x1A, 0x41, 0xF8, 0x00, 0xE0, 0x01, 0xB4,
36670x07, 0xD8, 0x3E, 0x40, 0x78, 0x00, 0x6D, 0x01, 0x84, 0x06, 0x90, 0x1E, 0x40,
36680x63, 0x80, 0xE1, 0x01, 0x34, 0x27, 0x10, 0x1C, 0x40, 0x48, 0x00, 0x4D, 0x01,
36690x24, 0x07, 0x10, 0x14, 0x42, 0x10, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
36700x12, 0x00, 0x32, 0x00, 0x0F, 0x00, 0x3C, 0x23, 0xF0, 0x0C, 0xC0, 0x30, 0x02,
36710xC3, 0x00, 0x1C, 0x03, 0x70, 0x8C, 0x40, 0x35, 0x00, 0xC1, 0x00, 0x3C, 0x23,
36720xF0, 0x0C, 0xC0, 0x30, 0x00, 0x8F, 0x00, 0x04, 0x11, 0x30, 0x8C, 0xC0, 0xB3,
36730x82, 0xC7, 0x00, 0x3C, 0x02, 0x30, 0x0C, 0xC0, 0x02, 0x00, 0x8F, 0x00, 0x2C,
36740x02, 0x30, 0x2C, 0xC0, 0x48, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
36750xA8, 0x3D, 0x00, 0xBF, 0x00, 0xFE, 0xA3, 0xF0, 0x83, 0xC0, 0x3F, 0x92, 0xFF,
36760x00, 0xEC, 0x83, 0xF0, 0x0F, 0xC0, 0xBF, 0x04, 0xFF, 0x00, 0xFC, 0x03, 0xF0,
36770x0F, 0xC0, 0x3F, 0x04, 0x7F, 0x08, 0xBC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00,
36780xFF, 0x00, 0xFC, 0x03, 0x75, 0x8F, 0xD0, 0x0F, 0x00, 0xFF, 0x00, 0x5C, 0x03,
36790xF0, 0x0F, 0xE0, 0x0B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0,
36800x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0x37, 0x00, 0xD3, 0x01,
36810x0C, 0x04, 0x30, 0x0D, 0xC0, 0xB5, 0x01, 0xDB, 0x00, 0x7C, 0x7B, 0xF0, 0xED,
36820xC1, 0x34, 0x00, 0xDF, 0x00, 0x6C, 0x03, 0xB8, 0x8D, 0xC1, 0x27, 0x00, 0xDF,
36830x01, 0x4C, 0x05, 0x10, 0x0D, 0xC4, 0x04, 0x00, 0xDF, 0x00, 0x4C, 0x03, 0x30,
36840x19, 0xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x98, 0x39,
36850x00, 0xED, 0x00, 0xB4, 0x03, 0xD2, 0x0E, 0x40, 0x3B, 0x00, 0xF1, 0x00, 0x85,
36860x02, 0x50, 0x0E, 0x40, 0x33, 0x01, 0xE1, 0x00, 0xB4, 0x03, 0xD0, 0x0C, 0x40,
36870x38, 0x01, 0xCD, 0x00, 0xA4, 0x83, 0x10, 0x4E, 0xC0, 0x2B, 0x00, 0xED, 0x00,
36880x84, 0x03, 0x10, 0x0E, 0x40, 0x08, 0x00, 0xED, 0x80, 0x84, 0x03, 0x10, 0x0E,
36890x40, 0x48, 0x68, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00,
36900xED, 0x01, 0xB4, 0x47, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xE1, 0x81, 0x84, 0x07,
36910x00, 0x1E, 0x41, 0x7B, 0x00, 0xE1, 0x03, 0xB4, 0x97, 0xD8, 0x5E, 0x40, 0x7A,
36920x00, 0xED, 0x01, 0x05, 0x07, 0x14, 0x5E, 0x44, 0x7B, 0x00, 0xC5, 0x01, 0x04,
36930x07, 0x90, 0x1C, 0x40, 0x4A, 0x00, 0xCD, 0x11, 0x04, 0x47, 0x10, 0x1C, 0x40,
36940x12, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x20, 0x33, 0xA0, 0xCD,
36950x1A, 0x34, 0x86, 0xD0, 0x0C, 0x41, 0x23, 0x02, 0xC1, 0x00, 0x04, 0x27, 0x5B,
36960x1D, 0x42, 0x33, 0x40, 0x41, 0x00, 0x34, 0x03, 0xD0, 0x0D, 0x50, 0x32, 0x00,
36970xCD, 0x06, 0x04, 0x07, 0x10, 0x0D, 0x40, 0xB1, 0x00, 0xCD, 0x00, 0x05, 0x07,
36980x94, 0x0C, 0x50, 0xF2, 0x04, 0xCD, 0x00, 0x05, 0x03, 0x14, 0x0C, 0x78, 0x5A,
36990x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x17, 0x00, 0x7F, 0x03,
37000x7C, 0x01, 0xF0, 0x77, 0x40, 0x57, 0x40, 0x53, 0x00, 0xCC, 0x05, 0x30, 0x05,
37010xC0, 0x17, 0x00, 0x73, 0xC1, 0x74, 0x01, 0xF0, 0x05, 0xC8, 0x16, 0x10, 0x7F,
37020x02, 0xEC, 0x11, 0xB0, 0x05, 0x40, 0x1F, 0x00, 0x7F, 0x00, 0xCC, 0x15, 0xB0,
37030x07, 0xC0, 0xDA, 0x09, 0x7F, 0x03, 0xCC, 0x05, 0x30, 0x27, 0xC0, 0x5E, 0x20,
37040x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x00, 0x0F, 0x00, 0x74,
37050x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0,
37060x07, 0x00, 0x17, 0x01, 0x3C, 0x00, 0xF0, 0x01, 0xC0, 0x05, 0xA0, 0x1B, 0x00,
37070x3E, 0x04, 0x70, 0x01, 0xC0, 0x07, 0x04, 0x1F, 0x00, 0x7C, 0x00, 0x74, 0x01,
37080xC0, 0x85, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xC0, 0x49, 0x00, 0x06,
37090x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x02,
37100xF0, 0x08, 0xD4, 0x24, 0x00, 0x93, 0x02, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x26,
37110x40, 0x93, 0x00, 0x4C, 0x02, 0xB0, 0x09, 0xD0, 0x24, 0x00, 0x9F, 0x00, 0x4C,
37120x82, 0x30, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x7C, 0x42, 0xF0, 0x08, 0xC0,
37130x24, 0x00, 0x93, 0x10, 0x4C, 0x02, 0x34, 0x09, 0xC1, 0x43, 0x20, 0x04, 0x00,
37140x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x00, 0x44, 0x06, 0xD0,
37150x09, 0x40, 0x20, 0x00, 0x91, 0x10, 0x74, 0x02, 0xD0, 0x19, 0x48, 0xA4, 0x00,
37160x81, 0x00, 0x44, 0x02, 0x10, 0x29, 0xC0, 0x26, 0x00, 0x9D, 0x00, 0x44, 0x02,
37170xB0, 0x09, 0xC0, 0xA6, 0x00, 0x9D, 0x02, 0x5C, 0x0A, 0xD0, 0x29, 0x40, 0x24,
37180x00, 0x91, 0x02, 0x4C, 0x0A, 0x10, 0x29, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00,
37190x00, 0x00, 0x00, 0x1C, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x44, 0x06, 0xD0, 0x09,
37200x48, 0x64, 0x00, 0x91, 0x00, 0x74, 0x06, 0x50, 0x89, 0x40, 0x62, 0x84, 0x99,
37210x00, 0x44, 0x06, 0x10, 0x19, 0x63, 0x64, 0x80, 0x8D, 0x00, 0x44, 0x02, 0x10,
37220x09, 0x42, 0x24, 0x04, 0x91, 0x10, 0x74, 0x42, 0xD0, 0x09, 0x51, 0x24, 0x00,
37230x99, 0x30, 0x44, 0xC3, 0x10, 0x09, 0x41, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00,
37240x00, 0x00, 0x14, 0x28, 0x20, 0x00, 0x8D, 0x04, 0x04, 0x02, 0xD0, 0x48, 0x40,
37250x34, 0x40, 0x81, 0x00, 0x34, 0x12, 0xD0, 0x4C, 0x40, 0x20, 0x81, 0x99, 0x00,
37260x04, 0x12, 0x10, 0x48, 0x40, 0x20, 0x21, 0x8D, 0x04, 0x06, 0x12, 0x90, 0x4C,
37270x48, 0x20, 0x01, 0x8D, 0x04, 0x14, 0x12, 0xD8, 0x48, 0x60, 0x20, 0x00, 0x89,
37280xC4, 0x04, 0x12, 0x10, 0x48, 0x60, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00,
37290x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x00, 0x4C, 0x01, 0xF0, 0x01, 0xC0, 0x80,
37300x02, 0x13, 0x0A, 0x74, 0x00, 0x70, 0xA1, 0xC0, 0x86, 0x22, 0x19, 0x00, 0x45,
37310x00, 0x30, 0xA1, 0x40, 0x04, 0x00, 0x1F, 0x0A, 0x4D, 0x00, 0x30, 0xA1, 0x40,
37320x04, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF1, 0x01, 0xC8, 0x14, 0x00, 0x13, 0x00,
37330x4C, 0x00, 0x30, 0x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
37340x19, 0xA8, 0x27, 0x00, 0xBF, 0x88, 0xFD, 0x02, 0xF0, 0x8B, 0x80, 0x2F, 0x00,
37350x9F, 0x00, 0xFC, 0xA2, 0xF0, 0x8B, 0xC0, 0x27, 0x42, 0xB7, 0x00, 0x7C, 0x22,
37360xF4, 0x89, 0xC0, 0x27, 0x22, 0xBF, 0x08, 0xFC, 0x22, 0x74, 0x89, 0xD0, 0x2F,
37370x02, 0xBF, 0x08, 0xDC, 0x22, 0xF1, 0x8B, 0xC0, 0x2F, 0x40, 0xB7, 0x28, 0xDD,
37380x22, 0xF0, 0x8B, 0xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
37390xA8, 0x27, 0x00, 0x9F, 0x04, 0xFE, 0x02, 0xF0, 0x09, 0xC0, 0x2F, 0x02, 0xBF,
37400x00, 0xDC, 0x52, 0xB0, 0xCA, 0xC8, 0x2E, 0x08, 0xBF, 0xA0, 0xDC, 0x82, 0x32,
37410x4B, 0xC2, 0x6F, 0x01, 0xDF, 0x0C, 0xFC, 0x02, 0x34, 0x0B, 0xC0, 0x26, 0x00,
37420x93, 0x04, 0x5C, 0x52, 0xF0, 0x49, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x7C, 0x02,
37430x30, 0x49, 0xC0, 0x63, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08,
37440x07, 0x00, 0x1D, 0x08, 0x74, 0x00, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x14,
37450x74, 0x00, 0xD0, 0xC1, 0x40, 0x84, 0x04, 0x1D, 0x00, 0x5C, 0x20, 0x10, 0x41,
37460x43, 0x07, 0x00, 0x1D, 0x0C, 0x74, 0x08, 0x10, 0x01, 0x41, 0x04, 0x42, 0x13,
37470x00, 0x44, 0x00, 0xD0, 0x81, 0x40, 0x04, 0x00, 0x1D, 0x00, 0x7C, 0x20, 0x10,
37480x03, 0x40, 0x73, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21,
37490x00, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x88, 0x40, 0x23, 0x00, 0x8D, 0x04, 0x34,
37500x02, 0x90, 0x48, 0x40, 0x22, 0x03, 0x8D, 0x00, 0x34, 0x02, 0x10, 0xC8, 0x40,
37510x23, 0x02, 0x8D, 0x44, 0x34, 0x22, 0x12, 0x88, 0x48, 0x28, 0x80, 0xA1, 0x09,
37520xB4, 0x06, 0xD0, 0x1A, 0x40, 0x28, 0x00, 0xAD, 0x89, 0xB4, 0x06, 0x10, 0x9A,
37530x40, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00,
37540x9D, 0x00, 0x74, 0x06, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x02,
37550xD0, 0x0D, 0x60, 0x24, 0x00, 0x9D, 0x02, 0x74, 0x02, 0x10, 0x09, 0x40, 0x27,
37560x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x0D, 0x40, 0xA4, 0x00, 0xB9, 0x00, 0xE4,
37570x02, 0xD0, 0x4B, 0x40, 0x2C, 0x00, 0xBC, 0x40, 0xF4, 0x02, 0x10, 0x8B, 0x40,
37580x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00, 0x9F,
37590x00, 0x74, 0x02, 0xF0, 0x19, 0x40, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x6A, 0x90,
37600x09, 0xC0, 0x26, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00,
37610x9F, 0x00, 0x7C, 0x22, 0x30, 0x09, 0xD0, 0x60, 0x00, 0x93, 0x0B, 0x7C, 0x0A,
37620xF0, 0x39, 0xD0, 0x64, 0x04, 0x9F, 0x02, 0x7C, 0x0A, 0x34, 0x39, 0xC0, 0x17,
37630xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x25, 0x00, 0x9F, 0x20,
37640x7C, 0x42, 0xF0, 0x49, 0xC0, 0x67, 0x02, 0x9F, 0x00, 0x7C, 0x02, 0xD0, 0x98,
37650xC0, 0x27, 0x00, 0x9F, 0x09, 0x1C, 0x02, 0xF4, 0x09, 0xC0, 0x27, 0x80, 0x9F,
37660x00, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0x25, 0x01, 0x87, 0x01, 0x5C, 0x16, 0xF0,
37670x19, 0xC0, 0x67, 0x01, 0x9E, 0x05, 0x5C, 0x02, 0xF0, 0x19, 0xC0, 0x4B, 0x00,
37680x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x4C,
37690x80, 0xF2, 0x01, 0xC2, 0x04, 0x04, 0x1F, 0x00, 0x7C, 0x08, 0x30, 0x01, 0xC0,
37700x07, 0x04, 0x13, 0x00, 0x6C, 0x00, 0xF0, 0x01, 0xD0, 0x04, 0x00, 0x1F, 0x00,
37710x4C, 0x80, 0xB0, 0x01, 0xC0, 0x06, 0x00, 0x17, 0x00, 0x7C, 0x00, 0x70, 0x00,
37720xC0, 0x04, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0xF2, 0x01, 0xC0, 0x43, 0x20, 0x04,
37730x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x14, 0x20, 0x5D, 0x00, 0xD0, 0x11,
37740x70, 0x05, 0x40, 0x9C, 0x00, 0x7D, 0x11, 0x74, 0x01, 0x00, 0x37, 0xC1, 0x5E,
37750x00, 0x51, 0x05, 0x40, 0x05, 0xD0, 0x17, 0x40, 0x54, 0x00, 0x5D, 0x00, 0x44,
37760x01, 0x30, 0x07, 0x40, 0x14, 0x00, 0x51, 0x00, 0x74, 0x01, 0x50, 0x05, 0x50,
37770x14, 0x10, 0x5D, 0x21, 0x54, 0x01, 0xD0, 0x15, 0x40, 0x53, 0x00, 0x02, 0x00,
37780x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x04, 0x0D, 0x50,
37790x0C, 0x40, 0x30, 0x00, 0xCD, 0x00, 0x34, 0x06, 0x10, 0x34, 0x51, 0x71, 0x00,
37800x81, 0x01, 0x34, 0x26, 0xD0, 0x1C, 0x40, 0x60, 0x02, 0xCD, 0x00, 0x04, 0x22,
37810x10, 0x85, 0x40, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x32,
37820x00, 0xC9, 0x01, 0x04, 0x03, 0xD0, 0x1C, 0x60, 0x53, 0x00, 0x0A, 0x00, 0x00,
37830x00, 0x00, 0x00, 0x01, 0x88, 0x38, 0x00, 0xED, 0x21, 0x84, 0x03, 0x50, 0x1E,
37840x40, 0x38, 0xA0, 0xED, 0x00, 0x34, 0x0F, 0x10, 0x06, 0x40, 0x7A, 0x44, 0xA1,
37850x01, 0x94, 0x03, 0xD0, 0x1E, 0x41, 0x38, 0x00, 0xCD, 0x09, 0x04, 0x02, 0x10,
37860x06, 0x40, 0x32, 0x00, 0xE9, 0x00, 0xB4, 0x07, 0x50, 0x0A, 0x40, 0x2A, 0x00,
37870xCD, 0x11, 0x94, 0x02, 0xD0, 0x0E, 0x41, 0x07, 0x20, 0x02, 0x00, 0x00, 0x00,
37880x00, 0x00, 0x11, 0x10, 0x78, 0x00, 0xCF, 0x01, 0x85, 0x07, 0x70, 0x1C, 0xD0,
37890x58, 0x00, 0x2F, 0x01, 0xBC, 0x07, 0x34, 0x16, 0xC0, 0x5D, 0x00, 0xA1, 0x01,
37900xBC, 0x07, 0xF0, 0x17, 0xC0, 0x78, 0x00, 0xEE, 0x11, 0x8D, 0x06, 0x39, 0x14,
37910xC0, 0x5A, 0x00, 0x6F, 0x01, 0x3C, 0x05, 0x70, 0x14, 0xC0, 0x5A, 0x00, 0x6D,
37920x01, 0x8C, 0x05, 0xF0, 0x16, 0xC4, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
37930x00, 0x10, 0xA8, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x70, 0x0D, 0xC0, 0x07,
37940x00, 0x1F, 0x00, 0x7C, 0x03, 0x78, 0x01, 0xC8, 0x07, 0x00, 0x8F, 0x00, 0x6C,
37950x03, 0xF0, 0x05, 0xC0, 0x37, 0x00, 0xDF, 0x82, 0x7E, 0x02, 0x74, 0x07, 0xC4,
37960x15, 0x00, 0x57, 0x00, 0x7C, 0x01, 0xB4, 0x01, 0xC0, 0x05, 0x00, 0x5F, 0x20,
37970x6D, 0x00, 0xF0, 0x05, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
37980x00, 0x20, 0x7D, 0x00, 0xFF, 0x01, 0x8C, 0x13, 0x70, 0x1F, 0xC0, 0x7F, 0x00,
37990xF3, 0x01, 0xCC, 0x07, 0x30, 0x17, 0xC2, 0x6F, 0x10, 0xF2, 0x01, 0xFC, 0x07,
38000xF0, 0x1B, 0xC0, 0x7C, 0x20, 0xF7, 0x81, 0xFC, 0x06, 0xF0, 0x13, 0xC2, 0x79,
38010x00, 0xF3, 0x01, 0xFC, 0x07, 0x30, 0x1F, 0xC8, 0x7F, 0x00, 0xBB, 0x01, 0xCC,
38020x87, 0x30, 0x1B, 0xC0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
38030x18, 0x39, 0x00, 0xED, 0x08, 0x8C, 0x03, 0x10, 0x0E, 0x40, 0x1F, 0x00, 0xE1,
38040x08, 0x84, 0x03, 0x14, 0x02, 0x40, 0x1B, 0x01, 0xE1, 0x00, 0xB4, 0x03, 0xD0,
38050x0A, 0x40, 0x38, 0x00, 0xE1, 0x10, 0xB4, 0x13, 0x10, 0x42, 0x40, 0x38, 0x01,
38060xE1, 0x00, 0x9C, 0x03, 0x10, 0x4A, 0x40, 0x2B, 0x20, 0xA1, 0x00, 0xAC, 0x02,
38070x10, 0x0A, 0x40, 0x54, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38080x39, 0x00, 0xED, 0x10, 0xA4, 0x23, 0x50, 0x0E, 0x41, 0x3B, 0x44, 0x61, 0x00,
38090x84, 0x03, 0x50, 0x06, 0x40, 0x2B, 0x00, 0xE1, 0x00, 0xB4, 0x23, 0xD0, 0x02,
38100x40, 0x38, 0x00, 0xE5, 0x00, 0x34, 0x02, 0x50, 0x02, 0x60, 0x19, 0x10, 0x61,
38110x00, 0xB4, 0x01, 0x90, 0x06, 0x44, 0x1F, 0x02, 0x01, 0x00, 0x84, 0x01, 0x10,
38120x00, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x31,
38130x20, 0xCD, 0x03, 0x24, 0x03, 0x10, 0x0C, 0x40, 0x03, 0x00, 0x51, 0x00, 0x04,
38140x4B, 0x50, 0x00, 0x40, 0x03, 0x00, 0xC1, 0x43, 0x36, 0x03, 0xD0, 0x00, 0x40,
38150x30, 0x00, 0xC1, 0x03, 0x34, 0x0B, 0x10, 0x00, 0x40, 0x90, 0x40, 0x41, 0x42,
38160x14, 0x01, 0x90, 0x20, 0x40, 0x83, 0x2E, 0x01, 0x02, 0x24, 0x08, 0x10, 0x00,
38170x40, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x00,
38180xDF, 0x03, 0x6D, 0x03, 0x70, 0x3D, 0xC0, 0x67, 0x00, 0xD3, 0x00, 0x4D, 0x0B,
38190x70, 0x0D, 0xC2, 0x37, 0x40, 0x93, 0x01, 0x3C, 0x03, 0xF0, 0x0D, 0xD0, 0x30,
38200x00, 0xF7, 0x23, 0x7C, 0x0A, 0x70, 0x05, 0xC0, 0xA1, 0x00, 0x93, 0x03, 0x7C,
38210x06, 0xB0, 0x3D, 0xC0, 0xF7, 0x00, 0xD3, 0xA3, 0x4D, 0x8F, 0x34, 0x1D, 0xD0,
38220x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xDF,
38230x04, 0x5C, 0x0F, 0xF0, 0x0D, 0xC0, 0x37, 0x08, 0x5F, 0x00, 0x3C, 0x03, 0xB0,
38240x09, 0xC0, 0x37, 0x20, 0x9F, 0x08, 0x7C, 0x83, 0xF0, 0x05, 0xC0, 0x37, 0x00,
38250xCF, 0x04, 0x7C, 0x02, 0x70, 0x20, 0xC0, 0x27, 0x04, 0x8F, 0x11, 0x1C, 0x46,
38260x74, 0x19, 0xC1, 0x27, 0x00, 0xD7, 0x01, 0x5C, 0x06, 0xF0, 0x1D, 0xC0, 0x07,
38270x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x3F, 0x00, 0xDF, 0x00,
38280xFC, 0x03, 0xF0, 0x0E, 0xC1, 0x0C, 0x08, 0xBF, 0x03, 0x4C, 0x03, 0x30, 0x0E,
38290xD0, 0x14, 0x00, 0xBF, 0x19, 0xCC, 0x17, 0x30, 0x89, 0xC0, 0x34, 0x00, 0xF7,
38300x00, 0xCC, 0x42, 0xF0, 0x05, 0xC0, 0x8E, 0x00, 0x37, 0x08, 0x68, 0x20, 0x30,
38310x07, 0xC0, 0x1F, 0x00, 0x7F, 0x10, 0x7C, 0x41, 0xF0, 0x07, 0xC0, 0x13, 0x22,
38320x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x36, 0x00, 0xDD, 0x00, 0x74,
38330x0F, 0xD0, 0x0D, 0xC0, 0x46, 0x00, 0x1D, 0x01, 0x44, 0x27, 0x10, 0x31, 0x40,
38340x04, 0x00, 0x8D, 0x01, 0x44, 0x07, 0x10, 0x01, 0x40, 0x34, 0x00, 0xDB, 0x00,
38350x44, 0x02, 0xD0, 0x19, 0x40, 0x44, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01,
38360x40, 0x07, 0x00, 0x5D, 0x00, 0x74, 0x00, 0xD0, 0x05, 0x40, 0x17, 0x02, 0x08,
38370x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0x74, 0x0F,
38380xD0, 0x0D, 0x40, 0x24, 0x01, 0x9D, 0x10, 0x54, 0x03, 0x14, 0x1D, 0x40, 0x24,
38390x20, 0x9D, 0x00, 0x46, 0x03, 0x10, 0x0C, 0x41, 0x36, 0x02, 0xD0, 0x00, 0x44,
38400x02, 0xD8, 0x11, 0x40, 0x27, 0x00, 0x95, 0x00, 0x74, 0x02, 0x50, 0x0D, 0x40,
38410x37, 0x00, 0x98, 0x00, 0x74, 0x03, 0xD0, 0x09, 0x40, 0x07, 0x00, 0x02, 0x00,
38420x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x30, 0x80, 0xCD, 0x00, 0x34, 0x03, 0xD0,
38430x0C, 0x50, 0x12, 0x00, 0x0D, 0x00, 0x14, 0x03, 0x10, 0x08, 0x40, 0x10, 0x00,
38440x9D, 0x00, 0x04, 0x03, 0x10, 0x04, 0x48, 0x30, 0x00, 0xC9, 0x00, 0x04, 0x03,
38450xD0, 0x00, 0x40, 0x25, 0x00, 0x81, 0x00, 0x15, 0x02, 0x54, 0x08, 0x40, 0x23,
38460x80, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x43, 0xA0, 0x00, 0x00, 0x00,
38470x00, 0x00, 0x00, 0x00, 0xB0, 0x36, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
38480xC0, 0x24, 0x00, 0x8F, 0x00, 0x5D, 0x03, 0x14, 0x05, 0xC0, 0x24, 0x20, 0x9E,
38490x00, 0x4D, 0x03, 0x34, 0x09, 0xD0, 0x34, 0x00, 0xF7, 0x00, 0x4D, 0x02, 0xF0,
38500x01, 0xC0, 0x07, 0x00, 0x17, 0x00, 0x7C, 0x00, 0x70, 0x05, 0xC8, 0x17, 0x10,
38510x1F, 0x00, 0x7C, 0x01, 0xF0, 0x01, 0xC0, 0x03, 0xC0, 0x0A, 0x00, 0x00, 0x00,
38520x00, 0x00, 0x05, 0xA8, 0x3F, 0x20, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC0,
38530x0D, 0x00, 0x3F, 0x00, 0xEC, 0x03, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0xBF, 0x00,
38540xFC, 0x03, 0xF0, 0x03, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B,
38550xC0, 0x0E, 0x00, 0x3F, 0x20, 0xEC, 0x00, 0xB0, 0x03, 0xC0, 0x0B, 0x00, 0x3F,
38560x40, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x17, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
38570x00, 0x03, 0xA0, 0x2F, 0x00, 0xBF, 0x00, 0xCC, 0x03, 0xB0, 0x1B, 0xC0, 0x2F,
38580x21, 0xF3, 0x24, 0xEC, 0x25, 0xF0, 0x1F, 0xD0, 0x3C, 0x00, 0xFB, 0x88, 0xCC,
38590x84, 0xB0, 0x4F, 0xC0, 0x7F, 0x22, 0x2F, 0x01, 0xF4, 0x05, 0x30, 0x0B, 0xC1,
38600xEF, 0x00, 0x2F, 0x01, 0xEC, 0x04, 0x30, 0x12, 0xC0, 0x5E, 0x08, 0x2F, 0x01,
38610xCE, 0x0D, 0x30, 0x0B, 0xC0, 0x0D, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
38620x01, 0x00, 0x27, 0x10, 0x9D, 0x01, 0x44, 0x0F, 0x10, 0x15, 0x40, 0x67, 0x00,
38630xD1, 0x14, 0x44, 0x02, 0xD0, 0x4D, 0x40, 0xBC, 0x04, 0xF1, 0x0E, 0x44, 0x07,
38640x10, 0xBF, 0x40, 0x37, 0x00, 0x17, 0x94, 0x64, 0x05, 0x10, 0x39, 0x40, 0x37,
38650x11, 0x5D, 0x21, 0x44, 0x05, 0x51, 0x19, 0x40, 0x75, 0x30, 0x1D, 0x21, 0x46,
38660x02, 0x10, 0x11, 0xC0, 0x0D, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
38670xA0, 0x23, 0x00, 0x0D, 0x80, 0x05, 0x0B, 0xD8, 0x08, 0x40, 0x23, 0x02, 0xC1,
38680x0C, 0x24, 0x02, 0x50, 0x08, 0x41, 0xB0, 0x81, 0xC9, 0x04, 0x54, 0x07, 0x90,
38690x0C, 0x40, 0x33, 0x11, 0x0D, 0x00, 0x74, 0x00, 0x10, 0x0C, 0x44, 0x31, 0x01,
38700x49, 0x00, 0x24, 0x00, 0x12, 0x0D, 0x44, 0x31, 0x00, 0x1D, 0x40, 0x64, 0x13,
38710x90, 0x08, 0x40, 0x4D, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8,
38720x65, 0x00, 0x9D, 0x11, 0x44, 0x03, 0x18, 0x65, 0x40, 0x27, 0x00, 0xD1, 0x00,
38730x42, 0x02, 0xD0, 0x08, 0x40, 0x34, 0x08, 0xC1, 0x00, 0x55, 0x03, 0x10, 0x0D,
38740x40, 0x37, 0x00, 0x9D, 0x11, 0x64, 0x00, 0x1C, 0x0D, 0x40, 0x37, 0x10, 0x5D,
38750x11, 0x44, 0x45, 0x50, 0x89, 0x00, 0x75, 0x00, 0x1D, 0x10, 0x64, 0x43, 0x96,
38760x11, 0x40, 0x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x47,
38770x04, 0x9F, 0x21, 0x44, 0x03, 0xF2, 0x05, 0xC0, 0x33, 0x40, 0xD3, 0x00, 0x6C,
38780x03, 0xF1, 0x0D, 0xC0, 0x34, 0x00, 0xDB, 0x00, 0x54, 0x04, 0xB0, 0x0D, 0xC0,
38790x37, 0x00, 0x1F, 0x01, 0x7C, 0x14, 0x30, 0x09, 0xC0, 0x35, 0x00, 0x5B, 0x01,
38800x2C, 0x0D, 0x30, 0x31, 0x82, 0x77, 0x01, 0x1D, 0x22, 0x64, 0x0F, 0xB1, 0x31,
38810xC1, 0x81, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x2D, 0x00,
38820xAF, 0x00, 0xBC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, 0x02, 0xEF, 0x80, 0xFC, 0x82,
38830xF0, 0x8F, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xEC, 0xA0, 0xF0, 0x0F, 0xC2, 0x3F,
38840x10, 0x37, 0x00, 0xEC, 0xA4, 0x70, 0x9B, 0xC0, 0x3F, 0x00, 0x7F, 0x00, 0xFC,
38850x01, 0xF0, 0x13, 0xC0, 0x2F, 0x00, 0x3F, 0x08, 0xDD, 0x27, 0x70, 0x03, 0xC0,
38860x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x05, 0x02, 0x13,
38870x10, 0x7E, 0x23, 0xB0, 0x05, 0xC0, 0x37, 0x03, 0xDF, 0x80, 0x7C, 0x03, 0xF1,
38880x09, 0xC0, 0x35, 0x80, 0xDF, 0x08, 0x4C, 0x80, 0x70, 0x0D, 0xC1, 0x37, 0x00,
38890x93, 0x02, 0x5C, 0x08, 0xF8, 0x0D, 0xC2, 0x37, 0x00, 0x5F, 0x0E, 0x78, 0x1B,
38900x70, 0x25, 0xC4, 0xA5, 0x00, 0x53, 0x00, 0x6C, 0x4B, 0x31, 0x09, 0xC4, 0x0B,
38910x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xE4, 0x02, 0x91, 0x00,
38920xF4, 0x07, 0x10, 0x05, 0x41, 0x77, 0x00, 0xFD, 0x00, 0x44, 0x02, 0xD0, 0x19,
38930xC8, 0x3E, 0x20, 0xFF, 0x00, 0x00, 0x2C, 0x10, 0x1F, 0x40, 0x37, 0x00, 0x91,
38940x00, 0x04, 0x00, 0xF0, 0x0D, 0x40, 0x37, 0x00, 0x4C, 0x01, 0x44, 0x05, 0xB0,
38950x04, 0x40, 0x24, 0x00, 0x4B, 0x04, 0x24, 0x83, 0x14, 0x71, 0x40, 0x6F, 0x00,
38960x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x40, 0x00, 0x01, 0x00, 0x34,
38970x83, 0x14, 0x3C, 0x41, 0xA3, 0x10, 0xCD, 0x00, 0x14, 0x01, 0xD0, 0x9C, 0x40,
38980x35, 0x08, 0xCD, 0x01, 0x04, 0x08, 0x50, 0xBC, 0x60, 0x32, 0x00, 0x05, 0x00,
38990x14, 0x01, 0xD0, 0x68, 0x40, 0x23, 0x00, 0x49, 0x03, 0x14, 0x8C, 0xD1, 0xB4,
39000x41, 0x31, 0x00, 0x00, 0x00, 0x04, 0x23, 0x10, 0x48, 0x40, 0x0F, 0x00, 0x00,
39010x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x58, 0x00, 0x61, 0x01, 0xB4, 0x07,
39020x10, 0x16, 0x40, 0x6B, 0x00, 0xED, 0x01, 0x96, 0x06, 0xD0, 0x1E, 0x40, 0x7A,
39030x00, 0xC5, 0x41, 0x84, 0x47, 0x10, 0x1E, 0x68, 0x7B, 0x00, 0xF1, 0x00, 0x84,
39040x05, 0x50, 0x9A, 0x40, 0x7B, 0x02, 0x7D, 0x01, 0xC4, 0x14, 0x90, 0x1A, 0x48,
39050x79, 0x20, 0x39, 0x09, 0x85, 0x27, 0x15, 0x1A, 0x40, 0x3F, 0x00, 0x00, 0x00,
39060x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x34, 0x02, 0x43, 0x04, 0x34, 0x03, 0x10,
39070x0C, 0xC0, 0x33, 0x10, 0xDF, 0x00, 0x1C, 0x02, 0xF0, 0x0C, 0xC0, 0x31, 0x00,
39080xCD, 0x00, 0x0C, 0x03, 0x70, 0xCC, 0xC0, 0x37, 0x42, 0x05, 0x00, 0x1C, 0x11,
39090xD0, 0x08, 0xC0, 0x33, 0x00, 0x4B, 0x00, 0x1C, 0x40, 0xF0, 0x8C, 0xC0, 0x31,
39100x02, 0xC3, 0x00, 0x6C, 0x23, 0x30, 0x88, 0xE0, 0x4B, 0x40, 0x00, 0x00, 0x00,
39110x00, 0x00, 0x00, 0x02, 0x38, 0x3D, 0x40, 0x7F, 0x00, 0xBC, 0x03, 0x70, 0x07,
39120xC0, 0x3F, 0x02, 0xFF, 0x00, 0xCC, 0x02, 0xF0, 0x0C, 0xC0, 0xBF, 0x20, 0xDF,
39130x00, 0x3C, 0x03, 0xC0, 0x8F, 0xC8, 0x37, 0x08, 0xFF, 0x8C, 0x7C, 0x01, 0xF0,
39140x09, 0xC0, 0x3F, 0x00, 0xFF, 0x48, 0x1C, 0x11, 0xF0, 0x89, 0xC0, 0x3A, 0x00,
39150xBF, 0x00, 0xFC, 0x23, 0xF2, 0x0F, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00,
39160x00, 0x00, 0x10, 0xA0, 0x17, 0x00, 0xDF, 0x01, 0x6C, 0x03, 0xF0, 0x0D, 0xC0,
39170x27, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0C, 0xC4, 0x74, 0x03, 0xD1, 0x0E,
39180x7C, 0x80, 0x70, 0x6D, 0xE0, 0x37, 0x00, 0xD7, 0x00, 0x7C, 0x00, 0x70, 0x1D,
39190xC0, 0x36, 0x00, 0x5B, 0x00, 0x7C, 0x04, 0xB0, 0x05, 0xC0, 0x37, 0x00, 0x97,
39200x00, 0x4C, 0x03, 0x34, 0x01, 0xC0, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
39210x00, 0x12, 0x80, 0x19, 0x00, 0xED, 0x00, 0x84, 0x0B, 0xC0, 0x06, 0x40, 0xAB,
39220x20, 0xED, 0x04, 0xB4, 0x02, 0xD0, 0x0E, 0x40, 0x31, 0x00, 0xE1, 0x10, 0xB4,
39230x03, 0xD0, 0xEE, 0xC0, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x00, 0xD0, 0x4E, 0x40,
39240x38, 0x00, 0x61, 0x00, 0xA4, 0x00, 0x10, 0x0E, 0x60, 0x3B, 0x00, 0x2D, 0x00,
39250x8D, 0x03, 0xB0, 0x06, 0x40, 0x4F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
39260x04, 0x00, 0x79, 0x00, 0xED, 0x01, 0x85, 0x17, 0x50, 0x1E, 0x41, 0x7B, 0x01,
39270xED, 0x09, 0xB4, 0x07, 0x50, 0x1E, 0x40, 0x78, 0x41, 0xE1, 0x05, 0x94, 0x47,
39280x50, 0x1E, 0x02, 0x7B, 0x10, 0xED, 0x01, 0xB4, 0x04, 0xD2, 0xDC, 0x00, 0x7A,
39290x24, 0x6D, 0x01, 0xD6, 0x0D, 0xD8, 0x1E, 0x40, 0x7B, 0x04, 0xE5, 0x01, 0xF4,
39300x07, 0x10, 0x1A, 0x60, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
39310x28, 0x33, 0x00, 0xCD, 0x1A, 0x04, 0x03, 0xD0, 0x14, 0x40, 0x73, 0x02, 0xCD,
39320x00, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0x31, 0x00, 0xC1, 0x00, 0x34, 0x13, 0xD0,
39330x0C, 0x48, 0x30, 0x00, 0xDD, 0x01, 0x34, 0x06, 0xD0, 0x8C, 0x40, 0x30, 0x00,
39340x45, 0x08, 0x34, 0x0D, 0xD0, 0x8C, 0x40, 0x73, 0x00, 0xCD, 0x01, 0x04, 0x03,
39350x17, 0x0C, 0x40, 0x5B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0,
39360x1D, 0x06, 0x7D, 0x03, 0x6C, 0x01, 0xF0, 0x17, 0xC0, 0x17, 0x00, 0x5F, 0x00,
39370xF4, 0x2D, 0x70, 0x04, 0xC4, 0x14, 0x10, 0x53, 0x80, 0xFC, 0x0D, 0x71, 0x05,
39380xC0, 0x17, 0x00, 0x7F, 0x07, 0xFC, 0x19, 0xF0, 0x15, 0xC0, 0x56, 0x00, 0x6F,
39390x02, 0xFC, 0x05, 0xF0, 0x27, 0xC8, 0x1F, 0x20, 0x67, 0x07, 0xFC, 0x01, 0x10,
39400x97, 0xC2, 0x5F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x05,
39410x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x21, 0xC1, 0x87, 0x00, 0x1F, 0x80, 0x7C,
39420x20, 0xF2, 0x01, 0xC0, 0x07, 0x00, 0x1B, 0x00, 0x7C, 0x08, 0xF0, 0x21, 0xC0,
39430x05, 0x00, 0x1F, 0x04, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x19, 0x50,
39440x6C, 0x18, 0x10, 0x21, 0xC1, 0xC7, 0x08, 0x1B, 0x30, 0x7E, 0x0C, 0xF0, 0x81,
39450xC0, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x65, 0x00,
39460x9F, 0x44, 0x7E, 0x0A, 0xF0, 0x09, 0xD0, 0x64, 0x10, 0x9F, 0x00, 0x7C, 0x06,
39470x30, 0x09, 0xD0, 0x24, 0x80, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC2, 0x27,
39480x00, 0x93, 0xC0, 0x4C, 0x42, 0xF0, 0x29, 0xC0, 0x26, 0x00, 0x93, 0x80, 0x5C,
39490x0A, 0xF0, 0x19, 0xC0, 0x65, 0x00, 0x9F, 0x00, 0x5C, 0x26, 0x30, 0x29, 0xC0,
39500x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x02, 0x9D,
39510x47, 0x74, 0x06, 0xD0, 0x48, 0x40, 0xEC, 0x10, 0x9D, 0x00, 0x34, 0x26, 0x10,
39520x09, 0xC0, 0x26, 0x10, 0x9D, 0x02, 0x74, 0x1A, 0xD0, 0x09, 0x44, 0x27, 0x00,
39530x91, 0x40, 0x4C, 0x02, 0x78, 0x1B, 0x40, 0x23, 0x00, 0x91, 0x10, 0x44, 0x0E,
39540xD0, 0x08, 0x42, 0x20, 0x10, 0x9B, 0x40, 0x0C, 0x1E, 0x54, 0x09, 0xC0, 0x07,
39550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x00,
39560x74, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x02, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x09,
39570x40, 0x24, 0x00, 0x99, 0x10, 0x74, 0x02, 0xD0, 0x29, 0x40, 0x23, 0x00, 0x91,
39580x00, 0x64, 0x02, 0xD1, 0x29, 0x40, 0x27, 0x00, 0x91, 0x01, 0x54, 0x02, 0x50,
39590x4D, 0x40, 0x25, 0x02, 0x94, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x63, 0x00,
39600x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x05, 0x8D, 0x14, 0x34,
39610x02, 0xD0, 0x09, 0x40, 0x20, 0x00, 0x8D, 0x08, 0x74, 0x0A, 0x10, 0x28, 0x40,
39620x22, 0x02, 0x8D, 0x08, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x02, 0x81, 0x08,
39630x04, 0x02, 0xD0, 0x08, 0x40, 0x27, 0x02, 0x91, 0x40, 0x04, 0x02, 0xD2, 0x09,
39640x40, 0x24, 0x00, 0x99, 0x00, 0x46, 0x22, 0x51, 0x48, 0x44, 0x43, 0x80, 0x00,
39650x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x06, 0x01, 0x1F, 0x04, 0x74, 0xD0,
39660xF0, 0x01, 0xC0, 0x54, 0x10, 0x1F, 0x16, 0x7E, 0x00, 0x34, 0x01, 0x40, 0x84,
39670x05, 0x19, 0x96, 0x7C, 0x00, 0xF0, 0x41, 0xC1, 0x87, 0x00, 0x13, 0x02, 0x6D,
39680x80, 0xD0, 0x11, 0x40, 0x83, 0x40, 0x13, 0x00, 0x54, 0x01, 0x70, 0x05, 0xC0,
39690x15, 0x00, 0x17, 0x00, 0x7C, 0x08, 0x30, 0x05, 0xC0, 0x77, 0xE0, 0x0A, 0x00,
39700x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x2F, 0x25, 0xAF, 0x20, 0x7C, 0x02, 0xF0,
39710x0B, 0xC8, 0xAF, 0x00, 0x9D, 0x04, 0xFC, 0x07, 0xF0, 0x1B, 0xC0, 0x27, 0x09,
39720x9F, 0x04, 0xFC, 0x02, 0xF2, 0x09, 0xC2, 0x27, 0x41, 0xBF, 0x04, 0xFC, 0x02,
39730x50, 0x2B, 0xC0, 0x2F, 0x01, 0xBF, 0x00, 0xB4, 0x02, 0xF2, 0x0B, 0xC0, 0x2F,
39740x00, 0xA7, 0x00, 0xBC, 0x12, 0xF4, 0x8B, 0xC0, 0x75, 0x60, 0x0E, 0x00, 0x00,
39750x00, 0x00, 0x00, 0x1C, 0xA0, 0x2F, 0x05, 0xBF, 0x04, 0xFC, 0x02, 0xF0, 0x0B,
39760xD0, 0x6C, 0x04, 0x91, 0x24, 0xFC, 0x0A, 0xF0, 0x2B, 0xD0, 0x24, 0x00, 0xBF,
39770x00, 0x9E, 0x02, 0xF0, 0x4B, 0xC0, 0x26, 0x00, 0x9F, 0x08, 0x7C, 0x82, 0x34,
39780x5B, 0xD1, 0x24, 0x02, 0xBF, 0x00, 0xEC, 0x02, 0xF2, 0x0B, 0xC0, 0x2E, 0x80,
39790xA7, 0x00, 0xCE, 0x83, 0x30, 0x0B, 0xC0, 0x74, 0x00, 0x0E, 0x00, 0x00, 0x00,
39800x00, 0x00, 0x18, 0x00, 0x07, 0x11, 0x1D, 0x08, 0x74, 0x08, 0xD0, 0x01, 0x40,
39810x84, 0x00, 0x11, 0x14, 0x74, 0x04, 0xD0, 0x51, 0x40, 0x84, 0x04, 0x0D, 0x10,
39820x76, 0x00, 0xD1, 0x01, 0x00, 0x04, 0x01, 0x1D, 0x04, 0x74, 0x00, 0x19, 0x21,
39830x40, 0x04, 0x00, 0x19, 0x00, 0x5C, 0x00, 0xD2, 0x01, 0x40, 0x04, 0x10, 0x1D,
39840x00, 0x05, 0x00, 0xB4, 0x01, 0x40, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
39850x00, 0x12, 0x00, 0x21, 0x05, 0x8D, 0x00, 0x34, 0x22, 0xD0, 0x09, 0x40, 0x20,
39860x00, 0x81, 0x0C, 0x34, 0x02, 0xD0, 0x48, 0x40, 0x20, 0x83, 0x8D, 0x08, 0x14,
39870x02, 0xD3, 0x88, 0x00, 0x22, 0x05, 0x8D, 0x04, 0x74, 0x02, 0x10, 0x08, 0x40,
39880x20, 0x10, 0x8D, 0x00, 0x36, 0x82, 0xD0, 0x08, 0x40, 0x22, 0x00, 0x95, 0x00,
39890x54, 0x02, 0x14, 0x0C, 0x40, 0x48, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
39900x18, 0x2A, 0x25, 0x86, 0x9D, 0x20, 0x74, 0x02, 0xD2, 0x09, 0x40, 0x24, 0x00,
39910x91, 0x20, 0x74, 0x02, 0xD0, 0x1D, 0x40, 0x24, 0x00, 0x9D, 0x40, 0x74, 0x42,
39920xD0, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x02, 0x74, 0x02, 0x10, 0x09, 0x44, 0x24,
39930x01, 0x9D, 0x02, 0x55, 0x0B, 0xD1, 0x89, 0x40, 0xE4, 0x00, 0x9D, 0x03, 0x54,
39940x2A, 0x90, 0x2D, 0x40, 0x60, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
39950x02, 0x25, 0x10, 0x9F, 0x12, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x93,
39960x00, 0xFC, 0x22, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x5C, 0x2A, 0xF0,
39970x09, 0xC2, 0x26, 0x00, 0x9F, 0x00, 0x3E, 0x3A, 0x10, 0x99, 0xC8, 0x24, 0x20,
39980x8F, 0x4B, 0x7C, 0x22, 0xF0, 0x49, 0xC0, 0xA6, 0x80, 0x87, 0x01, 0x54, 0x02,
39990x31, 0x09, 0xE0, 0x14, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x08,
40000x25, 0x0C, 0x9F, 0x84, 0x7C, 0x02, 0xF8, 0x09, 0xE0, 0x23, 0x41, 0x9F, 0x00,
40010x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x10, 0x9F, 0x10, 0x7C, 0x02, 0xF0, 0x09,
40020xC0, 0x27, 0x00, 0x9F, 0x80, 0x7C, 0x06, 0xF8, 0x19, 0xC4, 0x67, 0x00, 0x9B,
40030x00, 0x7C, 0x02, 0xF0, 0x09, 0xE8, 0x27, 0x88, 0x9F, 0x00, 0x6C, 0x06, 0xD1,
40040x48, 0xD8, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05,
40050x00, 0x1F, 0x82, 0x7C, 0x80, 0xF8, 0x41, 0xD0, 0x06, 0x40, 0x13, 0x00, 0x7C,
40060x00, 0x70, 0x41, 0xC0, 0x06, 0x00, 0x13, 0x00, 0x4D, 0xC8, 0x71, 0x01, 0x41,
40070x06, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x01, 0xC1, 0x07, 0x20, 0x1F, 0x30,
40080x5C, 0x10, 0x70, 0xC1, 0xC8, 0x87, 0x20, 0x1F, 0x10, 0x4C, 0x10, 0x32, 0x41,
40090xC4, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xDC, 0x04,
40100x7D, 0x07, 0x74, 0x15, 0x78, 0x76, 0xC0, 0x1C, 0x00, 0x51, 0x00, 0x74, 0x01,
40110x10, 0x16, 0x45, 0x14, 0x00, 0x71, 0x86, 0xC4, 0x09, 0x12, 0x16, 0x40, 0x17,
40120x00, 0x5D, 0x00, 0x74, 0x01, 0x70, 0x36, 0x40, 0x17, 0x10, 0x7D, 0x00, 0xF0,
40130x0D, 0x12, 0x36, 0x48, 0xDF, 0x02, 0x7D, 0x04, 0x80, 0x15, 0x50, 0x07, 0x50,
40140x40, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xF2, 0x00, 0x8D,
40150x06, 0x34, 0x07, 0x50, 0x18, 0x40, 0x20, 0x00, 0xC1, 0x00, 0x36, 0x23, 0x50,
40160x08, 0x40, 0x32, 0x40, 0xC9, 0x00, 0x04, 0x2F, 0x50, 0xBC, 0x40, 0x33, 0x00,
40170xCD, 0x00, 0x14, 0x03, 0x50, 0x28, 0x40, 0x33, 0x80, 0x4D, 0x0A, 0x34, 0x2F,
40180x50, 0x1C, 0x40, 0xD3, 0x00, 0xC9, 0x00, 0x04, 0x0B, 0x11, 0x0C, 0x40, 0x40,
40190x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x80, 0xAD, 0x00,
40200xB4, 0x03, 0x50, 0x02, 0x40, 0x28, 0x00, 0xE1, 0x00, 0xB4, 0x17, 0x18, 0x0E,
40210x40, 0x70, 0x02, 0xE9, 0x01, 0xC4, 0x07, 0x10, 0x0E, 0x40, 0x3B, 0x01, 0xED,
40220x08, 0xB4, 0x03, 0x50, 0x22, 0x40, 0x3B, 0xB0, 0x6D, 0x00, 0xB6, 0x07, 0x11,
40230x06, 0x40, 0x1B, 0x8C, 0xFD, 0x00, 0x85, 0x03, 0x10, 0x0C, 0x40, 0x10, 0x00,
40240x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x78, 0x00, 0xEF, 0x01, 0xBC,
40250x07, 0x70, 0x12, 0xC0, 0x68, 0x00, 0xE3, 0x01, 0xFC, 0x0F, 0x70, 0x1A, 0xD0,
40260x7A, 0x01, 0xE9, 0x01, 0x8C, 0x07, 0x70, 0x1E, 0xE8, 0x7B, 0x03, 0xEF, 0x01,
40270xBC, 0x07, 0x70, 0x12, 0xC0, 0x7B, 0x25, 0x6F, 0x01, 0x9E, 0x06, 0x70, 0x1A,
40280xC0, 0x6B, 0x00, 0xEF, 0x01, 0x8C, 0x06, 0x34, 0x1E, 0xC0, 0x50, 0x60, 0x00,
40290x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x15, 0x00, 0xDF, 0x00, 0x7C, 0x03,
40300x70, 0x00, 0xC0, 0x21, 0x00, 0xDF, 0x40, 0x7C, 0x03, 0xF2, 0x0C, 0xC0, 0x37,
40310x20, 0xD7, 0x80, 0x7C, 0x01, 0xF2, 0x0D, 0xC0, 0x37, 0x02, 0xDF, 0x10, 0x78,
40320x03, 0x70, 0x01, 0xC2, 0x37, 0x1A, 0x1F, 0x80, 0x3C, 0x02, 0xF0, 0x05, 0xC0,
40330x27, 0x20, 0xDF, 0x00, 0x7C, 0x02, 0xF6, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00,
40340x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x5D, 0x00, 0xA3, 0x01, 0xCC, 0x13, 0xF8,
40350x03, 0xC0, 0x6D, 0x00, 0xFF, 0x11, 0xBC, 0x07, 0x20, 0xDB, 0xC0, 0x7C, 0x00,
40360x7F, 0x01, 0xCC, 0x07, 0xF0, 0x9F, 0xD0, 0x7C, 0x00, 0xDF, 0x09, 0xFC, 0x07,
40370xF0, 0x13, 0xC0, 0x7F, 0x20, 0x2F, 0x09, 0xEE, 0x17, 0xF0, 0x1F, 0xC0, 0x5F,
40380x00, 0xFF, 0x01, 0x8C, 0x05, 0x30, 0xDB, 0xC0, 0x18, 0x00, 0x04, 0x00, 0x00,
40390x00, 0x00, 0x00, 0x15, 0x00, 0x39, 0x00, 0xA1, 0x00, 0x84, 0x03, 0x78, 0x42,
40400x40, 0x28, 0x02, 0xED, 0x00, 0xB4, 0x13, 0x10, 0x8A, 0x50, 0x38, 0x11, 0x2D,
40410x04, 0x8C, 0x1A, 0xD0, 0x8A, 0x40, 0x38, 0x00, 0xED, 0x05, 0xB4, 0x03, 0x90,
40420x02, 0x40, 0x3B, 0x00, 0x2D, 0x00, 0x9E, 0x03, 0xD0, 0x0E, 0x40, 0x9B, 0x22,
40430xAD, 0x04, 0xAC, 0x01, 0x10, 0xCE, 0x48, 0x55, 0x20, 0x04, 0x00, 0x00, 0x00,
40440x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0xA1, 0x00, 0x85, 0x23, 0x50, 0x82, 0x43,
40450x29, 0x00, 0xED, 0x00, 0xF4, 0x02, 0x10, 0x4B, 0x48, 0x38, 0x80, 0x6D, 0x80,
40460x84, 0x03, 0xD2, 0x06, 0x00, 0x38, 0x00, 0xED, 0x04, 0xB4, 0x03, 0xD0, 0x02,
40470x40, 0x3B, 0x00, 0x3D, 0x00, 0x84, 0x12, 0xD0, 0x0A, 0x40, 0x9B, 0x00, 0xF5,
40480x10, 0xD4, 0x20, 0x10, 0xC2, 0x44, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
40490x00, 0x02, 0x28, 0xC3, 0x00, 0x01, 0x01, 0x00, 0x02, 0x50, 0x30, 0x40, 0x20,
40500x00, 0xCD, 0x00, 0x34, 0x22, 0x10, 0x08, 0x40, 0x30, 0x00, 0x1D, 0x00, 0x04,
40510x4C, 0xD0, 0x00, 0x40, 0x30, 0x00, 0xCD, 0x04, 0x34, 0x43, 0xD0, 0x00, 0x40,
40520x77, 0x00, 0x0D, 0x12, 0x14, 0xC6, 0xD9, 0x8C, 0x40, 0x13, 0x00, 0x8D, 0x23,
40530x05, 0x03, 0x14, 0x24, 0x40, 0x09, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
40540x15, 0xA0, 0xE5, 0x41, 0x93, 0x0A, 0x4C, 0x03, 0x70, 0x35, 0xC0, 0x35, 0x00,
40550xFF, 0x00, 0x74, 0x02, 0x34, 0x08, 0xC0, 0x3C, 0x00, 0x9F, 0x00, 0x4C, 0x4E,
40560xF0, 0x09, 0xC0, 0x3C, 0x00, 0xFF, 0x13, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0x3F,
40570x01, 0x5F, 0x01, 0x4C, 0x07, 0xF1, 0xBD, 0xC0, 0xB7, 0x00, 0xD7, 0x03, 0x14,
40580x4F, 0x30, 0x94, 0xC0, 0x54, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
40590x08, 0x27, 0x00, 0x9F, 0x88, 0x7C, 0x03, 0x70, 0x21, 0xC0, 0xB7, 0x00, 0xDF,
40600x00, 0x7C, 0x42, 0xF0, 0x29, 0xC0, 0x37, 0x00, 0x9F, 0x00, 0x5D, 0x02, 0xF0,
40610x00, 0xC4, 0x37, 0x00, 0xDF, 0x20, 0x7C, 0x03, 0xB0, 0x25, 0xE4, 0x37, 0x00,
40620x5F, 0x01, 0x4D, 0x23, 0xF0, 0x05, 0xC0, 0xF7, 0x00, 0xDF, 0x02, 0x7C, 0x1B,
40630xF0, 0x3D, 0xC0, 0x37, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08,
40640x27, 0x04, 0xFF, 0x02, 0xFC, 0x03, 0xF0, 0x17, 0xC1, 0x6B, 0x00, 0xF7, 0x00,
40650xFC, 0x07, 0xD0, 0x1B, 0xC0, 0x3C, 0x08, 0x1F, 0x00, 0xCC, 0x02, 0xF0, 0x09,
40660xC0, 0x3D, 0x80, 0xFF, 0x80, 0xCC, 0x03, 0xF8, 0x13, 0xC0, 0x3D, 0x00, 0xF3,
40670x00, 0xFC, 0x26, 0xF0, 0x03, 0xCC, 0x2F, 0x00, 0xF7, 0x10, 0xCC, 0x02, 0x30,
40680x11, 0xC8, 0x04, 0x26, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x66,
40690x00, 0xDD, 0x00, 0x74, 0x03, 0xD0, 0x01, 0x40, 0x17, 0x00, 0xD1, 0x80, 0x74,
40700x07, 0xD0, 0x39, 0x50, 0x34, 0x00, 0x1D, 0x09, 0x44, 0x0C, 0xD0, 0x11, 0x40,
40710x34, 0x80, 0xDD, 0x00, 0x44, 0x03, 0xD8, 0x00, 0xC1, 0x34, 0x40, 0x11, 0x03,
40720x72, 0x0E, 0x70, 0x05, 0x41, 0x23, 0x00, 0xCB, 0x22, 0x44, 0x64, 0x14, 0x39,
40730xC0, 0x06, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x46, 0x0C,
40740x9D, 0x00, 0x74, 0x03, 0xD0, 0x45, 0x41, 0xB7, 0x01, 0xD5, 0x00, 0x74, 0x12,
40750xD0, 0x81, 0x40, 0x36, 0x00, 0xDD, 0x02, 0x44, 0x04, 0xD2, 0x19, 0x41, 0x34,
40760x00, 0xCD, 0x00, 0x44, 0x03, 0xD0, 0x45, 0x40, 0x36, 0x20, 0x51, 0x11, 0x64,
40770x03, 0xD0, 0x19, 0x40, 0x37, 0x00, 0x51, 0x02, 0x44, 0x01, 0x10, 0x41, 0x40,
40780x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x8D,
40790x00, 0x34, 0x03, 0xD0, 0x04, 0x40, 0x32, 0x00, 0xC1, 0x00, 0x34, 0x02, 0xD0,
40800x00, 0x40, 0x32, 0x00, 0x8D, 0x00, 0x04, 0x00, 0xD2, 0x00, 0x40, 0x30, 0x00,
40810xCD, 0x10, 0x04, 0x03, 0xD0, 0x04, 0x60, 0x30, 0x00, 0x41, 0x20, 0x34, 0x01,
40820x50, 0x08, 0x40, 0x37, 0x80, 0x09, 0x00, 0x45, 0x00, 0x10, 0x0C, 0x44, 0x42,
40830x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xDF, 0x00,
40840x7C, 0x03, 0xF0, 0x05, 0xC0, 0x27, 0x00, 0xD7, 0x00, 0x7C, 0x02, 0xF2, 0x01,
40850xD0, 0x36, 0x00, 0x5F, 0x00, 0x45, 0x00, 0xF0, 0x01, 0xD0, 0x3C, 0x20, 0xFD,
40860x00, 0x4D, 0x03, 0xD0, 0x05, 0xC0, 0x3F, 0x10, 0x53, 0x20, 0x74, 0x83, 0xF0,
40870x01, 0xC8, 0x37, 0x80, 0x57, 0x00, 0x4C, 0x00, 0x31, 0x01, 0xC0, 0x04, 0x44,
40880x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x2F, 0x00, 0x7F, 0x00, 0xFC,
40890x02, 0xF0, 0x06, 0xC0, 0x1F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x02, 0xC0,
40900x3D, 0x00, 0x3F, 0x00, 0xFD, 0x00, 0xF0, 0x03, 0x82, 0x3F, 0x10, 0xFF, 0x80,
40910xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x02, 0x70, 0x03,
40920xC0, 0x3F, 0x00, 0x2D, 0x00, 0xFC, 0x00, 0xF2, 0x03, 0x80, 0x14, 0x20, 0x0E,
40930x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xF3, 0x09, 0x8C, 0x07,
40940xF0, 0x1F, 0xC0, 0x7C, 0x00, 0xFF, 0x01, 0xFC, 0x27, 0xF0, 0x9F, 0xC0, 0x7F,
40950x02, 0xFF, 0x09, 0xFC, 0x27, 0xF0, 0x9F, 0xC0, 0x7D, 0x02, 0xEF, 0x01, 0xCC,
40960x07, 0xF0, 0x1E, 0x40, 0x3C, 0x00, 0xF3, 0x00, 0xCC, 0x03, 0xB0, 0x0F, 0xC0,
40970x3C, 0x00, 0xF3, 0x01, 0xCC, 0x07, 0x30, 0x1F, 0xC0, 0x0F, 0x00, 0x0E, 0x00,
40980x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x47, 0x40, 0x11, 0x00, 0x45, 0x04, 0xD0,
40990x11, 0x52, 0x04, 0x00, 0x0D, 0x00, 0x74, 0x10, 0xD0, 0x01, 0x40, 0x07, 0x01,
41000x1D, 0x04, 0x74, 0x10, 0xD0, 0x40, 0xC0, 0x06, 0x01, 0x1D, 0x81, 0x44, 0x04,
41010xD0, 0x11, 0x40, 0x74, 0x08, 0x51, 0x21, 0x44, 0x07, 0x10, 0x15, 0x42, 0x74,
41020x00, 0xD1, 0x00, 0x44, 0x07, 0x10, 0x19, 0x48, 0x07, 0x00, 0x0C, 0x00, 0x00,
41030x00, 0x00, 0x00, 0x11, 0xA0, 0x37, 0x00, 0xC1, 0x04, 0x14, 0x03, 0xD0, 0x0D,
41040x60, 0x30, 0x05, 0xCD, 0x14, 0x34, 0x03, 0xD0, 0x4C, 0x40, 0x33, 0x00, 0xC5,
41050x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x24, 0x03, 0xD0,
41060x0C, 0x40, 0x32, 0x00, 0x81, 0x00, 0x04, 0x02, 0x50, 0x0C, 0x40, 0x32, 0x00,
41070xC5, 0x00, 0x44, 0x02, 0x14, 0x0C, 0x40, 0x45, 0x80, 0x0E, 0x00, 0x00, 0x00,
41080x00, 0x00, 0x03, 0xA8, 0x05, 0x00, 0x01, 0x40, 0x54, 0x00, 0xD0, 0x01, 0x60,
41090x04, 0x30, 0x1D, 0x00, 0x74, 0x00, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x20,
41100x74, 0x00, 0xD0, 0x01, 0x40, 0x04, 0x00, 0x1D, 0x00, 0x64, 0x80, 0xC0, 0x01,
41110x40, 0x36, 0x00, 0xD1, 0x00, 0x44, 0x43, 0xD0, 0xAD, 0x40, 0x36, 0x04, 0xC5,
41120x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
41130x00, 0x00, 0xA0, 0x33, 0x00, 0xD3, 0x00, 0x5C, 0x03, 0xF0, 0x0D, 0xC0, 0x34,
41140x00, 0xDF, 0x80, 0x7C, 0x83, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C,
41150x03, 0xF0, 0x0D, 0x40, 0x37, 0x00, 0xDF, 0x00, 0x6C, 0x03, 0xF0, 0x0D, 0x40,
41160x86, 0x04, 0xD3, 0x09, 0x4C, 0x25, 0xF0, 0x3D, 0xC0, 0x26, 0x00, 0xD7, 0x09,
41170x0D, 0x03, 0x30, 0x09, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
41180x07, 0x88, 0x0D, 0x00, 0x3F, 0x00, 0xEC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00,
41190x3F, 0x00, 0xF4, 0x00, 0xF1, 0x03, 0xC8, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00,
41200xA0, 0x03, 0xC8, 0x0F, 0x00, 0x3F, 0x00, 0xDC, 0x00, 0xF1, 0x03, 0xC8, 0x19,
41210x00, 0xCF, 0x21, 0xBC, 0x01, 0x30, 0x16, 0xC2, 0x39, 0x02, 0xFB, 0x00, 0xFC,
41220x13, 0xF0, 0x0F, 0xC0, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
41230x08, 0x35, 0x00, 0xDF, 0x05, 0x7C, 0x03, 0x32, 0x0D, 0xC2, 0x37, 0x00, 0xDF,
41240x00, 0x4C, 0x07, 0xF0, 0x0D, 0xC0, 0x77, 0x00, 0xDF, 0x01, 0x7C, 0x07, 0xF0,
41250x0D, 0xC0, 0x74, 0x00, 0xDF, 0x01, 0x4C, 0x03, 0x30, 0x0D, 0xC0, 0xB5, 0x00,
41260x93, 0x00, 0x4C, 0x0A, 0x70, 0x0D, 0xC2, 0xA4, 0x00, 0xD7, 0x00, 0x4C, 0x02,
41270xF0, 0x09, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
41280x04, 0x10, 0x1D, 0x01, 0x74, 0x00, 0x14, 0xB0, 0x40, 0x07, 0x00, 0x1D, 0x00,
41290x44, 0x04, 0xC1, 0xA1, 0x42, 0x07, 0x00, 0x1D, 0x01, 0x74, 0x84, 0xD0, 0xE1,
41300x40, 0x44, 0x00, 0x0D, 0x00, 0x44, 0x00, 0xB0, 0x00, 0x40, 0x34, 0x00, 0xD1,
41310x80, 0x44, 0x13, 0x10, 0x0D, 0x40, 0x34, 0x10, 0xDD, 0x0A, 0x44, 0x46, 0xD0,
41320x1D, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x30,
41330x00, 0xCD, 0x02, 0x34, 0x03, 0x10, 0x3C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x04,
41340x1B, 0xD0, 0x0C, 0x40, 0x32, 0x00, 0xCD, 0x10, 0x34, 0x03, 0xD0, 0x0D, 0x40,
41350x30, 0x00, 0xCD, 0x00, 0x04, 0x03, 0x50, 0x0C, 0x44, 0x30, 0x00, 0xC1, 0x00,
41360x04, 0x83, 0x14, 0x08, 0x40, 0x12, 0x00, 0xC4, 0x00, 0x04, 0x03, 0xD0, 0x1C,
41370x40, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00,
41380x2D, 0x09, 0xF4, 0x24, 0x10, 0x12, 0x40, 0x4B, 0x00, 0x2D, 0x00, 0x84, 0x24,
41390xD0, 0x12, 0x40, 0x4B, 0x00, 0x2D, 0x41, 0xB4, 0x0C, 0xD0, 0x12, 0x60, 0xC8,
41400x00, 0x2D, 0x01, 0xC4, 0x04, 0xD2, 0x32, 0x40, 0x70, 0x00, 0x61, 0x01, 0x05,
41410x07, 0x10, 0x1C, 0x40, 0x7A, 0x00, 0xED, 0x01, 0x84, 0x07, 0xD1, 0x1A, 0x60,
41420x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x30, 0x00, 0xCF,
41430x00, 0x3C, 0x03, 0x30, 0x0C, 0xC3, 0x33, 0x02, 0xCF, 0x08, 0x0C, 0x03, 0xF0,
41440x0C, 0xC2, 0x32, 0x00, 0xCD, 0x00, 0x3C, 0x03, 0xF0, 0x0C, 0xC0, 0x30, 0x00,
41450xCF, 0x00, 0x0C, 0x03, 0x70, 0x0C, 0xC0, 0x31, 0x00, 0xC3, 0x04, 0x0C, 0x03,
41460x70, 0x0C, 0xC0, 0x32, 0x00, 0xD7, 0x00, 0x0D, 0x03, 0xF2, 0x8C, 0x51, 0x48,
41470x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x0D, 0x00, 0x3F, 0x00,
41480xFC, 0x00, 0xF0, 0x03, 0xC8, 0x0F, 0x08, 0x3F, 0x04, 0xFC, 0x00, 0xF0, 0x03,
41490xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F,
41500x40, 0xBC, 0x00, 0xB0, 0x13, 0xC4, 0x3F, 0x02, 0xFF, 0x00, 0xFE, 0x03, 0xF2,
41510x0F, 0xC0, 0x3D, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0A, 0xC2, 0x0B, 0xE0,
41520x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x37, 0x00, 0xDF, 0x01, 0x0D,
41530x07, 0x34, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x01, 0x4C, 0x07, 0x3C, 0x0D, 0xC0,
41540x77, 0x00, 0xD7, 0x01, 0x4D, 0x87, 0x34, 0x1D, 0xC0, 0x75, 0x40, 0xD3, 0x00,
41550x7E, 0x03, 0xF0, 0x1D, 0xC0, 0x24, 0x00, 0xD3, 0x00, 0x4C, 0x03, 0xB8, 0x09,
41560xC0, 0x54, 0x00, 0xDB, 0x00, 0x4D, 0x02, 0xF0, 0x09, 0xC0, 0x41, 0x00, 0x0E,
41570x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x90, 0x08, 0x00, 0x2D, 0x00, 0x84, 0x00,
41580x18, 0x02, 0x40, 0x0B, 0x00, 0x3D, 0x00, 0xD4, 0x00, 0x10, 0x02, 0x40, 0x0F,
41590x00, 0x31, 0x00, 0xC4, 0x00, 0x10, 0x02, 0x40, 0x0C, 0x00, 0x21, 0x00, 0x9C,
41600x80, 0xD0, 0x02, 0x40, 0x39, 0x00, 0xE1, 0x00, 0x84, 0x03, 0x10, 0x0E, 0x42,
41610x38, 0x00, 0xF1, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x4B, 0x00, 0x06, 0x00,
41620x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xED, 0x01, 0xC4, 0x87, 0x12,
41630x1E, 0x60, 0x7B, 0x80, 0xE9, 0x01, 0x84, 0x07, 0x10, 0x1E, 0x42, 0x7B, 0x20,
41640xE5, 0x01, 0xA0, 0x07, 0x10, 0x1E, 0x40, 0x7B, 0x00, 0xE9, 0x01, 0x94, 0x07,
41650xD0, 0x1F, 0x40, 0x72, 0x08, 0xC1, 0x01, 0x04, 0x07, 0x10, 0x1C, 0x40, 0x70,
41660x00, 0xE1, 0x01, 0x84, 0x06, 0xD0, 0x1A, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00,
41670x00, 0x00, 0x00, 0x16, 0x20, 0x03, 0x00, 0x0D, 0x00, 0x04, 0x00, 0x10, 0x00,
41680x40, 0x03, 0x00, 0x0D, 0x00, 0x14, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x01,
41690x00, 0x24, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, 0x09, 0x00, 0x14, 0x00, 0xD0,
41700x00, 0x40, 0x33, 0x40, 0xC1, 0x00, 0x05, 0x03, 0x14, 0x0C, 0x50, 0x30, 0x52,
41710x91, 0x48, 0x04, 0x02, 0xD0, 0x1C, 0x40, 0x5B, 0x20, 0x0C, 0x00, 0x00, 0x00,
41720x00, 0x00, 0x17, 0x28, 0x15, 0x00, 0x5F, 0x00, 0x4C, 0x01, 0x30, 0x05, 0xC0,
41730x17, 0x00, 0x5F, 0x00, 0x4C, 0x01, 0x30, 0x04, 0xC0, 0x17, 0x10, 0x57, 0x00,
41740x64, 0x01, 0x30, 0x05, 0xC0, 0x17, 0x00, 0x5B, 0x00, 0x5C, 0x01, 0xF0, 0x05,
41750xC0, 0x1E, 0x00, 0x73, 0x02, 0xCC, 0x09, 0x30, 0x07, 0xC0, 0x5C, 0x00, 0x53,
41760x01, 0x4C, 0x01, 0xF2, 0x05, 0xC1, 0x5F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
41770x00, 0x12, 0x00, 0x0D, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x23, 0xC0, 0x0F,
41780x00, 0x3F, 0x20, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xDC,
41790x00, 0xF0, 0x23, 0xC0, 0x0D, 0x20, 0x37, 0x02, 0xDC, 0x00, 0xF0, 0x03, 0xE2,
41800x41, 0x00, 0x0F, 0x10, 0x7C, 0x40, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x17, 0x02,
41810x7C, 0x00, 0xF0, 0x01, 0xC0, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
41820x10, 0x08, 0x25, 0x00, 0x9F, 0x05, 0x7C, 0x16, 0xF0, 0x09, 0xC0, 0x27, 0x00,
41830x9F, 0x00, 0x7C, 0x0A, 0xF0, 0x29, 0xC0, 0x24, 0x01, 0x9F, 0x01, 0x5C, 0x02,
41840xF0, 0x19, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x20, 0x09, 0xC0, 0x27,
41850x20, 0x93, 0x20, 0x0C, 0x02, 0x34, 0x08, 0xC0, 0x24, 0x00, 0x9F, 0x05, 0x4C,
41860x06, 0xF0, 0x09, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
41870x20, 0x26, 0x00, 0x9D, 0x02, 0x74, 0x02, 0x90, 0x49, 0x48, 0x27, 0x00, 0x9D,
41880x00, 0x74, 0x0A, 0xD9, 0x39, 0x40, 0x24, 0x00, 0x9D, 0x02, 0x74, 0x0A, 0xD0,
41890xD9, 0x40, 0xA7, 0x80, 0x9F, 0x12, 0x34, 0x02, 0xB0, 0x09, 0x40, 0xA7, 0x20,
41900x91, 0x82, 0x44, 0x0A, 0x30, 0x29, 0x40, 0xA4, 0x00, 0x9D, 0x02, 0x44, 0x06,
41910xD0, 0x08, 0xC0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0,
41920x24, 0x00, 0xBD, 0x00, 0xF4, 0x02, 0xD0, 0x0B, 0x40, 0x2F, 0x00, 0xB5, 0x00,
41930xF4, 0x02, 0xD0, 0x0B, 0x60, 0x2C, 0x00, 0xBD, 0x08, 0xF6, 0x06, 0xD0, 0x0B,
41940x40, 0x6F, 0x10, 0xBD, 0x00, 0xF4, 0x02, 0x50, 0x1B, 0x42, 0x27, 0x04, 0x91,
41950x10, 0x64, 0x42, 0x00, 0x09, 0x41, 0x24, 0x84, 0x9D, 0x00, 0x64, 0x22, 0xD0,
41960x89, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x28,
41970x00, 0xAD, 0x01, 0xB4, 0x02, 0x91, 0x0A, 0x40, 0x2B, 0x00, 0xAD, 0x00, 0xB4,
41980x06, 0xD0, 0x0B, 0x42, 0x29, 0x00, 0xAD, 0x01, 0xB4, 0x06, 0xD0, 0x0A, 0x60,
41990x6B, 0x00, 0xA5, 0x00, 0xF4, 0x02, 0xD2, 0x0A, 0x60, 0x23, 0x41, 0x81, 0x04,
42000x24, 0x92, 0x90, 0x48, 0x40, 0x20, 0x01, 0x8D, 0x40, 0x24, 0x02, 0xD0, 0x09,
42010x40, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x06, 0x00,
42020x0F, 0x0A, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x87, 0x12, 0x17, 0x0A, 0x7C, 0x28,
42030xD0, 0xA5, 0xD0, 0x84, 0x02, 0x1D, 0x0A, 0x5C, 0x28, 0xF0, 0xA0, 0xC0, 0x87,
42040x02, 0x1D, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xC0, 0x07, 0x00, 0x13, 0x00, 0x65,
42050x00, 0x32, 0x01, 0xD0, 0x04, 0x00, 0x5F, 0x0A, 0x6C, 0x00, 0xF0, 0x01, 0xC0,
42060x74, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x27, 0x00, 0x9F,
42070x00, 0x7C, 0x02, 0xB0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0,
42080x09, 0xC0, 0x26, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00,
42090x9F, 0x00, 0x7C, 0x02, 0xB0, 0x08, 0xC0, 0x2F, 0x02, 0xBF, 0x08, 0xDC, 0x22,
42100x70, 0x8B, 0xC0, 0x2F, 0x02, 0xBF, 0x00, 0xDD, 0x02, 0xF0, 0x0B, 0xC0, 0x77,
42110x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x27, 0x00, 0xB3, 0x00,
42120xCC, 0x02, 0xF0, 0x0B, 0xC0, 0x24, 0x00, 0xBF, 0x00, 0xCC, 0x02, 0xF0, 0x0A,
42130xC0, 0x2D, 0x02, 0xB7, 0x00, 0xFE, 0x02, 0xF0, 0x8B, 0xC0, 0x2F, 0x00, 0x9F,
42140x00, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0x34, 0x00, 0x9F, 0x00, 0x6D, 0x12, 0x30,
42150x49, 0xC1, 0x24, 0x01, 0xB3, 0x00, 0xCC, 0x03, 0xF0, 0x0B, 0xC0, 0x73, 0x00,
42160x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05, 0x00, 0x11, 0x04, 0x45,
42170x00, 0xD0, 0x01, 0x40, 0x04, 0x00, 0x1D, 0x00, 0x45, 0x50, 0x70, 0x41, 0x40,
42180x04, 0x01, 0x11, 0x10, 0x74, 0x40, 0xD1, 0x01, 0x40, 0x07, 0x05, 0x1D, 0x00,
42190x74, 0x00, 0xD0, 0x01, 0x40, 0x05, 0x00, 0x1D, 0x08, 0x44, 0x00, 0x10, 0x01,
42200x40, 0x0C, 0x12, 0x01, 0x10, 0x44, 0x00, 0xD0, 0x01, 0x40, 0x63, 0x00, 0x0C,
42210x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x25, 0x40, 0x81, 0x14, 0x04, 0x02,
42220xD0, 0x08, 0x40, 0x20, 0x00, 0x9D, 0x00, 0x04, 0x12, 0xD0, 0x48, 0x41, 0x21,
42230x21, 0x85, 0x04, 0x30, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x01, 0xAD, 0x00, 0xB4,
42240x03, 0xD0, 0x0B, 0x40, 0x6A, 0x02, 0xAD, 0x01, 0x84, 0x26, 0x10, 0x1A, 0x40,
42250x68, 0x00, 0x99, 0x04, 0x05, 0x02, 0xD0, 0x0C, 0x40, 0x4B, 0x00, 0x04, 0x00,
42260x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0xD1, 0x00, 0x44, 0x02, 0xD0,
42270x09, 0x40, 0x24, 0x80, 0x9D, 0x40, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x00,
42280x91, 0x80, 0x74, 0x02, 0xD2, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0xF4, 0x82,
42290xD0, 0x0B, 0x40, 0x2F, 0x00, 0xBD, 0x00, 0xC4, 0x02, 0x10, 0x0B, 0x40, 0x2C,
42300x10, 0x99, 0x01, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x20, 0x04, 0x00, 0x00,
42310x00, 0x00, 0x00, 0x05, 0x00, 0x25, 0x00, 0x93, 0x00, 0x48, 0x02, 0xF0, 0x08,
42320xC0, 0x24, 0x00, 0x9F, 0x20, 0x4C, 0x02, 0xF0, 0x09, 0xC0, 0x25, 0x00, 0x95,
42330x00, 0x74, 0x02, 0xE0, 0x09, 0x80, 0x27, 0x00, 0x9F, 0x40, 0x7E, 0x02, 0xF0,
42340x09, 0xC0, 0xA6, 0x02, 0x9F, 0x03, 0x4C, 0x2A, 0x34, 0xB9, 0xC0, 0xA4, 0x00,
42350x8B, 0xA0, 0x4C, 0x82, 0xF0, 0x09, 0xC0, 0x17, 0x00, 0x04, 0x00, 0x00, 0x00,
42360x00, 0x00, 0x16, 0x08, 0x24, 0x00, 0x9F, 0x80, 0x7C, 0x02, 0xF0, 0x09, 0xD0,
42370x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x70, 0x09, 0xC8, 0x27, 0x00, 0x9F, 0x00,
42380x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09,
42390xC0, 0x25, 0x00, 0x9F, 0x03, 0x5C, 0x06, 0xF0, 0x19, 0xD0, 0x27, 0x40, 0x97,
42400x20, 0x7C, 0x12, 0xF0, 0x09, 0xC0, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
42410x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xF0, 0x01, 0xC0, 0x07,
42420x00, 0x13, 0x10, 0x7C, 0x00, 0xF2, 0x81, 0xD1, 0x06, 0x00, 0x1F, 0x00, 0x7C,
42430x60, 0xF2, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC0,
42440x07, 0x00, 0x03, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0xC0, 0x03, 0x00, 0x1F, 0x00,
42450x4D, 0x04, 0xF0, 0x01, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
42460x10, 0x20, 0x10, 0x00, 0x7D, 0x00, 0x76, 0x45, 0xD0, 0x07, 0xC0, 0x15, 0x20,
42470x65, 0x00, 0xF4, 0x09, 0xD0, 0x27, 0xD0, 0x16, 0x00, 0x77, 0x00, 0xF4, 0x09,
42480xD2, 0x07, 0x40, 0x1F, 0x00, 0x5D, 0x00, 0x74, 0x01, 0x14, 0x04, 0xC0, 0x15,
42490x00, 0x51, 0x01, 0x74, 0x01, 0xD0, 0x15, 0x40, 0x57, 0x10, 0x7D, 0x41, 0xC4,
42500x01, 0xD0, 0x05, 0x40, 0x43, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
42510xA0, 0x32, 0x00, 0xDD, 0x40, 0x34, 0x07, 0xD0, 0x04, 0x40, 0x31, 0x80, 0x49,
42520x00, 0x34, 0x4B, 0xD0, 0x3D, 0x40, 0x36, 0x30, 0xCD, 0x00, 0x34, 0x07, 0xD8,
42530x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x31, 0x00,
42540xC1, 0x21, 0x34, 0x03, 0xD0, 0x1C, 0x40, 0x73, 0x00, 0xCD, 0x00, 0x04, 0x07,
42550xD0, 0x0C, 0x40, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80,
42560x38, 0x00, 0x6D, 0x00, 0xB4, 0x03, 0xD0, 0x0A, 0x40, 0x79, 0x02, 0x6D, 0x10,
42570xB6, 0x03, 0xD0, 0x0E, 0x58, 0x2A, 0x00, 0x6D, 0x00, 0xB4, 0x01, 0xD9, 0x02,
42580x40, 0x1B, 0x00, 0xAD, 0x00, 0xB4, 0x07, 0x10, 0x06, 0x40, 0x71, 0x40, 0xE1,
42590x10, 0xB4, 0x02, 0xD0, 0x0E, 0x41, 0x3B, 0x04, 0xED, 0x02, 0x84, 0x43, 0xD0,
42600x0A, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x78,
42610x00, 0xAF, 0x01, 0xB4, 0x07, 0xD0, 0x16, 0xC0, 0x7D, 0x00, 0x6B, 0x01, 0xBC,
42620x06, 0xF0, 0x16, 0xD0, 0x7A, 0x00, 0xAF, 0x01, 0xB4, 0x06, 0xF0, 0x1E, 0xC0,
42630x6B, 0x00, 0x6F, 0x01, 0xB8, 0x07, 0x30, 0x1A, 0xC0, 0x59, 0x00, 0x63, 0x01,
42640xBC, 0x05, 0xF0, 0x16, 0xC0, 0x5B, 0x00, 0xEF, 0x01, 0x8C, 0x07, 0xF0, 0x1E,
42650xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00,
42660x1F, 0x00, 0x7C, 0x03, 0xF0, 0x01, 0xC0, 0x75, 0x20, 0x57, 0x00, 0x7C, 0x00,
42670xF0, 0x05, 0xD0, 0x27, 0x00, 0x17, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07,
42680x00, 0x1F, 0x00, 0x7C, 0x03, 0xF0, 0x01, 0xC2, 0x15, 0x00, 0x5F, 0x00, 0x7C,
42690x00, 0xF8, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0,
42700x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x7D, 0x00, 0xFF,
42710x01, 0xBC, 0x07, 0xF8, 0x87, 0xC0, 0x7C, 0x00, 0xB3, 0x89, 0xCC, 0x05, 0xA0,
42720x1B, 0xC0, 0x7F, 0x20, 0xF3, 0x01, 0xDC, 0x07, 0x30, 0x1F, 0xC0, 0x7C, 0x00,
42730xF3, 0x01, 0xCC, 0x06, 0xF2, 0x1F, 0xC0, 0x7F, 0x00, 0xBF, 0x01, 0xCC, 0x07,
42740xF0, 0x1B, 0xC0, 0x6C, 0x00, 0xF3, 0x01, 0xFC, 0x05, 0x30, 0x1F, 0xC0, 0x1B,
42750x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x39, 0x00, 0x6D, 0x00,
42760x9C, 0x03, 0x18, 0x0A, 0x40, 0x38, 0x00, 0xA1, 0x00, 0xC4, 0x03, 0x11, 0x0A,
42770x40, 0x2B, 0x00, 0x71, 0x00, 0xC4, 0x02, 0x10, 0x02, 0x40, 0x1C, 0x00, 0xA1,
42780x00, 0x84, 0x0A, 0xD0, 0x06, 0x40, 0x3B, 0x00, 0xAD, 0x00, 0x84, 0x02, 0xD0,
42790x0A, 0x40, 0x28, 0x12, 0xE1, 0x00, 0xB4, 0x00, 0xB0, 0x0E, 0x40, 0x57, 0x20,
42800x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0xAD, 0x00, 0xB4,
42810x03, 0x50, 0x87, 0x40, 0x3C, 0x00, 0xB1, 0x00, 0x84, 0x20, 0x10, 0x02, 0x40,
42820xBF, 0x00, 0xA9, 0x00, 0x84, 0x01, 0x10, 0x0F, 0x40, 0x2A, 0x00, 0x79, 0x02,
42830x84, 0x02, 0xD0, 0x0A, 0x40, 0x1B, 0x00, 0x0D, 0x00, 0x84, 0x01, 0xD0, 0x80,
42840x40, 0x00, 0x00, 0xA1, 0x00, 0xF4, 0x40, 0x10, 0x0E, 0x40, 0x03, 0x00, 0x04,
42850x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0xF1, 0x00, 0x1D, 0x02, 0x34, 0x43,
42860x10, 0x00, 0x41, 0xB0, 0x04, 0x81, 0x04, 0x04, 0x34, 0x91, 0x38, 0x40, 0x23,
42870x00, 0x09, 0x0D, 0x04, 0x34, 0x10, 0x00, 0x41, 0x42, 0x43, 0x09, 0x20, 0x04,
42880x06, 0xD0, 0x10, 0x40, 0x13, 0x00, 0x0D, 0x12, 0x04, 0x00, 0xD0, 0x00, 0x40,
42890x80, 0x00, 0x01, 0x20, 0x34, 0x84, 0x90, 0x0C, 0x40, 0x0B, 0x20, 0x04, 0x00,
42900x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0xB5, 0x00, 0xDF, 0x05, 0x7C, 0x07, 0x50,
42910x24, 0xC0, 0x38, 0x00, 0x93, 0x02, 0x44, 0x0B, 0xB0, 0x05, 0xC0, 0x73, 0x00,
42920xD9, 0x02, 0x44, 0x0B, 0x10, 0x2C, 0xC0, 0xB6, 0x00, 0xCB, 0x00, 0x0C, 0x69,
42930xF1, 0x2D, 0x41, 0x67, 0x00, 0xDF, 0x03, 0x4D, 0x07, 0xF0, 0xBD, 0xD0, 0x74,
42940x40, 0xD3, 0x00, 0x3C, 0x05, 0x30, 0x0D, 0xC0, 0x57, 0x00, 0x06, 0x00, 0x00,
42950x00, 0x00, 0x00, 0x05, 0x00, 0x37, 0x06, 0x9F, 0x10, 0x5C, 0x23, 0x70, 0x1D,
42960xC0, 0x77, 0x00, 0x9F, 0x03, 0x7C, 0x02, 0x71, 0x85, 0xC0, 0x37, 0x22, 0x97,
42970x02, 0x7C, 0x01, 0xF0, 0x3D, 0xC0, 0x25, 0x00, 0x97, 0x08, 0x7C, 0x01, 0xF0,
42980x05, 0xC1, 0x63, 0x00, 0xDF, 0x81, 0x7C, 0x06, 0xF0, 0x1D, 0xC2, 0x77, 0x14,
42990xDF, 0x03, 0x7C, 0x01, 0xF0, 0x8D, 0xC2, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00,
43000x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0x7F, 0x00, 0xCC, 0x0F, 0xF0, 0x07, 0xC0,
43010x3E, 0x00, 0xB3, 0x00, 0xFC, 0x17, 0x32, 0x03, 0xC5, 0x2C, 0x00, 0x73, 0x00,
43020xCE, 0x02, 0x30, 0x13, 0xC0, 0x1C, 0x01, 0x72, 0x00, 0xCC, 0x01, 0x30, 0x0B,
43030xC0, 0x0F, 0x02, 0x73, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xFF,
43040x00, 0xCC, 0x01, 0x30, 0x0F, 0xC0, 0x03, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00,
43050x00, 0x81, 0x20, 0x36, 0x00, 0x1D, 0x00, 0x44, 0x03, 0xD0, 0x05, 0x40, 0x34,
43060x20, 0x91, 0x09, 0x74, 0x04, 0x10, 0x10, 0x41, 0x24, 0x00, 0x11, 0x02, 0x44,
43070x00, 0x10, 0x11, 0x40, 0xC4, 0x01, 0x11, 0x00, 0x44, 0x09, 0x10, 0x01, 0xC0,
43080x05, 0x00, 0x51, 0x20, 0x74, 0x00, 0xD0, 0x05, 0x40, 0x17, 0x10, 0xDD, 0x00,
43090x44, 0x05, 0x10, 0x0D, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
43100x01, 0xA0, 0x36, 0x00, 0xDD, 0x04, 0x44, 0x02, 0xD8, 0x85, 0x40, 0x36, 0x00,
43110x91, 0x02, 0x14, 0x01, 0x18, 0x15, 0x40, 0x34, 0x81, 0xC9, 0x06, 0x04, 0x03,
43120x10, 0x6D, 0x40, 0x32, 0x80, 0xD5, 0x00, 0x44, 0x00, 0x10, 0x0D, 0x40, 0x27,
43130x00, 0x91, 0x00, 0x74, 0x03, 0xD0, 0x09, 0x40, 0x27, 0x00, 0xCD, 0x86, 0x44,
43140x04, 0x10, 0x1D, 0x40, 0x07, 0x08, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
43150x00, 0x30, 0x00, 0x8D, 0x00, 0x05, 0x02, 0xD0, 0x0C, 0x40, 0x36, 0x00, 0x81,
43160x00, 0x34, 0x02, 0x14, 0x0D, 0x50, 0x34, 0x00, 0x80, 0x00, 0x05, 0x02, 0x14,
43170x0D, 0x60, 0x22, 0x40, 0x95, 0xA0, 0x04, 0x00, 0x10, 0x04, 0x40, 0x23, 0x40,
43180x81, 0x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x00, 0xCD, 0x00, 0x04, 0x04,
43190x14, 0x0C, 0x40, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
43200x36, 0x00, 0x5F, 0x00, 0x4C, 0x03, 0xF0, 0x05, 0xC0, 0x36, 0x00, 0x93, 0x00,
43210x7C, 0x01, 0x30, 0x01, 0xC0, 0x24, 0x10, 0x5B, 0x80, 0x46, 0x81, 0x30, 0x01,
43220xC0, 0x16, 0x00, 0x57, 0x00, 0x4C, 0x00, 0x30, 0x09, 0xC0, 0x07, 0x00, 0x13,
43230x00, 0x7C, 0x01, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0xDF, 0x00, 0x4D, 0x00, 0x30,
43240x0D, 0xC0, 0x03, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x3F,
43250x00, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x06, 0xC0, 0x39, 0x00, 0xAF, 0x80, 0xFC,
43260x00, 0xF0, 0x0B, 0xC0, 0x2B, 0x80, 0x3F, 0x00, 0xFE, 0x00, 0xF0, 0x02, 0xC0,
43270x0D, 0x00, 0x2B, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0D, 0x00, 0x3F, 0x00,
43280xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0xBC, 0x00, 0xF0, 0x0F,
43290xC0, 0x17, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x2F, 0x00,
43300xFF, 0x01, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x5D, 0x00, 0x6F, 0x01, 0xCC, 0x06,
43310xF1, 0x0F, 0xC0, 0x7C, 0x00, 0x33, 0x03, 0xEC, 0x24, 0xB2, 0xCF, 0xC8, 0x3C,
43320x21, 0xFB, 0x84, 0xDC, 0x87, 0xB0, 0x0F, 0x40, 0x5C, 0x02, 0x3F, 0x08, 0xAC,
43330x85, 0xB0, 0x0F, 0xC2, 0x5F, 0x00, 0x37, 0x80, 0xCD, 0x06, 0x90, 0x0B, 0x80,
43340x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x00, 0xDD,
43350x01, 0x74, 0x00, 0xD0, 0x3D, 0x42, 0x60, 0x00, 0x1D, 0x01, 0x44, 0x06, 0xD2,
43360x1D, 0x40, 0x7C, 0x00, 0x11, 0x20, 0x44, 0x10, 0x10, 0xAF, 0x40, 0x7C, 0x02,
43370xF1, 0x02, 0x44, 0x07, 0x14, 0x6D, 0x40, 0x04, 0x01, 0x9D, 0x04, 0x54, 0x85,
43380x10, 0x9F, 0x00, 0x47, 0x40, 0x93, 0x8B, 0x44, 0x52, 0x10, 0x09, 0x40, 0x0D,
43390x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x03, 0x00, 0xCD, 0x00,
43400x34, 0x00, 0xD0, 0x2C, 0x40, 0x31, 0x00, 0x4D, 0x00, 0x04, 0x02, 0xD0, 0x0C,
43410x60, 0x30, 0x20, 0x10, 0x04, 0x64, 0x10, 0x90, 0x4C, 0x48, 0x30, 0x10, 0xC9,
43420x08, 0x34, 0x03, 0x02, 0x2C, 0x45, 0x12, 0x01, 0x0D, 0x00, 0x24, 0x01, 0xD0,
43430x0C, 0x42, 0x33, 0x10, 0x09, 0x20, 0x04, 0x03, 0x10, 0x00, 0x40, 0x4D, 0x80,
43440x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x64, 0x00, 0xDD, 0x00, 0x74,
43450x04, 0xC0, 0x0D, 0x60, 0x24, 0x00, 0x1D, 0x04, 0x45, 0x02, 0xD0, 0x0D, 0x40,
43460x34, 0x08, 0x11, 0x00, 0x64, 0x44, 0x10, 0x0D, 0x48, 0x34, 0x80, 0xD1, 0x00,
43470x64, 0x03, 0x50, 0x0D, 0x40, 0x06, 0x04, 0x8D, 0x11, 0x74, 0x85, 0x54, 0x0D,
43480x42, 0x07, 0x00, 0x55, 0x08, 0x44, 0x02, 0x10, 0x11, 0x41, 0x0D, 0x20, 0x02,
43490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x66, 0x00, 0xDF, 0x00, 0x78, 0x4E,
43500xE0, 0x0D, 0xC0, 0x25, 0x10, 0x4F, 0x07, 0x4C, 0x22, 0xF0, 0x9D, 0x40, 0x34,
43510x40, 0x13, 0x0D, 0x2C, 0x0C, 0xB2, 0x0D, 0xD0, 0x34, 0x10, 0xDB, 0x00, 0x74,
43520x03, 0x30, 0x0D, 0x50, 0x06, 0x28, 0x9E, 0x01, 0x6C, 0x14, 0xF0, 0x0D, 0xC0,
43530x13, 0x00, 0x1B, 0x03, 0x4C, 0x06, 0x30, 0x19, 0xC0, 0x21, 0x80, 0x00, 0x00,
43540x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x2D, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0,
43550x0E, 0xC0, 0x2F, 0x00, 0x7F, 0x00, 0xFC, 0x06, 0xF0, 0x0E, 0xC0, 0x3F, 0x00,
43560xFF, 0x00, 0xDC, 0x02, 0x70, 0x0E, 0xC0, 0x3F, 0x00, 0xEF, 0x00, 0xDC, 0x03,
43570xB0, 0x0F, 0xC2, 0x0D, 0x10, 0xBD, 0x00, 0xDC, 0x01, 0xB4, 0x0F, 0xC0, 0x8F,
43580x50, 0x6B, 0x00, 0xFC, 0x26, 0xF4, 0x0A, 0xC0, 0x1F, 0x20, 0x06, 0x00, 0x00,
43590x00, 0x00, 0x00, 0x02, 0x08, 0x85, 0x02, 0xDF, 0x00, 0x7C, 0x40, 0x30, 0x0D,
43600xC0, 0x37, 0x00, 0x57, 0x02, 0x4C, 0x42, 0xF0, 0x0D, 0xC0, 0x37, 0x02, 0xDF,
43610x00, 0x7C, 0x0A, 0xF0, 0x0D, 0xC4, 0x34, 0x0A, 0xDF, 0x00, 0x5C, 0x23, 0x70,
43620x0D, 0xC1, 0x15, 0x00, 0x13, 0x02, 0x4C, 0x00, 0x50, 0x0D, 0xC9, 0x36, 0x08,
43630x17, 0x12, 0x4D, 0x03, 0xF0, 0x09, 0x82, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00,
43640x00, 0x00, 0x13, 0xA0, 0x24, 0x00, 0xDD, 0x60, 0x70, 0x18, 0x10, 0x0F, 0x40,
43650x27, 0x00, 0x51, 0x05, 0x44, 0x4E, 0xD0, 0x0D, 0x40, 0x33, 0x00, 0xCD, 0x00,
43660x74, 0x02, 0xD0, 0xAF, 0x40, 0x38, 0x02, 0xFD, 0x00, 0x34, 0x2B, 0xB0, 0x2E,
43670x40, 0x04, 0x40, 0x11, 0x08, 0x2C, 0x03, 0x10, 0x2F, 0x48, 0x04, 0x02, 0x51,
43680x00, 0x44, 0x13, 0xD0, 0x09, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
43690x00, 0x03, 0x20, 0xC0, 0x04, 0xCD, 0x00, 0x34, 0x0E, 0x50, 0x0C, 0x40, 0x13,
43700x00, 0x05, 0x06, 0x05, 0x0E, 0xD0, 0x08, 0x40, 0xF3, 0x04, 0x0D, 0x00, 0x34,
43710x00, 0xD0, 0x0C, 0x60, 0x70, 0x00, 0xCD, 0x07, 0x34, 0x03, 0x10, 0x0C, 0x48,
43720x11, 0x80, 0x04, 0x00, 0x04, 0x00, 0x40, 0x3C, 0x40, 0x90, 0x00, 0x49, 0x02,
43730x44, 0x13, 0xD1, 0x50, 0x44, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43740x04, 0x00, 0x58, 0x00, 0xED, 0x01, 0xB4, 0x01, 0x50, 0x1E, 0x40, 0x6B, 0x00,
43750x31, 0x01, 0x84, 0x06, 0xD0, 0x1A, 0x40, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x07,
43760xD0, 0x1C, 0x40, 0x78, 0x00, 0xED, 0x31, 0xB4, 0x07, 0x90, 0x1E, 0x40, 0x48,
43770x80, 0xE5, 0x01, 0xE4, 0x04, 0x10, 0x9C, 0x40, 0x4C, 0x01, 0xC9, 0x01, 0x84,
43780x16, 0xD8, 0x9A, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
43790x1A, 0x90, 0x02, 0xCF, 0x00, 0x7C, 0x23, 0x70, 0x0C, 0xC0, 0x33, 0x00, 0x07,
43800x04, 0x0C, 0x02, 0xF0, 0x4C, 0xC0, 0x33, 0x01, 0xCD, 0x00, 0x3C, 0x02, 0xF0,
43810x8C, 0x40, 0x30, 0x02, 0xCF, 0x00, 0x3C, 0x03, 0x30, 0xDD, 0xC0, 0x15, 0x2A,
43820x57, 0x24, 0x0C, 0x61, 0x70, 0x8C, 0xC9, 0x22, 0x90, 0x89, 0x12, 0x0C, 0x03,
43830xF0, 0x00, 0xC1, 0x4B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38,
43840x3D, 0x08, 0xFF, 0x00, 0xFC, 0x13, 0xB0, 0x0F, 0xC1, 0x2F, 0x00, 0x3F, 0x00,
43850xFC, 0x22, 0xF0, 0x0F, 0xC0, 0x77, 0x00, 0xDF, 0x08, 0xFC, 0x23, 0xF0, 0x2D,
43860x52, 0x3F, 0x20, 0xDF, 0x00, 0x3C, 0x03, 0xF4, 0x0D, 0xC0, 0x07, 0x20, 0xDB,
43870x00, 0x7C, 0x81, 0xF0, 0x8F, 0xC2, 0x0B, 0x81, 0xF7, 0x00, 0xF0, 0x12, 0xF0,
43880x03, 0xC2, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37,
43890x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0x1F, 0x00, 0x7C,
43900x02, 0xF0, 0x09, 0xC0, 0x37, 0x00, 0x1F, 0x00, 0x6C, 0x01, 0xF0, 0x0D, 0xC0,
43910xB7, 0x00, 0xDF, 0x08, 0x3C, 0x03, 0x31, 0x1D, 0xC8, 0x07, 0x10, 0x9F, 0x00,
43920x4F, 0x00, 0xF0, 0x4D, 0xC8, 0x10, 0x08, 0x9B, 0x00, 0x4D, 0x83, 0x30, 0x01,
43930xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x39, 0x00,
43940xED, 0x00, 0xB4, 0x03, 0xD3, 0x4E, 0x40, 0x2B, 0x00, 0x2D, 0x00, 0x9C, 0x02,
43950xD0, 0x0A, 0x60, 0xBB, 0x10, 0xFC, 0x00, 0x84, 0x03, 0xD0, 0x4E, 0x40, 0xBB,
43960x04, 0xED, 0x0C, 0xB4, 0x03, 0x40, 0x2E, 0x40, 0x0B, 0x00, 0xED, 0x20, 0x84,
43970x00, 0xD0, 0xAE, 0x40, 0x08, 0x00, 0xE7, 0x00, 0xC4, 0x83, 0x12, 0x0F, 0x40,
43980x4C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x59, 0x18, 0xE5,
43990x01, 0xB4, 0x07, 0x50, 0x5E, 0x40, 0x7B, 0x00, 0x2D, 0x01, 0xB4, 0x06, 0x50,
44000x1E, 0x40, 0x7B, 0x01, 0xED, 0x11, 0x84, 0x07, 0xD0, 0xDE, 0x40, 0x7B, 0x01,
44010xED, 0x81, 0xB4, 0x07, 0x00, 0x4E, 0x40, 0x5B, 0x20, 0xED, 0x01, 0x94, 0x04,
44020xD1, 0x5C, 0x50, 0x69, 0x00, 0x85, 0x01, 0x94, 0x0F, 0x10, 0x16, 0x40, 0x12,
44030x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0xB3, 0x80, 0xCD, 0x40,
44040x34, 0x27, 0xD0, 0x0C, 0x40, 0x23, 0x11, 0x8D, 0x03, 0x14, 0x07, 0xD0, 0x0C,
44050x40, 0x33, 0x00, 0xCD, 0x01, 0x04, 0x47, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD,
44060x00, 0x34, 0x83, 0x00, 0x0C, 0x44, 0xA3, 0x02, 0xDD, 0x02, 0x04, 0x05, 0xD0,
44070x0C, 0x44, 0x01, 0x00, 0xC5, 0x07, 0x14, 0x87, 0x10, 0x6C, 0x40, 0x5A, 0x20,
44080x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x20, 0x1D, 0x04, 0x5F, 0x00, 0xFC,
44090x09, 0xF0, 0x05, 0xC0, 0xDF, 0x01, 0x7F, 0x44, 0x74, 0x45, 0xF8, 0x05, 0xC0,
44100x17, 0x00, 0x7F, 0x02, 0xCD, 0x95, 0xF0, 0x05, 0x40, 0x17, 0x00, 0x5F, 0x80,
44110x3C, 0x01, 0x31, 0x05, 0xC0, 0x5F, 0x00, 0x7F, 0x02, 0x8C, 0xBD, 0xF1, 0x05,
44120xC0, 0x1D, 0x00, 0x67, 0x07, 0x5C, 0x01, 0x36, 0x27, 0xC4, 0x5E, 0x00, 0x0C,
44130x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x05, 0x04, 0x1F, 0x00, 0x7C, 0x80,
44140xF0, 0x01, 0xC0, 0x07, 0x08, 0x1F, 0x10, 0x70, 0x00, 0xF9, 0x01, 0xC4, 0x07,
44150x00, 0x1F, 0x04, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x42, 0x7C,
44160x08, 0xF4, 0x01, 0xC0, 0x07, 0x01, 0x1D, 0x82, 0x7C, 0x00, 0xF0, 0x01, 0xA0,
44170x86, 0x00, 0x16, 0x00, 0x68, 0x08, 0xF2, 0x01, 0xD0, 0x49, 0x20, 0x04, 0x00,
44180x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x65, 0x01, 0x97, 0x00, 0x7C, 0x4E, 0xF8,
44190x09, 0xC0, 0x27, 0x00, 0x93, 0x82, 0x7C, 0x02, 0xF0, 0x09, 0xC8, 0x27, 0x89,
44200x93, 0x80, 0x7C, 0x02, 0x30, 0x19, 0xC0, 0x64, 0x00, 0x9F, 0x00, 0x7C, 0x16,
44210x30, 0x08, 0xC0, 0x24, 0x00, 0x9F, 0x39, 0x4C, 0x02, 0x34, 0x29, 0xD8, 0x24,
44220x40, 0x91, 0x09, 0x4C, 0x0E, 0x34, 0x08, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00,
44230x00, 0x00, 0x00, 0x01, 0x20, 0x66, 0x01, 0x9D, 0x00, 0x74, 0x0E, 0xD0, 0x09,
44240x60, 0x23, 0x20, 0x91, 0x03, 0x76, 0x06, 0xD0, 0x09, 0x40, 0xEB, 0x81, 0x8B,
44250x00, 0x6C, 0x02, 0x50, 0x19, 0xD0, 0x64, 0x12, 0x9D, 0x02, 0x74, 0x02, 0xB0,
44260x09, 0xC0, 0x26, 0x00, 0x9D, 0x43, 0x45, 0x2E, 0x10, 0x38, 0x48, 0xA0, 0x11,
44270x91, 0x01, 0x44, 0x02, 0x12, 0x29, 0x40, 0x05, 0x80, 0x08, 0x00, 0x00, 0x00,
44280x00, 0x00, 0x18, 0xA0, 0x24, 0x18, 0x9D, 0x00, 0x54, 0x0A, 0xD0, 0x09, 0x40,
44290x27, 0x00, 0x91, 0x10, 0x74, 0x0E, 0xD1, 0x09, 0x48, 0x25, 0x80, 0x91, 0x00,
44300x14, 0x02, 0x10, 0x88, 0x40, 0x24, 0x00, 0x9D, 0x02, 0x54, 0x0A, 0x90, 0x09,
44310x44, 0x24, 0x00, 0x9D, 0x02, 0x44, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x95,
44320x02, 0x25, 0x02, 0x10, 0x49, 0x60, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
44330x00, 0x10, 0x22, 0x20, 0x05, 0x8D, 0x00, 0x34, 0x52, 0xD0, 0x08, 0x40, 0xA7,
44340x08, 0x81, 0x00, 0x36, 0x02, 0xDA, 0x08, 0x40, 0x23, 0x00, 0x91, 0x08, 0x04,
44350x22, 0x10, 0x8C, 0x60, 0x22, 0x80, 0x8D, 0x24, 0x34, 0x02, 0x94, 0x58, 0x40,
44360x22, 0x00, 0x8D, 0x0C, 0x44, 0x03, 0x10, 0x0C, 0x40, 0x24, 0x00, 0x85, 0x00,
44370x24, 0x22, 0x10, 0x48, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44380x1D, 0xB8, 0x06, 0x11, 0x1F, 0x00, 0x5C, 0x10, 0xD0, 0x41, 0x41, 0x07, 0x40,
44390x13, 0x00, 0x76, 0x00, 0xF0, 0x01, 0xC0, 0x47, 0x40, 0x11, 0x02, 0x54, 0x08,
44400x34, 0x61, 0xC1, 0x14, 0x15, 0x1F, 0x8A, 0x7C, 0x00, 0xB4, 0xA1, 0xC4, 0x84,
44410x02, 0x0F, 0x02, 0x4C, 0x00, 0x30, 0x41, 0xC1, 0x04, 0x00, 0x15, 0x14, 0x6C,
44420x09, 0x30, 0xA5, 0xC0, 0x74, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
44430xB8, 0x2F, 0x05, 0x9F, 0x00, 0xFC, 0x52, 0xF0, 0x09, 0xC0, 0x6F, 0x20, 0xBF,
44440x00, 0xFC, 0x02, 0xF0, 0x2B, 0xC0, 0xA7, 0x00, 0xBF, 0x04, 0xFC, 0x12, 0xF0,
44450x49, 0x42, 0x25, 0x00, 0x9F, 0x08, 0x7C, 0x02, 0xF4, 0x89, 0xC0, 0x2D, 0x00,
44460xBF, 0x0C, 0xFC, 0x02, 0xF0, 0x09, 0xC0, 0x3F, 0x00, 0xBB, 0x00, 0xDC, 0x12,
44470xF0, 0x8B, 0xC0, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA8,
44480x2F, 0x01, 0x9F, 0x00, 0xFC, 0x32, 0xB0, 0x09, 0xC0, 0xA7, 0x20, 0xBF, 0x00,
44490xCD, 0x02, 0xF0, 0x49, 0xC5, 0x6F, 0x00, 0x9B, 0x80, 0x6E, 0x02, 0x79, 0x8B,
44500xC0, 0x2F, 0x01, 0xBB, 0x14, 0xAC, 0x82, 0x30, 0x0B, 0xCC, 0x21, 0x00, 0xBF,
44510x28, 0xCC, 0x82, 0x31, 0x4B, 0xC1, 0x2E, 0x68, 0xA3, 0x00, 0xBC, 0x02, 0xF0,
44520x0F, 0xC0, 0x77, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07,
44530x05, 0x1D, 0x00, 0x70, 0x31, 0x14, 0x21, 0x40, 0x47, 0x00, 0x1D, 0x00, 0x44,
44540x00, 0xD0, 0x01, 0x00, 0x07, 0x00, 0x5A, 0x30, 0x44, 0xC0, 0xD8, 0x81, 0x40,
44550x07, 0x00, 0x11, 0x04, 0x51, 0x00, 0x10, 0x01, 0xC0, 0x05, 0x04, 0x5D, 0x08,
44560x4C, 0x00, 0x11, 0x01, 0x40, 0x07, 0x30, 0x11, 0x00, 0x64, 0x80, 0xD0, 0x01,
44570x40, 0x63, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x03,
44580x8D, 0x00, 0x34, 0x12, 0x10, 0x88, 0x40, 0x23, 0x00, 0x8D, 0x80, 0x04, 0x82,
44590xD2, 0x08, 0x0A, 0xA3, 0x00, 0x89, 0x04, 0x04, 0x02, 0x50, 0x08, 0x40, 0x23,
44600x02, 0x89, 0x14, 0x14, 0x02, 0x14, 0x08, 0x40, 0x21, 0x00, 0x8D, 0x00, 0x05,
44610x02, 0x18, 0x08, 0x48, 0x27, 0x20, 0x85, 0x00, 0x36, 0x02, 0xD0, 0x08, 0x40,
44620x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0xA5, 0x00, 0x9D,
44630x00, 0x74, 0x12, 0x10, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x10, 0x44, 0x02, 0xD0,
44640x09, 0x48, 0x26, 0x20, 0x89, 0x00, 0x44, 0x02, 0xD8, 0x09, 0x40, 0x27, 0x00,
44650x91, 0x00, 0x44, 0x02, 0xD0, 0x09, 0x68, 0x25, 0x10, 0x9D, 0x04, 0x46, 0x02,
44660x99, 0x0D, 0x40, 0x27, 0x00, 0xD5, 0x00, 0x64, 0x22, 0xD0, 0x09, 0x41, 0x63,
44670x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x65, 0x00, 0x9D, 0x00,
44680x7C, 0x06, 0x30, 0x09, 0xC0, 0x2F, 0x06, 0x9F, 0x00, 0x4C, 0x02, 0xF0, 0x09,
44690xC0, 0x27, 0x00, 0x9B, 0x02, 0x65, 0x42, 0x72, 0x09, 0xC2, 0x27, 0x00, 0x9B,
44700x00, 0x54, 0x02, 0x30, 0x09, 0xC0, 0x25, 0x33, 0x9F, 0x21, 0x4C, 0x46, 0x30,
44710x09, 0xC0, 0x22, 0x00, 0x95, 0xA7, 0x7E, 0x82, 0xE0, 0x39, 0xC0, 0x17, 0x00,
44720x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x25, 0x25, 0x9F, 0x80, 0x3C,
44730x06, 0x70, 0x09, 0xE2, 0x27, 0x00, 0x9F, 0x10, 0x7C, 0x26, 0xF0, 0x59, 0xC0,
44740x27, 0x0C, 0x97, 0x02, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x50,
44750x5C, 0x02, 0x32, 0x09, 0xE8, 0x27, 0x10, 0x8F, 0x01, 0x5C, 0x0A, 0x74, 0x09,
44760xC1, 0xA6, 0x00, 0x9B, 0x05, 0x7E, 0x02, 0xF0, 0x59, 0xC0, 0x5B, 0x20, 0x04,
44770x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00, 0x1F, 0x00, 0x6C, 0x40,
44780xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x80, 0xB0, 0x01, 0xC0, 0x03,
44790x00, 0x17, 0x02, 0x7C, 0x08, 0xF0, 0x01, 0xC2, 0x00, 0x01, 0x1F, 0x00, 0x4C,
44800x00, 0xB0, 0x81, 0xC1, 0x07, 0x40, 0x17, 0x22, 0x5C, 0x10, 0xF0, 0x01, 0xC0,
44810x07, 0x00, 0x13, 0x02, 0x4C, 0x40, 0x30, 0x01, 0x82, 0x53, 0x20, 0x04, 0x00,
44820x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x9C, 0x00, 0x5D, 0x40, 0xF4, 0x05, 0xD8,
44830x05, 0xC0, 0x15, 0x20, 0x6C, 0x00, 0xF4, 0x49, 0x10, 0x05, 0x40, 0x9F, 0x80,
44840x5B, 0x00, 0x76, 0x01, 0xD0, 0x87, 0x40, 0x9C, 0x00, 0x7D, 0x02, 0x84, 0x01,
44850xF4, 0x27, 0xC0, 0x15, 0x00, 0x71, 0x00, 0x84, 0x89, 0x10, 0x77, 0x40, 0xDF,
44860x00, 0x70, 0x07, 0xC4, 0x01, 0x16, 0x97, 0x40, 0x43, 0x00, 0x02, 0x00, 0x00,
44870x00, 0x00, 0x00, 0x10, 0xA8, 0xF2, 0x00, 0xCD, 0x00, 0x34, 0x23, 0xD0, 0x0C,
44880x48, 0x31, 0x00, 0x88, 0x02, 0x36, 0x1F, 0x90, 0x0C, 0x40, 0x13, 0x10, 0xC5,
44890x00, 0x34, 0x03, 0x90, 0x3C, 0x60, 0xB0, 0x00, 0xD5, 0x0B, 0x00, 0x03, 0x91,
44900x3C, 0x44, 0x31, 0x00, 0xC1, 0x01, 0x34, 0x0A, 0x50, 0x14, 0x40, 0xF2, 0x01,
44910xC1, 0x07, 0x24, 0x0B, 0x12, 0x8C, 0x44, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00,
44920x00, 0x00, 0x04, 0x80, 0x38, 0x04, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40,
44930x39, 0x01, 0x6D, 0x10, 0xB4, 0x04, 0x18, 0x0E, 0x40, 0x1B, 0x00, 0xE1, 0x44,
44940xB4, 0x03, 0xD0, 0x36, 0x40, 0x38, 0x00, 0xED, 0x00, 0x85, 0x03, 0xD4, 0x06,
44950x60, 0x7D, 0x02, 0xE1, 0x02, 0xE6, 0x02, 0x10, 0x06, 0x40, 0xBB, 0x20, 0xE1,
44960x61, 0xE5, 0x8F, 0x50, 0x06, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
44970x00, 0x14, 0x18, 0x78, 0x00, 0xEF, 0x01, 0xBC, 0x05, 0xD0, 0x1E, 0xC0, 0xF9,
44980x00, 0x2B, 0x01, 0xBC, 0x04, 0xB1, 0x1E, 0xC0, 0x73, 0x00, 0xE5, 0x35, 0xB4,
44990x2F, 0xB0, 0x1F, 0xD0, 0x78, 0x00, 0xCF, 0x41, 0x8C, 0x05, 0xB4, 0x16, 0xC0,
45000x79, 0x03, 0xF3, 0x01, 0xBD, 0x04, 0x70, 0x16, 0xC0, 0x7B, 0x40, 0x23, 0x01,
45010xAC, 0x07, 0x31, 0x1E, 0xC4, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45020x10, 0xB8, 0x35, 0x00, 0xDF, 0x00, 0xFC, 0x01, 0xF0, 0x0D, 0xC0, 0x35, 0x00,
45030x1E, 0x00, 0x3C, 0x00, 0xF0, 0x0D, 0xC0, 0x37, 0x10, 0xDF, 0x4A, 0x7C, 0x1B,
45040xF0, 0x05, 0xC8, 0x07, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF6, 0x05, 0xC6, 0xB5,
45050x01, 0x5E, 0x00, 0x1C, 0x00, 0x50, 0x05, 0xC0, 0x33, 0x00, 0x1F, 0x00, 0x5C,
45060x03, 0xB0, 0x09, 0xC8, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
45070x20, 0x5D, 0x00, 0xF3, 0x01, 0xFC, 0x27, 0xF8, 0x8F, 0xC0, 0x7B, 0x00, 0x3B,
45080x01, 0xFC, 0x04, 0x70, 0x1F, 0xC0, 0x5F, 0x00, 0xFF, 0x09, 0xFE, 0x27, 0xB0,
45090x1B, 0xC0, 0x76, 0x00, 0xFF, 0x01, 0x8C, 0x07, 0x30, 0x93, 0xC4, 0x7F, 0x00,
45100xB3, 0x01, 0xCC, 0x16, 0xF8, 0x97, 0xC0, 0x7B, 0x00, 0xFB, 0x41, 0xF8, 0x04,
45110x34, 0x9B, 0xC0, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00,
45120x19, 0x22, 0xE1, 0x40, 0xB4, 0x81, 0x78, 0x0E, 0x42, 0x3B, 0x00, 0x61, 0x00,
45130xB4, 0x00, 0xD0, 0x0E, 0x44, 0x1B, 0x21, 0xE6, 0x08, 0xF4, 0x23, 0x14, 0x0A,
45140x40, 0x78, 0x00, 0xBD, 0x00, 0x84, 0x23, 0xF0, 0x00, 0x40, 0x3B, 0x01, 0xA1,
45150x24, 0xAC, 0x12, 0xB0, 0x06, 0xC0, 0x3B, 0x06, 0xE1, 0x08, 0xB4, 0x20, 0xB0,
45160x03, 0x48, 0x55, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39,
45170x04, 0xE1, 0x00, 0xB4, 0x03, 0x58, 0x8E, 0x40, 0x7F, 0x04, 0x21, 0x00, 0xB4,
45180x00, 0x50, 0x0E, 0x40, 0x19, 0x08, 0xEC, 0x42, 0xB4, 0x03, 0x10, 0x02, 0x40,
45190x38, 0x00, 0x6D, 0x00, 0xA4, 0x01, 0x10, 0x02, 0x60, 0x39, 0x24, 0xE1, 0x80,
45200xB4, 0x72, 0x1C, 0x06, 0x46, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x40, 0x50, 0x0A,
45210x42, 0x20, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x25, 0x00,
45220xC1, 0x20, 0x34, 0x08, 0x58, 0x0C, 0x40, 0xF3, 0x00, 0x49, 0x11, 0x34, 0x20,
45230xD8, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x01, 0x34, 0x03, 0x90, 0x01, 0x40, 0x02,
45240x80, 0x0D, 0x00, 0x24, 0x01, 0x90, 0x00, 0x40, 0xF3, 0x00, 0x41, 0x01, 0x34,
45250x06, 0x90, 0x04, 0x40, 0xF1, 0x00, 0xC1, 0x00, 0x36, 0x04, 0x18, 0x39, 0x40,
45260x09, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0xA5, 0x40, 0xD3,
45270x00, 0x7C, 0x6E, 0x70, 0x0D, 0x40, 0xF7, 0x40, 0x0B, 0x07, 0x7C, 0x00, 0x70,
45280x0D, 0xC2, 0x15, 0x00, 0xFF, 0x01, 0xF4, 0x4F, 0x30, 0x0D, 0xC0, 0x24, 0x00,
45290x1F, 0x00, 0x24, 0x02, 0x30, 0x01, 0xC0, 0xF9, 0x00, 0x53, 0xA3, 0x3C, 0x02,
45300x30, 0x04, 0x40, 0x77, 0x08, 0xDF, 0x25, 0x7C, 0x07, 0x50, 0x61, 0xC0, 0x54,
45310x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x27, 0x11, 0xDF, 0x00,
45320x7C, 0x0A, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0x57, 0x02, 0x7C, 0x00, 0xF0, 0x0D,
45330xC0, 0x17, 0x00, 0xD7, 0x08, 0x7C, 0x43, 0x70, 0x05, 0xD8, 0x25, 0x10, 0x9F,
45340x00, 0x5C, 0x02, 0xF0, 0x21, 0xC0, 0x37, 0x04, 0xDF, 0x08, 0x68, 0x0A, 0xF9,
45350x25, 0x80, 0x37, 0x01, 0x0E, 0x10, 0x7C, 0x0B, 0xF2, 0x21, 0xC0, 0xB7, 0x20,
45360x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x07, 0x00, 0xF3, 0x00, 0xFC,
45370x00, 0xF0, 0x0E, 0xC0, 0x3E, 0x04, 0x33, 0x00, 0xEC, 0x00, 0xF0, 0x0F, 0xC0,
45380x7F, 0x00, 0xFF, 0x00, 0xEC, 0x03, 0x70, 0x2B, 0xC0, 0x2B, 0x00, 0x3B, 0x20,
45390xFC, 0x00, 0xB0, 0x03, 0xC0, 0x3F, 0x00, 0x23, 0x11, 0xCC, 0x42, 0x76, 0x87,
45400xC0, 0x3C, 0x00, 0x3F, 0x02, 0xC4, 0x07, 0xF0, 0x03, 0xC1, 0x04, 0x20, 0x0C,
45410x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x66, 0x08, 0xD1, 0x40, 0x76, 0x04,
45420xD0, 0x0D, 0x48, 0x35, 0x00, 0x11, 0x00, 0x44, 0x14, 0xD0, 0x0D, 0xC0, 0x27,
45430x80, 0xDD, 0x80, 0x7C, 0x03, 0xD0, 0x11, 0x40, 0xC4, 0x44, 0x91, 0x21, 0x7C,
45440x07, 0xB0, 0x51, 0x40, 0x37, 0x00, 0x11, 0x0B, 0x44, 0x07, 0x10, 0x0D, 0x48,
45450xF0, 0x00, 0x11, 0x03, 0x44, 0x00, 0xD2, 0x31, 0x40, 0x04, 0x00, 0x08, 0x00,
45460x00, 0x00, 0x00, 0x00, 0x01, 0xA2, 0x46, 0x04, 0xD1, 0x00, 0x74, 0x0E, 0xD0,
45470x0D, 0x40, 0x30, 0x00, 0x11, 0x30, 0x64, 0x04, 0xD0, 0x0D, 0x48, 0x17, 0x01,
45480xDD, 0x00, 0x74, 0x03, 0xD2, 0x0D, 0x40, 0x44, 0x00, 0x91, 0x83, 0x76, 0x46,
45490x90, 0x11, 0x40, 0x37, 0x00, 0x11, 0x02, 0x46, 0x0E, 0x50, 0x05, 0x40, 0x64,
45500x44, 0xD1, 0x20, 0x54, 0x18, 0xD2, 0x39, 0x40, 0x04, 0x08, 0x0A, 0x00, 0x00,
45510x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x34, 0x02, 0xD0, 0x0C,
45520x40, 0x31, 0x00, 0x51, 0x00, 0x04, 0x00, 0xD0, 0x0C, 0x40, 0x11, 0x00, 0xCD,
45530x00, 0x34, 0x03, 0xD0, 0x0C, 0x70, 0x00, 0x01, 0x81, 0x00, 0x34, 0x02, 0x99,
45540x00, 0x40, 0x37, 0x00, 0x81, 0x20, 0x04, 0x02, 0x10, 0x04, 0x40, 0x24, 0x00,
45550x01, 0x00, 0x14, 0x03, 0xD0, 0x00, 0x52, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
45560x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xD3, 0x00, 0x74, 0x02, 0xF0, 0x0D, 0x40,
45570x3C, 0x80, 0x13, 0x00, 0x6C, 0x00, 0xF0, 0x0D, 0x60, 0x17, 0x00, 0xFD, 0x00,
45580xEC, 0x03, 0xF8, 0x00, 0xC0, 0x06, 0x00, 0x13, 0x00, 0x7C, 0x00, 0xB0, 0x81,
45590xC0, 0x3B, 0x40, 0x03, 0x00, 0x4C, 0x02, 0x70, 0x01, 0xC0, 0x24, 0x10, 0xD3,
45600x00, 0x1C, 0x00, 0xF0, 0x09, 0xC4, 0x04, 0x64, 0x08, 0x00, 0x00, 0x00, 0x00,
45610x00, 0x05, 0xB8, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC2, 0x3D,
45620x40, 0x7F, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xDC,
45630x03, 0xF0, 0x03, 0x00, 0x0F, 0x2A, 0x3F, 0x00, 0xDC, 0x03, 0x70, 0x03, 0xC0,
45640x3F, 0x00, 0x3F, 0x00, 0xBC, 0x03, 0xF0, 0x07, 0x40, 0x0F, 0x40, 0x37, 0x00,
45650xEC, 0x00, 0xF0, 0x0B, 0xC8, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
45660x03, 0xA8, 0x7F, 0x00, 0x3E, 0x00, 0xFC, 0x04, 0x30, 0x1F, 0xC0, 0x2C, 0x00,
45670xBF, 0x24, 0xCC, 0x03, 0xF0, 0x43, 0xC1, 0x3D, 0x21, 0x3F, 0xA0, 0xDC, 0x13,
45680x30, 0x9E, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0x98, 0x17, 0xF0, 0x1F, 0xC0, 0x4C,
45690x00, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x4F, 0xC0, 0x7E, 0x02, 0xFF, 0x00, 0xCC,
45700x03, 0x30, 0x83, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
45710x10, 0x36, 0x05, 0x1D, 0x02, 0x44, 0x00, 0x10, 0x0D, 0x50, 0x24, 0x08, 0x9D,
45720x08, 0xC4, 0x2B, 0x10, 0x39, 0x44, 0x7C, 0x02, 0x9D, 0x01, 0xC4, 0x23, 0x11,
45730x1D, 0x40, 0xFF, 0x01, 0x5D, 0x01, 0xC4, 0x0F, 0xD0, 0x0D, 0x40, 0x44, 0x00,
45740xDD, 0x00, 0x5C, 0x07, 0xD0, 0xBF, 0x40, 0x34, 0x01, 0xF7, 0x03, 0xC4, 0x2F,
45750x10, 0x09, 0x40, 0x0D, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0,
45760x33, 0x00, 0x0D, 0x03, 0x54, 0x00, 0x90, 0x0C, 0x40, 0x21, 0x00, 0x8D, 0x00,
45770x04, 0x83, 0x10, 0x01, 0x60, 0x30, 0x08, 0x05, 0x00, 0x24, 0x03, 0x10, 0x4C,
45780x40, 0x32, 0x06, 0x89, 0x00, 0x05, 0x23, 0xD2, 0x0C, 0x48, 0x00, 0x20, 0xCD,
45790x04, 0x36, 0x03, 0xD0, 0x0C, 0x40, 0x30, 0x01, 0xCD, 0x02, 0x05, 0x03, 0x14,
45800x40, 0x44, 0x4C, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x35,
45810x00, 0x1D, 0x01, 0x44, 0x46, 0x94, 0x0D, 0x40, 0xE5, 0x00, 0x9D, 0x20, 0x44,
45820x03, 0x10, 0x19, 0x40, 0x34, 0x00, 0x1D, 0x01, 0x64, 0x03, 0x11, 0x0D, 0x40,
45830x37, 0x20, 0xDC, 0x10, 0x44, 0x03, 0xD0, 0x8C, 0x40, 0x44, 0x00, 0xDC, 0x00,
45840x54, 0x03, 0xD0, 0x0D, 0x40, 0x34, 0x00, 0xD5, 0x00, 0x44, 0x03, 0x10, 0x49,
45850x40, 0x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x37, 0x00,
45860x1F, 0x01, 0x7C, 0x0C, 0xB0, 0x0D, 0xC0, 0x65, 0x00, 0x9F, 0x80, 0x0C, 0x03,
45870xB4, 0x35, 0xC0, 0x35, 0x00, 0x9F, 0x01, 0x6C, 0x03, 0x34, 0x0D, 0xC2, 0x36,
45880x20, 0xDB, 0x80, 0x5C, 0x03, 0xE0, 0x1D, 0x80, 0x44, 0x04, 0x9F, 0x08, 0x7C,
45890x07, 0xF0, 0x0D, 0xC0, 0x36, 0x00, 0xDD, 0x00, 0x4C, 0x03, 0x30, 0x1D, 0xC0,
45900x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0x2F,
45910x00, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x2E, 0x00, 0x9F, 0x00, 0xFD, 0x03, 0xB0,
45920x0F, 0xC0, 0x3F, 0x00, 0xAF, 0x00, 0xDC, 0x03, 0xF0, 0x2F, 0xC6, 0x3F, 0x00,
45930x69, 0x08, 0xFC, 0x03, 0xF0, 0x1F, 0xD0, 0x0F, 0x00, 0xBF, 0x00, 0xFC, 0x27,
45940xF1, 0x0E, 0xC4, 0x3F, 0x01, 0xDF, 0x00, 0xBC, 0x03, 0xF0, 0x17, 0xC8, 0x1F,
45950x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x04, 0x1F, 0x21,
45960x7C, 0x02, 0xF0, 0x0D, 0xC0, 0xA7, 0x00, 0xD3, 0x00, 0x4C, 0xC3, 0x30, 0x25,
45970xC0, 0x34, 0x00, 0x17, 0x00, 0x7C, 0x13, 0xF0, 0x0D, 0xD0, 0x34, 0x00, 0x9F,
45980x21, 0x6C, 0x43, 0x30, 0x0D, 0xD1, 0x44, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0xF0,
45990x0D, 0xC2, 0x36, 0x00, 0xCF, 0x04, 0x4C, 0x13, 0xF0, 0x0D, 0xC0, 0x8B, 0x20,
46000x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xB4, 0x00, 0x1D, 0x00, 0x34,
46010x12, 0xD0, 0xBD, 0x41, 0x27, 0x04, 0xD1, 0x00, 0xD4, 0x13, 0x10, 0x0C, 0x45,
46020x3C, 0x00, 0x1D, 0x00, 0xE4, 0x03, 0xD2, 0x0D, 0x40, 0x3C, 0x00, 0xDD, 0x00,
46030xC4, 0x07, 0x10, 0x0D, 0x40, 0x04, 0x00, 0xD1, 0x20, 0x74, 0x03, 0xD0, 0x1F,
46040x40, 0x34, 0x00, 0xFD, 0x82, 0xC4, 0x0B, 0xD0, 0x05, 0x40, 0x6F, 0x00, 0x02,
46050x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x30, 0x00, 0x0D, 0x20, 0x34, 0x00,
46060xD0, 0x1D, 0x40, 0x33, 0x00, 0x94, 0x60, 0x24, 0x03, 0x10, 0x04, 0x40, 0x32,
46070x00, 0x0D, 0x00, 0x74, 0x03, 0xD0, 0x0C, 0x40, 0x32, 0x00, 0xCD, 0x00, 0x24,
46080x23, 0x50, 0x2C, 0x40, 0x03, 0x84, 0xC5, 0x12, 0x34, 0x03, 0xD0, 0x9C, 0x40,
46090x30, 0x00, 0xC9, 0x49, 0x24, 0x27, 0xD0, 0x05, 0x40, 0x1F, 0x00, 0x0A, 0x00,
46100x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x78, 0x00, 0x2D, 0x21, 0xB4, 0x07, 0xD0,
46110x9E, 0x40, 0x6B, 0x02, 0xA4, 0x01, 0xB4, 0x07, 0x10, 0x1F, 0x40, 0x7A, 0x00,
46120xED, 0x81, 0xA4, 0x07, 0xD0, 0x1F, 0x60, 0x7A, 0x00, 0xC9, 0x03, 0x84, 0x07,
46130x50, 0x1E, 0x40, 0x4B, 0x50, 0xE5, 0x89, 0xB4, 0x17, 0xD1, 0x1C, 0x40, 0x78,
46140x00, 0xED, 0x81, 0xA4, 0x07, 0xD0, 0x9E, 0x40, 0x37, 0x00, 0x02, 0x00, 0x00,
46150x00, 0x00, 0x00, 0x12, 0x18, 0x30, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x8C,
46160xC0, 0x37, 0x08, 0x87, 0x00, 0x6C, 0x13, 0x30, 0x04, 0xC0, 0x32, 0x00, 0x4F,
46170x02, 0x3C, 0x23, 0xF0, 0x0C, 0xC0, 0x32, 0x00, 0xCF, 0x00, 0x2C, 0x03, 0x70,
46180x0D, 0xC0, 0x03, 0x00, 0xC7, 0x08, 0x3C, 0x03, 0xF0, 0x0C, 0xC0, 0x30, 0x00,
46190xCB, 0x00, 0x2C, 0x03, 0xF0, 0x84, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00,
46200x00, 0x00, 0x02, 0x38, 0x3D, 0x00, 0x3F, 0x00, 0xFC, 0x23, 0xF0, 0x8F, 0xE8,
46210x3F, 0x40, 0xBB, 0x00, 0xDC, 0x03, 0xF0, 0x0E, 0xC0, 0x3D, 0x02, 0xFF, 0x00,
46220xEC, 0x03, 0xF0, 0x0F, 0xC0, 0x3D, 0x24, 0xFF, 0x00, 0xFC, 0x23, 0xB2, 0x0F,
46230xC0, 0x08, 0x02, 0xFB, 0x28, 0xFC, 0x93, 0xF0, 0x0F, 0xD0, 0x3D, 0x00, 0xFF,
46240x00, 0xDD, 0x03, 0xF2, 0x8F, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
46250x00, 0x10, 0xB0, 0x37, 0x00, 0x1F, 0x00, 0x7C, 0x02, 0xF1, 0x1D, 0xC0, 0x34,
46260x00, 0x93, 0x00, 0x4C, 0x03, 0x70, 0x05, 0xC4, 0x77, 0x01, 0x9B, 0x00, 0x7C,
46270x4B, 0xE0, 0x1D, 0xC2, 0x35, 0x05, 0xCD, 0x01, 0x4C, 0x1B, 0xF0, 0x0D, 0xC0,
46280x07, 0x00, 0xDF, 0x01, 0x1C, 0x07, 0x70, 0xCD, 0xC0, 0x37, 0x20, 0xDF, 0x0A,
46290x3C, 0x4F, 0x30, 0x09, 0xC0, 0x54, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
46300x12, 0x80, 0x39, 0x00, 0x2D, 0x00, 0xB4, 0x03, 0x70, 0x0E, 0x40, 0x1C, 0x00,
46310xA1, 0x00, 0xAC, 0x53, 0x10, 0x0E, 0x40, 0xBB, 0x04, 0xE1, 0x00, 0xB4, 0x03,
46320xD0, 0x0E, 0x40, 0x3C, 0x01, 0xE1, 0x00, 0x84, 0x53, 0xD0, 0x0E, 0x40, 0x0B,
46330x00, 0xFD, 0x00, 0x8C, 0x03, 0x10, 0x8E, 0x40, 0x3B, 0x00, 0xE7, 0x10, 0xB4,
46340x13, 0xB0, 0x00, 0xC0, 0x4E, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
46350x00, 0x79, 0x00, 0x6D, 0x01, 0x94, 0x06, 0xD0, 0x1E, 0x40, 0x78, 0x0C, 0xC1,
46360x01, 0x04, 0x27, 0x50, 0x1E, 0x40, 0x73, 0x01, 0xE1, 0x01, 0xB4, 0x27, 0x50,
46370x3E, 0x40, 0x7B, 0x00, 0xE5, 0x01, 0x85, 0x27, 0xD0, 0x1E, 0x43, 0x4B, 0x00,
46380xED, 0x01, 0x84, 0x07, 0x10, 0x5E, 0x40, 0x6B, 0x00, 0xE5, 0x25, 0xB6, 0x37,
46390x10, 0x1A, 0x40, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28,
46400x33, 0x00, 0xCD, 0x01, 0x34, 0x4B, 0x50, 0x0C, 0x60, 0x70, 0x01, 0xC1, 0x01,
46410x24, 0x03, 0x10, 0x0C, 0x41, 0x33, 0x80, 0xC1, 0x10, 0x34, 0x03, 0xD0, 0x18,
46420x40, 0x32, 0x00, 0xC1, 0x00, 0x04, 0x03, 0xD0, 0x09, 0x40, 0xF3, 0x00, 0xCD,
46430x01, 0x04, 0x06, 0x14, 0x0C, 0x40, 0x37, 0x10, 0xC5, 0x80, 0x36, 0x03, 0x90,
46440x41, 0x40, 0x4A, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x15,
46450x00, 0x7F, 0x05, 0xFC, 0x01, 0xF0, 0x05, 0xD0, 0x1C, 0x00, 0x53, 0x41, 0x4C,
46460x01, 0x70, 0x27, 0xC0, 0x17, 0x40, 0x73, 0xC2, 0x7C, 0x01, 0xF0, 0x05, 0xC0,
46470x17, 0x10, 0x7F, 0x00, 0x4C, 0x01, 0xF0, 0x15, 0xC0, 0x5F, 0x01, 0x5F, 0x01,
46480x5D, 0x15, 0x70, 0x04, 0xC2, 0x57, 0x01, 0x47, 0x00, 0x7C, 0x01, 0x30, 0x17,
46490xC1, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x85, 0x00,
46500x1F, 0x01, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x40, 0x1F, 0x08, 0x3C, 0x00,
46510xF0, 0x01, 0xC0, 0x07, 0x00, 0x17, 0x00, 0x7C, 0x80, 0xF0, 0x01, 0xC0, 0x05,
46520x00, 0x1F, 0x00, 0x7E, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x01, 0x1F, 0x08, 0x5C,
46530x00, 0xF2, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x01, 0xC8,
46540x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x9F,
46550x05, 0x4C, 0x02, 0x36, 0x09, 0xC0, 0xA3, 0x40, 0x83, 0x05, 0x4C, 0x06, 0xB0,
46560x08, 0xC0, 0x26, 0x00, 0x9F, 0x00, 0x74, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00,
46570x9B, 0x00, 0x7C, 0x06, 0xF0, 0x19, 0xC0, 0x24, 0x20, 0x9F, 0x00, 0x7C, 0x26,
46580xF0, 0x09, 0xC0, 0x24, 0x00, 0x9C, 0x00, 0x48, 0x02, 0xF0, 0x09, 0xC8, 0x40,
46590x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x64, 0x00, 0x9D, 0x00,
46600x44, 0x02, 0x10, 0x19, 0x40, 0x27, 0x40, 0x91, 0x01, 0x7C, 0x2A, 0x10, 0x09,
46610x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0xE0, 0x27, 0x00, 0x91,
46620x10, 0x74, 0x1E, 0xD1, 0x99, 0x40, 0xA4, 0x00, 0x9D, 0x42, 0x5C, 0x02, 0xD0,
46630x09, 0xC0, 0x26, 0x00, 0x95, 0x80, 0x54, 0x1A, 0xD0, 0x09, 0xC0, 0x06, 0x00,
46640x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x02, 0x8D, 0x00, 0x04,
46650x02, 0x18, 0x49, 0x40, 0x27, 0x40, 0x91, 0x00, 0x44, 0x02, 0x90, 0x1D, 0x40,
46660x26, 0x00, 0x95, 0x00, 0x74, 0x22, 0xD0, 0x09, 0x60, 0x23, 0x00, 0x99, 0x01,
46670x74, 0x12, 0xD0, 0x29, 0x40, 0x25, 0x00, 0x9D, 0x04, 0x74, 0x02, 0x50, 0x89,
46680x40, 0x24, 0x00, 0x95, 0x18, 0x54, 0x22, 0xD0, 0x09, 0x40, 0x60, 0x00, 0x02,
46690x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x8D, 0x04, 0x04, 0x02,
46700x10, 0x0C, 0x40, 0x23, 0x01, 0x81, 0x04, 0x14, 0x13, 0x10, 0x48, 0x40, 0x20,
46710x01, 0x8D, 0x04, 0x36, 0x16, 0xD1, 0x08, 0x42, 0x21, 0x01, 0x81, 0x04, 0x34,
46720x12, 0xD8, 0x08, 0x40, 0x61, 0x80, 0x8D, 0x01, 0x14, 0x02, 0xD0, 0x48, 0x40,
46730x22, 0x30, 0x85, 0x44, 0x16, 0x12, 0xD0, 0x48, 0x40, 0x42, 0x80, 0x00, 0x00,
46740x00, 0x00, 0x00, 0x00, 0x1D, 0xA0, 0x96, 0x02, 0x1F, 0x0A, 0x4D, 0x28, 0x30,
46750xA0, 0xC0, 0x87, 0x02, 0x13, 0x0A, 0x44, 0x28, 0xB0, 0x01, 0xC0, 0x06, 0x00,
46760x17, 0x10, 0x7C, 0x00, 0xF0, 0xA0, 0x40, 0x87, 0x02, 0x1B, 0x00, 0x74, 0x00,
46770xF0, 0xA1, 0xC8, 0x05, 0x00, 0x1F, 0x0A, 0x74, 0x00, 0xF0, 0x01, 0xC0, 0x84,
46780x00, 0x17, 0x00, 0x5C, 0x00, 0xF2, 0x21, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00,
46790x00, 0x00, 0x00, 0x1D, 0x88, 0x27, 0x00, 0xFF, 0x08, 0xFC, 0x02, 0xF0, 0x09,
46800xC0, 0x2F, 0x02, 0xBF, 0x48, 0x7C, 0x22, 0xF0, 0x8B, 0xC4, 0x27, 0x02, 0xBF,
46810x00, 0x7C, 0x62, 0xF0, 0x0B, 0xC0, 0x27, 0x02, 0xBF, 0x08, 0x7C, 0x22, 0xF0,
46820x0B, 0xD8, 0x2E, 0x00, 0xBF, 0x40, 0xDC, 0x02, 0xF0, 0x89, 0xC2, 0x2F, 0x04,
46830x93, 0x08, 0x7C, 0x22, 0xF2, 0x8B, 0xC1, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00,
46840x00, 0x00, 0x1C, 0xA0, 0x2D, 0x00, 0xBF, 0x0C, 0xCC, 0x02, 0x30, 0x0B, 0xC0,
46850x2C, 0x02, 0xB3, 0x00, 0xFC, 0x52, 0x34, 0x4F, 0x80, 0x27, 0x00, 0x9F, 0x00,
46860xF8, 0x22, 0xF0, 0x09, 0xC0, 0x27, 0x25, 0xBF, 0x04, 0xD4, 0x02, 0x70, 0x0A,
46870xC0, 0x2C, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0xF0, 0x4B, 0xC0, 0x27, 0x00, 0xA3,
46880x80, 0xBC, 0x02, 0xF0, 0x29, 0xC0, 0x61, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
46890x00, 0x18, 0x00, 0x07, 0x01, 0x0D, 0x2C, 0x44, 0x41, 0x10, 0x01, 0x41, 0x14,
46900x02, 0x01, 0x14, 0x74, 0x10, 0x13, 0x81, 0x40, 0x87, 0x00, 0x1D, 0x00, 0x74,
46910x20, 0xD0, 0x41, 0x41, 0x06, 0x01, 0x1D, 0x08, 0x44, 0x08, 0x10, 0x01, 0x41,
46920x04, 0x00, 0x1D, 0x14, 0x74, 0x00, 0xC0, 0x81, 0x44, 0x47, 0x05, 0x1B, 0x00,
46930x74, 0x20, 0xD0, 0x11, 0x40, 0x71, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
46940x12, 0x20, 0x21, 0x05, 0x8D, 0x04, 0x05, 0x12, 0x10, 0x08, 0x40, 0x20, 0x40,
46950x81, 0x04, 0x34, 0x52, 0x10, 0x08, 0x48, 0x22, 0x02, 0x88, 0x08, 0x34, 0x02,
46960xD0, 0x48, 0x40, 0x21, 0x05, 0x8D, 0x01, 0x14, 0x22, 0xD0, 0x08, 0x40, 0x61,
46970x00, 0x8D, 0x04, 0x24, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x00, 0x81, 0x08, 0x34,
46980x02, 0xD0, 0x48, 0x40, 0x4B, 0x88, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
46990x28, 0x25, 0x00, 0x9D, 0x00, 0x04, 0x02, 0x10, 0x09, 0x60, 0x24, 0x01, 0xD1,
47000x00, 0x34, 0x03, 0x10, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x0A, 0x74, 0x02, 0xD0,
47010x19, 0x40, 0x24, 0x00, 0x9D, 0x08, 0x44, 0x02, 0x90, 0x08, 0x50, 0x25, 0x01,
47020x9D, 0x01, 0x74, 0x06, 0xD0, 0x09, 0x40, 0x67, 0x00, 0x98, 0x00, 0x74, 0x02,
47030xD0, 0x09, 0x40, 0x63, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20,
47040x25, 0x00, 0x9F, 0x02, 0x4C, 0x02, 0x30, 0x09, 0xD0, 0xE4, 0x08, 0x93, 0x01,
47050x7C, 0x02, 0x34, 0x69, 0xC8, 0x26, 0x00, 0x9B, 0x03, 0x7C, 0x02, 0xF0, 0x09,
47060xCC, 0x27, 0x00, 0x9F, 0x01, 0x5C, 0x02, 0xF0, 0x19, 0xC0, 0x25, 0x00, 0x9E,
47070x00, 0x74, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x90, 0x00, 0x7C, 0x02, 0xF0,
47080x09, 0xC0, 0x17, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x25,
47090x00, 0x9F, 0x09, 0x7C, 0x02, 0xF4, 0x09, 0xC0, 0x67, 0x00, 0x9F, 0x04, 0x7C,
47100x02, 0x70, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x01, 0x7C, 0x82, 0xF0, 0x09, 0xC8,
47110x27, 0x00, 0x8F, 0x00, 0x7C, 0x42, 0x70, 0x49, 0xC0, 0x26, 0x08, 0x9F, 0x00,
47120x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x10, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x08,
47130xC0, 0x59, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x01,
47140x1F, 0x00, 0x4C, 0x00, 0xB0, 0x01, 0xC0, 0x84, 0x40, 0x13, 0x10, 0x4C, 0x00,
47150x30, 0x21, 0xC0, 0x07, 0x20, 0x1F, 0x00, 0x7C, 0x80, 0xF0, 0x01, 0xE0, 0x07,
47160x00, 0x1F, 0x00, 0x3C, 0x00, 0xB0, 0x11, 0xC0, 0x04, 0x00, 0x1F, 0x00, 0x7C,
47170x00, 0xF0, 0x11, 0xC0, 0x07, 0x00, 0x17, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC0,
47180x51, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x5C, 0x00, 0x5D,
47190x80, 0x44, 0x05, 0x30, 0x07, 0x40, 0x54, 0x40, 0x71, 0x05, 0xC6, 0x29, 0x10,
47200x05, 0x40, 0x17, 0x00, 0x5D, 0x00, 0xF4, 0x09, 0xD0, 0x05, 0xC0, 0x17, 0x00,
47210x7D, 0x0A, 0xF4, 0x01, 0x70, 0x17, 0x40, 0x9C, 0x00, 0x7D, 0x10, 0x5C, 0x01,
47220xD0, 0x17, 0x40, 0x17, 0x00, 0x71, 0x07, 0xC4, 0x19, 0x50, 0x05, 0x48, 0x50,
47230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x72, 0x02, 0xDD, 0x00,
47240x04, 0x03, 0x50, 0x15, 0x49, 0x76, 0x20, 0xC1, 0x02, 0x24, 0x0F, 0x10, 0x0C,
47250x40, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x37, 0xD0, 0x0D, 0x40, 0x33, 0x00, 0xCD,
47260x0B, 0x34, 0x07, 0x50, 0x9C, 0x42, 0xA0, 0x04, 0xCD, 0x05, 0x34, 0x03, 0xD0,
47270x1C, 0x40, 0x37, 0x00, 0x05, 0x04, 0x04, 0x10, 0x10, 0x0C, 0x40, 0x51, 0x00,
47280x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x18, 0x00, 0xED, 0x00, 0x84,
47290x0A, 0x10, 0x2A, 0x40, 0x32, 0x24, 0xE1, 0x01, 0xA4, 0x0A, 0x10, 0x2E, 0x48,
47300x3B, 0x00, 0xED, 0x00, 0xB4, 0x83, 0xD0, 0x4E, 0x40, 0x39, 0x00, 0xAD, 0x00,
47310xB4, 0x09, 0x40, 0x0F, 0x40, 0x18, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E,
47320x49, 0x3B, 0x00, 0x25, 0x00, 0x84, 0x04, 0x50, 0x0E, 0x48, 0x10, 0x00, 0x02,
47330x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x69, 0x00, 0xEF, 0x01, 0xCC, 0x07,
47340x70, 0x1F, 0xD0, 0x7A, 0x00, 0xA3, 0x01, 0xE4, 0x07, 0x34, 0x1A, 0xC0, 0x7B,
47350x00, 0xED, 0x01, 0xBC, 0x05, 0xF0, 0x7E, 0x41, 0x7B, 0x05, 0xAF, 0x01, 0xB8,
47360x05, 0x70, 0x1E, 0xC0, 0x48, 0x00, 0xEF, 0x01, 0xBC, 0x06, 0xF0, 0x1E, 0xC0,
47370x7F, 0x00, 0xA5, 0x00, 0x8C, 0x06, 0x30, 0x1F, 0xC0, 0x51, 0x40, 0x00, 0x00,
47380x00, 0x00, 0x00, 0x00, 0x10, 0xB0, 0x0D, 0x00, 0x9F, 0x02, 0x7D, 0x1A, 0x74,
47390x6B, 0xC0, 0x35, 0x00, 0x9F, 0x00, 0x5D, 0x1A, 0xF0, 0x09, 0xC0, 0x37, 0x00,
47400xDF, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0x9F, 0x00, 0x3C, 0x81,
47410x70, 0x0D, 0xD0, 0x17, 0x08, 0xDF, 0x00, 0x5C, 0x82, 0xF0, 0x0D, 0xC0, 0x37,
47420x00, 0xDA, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00,
47430x00, 0x00, 0x00, 0x06, 0x20, 0x4D, 0x00, 0xF7, 0x03, 0xCC, 0x1B, 0x70, 0x3F,
47440xC0, 0x7C, 0x00, 0x73, 0x01, 0xCD, 0x0F, 0x30, 0x1B, 0xC0, 0x7F, 0x00, 0xF3,
47450x01, 0xFC, 0x07, 0x30, 0x1F, 0xC0, 0x7F, 0x04, 0xB3, 0x01, 0xCC, 0x85, 0xF0,
47460x1F, 0xC0, 0x4C, 0x20, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x17, 0xC0, 0x7F, 0x00,
47470x23, 0x01, 0xCC, 0x05, 0xF0, 0x1F, 0xC0, 0x0B, 0x00, 0x0E, 0x00, 0x00, 0x00,
47480x00, 0x00, 0x15, 0x00, 0x0D, 0x00, 0xF1, 0x08, 0x84, 0xC3, 0x18, 0x0B, 0x40,
47490x28, 0x00, 0x71, 0x00, 0xC4, 0x22, 0x10, 0x0A, 0x40, 0x3B, 0x00, 0xE1, 0x00,
47500xB4, 0x23, 0x10, 0x0E, 0xC0, 0x39, 0x02, 0xE1, 0x02, 0x84, 0x00, 0x70, 0x07,
47510x40, 0x18, 0x20, 0xED, 0x80, 0xB4, 0x03, 0xD0, 0x02, 0x40, 0x3B, 0x00, 0x25,
47520x0A, 0xAC, 0x28, 0xD0, 0x0E, 0xC0, 0x55, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
47530x00, 0x00, 0x00, 0x09, 0x00, 0xED, 0x00, 0xC4, 0x23, 0x50, 0x0A, 0x50, 0x28,
47540x00, 0x25, 0x08, 0x84, 0x03, 0x10, 0x0A, 0x40, 0x33, 0x00, 0xE1, 0x00, 0x34,
47550x02, 0x10, 0x0E, 0x40, 0x33, 0x00, 0x41, 0x00, 0xA4, 0x01, 0xD0, 0x0E, 0x40,
47560x88, 0x04, 0xED, 0x00, 0xB4, 0x02, 0xD0, 0x02, 0x40, 0x3F, 0x00, 0xA1, 0x00,
47570x94, 0x03, 0xD0, 0x0E, 0x40, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
47580x02, 0x28, 0x01, 0x00, 0x89, 0x00, 0x44, 0x0B, 0x10, 0x08, 0x40, 0xE4, 0x01,
47590x05, 0x00, 0x44, 0x02, 0x10, 0x28, 0x40, 0x33, 0x00, 0xC1, 0x11, 0x34, 0x02,
47600x10, 0x0C, 0x68, 0x31, 0x00, 0x41, 0x52, 0x24, 0x00, 0x50, 0x0C, 0x40, 0x50,
47610x00, 0xDD, 0x00, 0x34, 0x02, 0xD0, 0x00, 0x40, 0x73, 0x02, 0x85, 0x00, 0x34,
47620x03, 0xD0, 0x0C, 0x40, 0x19, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
47630xA0, 0x25, 0x00, 0xDF, 0x00, 0x4D, 0x0B, 0x50, 0x05, 0xC0, 0x74, 0x40, 0x17,
47640x00, 0x44, 0x03, 0x34, 0x0C, 0xC0, 0x37, 0x00, 0xD3, 0x06, 0x7C, 0x02, 0x30,
47650x0F, 0xC0, 0x3F, 0x00, 0xD3, 0x02, 0x6C, 0x01, 0xF0, 0x1D, 0xC0, 0x44, 0x00,
47660xDF, 0x40, 0x7C, 0x02, 0xF0, 0x05, 0xC0, 0x3F, 0x00, 0x53, 0x00, 0x5C, 0x00,
47670xF0, 0x2F, 0xC0, 0x55, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08,
47680x87, 0x00, 0xD7, 0x10, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x37, 0x02, 0x1A, 0x02,
47690x7C, 0x02, 0xF1, 0x09, 0xC1, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x00, 0xF0, 0x1D,
47700xC0, 0x37, 0x20, 0x1F, 0x03, 0x5C, 0x01, 0x70, 0x8D, 0xC0, 0x07, 0x28, 0xDF,
47710x02, 0x7C, 0x06, 0xF0, 0x05, 0xCA, 0x37, 0x00, 0x9F, 0x02, 0x2C, 0x0A, 0xF0,
47720x0D, 0xC0, 0x05, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x0F,
47730x00, 0xFF, 0x00, 0xCC, 0x43, 0x30, 0x0F, 0xC0, 0x74, 0x01, 0x23, 0x01, 0xC4,
47740x03, 0x30, 0x0B, 0xC0, 0x3C, 0x00, 0xFF, 0x00, 0xBC, 0x00, 0x30, 0x0F, 0xC0,
47750x3B, 0x00, 0xB3, 0x00, 0x8E, 0x00, 0x30, 0x0B, 0xC0, 0x0D, 0x00, 0x7B, 0x00,
47760xCC, 0x03, 0x30, 0x07, 0xC0, 0x3F, 0x10, 0x7F, 0x00, 0xCC, 0x0C, 0x30, 0x0F,
47770xC1, 0x03, 0x2A, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0xC6, 0x24,
47780x8D, 0x00, 0x44, 0x02, 0x90, 0x19, 0xC0, 0x36, 0x40, 0x11, 0x03, 0x54, 0x0E,
47790x50, 0x09, 0x50, 0x34, 0x00, 0xDD, 0x00, 0x74, 0x4C, 0x10, 0x0D, 0x40, 0x37,
47800x00, 0x01, 0x00, 0x54, 0x0C, 0x51, 0x09, 0x40, 0xC0, 0x00, 0xDB, 0x03, 0x04,
47810x07, 0x10, 0x15, 0xC0, 0x35, 0x00, 0xCD, 0x08, 0x54, 0x06, 0x10, 0x0D, 0x40,
47820x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x46, 0x80, 0xDD,
47830x00, 0x44, 0x03, 0x90, 0x18, 0x40, 0x25, 0x00, 0x51, 0x88, 0x54, 0x07, 0x10,
47840x89, 0x40, 0x34, 0x00, 0xD5, 0x00, 0x74, 0x06, 0x10, 0x0D, 0x40, 0x37, 0x00,
47850x91, 0x00, 0x46, 0x45, 0x90, 0x1C, 0x40, 0x44, 0x44, 0xD9, 0x03, 0x44, 0x12,
47860x10, 0x11, 0x60, 0x37, 0x00, 0x5D, 0x00, 0x44, 0x01, 0x10, 0x0D, 0x40, 0x07,
47870x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xDD, 0x00,
47880x04, 0x03, 0x90, 0x08, 0x40, 0x22, 0x00, 0x41, 0x00, 0x14, 0x02, 0x14, 0x08,
47890x48, 0x30, 0x00, 0xCD, 0x00, 0x34, 0x00, 0x10, 0x0C, 0x40, 0x33, 0x20, 0x41,
47900x00, 0x16, 0x00, 0xD0, 0x04, 0x40, 0x00, 0x40, 0xC9, 0x80, 0x45, 0x02, 0x14,
47910x10, 0x60, 0x31, 0x00, 0x4D, 0x00, 0x14, 0x01, 0x10, 0x0C, 0x40, 0x43, 0x00,
47920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xFF, 0x00, 0xCD,
47930x03, 0x34, 0x0B, 0xC0, 0x25, 0x00, 0x13, 0x00, 0xDC, 0x02, 0x30, 0x09, 0xC0,
47940x34, 0x00, 0xD7, 0x00, 0x7C, 0x02, 0x11, 0x0F, 0xC0, 0x3F, 0x00, 0x53, 0x00,
47950x44, 0x00, 0xB0, 0x0D, 0xC8, 0x05, 0x40, 0x9B, 0x00, 0x4C, 0x03, 0x30, 0x01,
47960xC0, 0x37, 0x00, 0xDF, 0x00, 0x4C, 0x03, 0x30, 0x0D, 0xC0, 0x03, 0x40, 0x08,
47970x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x0F, 0x00, 0xBF, 0x00, 0xBC, 0x03,
47980x70, 0x0B, 0xC0, 0x2F, 0x00, 0x3F, 0x00, 0xFE, 0x00, 0xF0, 0x0B, 0xC0, 0x3F,
47990x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0x7F, 0x00, 0xFC,
48000x00, 0x70, 0x0F, 0xC0, 0x0F, 0x00, 0xBF, 0x00, 0xF4, 0x03, 0xF1, 0x03, 0xCA,
48010x39, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x17, 0x60, 0x0E, 0x00,
48020x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x2F, 0x00, 0xBF, 0x00, 0xDC, 0x53, 0xF0,
48030x03, 0xC0, 0x0F, 0x00, 0xAF, 0x01, 0xFC, 0x87, 0xF0, 0x1F, 0xD0, 0x0C, 0x00,
48040xFF, 0x01, 0xCC, 0x03, 0xF0, 0x4F, 0xC0, 0x0D, 0x02, 0xB3, 0x01, 0xEC, 0x07,
48050xF0, 0x03, 0xC0, 0x0F, 0x08, 0xEF, 0x01, 0xBC, 0x05, 0xB4, 0x1A, 0xC0, 0x7B,
48060x00, 0x33, 0x04, 0xBC, 0x02, 0x20, 0x0B, 0xC8, 0x0C, 0x08, 0x0E, 0x00, 0x00,
48070x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x00, 0x1D, 0x00, 0xF4, 0x0B, 0xD0, 0x11,
48080x40, 0x47, 0x00, 0xDD, 0x01, 0x74, 0x07, 0xD0, 0x0D, 0x40, 0x20, 0x01, 0xCC,
48090x10, 0xC4, 0x2B, 0xD0, 0x0D, 0x40, 0x27, 0x00, 0xD1, 0x01, 0x44, 0x03, 0xD0,
48100x11, 0x42, 0x07, 0x00, 0xDD, 0x01, 0x74, 0x07, 0x12, 0x19, 0x40, 0x57, 0x20,
48110x15, 0x83, 0x74, 0x06, 0x51, 0x01, 0x40, 0x0D, 0x20, 0x0C, 0x00, 0x00, 0x00,
48120x00, 0x00, 0x11, 0xA0, 0x03, 0x00, 0x8D, 0x00, 0x34, 0x03, 0xD0, 0x08, 0x40,
48130x03, 0x00, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x20, 0x04, 0xCD, 0x04,
48140x05, 0x03, 0xD2, 0x8C, 0x42, 0x23, 0x08, 0xD1, 0x80, 0x34, 0x03, 0xD0, 0x08,
48150x40, 0x63, 0x00, 0xCD, 0x00, 0x34, 0x81, 0x10, 0x0C, 0x40, 0x27, 0x00, 0x81,
48160x08, 0x34, 0x02, 0x19, 0x08, 0x40, 0x4C, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
48170x00, 0x03, 0xA8, 0x65, 0x00, 0x1D, 0x21, 0x74, 0x03, 0xD0, 0x39, 0x40, 0x47,
48180x00, 0xDD, 0x01, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0xE4, 0x00, 0xCD, 0x20, 0x44,
48190x03, 0xD1, 0x0D, 0x40, 0x63, 0x00, 0xD1, 0x03, 0x54, 0x03, 0x90, 0x19, 0x40,
48200x67, 0x10, 0xDD, 0x04, 0x74, 0x06, 0x11, 0x1D, 0x40, 0x37, 0x00, 0x55, 0x90,
48210x74, 0x06, 0x58, 0x19, 0x42, 0x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
48220x00, 0xA0, 0xE7, 0x00, 0x9F, 0x11, 0x5C, 0x03, 0xF1, 0x19, 0xC0, 0x67, 0x04,
48230xDF, 0x05, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0xC4, 0x00, 0xDF, 0x01, 0x4C, 0x03,
48240xF0, 0x0D, 0xC0, 0x45, 0x40, 0xC3, 0x01, 0x7C, 0x03, 0xF0, 0x39, 0xC1, 0x67,
48250x00, 0xDF, 0x00, 0x3C, 0x0D, 0xB8, 0x39, 0xC0, 0x37, 0x00, 0x53, 0x02, 0x7C,
48260x04, 0x30, 0x11, 0xC0, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
48270x88, 0x2D, 0x00, 0xBF, 0x80, 0x7C, 0x03, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0xFF,
48280x00, 0xFC, 0x03, 0xF0, 0x8F, 0xC0, 0x2F, 0x00, 0xFF, 0x02, 0xFC, 0x03, 0xF2,
48290x0F, 0xE0, 0x27, 0x80, 0xFF, 0x00, 0xEC, 0x03, 0xF0, 0x09, 0xC0, 0x0F, 0x00,
48300xFF, 0x01, 0xFC, 0x03, 0xF0, 0x03, 0xC0, 0x7F, 0x01, 0x3F, 0x04, 0xBC, 0x02,
48310xF0, 0x01, 0xC1, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08,
48320x05, 0x02, 0x9F, 0x02, 0x7C, 0x03, 0x30, 0x29, 0xC0, 0xA7, 0x00, 0xDF, 0x0A,
48330x6C, 0x03, 0x70, 0x0D, 0xC0, 0x27, 0x00, 0xD3, 0x04, 0x4C, 0x13, 0xF2, 0x8D,
48340xC2, 0xA7, 0x00, 0xD7, 0x03, 0x4C, 0x47, 0xF0, 0x29, 0xC0, 0x24, 0x04, 0xDB,
48350x04, 0x4C, 0x19, 0x70, 0x2D, 0xC5, 0x34, 0x00, 0x57, 0x02, 0x7C, 0x60, 0x74,
48360x01, 0xC0, 0x28, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x24,
48370x00, 0x9D, 0x18, 0xF4, 0x2B, 0x10, 0x01, 0x40, 0x27, 0x00, 0xDD, 0x00, 0x44,
48380x03, 0xD0, 0x8D, 0x40, 0x27, 0x00, 0xD1, 0x02, 0xC4, 0x4B, 0xD0, 0x2F, 0x40,
48390x27, 0x00, 0xD1, 0x80, 0x50, 0x0B, 0xF0, 0x49, 0x00, 0x85, 0x00, 0xDD, 0x41,
48400x6C, 0x4F, 0x10, 0x0D, 0x40, 0x30, 0x02, 0x5B, 0x00, 0x70, 0x0A, 0x10, 0x21,
48410xC0, 0x4E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x00, 0x04,
48420x0D, 0x00, 0x34, 0x03, 0x10, 0x00, 0x40, 0x23, 0x00, 0xCD, 0x01, 0x24, 0x03,
48430x50, 0x3D, 0x40, 0x03, 0x00, 0xC5, 0x00, 0x04, 0x03, 0xD0, 0x4C, 0x40, 0x02,
48440x00, 0xC9, 0x00, 0x04, 0x8B, 0xD0, 0x10, 0x40, 0x00, 0x20, 0xCD, 0x02, 0x04,
48450x0B, 0x50, 0x28, 0x40, 0x32, 0x00, 0x0D, 0x07, 0x34, 0x04, 0xD4, 0x19, 0x40,
48460x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x58, 0x00, 0x6D,
48470x01, 0xB4, 0x27, 0x14, 0x16, 0x40, 0x7B, 0x00, 0xFD, 0x01, 0x84, 0x87, 0xD0,
48480x1E, 0x40, 0x7B, 0x10, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x48, 0x6B, 0x50,
48490xF9, 0x01, 0x94, 0x87, 0x58, 0x16, 0x50, 0x48, 0x02, 0xFD, 0x11, 0xE4, 0x17,
48500x10, 0x0F, 0x40, 0x7E, 0x8C, 0xA9, 0x01, 0xB4, 0x24, 0x90, 0x12, 0x48, 0x3E,
48510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x1A, 0x90, 0x00, 0xCF, 0x00,
48520x3C, 0x03, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCF, 0x00, 0x2C, 0x03, 0x70, 0x0C,
48530xC1, 0x03, 0x40, 0xC5, 0x00, 0x0C, 0x23, 0xF0, 0x0C, 0x40, 0x12, 0x02, 0xD7,
48540x00, 0x0C, 0x03, 0xD0, 0x80, 0xC0, 0x30, 0x02, 0xCF, 0x00, 0x04, 0x03, 0x70,
48550x8C, 0xC0, 0x32, 0x00, 0xCF, 0x10, 0x3C, 0x22, 0xF4, 0x88, 0xC9, 0x48, 0x40,
48560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x1D, 0x00, 0xFF, 0x00, 0xFC,
48570x03, 0xF0, 0x8F, 0xC0, 0x3F, 0x10, 0xFF, 0x08, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
48580x17, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x8F, 0xC8, 0x1F, 0x08, 0xF7, 0x00,
48590xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x02, 0xFF, 0x00, 0xFC, 0x13, 0xF0, 0x4F,
48600xE0, 0x3D, 0x00, 0xFE, 0x08, 0xFC, 0x23, 0x74, 0x0F, 0xC0, 0x0B, 0x60, 0x04,
48610x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37, 0x08, 0x5F, 0x01, 0x4C, 0x03,
48620x70, 0x09, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC4, 0x17,
48630x00, 0xD7, 0x00, 0x5C, 0x1B, 0xF0, 0x0D, 0xC0, 0x17, 0x00, 0xDF, 0x00, 0x7C,
48640x03, 0x70, 0x0D, 0xC8, 0x37, 0x00, 0xC3, 0x00, 0x2C, 0x03, 0xB0, 0x0D, 0x40,
48650x37, 0x00, 0x9F, 0x40, 0x4C, 0x80, 0x20, 0x09, 0xC2, 0x43, 0x00, 0x0E, 0x00,
48660x00, 0x00, 0x00, 0x00, 0x12, 0x82, 0x39, 0x00, 0x6D, 0x00, 0xC4, 0x2B, 0x10,
48670x0E, 0x40, 0x1B, 0x00, 0xE9, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x00,
48680xED, 0x00, 0xB4, 0x33, 0xD0, 0x2E, 0x40, 0x3B, 0x00, 0xEF, 0x00, 0xB4, 0x03,
48690xD0, 0x0E, 0x40, 0x3B, 0x20, 0xE1, 0x00, 0x84, 0x03, 0x50, 0x0E, 0x00, 0x3B,
48700x00, 0x8D, 0x00, 0x84, 0x01, 0xB0, 0x02, 0x40, 0x4F, 0x00, 0x06, 0x00, 0x00,
48710x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xCD, 0x03, 0xA5, 0x17, 0x50, 0x1E,
48720x40, 0x7B, 0x00, 0xED, 0x11, 0xB4, 0x07, 0xD0, 0x1E, 0x41, 0x7B, 0x00, 0xED,
48730x01, 0x96, 0x27, 0xD0, 0x1E, 0x40, 0x7B, 0x88, 0xED, 0x01, 0xB4, 0x07, 0xD0,
48740x36, 0x40, 0x73, 0x00, 0xE1, 0x01, 0xA4, 0x07, 0x90, 0x1E, 0x40, 0x7B, 0x00,
48750xED, 0x11, 0x14, 0x44, 0x19, 0x3E, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00,
48760x00, 0x00, 0x16, 0x28, 0x73, 0x00, 0xCD, 0x01, 0x24, 0x03, 0x10, 0x0C, 0x40,
48770x33, 0x00, 0x49, 0x05, 0x34, 0x03, 0xD0, 0x18, 0x40, 0xF3, 0x00, 0x8D, 0x01,
48780x74, 0x03, 0xD0, 0x0C, 0x40, 0x73, 0x02, 0x45, 0x1A, 0x34, 0x03, 0xD0, 0x5C,
48790x40, 0x77, 0x00, 0x81, 0x00, 0x04, 0x07, 0x50, 0x2C, 0x60, 0xB3, 0x00, 0xCD,
48800x47, 0x14, 0x07, 0x90, 0x1C, 0x40, 0x5B, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00,
48810x00, 0x17, 0xA0, 0x1D, 0x00, 0x7F, 0x02, 0x6C, 0x01, 0x70, 0x27, 0xC0, 0x9F,
48820x00, 0x7F, 0x01, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x1F, 0x00, 0x5F, 0x01, 0x5C,
48830x01, 0xF0, 0x05, 0xC0, 0xDF, 0x00, 0x7D, 0x02, 0x7C, 0x81, 0xF1, 0x37, 0xC0,
48840xDF, 0x40, 0x43, 0x00, 0xEC, 0x01, 0xB0, 0x27, 0xC0, 0x1B, 0x01, 0x7F, 0x23,
48850x9D, 0xA5, 0x20, 0xB7, 0xC0, 0x5F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
48860x12, 0x08, 0x45, 0x02, 0x1F, 0x02, 0x1C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00,
48870x1D, 0x20, 0x7C, 0x00, 0xF2, 0x21, 0xC8, 0x07, 0x06, 0x1F, 0x0A, 0x7C, 0x00,
48880xF0, 0x21, 0xC0, 0x07, 0x04, 0x1F, 0x80, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x87,
48890x06, 0x1F, 0x42, 0x7C, 0x28, 0xB0, 0x41, 0xC0, 0x07, 0x04, 0x1F, 0x00, 0x64,
48900x88, 0xF0, 0x21, 0xC0, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
48910x08, 0x25, 0x00, 0x9F, 0x19, 0x7C, 0x06, 0x30, 0x08, 0xC5, 0x24, 0x04, 0x9F,
48920x08, 0x74, 0x02, 0xF0, 0x09, 0xC0, 0x23, 0x00, 0x9B, 0x01, 0x7C, 0x02, 0x30,
48930x09, 0xC2, 0x23, 0x80, 0x93, 0x04, 0x4C, 0x02, 0xF0, 0x59, 0xC0, 0x27, 0x00,
48940x93, 0x03, 0x5C, 0x02, 0x71, 0x59, 0xC0, 0xA7, 0x40, 0x83, 0x00, 0x4C, 0x22,
48950x30, 0x28, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20,
48960x64, 0x00, 0x9D, 0x12, 0x74, 0x0A, 0x14, 0x09, 0x50, 0x24, 0x00, 0x97, 0x01,
48970x74, 0x02, 0xD8, 0x49, 0x40, 0x27, 0x40, 0x91, 0x11, 0x74, 0x0A, 0x50, 0x29,
48980x40, 0x27, 0xC0, 0x8B, 0x01, 0x44, 0x4A, 0xD0, 0x09, 0x44, 0xE7, 0x40, 0x91,
48990x86, 0x00, 0x12, 0x20, 0x19, 0x40, 0xE7, 0x10, 0x91, 0x01, 0x44, 0x06, 0x14,
49000x39, 0x41, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x24,
49010x25, 0x9D, 0x00, 0x74, 0x62, 0x10, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x74,
49020x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x91, 0x08, 0x74, 0x0A, 0x10, 0x09, 0x40,
49030x37, 0x08, 0x91, 0x00, 0x44, 0x82, 0xD0, 0x09, 0x40, 0x27, 0x01, 0x99, 0x00,
49040x50, 0x03, 0x50, 0x0D, 0x40, 0x36, 0x00, 0x99, 0x04, 0x44, 0x03, 0x10, 0x0D,
49050x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22, 0x20, 0x05,
49060x8D, 0x14, 0x36, 0x12, 0x10, 0x48, 0x40, 0x20, 0x01, 0x85, 0x80, 0x34, 0x02,
49070xD0, 0x08, 0x40, 0x23, 0x01, 0x81, 0x08, 0x74, 0x12, 0x50, 0x08, 0x40, 0x23,
49080x01, 0x91, 0x00, 0x04, 0x02, 0xD2, 0x48, 0x40, 0x33, 0x01, 0x89, 0x00, 0x44,
49090x02, 0x10, 0x08, 0x44, 0x33, 0x00, 0x89, 0x01, 0x05, 0x93, 0x10, 0x48, 0x50,
49100x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x06, 0x01, 0x1F,
49110x04, 0x7C, 0x28, 0x30, 0x01, 0xC0, 0x04, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xD0,
49120xA1, 0xC0, 0x87, 0x02, 0x13, 0x02, 0x7C, 0x28, 0x30, 0xE5, 0xC5, 0x87, 0x02,
49130x11, 0x00, 0x4C, 0x28, 0xF0, 0x01, 0xC0, 0x87, 0x22, 0x1B, 0x00, 0x5C, 0x00,
49140x72, 0x01, 0xC0, 0x07, 0x00, 0x1B, 0x14, 0x4C, 0x00, 0x30, 0xA1, 0xC0, 0x74,
49150xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x2F, 0x05, 0xBF, 0x14,
49160x74, 0xA2, 0xF2, 0x8B, 0xC0, 0x2F, 0x22, 0xBF, 0x00, 0x7C, 0x02, 0xF0, 0x0B,
49170xC0, 0x2F, 0x0A, 0xB7, 0x04, 0x7C, 0x22, 0xF0, 0x09, 0xC0, 0x2F, 0x02, 0xBF,
49180x00, 0x7D, 0x02, 0xF0, 0x8F, 0x00, 0x2F, 0x02, 0xB7, 0x80, 0xFC, 0x02, 0x70,
49190x0B, 0xC0, 0x2F, 0x08, 0xF7, 0x00, 0xFD, 0x23, 0xF0, 0x8B, 0xC2, 0x77, 0x60,
49200x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x2F, 0x05, 0xBF, 0x0C, 0xFC,
49210x82, 0x32, 0x09, 0xC0, 0x24, 0x00, 0xB3, 0x00, 0x7C, 0x02, 0xF0, 0x8A, 0xC0,
49220x24, 0x00, 0xBF, 0x00, 0xFC, 0x22, 0x30, 0x4B, 0xC0, 0x26, 0x05, 0xBF, 0x00,
49230xFC, 0x02, 0x30, 0x0B, 0xE0, 0x2F, 0x02, 0xFF, 0x00, 0xCD, 0x02, 0xB0, 0x0F,
49240xC2, 0x2F, 0x48, 0xB3, 0x00, 0xCC, 0x02, 0xF0, 0x0B, 0xC4, 0x74, 0x00, 0x0E,
49250x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x01, 0x1D, 0x0C, 0x74, 0x48,
49260x10, 0x05, 0x40, 0x04, 0x02, 0x51, 0x00, 0x74, 0x00, 0xD0, 0x41, 0x48, 0x84,
49270x04, 0x1D, 0x10, 0x74, 0x20, 0x14, 0x41, 0x41, 0x04, 0x01, 0x57, 0x80, 0x74,
49280x40, 0x10, 0x01, 0x60, 0x07, 0x02, 0x1D, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40,
49290x17, 0x50, 0x11, 0x00, 0x45, 0x00, 0xF0, 0x01, 0xC0, 0x62, 0x00, 0x0C, 0x00,
49300x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x05, 0x8D, 0x05, 0x36, 0x32, 0x14,
49310x88, 0x40, 0x62, 0x60, 0xC1, 0x00, 0x34, 0x02, 0xD0, 0x48, 0x50, 0x20, 0x03,
49320x8D, 0x00, 0x34, 0x02, 0x10, 0xCC, 0x40, 0x22, 0x05, 0xCD, 0x00, 0x36, 0x13,
49330x10, 0x88, 0x40, 0x23, 0x00, 0x8D, 0x00, 0x24, 0x02, 0x94, 0x18, 0x40, 0x23,
49340x00, 0x85, 0x40, 0x14, 0x02, 0xD2, 0x08, 0x40, 0x48, 0x00, 0x04, 0x00, 0x00,
49350x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x04, 0x9D, 0x80, 0x74, 0x02, 0x10, 0x09,
49360x50, 0x26, 0x01, 0x91, 0x01, 0x74, 0x02, 0xD0, 0x09, 0x40, 0xA4, 0x00, 0x9D,
49370x00, 0x74, 0x02, 0x11, 0x09, 0x40, 0x64, 0x10, 0x9D, 0x01, 0x74, 0x02, 0x10,
49380x09, 0x40, 0xE7, 0x10, 0x9D, 0x00, 0x64, 0x12, 0x12, 0x09, 0x40, 0x27, 0x08,
49390xD5, 0x04, 0x44, 0x02, 0xD0, 0x29, 0x40, 0x62, 0x28, 0x06, 0x00, 0x00, 0x00,
49400x00, 0x00, 0x05, 0x20, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x09, 0xC0,
49410x66, 0x00, 0x93, 0x03, 0x7C, 0x02, 0xF0, 0x19, 0xC0, 0xA4, 0x00, 0x9F, 0x01,
49420x7C, 0x02, 0x30, 0x09, 0xC0, 0xA6, 0x04, 0x9F, 0x03, 0x74, 0x02, 0x34, 0x29,
49430x40, 0xA7, 0x00, 0x8F, 0x00, 0x2C, 0x82, 0xB0, 0x29, 0xC0, 0xA3, 0x00, 0x97,
49440x02, 0x5C, 0x06, 0xF0, 0x29, 0xC0, 0x14, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
49450x00, 0x16, 0x08, 0x65, 0x0A, 0x9F, 0x14, 0x7C, 0x02, 0xF2, 0x48, 0xC0, 0x21,
49460x00, 0x9F, 0x00, 0x7C, 0x02, 0xF2, 0x59, 0xC0, 0x27, 0x00, 0x9F, 0x03, 0x7C,
49470x02, 0xF0, 0x08, 0xC0, 0x27, 0x00, 0x97, 0x80, 0x7C, 0x02, 0xF0, 0x09, 0x82,
49480x27, 0x00, 0x9F, 0x18, 0x5C, 0x02, 0xD0, 0x99, 0xC0, 0xA7, 0x64, 0x9B, 0x00,
49490x7C, 0x8E, 0x78, 0x38, 0xC0, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
49500x14, 0x08, 0x85, 0x04, 0x1F, 0x08, 0x7C, 0x40, 0xF1, 0x01, 0xC0, 0x07, 0x80,
49510x13, 0x20, 0x7C, 0x00, 0xF2, 0x41, 0xD0, 0x84, 0x00, 0x1F, 0x00, 0x0C, 0x00,
49520x30, 0x01, 0xC2, 0x87, 0x08, 0x1F, 0x02, 0x7E, 0x00, 0xF2, 0x21, 0xF0, 0x04,
49530x0C, 0x1B, 0x80, 0x7C, 0x00, 0x70, 0x01, 0xC9, 0x87, 0x00, 0x07, 0x80, 0x4D,
49540x08, 0x32, 0x01, 0xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
49550x00, 0xDC, 0x20, 0x7D, 0x01, 0xF6, 0x1D, 0x70, 0x05, 0x60, 0x17, 0x00, 0x51,
49560x00, 0x74, 0x01, 0xD0, 0x07, 0xC0, 0x16, 0x00, 0x7D, 0x05, 0xCD, 0x19, 0x30,
49570x27, 0x60, 0x17, 0x20, 0x5D, 0x00, 0xFC, 0xA9, 0x72, 0x45, 0x62, 0x1C, 0x11,
49580x71, 0x25, 0xDC, 0x8D, 0x14, 0x27, 0xC0, 0x9D, 0x01, 0x71, 0x89, 0xCC, 0x01,
49590x10, 0x37, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0,
49600xF2, 0x02, 0xCD, 0x02, 0x74, 0x03, 0x52, 0x0C, 0x44, 0x33, 0x00, 0x81, 0x00,
49610x34, 0x03, 0xD0, 0x2D, 0x40, 0x30, 0x00, 0xCD, 0x01, 0x24, 0x1F, 0x10, 0x2C,
49620x49, 0x33, 0x10, 0x8D, 0x00, 0x74, 0x03, 0x51, 0x18, 0x40, 0x30, 0x00, 0x41,
49630x01, 0x34, 0x40, 0x10, 0x0C, 0x40, 0xA3, 0x20, 0xC5, 0x09, 0x20, 0x07, 0x10,
49640x2C, 0x41, 0x40, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38,
49650x00, 0xED, 0x00, 0xB4, 0x01, 0x50, 0x0E, 0x40, 0x33, 0x40, 0xE1, 0x80, 0xB4,
49660x03, 0xD8, 0x0F, 0x41, 0x38, 0x00, 0x6D, 0x01, 0x84, 0x03, 0x10, 0x0E, 0x48,
49670x3B, 0x02, 0xED, 0x40, 0xB4, 0x01, 0x50, 0x1E, 0x48, 0x59, 0x00, 0x61, 0x81,
49680xD4, 0x42, 0x10, 0x06, 0x40, 0x2D, 0x00, 0x61, 0x00, 0x04, 0x46, 0x10, 0x0E,
49690x41, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x78, 0x00,
49700x6F, 0x01, 0xB4, 0x07, 0x70, 0x1E, 0x40, 0x7B, 0x08, 0xE1, 0x01, 0xBC, 0x07,
49710xF0, 0x1E, 0x40, 0x78, 0x81, 0xBD, 0x01, 0xEC, 0x05, 0x34, 0x1E, 0x40, 0x7B,
49720x02, 0xEF, 0x01, 0xB4, 0x07, 0x70, 0x1E, 0x40, 0x7C, 0x40, 0x6B, 0x00, 0xBC,
49730x06, 0x30, 0x1A, 0xC0, 0x6B, 0x00, 0xE7, 0x01, 0xAC, 0x07, 0x34, 0x17, 0xC0,
49740x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x15, 0x00, 0xDF,
49750x00, 0x7C, 0x81, 0x70, 0x0D, 0xC8, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0,
49760x0D, 0xC0, 0x37, 0x04, 0x1F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC8, 0xB7, 0x00,
49770xDF, 0x00, 0x5C, 0x83, 0x72, 0x0C, 0xE0, 0x16, 0x08, 0xDF, 0x00, 0x3C, 0x02,
49780xC4, 0x01, 0xC0, 0x23, 0x00, 0x0F, 0x00, 0x7C, 0x83, 0xF0, 0x01, 0xD0, 0x43,
49790x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x30, 0x7D, 0x00, 0xF3, 0x01,
49800xCC, 0x13, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x1F,
49810xC0, 0x7F, 0x04, 0xF3, 0x01, 0xCC, 0x13, 0x30, 0x17, 0xC0, 0x7C, 0x02, 0xFF,
49820x89, 0xFC, 0x87, 0x30, 0x9F, 0xC0, 0x7F, 0x00, 0x73, 0x01, 0xFC, 0x26, 0xF0,
49830x17, 0xC8, 0x6B, 0x20, 0xBB, 0x01, 0xFC, 0x07, 0xD0, 0x13, 0xC0, 0x1B, 0x00,
49840x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x3D, 0x50, 0x71, 0x20, 0x84,
49850x83, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x2A, 0x48,
49860x3F, 0x00, 0x61, 0x00, 0xD4, 0x08, 0x11, 0x0B, 0xC0, 0x38, 0x00, 0xE9, 0x88,
49870xDC, 0x82, 0x10, 0xCE, 0x40, 0x3B, 0x01, 0x61, 0x00, 0xB4, 0x32, 0xD0, 0x06,
49880x42, 0x3B, 0x12, 0x21, 0x30, 0xB4, 0x02, 0xD0, 0x4A, 0x42, 0x57, 0x00, 0x04,
49890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x61, 0x00, 0x84, 0x20,
49900xD0, 0x0E, 0x40, 0x3B, 0x09, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x86, 0x40, 0x3B,
49910x00, 0xB1, 0x00, 0xA4, 0x21, 0x10, 0x0E, 0x40, 0x38, 0x20, 0xED, 0x08, 0xB6,
49920x03, 0x10, 0x0E, 0x49, 0x2B, 0x00, 0x61, 0x10, 0xB4, 0x02, 0xD1, 0x02, 0x40,
49930x2F, 0x00, 0x29, 0x00, 0xB4, 0x03, 0xD0, 0x02, 0x44, 0x23, 0x02, 0x04, 0x00,
49940x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0xE1, 0x00, 0x01, 0x07, 0x04, 0x00, 0xD0,
49950x0C, 0x40, 0x73, 0x00, 0xCD, 0x03, 0x34, 0x03, 0xD1, 0x00, 0x44, 0x33, 0x00,
49960x11, 0x00, 0x34, 0x00, 0x14, 0x09, 0x50, 0xB6, 0x10, 0xCD, 0x03, 0x34, 0x02,
49970x14, 0x3C, 0x40, 0xA3, 0x40, 0x41, 0x01, 0x34, 0x4A, 0xD0, 0x20, 0x40, 0x23,
49980x02, 0x01, 0x03, 0x34, 0x6F, 0xD0, 0x11, 0x41, 0x0B, 0x20, 0x04, 0x00, 0x00,
49990x00, 0x00, 0x00, 0x15, 0xA0, 0xC5, 0x00, 0x93, 0x04, 0x47, 0x02, 0xF1, 0x2D,
50000x80, 0xF7, 0x01, 0xDF, 0x07, 0x74, 0x03, 0xF0, 0x01, 0x40, 0x3F, 0x42, 0xD3,
50010x00, 0x6C, 0x02, 0x30, 0x09, 0xC0, 0x3C, 0x00, 0xDF, 0x05, 0x74, 0x02, 0x30,
50020x1D, 0xC4, 0x27, 0x00, 0x53, 0x01, 0x7C, 0x12, 0xF0, 0x25, 0xC0, 0x73, 0x00,
50030xDB, 0x03, 0x7C, 0x0B, 0xF2, 0x69, 0x40, 0x57, 0x00, 0x06, 0x00, 0x00, 0x00,
50040x00, 0x00, 0x05, 0x08, 0x27, 0x03, 0x9F, 0x00, 0x7E, 0x0A, 0xF0, 0x1D, 0xC0,
50050x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x39, 0xC0, 0x77, 0x10, 0xDF, 0x03,
50060x5C, 0x0A, 0xF0, 0x29, 0xC0, 0x35, 0x00, 0xDB, 0x10, 0x54, 0x80, 0xF0, 0x0D,
50070xCD, 0x27, 0x01, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0x85, 0xC1, 0xB7, 0x04, 0xDF,
50080x04, 0x7C, 0x02, 0xF0, 0x29, 0xC0, 0x37, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
50090x00, 0x80, 0x08, 0x0B, 0x00, 0x33, 0x00, 0xFC, 0x82, 0xF0, 0x0F, 0xC1, 0x3F,
50100x24, 0xFF, 0x30, 0xFC, 0x03, 0xF2, 0x03, 0xC4, 0x3B, 0x00, 0x73, 0x05, 0x8D,
50110x02, 0x30, 0x03, 0xC2, 0x3C, 0x04, 0xF3, 0x04, 0xFC, 0x00, 0xF1, 0x0E, 0xC0,
50120x06, 0x00, 0x3F, 0x00, 0xFC, 0x02, 0x70, 0x27, 0xC0, 0x3C, 0x40, 0xF3, 0x02,
50130xCC, 0x01, 0xF1, 0x0B, 0xC0, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
50140x81, 0x20, 0xC6, 0x34, 0x91, 0x13, 0x5C, 0x16, 0xD0, 0x0D, 0x40, 0x37, 0x00,
50150xDD, 0x00, 0x74, 0x03, 0xD9, 0x39, 0x40, 0x37, 0x00, 0x51, 0x04, 0x44, 0x0E,
50160x10, 0x71, 0x40, 0x34, 0x00, 0xD3, 0x01, 0x74, 0x0C, 0xD0, 0x0D, 0x40, 0x44,
50170x00, 0x5D, 0x03, 0x34, 0x17, 0x11, 0x34, 0x40, 0xF4, 0x04, 0x81, 0x00, 0x44,
50180x07, 0xD0, 0x59, 0x48, 0x84, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
50190xA0, 0x46, 0x00, 0x91, 0x01, 0x74, 0x06, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xDD,
50200x04, 0x74, 0x83, 0xD0, 0x19, 0x40, 0x37, 0x00, 0x91, 0x40, 0x44, 0x06, 0x90,
50210x11, 0x40, 0x34, 0x20, 0xD1, 0x00, 0x74, 0x46, 0xD0, 0x1D, 0x40, 0x66, 0x04,
50220x5D, 0x11, 0x74, 0x06, 0x50, 0x25, 0x40, 0x74, 0x00, 0xD1, 0x00, 0x44, 0x0E,
50230xD0, 0x11, 0x40, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
50240x20, 0x00, 0x81, 0x20, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00,
50250x34, 0x03, 0xD0, 0x08, 0x40, 0x33, 0x48, 0x81, 0x00, 0x06, 0x00, 0x90, 0x08,
50260x40, 0x30, 0x00, 0xC1, 0x00, 0x34, 0x02, 0xD0, 0x0C, 0x42, 0x20, 0x00, 0x49,
50270x00, 0x74, 0x02, 0x18, 0x04, 0x40, 0x10, 0x00, 0xC1, 0x20, 0x04, 0x02, 0xD0,
50280x08, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
50290x40, 0x13, 0x40, 0x7E, 0x00, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x20, 0x7E,
50300x03, 0xD0, 0x01, 0xC2, 0x3F, 0x00, 0x13, 0x00, 0x4C, 0x02, 0xB0, 0x01, 0xC0,
50310x3C, 0x00, 0xD3, 0x00, 0x7C, 0x00, 0xF0, 0x0D, 0xC0, 0x06, 0x00, 0x5F, 0x00,
50320x7C, 0x02, 0x70, 0x05, 0xD0, 0x34, 0x10, 0x53, 0x00, 0x4C, 0x00, 0xF2, 0x01,
50330xD0, 0x04, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x2F, 0x10,
50340xBF, 0x00, 0xDE, 0x00, 0xF0, 0x0F, 0xC6, 0x3F, 0x00, 0xFF, 0x80, 0xFC, 0x03,
50350xD0, 0x03, 0xE0, 0x3F, 0x00, 0x2F, 0x00, 0xF4, 0x00, 0x70, 0x03, 0xD0, 0x3F,
50360x00, 0xF7, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0x7F, 0x00, 0xFC,
50370x02, 0xF0, 0x07, 0xC8, 0x3F, 0x00, 0x3F, 0xA0, 0xFD, 0x02, 0xF0, 0x0B, 0xC0,
50380x17, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x3F, 0x00, 0xB3,
50390x00, 0xCC, 0x02, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0xCC, 0x03, 0x30,
50400x0A, 0xC0, 0x0C, 0x01, 0x33, 0x00, 0xCC, 0x00, 0xF0, 0x03, 0xC0, 0x0B, 0x00,
50410xFB, 0x06, 0xEC, 0x05, 0x30, 0x4F, 0xC1, 0x2F, 0x00, 0xF3, 0x14, 0xFC, 0x23,
50420xF0, 0x0B, 0xC0, 0x0F, 0x00, 0xF7, 0x04, 0xCC, 0x22, 0x34, 0x03, 0xC0, 0x0C,
50430x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x07, 0x10, 0x91, 0x80,
50440x44, 0x00, 0x70, 0x01, 0x40, 0x07, 0x00, 0x9D, 0x00, 0x44, 0x43, 0x10, 0x09,
50450x48, 0x84, 0x00, 0x91, 0x00, 0x44, 0x00, 0xD0, 0x01, 0x40, 0x27, 0x00, 0xF9,
50460x0B, 0x44, 0x55, 0x15, 0x2F, 0x40, 0x6F, 0x00, 0xD1, 0x03, 0x70, 0x3B, 0xD0,
50470x39, 0x40, 0x47, 0x40, 0xF1, 0x00, 0x6C, 0x0A, 0x10, 0x15, 0x40, 0x0D, 0x20,
50480x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x05, 0x01, 0x20, 0x14,
50490x00, 0xD0, 0x00, 0x40, 0x23, 0x00, 0x0D, 0x20, 0x14, 0x13, 0x10, 0x00, 0x40,
50500x01, 0x02, 0x01, 0x20, 0x04, 0x02, 0xD0, 0x08, 0x42, 0x23, 0x00, 0xC1, 0x04,
50510x24, 0x81, 0x10, 0x0C, 0x4A, 0x27, 0x08, 0xCD, 0x00, 0x34, 0x03, 0xD1, 0x88,
50520x40, 0x03, 0x00, 0xC5, 0x08, 0x44, 0xA2, 0x13, 0x08, 0x46, 0x4C, 0x80, 0x0E,
50530x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x05, 0x11, 0x11, 0x04, 0x54, 0x04,
50540xD0, 0x11, 0x41, 0x47, 0x00, 0x1D, 0x11, 0x74, 0x03, 0x10, 0x15, 0x40, 0x41,
50550x00, 0x11, 0x01, 0x44, 0x04, 0xD2, 0x31, 0x4C, 0xE7, 0x00, 0xD1, 0x00, 0x64,
50560x21, 0x10, 0x0D, 0x40, 0x27, 0x01, 0xDD, 0x00, 0x74, 0x03, 0xD0, 0x19, 0x48,
50570x87, 0x00, 0xD1, 0x00, 0x64, 0x46, 0x10, 0x0D, 0x40, 0x0D, 0x20, 0x06, 0x00,
50580x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x67, 0x00, 0x93, 0x00, 0x5D, 0x46, 0xF0,
50590x39, 0xC0, 0x47, 0x01, 0x1F, 0x03, 0x5C, 0x03, 0x10, 0x29, 0xE1, 0x45, 0x40,
50600x93, 0x05, 0x4C, 0x0C, 0xD0, 0x19, 0xC0, 0xC7, 0x00, 0xDB, 0x00, 0x6C, 0x17,
50610x30, 0x0D, 0x60, 0x23, 0x40, 0xDF, 0x80, 0x7C, 0x03, 0xF2, 0x09, 0xC0, 0xC7,
50620x00, 0xD7, 0x00, 0x0C, 0x0E, 0x30, 0xB1, 0x81, 0x00, 0x20, 0x0E, 0x00, 0x00,
50630x00, 0x00, 0x00, 0x07, 0x80, 0x69, 0x40, 0x9F, 0x01, 0xEC, 0x00, 0x70, 0x0B,
50640xC0, 0x0F, 0x00, 0xAF, 0x20, 0x8C, 0x03, 0xF0, 0x0B, 0xE2, 0x0E, 0x00, 0xAF,
50650x00, 0xFD, 0x00, 0xF0, 0x01, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xDC, 0x06, 0xF8,
50660x0F, 0xC1, 0x6F, 0x00, 0xF2, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0x40, 0x4F, 0x02,
50670xFF, 0x00, 0xDF, 0x02, 0xF0, 0x07, 0xE0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00,
50680x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0x83, 0x00, 0x4D, 0x0A, 0xF0, 0x21, 0xC0,
50690x24, 0x81, 0x1F, 0x02, 0x5C, 0x03, 0x30, 0xA5, 0xC0, 0x44, 0x00, 0x1B, 0x00,
50700x7C, 0x0A, 0x32, 0x29, 0xC9, 0xA6, 0x42, 0xC3, 0x00, 0x5C, 0x01, 0x34, 0x0D,
50710xC0, 0x27, 0x80, 0xD3, 0x08, 0x7C, 0x03, 0x30, 0x49, 0xC0, 0x07, 0x10, 0xDF,
50720x00, 0x4C, 0x22, 0x30, 0x09, 0xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
50730x00, 0x13, 0xA0, 0x2C, 0x14, 0x91, 0x20, 0x44, 0x2A, 0xD0, 0x89, 0x41, 0x84,
50740x00, 0x1D, 0x09, 0xF0, 0x03, 0x30, 0x85, 0x00, 0x24, 0x00, 0x11, 0x1A, 0x74,
50750x82, 0x30, 0x01, 0x40, 0xA4, 0x00, 0xFB, 0x40, 0x44, 0x01, 0x10, 0x0F, 0x40,
50760x27, 0x00, 0xF1, 0x01, 0xF4, 0x03, 0x50, 0x79, 0x40, 0x03, 0x00, 0xFD, 0x24,
50770x54, 0x02, 0xB0, 0x1C, 0x40, 0x6F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
50780x03, 0x20, 0x30, 0x08, 0x81, 0x00, 0x20, 0x26, 0xD1, 0x38, 0x40, 0x60, 0x20,
50790x8D, 0x20, 0x34, 0x03, 0x10, 0x39, 0x40, 0x00, 0x00, 0x09, 0x03, 0x16, 0x02,
50800x10, 0x20, 0x40, 0x04, 0x01, 0xC1, 0x00, 0x54, 0x02, 0x10, 0x3C, 0x40, 0x31,
50810x00, 0xC8, 0x01, 0x14, 0x03, 0x90, 0x28, 0x40, 0x13, 0x00, 0xD9, 0x00, 0x06,
50820x03, 0x10, 0x8C, 0x40, 0x5F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
50830x02, 0x50, 0x00, 0xE1, 0x01, 0xA4, 0x07, 0xD0, 0x16, 0x60, 0x7A, 0x20, 0xED,
50840x01, 0xB4, 0x03, 0x90, 0x1E, 0x40, 0x40, 0x00, 0xE1, 0x41, 0xB6, 0x0D, 0x94,
50850x16, 0x42, 0x4A, 0x00, 0xC9, 0x01, 0x84, 0x05, 0x10, 0x1E, 0x40, 0x7B, 0x00,
50860xE9, 0x01, 0xB4, 0x27, 0xD0, 0x1A, 0x40, 0x5B, 0x00, 0xCD, 0x01, 0x16, 0x26,
50870x90, 0x9A, 0x40, 0x3F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x18,
50880x30, 0x02, 0x01, 0x00, 0x0D, 0x01, 0xF0, 0x8D, 0xC0, 0x30, 0x04, 0xCD, 0x30,
50890x7C, 0x23, 0x10, 0x08, 0xC0, 0x00, 0x01, 0x0B, 0x00, 0x7C, 0x0B, 0x30, 0x88,
50900xC0, 0x12, 0x02, 0xC3, 0x00, 0x5C, 0x22, 0x32, 0x0C, 0xC1, 0x23, 0x00, 0xC9,
50910x08, 0x7C, 0x03, 0x30, 0x08, 0xC0, 0x23, 0x00, 0xCF, 0x00, 0x0C, 0x03, 0x30,
50920x04, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x1D,
50930x14, 0x7F, 0x00, 0xDD, 0x01, 0xF2, 0x87, 0xD0, 0x3D, 0x00, 0xFF, 0x08, 0xFC,
50940x13, 0x70, 0x0F, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0xFC, 0x01, 0x70, 0x0F, 0xC8,
50950x1D, 0x40, 0xFF, 0x10, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0xAB, 0x42, 0xF7, 0x20,
50960xFC, 0x03, 0x70, 0x0B, 0xC8, 0x2F, 0x12, 0xFC, 0x00, 0xFC, 0x02, 0xF0, 0x03,
50970xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x27, 0x00,
50980xDF, 0x00, 0x4E, 0x03, 0x31, 0x0D, 0xC0, 0x17, 0x00, 0x5F, 0x01, 0xCC, 0x03,
50990xF0, 0x0D, 0xC0, 0x04, 0x00, 0xD3, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC0, 0x1F,
51000x20, 0xDF, 0x06, 0x5C, 0x00, 0xF0, 0x2D, 0xC1, 0xB6, 0x00, 0xD3, 0x00, 0x7C,
51010x03, 0xA8, 0x1D, 0xC0, 0x15, 0x00, 0xDF, 0x06, 0x4D, 0x01, 0x30, 0x1D, 0xC0,
51020x54, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x29, 0x09, 0xED,
51030x20, 0xC4, 0x03, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xFD, 0x00, 0x84, 0x07, 0xD0,
51040x0C, 0x40, 0x08, 0x00, 0xE1, 0x00, 0xB4, 0x03, 0xD8, 0x0E, 0x40, 0x3B, 0x08,
51050xFD, 0x10, 0xAC, 0x00, 0xD0, 0x2E, 0x44, 0x3B, 0x00, 0xE1, 0x02, 0xF4, 0x03,
51060x10, 0x0E, 0x40, 0x18, 0x00, 0xED, 0x16, 0xC4, 0x02, 0xB0, 0x0A, 0xC0, 0x4E,
51070x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xF9, 0x00, 0xED, 0x81,
51080x84, 0x07, 0x11, 0x1E, 0x48, 0xFB, 0x08, 0xED, 0x11, 0x84, 0x07, 0xD0, 0x1E,
51090x40, 0x48, 0x00, 0xE1, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x41, 0xFB, 0x00, 0xED,
51100x05, 0x94, 0x44, 0xD9, 0x5E, 0x40, 0x73, 0x00, 0xE5, 0x05, 0xB4, 0x07, 0x90,
51110x1C, 0x44, 0x79, 0x00, 0xED, 0x41, 0x84, 0x07, 0x10, 0x14, 0x40, 0x04, 0x00,
51120x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0xB3, 0x04, 0xCD, 0x02, 0x05,
51130x83, 0x12, 0x6C, 0x60, 0x73, 0x10, 0xCD, 0x03, 0x04, 0x03, 0xD0, 0x1C, 0x50,
51140x30, 0x02, 0xC1, 0x09, 0x34, 0x0B, 0xD0, 0x3C, 0x44, 0x73, 0x01, 0xCD, 0x40,
51150x24, 0x04, 0xD8, 0x0C, 0x40, 0x73, 0x80, 0xC5, 0x00, 0x34, 0x03, 0x10, 0x0C,
51160x42, 0x30, 0x00, 0xCD, 0x00, 0x24, 0x02, 0x90, 0x00, 0x50, 0x4A, 0x20, 0x0C,
51170x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x5D, 0x00, 0x7F, 0x00, 0xCC, 0x05,
51180x30, 0x27, 0xC0, 0x1F, 0x00, 0x7F, 0x08, 0x4D, 0x01, 0xF0, 0x17, 0xC1, 0x5C,
51190x40, 0x73, 0x01, 0xFC, 0x01, 0xF0, 0x27, 0x40, 0x5F, 0x00, 0x5F, 0x00, 0xDC,
51200x01, 0xF0, 0x05, 0xC0, 0x56, 0x41, 0x57, 0x00, 0x7C, 0x01, 0xB0, 0x05, 0xC0,
51210x1D, 0x89, 0x5F, 0x00, 0x8C, 0x01, 0x30, 0x07, 0xC0, 0x5C, 0x20, 0x06, 0x00,
51220x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x81, 0x08, 0x1F, 0x10, 0x7C, 0x24, 0xF4,
51230xA1, 0xC0, 0x07, 0x04, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC4, 0x47, 0x08,
51240x1F, 0x26, 0x7C, 0x00, 0xF0, 0x41, 0xC2, 0x87, 0x00, 0x0F, 0x00, 0x7C, 0x00,
51250xF2, 0x00, 0xC0, 0x07, 0x00, 0x1B, 0x00, 0x7C, 0x00, 0x70, 0x01, 0xC0, 0x03,
51260x00, 0x1F, 0x00, 0x5C, 0x04, 0xF0, 0x01, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00,
51270x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x83, 0x00, 0x0C, 0x02, 0x30, 0x89,
51280xC0, 0x27, 0x00, 0x9F, 0x01, 0x7C, 0x02, 0xF0, 0x09, 0xD0, 0x60, 0x02, 0x93,
51290x01, 0x7C, 0x46, 0xF0, 0x59, 0xC0, 0x23, 0x00, 0x9B, 0x00, 0x4C, 0x42, 0xB0,
51300x09, 0xC0, 0x22, 0x01, 0x93, 0x00, 0x3C, 0x02, 0x90, 0x49, 0xC0, 0xA7, 0x40,
51310x93, 0x00, 0x4D, 0x02, 0x14, 0x09, 0xC0, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00,
51320x00, 0x00, 0x01, 0x00, 0xE4, 0x21, 0x91, 0x00, 0x44, 0x0E, 0x14, 0x29, 0xC0,
51330x25, 0x02, 0x9D, 0x1B, 0x74, 0x02, 0xD0, 0x09, 0xC0, 0x24, 0x00, 0x95, 0x12,
51340x5C, 0x22, 0xD2, 0x19, 0x40, 0x67, 0x00, 0x91, 0x80, 0x44, 0x02, 0x10, 0x29,
51350x41, 0x64, 0x00, 0x91, 0x00, 0x74, 0x02, 0x50, 0x39, 0x41, 0x67, 0x00, 0x91,
51360x02, 0x44, 0x02, 0x10, 0x09, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
51370x00, 0x18, 0xA0, 0x64, 0x00, 0x91, 0x00, 0x44, 0x22, 0x10, 0x09, 0x41, 0x27,
51380x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x08, 0x40, 0x24, 0x00, 0x99, 0x08, 0x74,
51390x02, 0xD0, 0x09, 0x40, 0x27, 0x01, 0x99, 0x00, 0x04, 0x82, 0x94, 0x09, 0x40,
51400x26, 0x00, 0x95, 0x00, 0x74, 0x02, 0x50, 0x09, 0x40, 0x27, 0x20, 0x89, 0x42,
51410x44, 0x02, 0x50, 0x09, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
51420x10, 0x20, 0x20, 0x01, 0x81, 0x04, 0x04, 0x12, 0x10, 0x08, 0x40, 0x21, 0x82,
51430x8D, 0x10, 0x34, 0x12, 0xD0, 0x58, 0x40, 0x20, 0x01, 0x8D, 0x10, 0x14, 0x42,
51440xD0, 0x78, 0x41, 0x33, 0x06, 0x81, 0x00, 0x04, 0x02, 0x10, 0x48, 0x40, 0x20,
51450x01, 0x85, 0x04, 0x34, 0x52, 0x59, 0x48, 0x40, 0x23, 0x01, 0x89, 0x04, 0x44,
51460x12, 0x50, 0x48, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
51470xB8, 0x86, 0x42, 0x03, 0x0A, 0x45, 0x31, 0x30, 0xE1, 0x40, 0x97, 0x04, 0x1F,
51480x08, 0x7C, 0x28, 0xF0, 0xA1, 0xC0, 0x80, 0x02, 0x1B, 0x06, 0x7C, 0x19, 0xF0,
51490x21, 0xC0, 0x87, 0x01, 0x1B, 0x1E, 0x4C, 0x28, 0xB1, 0xA1, 0xC0, 0x06, 0x40,
51500x17, 0x00, 0x7C, 0x20, 0xF0, 0x01, 0x80, 0x07, 0x00, 0x0B, 0x0A, 0x4C, 0x28,
51510x70, 0x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8,
51520x2F, 0x0A, 0xBF, 0x08, 0xFC, 0x0A, 0xF2, 0xCB, 0xC0, 0x2D, 0x00, 0xBF, 0x00,
51530x7C, 0x22, 0xF0, 0x8B, 0xC8, 0x2D, 0x02, 0xB7, 0x14, 0xDC, 0x52, 0xF0, 0x0B,
51540xC2, 0x3F, 0x00, 0x9F, 0x00, 0xFD, 0x83, 0xF0, 0x89, 0xC0, 0x2F, 0x02, 0x9B,
51550x08, 0x7C, 0x02, 0x70, 0x8B, 0xC8, 0x2E, 0x02, 0x97, 0x08, 0xFC, 0x22, 0xB0,
51560x8B, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA8, 0x2F,
51570x05, 0xD3, 0x4C, 0xCC, 0x02, 0xF1, 0x0B, 0xC0, 0x2F, 0x02, 0xB3, 0x04, 0xFC,
51580x52, 0x30, 0xCB, 0xC0, 0x2C, 0x00, 0xB3, 0x00, 0xCC, 0x22, 0xF0, 0x4B, 0xC0,
51590x2D, 0x05, 0x9F, 0x0C, 0x5C, 0x02, 0xB0, 0x0B, 0xC0, 0x2C, 0x00, 0xB3, 0x05,
51600x5C, 0x16, 0xB0, 0x0F, 0xC0, 0x2C, 0x00, 0xBF, 0x80, 0xCD, 0x02, 0x31, 0x0B,
51610xC0, 0x64, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x01,
51620x11, 0x0C, 0x45, 0x48, 0xD0, 0x01, 0x41, 0x07, 0x02, 0x11, 0x54, 0x74, 0x00,
51630x38, 0xC1, 0xC0, 0x90, 0x04, 0x11, 0x10, 0x44, 0x20, 0xD2, 0x41, 0x41, 0x07,
51640x21, 0x1D, 0x0C, 0x44, 0x40, 0x40, 0x01, 0x41, 0x04, 0x02, 0x1B, 0x00, 0x70,
51650x54, 0x10, 0x01, 0xC0, 0x96, 0x00, 0x03, 0x10, 0x45, 0x20, 0x50, 0x01, 0x40,
51660x71, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x05, 0x81,
51670x04, 0x04, 0x32, 0xD0, 0x88, 0x60, 0x23, 0x00, 0x81, 0x2C, 0x36, 0x02, 0x18,
51680x4C, 0x62, 0x21, 0x4B, 0x80, 0x08, 0x24, 0x02, 0xD0, 0xC8, 0x40, 0x21, 0x2D,
51690x8D, 0x44, 0x74, 0x12, 0x80, 0x88, 0x50, 0x20, 0x00, 0x85, 0x02, 0x14, 0x0A,
51700x50, 0x0C, 0x48, 0x22, 0x12, 0x8D, 0x08, 0x24, 0x02, 0x10, 0x08, 0x40, 0x48,
51710x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0x91, 0x82,
51720x44, 0x42, 0xD0, 0x0D, 0x40, 0x27, 0x05, 0x91, 0x00, 0x74, 0x02, 0x10, 0x49,
51730x40, 0x25, 0x01, 0xD1, 0x00, 0x64, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x02, 0x8D,
51740x00, 0x64, 0x02, 0x10, 0x08, 0x40, 0x24, 0x01, 0x9D, 0x00, 0x74, 0x02, 0x50,
51750x0D, 0x40, 0x26, 0x00, 0x91, 0x00, 0x64, 0x02, 0x50, 0x29, 0x40, 0x61, 0x20,
51760x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28, 0x25, 0x42, 0x93, 0x00, 0x4D,
51770x02, 0xF0, 0x79, 0xC0, 0x67, 0x40, 0x93, 0x11, 0x7C, 0x02, 0x34, 0x39, 0xC1,
51780x25, 0x00, 0x93, 0x10, 0x6D, 0x4E, 0xF0, 0x69, 0xC0, 0xE5, 0x00, 0x9F, 0x00,
51790x7C, 0x8A, 0xB0, 0x09, 0xC0, 0x64, 0x00, 0x97, 0x00, 0x5C, 0x02, 0x70, 0x09,
51800xC0, 0xA6, 0x00, 0x9F, 0x00, 0x6D, 0x1A, 0x30, 0x29, 0xC0, 0x14, 0xA0, 0x04,
51810x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x65, 0x00, 0x9F, 0x20, 0x7C, 0x26,
51820xF0, 0x49, 0xC0, 0x27, 0x00, 0x9F, 0x04, 0x3C, 0x02, 0xF0, 0x19, 0xD0, 0x24,
51830x00, 0x9F, 0x00, 0x4C, 0x26, 0xF0, 0x09, 0xC0, 0x67, 0x84, 0x9F, 0x00, 0x5C,
51840x22, 0x70, 0x09, 0xC0, 0x67, 0x08, 0x9B, 0x00, 0x7C, 0x02, 0x34, 0x09, 0xC0,
51850x67, 0x82, 0x9F, 0x00, 0x5D, 0x02, 0xF0, 0x09, 0xC0, 0x5B, 0x00, 0x06, 0x00,
51860x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x01, 0x00, 0x0F, 0x00, 0x4E, 0x48, 0xF2,
51870x41, 0xE4, 0x87, 0x01, 0x1F, 0x08, 0x7C, 0x80, 0x70, 0x00, 0xC0, 0x84, 0x00,
51880x13, 0x01, 0x7C, 0x00, 0xF8, 0x21, 0xC4, 0x87, 0x08, 0x1F, 0x00, 0x5C, 0x08,
51890xF0, 0x01, 0xC0, 0x03, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x41, 0xC0, 0x87,
51900x40, 0x13, 0x00, 0x0C, 0x00, 0xF0, 0xA0, 0xC0, 0x50, 0x20, 0x04, 0x00, 0x00,
51910x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x00, 0x5D, 0x20, 0xC6, 0x1D, 0x70, 0x27,
51920x40, 0x5F, 0x04, 0x7D, 0x08, 0x74, 0x15, 0xD0, 0x27, 0xC0, 0x14, 0x00, 0x71,
51930x00, 0xDC, 0x09, 0xF0, 0x37, 0x60, 0x9F, 0x00, 0x5D, 0x00, 0x04, 0x01, 0x30,
51940x47, 0x40, 0x17, 0x40, 0x52, 0x00, 0x5C, 0x01, 0xD0, 0x26, 0x40, 0x17, 0x04,
51950x74, 0x82, 0x44, 0x01, 0xD0, 0x05, 0x40, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00,
51960x00, 0x00, 0x10, 0xA0, 0xF2, 0x04, 0xCD, 0x00, 0x24, 0x0F, 0x50, 0x8C, 0x40,
51970x77, 0x00, 0xCD, 0x03, 0x34, 0x03, 0xD0, 0x2C, 0x41, 0x36, 0x00, 0xD1, 0x20,
51980x34, 0x47, 0xD2, 0x0C, 0x41, 0xB3, 0x00, 0xCD, 0x00, 0x14, 0x03, 0x50, 0x1C,
51990x40, 0x23, 0x08, 0x88, 0x20, 0x74, 0x03, 0xD0, 0x20, 0x60, 0x63, 0x00, 0x90,
52000x12, 0x05, 0x03, 0xD0, 0x1C, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
52010x00, 0x04, 0x80, 0xA8, 0x10, 0xED, 0x00, 0xA4, 0x01, 0x50, 0x0E, 0x40, 0x3B,
52020x20, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0B, 0x60, 0x28, 0x00, 0xE1, 0x00, 0x94,
52030x09, 0x10, 0x0E, 0x41, 0x9B, 0x08, 0xCD, 0x04, 0xC4, 0x13, 0x12, 0x06, 0x40,
52040x2B, 0x00, 0xE9, 0x00, 0xB6, 0x03, 0xD0, 0x06, 0x40, 0x63, 0x00, 0xE5, 0x00,
52050x84, 0x02, 0xD0, 0x0E, 0x60, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
52060x14, 0x18, 0x48, 0x10, 0xFF, 0x01, 0xA5, 0x07, 0x70, 0x1E, 0x40, 0x5B, 0x00,
52070xED, 0x01, 0xBC, 0x87, 0xF0, 0x16, 0xC0, 0x7A, 0x42, 0xE1, 0x01, 0xBC, 0x07,
52080xD0, 0x16, 0x40, 0x7B, 0x00, 0xEF, 0x09, 0x9D, 0x5F, 0x70, 0x16, 0xE4, 0x73,
52090x00, 0xAB, 0x01, 0xBC, 0x07, 0xF0, 0x12, 0x80, 0x7B, 0x00, 0x21, 0x01, 0x8C,
52100x07, 0xF0, 0x1E, 0xD0, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
52110xB8, 0x05, 0x00, 0xDF, 0x16, 0x5C, 0x01, 0x70, 0x0D, 0xC0, 0x17, 0x00, 0xDF,
52120x00, 0x7C, 0x03, 0xA1, 0x42, 0xD1, 0x37, 0x20, 0x1F, 0x00, 0x7C, 0x01, 0xF0,
52130x05, 0xC0, 0x27, 0x00, 0xDF, 0x08, 0x3C, 0x1B, 0x70, 0x05, 0xC0, 0x37, 0x40,
52140xD3, 0x00, 0x5C, 0x83, 0xF0, 0x0D, 0x80, 0x37, 0x00, 0x5B, 0x20, 0x7C, 0x02,
52150xF0, 0x0C, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20,
52160x4D, 0x00, 0xF7, 0x31, 0xCC, 0x13, 0xF0, 0x97, 0xC0, 0x7C, 0x00, 0xFF, 0x01,
52170xFC, 0x06, 0xB0, 0x9F, 0xC0, 0x7C, 0x00, 0x73, 0x09, 0xFC, 0x27, 0xF0, 0x1F,
52180xC0, 0x7F, 0x00, 0xFF, 0x81, 0xCC, 0x07, 0x70, 0x9F, 0xC0, 0x6C, 0x40, 0xB7,
52190x41, 0xCC, 0x07, 0xB0, 0x1A, 0xC0, 0x6C, 0x20, 0xBF, 0x21, 0xCC, 0x07, 0xF0,
52200x1B, 0xC0, 0x0B, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x0D,
52210x00, 0xEB, 0x00, 0x84, 0x03, 0xD0, 0x8E, 0x40, 0x38, 0x00, 0xED, 0x00, 0xB4,
52220x22, 0xD0, 0xC6, 0x50, 0x28, 0x30, 0x60, 0x18, 0x9C, 0x23, 0xD0, 0x0E, 0xC0,
52230x39, 0x02, 0xED, 0x04, 0x84, 0x13, 0x40, 0x03, 0xC0, 0x2A, 0x00, 0xE5, 0x00,
52240xAC, 0x23, 0x10, 0x0E, 0xC2, 0x2A, 0x00, 0xE9, 0x00, 0x85, 0x42, 0xD0, 0x0E,
52250x40, 0x57, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
52260xE5, 0x10, 0x84, 0x23, 0xD0, 0x06, 0x42, 0x18, 0x04, 0x6D, 0x00, 0xB4, 0x02,
52270xD0, 0x06, 0x42, 0x38, 0x00, 0x61, 0x80, 0xB4, 0x02, 0xD0, 0x8A, 0x40, 0xBB,
52280x00, 0xED, 0x20, 0xC4, 0x4B, 0x42, 0x06, 0x40, 0x32, 0x00, 0xA5, 0x00, 0xA4,
52290x03, 0x90, 0x02, 0x40, 0x28, 0x00, 0xA5, 0x08, 0xA4, 0x03, 0xD0, 0x0A, 0x40,
52300x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x01, 0x00, 0xD1,
52310x01, 0x04, 0x02, 0xD0, 0x28, 0x50, 0x80, 0x04, 0x8D, 0x47, 0x34, 0x02, 0xD0,
52320x05, 0x58, 0x34, 0x42, 0x01, 0x91, 0x14, 0xCE, 0xD0, 0x39, 0x40, 0x01, 0x20,
52330xCD, 0x00, 0x04, 0x07, 0x00, 0x00, 0x40, 0x32, 0x40, 0xC5, 0x00, 0x24, 0x03,
52340x10, 0x0C, 0x40, 0x22, 0x00, 0xC9, 0x00, 0x24, 0x0E, 0xD0, 0x8C, 0x40, 0x1B,
52350x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x05, 0x06, 0xF5, 0x20,
52360x4C, 0x02, 0xF0, 0xB9, 0xC1, 0xA4, 0x00, 0x1F, 0x05, 0x74, 0x82, 0xB0, 0x09,
52370xC0, 0x74, 0x00, 0x93, 0x03, 0x7C, 0x42, 0xD0, 0x39, 0xC1, 0xB7, 0x00, 0xFF,
52380x00, 0xCC, 0x07, 0x70, 0x05, 0xC0, 0x26, 0x40, 0x85, 0x00, 0xEC, 0x03, 0xB0,
52390x01, 0xC8, 0x24, 0x00, 0x57, 0x80, 0x6C, 0x0E, 0xF0, 0x0D, 0xC0, 0x57, 0x20,
52400x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x07, 0x20, 0xDF, 0x00, 0x7C,
52410x28, 0xF0, 0x21, 0xC0, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x02, 0xF2, 0x19, 0xC0,
52420x27, 0x04, 0x9F, 0x02, 0x7C, 0x00, 0xF0, 0x41, 0xC0, 0x17, 0x00, 0xCF, 0x00,
52430x7D, 0x03, 0xF0, 0x05, 0xC0, 0x23, 0x40, 0x9E, 0x00, 0x7C, 0x03, 0xF0, 0x01,
52440xC0, 0x27, 0x00, 0x5C, 0x00, 0x1C, 0x02, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0x0C,
52450x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x0B, 0x00, 0xFB, 0x00, 0xCC, 0x42,
52460xF0, 0x09, 0xC0, 0x2B, 0x00, 0xB3, 0x00, 0xFC, 0x02, 0xF0, 0x01, 0xC0, 0x34,
52470x00, 0xB3, 0x00, 0xB4, 0x00, 0x30, 0x03, 0xC0, 0x3C, 0x00, 0xDF, 0x00, 0xCC,
52480x03, 0xF0, 0x06, 0xC0, 0xEC, 0x00, 0x93, 0x08, 0x0C, 0x03, 0x34, 0x53, 0x40,
52490x38, 0x00, 0xE3, 0xC0, 0xCC, 0x56, 0x31, 0x0F, 0xC0, 0x07, 0x20, 0x0C, 0x00,
52500x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xC6, 0x01, 0xD1, 0x00, 0x44, 0x14, 0xD0,
52510x39, 0x40, 0x47, 0x01, 0x91, 0x01, 0x74, 0x02, 0xC8, 0x11, 0x50, 0x34, 0x00,
52520x1F, 0x83, 0x74, 0x0C, 0x12, 0x31, 0x44, 0xC4, 0x0C, 0xDF, 0x00, 0x54, 0x03,
52530xF0, 0x25, 0x44, 0x24, 0x00, 0x91, 0x01, 0x45, 0x03, 0xB0, 0x04, 0x40, 0x35,
52540x00, 0xD3, 0x03, 0x54, 0x02, 0x10, 0x0D, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00,
52550x00, 0x00, 0x00, 0x01, 0xA0, 0x46, 0x40, 0xD1, 0x00, 0x44, 0x04, 0xD0, 0x11,
52560x40, 0x67, 0x00, 0x11, 0x11, 0x76, 0x06, 0xD1, 0x19, 0x54, 0x34, 0x00, 0x91,
52570x01, 0x76, 0x46, 0x10, 0x39, 0x60, 0x64, 0x10, 0xDD, 0x40, 0x44, 0x03, 0xD0,
52580x25, 0x40, 0x24, 0x18, 0x91, 0x40, 0x54, 0x03, 0x10, 0x0D, 0x40, 0x25, 0x40,
52590xD1, 0x0A, 0x44, 0x02, 0x10, 0x09, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00,
52600x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0xC1, 0x40, 0x04, 0x00, 0xD0, 0x00, 0x42,
52610x23, 0x00, 0x01, 0x00, 0x34, 0x02, 0xD0, 0x00, 0x40, 0x20, 0x00, 0x81, 0x00,
52620x34, 0x02, 0x10, 0x00, 0x70, 0x00, 0x00, 0xC5, 0x00, 0x14, 0x03, 0x10, 0x00,
52630x50, 0x20, 0x20, 0x81, 0x00, 0x14, 0x03, 0x90, 0x0C, 0x48, 0x21, 0x00, 0xC9,
52640x80, 0x14, 0x02, 0x10, 0x0C, 0x4C, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
52650x00, 0x00, 0x18, 0x06, 0x00, 0xE3, 0x00, 0x4C, 0x02, 0xD0, 0x01, 0xC2, 0x27,
52660x00, 0x13, 0x00, 0x7E, 0x02, 0xC0, 0x03, 0xC0, 0x3C, 0x40, 0x91, 0x00, 0x7C,
52670x00, 0x38, 0x09, 0xC0, 0x24, 0x00, 0xFC, 0x00, 0xCC, 0x83, 0xD0, 0x05, 0xC0,
52680x24, 0x40, 0x93, 0x40, 0x5C, 0x03, 0x10, 0x09, 0xC0, 0x25, 0x00, 0xC3, 0x80,
52690x4C, 0x02, 0x34, 0x09, 0xC0, 0x07, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
52700x05, 0xB8, 0x0D, 0x00, 0xF7, 0x00, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x2F, 0x40,
52710xBF, 0x00, 0xFC, 0x02, 0xF0, 0x03, 0xC0, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x00,
52720xF0, 0x03, 0xC4, 0x0F, 0x00, 0xFF, 0x00, 0xB8, 0x03, 0xF0, 0x03, 0xC4, 0x2F,
52730x40, 0xBF, 0x00, 0xEC, 0x03, 0x70, 0x0F, 0xC0, 0x2F, 0x00, 0xF7, 0x00, 0xFC,
52740x02, 0xF0, 0x0F, 0xC0, 0x17, 0xE0, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
52750x80, 0x7F, 0x00, 0xBF, 0x20, 0xCC, 0x13, 0x70, 0x1F, 0xC0, 0x7F, 0x02, 0xF3,
52760x01, 0xCC, 0x07, 0x30, 0x1F, 0xC0, 0x7B, 0x00, 0xFF, 0x01, 0x8C, 0x07, 0x30,
52770x1F, 0xC0, 0x7D, 0x00, 0xF3, 0x01, 0xCC, 0x07, 0x30, 0x1F, 0xC0, 0x7F, 0x00,
52780xF3, 0x03, 0xEC, 0x07, 0xB0, 0x16, 0xC0, 0x5C, 0x00, 0x2B, 0x01, 0xEC, 0x05,
52790x30, 0x0B, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08,
52800x37, 0x00, 0x9D, 0x00, 0xEC, 0x0B, 0x10, 0x01, 0x40, 0x07, 0x01, 0x11, 0x00,
52810x44, 0x00, 0x14, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x20, 0x40, 0x00, 0x10, 0x01,
52820x40, 0x04, 0x00, 0x13, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x07, 0x00, 0x11,
52830x84, 0x4C, 0x04, 0x52, 0x1D, 0x40, 0x55, 0x00, 0x11, 0x01, 0x54, 0x03, 0xB4,
52840x01, 0x40, 0x0D, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33,
52850x00, 0x8D, 0x00, 0x04, 0x23, 0xD0, 0x0C, 0x60, 0x33, 0x01, 0xC1, 0x00, 0x44,
52860x83, 0x10, 0x0C, 0x40, 0x33, 0x00, 0xDD, 0x00, 0x04, 0x03, 0x10, 0x0D, 0x48,
52870x34, 0x80, 0xC1, 0x00, 0x44, 0x03, 0x10, 0x0C, 0x40, 0x35, 0x00, 0xC1, 0x04,
52880x64, 0x03, 0x10, 0x04, 0x44, 0x16, 0x80, 0x59, 0x00, 0x66, 0x83, 0x5C, 0x00,
52890x44, 0x4C, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00,
52900x9D, 0x21, 0x44, 0x03, 0x91, 0x01, 0x60, 0x03, 0x00, 0x11, 0x00, 0x60, 0x00,
52910x10, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04,
52920x80, 0x19, 0x20, 0x44, 0x00, 0x10, 0x01, 0x40, 0x06, 0x00, 0x11, 0x00, 0x44,
52930x00, 0x50, 0x1D, 0x4C, 0x17, 0x04, 0x51, 0x10, 0x54, 0x0B, 0xDC, 0x11, 0x40,
52940x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x37, 0x00, 0x1F,
52950x33, 0x44, 0x03, 0xD0, 0x0D, 0xC0, 0x37, 0x10, 0xD3, 0x00, 0x4C, 0x03, 0x30,
52960x0D, 0xC0, 0x37, 0x00, 0xDD, 0x00, 0x4D, 0x03, 0x34, 0x0C, 0xC0, 0x30, 0x00,
52970xD3, 0x20, 0x0C, 0x03, 0x10, 0x0D, 0xC0, 0x31, 0x00, 0xD3, 0x00, 0x2C, 0x03,
52980xB0, 0x18, 0xC0, 0x92, 0x00, 0x9B, 0x01, 0x2C, 0x0B, 0x70, 0x59, 0xC2, 0x00,
52990x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x10, 0xAF, 0x00,
53000xFC, 0x03, 0x72, 0x03, 0xCB, 0x0F, 0x00, 0x3F, 0x00, 0xDC, 0x00, 0xF0, 0x03,
53010xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC8, 0x0E, 0x04, 0x37,
53020x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x04, 0x3F, 0x00, 0xFC, 0x00, 0xF0,
53030x0F, 0xC0, 0x8D, 0x10, 0xBF, 0x08, 0xFC, 0x23, 0xB0, 0x09, 0xC0, 0x3F, 0x20,
53040x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x06, 0x1F, 0x00, 0x7C,
53050x03, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0xDF, 0x01, 0x7C, 0x43, 0xF0, 0x0D, 0xC0,
53060x34, 0x1B, 0xD3, 0x00, 0x4C, 0x47, 0x30, 0x1D, 0xC0, 0x77, 0x00, 0xD7, 0x01,
53070x7C, 0x47, 0xF0, 0x0D, 0xC0, 0x34, 0x02, 0xDF, 0x00, 0x4D, 0x43, 0x30, 0x0D,
53080xC0, 0x35, 0x00, 0x9F, 0x06, 0x4C, 0x0B, 0x30, 0x01, 0xC0, 0x29, 0x20, 0x04,
53090x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x74, 0x10, 0x9D, 0x08, 0xF4, 0x03,
53100xD1, 0x21, 0x40, 0x04, 0x00, 0x1D, 0x03, 0x1C, 0x00, 0xD0, 0x81, 0x40, 0xC4,
53110x00, 0x01, 0x00, 0x44, 0x0C, 0x12, 0x31, 0x40, 0x47, 0x00, 0x15, 0x03, 0x74,
53120x04, 0xD0, 0x21, 0x40, 0x44, 0x00, 0x1D, 0x0B, 0x46, 0x40, 0xB2, 0xAD, 0x48,
53130xC4, 0x22, 0x8B, 0x07, 0x6C, 0x0B, 0xA0, 0x91, 0xC0, 0x4C, 0x00, 0x02, 0x00,
53140x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0xF2, 0x00, 0x0D, 0x09, 0x74, 0x17, 0xD0,
53150x0C, 0x40, 0x32, 0x00, 0xDD, 0x04, 0x34, 0x0B, 0xD0, 0x2C, 0x40, 0xF0, 0x00,
53160xC1, 0x0C, 0x54, 0x03, 0x14, 0x4C, 0x40, 0x33, 0x00, 0xD9, 0x04, 0x34, 0x0B,
53170xD0, 0x4C, 0x40, 0xB0, 0x20, 0xD9, 0x00, 0x04, 0x0B, 0x10, 0x24, 0x40, 0x53,
53180x00, 0xC1, 0x01, 0x24, 0x22, 0x90, 0x99, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00,
53190x00, 0x00, 0x00, 0x04, 0x80, 0x78, 0x00, 0x6D, 0x01, 0xB4, 0x47, 0xD8, 0x13,
53200x40, 0x4A, 0x00, 0x2D, 0x01, 0xB4, 0x04, 0xD0, 0x12, 0x40, 0x4C, 0x00, 0x21,
53210x01, 0xC4, 0x04, 0x10, 0x12, 0x40, 0x4F, 0x00, 0x2D, 0x08, 0xB4, 0x00, 0xD0,
53220x12, 0x40, 0x48, 0x00, 0x2D, 0x31, 0x84, 0x04, 0x90, 0x9F, 0x44, 0x5E, 0x08,
53230x79, 0x21, 0xA4, 0x0F, 0x90, 0x12, 0x48, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
53240x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xCF, 0x00, 0x3C, 0x23, 0xF0, 0x0C, 0xC0,
53250x32, 0x00, 0xCF, 0x00, 0x3C, 0x03, 0xF0, 0x0D, 0xC0, 0x30, 0x00, 0xD3, 0x00,
53260x1C, 0x03, 0x30, 0x0C, 0xC0, 0x37, 0x80, 0xC9, 0x00, 0x3C, 0x03, 0xD0, 0x0D,
53270x40, 0x30, 0x00, 0xDD, 0x00, 0x04, 0x23, 0x30, 0x04, 0xC0, 0x13, 0x14, 0xC3,
53280x00, 0x4C, 0x23, 0xB0, 0x88, 0xC6, 0x4B, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
53290x00, 0x02, 0xB8, 0x3D, 0x00, 0xFF, 0x00, 0xFC, 0x83, 0xF0, 0x02, 0xC0, 0x0D,
53300x00, 0x3F, 0x00, 0xDC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x02, 0x3F, 0x08, 0x7C,
53310x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x36, 0x08, 0xFC, 0x10, 0xF0, 0x01, 0x80,
53320x0F, 0x00, 0x3E, 0x00, 0xBC, 0x84, 0xF9, 0x0F, 0xC8, 0x19, 0x00, 0x7F, 0x00,
53330xFC, 0x23, 0xF0, 0x03, 0xC8, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
53340x15, 0xA0, 0x37, 0x10, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00,
53350xDF, 0x00, 0x7C, 0x07, 0x34, 0x1D, 0xD0, 0x30, 0x00, 0xD3, 0x01, 0x4D, 0x03,
53360xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x70, 0x1D, 0xD0, 0x34,
53370x00, 0xD7, 0x00, 0x4C, 0x03, 0xF0, 0x1C, 0xD0, 0x54, 0x00, 0xD3, 0x00, 0x4C,
53380x03, 0xD1, 0x09, 0xC0, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
53390x88, 0x39, 0x00, 0x6D, 0x00, 0xB4, 0x2B, 0xD0, 0x02, 0x40, 0x0B, 0x00, 0x2D,
53400x00, 0xF4, 0x00, 0x10, 0x03, 0x40, 0x08, 0x00, 0x31, 0x00, 0x84, 0x00, 0xD0,
53410x02, 0x40, 0x0B, 0x00, 0x2D, 0x00, 0xB4, 0x00, 0xD0, 0x03, 0x40, 0x08, 0x10,
53420x2D, 0x00, 0xA4, 0x00, 0xD0, 0x0E, 0x40, 0x18, 0x40, 0xE1, 0x00, 0x94, 0x03,
53430xD0, 0x0E, 0x40, 0x4F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
53440x79, 0x00, 0xED, 0x03, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x01,
53450xB4, 0x07, 0x10, 0x1E, 0x40, 0x7C, 0x00, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x1E,
53460x40, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x78, 0x00, 0xED,
53470x01, 0xA5, 0x07, 0xD0, 0x1F, 0x49, 0x58, 0x80, 0xF5, 0x01, 0x84, 0x07, 0xD0,
53480x1E, 0x42, 0x13, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33,
53490x00, 0xDD, 0x01, 0x34, 0x03, 0xD0, 0x01, 0x40, 0x03, 0x00, 0x0D, 0x00, 0x34,
53500x00, 0x10, 0x00, 0x40, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0xD0, 0x00, 0x44,
53510x07, 0x00, 0x0D, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x40, 0x00, 0x00, 0x0D, 0x00,
53520x24, 0x00, 0xD0, 0x5C, 0x44, 0xD0, 0x01, 0xC5, 0x13, 0x14, 0x4F, 0xD8, 0x5D,
53530x40, 0x5B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15, 0x00,
53540x7F, 0x02, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C, 0x01,
53550x30, 0x05, 0xC0, 0x14, 0x50, 0x53, 0x00, 0x4C, 0x01, 0xF0, 0x05, 0xC0, 0x17,
53560x00, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x14, 0x00, 0x5F, 0x00, 0x44,
53570x01, 0xD0, 0x27, 0xC0, 0xDC, 0x00, 0x67, 0x07, 0x8C, 0x01, 0xF0, 0x57, 0x44,
53580x5F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x87, 0x00, 0x1F,
53590x12, 0x7C, 0x00, 0xF2, 0x23, 0xC0, 0x0F, 0x00, 0x3F, 0x02, 0xFC, 0x00, 0xF0,
53600x03, 0xC8, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x23, 0xC0, 0x0F, 0x00,
53610x3F, 0x02, 0xFC, 0x80, 0xF3, 0x23, 0xC0, 0x8F, 0x00, 0x3F, 0x22, 0xDC, 0x00,
53620xF0, 0x01, 0xC0, 0x07, 0x02, 0x1B, 0x00, 0x7C, 0x20, 0xF0, 0x21, 0xC0, 0x4B,
53630x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x9F, 0x05,
53640x4C, 0x06, 0xF0, 0x99, 0xC0, 0x24, 0x00, 0x93, 0x05, 0x7C, 0x02, 0xF0, 0x09,
53650xC0, 0x67, 0x40, 0x93, 0x00, 0x7C, 0x02, 0xF0, 0x39, 0xC0, 0x67, 0x40, 0x93,
53660x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x03, 0x4C, 0x22, 0xF0,
53670x49, 0xE0, 0xA7, 0x00, 0x9F, 0x00, 0x5E, 0x0A, 0x30, 0x09, 0xC0, 0x40, 0x20,
53680x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xA6, 0x04, 0x9D, 0x12, 0x44,
53690x02, 0xD0, 0x29, 0x41, 0x20, 0x00, 0x91, 0x00, 0x74, 0x0E, 0xD0, 0x19, 0x41,
53700x27, 0x00, 0x91, 0x03, 0x74, 0x02, 0xD0, 0x19, 0x40, 0x67, 0x00, 0x91, 0x02,
53710x74, 0x02, 0xD8, 0x39, 0x40, 0x27, 0x01, 0x9D, 0x00, 0x45, 0x86, 0xD0, 0x39,
53720x40, 0x67, 0x14, 0x97, 0x0A, 0x44, 0x0A, 0x56, 0x49, 0x40, 0x04, 0x08, 0x08,
53730x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x02, 0x9D, 0x00, 0x64, 0x2A,
53740xD0, 0x09, 0x40, 0x2C, 0x08, 0xB1, 0x00, 0xF4, 0x0E, 0xD0, 0x1B, 0x40, 0xAF,
53750x02, 0xB1, 0x03, 0xF4, 0x02, 0xD0, 0x0B, 0x40, 0x2F, 0x02, 0xB1, 0x02, 0xF4,
53760x0A, 0xD1, 0x1B, 0x41, 0x2F, 0x01, 0xA9, 0x00, 0xC6, 0x02, 0x91, 0x09, 0x40,
53770x25, 0x00, 0x9D, 0x42, 0x54, 0x02, 0x15, 0x49, 0x40, 0x60, 0x00, 0x02, 0x00,
53780x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x8D, 0x14, 0x25, 0x12, 0xD0,
53790x0A, 0x40, 0x2C, 0x00, 0xE1, 0x80, 0xB4, 0x02, 0xD0, 0x0A, 0x4A, 0x2B, 0x00,
53800xA1, 0x00, 0xB4, 0x06, 0xD0, 0x0E, 0x40, 0x6B, 0x00, 0xA1, 0x00, 0xB4, 0x02,
53810xD2, 0x0A, 0x40, 0x2B, 0x00, 0xED, 0x08, 0x84, 0x02, 0xD2, 0x0C, 0x4A, 0x23,
53820x00, 0x95, 0x00, 0x64, 0x06, 0x58, 0x48, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
53830x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x04, 0x6C, 0x28, 0xF0, 0xA1,
53840xC8, 0x84, 0x42, 0x13, 0x0A, 0x7C, 0x28, 0xF0, 0xA1, 0xC0, 0x87, 0x02, 0x13,
53850x0A, 0x7C, 0x28, 0xF0, 0xA1, 0xC0, 0x87, 0x02, 0x13, 0x0A, 0x7C, 0x28, 0xD0,
53860xA1, 0xC0, 0x87, 0x02, 0x0F, 0x82, 0xCC, 0x01, 0xF8, 0x01, 0xCA, 0x05, 0x00,
53870x1F, 0x00, 0x5C, 0x28, 0x30, 0xA1, 0xC0, 0x74, 0xE0, 0x0A, 0x00, 0x00, 0x00,
53880x00, 0x00, 0x19, 0xB8, 0x27, 0x05, 0xBF, 0x14, 0x5C, 0x22, 0xF0, 0x09, 0xD0,
53890x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC8, 0x27, 0x20, 0x9F, 0x00,
53900x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x20, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09,
53910xC0, 0x27, 0x00, 0x9F, 0x04, 0x7C, 0x02, 0xE0, 0x0B, 0xC0, 0x2B, 0x00, 0xA7,
53920x40, 0xDC, 0x02, 0xF0, 0x8B, 0xD4, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
53930x00, 0x18, 0x80, 0x2F, 0x00, 0xBF, 0x14, 0xFC, 0x32, 0x30, 0x0A, 0xC0, 0x24,
53940x00, 0xAF, 0x08, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x2F, 0x02, 0xB3, 0x00, 0xFC,
53950x02, 0xF0, 0x8B, 0xC8, 0x2F, 0x08, 0xBF, 0x00, 0xFC, 0x22, 0x70, 0x0B, 0xC0,
53960x2F, 0x00, 0xB3, 0x28, 0xCE, 0x02, 0xF0, 0x0A, 0xC0, 0x2E, 0x00, 0xB3, 0x00,
53970xFC, 0x02, 0xC1, 0x0B, 0xC2, 0x74, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
53980x1C, 0x00, 0x07, 0x05, 0x1D, 0x04, 0x74, 0x30, 0x10, 0x01, 0x41, 0x04, 0x04,
53990x1D, 0x20, 0x74, 0x50, 0xD0, 0x41, 0x4C, 0x07, 0x01, 0x11, 0x10, 0x74, 0x40,
54000xD0, 0x01, 0x40, 0x07, 0x05, 0x1D, 0x04, 0x74, 0x10, 0xD0, 0x01, 0x41, 0x07,
54010x04, 0x01, 0x00, 0x44, 0x00, 0xD0, 0x01, 0xC0, 0x16, 0x00, 0x1B, 0x00, 0x74,
54020x00, 0xD0, 0x01, 0x40, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
54030xA2, 0x23, 0x21, 0x8D, 0x14, 0x34, 0x12, 0x10, 0x48, 0x40, 0x20, 0x00, 0x8D,
54040x00, 0x34, 0x12, 0xD0, 0x48, 0x41, 0x23, 0x01, 0x81, 0x04, 0x34, 0x02, 0xD0,
54050x08, 0x40, 0x23, 0x01, 0x8D, 0x14, 0x34, 0x12, 0x50, 0x48, 0x40, 0x27, 0x00,
54060x85, 0x00, 0x05, 0x02, 0xD0, 0x08, 0x44, 0x24, 0x00, 0x85, 0x40, 0x34, 0x82,
54070xD1, 0x08, 0x40, 0x48, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8,
54080x25, 0x00, 0x9D, 0x02, 0x74, 0x02, 0x12, 0x09, 0x50, 0x24, 0x20, 0x9D, 0x00,
54090x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x40, 0x99, 0x00, 0x74, 0x02, 0xD0, 0x09,
54100x40, 0x27, 0x00, 0xDD, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x20, 0x91,
54110x00, 0x64, 0x82, 0xD1, 0x19, 0x40, 0x26, 0x00, 0x9D, 0x01, 0x74, 0x0A, 0xD8,
54120x09, 0x40, 0x60, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x88, 0x27,
54130x00, 0x9D, 0x01, 0x7C, 0x02, 0x34, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x7C,
54140x02, 0xF1, 0x09, 0xC0, 0x27, 0x20, 0x93, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0x40,
54150x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x70, 0x09, 0xC0, 0x27, 0x00, 0x93, 0x00,
54160x4C, 0x02, 0xF0, 0x09, 0x80, 0x20, 0x00, 0x97, 0x00, 0x7C, 0x06, 0xF0, 0x49,
54170xCA, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x25, 0x00,
54180x9F, 0x08, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x40, 0x7C, 0x02,
54190xF0, 0x09, 0xC8, 0x27, 0x00, 0x97, 0x00, 0x7C, 0x02, 0xF1, 0x09, 0xC0, 0x27,
54200x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC6, 0x27, 0x50, 0x9F, 0x80, 0x5C,
54210x02, 0xF0, 0x09, 0xC0, 0x27, 0x20, 0x9B, 0x00, 0x7E, 0x12, 0xF0, 0x49, 0xD1,
54220x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F,
54230x04, 0x3C, 0x40, 0x30, 0x01, 0xD0, 0x06, 0x00, 0x13, 0x00, 0x4D, 0x00, 0xF0,
54240x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x11, 0xC0, 0x06, 0x00,
54250x1F, 0x01, 0x7C, 0x20, 0xF0, 0x91, 0xC0, 0x07, 0x04, 0x13, 0x80, 0x7C, 0x40,
54260xF0, 0x11, 0xC4, 0x84, 0x04, 0x1F, 0x10, 0x5C, 0x48, 0xF0, 0x21, 0xC0, 0x53,
54270x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x9C, 0x00, 0x7D, 0x12,
54280xF4, 0x01, 0x12, 0x17, 0xC0, 0x14, 0x20, 0x71, 0x0A, 0xEC, 0x01, 0xD0, 0x87,
54290x48, 0x9F, 0x80, 0x7D, 0x00, 0xF4, 0x6D, 0xD0, 0x07, 0xC0, 0x1E, 0x00, 0x7D,
54300x00, 0xF4, 0x29, 0x70, 0x07, 0xC0, 0x99, 0x00, 0x71, 0x81, 0xCC, 0x0D, 0xD1,
54310x16, 0x44, 0x1C, 0x20, 0x7D, 0x02, 0xC4, 0x15, 0xC0, 0x27, 0x40, 0x43, 0x00,
54320x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0xF2, 0x03, 0xCD, 0x01, 0x34,
54330x03, 0x10, 0x9D, 0x41, 0x30, 0x00, 0xC1, 0x02, 0x04, 0x13, 0xD0, 0x2C, 0x48,
54340xB7, 0x01, 0xCD, 0x10, 0x34, 0x0B, 0xD0, 0x0C, 0x42, 0x30, 0x01, 0xCD, 0x00,
54350x34, 0x07, 0xD0, 0x1C, 0x40, 0x31, 0x00, 0xD1, 0x08, 0x14, 0x09, 0xD8, 0x9C,
54360x40, 0x31, 0x10, 0x0D, 0x01, 0x14, 0x0F, 0xD0, 0x8D, 0x40, 0x43, 0x00, 0x0A,
54370x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x38, 0x00, 0xED, 0x00, 0x34, 0x01,
54380x10, 0x0F, 0x40, 0x78, 0x41, 0xF1, 0x01, 0x84, 0x43, 0xD0, 0x0E, 0x41, 0x3B,
54390x10, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x1E, 0x60, 0x38, 0x00, 0xED, 0x10, 0xB4,
54400x01, 0x50, 0x0E, 0x42, 0x39, 0x40, 0x21, 0x00, 0xA4, 0x08, 0xD0, 0x0E, 0x40,
54410x29, 0x00, 0x7D, 0x11, 0x84, 0x01, 0xD0, 0x06, 0x40, 0x13, 0x00, 0x02, 0x00,
54420x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x58, 0x08, 0xEF, 0x01, 0xBC, 0x07, 0x30,
54430x1E, 0xC0, 0x7C, 0x05, 0xE3, 0x01, 0x84, 0x07, 0xF0, 0x16, 0xC0, 0x7B, 0x00,
54440xED, 0x01, 0xB4, 0x05, 0xF0, 0x1F, 0x40, 0x58, 0x00, 0xEF, 0x01, 0xBC, 0x07,
54450xF0, 0x1E, 0xC0, 0x7D, 0x00, 0xE3, 0x01, 0x9C, 0x05, 0xF0, 0x0E, 0xC0, 0x69,
54460x10, 0x2F, 0x01, 0x9C, 0x05, 0xF2, 0x1E, 0xC4, 0x53, 0x60, 0x00, 0x00, 0x00,
54470x00, 0x00, 0x00, 0x10, 0xBA, 0x15, 0x00, 0xDF, 0x20, 0x7C, 0x02, 0xF4, 0x0D,
54480xC8, 0x35, 0x23, 0x9F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x07, 0x00, 0x9F,
54490x00, 0x7C, 0x01, 0xF0, 0x09, 0xD8, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0,
54500x0D, 0xC4, 0x25, 0x80, 0xDF, 0x00, 0x5C, 0x00, 0xF2, 0x0D, 0xC0, 0x26, 0x00,
54510x8F, 0x20, 0x7C, 0x00, 0xF2, 0x01, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00,
54520x00, 0x00, 0x00, 0xA0, 0x7D, 0x00, 0xFF, 0x01, 0xFC, 0x87, 0xF9, 0x0F, 0xC0,
54530x7D, 0x00, 0xFF, 0x01, 0xFC, 0x25, 0xF0, 0x1E, 0xC0, 0x7C, 0x00, 0xFF, 0x09,
54540xDC, 0x07, 0xF0, 0x17, 0xC0, 0x7F, 0x0A, 0x7F, 0x81, 0xCC, 0x87, 0xF0, 0x17,
54550xC0, 0x5F, 0x22, 0xF3, 0x01, 0xCC, 0x25, 0x30, 0x1A, 0xC0, 0x78, 0x02, 0x23,
54560x01, 0xCC, 0x06, 0xF0, 0x9B, 0xC0, 0x1B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
54570x00, 0x15, 0x88, 0x39, 0x22, 0x6D, 0x00, 0xB4, 0x19, 0xD8, 0x46, 0x40, 0x3B,
54580x05, 0xED, 0x04, 0xB4, 0x83, 0xD0, 0x8E, 0x40, 0x38, 0x00, 0x6D, 0x00, 0xB4,
54590x88, 0xD0, 0x2E, 0x40, 0x3B, 0x00, 0xAD, 0x18, 0x85, 0x0A, 0xD0, 0xAE, 0x40,
54600x1F, 0x03, 0x21, 0x84, 0xC4, 0x01, 0xB0, 0x4A, 0x40, 0xA8, 0x02, 0x2F, 0x00,
54610x94, 0x02, 0xD0, 0x8A, 0x40, 0x57, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
54620x00, 0x00, 0x19, 0x00, 0xED, 0x00, 0xB4, 0x81, 0xD0, 0x8A, 0x41, 0x39, 0x20,
54630x6D, 0x90, 0xB4, 0x08, 0xD1, 0x23, 0x40, 0x38, 0x00, 0xED, 0x20, 0x96, 0x23,
54640xD0, 0x0E, 0x40, 0x1B, 0x10, 0xFD, 0x00, 0x84, 0x03, 0xD0, 0x22, 0x40, 0x3B,
54650x60, 0xB1, 0x00, 0xD6, 0x01, 0x11, 0x0E, 0x48, 0x28, 0x00, 0x25, 0x0A, 0x84,
54660x40, 0xD0, 0x8A, 0x41, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
54670x28, 0x05, 0x00, 0x8D, 0x03, 0x74, 0x00, 0xD0, 0x30, 0x44, 0xF3, 0x00, 0x1D,
54680x03, 0x74, 0x02, 0xD0, 0x08, 0x40, 0xC0, 0x00, 0x0D, 0x02, 0x74, 0x0C, 0xD0,
54690x39, 0x00, 0xE7, 0x00, 0x9D, 0x02, 0x44, 0x0E, 0xD0, 0x08, 0x40, 0xE3, 0x00,
54700x81, 0x02, 0x14, 0x08, 0x90, 0x1C, 0x44, 0x20, 0x04, 0x0D, 0x00, 0x56, 0x0C,
54710xD0, 0x28, 0x41, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x28,
54720x25, 0x00, 0x1F, 0x06, 0x7E, 0x02, 0xD8, 0x91, 0xC8, 0xB9, 0x00, 0x1F, 0x01,
54730x7C, 0x16, 0xF0, 0x59, 0xC0, 0x84, 0x04, 0x1D, 0x07, 0x5C, 0x06, 0xF0, 0x19,
54740xC0, 0x27, 0x04, 0x9F, 0x01, 0x4C, 0x06, 0xF0, 0x58, 0xC0, 0x67, 0x02, 0xC3,
54750x00, 0x1C, 0x4D, 0x10, 0x8C, 0xD0, 0xE0, 0x01, 0x17, 0x00, 0x4C, 0x0E, 0xF0,
54760x01, 0xC0, 0x57, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27,
54770x00, 0x9F, 0x02, 0x7C, 0x82, 0xF0, 0x21, 0xC0, 0x37, 0x00, 0x9F, 0x10, 0x7C,
54780x0A, 0xF0, 0x09, 0xC0, 0x07, 0x08, 0x1F, 0x02, 0x7C, 0x6A, 0xF0, 0x89, 0xC1,
54790xA7, 0x04, 0x9F, 0x10, 0x7C, 0x60, 0xF0, 0x09, 0xC8, 0x87, 0x02, 0x1F, 0x23,
54800x6C, 0x00, 0xF0, 0x8D, 0xC2, 0x27, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01,
54810xC0, 0x37, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x2D, 0x00,
54820x33, 0x10, 0xFC, 0x02, 0x30, 0x0B, 0xE2, 0x3F, 0x04, 0xB3, 0x00, 0xCC, 0x00,
54830x38, 0x0B, 0xC0, 0x2F, 0x04, 0xBF, 0x10, 0xFC, 0x02, 0x30, 0x03, 0xC2, 0x2C,
54840x80, 0x33, 0x00, 0xCC, 0x00, 0x34, 0x03, 0xC0, 0x2C, 0x00, 0x7F, 0x10, 0xCC,
54850x41, 0x31, 0x0F, 0xC0, 0x2D, 0x10, 0x33, 0x00, 0xFC, 0x42, 0x30, 0x0A, 0xC0,
54860x04, 0x24, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xE6, 0x00, 0x91,
54870x05, 0x74, 0x06, 0x12, 0x39, 0x40, 0x37, 0x00, 0x91, 0x81, 0x44, 0x04, 0xB8,
54880x19, 0x44, 0x47, 0x30, 0x9D, 0x43, 0x5C, 0x0E, 0x10, 0x31, 0x40, 0x65, 0x00,
54890x1F, 0x01, 0x44, 0x0C, 0x10, 0x11, 0x40, 0x44, 0x01, 0x5D, 0x02, 0x4C, 0x0C,
54900x70, 0x3D, 0x40, 0xE4, 0x00, 0x95, 0x01, 0x74, 0x0C, 0x12, 0x71, 0x40, 0x04,
54910x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xC4, 0x40, 0x11, 0x01,
54920x74, 0x06, 0x14, 0x39, 0x44, 0x37, 0x00, 0x11, 0x03, 0x44, 0x46, 0x1A, 0x11,
54930x41, 0x67, 0x00, 0x9D, 0x43, 0x74, 0x06, 0x10, 0x11, 0x40, 0x44, 0x04, 0x11,
54940x01, 0x44, 0x06, 0x10, 0x19, 0x64, 0x66, 0x00, 0xDD, 0x02, 0x44, 0x45, 0x10,
54950xA5, 0x40, 0x66, 0x20, 0x19, 0x81, 0x74, 0x0E, 0x11, 0x11, 0x54, 0x04, 0x08,
54960x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x01, 0x00, 0x34,
54970x02, 0x10, 0x00, 0x68, 0x37, 0x00, 0x81, 0x00, 0x05, 0x02, 0x10, 0x00, 0x40,
54980x63, 0x00, 0x0D, 0x00, 0x16, 0x00, 0x14, 0x08, 0x50, 0x00, 0x40, 0x81, 0x00,
54990x05, 0x02, 0x1C, 0x09, 0x64, 0x02, 0x00, 0x1D, 0x00, 0x45, 0x00, 0x94, 0x0D,
55000x40, 0x02, 0x00, 0x0D, 0x00, 0x34, 0x02, 0x10, 0x00, 0x40, 0x40, 0x00, 0x00,
55010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x06, 0x00, 0x11, 0x00, 0x7C, 0x00,
55020x30, 0x09, 0x60, 0x3F, 0x40, 0x13, 0x00, 0x4C, 0x00, 0x14, 0x01, 0xC0, 0x27,
55030x20, 0x9F, 0x00, 0x7E, 0x82, 0x30, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x4C,
55040x00, 0x30, 0x01, 0xC0, 0x26, 0x00, 0x1F, 0x00, 0x4C, 0x03, 0x30, 0x0D, 0xD0,
55050x27, 0x08, 0x1B, 0x00, 0x7C, 0x02, 0x30, 0x09, 0xD0, 0x04, 0x64, 0x08, 0x00,
55060x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x2F, 0x00, 0xBF, 0x00, 0xFC, 0x00, 0xF1,
55070x03, 0xC2, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x80, 0xF0, 0x03, 0xC0, 0x0F, 0x00,
55080x3F, 0x00, 0xDC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x08, 0x2F, 0x00, 0xFC, 0x00,
55090xF0, 0x03, 0xC0, 0x0D, 0x00, 0x2F, 0x40, 0xCC, 0x00, 0x59, 0x0F, 0xC8, 0x2D,
55100x00, 0x37, 0x80, 0xFC, 0x02, 0xF4, 0x0B, 0xC8, 0x17, 0x60, 0x0E, 0x00, 0x00,
55110x00, 0x00, 0x00, 0x03, 0xA0, 0x0F, 0x00, 0x3F, 0x41, 0xEC, 0x02, 0xF0, 0x0F,
55120xC0, 0x2C, 0x00, 0xBF, 0x00, 0xBE, 0x07, 0xF0, 0x03, 0xC1, 0x3E, 0x00, 0xA3,
55130x01, 0xDC, 0x00, 0x30, 0x03, 0xC0, 0x0F, 0x00, 0xAC, 0x01, 0xDC, 0x33, 0x34,
55140x3F, 0xC0, 0x2F, 0x80, 0xA3, 0x01, 0xFC, 0x53, 0xF0, 0x83, 0xC0, 0x4F, 0x00,
55150x33, 0x01, 0xBC, 0x0C, 0x30, 0x13, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00,
55160x00, 0x00, 0x03, 0x08, 0x27, 0x12, 0x1D, 0x00, 0x44, 0x02, 0xD0, 0x0F, 0x44,
55170x04, 0x14, 0x1D, 0x00, 0x55, 0x07, 0xD0, 0x21, 0x50, 0x3C, 0x00, 0x91, 0x41,
55180x44, 0x02, 0x10, 0x01, 0x40, 0x27, 0x20, 0x9D, 0x11, 0x54, 0x3B, 0x10, 0x4D,
55190x40, 0x27, 0x20, 0x91, 0x10, 0x74, 0x0F, 0xD2, 0x0B, 0x40, 0x07, 0x08, 0x11,
55200x80, 0x74, 0x00, 0x14, 0x05, 0x40, 0x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
55210x00, 0x13, 0xA0, 0x03, 0x00, 0x0D, 0x00, 0x05, 0x00, 0xD0, 0x0C, 0x40, 0x20,
55220x08, 0x8D, 0x00, 0x35, 0x02, 0x50, 0x00, 0x40, 0x31, 0x00, 0xC1, 0x00, 0x14,
55230x02, 0x10, 0x08, 0x44, 0x03, 0x00, 0x9D, 0x00, 0x14, 0x03, 0x90, 0x0C, 0x60,
55240x23, 0x00, 0x81, 0x04, 0x34, 0x03, 0xD0, 0x58, 0x48, 0x23, 0x15, 0x81, 0x14,
55250x34, 0x10, 0x10, 0x00, 0x40, 0x47, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
55260x03, 0x88, 0x65, 0x10, 0x1D, 0x03, 0x44, 0x0C, 0xD0, 0x0D, 0x40, 0x44, 0x00,
55270x1D, 0x01, 0x54, 0x12, 0xD0, 0x00, 0x40, 0x35, 0x00, 0xD1, 0x00, 0x44, 0x06,
55280x14, 0x19, 0x40, 0x47, 0x14, 0x9D, 0x00, 0x54, 0x03, 0x90, 0x0D, 0x40, 0x27,
55290x42, 0x91, 0x20, 0x74, 0x03, 0xD0, 0x1D, 0x40, 0x23, 0x00, 0x91, 0x00, 0x74,
55300x04, 0x10, 0x05, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
55310x88, 0x47, 0x04, 0x1F, 0x01, 0x4C, 0x8E, 0xF1, 0x0D, 0xC8, 0x64, 0x20, 0x0F,
55320x43, 0x7D, 0x07, 0x70, 0x55, 0xC0, 0x35, 0x40, 0xC3, 0x00, 0x5C, 0x14, 0x30,
55330x59, 0xC0, 0xE7, 0x00, 0x8E, 0x00, 0x5C, 0x03, 0xB0, 0x0D, 0xC0, 0x37, 0x20,
55340xD1, 0x20, 0x7C, 0x03, 0xF2, 0x19, 0xC2, 0x47, 0x00, 0x13, 0x81, 0x3C, 0x02,
55350x34, 0x01, 0xC0, 0x0B, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80,
55360x2D, 0x08, 0x3F, 0x00, 0xFC, 0x42, 0xF0, 0x0E, 0xC0, 0x2F, 0x00, 0x3F, 0x00,
55370xFC, 0x03, 0xF0, 0x87, 0xC0, 0x38, 0x00, 0xFF, 0x00, 0xBC, 0x42, 0xF0, 0x0B,
55380xC1, 0x2F, 0x00, 0xBF, 0x04, 0xBC, 0x03, 0x70, 0x0F, 0xC0, 0x7B, 0x20, 0xBF,
55390x00, 0xFC, 0x03, 0xD0, 0x09, 0xC0, 0x4F, 0x02, 0x3F, 0x09, 0xFC, 0x02, 0xF0,
55400x07, 0xC1, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x05,
55410x00, 0x13, 0x02, 0x5D, 0x0A, 0xF0, 0x0D, 0xC0, 0x24, 0x00, 0x93, 0x00, 0x7C,
55420x82, 0x30, 0x27, 0xC0, 0x34, 0x44, 0xD3, 0x00, 0x6C, 0x02, 0xF0, 0x09, 0xC6,
55430x87, 0x04, 0x9F, 0x00, 0x5C, 0x03, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0xD3, 0x20,
55440x4C, 0x03, 0xF0, 0x0D, 0xC0, 0x64, 0x00, 0x93, 0x01, 0x7C, 0x02, 0x30, 0x01,
55450xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x24, 0x00,
55460x01, 0x00, 0x44, 0x06, 0xD0, 0x2F, 0xC5, 0x26, 0x00, 0x9B, 0x20, 0x74, 0x02,
55470xB0, 0x45, 0x40, 0x7C, 0x40, 0xD1, 0x01, 0x6C, 0x02, 0xD0, 0x29, 0x40, 0x87,
55480x00, 0x9D, 0x00, 0xC4, 0x03, 0x12, 0x0D, 0x40, 0xB7, 0x06, 0x91, 0x0A, 0xC4,
55490x03, 0xD0, 0x0D, 0x50, 0xE4, 0x00, 0x91, 0x03, 0x74, 0x42, 0x10, 0x05, 0x40,
55500x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x22, 0x80, 0x01,
55510x12, 0x04, 0x20, 0xD0, 0x3C, 0x41, 0x00, 0x00, 0x81, 0x09, 0x24, 0x03, 0x10,
55520x00, 0x40, 0x30, 0x20, 0x8D, 0x13, 0x24, 0x08, 0x90, 0x20, 0x40, 0x83, 0x00,
55530xCD, 0x00, 0x14, 0x03, 0x50, 0x0C, 0x00, 0x23, 0x00, 0x81, 0x02, 0x04, 0x03,
55540xC0, 0x08, 0x40, 0x90, 0x14, 0x41, 0x12, 0x34, 0x85, 0x10, 0x08, 0x40, 0x1F,
55550x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x68, 0x40, 0x21, 0x01,
55560x84, 0x07, 0xD0, 0x1C, 0x40, 0x5A, 0x00, 0xE9, 0x01, 0xF4, 0x07, 0x90, 0x10,
55570x54, 0x70, 0x26, 0xAD, 0x91, 0xA4, 0x05, 0xD0, 0x12, 0x08, 0x6B, 0x02, 0xFD,
55580x01, 0x84, 0x07, 0x10, 0x1E, 0x40, 0x6B, 0x00, 0xB5, 0x01, 0x84, 0x07, 0xD0,
55590x9A, 0x40, 0x58, 0x02, 0x61, 0x81, 0xF4, 0x0D, 0x12, 0x9E, 0x40, 0x13, 0x00,
55600x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x24, 0x02, 0x11, 0x00, 0x1D,
55610x21, 0xF0, 0x0C, 0x40, 0xB4, 0x00, 0xC3, 0x02, 0x3C, 0x03, 0x30, 0x40, 0xC0,
55620x30, 0x02, 0xCF, 0x00, 0x2C, 0x00, 0xB3, 0x84, 0xC0, 0x13, 0x8A, 0xCF, 0x00,
55630x5C, 0x03, 0x70, 0x0C, 0xC0, 0x27, 0x40, 0x83, 0x08, 0x0C, 0x03, 0xF0, 0x0C,
55640xC0, 0x34, 0x02, 0xC3, 0x04, 0x3C, 0x01, 0x30, 0x08, 0xC0, 0x4B, 0x40, 0x00,
55650x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x2D, 0x00, 0x7F, 0x88, 0xFC, 0x01,
55660xC0, 0x0F, 0xC1, 0x1D, 0x00, 0xFF, 0x00, 0xFC, 0x23, 0xF0, 0x03, 0xC0, 0xBF,
55670x06, 0xF3, 0x08, 0xFC, 0x21, 0xF0, 0x8F, 0xC8, 0x3F, 0xA2, 0xFF, 0x08, 0xFC,
55680x23, 0xF0, 0x0F, 0xC0, 0x3E, 0x02, 0xBB, 0x20, 0xFD, 0x43, 0xF0, 0x0F, 0xC0,
55690x3F, 0x02, 0xFF, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC2, 0x0B, 0x60, 0x06, 0x00,
55700x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x2F, 0x00, 0x0F, 0x00, 0x4C, 0x01, 0xF0,
55710x4D, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C, 0x03, 0xF8, 0x01, 0xC0, 0xB6, 0x40,
55720xD3, 0x01, 0x7C, 0x81, 0xF2, 0x05, 0xC8, 0x77, 0x00, 0x93, 0x00, 0x6C, 0x23,
55730x30, 0x0D, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x7C, 0x03, 0xF0, 0x29, 0xC0, 0x54,
55740x00, 0x53, 0x00, 0x4C, 0x03, 0xF0, 0x09, 0xC0, 0x56, 0x00, 0x0E, 0x00, 0x00,
55750x00, 0x00, 0x00, 0x13, 0x88, 0x29, 0x00, 0x2D, 0x00, 0x84, 0x03, 0xD0, 0x0E,
55760x41, 0x3B, 0x00, 0x6D, 0x00, 0xB4, 0x03, 0xD0, 0x03, 0x50, 0x38, 0x01, 0xE1,
55770x00, 0x84, 0x03, 0xD1, 0x0E, 0x40, 0x3F, 0x00, 0xA1, 0x00, 0x94, 0x83, 0x10,
55780x0E, 0x40, 0x3B, 0x00, 0xA1, 0x00, 0xB6, 0x13, 0xD0, 0x8A, 0x40, 0x19, 0x00,
55790x61, 0x00, 0x84, 0x03, 0xD2, 0x0E, 0x40, 0x48, 0x20, 0x06, 0x00, 0x00, 0x00,
55800x00, 0x00, 0x01, 0x00, 0x69, 0x00, 0x3D, 0x01, 0x84, 0x0F, 0xD1, 0x5E, 0x40,
55810x7B, 0x00, 0xED, 0x81, 0xB4, 0x07, 0xD2, 0x12, 0x40, 0x71, 0x00, 0xE1, 0x11,
55820x94, 0x07, 0xD0, 0x16, 0x40, 0x7B, 0x00, 0xB9, 0x43, 0x24, 0x07, 0x50, 0x1E,
55830x40, 0x73, 0x00, 0xED, 0x01, 0xB4, 0x17, 0xD0, 0x1C, 0x41, 0x78, 0x00, 0xE1,
55840x01, 0x84, 0x07, 0xD0, 0x1A, 0x40, 0x0E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
55850x00, 0x12, 0x28, 0x73, 0x10, 0xCD, 0x40, 0x04, 0x0F, 0xD0, 0x0C, 0x40, 0xB3,
55860x00, 0xCD, 0x02, 0x34, 0x03, 0xD0, 0x69, 0x40, 0x37, 0x00, 0xC1, 0x00, 0x06,
55870x27, 0xD0, 0x9D, 0x40, 0x33, 0x00, 0x99, 0x00, 0x14, 0x03, 0x10, 0x0D, 0x40,
55880x77, 0x02, 0x89, 0x08, 0x34, 0x03, 0xD0, 0x6D, 0x42, 0x31, 0x00, 0xD1, 0x00,
55890x44, 0x03, 0xD0, 0x0C, 0x50, 0x48, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
55900x17, 0xA8, 0x5D, 0x01, 0x7F, 0x02, 0xCD, 0x05, 0xF0, 0x05, 0xC0, 0x5F, 0x04,
55910x7D, 0x0B, 0x7C, 0x81, 0xF0, 0x37, 0xC0, 0x15, 0x00, 0x53, 0x00, 0xDC, 0x09,
55920xF0, 0xA7, 0xC0, 0x1F, 0x41, 0x5B, 0x00, 0x6C, 0x01, 0x34, 0x05, 0xC0, 0x17,
55930x00, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x37, 0xE0, 0x14, 0x40, 0x53, 0x00, 0x4D,
55940x01, 0xF0, 0x05, 0xC0, 0x5E, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
55950x00, 0x07, 0x00, 0x1F, 0x12, 0x7C, 0x00, 0xF0, 0x01, 0xCC, 0x07, 0x00, 0x1F,
55960x0A, 0x7C, 0x00, 0xF8, 0x81, 0x40, 0x04, 0x10, 0x1F, 0x02, 0x5C, 0x48, 0xF8,
55970x21, 0xC2, 0x07, 0x01, 0x17, 0x00, 0x7C, 0x00, 0xF1, 0x01, 0xC0, 0x87, 0x40,
55980x17, 0x00, 0x7C, 0x80, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x04,
55990xF0, 0x01, 0xC8, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08,
56000x23, 0x00, 0x9B, 0x00, 0x4E, 0x62, 0xF0, 0x19, 0xC0, 0x27, 0x04, 0x87, 0x04,
56010x4C, 0x82, 0xF0, 0x09, 0xC4, 0x24, 0x10, 0x93, 0x40, 0x7C, 0x02, 0xF2, 0x09,
56020xC0, 0x24, 0x00, 0x9E, 0x80, 0x2C, 0x02, 0x70, 0x09, 0xC0, 0x64, 0x08, 0x93,
56030x05, 0x78, 0x06, 0xF0, 0x09, 0x40, 0x26, 0x00, 0x9F, 0x01, 0x4C, 0x02, 0x30,
56040x39, 0xC0, 0x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26,
56050x00, 0x81, 0x04, 0x44, 0x0A, 0xD0, 0x19, 0x40, 0x27, 0x00, 0x9D, 0x10, 0x44,
56060x02, 0xD0, 0x09, 0xC0, 0x26, 0x40, 0x91, 0x01, 0x74, 0x16, 0xD0, 0x19, 0x40,
56070xA4, 0x00, 0x9D, 0x80, 0x4C, 0x82, 0x10, 0x09, 0x40, 0x24, 0x41, 0x91, 0x01,
56080x74, 0x06, 0xD2, 0x09, 0x40, 0xA4, 0x20, 0x9D, 0x03, 0x44, 0x02, 0x12, 0x08,
56090x40, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x08,
56100x99, 0x00, 0x44, 0x8A, 0xD0, 0x69, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x44, 0x82,
56110x50, 0x09, 0x40, 0x24, 0x02, 0x99, 0x21, 0x56, 0x12, 0x90, 0x69, 0x42, 0x24,
56120x86, 0x9D, 0x00, 0x64, 0x02, 0x50, 0x09, 0x40, 0x24, 0x02, 0x91, 0x00, 0x74,
56130x22, 0xD0, 0x09, 0x40, 0x67, 0x00, 0xBD, 0x04, 0xC4, 0x02, 0x1C, 0x0F, 0x40,
56140x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x01, 0x91,
56150x00, 0x04, 0x82, 0xD0, 0x68, 0x40, 0x23, 0x00, 0x8D, 0x02, 0x04, 0x02, 0xD2,
56160x48, 0x40, 0x30, 0x01, 0xC9, 0x00, 0x34, 0x1A, 0xD8, 0x08, 0x41, 0x20, 0x80,
56170x8D, 0x00, 0x04, 0x22, 0x10, 0x08, 0x50, 0x20, 0x01, 0x81, 0x00, 0x34, 0x12,
56180xD0, 0x48, 0x40, 0x69, 0x00, 0xAD, 0x01, 0x84, 0x06, 0x00, 0x0B, 0x40, 0x40,
56190x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x86, 0x22, 0x1B, 0x0A,
56200x45, 0x18, 0xF0, 0x21, 0xC0, 0x87, 0x02, 0x1F, 0x06, 0x4C, 0x00, 0xF0, 0xA1,
56210x50, 0x84, 0x02, 0x1B, 0x00, 0x5C, 0x08, 0xB0, 0x61, 0xD0, 0x84, 0x00, 0x1F,
56220x0A, 0x6C, 0x58, 0x71, 0xA1, 0xC0, 0x84, 0x02, 0x13, 0x0A, 0x7C, 0x00, 0xF0,
56230xA1, 0xC0, 0x83, 0x02, 0x0F, 0x4A, 0x4C, 0x28, 0x30, 0xA2, 0xD0, 0x74, 0xC0,
56240x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x2F, 0x12, 0xBF, 0x00, 0xFC,
56250x5A, 0xF0, 0x89, 0xC0, 0x2F, 0x02, 0xBF, 0x46, 0xFD, 0x02, 0xF0, 0x8B, 0xC0,
56260x27, 0x22, 0xA7, 0x20, 0xFC, 0x0A, 0xF0, 0x4B, 0xC3, 0x2F, 0x27, 0xAF, 0x00,
56270x5C, 0x12, 0xF0, 0x09, 0xC8, 0x2F, 0x02, 0xBD, 0x00, 0x7C, 0x22, 0xF0, 0x8B,
56280xC0, 0x26, 0x00, 0x9F, 0x00, 0x7D, 0x02, 0xF0, 0x09, 0xC0, 0x67, 0x60, 0x0E,
56290x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0, 0x27, 0x05, 0xBF, 0x08, 0xEC, 0x02,
56300x30, 0x0B, 0xC0, 0x24, 0x00, 0xBF, 0x04, 0x7C, 0x02, 0x30, 0xCA, 0xC0, 0x2C,
56310x00, 0x83, 0x40, 0xD0, 0x22, 0xF0, 0x4B, 0xC0, 0x2F, 0x05, 0x8F, 0x88, 0x5C,
56320x82, 0xB0, 0x09, 0xC0, 0x2F, 0x02, 0xB3, 0x00, 0xFC, 0x16, 0xF0, 0x49, 0xD0,
56330x2F, 0x00, 0xBF, 0x00, 0xCC, 0x22, 0x30, 0x0B, 0xC0, 0x60, 0x00, 0x0E, 0x00,
56340x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x03, 0x01, 0x5D, 0x04, 0x44, 0x48, 0x14,
56350x01, 0x49, 0x04, 0x02, 0x17, 0x14, 0x74, 0x00, 0x14, 0xC1, 0x44, 0x80, 0x04,
56360x11, 0x00, 0x44, 0x20, 0xD2, 0x41, 0x49, 0x07, 0x21, 0x1D, 0x04, 0x44, 0x48,
56370x10, 0x01, 0x40, 0x07, 0x02, 0x11, 0x00, 0x74, 0x00, 0xD2, 0x81, 0x40, 0x16,
56380x04, 0x5D, 0x90, 0x44, 0x00, 0x10, 0x01, 0x40, 0x71, 0x20, 0x0C, 0x00, 0x00,
56390x00, 0x00, 0x00, 0x12, 0xA0, 0x23, 0x05, 0x8D, 0x04, 0x05, 0x32, 0x10, 0x88,
56400x40, 0x20, 0x00, 0x8D, 0x8D, 0x74, 0x02, 0x11, 0x58, 0x40, 0x20, 0x43, 0x81,
56410x40, 0x16, 0x02, 0xD0, 0xC8, 0x40, 0x23, 0x05, 0x8D, 0x24, 0x14, 0x32, 0x90,
56420x08, 0x40, 0x23, 0x00, 0x81, 0x00, 0x34, 0x0A, 0xD0, 0x08, 0x40, 0x21, 0x01,
56430x8D, 0x00, 0x44, 0x02, 0x10, 0x08, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00,
56440x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x9D, 0x04, 0x44, 0x42, 0x10, 0x09, 0x40,
56450xA4, 0x01, 0x95, 0x40, 0x74, 0x06, 0x10, 0x09, 0x42, 0x24, 0x00, 0x91, 0x00,
56460x46, 0x03, 0xD0, 0x0D, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x44, 0x02, 0x10, 0x09,
56470x40, 0x27, 0x40, 0x91, 0x20, 0x74, 0x02, 0xD0, 0x29, 0x40, 0x24, 0x00, 0x8D,
56480x20, 0x45, 0x02, 0x00, 0x09, 0x40, 0x61, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
56490x00, 0x05, 0xA8, 0x27, 0x02, 0x9F, 0x01, 0x44, 0x02, 0x30, 0x09, 0xD0, 0x24,
56500x00, 0x9F, 0x01, 0x3C, 0x02, 0x30, 0x09, 0xF0, 0x24, 0x00, 0x83, 0x01, 0x5C,
56510x1A, 0xD2, 0x39, 0xC5, 0x27, 0x24, 0x9E, 0x00, 0x5E, 0x02, 0xB0, 0x09, 0xC0,
56520x67, 0x40, 0x93, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0xA7, 0x00, 0x9F, 0x02,
56530x4C, 0x02, 0x30, 0x09, 0xC0, 0x14, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
56540x16, 0x80, 0x65, 0x00, 0x9F, 0x00, 0x1C, 0x26, 0xF0, 0x08, 0xC0, 0x67, 0x00,
56550x97, 0x02, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0xDF, 0x82, 0x7C, 0xC2,
56560xF0, 0x49, 0xC0, 0xE7, 0x00, 0x9D, 0x00, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0xE7,
56570x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x89, 0xC0, 0x27, 0x00, 0x9F, 0x80, 0x7C,
56580x42, 0xF4, 0x09, 0xC0, 0x53, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
56590x08, 0x05, 0x00, 0x13, 0x00, 0x4C, 0x48, 0xF0, 0x01, 0xD3, 0x04, 0x00, 0x1F,
56600x00, 0x7C, 0x80, 0xF0, 0x81, 0xC0, 0x04, 0x40, 0x13, 0x00, 0x4C, 0x08, 0xF3,
56610x21, 0xC5, 0xC7, 0x00, 0x1F, 0x00, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00,
56620x1B, 0x00, 0x6C, 0x00, 0xF0, 0x01, 0xC0, 0x84, 0x41, 0x13, 0x02, 0x4D, 0x00,
56630xF0, 0x41, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80,
56640x14, 0x00, 0x71, 0x07, 0xC5, 0x0D, 0x70, 0x17, 0x40, 0x14, 0x00, 0x7D, 0x04,
56650x74, 0x01, 0xD0, 0x05, 0x42, 0x58, 0x00, 0x51, 0x00, 0xD4, 0x09, 0xD0, 0x27,
56660x40, 0x1F, 0x00, 0x5D, 0x00, 0x44, 0x01, 0x78, 0x05, 0x40, 0x5F, 0x00, 0x71,
56670x00, 0x74, 0x01, 0xD0, 0x05, 0xC0, 0x1E, 0x00, 0x71, 0x11, 0x84, 0x05, 0xD2,
56680x27, 0x40, 0x53, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32,
56690x00, 0x91, 0x07, 0x24, 0x2F, 0x50, 0x1C, 0x40, 0x30, 0x80, 0x4D, 0x11, 0x34,
56700x03, 0xD0, 0x0D, 0x40, 0x32, 0x10, 0xC9, 0x06, 0x04, 0x07, 0xD0, 0x3C, 0x40,
56710x33, 0x80, 0xDD, 0x00, 0x14, 0x03, 0x50, 0x0C, 0x40, 0x37, 0x86, 0x8D, 0x00,
56720x34, 0x02, 0xD0, 0x0D, 0x40, 0x30, 0x00, 0xC1, 0x00, 0x04, 0x2F, 0xD0, 0x01,
56730x40, 0x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x78, 0x00,
56740x21, 0x24, 0x84, 0x03, 0x50, 0x0E, 0x41, 0x38, 0x02, 0x6D, 0x00, 0xB4, 0x03,
56750xD0, 0x0B, 0x50, 0x28, 0x05, 0x69, 0x10, 0xB4, 0x09, 0xD0, 0x2E, 0x42, 0x3B,
56760x04, 0xFD, 0x00, 0x84, 0x03, 0x51, 0x0E, 0x40, 0x1B, 0x00, 0x25, 0x00, 0xB4,
56770x02, 0xD2, 0x4F, 0x64, 0x7A, 0x20, 0xE1, 0x00, 0x84, 0x03, 0xD0, 0x0A, 0x60,
56780x17, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x78, 0x00, 0x23,
56790x07, 0xAD, 0x05, 0x70, 0x14, 0xC0, 0x78, 0x01, 0xEF, 0x01, 0xBC, 0x07, 0xF0,
56800x9E, 0xC0, 0x68, 0x41, 0xA9, 0x09, 0x8C, 0x07, 0xF3, 0x1E, 0xC0, 0x7B, 0x10,
56810xEF, 0x01, 0x94, 0x17, 0x70, 0x3E, 0x80, 0x7F, 0x00, 0xEF, 0x01, 0xBC, 0x07,
56820xF0, 0x5E, 0x80, 0x7C, 0x00, 0xF1, 0x01, 0x8C, 0x07, 0xF0, 0x16, 0xC0, 0x57,
56830x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0xB5, 0x42, 0x0F, 0x00,
56840x7C, 0x01, 0x72, 0x05, 0xC0, 0x77, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x49,
56850xD0, 0x07, 0x0A, 0x17, 0x00, 0x5C, 0x01, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
56860x06, 0x7C, 0x03, 0x70, 0x1D, 0xC0, 0x27, 0x40, 0x5B, 0x00, 0x7C, 0x03, 0xF0,
56870x1C, 0xC0, 0x27, 0x00, 0xDE, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x43, 0x60,
56880x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0xFF, 0x00, 0xB3, 0x01, 0xCC,
56890x23, 0xF0, 0x5F, 0xC2, 0x7F, 0x00, 0xFF, 0x01, 0xFC, 0x07, 0x30, 0x1F, 0xC0,
56900x6C, 0x00, 0xFB, 0x41, 0xC8, 0x27, 0x30, 0x17, 0xC0, 0x5F, 0x20, 0xFF, 0x13,
56910xDC, 0x47, 0xB0, 0x1F, 0xC8, 0x7F, 0x00, 0xBF, 0x01, 0xDC, 0x06, 0x30, 0x1F,
56920xD1, 0x7C, 0x00, 0xFF, 0x81, 0xFC, 0x87, 0xF0, 0x1B, 0xC0, 0x03, 0x08, 0x0E,
56930x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x3D, 0x00, 0xA1, 0x0A, 0x84, 0x09,
56940x70, 0x0E, 0x48, 0x3B, 0x04, 0xAD, 0x00, 0xB4, 0x03, 0x10, 0x0F, 0x40, 0x28,
56950x10, 0x61, 0x04, 0xC4, 0x23, 0x10, 0x86, 0x40, 0x3B, 0x0A, 0xED, 0x00, 0xC4,
56960x03, 0xB2, 0x0E, 0x40, 0x3B, 0x00, 0x3D, 0x00, 0x84, 0x02, 0xB0, 0x0E, 0x40,
56970x38, 0x00, 0xAD, 0x88, 0xB4, 0x22, 0xD0, 0x02, 0x40, 0x57, 0x20, 0x06, 0x00,
56980x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x39, 0x00, 0x31, 0x00, 0x84, 0x23, 0xD8,
56990x46, 0x40, 0x3B, 0x00, 0xED, 0x02, 0xF4, 0x03, 0x90, 0x2E, 0x40, 0x20, 0x00,
57000xA1, 0x20, 0x86, 0x22, 0x98, 0x2A, 0x40, 0x8B, 0x00, 0xED, 0x00, 0x94, 0x03,
57010x10, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0x94, 0x23, 0x10, 0x0C, 0x40, 0x18,
57020x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x41, 0x03, 0x08, 0x04, 0x00, 0x00,
57030x00, 0x00, 0x00, 0x06, 0x20, 0x33, 0x04, 0x01, 0x03, 0x45, 0x00, 0x50, 0x01,
57040x40, 0xF3, 0x00, 0x9D, 0x40, 0x36, 0x83, 0x90, 0x0C, 0x40, 0x04, 0x00, 0x01,
57050x20, 0x06, 0x02, 0x90, 0x08, 0x44, 0x23, 0x08, 0xCD, 0x00, 0x04, 0x03, 0x90,
57060x0C, 0x40, 0x33, 0x02, 0x4D, 0x08, 0x04, 0x03, 0x90, 0x1C, 0x40, 0x20, 0x00,
57070xCD, 0x00, 0x74, 0x02, 0xD0, 0x14, 0x40, 0x13, 0x20, 0x0C, 0x00, 0x00, 0x00,
57080x00, 0x00, 0x1D, 0xA0, 0xBD, 0x40, 0x73, 0x11, 0x4C, 0x0A, 0xF0, 0x09, 0xC0,
57090x3F, 0x10, 0x5F, 0x03, 0x74, 0x83, 0xB4, 0x09, 0x40, 0x2C, 0x00, 0xD3, 0x00,
57100x4C, 0x1A, 0xB0, 0x09, 0xC0, 0x27, 0x00, 0xFF, 0x00, 0xDC, 0x03, 0x30, 0x0F,
57110x40, 0x27, 0x00, 0x5F, 0x00, 0x1C, 0x02, 0x30, 0xBF, 0xC1, 0x34, 0x00, 0xDF,
57120x00, 0x7C, 0x03, 0xF0, 0x14, 0xC0, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
57130x00, 0x01, 0x00, 0x77, 0x00, 0x5F, 0x06, 0x7C, 0x62, 0xF0, 0x09, 0xC0, 0x37,
57140x01, 0x5F, 0x01, 0x7C, 0x03, 0x70, 0x09, 0xC0, 0x27, 0x00, 0xD7, 0x02, 0x7D,
57150x00, 0x70, 0x01, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF2, 0x0D, 0xC4,
57160x27, 0x00, 0x5F, 0x02, 0x7C, 0x02, 0xF0, 0x0D, 0xE0, 0x37, 0x00, 0xDF, 0x02,
57170x7C, 0x0B, 0xF1, 0x0D, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
57180x01, 0x00, 0x3F, 0x00, 0x73, 0x08, 0xCC, 0x00, 0x30, 0x0B, 0xC2, 0x38, 0x00,
57190xF3, 0x00, 0xCC, 0x03, 0x31, 0x1B, 0xC0, 0x2E, 0x00, 0xF3, 0x00, 0xCC, 0x40,
57200xF0, 0x0A, 0xC4, 0x08, 0x00, 0xF3, 0x00, 0xBC, 0x03, 0x30, 0x0F, 0xC0, 0x2F,
57210x00, 0x7F, 0x01, 0x4C, 0x06, 0x30, 0x0E, 0xC8, 0x3C, 0x00, 0x7F, 0x00, 0xFC,
57220x03, 0x30, 0x83, 0xC0, 0x00, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
57230x20, 0x36, 0x00, 0x51, 0x00, 0x45, 0x0C, 0x11, 0x39, 0x41, 0x34, 0x00, 0xD1,
57240x01, 0x2C, 0x03, 0x50, 0x09, 0x40, 0x44, 0x00, 0xC1, 0x02, 0x7C, 0x0C, 0xD0,
57250x31, 0xC0, 0x46, 0x00, 0xD1, 0x00, 0x74, 0x03, 0x50, 0x0D, 0xC0, 0x65, 0x00,
57260x5D, 0x02, 0x6C, 0x06, 0x14, 0x0D, 0x40, 0x34, 0x00, 0xDD, 0x04, 0x70, 0x07,
57270x10, 0x09, 0x40, 0x04, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA8,
57280x30, 0x40, 0x01, 0x00, 0x64, 0x06, 0x90, 0x11, 0x40, 0x34, 0x00, 0xD1, 0x01,
57290x44, 0x03, 0x18, 0x88, 0x40, 0x24, 0x01, 0xD1, 0x14, 0x44, 0x06, 0xD0, 0x11,
57300x40, 0x44, 0x00, 0xD1, 0x00, 0x54, 0x03, 0x90, 0x0D, 0x40, 0x67, 0x04, 0x49,
57310x06, 0x44, 0x22, 0x10, 0x0D, 0x40, 0x34, 0x22, 0xDD, 0x40, 0x74, 0x0F, 0x10,
57320x0D, 0x40, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30,
57330x00, 0x01, 0x00, 0x05, 0x02, 0x90, 0x08, 0x56, 0x30, 0x40, 0xC1, 0x00, 0x45,
57340x03, 0x50, 0x08, 0x40, 0x20, 0x00, 0x81, 0x00, 0x14, 0x02, 0xD0, 0x00, 0x40,
57350x60, 0x00, 0xC1, 0x00, 0x34, 0x03, 0xD2, 0x0C, 0x40, 0x21, 0x00, 0x4D, 0x00,
57360x24, 0x02, 0x10, 0x0C, 0x00, 0x30, 0x08, 0x8D, 0x00, 0x34, 0x03, 0x10, 0x05,
57370x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x3E, 0x10,
57380x13, 0x00, 0x4D, 0x02, 0xB0, 0x01, 0x42, 0x34, 0x00, 0x93, 0x20, 0x46, 0x03,
57390x30, 0x0B, 0xC0, 0x26, 0x00, 0x53, 0x00, 0x44, 0x00, 0xF1, 0x09, 0x40, 0x04,
57400x40, 0xE3, 0x00, 0x7C, 0x03, 0xB0, 0x0D, 0xC0, 0x27, 0x00, 0x5F, 0x00, 0x4C,
57410x02, 0x30, 0x0D, 0x90, 0x14, 0x00, 0x5F, 0x00, 0x7C, 0x03, 0x30, 0x09, 0xD0,
57420x00, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x98, 0x3F, 0x00, 0x2F,
57430x00, 0xFC, 0x02, 0x70, 0x0B, 0xC4, 0x3F, 0x00, 0xBF, 0x00, 0xBC, 0x03, 0xF0,
57440x0B, 0xC0, 0x0F, 0x00, 0x2F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC2, 0x0F, 0x00,
57450xFF, 0x20, 0xFC, 0x03, 0x70, 0x0F, 0xC0, 0x2D, 0x00, 0x7F, 0x00, 0xFC, 0x02,
57460xF0, 0x0F, 0xC0, 0x3F, 0x08, 0xFF, 0x00, 0xFC, 0x01, 0xF0, 0x03, 0xC0, 0x17,
57470x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0xFF, 0x00, 0xFF, 0x09,
57480xFC, 0x32, 0xF0, 0x4F, 0xE1, 0x2D, 0x21, 0xFF, 0x09, 0xFC, 0x00, 0xF0, 0x0F,
57490xC0, 0x3C, 0x00, 0xFF, 0x1C, 0xCC, 0x52, 0xF0, 0x4F, 0xC0, 0x7C, 0x80, 0xFF,
57500x00, 0xCC, 0x13, 0xB0, 0x0F, 0xC0, 0x7C, 0x00, 0xFF, 0x84, 0xBC, 0x05, 0x30,
57510x1F, 0xC0, 0x7C, 0x40, 0xFB, 0x01, 0xCC, 0x04, 0xB0, 0x0B, 0xC0, 0x0C, 0x00,
57520x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xCD, 0x00, 0x74,
57530x3A, 0xD0, 0x3F, 0x40, 0xA7, 0x03, 0xDD, 0x04, 0x74, 0x06, 0xD0, 0x2F, 0x40,
57540xFC, 0x00, 0xFD, 0x06, 0x44, 0x1A, 0xD0, 0xBF, 0x46, 0x74, 0x00, 0xFD, 0x06,
57550xC4, 0x3B, 0x34, 0xAF, 0x40, 0x74, 0x00, 0xFC, 0x02, 0x74, 0x05, 0x10, 0x1D,
57560x40, 0x74, 0x00, 0x91, 0x01, 0x54, 0x03, 0x52, 0x01, 0x40, 0x0D, 0x00, 0x0C,
57570x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x01, 0xCD, 0x00, 0x34, 0x00,
57580xD0, 0x0C, 0x40, 0x03, 0x04, 0xCD, 0x04, 0x34, 0x02, 0xD0, 0x8C, 0x40, 0x32,
57590x02, 0xCD, 0x00, 0x04, 0x40, 0xD1, 0x0C, 0x40, 0x30, 0x00, 0xCD, 0x18, 0x04,
57600x43, 0x10, 0x0C, 0x42, 0x30, 0x00, 0xCD, 0x02, 0x74, 0x03, 0x10, 0x0D, 0x40,
57610x31, 0x00, 0x49, 0x80, 0x04, 0x01, 0x80, 0x08, 0x60, 0x4C, 0x80, 0x0E, 0x00,
57620x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00, 0xDD, 0x00, 0x74, 0x0C, 0xD0,
57630x0D, 0x40, 0x47, 0x00, 0xDD, 0x00, 0x74, 0x0E, 0xD0, 0x0D, 0x40, 0x36, 0x00,
57640xDD, 0x00, 0x45, 0x06, 0xD0, 0x0D, 0x40, 0x34, 0x10, 0xDD, 0x00, 0x44, 0x03,
57650x10, 0x0D, 0x40, 0x34, 0x14, 0xDD, 0x00, 0x74, 0x21, 0x10, 0x0D, 0x60, 0x74,
57660x90, 0x11, 0x00, 0x56, 0x01, 0x09, 0x31, 0x40, 0x0D, 0x20, 0x06, 0x00, 0x00,
57670x00, 0x00, 0x00, 0x00, 0xA0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x0C, 0xF0, 0x0D,
57680xC0, 0x67, 0x04, 0xDF, 0x00, 0x7C, 0x04, 0xF0, 0x0D, 0x40, 0x36, 0x00, 0xDF,
57690x20, 0x4C, 0x1E, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0xDD, 0x00, 0x4C, 0x03, 0x30,
57700x0D, 0xC0, 0x34, 0x00, 0xDF, 0x00, 0x7C, 0x81, 0x31, 0x2C, 0xC0, 0xF0, 0x04,
57710xDB, 0x00, 0x4C, 0x16, 0xA0, 0x31, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
57720x00, 0x00, 0x07, 0x88, 0x3D, 0x00, 0xFF, 0x00, 0x7C, 0x02, 0xF0, 0x0F, 0xC2,
57730x2F, 0x00, 0xFF, 0x00, 0x7C, 0x02, 0xF0, 0x0F, 0xD0, 0x35, 0x00, 0xDF, 0x00,
57740xFC, 0x02, 0xF0, 0x0E, 0xC0, 0x3F, 0x00, 0xEF, 0x00, 0xFC, 0x43, 0xF0, 0x0F,
57750xC4, 0x3F, 0x02, 0xFD, 0x00, 0xF8, 0x01, 0xF4, 0x2F, 0x40, 0x3F, 0x40, 0xFF,
57760x00, 0xFC, 0x67, 0xF0, 0x02, 0xC2, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
57770x00, 0x02, 0x08, 0x35, 0x80, 0xDF, 0x00, 0x5C, 0x08, 0x30, 0x0D, 0xC0, 0xA4,
57780x08, 0xDF, 0x00, 0x4C, 0x08, 0x30, 0x5C, 0xC0, 0x34, 0x00, 0xC3, 0x40, 0x4C,
57790x48, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0xD3, 0x00, 0x3C, 0x83, 0xF0, 0x0C, 0xC0,
57800x34, 0x04, 0xD7, 0x91, 0x4C, 0x13, 0x74, 0x0D, 0xC5, 0x35, 0x00, 0xDF, 0x84,
57810x4C, 0x05, 0xE0, 0x29, 0x81, 0x09, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
57820x13, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0x44, 0x04, 0x10, 0x0F, 0x40, 0xE4, 0x02,
57830xDD, 0x00, 0x44, 0x00, 0xB0, 0x2F, 0x40, 0x3D, 0x00, 0xF1, 0x01, 0x44, 0x16,
57840xD0, 0x0F, 0xC0, 0x34, 0x00, 0xF7, 0x04, 0xF4, 0x4B, 0xD0, 0xAF, 0x40, 0xB5,
57850x00, 0xF0, 0x02, 0x04, 0x15, 0x10, 0x3D, 0x44, 0x34, 0x10, 0xC9, 0x80, 0x44,
57860x85, 0x90, 0x31, 0x41, 0x6D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
57870x20, 0x30, 0x10, 0xCD, 0x00, 0x04, 0x4E, 0x11, 0x0C, 0x44, 0x40, 0x00, 0xCD,
57880x00, 0x04, 0x00, 0x10, 0x2C, 0x40, 0x30, 0x08, 0xC1, 0x04, 0x24, 0x04, 0xD0,
57890x0C, 0x50, 0x32, 0x00, 0xC1, 0x07, 0x34, 0x07, 0xD0, 0x0C, 0x40, 0xD0, 0x00,
57900xC5, 0x02, 0x00, 0x09, 0x10, 0x14, 0x40, 0x83, 0x41, 0xC1, 0x02, 0x64, 0x00,
57910xD0, 0x18, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
57920x78, 0x00, 0xED, 0x01, 0x85, 0x07, 0x14, 0x1C, 0x50, 0x78, 0x04, 0xED, 0x01,
57930x85, 0x06, 0x10, 0x1E, 0x40, 0x78, 0x80, 0xE1, 0x11, 0xA4, 0x05, 0xD0, 0x1C,
57940x40, 0x7C, 0x00, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x59, 0x06, 0xE5,
57950x01, 0x84, 0x05, 0x10, 0x9E, 0x40, 0x7A, 0x07, 0xA1, 0x01, 0xA4, 0x06, 0x91,
57960x1A, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0x30,
57970x00, 0xCD, 0x00, 0x1C, 0x43, 0x30, 0x0C, 0xC0, 0x10, 0x00, 0xDF, 0x00, 0x04,
57980x03, 0x10, 0x0D, 0xC0, 0x30, 0x00, 0xC3, 0x00, 0x2C, 0x21, 0xF0, 0x0C, 0xC0,
57990x36, 0x02, 0xC3, 0x00, 0x3C, 0x03, 0xF2, 0x0D, 0xE0, 0x20, 0x00, 0xD7, 0x00,
58000x0C, 0x33, 0x30, 0x8C, 0xC1, 0x23, 0x03, 0x4B, 0x20, 0x2C, 0x20, 0xF0, 0x09,
58010xC0, 0x4B, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x3D, 0x10,
58020xFF, 0x48, 0xFC, 0x23, 0xF8, 0x0F, 0xC0, 0x1F, 0x00, 0xFF, 0x00, 0xFC, 0x03,
58030xF0, 0x0F, 0xC0, 0x3F, 0x10, 0xFF, 0x02, 0x5D, 0x21, 0xF0, 0x0F, 0xC0, 0x3F,
58040x00, 0xF7, 0x10, 0x7C, 0x43, 0xF0, 0x0D, 0xC1, 0x2A, 0x00, 0xFB, 0x02, 0x7C,
58050x21, 0xF2, 0x88, 0x00, 0x28, 0x03, 0x2F, 0x08, 0xDC, 0x22, 0xF2, 0x8B, 0xC4,
58060x09, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37, 0x80, 0xDF,
58070x00, 0x7E, 0x01, 0x30, 0x4D, 0xC1, 0x17, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF0,
58080xAD, 0xD0, 0x34, 0x01, 0xDF, 0x02, 0x5C, 0x03, 0xF0, 0xCD, 0xC0, 0x37, 0x00,
58090xDF, 0x04, 0x7C, 0x1B, 0xF8, 0x6D, 0xC0, 0x37, 0x00, 0xD3, 0x0E, 0x7C, 0x01,
58100xF0, 0x1D, 0xC0, 0x22, 0x40, 0xCB, 0x00, 0x4C, 0x02, 0xF0, 0x11, 0x40, 0x40,
58110x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x39, 0x00, 0xED, 0x00,
58120xF4, 0x03, 0x10, 0x4E, 0x40, 0x3B, 0x00, 0xEC, 0x00, 0xB4, 0x03, 0xD0, 0x8E,
58130x40, 0xB8, 0x05, 0xFD, 0x04, 0x84, 0x03, 0xD0, 0x0E, 0x41, 0x3B, 0x00, 0xED,
58140x0C, 0xB4, 0x53, 0x70, 0xCE, 0x40, 0x3B, 0x00, 0xE5, 0x00, 0xB4, 0x00, 0xD0,
58150x0E, 0x40, 0x28, 0x00, 0xEB, 0x00, 0x84, 0x03, 0xD0, 0x06, 0x40, 0x4C, 0x00,
58160x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xE5, 0x01, 0xB4,
58170x87, 0x92, 0xDE, 0x42, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x5C, 0x40,
58180x78, 0x00, 0xFD, 0x4D, 0x94, 0x07, 0xD0, 0x5E, 0x40, 0x7B, 0x00, 0xED, 0x05,
58190xB4, 0x07, 0xD0, 0x1E, 0x44, 0x7F, 0x00, 0xE1, 0x05, 0xB4, 0x07, 0xD0, 0x1E,
58200x41, 0x6E, 0x80, 0xF9, 0x01, 0x84, 0x07, 0xD0, 0x1C, 0x60, 0x10, 0x20, 0x04,
58210x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xDD, 0x00, 0x74, 0x43,
58220x94, 0x0C, 0x40, 0xF3, 0x01, 0xCD, 0x00, 0x36, 0x3F, 0xD0, 0x0D, 0x40, 0x30,
58230x10, 0xDD, 0x00, 0x04, 0x47, 0x90, 0x0C, 0x42, 0x33, 0x00, 0xDD, 0x00, 0x74,
58240x03, 0x52, 0x0C, 0x40, 0xB3, 0x02, 0xC5, 0x00, 0x34, 0x00, 0xD0, 0x4C, 0x46,
58250x60, 0xA2, 0xC9, 0x09, 0x44, 0x03, 0xC0, 0x1C, 0x40, 0x58, 0x20, 0x0C, 0x00,
58260x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x15, 0x08, 0x5F, 0x00, 0xF4, 0x15, 0xB0,
58270x05, 0xC0, 0x9F, 0x01, 0x5F, 0x00, 0xFC, 0x01, 0xF2, 0x05, 0xC0, 0x14, 0x08,
58280x5F, 0x00, 0xDC, 0x19, 0xF3, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C, 0x01,
58290xF0, 0x05, 0xC0, 0x5F, 0x20, 0x53, 0x00, 0xFC, 0x15, 0xF0, 0x07, 0xCC, 0x9A,
58300x20, 0x6B, 0x02, 0xCD, 0x09, 0xF0, 0x37, 0xD0, 0x5C, 0x00, 0x04, 0x00, 0x00,
58310x00, 0x00, 0x00, 0x12, 0x0A, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x70, 0x01,
58320xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x20, 0x1F,
58330x40, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x70,
58340x21, 0xC0, 0x87, 0x01, 0x1F, 0x02, 0x7E, 0x00, 0xF2, 0x01, 0xC0, 0x07, 0x04,
58350x1F, 0x10, 0x7C, 0x48, 0xB0, 0xE1, 0xC8, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00,
58360x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x9F, 0x80, 0x4C, 0x02, 0x30, 0x09, 0xC0,
58370xA7, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x25, 0x80, 0x9F, 0x08,
58380x0C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x4C, 0x0E, 0x30, 0x08,
58390xC0, 0x24, 0x00, 0x97, 0x00, 0x7C, 0x86, 0x72, 0x29, 0xCA, 0xA7, 0x08, 0x97,
58400x05, 0x5C, 0x02, 0x30, 0x19, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
58410x00, 0x01, 0x20, 0x24, 0x08, 0x9D, 0x20, 0x44, 0x36, 0x04, 0x09, 0x44, 0xE7,
58420x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x29, 0x40, 0x25, 0x90, 0x9C, 0x01, 0x44,
58430x0A, 0x14, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x03, 0x45, 0x0A, 0xA4, 0x09, 0x51,
58440xA0, 0x00, 0x90, 0x12, 0x34, 0x26, 0x10, 0x29, 0x40, 0x27, 0x00, 0x99, 0x00,
58450x6C, 0x8A, 0x50, 0x19, 0x41, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58460x18, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x45, 0x02, 0x00, 0x09, 0x40, 0x27, 0x00,
58470x9D, 0x00, 0x40, 0x02, 0xD0, 0x09, 0x00, 0x24, 0x20, 0x9C, 0x10, 0x44, 0x22,
58480x10, 0x09, 0x44, 0x25, 0x00, 0x9D, 0x14, 0x44, 0x42, 0x90, 0x19, 0x40, 0x24,
58490x04, 0x95, 0x00, 0x54, 0x02, 0x40, 0x0D, 0x41, 0x26, 0x00, 0x9D, 0x42, 0x54,
58500x12, 0x10, 0x49, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
58510x20, 0x20, 0x00, 0x8D, 0x00, 0x04, 0x12, 0x11, 0x48, 0x40, 0x33, 0x01, 0x8D,
58520x00, 0x34, 0x12, 0xD0, 0x4D, 0x4C, 0x21, 0x11, 0x8D, 0x04, 0x04, 0x13, 0x10,
58530x48, 0x60, 0x23, 0x00, 0x8D, 0x04, 0x04, 0x12, 0x90, 0x48, 0x44, 0x24, 0x00,
58540x81, 0x84, 0x76, 0x02, 0x1A, 0x08, 0x40, 0x23, 0x88, 0x89, 0x80, 0x24, 0x02,
58550x50, 0x48, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x38,
58560x86, 0x0A, 0x1F, 0x0A, 0x4C, 0x28, 0x30, 0x01, 0xC0, 0x87, 0x02, 0x1F, 0x0A,
58570x7C, 0x00, 0xF0, 0xA1, 0xC0, 0x04, 0x00, 0x1D, 0x0A, 0x4D, 0x28, 0x32, 0x01,
58580xC4, 0x07, 0x00, 0x1F, 0x0A, 0x4C, 0x28, 0x30, 0xA1, 0x40, 0x04, 0x08, 0x17,
58590x4A, 0x5C, 0x00, 0x70, 0x01, 0xC0, 0x06, 0x00, 0x17, 0x00, 0x5C, 0x29, 0x30,
58600xA1, 0xC0, 0x77, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB2, 0x25,
58610x00, 0x9F, 0x40, 0xFC, 0x22, 0xF0, 0x89, 0xC0, 0x2F, 0x02, 0x9F, 0x00, 0xFC,
58620x22, 0xF0, 0x89, 0xC0, 0x27, 0x02, 0x9F, 0x48, 0xFC, 0x22, 0xF0, 0x89, 0xC2,
58630x27, 0x00, 0x9F, 0x08, 0x7C, 0x22, 0x70, 0x89, 0xC0, 0x3B, 0x00, 0x9F, 0x08,
58640xFC, 0x02, 0xF0, 0x0A, 0xC0, 0x2F, 0x00, 0xB7, 0x80, 0xDC, 0x02, 0xF1, 0x8F,
58650xC0, 0x77, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x80, 0x27, 0x00,
58660x9F, 0x08, 0xFC, 0x02, 0x30, 0x09, 0xC0, 0x2C, 0x02, 0x93, 0x00, 0x7C, 0x52,
58670xF0, 0xCB, 0xC0, 0x27, 0x00, 0xBF, 0x00, 0xFC, 0x22, 0xB0, 0x49, 0xC0, 0x27,
58680x00, 0xBF, 0x0C, 0xFC, 0x02, 0xE0, 0x0B, 0xC0, 0x2D, 0x00, 0xB3, 0x04, 0xDC,
58690x02, 0xB0, 0x0B, 0xC0, 0x2A, 0x40, 0xB3, 0x00, 0xBC, 0x03, 0x30, 0x0B, 0xC0,
58700x77, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x01, 0x1D,
58710x04, 0x74, 0x49, 0x10, 0x01, 0x44, 0x14, 0x42, 0x01, 0x14, 0x74, 0x00, 0xD0,
58720xC1, 0x4C, 0x87, 0x10, 0x1D, 0x50, 0x74, 0x20, 0x10, 0x01, 0x40, 0x07, 0x00,
58730x1D, 0x0C, 0x74, 0x48, 0xD0, 0x01, 0x45, 0x07, 0x00, 0x11, 0x14, 0x74, 0x00,
58740xD0, 0x05, 0x40, 0x04, 0x00, 0x11, 0x00, 0x74, 0x00, 0x10, 0x01, 0x40, 0x63,
58750x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x05, 0x8D, 0x04,
58760x34, 0xB2, 0x14, 0x88, 0x40, 0x20, 0x00, 0x81, 0x04, 0x36, 0x02, 0xD0, 0x48,
58770x48, 0x23, 0x82, 0x8D, 0x08, 0x34, 0x02, 0x14, 0x88, 0x60, 0x23, 0x00, 0x8D,
58780x04, 0x34, 0x32, 0xD0, 0x88, 0x40, 0x27, 0x00, 0x81, 0x0C, 0x36, 0x02, 0x52,
58790x08, 0x40, 0x23, 0x00, 0x81, 0x00, 0x14, 0x02, 0x18, 0x08, 0x40, 0x4B, 0x80,
58800x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0x9D, 0x00, 0x74,
58810x12, 0x10, 0x09, 0x50, 0x24, 0x01, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40,
58820x27, 0x00, 0x9D, 0x00, 0x74, 0x0B, 0x10, 0x09, 0x40, 0x27, 0x00, 0xDD, 0x00,
58830x74, 0x02, 0xD8, 0x09, 0x40, 0x27, 0x00, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x09,
58840x40, 0x27, 0x04, 0x91, 0x02, 0x70, 0x12, 0x19, 0x09, 0x40, 0x63, 0x20, 0x04,
58850x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x24, 0x00, 0x9F, 0x00, 0x78, 0x06,
58860x30, 0x09, 0xC0, 0x64, 0x00, 0x93, 0x00, 0x7C, 0x4E, 0xF0, 0x09, 0xC0, 0x27,
58870x00, 0x9F, 0x00, 0x7C, 0x02, 0xB2, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
58880x02, 0xF2, 0x09, 0xC0, 0x67, 0x40, 0x93, 0x00, 0x7C, 0x42, 0xB0, 0xB9, 0xC0,
58890x27, 0x00, 0x93, 0x00, 0x7C, 0x46, 0x34, 0x19, 0xC0, 0x17, 0x00, 0x0C, 0x00,
58900x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x3C, 0x06, 0xF0,
58910x08, 0xC0, 0x67, 0x00, 0x9C, 0x00, 0x7C, 0x12, 0xF0, 0x09, 0xC1, 0x27, 0x00,
58920x9F, 0x00, 0x7C, 0x22, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02,
58930xF0, 0x09, 0xC1, 0x27, 0x02, 0x9F, 0xB0, 0x7C, 0x42, 0xF0, 0x19, 0x02, 0x24,
58940x01, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x99, 0xC1, 0x5B, 0x20, 0x04, 0x00, 0x00,
58950x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x01,
58960xC0, 0xC7, 0x00, 0x1F, 0x00, 0x4C, 0x08, 0x30, 0x01, 0xC0, 0x04, 0x00, 0x1F,
58970x01, 0x7C, 0x30, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x01, 0x5C, 0x04, 0xF0,
58980x01, 0xC8, 0x86, 0x09, 0x13, 0x08, 0x6D, 0x08, 0xE0, 0x41, 0xC0, 0x84, 0x00,
58990x17, 0x40, 0x6C, 0x10, 0x10, 0xA1, 0xC2, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00,
59000x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0x5D, 0x80, 0xF4, 0x1D, 0x70, 0x05, 0x40,
59010x5F, 0x20, 0x5D, 0x00, 0x4C, 0x01, 0x10, 0x27, 0x40, 0x14, 0x00, 0x7D, 0x00,
59020xF4, 0x0D, 0xD0, 0x05, 0x40, 0x17, 0x00, 0x7D, 0x01, 0xC4, 0x05, 0x70, 0x27,
59030x40, 0x18, 0x00, 0x71, 0x82, 0xC4, 0x19, 0xD0, 0x16, 0x41, 0x18, 0x01, 0x71,
59040x1B, 0xE4, 0x45, 0x10, 0x07, 0x40, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59050x00, 0x10, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x1F, 0x58, 0x0C, 0x40, 0x77,
59060x00, 0xC9, 0x00, 0x25, 0x03, 0x14, 0x2C, 0x50, 0x30, 0x00, 0xCD, 0x01, 0x74,
59070x07, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x14, 0x03, 0x50, 0x1C, 0x50,
59080xB0, 0x42, 0xC1, 0x00, 0x04, 0x03, 0xD0, 0x2C, 0x40, 0x50, 0x40, 0xC5, 0x02,
59090x64, 0x07, 0x94, 0x1C, 0x40, 0x40, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
59100x04, 0x80, 0x38, 0x02, 0xED, 0x08, 0xB4, 0x03, 0x58, 0x0E, 0x40, 0x3B, 0x0C,
59110xED, 0x05, 0x04, 0x07, 0x10, 0x1E, 0x41, 0x38, 0x00, 0x6D, 0x10, 0xB4, 0x03,
59120xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x03, 0x84, 0x09, 0x50, 0x36, 0x40, 0x3C,
59130x00, 0xE1, 0x01, 0x84, 0x03, 0xD0, 0x0F, 0x40, 0x1C, 0x00, 0xE1, 0x00, 0xE6,
59140x82, 0x90, 0x16, 0x40, 0x11, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
59150x18, 0x78, 0x00, 0xEF, 0x11, 0xBC, 0x05, 0x70, 0x1E, 0xC0, 0x7B, 0x00, 0xEF,
59160x87, 0xAC, 0x87, 0x30, 0x1F, 0xC0, 0x78, 0x00, 0xED, 0x21, 0xBC, 0x07, 0xF0,
59170x1E, 0xC0, 0x7B, 0x00, 0xCF, 0x81, 0x9C, 0x07, 0x78, 0x1F, 0xC0, 0x78, 0x00,
59180xC3, 0x81, 0x8C, 0x07, 0xDA, 0x0A, 0xC4, 0x58, 0x20, 0xE7, 0x21, 0xAE, 0x07,
59190xB1, 0x1B, 0xC4, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8,
59200x35, 0x01, 0xDF, 0x06, 0x7E, 0x01, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x16,
59210x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
59220xC0, 0x37, 0x20, 0xDF, 0x00, 0x7C, 0x01, 0x70, 0x05, 0xC0, 0x31, 0x00, 0x5F,
59230x00, 0x5C, 0x03, 0xF8, 0x0C, 0xC0, 0x17, 0x00, 0xDF, 0x00, 0x70, 0x02, 0x70,
59240x01, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0xFD,
59250x02, 0xF3, 0x01, 0xFC, 0x23, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0xF3, 0x81, 0xFC,
59260x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x02, 0xFF, 0x01, 0xCC, 0x07, 0x30, 0x1F, 0xC0,
59270x7F, 0x00, 0xF7, 0x01, 0xCC, 0x27, 0x38, 0x1F, 0xC0, 0x7F, 0x00, 0x73, 0x01,
59280x8C, 0x87, 0xB8, 0x97, 0xC0, 0x5C, 0x00, 0xEF, 0x21, 0xCC, 0x05, 0xF0, 0x17,
59290xC0, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x39, 0x00,
59300xE1, 0x00, 0xB4, 0x03, 0xD8, 0x0E, 0x40, 0x3B, 0x02, 0xE1, 0x00, 0xB4, 0x03,
59310xD0, 0x82, 0x40, 0x3B, 0x00, 0x7D, 0x08, 0xC4, 0x03, 0x10, 0x0E, 0x40, 0x3B,
59320x00, 0x7D, 0x04, 0x84, 0x01, 0x14, 0x4E, 0x40, 0x3B, 0x01, 0x3B, 0x00, 0x85,
59330x43, 0x10, 0xCE, 0x40, 0x18, 0x01, 0xED, 0x08, 0x94, 0x62, 0xD0, 0x62, 0x40,
59340x54, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x39, 0x08, 0xE1,
59350x00, 0xB4, 0x23, 0xD8, 0x0E, 0x40, 0x9B, 0x04, 0xE1, 0x00, 0xB4, 0x23, 0xD0,
59360x0E, 0x40, 0x3B, 0x88, 0x6D, 0x00, 0x84, 0x09, 0x10, 0x0E, 0x40, 0x3B, 0x00,
59370xE5, 0x80, 0x94, 0x03, 0x18, 0x0A, 0x4C, 0x3B, 0x10, 0xE1, 0x00, 0xB4, 0x03,
59380x90, 0x0F, 0x44, 0x89, 0x10, 0xED, 0x00, 0x84, 0x00, 0xD0, 0x0A, 0x61, 0x60,
59390x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x35, 0x00, 0xC1, 0x40,
59400x34, 0x1A, 0xD0, 0x0C, 0x40, 0x67, 0xC0, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x00,
59410x40, 0x33, 0x80, 0x0D, 0x00, 0x05, 0x02, 0x10, 0x0C, 0x40, 0x33, 0x10, 0x8D,
59420x40, 0x44, 0x00, 0x18, 0x08, 0x40, 0x33, 0x20, 0x01, 0x00, 0x24, 0x03, 0x10,
59430x2C, 0x40, 0x50, 0x10, 0xCD, 0x01, 0x14, 0x0A, 0xD8, 0x20, 0x42, 0x08, 0x20,
59440x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x3D, 0x00, 0xF3, 0x00, 0x7C,
59450x16, 0xD0, 0x0D, 0xC4, 0x47, 0x00, 0xF3, 0x00, 0x7C, 0x0B, 0xD0, 0x01, 0xC0,
59460x37, 0x00, 0x9F, 0x00, 0x4C, 0x04, 0x30, 0x0D, 0xC0, 0x37, 0x00, 0x17, 0x00,
59470x5C, 0x02, 0x30, 0x09, 0x00, 0x37, 0x00, 0x91, 0x00, 0x6C, 0x8B, 0xB0, 0x2C,
59480xC1, 0x50, 0x01, 0xDF, 0x00, 0x40, 0x08, 0xD0, 0x89, 0xC0, 0x74, 0x00, 0x06,
59490x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x02,
59500xF0, 0x0D, 0xC0, 0x07, 0x00, 0xDF, 0x00, 0x7C, 0x43, 0xF0, 0x01, 0xC0, 0x33,
59510x00, 0x1F, 0x02, 0x7C, 0x20, 0xF0, 0x0D, 0xC8, 0x37, 0x00, 0x9F, 0x02, 0x7C,
59520x0A, 0xF0, 0x09, 0xE0, 0xA7, 0x08, 0x9F, 0x42, 0x5C, 0x43, 0xF2, 0x0D, 0xD0,
59530xB7, 0x08, 0xDF, 0x2A, 0x7C, 0x08, 0xF0, 0x29, 0xD0, 0x17, 0x20, 0x0C, 0x00,
59540x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0xF3, 0x00, 0xFC, 0x00, 0xF0,
59550x0F, 0xC0, 0x27, 0x00, 0xF3, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x3F, 0x40,
59560xB3, 0x00, 0x9C, 0x02, 0x30, 0x0F, 0xC0, 0x3F, 0x00, 0x3F, 0x00, 0x7C, 0x02,
59570xB0, 0x03, 0xC0, 0x3F, 0x20, 0xAF, 0x20, 0xDC, 0x03, 0x30, 0x0F, 0xC1, 0x1D,
59580x00, 0xB6, 0x00, 0xCC, 0x42, 0x80, 0x09, 0xC0, 0x07, 0x20, 0x0C, 0x00, 0x00,
59590x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x40, 0xD1, 0x00, 0x74, 0x04, 0xD0, 0x0D,
59600x60, 0x67, 0x00, 0xD1, 0x00, 0x74, 0x03, 0xD0, 0x39, 0x40, 0x37, 0x00, 0x91,
59610x03, 0x5C, 0x06, 0x10, 0x0D, 0x40, 0x37, 0x00, 0x9D, 0x01, 0x74, 0x46, 0x10,
59620x11, 0x41, 0x67, 0x01, 0x19, 0x01, 0x04, 0x06, 0xB0, 0x3D, 0x40, 0x74, 0x01,
59630x01, 0x45, 0x44, 0x4E, 0x90, 0x19, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00,
59640x00, 0x00, 0x01, 0xA0, 0x34, 0x00, 0xD1, 0x00, 0x76, 0x04, 0xD0, 0x0D, 0x4A,
59650x47, 0x04, 0xD1, 0x00, 0x74, 0x03, 0xD0, 0x39, 0x40, 0x37, 0x00, 0x91, 0x11,
59660x74, 0x04, 0x10, 0x0D, 0x40, 0x37, 0x00, 0x1D, 0x01, 0x74, 0x04, 0x10, 0x19,
59670x40, 0x77, 0x00, 0x9D, 0x03, 0x40, 0x47, 0x10, 0x8D, 0x01, 0x55, 0x00, 0xD5,
59680x81, 0x44, 0x84, 0x90, 0x11, 0x48, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
59690x00, 0x10, 0x00, 0x30, 0x00, 0xC1, 0x00, 0x34, 0x06, 0xD0, 0x0C, 0x40, 0x03,
59700x00, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x00, 0x40, 0x33, 0x00, 0x01, 0x00, 0x14,
59710x00, 0x10, 0x0C, 0x40, 0x33, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x90, 0x08, 0x64,
59720x33, 0x00, 0x89, 0x00, 0x47, 0x01, 0x90, 0x0C, 0x40, 0x30, 0x08, 0xD5, 0x00,
59730x04, 0x00, 0x90, 0x00, 0x44, 0x43, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59740x00, 0x38, 0x3A, 0x00, 0xF3, 0x00, 0x7C, 0x00, 0xF0, 0x0D, 0x40, 0x07, 0x00,
59750xF3, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0xC0, 0x37, 0x00, 0x93, 0x00, 0x5C, 0x00,
59760x30, 0x0D, 0xC0, 0x37, 0x00, 0x1D, 0x00, 0x7C, 0x02, 0x30, 0x01, 0xC0, 0x37,
59770x00, 0x9F, 0x00, 0x5C, 0x03, 0x30, 0x0D, 0xC0, 0x15, 0x08, 0xD7, 0x00, 0x4D,
59780x80, 0xB0, 0x09, 0xC0, 0x07, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
59790xB8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC4, 0x2F, 0x00, 0xFF,
59800x00, 0xFC, 0x03, 0xF2, 0x03, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xDC, 0x02, 0xF0,
59810x0F, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0x70, 0x03, 0xC0, 0x1B, 0x80,
59820x3F, 0x00, 0xFC, 0x01, 0xD0, 0x0E, 0xC0, 0x3F, 0x00, 0xFB, 0x00, 0xFE, 0x02,
59830xF0, 0x0B, 0xC0, 0x17, 0x42, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0,
59840x6F, 0x00, 0xF3, 0x01, 0xFC, 0x40, 0xF0, 0x02, 0xC0, 0x2C, 0x00, 0xB3, 0x40,
59850xEC, 0x02, 0x70, 0x1F, 0xC0, 0x2F, 0x00, 0xFB, 0x10, 0xFC, 0x02, 0x30, 0x03,
59860xC0, 0x68, 0x00, 0xFF, 0x00, 0xCC, 0x07, 0xB0, 0x0F, 0xC0, 0x3E, 0x09, 0xFF,
59870x01, 0xAC, 0x07, 0xF0, 0x4F, 0xC0, 0x7B, 0x00, 0xB3, 0x00, 0xCD, 0x03, 0x34,
59880x0F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x21,
59890x00, 0xD1, 0x10, 0x5C, 0x00, 0xD0, 0x11, 0x40, 0x6C, 0x08, 0x91, 0x0B, 0x58,
59900x00, 0x10, 0x1D, 0xC0, 0xA5, 0x06, 0xC1, 0x12, 0x74, 0x02, 0x10, 0x11, 0xC8,
59910x65, 0x00, 0xCD, 0x00, 0x54, 0x07, 0x10, 0x0D, 0x40, 0x74, 0x12, 0xDD, 0x01,
59920x54, 0x07, 0xD2, 0xBD, 0x40, 0x77, 0x40, 0x91, 0x10, 0x44, 0x0B, 0x10, 0x1D,
59930x00, 0x0F, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x20, 0x33, 0x00,
59940xC1, 0x00, 0x34, 0x04, 0xD0, 0x10, 0x40, 0x20, 0x00, 0xD1, 0x00, 0x04, 0x00,
59950x50, 0x0C, 0x40, 0x23, 0x09, 0xC1, 0x84, 0x34, 0x02, 0x12, 0x00, 0x40, 0x20,
59960x00, 0xC1, 0x00, 0x04, 0x03, 0x90, 0x0C, 0x40, 0x30, 0x00, 0xDD, 0x00, 0x04,
59970x03, 0x90, 0x0C, 0x40, 0x35, 0x80, 0x95, 0x84, 0x04, 0x70, 0x14, 0x0C, 0x40,
59980x4F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00, 0xD1,
59990x00, 0x74, 0x04, 0xD0, 0x41, 0x40, 0x64, 0x40, 0xD1, 0x08, 0x74, 0x44, 0x10,
60000x0D, 0x40, 0x27, 0x40, 0xD1, 0x00, 0x74, 0x06, 0x10, 0x01, 0x40, 0x26, 0x00,
60010xDD, 0x00, 0x54, 0x83, 0x10, 0x0D, 0x40, 0x34, 0x00, 0x1D, 0x01, 0x54, 0x13,
60020xD0, 0x0D, 0x40, 0x27, 0x40, 0xD5, 0x18, 0x44, 0x02, 0x10, 0x0D, 0x48, 0x0F,
60030x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x88, 0x36, 0x00, 0xD3, 0x00,
60040x7C, 0x04, 0xF2, 0x14, 0xD0, 0x64, 0x00, 0x83, 0x80, 0x4C, 0x0E, 0x70, 0x0D,
60050xC0, 0x27, 0x00, 0xDB, 0x00, 0x7C, 0x1E, 0x30, 0x15, 0xD0, 0x24, 0x00, 0xDF,
60060x00, 0x0C, 0x03, 0xB1, 0x0D, 0xC0, 0x36, 0x00, 0xCF, 0x81, 0x4C, 0x03, 0xF0,
60070x0D, 0xC0, 0x33, 0x00, 0x87, 0x03, 0x4C, 0x27, 0x30, 0x0D, 0xC0, 0x03, 0x20,
60080x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xFF, 0x00, 0xDC,
60090x40, 0xF0, 0x07, 0xC0, 0x3F, 0x08, 0xBF, 0x00, 0x9C, 0x02, 0xD0, 0x0F, 0xC0,
60100x21, 0x00, 0xFF, 0x00, 0xBC, 0x02, 0xF0, 0x96, 0xC0, 0x6D, 0x01, 0xEF, 0x00,
60110xFC, 0x03, 0xF0, 0x0E, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xDC, 0x07, 0xF0, 0x0F,
60120xC0, 0x3F, 0x00, 0xFB, 0x01, 0xFC, 0x03, 0xF0, 0x0D, 0xC0, 0x1F, 0x00, 0x06,
60130x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x35, 0x00, 0xD3, 0x00, 0x74, 0x00,
60140x30, 0x85, 0xC0, 0x25, 0x00, 0xD3, 0x00, 0x7C, 0x08, 0xF0, 0x0D, 0xC0, 0x37,
60150x00, 0xDF, 0x00, 0x4C, 0x3A, 0xD0, 0x05, 0x40, 0x24, 0x20, 0xD3, 0x08, 0x4D,
60160x03, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0xD3, 0x00, 0x7C, 0x02, 0x70, 0x0D, 0xC0,
60170x37, 0x00, 0x93, 0x00, 0x4D, 0x03, 0xF0, 0x0D, 0xC0, 0x28, 0x20, 0x04, 0x00,
60180x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x34, 0x00, 0xD5, 0x05, 0x74, 0x14, 0x10,
60190x07, 0xC0, 0xB2, 0x00, 0xD1, 0x00, 0x74, 0x28, 0xD0, 0x0D, 0x40, 0x37, 0x00,
60200xF1, 0x00, 0x7C, 0x06, 0xD1, 0x0D, 0x43, 0x25, 0x00, 0xF5, 0x00, 0x54, 0x2F,
60210xD0, 0x0F, 0x40, 0x7C, 0x00, 0x51, 0x11, 0x7C, 0x02, 0x10, 0x1F, 0x40, 0x37,
60220x00, 0xD1, 0x04, 0x2C, 0x2F, 0xD0, 0x0F, 0x50, 0x4C, 0x00, 0x02, 0x00, 0x00,
60230x00, 0x00, 0x00, 0x07, 0xA0, 0x26, 0x00, 0xC1, 0x01, 0x34, 0x0C, 0x18, 0x10,
60240x40, 0x20, 0x04, 0x81, 0x00, 0x34, 0x06, 0xD8, 0x0C, 0x40, 0x23, 0x00, 0xC9,
60250x40, 0x14, 0x0C, 0xD0, 0x04, 0x70, 0x20, 0x40, 0xC1, 0x00, 0x04, 0x03, 0xD8,
60260x0C, 0x40, 0x71, 0x00, 0xC1, 0x00, 0x34, 0x02, 0x18, 0x1C, 0x40, 0x33, 0x00,
60270x88, 0x80, 0x14, 0x07, 0xD0, 0x0C, 0x40, 0x1C, 0x00, 0x0A, 0x00, 0x00, 0x00,
60280x00, 0x00, 0x0F, 0x80, 0x68, 0x00, 0xE1, 0x01, 0xB4, 0x24, 0x18, 0x3B, 0x40,
60290x62, 0x00, 0xA0, 0x01, 0xB4, 0x45, 0xD8, 0x1E, 0x42, 0x6B, 0x60, 0xE1, 0x03,
60300xA4, 0x26, 0xD0, 0x14, 0x40, 0x6D, 0x00, 0xE5, 0x01, 0x94, 0x07, 0xD0, 0x1E,
60310x40, 0x79, 0x00, 0xE1, 0x01, 0xF4, 0x06, 0x10, 0x1E, 0x40, 0x7F, 0x40, 0x49,
60320x81, 0xB4, 0x47, 0xD0, 0x1E, 0x40, 0x7C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
60330x00, 0x12, 0x10, 0x30, 0x08, 0xC3, 0x08, 0x7C, 0x20, 0x30, 0x00, 0x40, 0xA1,
60340x40, 0xC3, 0x00, 0x3C, 0x03, 0xF0, 0x0C, 0xC0, 0x23, 0x00, 0xCF, 0x00, 0x1C,
60350x03, 0xF0, 0x84, 0x42, 0x20, 0x02, 0xC3, 0x00, 0x0C, 0x43, 0xF0, 0x0D, 0x48,
60360x31, 0x44, 0xC3, 0x88, 0x3E, 0x02, 0x71, 0x0C, 0xC1, 0x33, 0x00, 0x0B, 0x00,
60370x1C, 0x01, 0xF0, 0x8C, 0xC0, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60380x02, 0xB8, 0x3D, 0x00, 0xFF, 0x00, 0xFC, 0x20, 0xC4, 0x8B, 0xC0, 0x1F, 0x02,
60390xFF, 0x00, 0xFC, 0x23, 0xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xF7, 0x10, 0xFC, 0x03,
60400xA0, 0x87, 0xC0, 0x2E, 0x10, 0xFB, 0x00, 0xEC, 0x03, 0xF0, 0x0F, 0xC0, 0x3A,
60410x02, 0x7F, 0x08, 0xDC, 0x22, 0xF4, 0x8F, 0xC0, 0x2F, 0x42, 0xF7, 0x00, 0xCE,
60420x03, 0xF0, 0x0F, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
60430xA0, 0x37, 0x00, 0xDF, 0x00, 0x7E, 0x04, 0x30, 0x01, 0xC0, 0x2C, 0x01, 0x93,
60440x00, 0xEC, 0x07, 0x30, 0x0D, 0xC0, 0x26, 0x00, 0xDF, 0x00, 0x1C, 0x02, 0x30,
60450x05, 0xC0, 0x26, 0x00, 0xFF, 0x00, 0x4C, 0x03, 0xF0, 0x8D, 0xE0, 0x37, 0x00,
60460xD3, 0x00, 0x7C, 0x02, 0xF0, 0x1D, 0xC0, 0x34, 0x00, 0x13, 0x81, 0x4C, 0x07,
60470x34, 0x0F, 0xC0, 0x57, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x88,
60480x39, 0x00, 0xED, 0x00, 0xB6, 0x00, 0x12, 0x62, 0xC0, 0x38, 0x04, 0xE1, 0x00,
60490xF4, 0x03, 0x10, 0x0E, 0x40, 0x2B, 0x00, 0xFB, 0x01, 0x84, 0x02, 0x10, 0x06,
60500x40, 0x3B, 0x00, 0xFD, 0x01, 0x85, 0x03, 0xD0, 0x4E, 0x40, 0x3B, 0x00, 0xE1,
60510x40, 0xB4, 0x02, 0xD0, 0x0E, 0x40, 0x38, 0x00, 0xE1, 0x00, 0xAD, 0x03, 0x10,
60520x1E, 0x40, 0x4F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x79,
60530x00, 0xED, 0x01, 0xB4, 0x86, 0x12, 0x13, 0x40, 0x60, 0x00, 0xED, 0x21, 0xB4,
60540x0F, 0xD0, 0x1E, 0x40, 0x73, 0x00, 0xE5, 0x05, 0xD4, 0x07, 0xD9, 0x16, 0x41,
60550x6B, 0x00, 0xED, 0x21, 0xA4, 0x07, 0x50, 0x1E, 0x40, 0x72, 0x20, 0xE1, 0x03,
60560xB4, 0x06, 0xD0, 0x1C, 0x40, 0x7E, 0x00, 0x25, 0x03, 0x84, 0x07, 0x10, 0x1E,
60570x40, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x73, 0x02,
60580xCD, 0x00, 0x34, 0x03, 0x10, 0x48, 0x06, 0x52, 0x00, 0xC9, 0x00, 0x34, 0xCF,
60590x90, 0x0C, 0x40, 0x73, 0x00, 0xC9, 0x00, 0x04, 0x13, 0x90, 0x7C, 0x40, 0x23,
60600x00, 0xDD, 0x00, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x49, 0x01, 0x34,
60610x02, 0xD0, 0x0C, 0x40, 0x70, 0x00, 0xC5, 0x04, 0x24, 0x4B, 0x10, 0x0C, 0x40,
60620x4B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x55, 0x00, 0x5F,
60630x00, 0xFC, 0x49, 0x34, 0x47, 0xD0, 0x5C, 0x41, 0x5F, 0x11, 0xFC, 0x01, 0xF4,
60640x05, 0xC0, 0x57, 0x00, 0x57, 0x00, 0xDC, 0x01, 0xE0, 0x27, 0xE0, 0x17, 0x00,
60650x5F, 0x00, 0x6E, 0x81, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x63, 0x01, 0x3C, 0x15,
60660xF2, 0x05, 0xF0, 0x54, 0x01, 0x77, 0x03, 0xC4, 0x1D, 0x30, 0x05, 0xC0, 0x5F,
60670x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x02,
60680x7C, 0xC0, 0xF0, 0x01, 0xC0, 0x85, 0x00, 0x17, 0x00, 0x7C, 0x08, 0x72, 0x01,
60690xC0, 0x07, 0x02, 0x1F, 0x02, 0x7C, 0x00, 0x74, 0x01, 0xC0, 0x07, 0x02, 0x1F,
60700x40, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x40, 0x17, 0x00, 0x7C, 0x00, 0xF0,
60710x21, 0xE0, 0x07, 0x40, 0x1A, 0x00, 0x7C, 0x08, 0xF0, 0x01, 0xC8, 0x4B, 0x00,
60720x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x93, 0x02, 0x7C,
60730x02, 0xF0, 0x08, 0xC0, 0x20, 0x00, 0x83, 0x03, 0x6C, 0x06, 0xF0, 0x09, 0xC0,
60740x23, 0x40, 0x91, 0x00, 0x04, 0x26, 0x34, 0x09, 0x00, 0x27, 0x00, 0x9F, 0x00,
60750x68, 0x06, 0xD0, 0x09, 0xE0, 0xE7, 0x08, 0x93, 0x45, 0x4C, 0x06, 0x32, 0x09,
60760xC0, 0x27, 0x08, 0x93, 0x00, 0x7C, 0x22, 0xF0, 0x09, 0xC0, 0x43, 0x20, 0x0C,
60770x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x22, 0x40, 0x91, 0x01, 0x74, 0x82,
60780xD0, 0x09, 0x40, 0xA4, 0x04, 0x91, 0x01, 0x44, 0x36, 0xD0, 0x09, 0x40, 0x27,
60790x00, 0x95, 0x12, 0x6C, 0x0A, 0x10, 0x19, 0x42, 0x27, 0x00, 0x9D, 0x20, 0x44,
60800x06, 0xF0, 0x09, 0x40, 0x63, 0x01, 0x9B, 0x01, 0x44, 0x06, 0xB0, 0x29, 0x44,
60810x23, 0x40, 0x93, 0x0E, 0x5C, 0x1E, 0xD0, 0x09, 0x40, 0x07, 0x00, 0x08, 0x00,
60820x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x20, 0x91, 0x00, 0x54, 0x06, 0xD2,
60830x09, 0x40, 0x24, 0x00, 0x91, 0x00, 0x64, 0x02, 0xD0, 0x09, 0x40, 0x25, 0x00,
60840x8D, 0x01, 0x74, 0x02, 0x50, 0x89, 0x64, 0x27, 0x00, 0x9D, 0x00, 0x75, 0x12,
60850xD2, 0x09, 0x00, 0x27, 0x80, 0x91, 0x00, 0x45, 0x12, 0x50, 0x89, 0x41, 0x27,
60860x00, 0x99, 0x00, 0x74, 0x02, 0xD2, 0x09, 0x44, 0x63, 0x00, 0x02, 0x00, 0x00,
60870x00, 0x00, 0x00, 0x10, 0x22, 0x24, 0x00, 0x81, 0x00, 0x34, 0x12, 0xD0, 0x48,
60880x50, 0x20, 0x01, 0x81, 0x84, 0x04, 0x02, 0xD8, 0x08, 0x40, 0x23, 0x01, 0x89,
60890x04, 0x34, 0x13, 0x00, 0x48, 0x60, 0x23, 0x20, 0x8D, 0x04, 0x14, 0x02, 0x50,
60900xC8, 0x40, 0x23, 0x01, 0x89, 0x00, 0x04, 0x02, 0xD0, 0x08, 0x40, 0x27, 0x00,
60910x81, 0x04, 0x34, 0x12, 0xD0, 0x48, 0x48, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00,
60920x00, 0x00, 0x1D, 0xB0, 0x86, 0x02, 0x53, 0x0A, 0x1C, 0x28, 0xF0, 0x05, 0x50,
60930x04, 0x40, 0x13, 0x00, 0x6C, 0x08, 0xF0, 0x01, 0xC4, 0x87, 0x02, 0x1D, 0x0A,
60940x7C, 0x28, 0x50, 0x01, 0xC0, 0x07, 0x00, 0x1D, 0x0A, 0x7C, 0x80, 0xC2, 0x61,
60950x40, 0x07, 0x05, 0x13, 0x00, 0x4C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1B,
60960x8A, 0x38, 0x28, 0xF0, 0x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00,
60970x00, 0x19, 0xB8, 0x2F, 0x00, 0x9F, 0x00, 0xFC, 0x22, 0xF2, 0x8A, 0xD0, 0x2F,
60980x02, 0xBF, 0x08, 0xFC, 0x62, 0xF0, 0x09, 0xC0, 0x2F, 0x02, 0x97, 0x08, 0xEC,
60990x22, 0xF2, 0x8B, 0xC0, 0x2F, 0x00, 0x9B, 0x08, 0x6C, 0x02, 0xF0, 0x29, 0xCA,
61000x27, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xB0, 0x89, 0xC2, 0x2B, 0x00, 0xA7, 0x08,
61010xDC, 0x22, 0xF0, 0x89, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
61020x19, 0xA0, 0x27, 0x00, 0xBF, 0x08, 0xFC, 0x02, 0x30, 0x0B, 0xC0, 0x2C, 0x00,
61030xBF, 0x04, 0xFC, 0x52, 0xB0, 0x0B, 0xC0, 0x27, 0x40, 0xBB, 0x00, 0xC8, 0x22,
61040x34, 0x4B, 0xC0, 0x24, 0x00, 0xBF, 0x0C, 0xDD, 0x02, 0xB0, 0x19, 0xC0, 0x6F,
61050x00, 0xB3, 0x00, 0xFC, 0x02, 0xF0, 0x5B, 0xC0, 0x20, 0x00, 0xB3, 0x00, 0xCC,
61060x22, 0x30, 0x4B, 0xC0, 0x67, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C,
61070x08, 0x07, 0x01, 0x1D, 0x04, 0x36, 0xC9, 0x10, 0x05, 0xE2, 0x04, 0x02, 0x1D,
61080x00, 0x74, 0x10, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x13, 0x00, 0x54, 0x20, 0x18,
61090x01, 0xE0, 0x06, 0x80, 0x0D, 0x0C, 0x44, 0x00, 0x50, 0x11, 0x40, 0x07, 0x02,
61100x11, 0x00, 0x74, 0x00, 0xD0, 0xA1, 0x40, 0x04, 0x00, 0x11, 0x10, 0x44, 0x20,
61110x10, 0x01, 0x40, 0x73, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0,
61120x23, 0x05, 0x8D, 0x04, 0x34, 0xB2, 0x10, 0x88, 0x40, 0x20, 0x00, 0x8D, 0x08,
61130x34, 0x52, 0xD0, 0x08, 0x42, 0x23, 0x00, 0x85, 0x00, 0x04, 0x02, 0x54, 0x88,
61140x42, 0x22, 0x00, 0x8D, 0x04, 0x14, 0x02, 0x10, 0x68, 0x41, 0x23, 0x00, 0x81,
61150x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x26, 0x10, 0x85, 0x48, 0x04, 0x07, 0x14,
61160x88, 0x40, 0x4B, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25,
61170x00, 0x9D, 0x00, 0x74, 0x06, 0x14, 0x09, 0x40, 0x26, 0x04, 0x9D, 0x01, 0x74,
61180x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x89, 0x00, 0x54, 0x52, 0x10, 0x09, 0x40,
61190x26, 0x01, 0x9D, 0x00, 0x44, 0x02, 0x52, 0x09, 0x40, 0x27, 0x40, 0x91, 0x08,
61200x74, 0x12, 0xD0, 0x0D, 0x40, 0x66, 0x40, 0x95, 0x04, 0x04, 0x06, 0x10, 0x09,
61210x40, 0x63, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00,
61220x9F, 0x00, 0x74, 0x0E, 0x30, 0x29, 0x50, 0xE4, 0x00, 0x9F, 0x01, 0x7C, 0x46,
61230xF0, 0x09, 0xC0, 0x67, 0x00, 0x97, 0x00, 0x4C, 0x02, 0x50, 0x09, 0x41, 0x26,
61240x80, 0x9D, 0x00, 0x5C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x92, 0x03, 0x7C,
61250x06, 0xF2, 0x09, 0xD0, 0x22, 0x00, 0x97, 0x07, 0x4D, 0x02, 0x30, 0x09, 0xC0,
61260x17, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x80, 0x65, 0x02, 0x9F,
61270x10, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x25, 0x05, 0x9F, 0x00, 0x7C, 0x4E, 0xF0,
61280x09, 0xC0, 0x67, 0x02, 0x97, 0x00, 0x7C, 0x06, 0xF0, 0x09, 0xC0, 0x67, 0x00,
61290x9F, 0x00, 0x7C, 0x02, 0x70, 0x09, 0x80, 0x23, 0x00, 0x9F, 0x00, 0x7C, 0x06,
61300xF0, 0x08, 0xC0, 0x25, 0x00, 0x9B, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC2, 0x5B,
61310x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00,
61320x7C, 0x18, 0x94, 0x31, 0x50, 0x06, 0x40, 0x13, 0x00, 0x7C, 0x20, 0x70, 0x01,
61330xC0, 0x07, 0x00, 0x1D, 0x48, 0x78, 0x48, 0x32, 0x21, 0xC0, 0x07, 0x00, 0x1F,
61340x00, 0x4C, 0x40, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1B, 0x00, 0x7C, 0x00, 0xF0,
61350x41, 0xC0, 0x07, 0x00, 0x03, 0x02, 0x4C, 0x04, 0x30, 0x01, 0xC0, 0x50, 0x20,
61360x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x14, 0x00, 0x7D, 0x04, 0xF4,
61370x01, 0x30, 0x46, 0x40, 0x5C, 0x00, 0x51, 0x11, 0xF4, 0x09, 0x70, 0x55, 0x40,
61380x17, 0x00, 0x7D, 0x00, 0xF4, 0x09, 0x10, 0x14, 0x40, 0x17, 0x00, 0x5D, 0x00,
61390x84, 0x41, 0x70, 0x05, 0x40, 0x1F, 0x01, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x27,
61400x40, 0x17, 0x00, 0x72, 0x00, 0xC4, 0x01, 0x14, 0x05, 0xC1, 0x52, 0x00, 0x02,
61410x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x03, 0x74, 0x03,
61420x10, 0x1C, 0x60, 0xB0, 0x00, 0xC1, 0x00, 0x34, 0x0B, 0x58, 0x0C, 0x40, 0x37,
61430x00, 0x8D, 0x01, 0x74, 0x09, 0x10, 0x0C, 0x40, 0x33, 0x00, 0xDD, 0x01, 0x14,
61440x8F, 0xD0, 0x0C, 0x40, 0xF3, 0x01, 0x89, 0x00, 0x34, 0x03, 0xD0, 0x24, 0x40,
61450x33, 0x80, 0x49, 0x0D, 0x04, 0x02, 0x12, 0x18, 0x00, 0x50, 0x00, 0x0A, 0x00,
61460x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x38, 0x01, 0xA9, 0x00, 0xB4, 0x18, 0x10,
61470x02, 0x40, 0x70, 0x04, 0xE1, 0x00, 0xB4, 0x01, 0x50, 0x0E, 0x40, 0x3A, 0x01,
61480x29, 0x00, 0xA4, 0x00, 0x14, 0x0A, 0x41, 0x3B, 0x00, 0xED, 0x02, 0x84, 0x03,
61490x40, 0x4E, 0x40, 0x2B, 0x00, 0xAD, 0x00, 0xB4, 0x03, 0xD0, 0x06, 0x41, 0x3F,
61500x00, 0x61, 0x00, 0x84, 0x02, 0x10, 0x18, 0x40, 0x16, 0x00, 0x02, 0x00, 0x00,
61510x00, 0x00, 0x00, 0x15, 0x10, 0x78, 0x01, 0xAD, 0x01, 0xBC, 0x0E, 0x30, 0x14,
61520xD0, 0x78, 0x00, 0xE3, 0x41, 0xBE, 0x07, 0x70, 0x1E, 0xC0, 0x7B, 0x01, 0x6D,
61530x01, 0x3C, 0x05, 0x30, 0x1A, 0xC0, 0x7B, 0x00, 0xEF, 0x01, 0x9D, 0x07, 0xD0,
61540x5E, 0xC2, 0x7B, 0x00, 0xAB, 0x01, 0xB4, 0x06, 0xF0, 0x16, 0xC0, 0x7B, 0x00,
61550xF9, 0x01, 0x8D, 0x07, 0x30, 0x1A, 0xC4, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00,
61560x00, 0x00, 0x10, 0xB8, 0xB5, 0x00, 0xBF, 0x00, 0x7C, 0x00, 0x70, 0x01, 0xC0,
61570x17, 0x00, 0xDF, 0x00, 0x7E, 0x03, 0xC0, 0x0D, 0xC0, 0x77, 0x00, 0x5F, 0x00,
61580xFC, 0x00, 0xF0, 0x09, 0x80, 0x37, 0x00, 0xDF, 0x02, 0x7C, 0x03, 0x70, 0x8D,
61590xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x05, 0xC0, 0x37, 0x40, 0xDF,
61600x00, 0x3C, 0x00, 0xF4, 0x09, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
61610x00, 0x02, 0xA0, 0xFF, 0x04, 0xB3, 0x01, 0xFC, 0x23, 0x38, 0x03, 0xC0, 0x6C,
61620x00, 0xF3, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x40, 0x7F, 0x06, 0xF3, 0x01, 0xCC,
61630x85, 0x30, 0x1B, 0xE0, 0x7F, 0x02, 0xAF, 0x03, 0xCC, 0x06, 0xF0, 0x1F, 0xC0,
61640x4F, 0x00, 0xBF, 0x01, 0xFC, 0x07, 0xF0, 0x16, 0xC0, 0x7C, 0x40, 0xFB, 0x81,
61650xFC, 0x06, 0x31, 0x1A, 0xC0, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
61660x15, 0x88, 0x3D, 0x00, 0xA1, 0x00, 0xB4, 0x13, 0x18, 0x42, 0x00, 0x28, 0x40,
61670xE1, 0x50, 0xB4, 0x01, 0xD0, 0x0E, 0x40, 0x3F, 0x00, 0x6F, 0x00, 0x94, 0x02,
61680x10, 0x0A, 0xC0, 0x3B, 0x00, 0xED, 0x24, 0x84, 0x03, 0xD0, 0x8E, 0x40, 0x1B,
61690x00, 0xAD, 0x00, 0xB4, 0x23, 0xD0, 0x06, 0xC0, 0x38, 0x00, 0xE1, 0x00, 0xB4,
61700x02, 0x10, 0x0A, 0x40, 0x55, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
61710x00, 0x39, 0x00, 0x21, 0x00, 0xB4, 0x22, 0x18, 0x83, 0x40, 0x20, 0x00, 0xE9,
61720x08, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x40, 0x61, 0x00, 0x04, 0x01, 0x90,
61730x0A, 0x40, 0x3B, 0x20, 0xAD, 0x40, 0xA4, 0x03, 0xD0, 0x0E, 0x40, 0x2B, 0x00,
61740xAD, 0x00, 0xB4, 0x02, 0xD0, 0x06, 0x40, 0x3D, 0x00, 0xE1, 0x00, 0x34, 0x0B,
61750x10, 0x0A, 0x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28,
61760x33, 0x00, 0x11, 0x00, 0x34, 0x02, 0x12, 0x20, 0x40, 0x00, 0x00, 0xC9, 0x00,
61770x34, 0x26, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x4D, 0x00, 0x14, 0x00, 0x90, 0x28,
61780x40, 0x71, 0x00, 0xCD, 0x00, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD,
61790x02, 0x24, 0x02, 0xD0, 0x04, 0x40, 0x30, 0x10, 0x81, 0x02, 0x34, 0x03, 0x11,
61800x08, 0x40, 0x19, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x3D,
61810x40, 0x93, 0x00, 0xFC, 0x03, 0x14, 0x21, 0xC0, 0xE4, 0x02, 0xDB, 0x01, 0x74,
61820x2A, 0xF0, 0x0C, 0xC0, 0x3F, 0x00, 0x93, 0x00, 0x4C, 0x01, 0xB4, 0x09, 0x40,
61830x37, 0x00, 0x9F, 0x00, 0x6D, 0x01, 0xF0, 0x0F, 0xC0, 0x37, 0x00, 0x8F, 0x13,
61840x7C, 0x02, 0xF0, 0x04, 0xC0, 0x34, 0x00, 0x53, 0x0B, 0x7C, 0x82, 0x30, 0x0D,
61850xC0, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00,
61860x9F, 0x00, 0x7C, 0x20, 0xF0, 0x00, 0xD0, 0xE7, 0x10, 0xD7, 0x00, 0x7C, 0x80,
61870xF0, 0x0D, 0xC0, 0x37, 0x00, 0x17, 0x00, 0x3C, 0x40, 0x70, 0x09, 0xC0, 0x37,
61880x02, 0x9F, 0x00, 0x5C, 0x83, 0xF2, 0x0D, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C,
61890x02, 0xF0, 0x05, 0xC0, 0x75, 0x00, 0x47, 0x81, 0x7C, 0x02, 0xF0, 0x0D, 0xC0,
61900x27, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3F, 0x00, 0xBF,
61910x00, 0x8C, 0x23, 0xB0, 0x03, 0xD1, 0x28, 0x00, 0xB3, 0x05, 0xFC, 0x00, 0xF0,
61920x0F, 0xC0, 0x38, 0x00, 0x6B, 0x00, 0xCC, 0x00, 0xB0, 0x8B, 0xE1, 0x3F, 0x00,
61930xBF, 0x00, 0xCC, 0x01, 0xF0, 0x0F, 0xC0, 0x4F, 0x00, 0xBF, 0x14, 0xDC, 0x0F,
61940xF0, 0x0F, 0xC0, 0x3C, 0x00, 0xF3, 0x00, 0x8C, 0x22, 0x10, 0x9F, 0xC0, 0x07,
61950x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x36, 0x00, 0x9D, 0x01,
61960x44, 0x04, 0x90, 0x11, 0x58, 0x44, 0x04, 0x91, 0x00, 0x76, 0x04, 0xD0, 0x0D,
61970xE0, 0x36, 0x00, 0x51, 0x00, 0x44, 0x04, 0x10, 0x09, 0xC0, 0x36, 0x00, 0x9D,
61980x00, 0x6C, 0x47, 0xD0, 0x0D, 0x40, 0x97, 0x02, 0xDD, 0x01, 0x6C, 0x07, 0xD0,
61990x3D, 0xC0, 0x32, 0x00, 0xD1, 0x01, 0x44, 0x04, 0x10, 0x1D, 0xC2, 0x25, 0x00,
62000x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x10, 0x9D, 0x01, 0x44,
62010x03, 0x90, 0x11, 0x40, 0x46, 0x40, 0xD1, 0x00, 0x74, 0x0E, 0xD1, 0x19, 0x42,
62020x34, 0x00, 0xD9, 0x00, 0x44, 0x05, 0x9A, 0x09, 0x40, 0x37, 0x20, 0x8D, 0x08,
62030x46, 0x07, 0xD0, 0x0D, 0x42, 0x17, 0x04, 0x9D, 0x00, 0x54, 0x02, 0xD0, 0x1D,
62040x40, 0x34, 0x00, 0xD1, 0x01, 0x40, 0x02, 0x50, 0x09, 0x40, 0x07, 0x00, 0x02,
62050x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0x8D, 0x00, 0x04, 0x03,
62060x90, 0x10, 0x40, 0x02, 0x00, 0xC1, 0x00, 0x34, 0x00, 0xD2, 0x08, 0x40, 0x32,
62070x00, 0x41, 0x00, 0x04, 0x02, 0x10, 0x08, 0x60, 0x31, 0x00, 0x8D, 0x00, 0x05,
62080x03, 0xD8, 0x0C, 0x40, 0x03, 0x00, 0xDD, 0x00, 0x04, 0x02, 0xD0, 0x0C, 0x48,
62090x36, 0x00, 0xC1, 0x00, 0x04, 0x02, 0x50, 0x08, 0x40, 0x41, 0x80, 0x00, 0x00,
62100x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x3E, 0x00, 0x1F, 0x00, 0x05, 0x03, 0xB0,
62110x01, 0xC0, 0x06, 0x00, 0xD3, 0x00, 0x74, 0x02, 0xF0, 0x09, 0x40, 0x34, 0x00,
62120x4B, 0x00, 0x4C, 0x00, 0xB0, 0x09, 0x44, 0x37, 0x00, 0xBF, 0x00, 0x44, 0x03,
62130xF0, 0x0D, 0xC0, 0x07, 0x00, 0x9F, 0x00, 0x54, 0x03, 0xF0, 0x0D, 0xC0, 0x34,
62140x00, 0xD3, 0x00, 0x4D, 0x02, 0x70, 0x09, 0xC0, 0x07, 0xC0, 0x0A, 0x00, 0x00,
62150x00, 0x00, 0x00, 0x05, 0xB8, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0x78, 0x02,
62160xC0, 0x0D, 0x00, 0xFF, 0x40, 0xF6, 0x02, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0x7F,
62170x00, 0xFD, 0x00, 0xF0, 0x0B, 0xC8, 0x3E, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0,
62180x0F, 0xC0, 0x1F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x3B, 0x00,
62190xFF, 0x00, 0xFC, 0x02, 0xB0, 0x0B, 0xC0, 0x15, 0x60, 0x0E, 0x00, 0x00, 0x00,
62200x00, 0x00, 0x03, 0xA0, 0x7F, 0x02, 0xF3, 0x01, 0xFC, 0x27, 0xF0, 0x1F, 0xC0,
62210x7F, 0x00, 0xF3, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0xFF, 0x09,
62220xCC, 0x07, 0xF0, 0x3F, 0xC0, 0x7C, 0x02, 0xFF, 0x21, 0xCC, 0x07, 0x30, 0x9F,
62230xC0, 0x78, 0x00, 0xF3, 0x01, 0xFC, 0x22, 0xF0, 0x3F, 0xC0, 0x5E, 0x10, 0xBB,
62240x01, 0xEC, 0x84, 0x38, 0x0B, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
62250x00, 0x01, 0x00, 0x07, 0x00, 0x11, 0x01, 0x74, 0x10, 0xD1, 0x01, 0x40, 0x47,
62260x00, 0x11, 0x04, 0x74, 0x04, 0xD0, 0x11, 0x40, 0x47, 0x00, 0x1D, 0x04, 0x44,
62270x84, 0xD0, 0x01, 0x48, 0x04, 0x01, 0x1D, 0x01, 0x44, 0x04, 0x12, 0x41, 0x40,
62280x44, 0x40, 0x11, 0x01, 0x74, 0x38, 0xD0, 0x0D, 0x40, 0x55, 0x00, 0xD1, 0x01,
62290x54, 0x03, 0xB0, 0x01, 0x40, 0x0D, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
62300x11, 0xA0, 0x33, 0x11, 0xC1, 0x00, 0x34, 0x83, 0xD0, 0x4C, 0x41, 0x37, 0x00,
62310xC1, 0x10, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xDD, 0x00, 0x04, 0x03,
62320xD0, 0x4D, 0x40, 0x30, 0x01, 0xD5, 0xA0, 0x64, 0x83, 0x10, 0x4C, 0x40, 0x35,
62330x00, 0xC9, 0x00, 0x34, 0x10, 0xD0, 0x4C, 0x40, 0x30, 0x60, 0xD9, 0x40, 0x24,
62340x01, 0x10, 0x08, 0x44, 0x4C, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
62350xA8, 0x05, 0x40, 0x11, 0x00, 0x74, 0x00, 0xD2, 0x01, 0x40, 0x07, 0x00, 0x11,
62360x00, 0x74, 0x00, 0xD1, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x00, 0x44, 0x00, 0xD0,
62370x01, 0x48, 0x04, 0x00, 0x1D, 0x00, 0x64, 0x00, 0x10, 0x01, 0x40, 0x04, 0x20,
62380x19, 0x00, 0x74, 0x0C, 0xD0, 0x1C, 0x40, 0x75, 0x00, 0xD1, 0x01, 0x54, 0x0B,
62390x15, 0x19, 0x41, 0x0D, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
62400x37, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x33, 0x00, 0xD3, 0x00,
62410x7C, 0x03, 0xD0, 0x0D, 0xC0, 0x37, 0x00, 0xCF, 0x00, 0x4C, 0x03, 0xF0, 0x0D,
62420xD0, 0x34, 0x00, 0xD7, 0x00, 0x6C, 0x03, 0x30, 0x0D, 0xD0, 0x34, 0x00, 0xDB,
62430x00, 0x7C, 0x0E, 0xE0, 0x1D, 0xC0, 0xC0, 0x04, 0xCB, 0x01, 0x6C, 0x04, 0x10,
62440x19, 0xC0, 0x20, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x0D,
62450x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0x40, 0x0F, 0x00, 0x3F, 0x00, 0xFC,
62460x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC4,
62470x0F, 0x00, 0x3F, 0x00, 0xDC, 0x00, 0xF1, 0x03, 0xC8, 0x0F, 0x00, 0x37, 0x40,
62480x7C, 0x42, 0xF0, 0x07, 0xC2, 0x1F, 0x00, 0xFF, 0x00, 0xEC, 0xA4, 0xF0, 0x00,
62490xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x75, 0x01,
62500xDF, 0x00, 0x7C, 0x03, 0x30, 0x0D, 0xD0, 0x74, 0x00, 0xD3, 0x00, 0x4D, 0x03,
62510xF0, 0x0D, 0xC8, 0x37, 0x40, 0xD3, 0x00, 0x7C, 0x07, 0x30, 0x8D, 0xC1, 0x37,
62520x14, 0xDF, 0x01, 0x4C, 0x23, 0xF0, 0x0D, 0xC0, 0x76, 0x04, 0xD3, 0x40, 0x6C,
62530x28, 0x30, 0x09, 0xC0, 0x37, 0x01, 0xD3, 0x00, 0x7C, 0xC8, 0x20, 0x29, 0xC6,
62540x28, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x04, 0x00, 0x1D,
62550x0F, 0x74, 0x10, 0x10, 0x11, 0x42, 0x04, 0x00, 0x11, 0x0A, 0x44, 0x00, 0xD0,
62560x01, 0x40, 0x07, 0x00, 0x11, 0x13, 0x74, 0x00, 0x10, 0x00, 0x40, 0xC7, 0x10,
62570x0D, 0x00, 0x34, 0x04, 0xD0, 0x31, 0x40, 0x83, 0x00, 0x11, 0xA5, 0x74, 0x08,
62580x10, 0x05, 0x40, 0x37, 0x00, 0xD1, 0x11, 0x74, 0x0E, 0xB0, 0x09, 0x40, 0x4C,
62590x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xB4, 0x00, 0xCD, 0x03,
62600x34, 0x43, 0x10, 0x6C, 0x40, 0x30, 0x00, 0xC1, 0x01, 0x04, 0x03, 0xD0, 0x0C,
62610x40, 0x73, 0x00, 0xC1, 0x00, 0x14, 0x03, 0x10, 0x2C, 0x44, 0x33, 0x00, 0xCD,
62620x00, 0x34, 0x07, 0xD0, 0x7D, 0x40, 0x33, 0x80, 0xC1, 0x81, 0x34, 0x0E, 0xD0,
62630x0C, 0x40, 0xB3, 0x00, 0xC1, 0x11, 0x64, 0x02, 0x10, 0x00, 0x40, 0x0C, 0x00,
62640x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00, 0x2D, 0x01, 0xF4,
62650x04, 0x10, 0x13, 0x48, 0x4C, 0x00, 0x21, 0x01, 0x84, 0x04, 0xD0, 0x12, 0x40,
62660x4B, 0x04, 0x21, 0x03, 0xF4, 0x04, 0x10, 0x12, 0x40, 0x4B, 0x14, 0x2D, 0x01,
62670xB4, 0x04, 0xD0, 0x12, 0x40, 0x4F, 0x40, 0x21, 0x01, 0xB4, 0x05, 0xD0, 0x1E,
62680x40, 0x7F, 0x00, 0x61, 0x01, 0xB4, 0xA7, 0x90, 0x12, 0x40, 0x3C, 0x20, 0x08,
62690x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x30, 0x92, 0xCF, 0x00, 0x3C, 0x03,
62700x30, 0x0C, 0xC1, 0x30, 0x00, 0xD3, 0x10, 0x0C, 0x23, 0xF0, 0x0C, 0xC0, 0x33,
62710x00, 0xC3, 0x00, 0x1C, 0x03, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCF, 0x00, 0x1C,
62720x03, 0xF0, 0x0C, 0xC1, 0x33, 0x20, 0xC1, 0x00, 0x3E, 0x23, 0xF4, 0x0C, 0xC0,
62730x33, 0x80, 0xC3, 0x08, 0x7C, 0x63, 0x30, 0x80, 0xD0, 0x48, 0x40, 0x08, 0x00,
62740x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x0D, 0x00, 0x3F, 0x00, 0xBC, 0x00, 0xF0,
62750x02, 0xC0, 0x0B, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x83, 0xC0, 0x03, 0x00,
62760x1F, 0x40, 0xBC, 0x20, 0xF2, 0x03, 0xC0, 0x0F, 0x00, 0x1F, 0x00, 0x7C, 0x00,
62770xF0, 0x81, 0xC0, 0x07, 0x02, 0x1F, 0x41, 0xFC, 0xA3, 0x20, 0x8F, 0xC8, 0x3B,
62780x00, 0x7F, 0x00, 0xFC, 0x23, 0xF0, 0x07, 0xC0, 0x0B, 0x20, 0x06, 0x00, 0x00,
62790x00, 0x00, 0x00, 0x10, 0xA0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
62800xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x1D, 0xC0, 0x34, 0x00, 0xDF,
62810x00, 0x7C, 0x03, 0xF0, 0x1D, 0xD0, 0x74, 0x40, 0xD3, 0x00, 0x7C, 0x03, 0xF0,
62820x1D, 0xD0, 0x30, 0x00, 0xC3, 0x00, 0x4C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x80,
62830xDF, 0x00, 0x7C, 0x00, 0x30, 0x09, 0xC0, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00,
62840x00, 0x00, 0x32, 0x88, 0x09, 0x00, 0x2D, 0x00, 0xB4, 0x00, 0xD0, 0x02, 0x40,
62850x0B, 0x20, 0x2D, 0x00, 0xB4, 0x00, 0xD0, 0x02, 0x40, 0x08, 0x00, 0x2D, 0x00,
62860xB4, 0x00, 0xD0, 0x03, 0x40, 0x0C, 0x00, 0x21, 0x00, 0xB4, 0x00, 0xD0, 0x03,
62870x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x83, 0xD0, 0x06, 0x40, 0x3B, 0x20, 0x6D,
62880x40, 0xF4, 0x01, 0x10, 0x02, 0x40, 0x4F, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
62890x00, 0x04, 0x00, 0x79, 0x00, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x7B,
62900x00, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x1F, 0x40, 0x7A, 0x00, 0xED, 0x01, 0xB4,
62910x87, 0xD0, 0x1E, 0x40, 0x7A, 0x00, 0xE1, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40,
62920x78, 0x00, 0xF1, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x20, 0xED, 0x51,
62930xB4, 0x87, 0x10, 0x1E, 0x41, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
62940x36, 0x28, 0x03, 0x00, 0x0D, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x40, 0x03, 0x00,
62950x0D, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x40, 0x02, 0x10, 0x1D, 0x20, 0x34, 0x00,
62960xD0, 0x00, 0x40, 0x02, 0x00, 0x01, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x40, 0x00,
62970x10, 0x01, 0x00, 0x14, 0x9B, 0xD0, 0x04, 0x42, 0x33, 0x00, 0x4D, 0x01, 0x34,
62980x03, 0x11, 0x2C, 0x41, 0x5B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17,
62990xA0, 0x15, 0x00, 0x4F, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC4, 0x13, 0x00, 0x5F,
63000x00, 0x7C, 0x01, 0xF0, 0x05, 0xD0, 0x16, 0x00, 0x5F, 0x00, 0x74, 0x01, 0xF0,
63010x05, 0xC2, 0x16, 0x00, 0x51, 0x00, 0x3C, 0x01, 0xF0, 0x05, 0xC4, 0x14, 0x40,
63020x53, 0x00, 0xCC, 0x09, 0xD1, 0x87, 0x40, 0x1F, 0x00, 0x7D, 0x01, 0xBC, 0x05,
63030x14, 0x27, 0xC0, 0x5F, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08,
63040x0D, 0x08, 0x3F, 0x00, 0xFC, 0x00, 0xF2, 0x03, 0xC4, 0x0F, 0x00, 0x3F, 0x00,
63050xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0D, 0x20, 0x3F, 0x80, 0xFC, 0x00, 0xB0, 0x03,
63060xC0, 0x0D, 0x00, 0x3F, 0x80, 0xFC, 0x00, 0xF2, 0x03, 0xC4, 0x0F, 0x00, 0x3F,
63070x00, 0x65, 0x20, 0xF0, 0x81, 0xC0, 0x07, 0x02, 0x1F, 0x00, 0x7C, 0x38, 0xF0,
63080x01, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25,
63090x02, 0x9F, 0x00, 0x6C, 0x0E, 0xF0, 0x19, 0xC0, 0x27, 0x00, 0x93, 0x05, 0x7C,
63100x02, 0x30, 0x09, 0xC0, 0x67, 0x02, 0x9F, 0x08, 0x6C, 0x82, 0xF0, 0x49, 0xC0,
63110x67, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x19, 0xC8, 0x27, 0x00, 0x93, 0x05,
63120x0C, 0x02, 0x32, 0x09, 0xC2, 0x27, 0x02, 0x9D, 0x04, 0x5C, 0x02, 0x34, 0x09,
63130xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xE6, 0x00,
63140x9D, 0x02, 0x44, 0x0E, 0xD8, 0x29, 0x40, 0x27, 0x00, 0x9B, 0x43, 0x34, 0x02,
63150x10, 0x09, 0x40, 0x27, 0x08, 0x9F, 0x02, 0x44, 0x02, 0xE0, 0x29, 0x40, 0xA7,
63160x00, 0x9D, 0x00, 0x74, 0x02, 0xB0, 0x29, 0x40, 0x23, 0x10, 0x8B, 0x01, 0x44,
63170x16, 0x10, 0x09, 0x48, 0xA7, 0x04, 0x8D, 0x00, 0x6C, 0x4E, 0x10, 0x09, 0x48,
63180x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x24, 0x00, 0xBD,
63190x50, 0xE6, 0x02, 0xD0, 0x8B, 0x41, 0x6F, 0x08, 0xB5, 0x40, 0xF4, 0x02, 0x10,
63200x0B, 0x40, 0x2F, 0x00, 0xBD, 0x10, 0xC4, 0x06, 0xC0, 0x0B, 0x40, 0x2F, 0x01,
63210xBD, 0x08, 0xF4, 0x06, 0x10, 0x8B, 0x40, 0x2F, 0x00, 0xB1, 0x00, 0x45, 0x22,
63220x18, 0x09, 0x40, 0x27, 0x00, 0xDC, 0x00, 0x64, 0x06, 0x10, 0x09, 0x40, 0x73,
63230x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x68, 0x00, 0xAD, 0x00,
63240x86, 0x86, 0xD0, 0x0A, 0x40, 0x2B, 0x80, 0xA1, 0x01, 0xF4, 0x02, 0x10, 0x0A,
63250x40, 0x2B, 0x00, 0xA5, 0x00, 0x84, 0x02, 0x50, 0x1A, 0x40, 0x6B, 0x00, 0xAD,
63260x00, 0xB4, 0x02, 0x90, 0x1A, 0x40, 0x2B, 0x00, 0xB9, 0x00, 0x04, 0x12, 0x14,
63270x08, 0x40, 0x23, 0x00, 0xCD, 0x00, 0x64, 0x02, 0x10, 0x48, 0x40, 0x53, 0xA0,
63280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x86, 0x02, 0x1F, 0x00, 0x6C,
63290x28, 0xD0, 0xA1, 0xC0, 0x07, 0x00, 0x15, 0x4A, 0x7C, 0x00, 0x34, 0x01, 0xC0,
63300x07, 0x00, 0x1D, 0x0A, 0x4D, 0x00, 0xD0, 0xA1, 0xC0, 0x87, 0x02, 0x1F, 0x00,
63310x7C, 0x00, 0x30, 0xA1, 0x40, 0x07, 0x00, 0x33, 0x00, 0x4C, 0x28, 0x30, 0xA1,
63320xC0, 0x07, 0x80, 0x1F, 0x00, 0x7C, 0x28, 0x39, 0xA1, 0xC0, 0x77, 0xC0, 0x0A,
63330x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x82,
63340xF0, 0x09, 0xC0, 0x27, 0x48, 0x9F, 0x00, 0x7C, 0x02, 0xF1, 0x08, 0xC0, 0x27,
63350x08, 0x9F, 0x40, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
63360x02, 0xF2, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0xFC, 0xA2, 0xF0, 0x0B, 0xC0,
63370x2F, 0x00, 0xBF, 0x20, 0xFC, 0x02, 0xF0, 0x8F, 0xC0, 0x67, 0x20, 0x0E, 0x00,
63380x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x2F, 0x00, 0xB3, 0x00, 0xFC, 0x02, 0x30,
63390x0B, 0xC2, 0x2C, 0x00, 0xBF, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x2F, 0x28,
63400xBF, 0x00, 0xDC, 0x02, 0x30, 0x0B, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0xDC, 0x02,
63410xF0, 0x0B, 0x80, 0x2F, 0x10, 0xBF, 0x00, 0xDC, 0x52, 0x30, 0x88, 0xC2, 0x29,
63420x00, 0xB3, 0x00, 0xDC, 0x02, 0xF0, 0x09, 0xC0, 0x67, 0x00, 0x0E, 0x00, 0x00,
63430x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x01, 0x11, 0x00, 0x74, 0x40, 0x12, 0x01,
63440x49, 0x04, 0x00, 0x1D, 0x14, 0x74, 0x00, 0xD0, 0x01, 0x48, 0x07, 0x20, 0x17,
63450x10, 0x74, 0x00, 0x50, 0x41, 0x41, 0x07, 0x01, 0x1D, 0x80, 0x74, 0x00, 0xD0,
63460x01, 0x49, 0x07, 0x00, 0x1D, 0x00, 0x74, 0x10, 0x10, 0x41, 0x44, 0x07, 0x00,
63470x11, 0x00, 0x5C, 0x81, 0xD2, 0x41, 0x45, 0x73, 0x60, 0x0C, 0x00, 0x00, 0x00,
63480x00, 0x00, 0x12, 0x00, 0x21, 0x05, 0x81, 0x60, 0x14, 0x12, 0x14, 0x08, 0x40,
63490x20, 0x00, 0x8D, 0x04, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x33, 0x00, 0x8D, 0x00,
63500x14, 0x03, 0x10, 0x48, 0x40, 0x33, 0x85, 0xCD, 0x00, 0x14, 0x03, 0xD0, 0x08,
63510x40, 0x23, 0x00, 0x8D, 0x00, 0x14, 0x52, 0xD0, 0x48, 0x40, 0x21, 0x00, 0x89,
63520x00, 0x14, 0x02, 0xD9, 0x48, 0x40, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
63530x00, 0x18, 0x08, 0x25, 0x00, 0x91, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x50, 0x24,
63540x10, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x95, 0x00, 0x74,
63550x02, 0x51, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x0D, 0x40,
63560x27, 0x00, 0x9D, 0x00, 0x74, 0x06, 0xD0, 0x89, 0x40, 0xE7, 0x00, 0x99, 0x01,
63570x50, 0x12, 0xD0, 0x09, 0x60, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
63580x05, 0x20, 0x25, 0x00, 0x93, 0x80, 0x5C, 0x02, 0x31, 0x09, 0xC2, 0x24, 0x00,
63590x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xE0, 0x27, 0x00, 0x9F, 0x40, 0x5C, 0x02,
63600x30, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x27,
63610x00, 0x9F, 0x80, 0x5C, 0x12, 0xB4, 0x09, 0xC0, 0xE1, 0x40, 0x9B, 0x01, 0x58,
63620x06, 0xF0, 0x09, 0xC4, 0x17, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
63630x08, 0x25, 0x40, 0x9F, 0x00, 0x7C, 0x02, 0xF3, 0x09, 0x40, 0x27, 0x10, 0x9F,
63640x00, 0x7C, 0x02, 0xF0, 0x09, 0x80, 0x27, 0x00, 0x96, 0x00, 0x70, 0x02, 0x70,
63650x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC2, 0x27, 0x04,
63660x9F, 0xA0, 0x7C, 0x02, 0x20, 0x09, 0xC0, 0x27, 0x00, 0x96, 0x00, 0x5C, 0x42,
63670xF1, 0x49, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08,
63680x05, 0x06, 0x1F, 0x01, 0x6C, 0x10, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x1F, 0x00,
63690x4C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01,
63700xC3, 0x04, 0x00, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x08, 0x13,
63710x00, 0x4C, 0x00, 0xB0, 0x01, 0xC0, 0x05, 0x08, 0x17, 0x00, 0x6C, 0x28, 0xF0,
63720x21, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x5C,
63730x00, 0x7D, 0x11, 0xC4, 0x0D, 0x72, 0x57, 0x40, 0x14, 0x04, 0x7F, 0x41, 0x44,
63740x01, 0xD0, 0x05, 0x40, 0x17, 0x00, 0x7D, 0x20, 0x34, 0x01, 0x72, 0x07, 0xC9,
63750x1E, 0x02, 0x51, 0x00, 0x74, 0x01, 0x70, 0xD7, 0x00, 0x9F, 0x04, 0x51, 0x01,
63760xC4, 0x15, 0x00, 0x05, 0x40, 0x1C, 0x00, 0x71, 0x05, 0xE4, 0x0D, 0xD0, 0x05,
63770x40, 0x53, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xF6, 0x00,
63780x4D, 0x21, 0x64, 0x2F, 0x50, 0x4D, 0x40, 0x20, 0x20, 0xCD, 0x04, 0x04, 0x03,
63790xD0, 0x0C, 0x40, 0x23, 0x00, 0xCD, 0x0D, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0xB0,
63800x00, 0x89, 0x00, 0x34, 0x02, 0x50, 0x2C, 0x40, 0xF3, 0x00, 0x81, 0x89, 0x44,
63810x13, 0x91, 0x0C, 0x40, 0x01, 0x00, 0x85, 0x01, 0x24, 0x0F, 0xD0, 0x0C, 0x42,
63820x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x00, 0xED,
63830x01, 0x86, 0x01, 0x50, 0x0E, 0x50, 0x38, 0x00, 0xF5, 0x11, 0x84, 0x03, 0xD0,
63840x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x1F, 0x40, 0x5A, 0x40,
63850xE9, 0x00, 0xB4, 0x03, 0x50, 0x0E, 0x40, 0x6B, 0x40, 0xE1, 0x01, 0xC6, 0x03,
63860x10, 0x5F, 0x40, 0x2C, 0x08, 0x61, 0x00, 0xA4, 0x03, 0xD2, 0x4E, 0x60, 0x07,
63870x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x78, 0x00, 0xEF, 0x01,
63880xAC, 0x07, 0x70, 0x1F, 0xC0, 0x78, 0x20, 0xED, 0x01, 0x85, 0x07, 0xF0, 0x1E,
63890xC6, 0x7B, 0x00, 0xED, 0x01, 0xBC, 0x07, 0xF0, 0x1F, 0xC0, 0x7C, 0x00, 0xEB,
63900x01, 0xBC, 0x07, 0x70, 0x1E, 0xC0, 0x7B, 0x00, 0xE3, 0x01, 0xCC, 0x05, 0xB0,
63910x9E, 0xC0, 0x79, 0x00, 0x65, 0x41, 0xAC, 0x04, 0xF0, 0x5E, 0xC0, 0x47, 0x40,
63920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0xCF, 0x00, 0x7C,
63930x01, 0x71, 0x0D, 0xC4, 0x37, 0x00, 0xCF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0x40,
63940x37, 0x00, 0xDF, 0x40, 0x7C, 0x03, 0x70, 0x0D, 0xC0, 0x17, 0x10, 0xD7, 0x80,
63950x7C, 0x83, 0x70, 0x0D, 0xC0, 0x23, 0x00, 0xCF, 0x00, 0x7C, 0x01, 0xF0, 0x8D,
63960xC0, 0x37, 0x00, 0x5F, 0x00, 0x7C, 0x00, 0xF0, 0x8D, 0xC0, 0x43, 0x60, 0x06,
63970x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x5D, 0x00, 0xFF, 0x01, 0xCC, 0x13,
63980xF0, 0x5F, 0xC0, 0x7B, 0x62, 0x73, 0x41, 0xBC, 0x07, 0x30, 0x1F, 0xC0, 0x7F,
63990x00, 0xF3, 0x01, 0xFC, 0x27, 0xF0, 0x17, 0xC0, 0x78, 0x00, 0xFB, 0x09, 0xEC,
64000x27, 0x30, 0x1E, 0xC0, 0x78, 0x00, 0xF3, 0x00, 0xFC, 0x07, 0xF0, 0x1F, 0xC0,
64010x4C, 0x00, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x08, 0x00, 0x06, 0x00,
64020x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x19, 0x16, 0xED, 0x00, 0x84, 0x01, 0xD0,
64030x06, 0x40, 0x3B, 0x06, 0x65, 0x00, 0xB4, 0x03, 0x10, 0x8E, 0x40, 0x3B, 0x02,
64040x61, 0x08, 0xB4, 0x03, 0xD2, 0x47, 0x40, 0x38, 0x00, 0xE1, 0x08, 0x84, 0x03,
64050x10, 0x0E, 0x40, 0x38, 0x04, 0xE5, 0x08, 0xB4, 0x29, 0xD0, 0x0F, 0x40, 0x29,
64060x02, 0x6D, 0x00, 0xB4, 0x22, 0xD0, 0x0E, 0xC0, 0x56, 0x60, 0x04, 0x00, 0x00,
64070x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0xFD, 0x00, 0x84, 0x23, 0xD0, 0x4E,
64080x48, 0x3B, 0x12, 0x60, 0x00, 0xF4, 0x03, 0x10, 0x2E, 0x40, 0x3F, 0x00, 0xE1,
64090x00, 0xB4, 0x03, 0xC1, 0x06, 0x60, 0x9C, 0x00, 0xF1, 0x80, 0xC6, 0x03, 0x10,
64100x87, 0x40, 0xB8, 0x00, 0xE1, 0x08, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x38, 0x00,
64110x6D, 0x00, 0xB4, 0x02, 0xD0, 0x0E, 0x40, 0x60, 0x08, 0x04, 0x00, 0x00, 0x00,
64120x00, 0x00, 0x02, 0x28, 0x01, 0x00, 0xCD, 0x12, 0x44, 0x2C, 0xD0, 0xA8, 0x40,
64130xB3, 0x04, 0x11, 0x03, 0x34, 0x0B, 0x10, 0x0C, 0x40, 0xB3, 0x04, 0x91, 0x03,
64140x34, 0x0B, 0x90, 0x20, 0x40, 0x00, 0x00, 0xC1, 0x02, 0x04, 0x0B, 0x10, 0x08,
64150x41, 0x30, 0x40, 0xC5, 0x01, 0x74, 0x40, 0xD0, 0x1C, 0x40, 0x31, 0x10, 0x4D,
64160x0A, 0x30, 0x02, 0xC1, 0x2D, 0x48, 0x1A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
64170x00, 0x15, 0xA0, 0x61, 0x00, 0xCF, 0x00, 0x4C, 0x22, 0xF0, 0x21, 0xC0, 0xF7,
64180x00, 0x93, 0x11, 0x7C, 0x0B, 0x34, 0x5C, 0xC0, 0x33, 0x00, 0x13, 0x01, 0x7C,
64190x23, 0xF0, 0x79, 0xD0, 0x64, 0x01, 0xC3, 0x08, 0x4C, 0x23, 0x30, 0x51, 0xC0,
64200x34, 0x00, 0xD3, 0x00, 0x7C, 0x06, 0xF0, 0x5F, 0xC0, 0x10, 0x20, 0xCF, 0x23,
64210x7C, 0x08, 0xC0, 0xBF, 0x80, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
64220x05, 0x08, 0x27, 0x20, 0xDF, 0x01, 0x7C, 0x02, 0xF1, 0x21, 0xC8, 0x37, 0x00,
64230x9F, 0x02, 0x7C, 0x23, 0xF1, 0x0D, 0xC0, 0x77, 0x00, 0x1F, 0x1A, 0x7C, 0x07,
64240xF0, 0x29, 0xC8, 0x87, 0x00, 0xDF, 0x01, 0x7C, 0x07, 0xF0, 0x21, 0xC0, 0x87,
64250x00, 0xDF, 0x08, 0x7C, 0x22, 0xF0, 0x0D, 0xC0, 0x37, 0x02, 0x5F, 0x04, 0x7C,
64260x3A, 0xF1, 0x8D, 0xC0, 0x27, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
64270x08, 0x0F, 0x00, 0xF3, 0x00, 0xCC, 0x00, 0x30, 0x03, 0xC1, 0x7C, 0x08, 0x3F,
64280x90, 0xCC, 0x43, 0xF0, 0x0F, 0xC0, 0x3C, 0x00, 0x33, 0x00, 0xCC, 0x07, 0x30,
64290x03, 0xC1, 0x2F, 0x00, 0xFF, 0x00, 0xCC, 0x07, 0xF0, 0x03, 0xC0, 0x3F, 0x00,
64300xFF, 0x12, 0xFC, 0x00, 0x30, 0x0F, 0xC1, 0x7F, 0x01, 0x73, 0x01, 0xCC, 0x00,
64310xF1, 0x0D, 0xC0, 0x14, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20,
64320xE6, 0x09, 0xD0, 0x01, 0x44, 0x04, 0x12, 0x30, 0x42, 0x34, 0x08, 0x9D, 0x03,
64330x4C, 0x03, 0xD0, 0x0D, 0x60, 0x34, 0x00, 0x11, 0x25, 0x04, 0x07, 0x12, 0x39,
64340x40, 0xC7, 0x00, 0xDD, 0x80, 0x6C, 0x03, 0xD0, 0x11, 0x40, 0x87, 0x00, 0xDD,
64350x01, 0x70, 0x0C, 0x10, 0x0D, 0x40, 0x37, 0x00, 0x51, 0x08, 0x7D, 0x4C, 0xD2,
64360x0D, 0x4C, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x66,
64370x00, 0xD1, 0x01, 0x44, 0x06, 0x98, 0x19, 0x40, 0x36, 0x01, 0x9D, 0x11, 0x64,
64380x03, 0xD0, 0x0D, 0x40, 0x74, 0x00, 0x90, 0x01, 0x44, 0x23, 0x10, 0x19, 0x41,
64390x67, 0x04, 0xDD, 0x04, 0x54, 0xA3, 0xD1, 0x19, 0x40, 0x37, 0x04, 0xDD, 0x00,
64400x74, 0x06, 0x18, 0x0D, 0x40, 0x17, 0x00, 0xD1, 0x00, 0x44, 0x04, 0xD0, 0x0D,
64410x58, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x24, 0x00,
64420x91, 0x01, 0x04, 0x02, 0x94, 0x01, 0x50, 0x32, 0x00, 0x8D, 0x00, 0x04, 0x03,
64430xD0, 0x0D, 0x40, 0x34, 0x00, 0x01, 0x00, 0x45, 0x03, 0x10, 0x08, 0x40, 0x23,
64440x00, 0xCD, 0x00, 0x24, 0x03, 0xD0, 0x08, 0x48, 0x33, 0x00, 0xCD, 0x00, 0x34,
64450x02, 0x10, 0x0C, 0x40, 0x37, 0x00, 0x51, 0x00, 0x24, 0x02, 0x90, 0x0C, 0x40,
64460x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0xD3,
64470x00, 0x4C, 0x02, 0xB0, 0x09, 0xC4, 0x36, 0x00, 0x1F, 0x00, 0x6D, 0x03, 0xF0,
64480x0D, 0x40, 0x34, 0x00, 0x93, 0x00, 0x4C, 0x03, 0x30, 0x01, 0xC4, 0x27, 0x00,
64490xDF, 0x00, 0x5C, 0x03, 0xF1, 0x01, 0x40, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x02,
64500x34, 0x0F, 0xC0, 0x37, 0x00, 0x53, 0x00, 0x4C, 0x00, 0xF0, 0x0D, 0xC0, 0x04,
64510xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x98, 0x2F, 0x00, 0xAF, 0x00,
64520xF4, 0x02, 0x70, 0x0B, 0xC4, 0x3D, 0x10, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
64530x80, 0x3B, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0xEF,
64540x00, 0xB8, 0x03, 0xF0, 0x0B, 0xC8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0,
64550x0F, 0xC0, 0x3F, 0x00, 0x7F, 0x00, 0xFC, 0x02, 0xF8, 0x0F, 0xC0, 0x17, 0x24,
64560x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x0B, 0x80, 0x33, 0x00, 0xFC,
64570x10, 0x30, 0x0F, 0xC0, 0x3C, 0x00, 0xF3, 0x00, 0xCC, 0x27, 0x30, 0x03, 0xC8,
64580x2C, 0x05, 0xB5, 0x00, 0xCC, 0x02, 0x30, 0x83, 0xC0, 0x2F, 0x03, 0x33, 0x01,
64590xCC, 0x01, 0xF0, 0x1B, 0xC0, 0x2F, 0x01, 0x3F, 0x01, 0xCC, 0x26, 0xB0, 0x0B,
64600xC0, 0x7C, 0x00, 0xBF, 0x14, 0xFC, 0x27, 0x30, 0x4F, 0xC1, 0x0C, 0x00, 0x0E,
64610x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x10, 0x11, 0x0A, 0x74, 0x28,
64620x12, 0x4F, 0x40, 0x7C, 0x10, 0xD5, 0x01, 0x04, 0x02, 0x10, 0x01, 0x50, 0xE4,
64630x08, 0x91, 0x08, 0x54, 0x02, 0x10, 0x0B, 0x40, 0xAF, 0x00, 0x91, 0x00, 0x44,
64640x2C, 0xD0, 0x19, 0x40, 0xE7, 0x00, 0x1D, 0x01, 0x44, 0x02, 0x14, 0x08, 0x40,
64650x74, 0x00, 0x9D, 0x03, 0x74, 0x03, 0x10, 0x3D, 0x40, 0x04, 0x60, 0x0C, 0x00,
64660x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x23, 0x00, 0x01, 0x20, 0x34, 0x00, 0x50,
64670x0C, 0x51, 0x30, 0x00, 0xC1, 0x00, 0x04, 0x02, 0x10, 0x00, 0x40, 0x20, 0x00,
64680x85, 0x00, 0x04, 0x02, 0x14, 0x48, 0x40, 0xB7, 0x20, 0x91, 0x14, 0x16, 0x81,
64690x90, 0x0C, 0x42, 0xB3, 0x00, 0x1D, 0x00, 0x64, 0x02, 0x10, 0x08, 0x40, 0x30,
64700x00, 0x09, 0x01, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x44, 0x80, 0x0E, 0x00, 0x00,
64710x00, 0x00, 0x00, 0x03, 0xA8, 0x25, 0x00, 0x11, 0x01, 0x74, 0x44, 0x10, 0x8D,
64720x40, 0x34, 0x00, 0xD5, 0x00, 0x44, 0x02, 0x10, 0x01, 0x40, 0x24, 0x01, 0xD1,
64730x20, 0x54, 0x46, 0x10, 0x19, 0x40, 0x27, 0x00, 0x91, 0x01, 0x54, 0x40, 0xD0,
64740x15, 0x40, 0x77, 0x00, 0x1D, 0x11, 0x64, 0x12, 0x10, 0x09, 0x41, 0x74, 0x00,
64750xDD, 0x44, 0x74, 0x23, 0x10, 0x0D, 0x40, 0x1C, 0x00, 0x06, 0x00, 0x00, 0x00,
64760x00, 0x00, 0x00, 0x80, 0x47, 0x42, 0x11, 0x81, 0x7C, 0x0C, 0x34, 0x1D, 0xC0,
64770x34, 0x00, 0xD3, 0x00, 0x49, 0x03, 0x30, 0x15, 0xD0, 0x24, 0x00, 0x97, 0x80,
64780x4C, 0x06, 0x30, 0x39, 0xC0, 0x63, 0x40, 0x83, 0x01, 0x5D, 0x01, 0xF0, 0x19,
64790xC0, 0x77, 0x00, 0x0F, 0x01, 0x2D, 0x07, 0xB0, 0x29, 0xD0, 0x34, 0x00, 0x9F,
64800x01, 0x7E, 0x06, 0x30, 0x0D, 0xC0, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
64810x00, 0x07, 0x88, 0x6D, 0x00, 0x3F, 0x00, 0xBC, 0x00, 0xE2, 0x1E, 0xE1, 0x3F,
64820x00, 0xFF, 0x00, 0xF8, 0x03, 0xF0, 0x4E, 0xE0, 0x6B, 0x00, 0x8F, 0x20, 0x7C,
64830x02, 0xF0, 0x0F, 0xC0, 0x67, 0x22, 0xBF, 0x10, 0xEC, 0x25, 0xF0, 0x0B, 0xC0,
64840x3F, 0x08, 0x3F, 0x00, 0xDC, 0x03, 0xF0, 0x47, 0xC0, 0x3F, 0x00, 0xBF, 0x81,
64850xFE, 0x06, 0xF4, 0x0C, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
64860x02, 0x08, 0x21, 0x00, 0x13, 0x80, 0x6C, 0x18, 0x32, 0x0D, 0xC0, 0x73, 0x00,
64870xD3, 0x00, 0x7C, 0x03, 0x30, 0x05, 0xC0, 0x24, 0x00, 0x93, 0x00, 0x4C, 0x3A,
64880x34, 0x2D, 0xC0, 0x3C, 0x00, 0x93, 0x00, 0x7C, 0x01, 0x30, 0x0D, 0xC0, 0x77,
64890x00, 0x1F, 0x02, 0x7C, 0x23, 0x30, 0x24, 0xD0, 0x34, 0x00, 0xDF, 0x00, 0x4C,
64900x02, 0xF0, 0x0D, 0xE0, 0x0A, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
64910xA0, 0x6C, 0x01, 0x91, 0x01, 0x44, 0x0C, 0x10, 0x1D, 0xE4, 0x3F, 0x00, 0xE1,
64920x00, 0x74, 0x07, 0x10, 0x0D, 0x48, 0x24, 0x00, 0xD1, 0x00, 0x6C, 0x0A, 0x12,
64930x0D, 0x48, 0x24, 0x30, 0x9B, 0x00, 0x70, 0x15, 0x11, 0x05, 0x40, 0x34, 0x00,
64940x1D, 0x00, 0x74, 0x07, 0x10, 0xA5, 0x40, 0x34, 0x00, 0xDD, 0x84, 0x44, 0x02,
64950xD0, 0x0F, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20,
64960x40, 0x00, 0x01, 0x00, 0x24, 0x84, 0x10, 0x08, 0x40, 0x33, 0x40, 0xC1, 0x80,
64970x74, 0x07, 0x90, 0x20, 0x41, 0x20, 0x40, 0x81, 0x00, 0x44, 0x03, 0x91, 0x08,
64980x40, 0x21, 0x20, 0x81, 0x02, 0x30, 0x41, 0x16, 0x0C, 0x52, 0x33, 0x00, 0x4D,
64990x00, 0x34, 0x06, 0x10, 0x08, 0x40, 0x30, 0x00, 0x8D, 0x01, 0x44, 0x02, 0xD0,
65000x0C, 0x40, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x6C,
65010x00, 0x01, 0x11, 0x84, 0x64, 0x10, 0x1E, 0x40, 0x79, 0x40, 0xE1, 0x61, 0xB4,
65020x4E, 0x90, 0x12, 0x50, 0x78, 0x00, 0xA1, 0x11, 0xA4, 0x26, 0x90, 0x0A, 0x40,
65030x69, 0x00, 0xE9, 0x01, 0xB4, 0x06, 0x10, 0x1F, 0x40, 0x5A, 0x00, 0x6D, 0x01,
65040xB4, 0x06, 0x10, 0x1A, 0x40, 0x78, 0x20, 0x8D, 0x01, 0x84, 0x06, 0xD0, 0x1E,
65050x40, 0x19, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0x20, 0x00,
65060x03, 0x20, 0x6E, 0x20, 0x34, 0x08, 0x41, 0x33, 0x00, 0xC3, 0x00, 0x3C, 0x02,
65070x90, 0x01, 0xC1, 0x20, 0x00, 0x83, 0x00, 0x0C, 0x23, 0xB4, 0x89, 0xC0, 0x31,
65080x09, 0x83, 0x00, 0x3C, 0x00, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0x0F, 0x00, 0x7C,
65090x02, 0x34, 0x08, 0xC0, 0x30, 0x00, 0xCF, 0x08, 0x0D, 0x02, 0xF2, 0x0C, 0xD0,
65100x48, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x2D, 0x40, 0x3F,
65110x00, 0xF6, 0x20, 0xF5, 0x0F, 0xC0, 0x3B, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0x50,
65120x03, 0xC0, 0x3B, 0x02, 0xFF, 0x08, 0xFC, 0xA1, 0x70, 0xCB, 0xE0, 0xBE, 0x00,
65130xBF, 0x00, 0xBC, 0x02, 0xF0, 0x06, 0xC0, 0x3D, 0x00, 0x3F, 0x00, 0xFC, 0x02,
65140xF0, 0x8B, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x0A,
65150x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x07, 0x00, 0x13, 0x00,
65160xCC, 0x00, 0x30, 0x59, 0xC8, 0x30, 0x13, 0xF7, 0x00, 0x74, 0x03, 0x70, 0x01,
65170xC0, 0x24, 0x00, 0x9E, 0x00, 0x4C, 0x03, 0x30, 0x2D, 0xC1, 0xAC, 0x00, 0x93,
65180x00, 0x7C, 0x01, 0xC0, 0x1D, 0xC0, 0x34, 0x00, 0x5B, 0x00, 0x7C, 0x02, 0x30,
65190x05, 0xD0, 0x30, 0x00, 0x93, 0x00, 0x7C, 0x07, 0x30, 0x0D, 0xC0, 0x53, 0x00,
65200x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0xA9, 0x00, 0x21, 0xC0, 0x84,
65210x02, 0x11, 0x0E, 0xC1, 0x38, 0x04, 0xE1, 0x01, 0xB4, 0x03, 0xD0, 0x0F, 0x40,
65220x38, 0x00, 0xAD, 0x00, 0xBC, 0x03, 0x10, 0x0E, 0x42, 0x20, 0x00, 0xE1, 0xC0,
65230xB4, 0x03, 0xC0, 0x0E, 0xC0, 0x38, 0x00, 0x6D, 0x00, 0xB4, 0x02, 0x50, 0x0C,
65240x40, 0x38, 0x00, 0xA5, 0x00, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x4B, 0x60, 0x06,
65250x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x69, 0x01, 0x21, 0x01, 0x84, 0x07,
65260x10, 0x18, 0x00, 0x78, 0x01, 0xE5, 0x01, 0xB4, 0x47, 0xD1, 0x12, 0x50, 0x6A,
65270x00, 0x8D, 0x01, 0x04, 0x07, 0x10, 0x1C, 0x48, 0x78, 0x00, 0xA0, 0x01, 0xB4,
65280x05, 0xD0, 0x1F, 0x50, 0x78, 0x00, 0x2D, 0x01, 0xB4, 0x06, 0x18, 0x1E, 0x40,
65290x68, 0x00, 0xE9, 0x01, 0xF4, 0x07, 0x10, 0x1E, 0x40, 0x03, 0x00, 0x04, 0x00,
65300x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xD1, 0x53, 0x04, 0x03, 0x10,
65310x0C, 0x50, 0x32, 0x00, 0xC1, 0x00, 0x34, 0x07, 0xD0, 0x0D, 0x40, 0x32, 0x00,
65320xCD, 0x40, 0x34, 0x2B, 0x10, 0x5C, 0x60, 0x30, 0x00, 0x81, 0x00, 0x34, 0x03,
65330xD0, 0x04, 0x40, 0xF2, 0x00, 0x8D, 0x00, 0x34, 0x26, 0x50, 0x7C, 0x42, 0x30,
65340x00, 0xCD, 0x00, 0x34, 0x07, 0x14, 0x0C, 0x40, 0x5B, 0x00, 0x0C, 0x00, 0x00,
65350x00, 0x00, 0x00, 0x17, 0xA0, 0x1D, 0x00, 0x73, 0x27, 0xCC, 0x0D, 0x34, 0x05,
65360xC8, 0x10, 0x00, 0x57, 0x20, 0x7C, 0x05, 0xF0, 0x27, 0xC1, 0x16, 0x00, 0x5F,
65370x00, 0xCC, 0x05, 0x34, 0x57, 0xD0, 0x14, 0x40, 0x73, 0x00, 0xFC, 0x01, 0xF0,
65380x07, 0xC0, 0x1C, 0x01, 0x6B, 0x00, 0x7C, 0x01, 0x30, 0x77, 0xD0, 0x14, 0x00,
65390x6B, 0x00, 0x7C, 0x01, 0x30, 0x05, 0xC0, 0x5F, 0x20, 0x0E, 0x00, 0x00, 0x00,
65400x00, 0x00, 0x12, 0x08, 0x05, 0x40, 0x1F, 0x00, 0x7D, 0x20, 0xF0, 0x01, 0xC0,
65410x05, 0x00, 0x1F, 0x02, 0x7C, 0x00, 0xF2, 0x01, 0xC5, 0x05, 0x00, 0x1F, 0x00,
65420x7C, 0x40, 0xF0, 0x00, 0xC0, 0x03, 0x40, 0x1F, 0x04, 0x7C, 0x20, 0xF0, 0x01,
65430xC0, 0x05, 0x30, 0x1F, 0x01, 0x7C, 0x00, 0xF4, 0x21, 0xC4, 0x07, 0x00, 0x17,
65440x01, 0x7C, 0x20, 0xF0, 0x01, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
65450x00, 0x10, 0x08, 0x25, 0x00, 0x97, 0x00, 0x4C, 0x4A, 0x30, 0x59, 0xC0, 0xE7,
65460x00, 0x8B, 0x01, 0x6C, 0x02, 0xF0, 0x19, 0x80, 0x24, 0x10, 0x8F, 0x89, 0x4C,
65470x02, 0x38, 0x09, 0xC0, 0x24, 0x00, 0x93, 0x05, 0x7C, 0x02, 0xF0, 0x09, 0xC0,
65480x23, 0x04, 0x93, 0x01, 0x6D, 0x02, 0x30, 0x59, 0x40, 0xA4, 0x00, 0x93, 0x00,
65490x4C, 0x02, 0xF0, 0x09, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
65500x01, 0x20, 0x24, 0x00, 0x91, 0x00, 0x44, 0x0A, 0x10, 0x19, 0x40, 0x27, 0x00,
65510x91, 0x03, 0x44, 0x02, 0xD0, 0x19, 0x40, 0x24, 0x00, 0x9D, 0x01, 0x6C, 0x02,
65520x10, 0x09, 0x40, 0x24, 0x00, 0x91, 0x03, 0x74, 0x06, 0xD0, 0x09, 0x40, 0x27,
65530x20, 0x9B, 0x00, 0x2C, 0x12, 0x50, 0x79, 0x50, 0x60, 0x00, 0x9B, 0x00, 0x44,
65540x02, 0xD2, 0x09, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
65550xA0, 0x20, 0x40, 0x95, 0x20, 0x04, 0x0A, 0x56, 0x29, 0x40, 0x27, 0x40, 0x99,
65560xA8, 0x64, 0x06, 0xD8, 0x89, 0x60, 0x25, 0xA0, 0x9D, 0x00, 0x04, 0x02, 0x14,
65570x0D, 0x40, 0x26, 0x00, 0xD1, 0x00, 0x74, 0x06, 0xD8, 0x09, 0x40, 0x77, 0x00,
65580x91, 0x08, 0x66, 0x92, 0x12, 0x08, 0x42, 0x25, 0xA0, 0x99, 0x00, 0x44, 0x02,
65590xD0, 0x09, 0x40, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
65600x20, 0x01, 0x81, 0x04, 0x04, 0x12, 0x50, 0x48, 0x40, 0x23, 0x01, 0x81, 0x04,
65610x00, 0x06, 0xD0, 0x48, 0x50, 0x21, 0x01, 0x8D, 0x04, 0x25, 0x13, 0x10, 0x48,
65620x40, 0x22, 0x11, 0xC1, 0x00, 0x36, 0x12, 0xD0, 0x08, 0x42, 0x23, 0x21, 0x99,
65630x00, 0x64, 0x02, 0x50, 0x48, 0x40, 0x25, 0x00, 0x89, 0x04, 0x05, 0x02, 0xD0,
65640x48, 0x41, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x83,
65650x02, 0x07, 0x0A, 0x0C, 0x28, 0x72, 0xA1, 0x40, 0x07, 0x00, 0x5B, 0x00, 0x6C,
65660x28, 0xF0, 0xA1, 0xC0, 0x05, 0x00, 0x1F, 0x0A, 0x4C, 0x28, 0x10, 0xA1, 0x50,
65670x86, 0x02, 0x13, 0x0A, 0x7C, 0x01, 0xD1, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x00,
65680x6D, 0x28, 0x30, 0xA1, 0xC0, 0x05, 0x00, 0x1B, 0x00, 0x4C, 0x08, 0xF0, 0x01,
65690xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x3F, 0x02,
65700xBF, 0x08, 0xFD, 0x22, 0xB0, 0x8B, 0xC0, 0x27, 0x42, 0x9F, 0x08, 0xFC, 0x02,
65710xF0, 0x8B, 0xC8, 0x2E, 0x12, 0xBF, 0x48, 0xFC, 0x22, 0xF0, 0x8B, 0xC0, 0x2D,
65720x42, 0xBF, 0x00, 0xFC, 0x22, 0xF0, 0x0A, 0xC0, 0x2F, 0x02, 0xBF, 0x00, 0xBD,
65730x02, 0xF0, 0x8B, 0xC0, 0x2E, 0x00, 0xBF, 0x08, 0xBC, 0x42, 0xF0, 0x09, 0xC0,
65740x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x3F, 0x05, 0xB3,
65750x0C, 0xCC, 0x02, 0x30, 0x0B, 0xC0, 0x2F, 0x00, 0xA3, 0x04, 0x8C, 0x02, 0xF0,
65760xCB, 0xC0, 0x2C, 0x00, 0xB3, 0x00, 0xCC, 0x22, 0xF0, 0x4B, 0xC0, 0x24, 0x05,
65770xAF, 0x08, 0xFC, 0x16, 0xF0, 0x09, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0xFC, 0x02,
65780xF0, 0xCA, 0xC0, 0x3C, 0x00, 0xF3, 0x00, 0x7C, 0x22, 0xF0, 0x19, 0xC0, 0x67,
65790x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x01, 0x51, 0x0C,
65800x4C, 0x48, 0x14, 0x01, 0xC1, 0x04, 0x02, 0x11, 0x60, 0x44, 0x10, 0x70, 0xC0,
65810x40, 0x05, 0x00, 0x11, 0x10, 0x44, 0x20, 0xD0, 0x05, 0x40, 0x04, 0x01, 0x1D,
65820x04, 0x74, 0x08, 0xC0, 0x01, 0x40, 0x07, 0x02, 0x1D, 0x00, 0x74, 0x10, 0xD2,
65830xC1, 0x40, 0x04, 0x00, 0x55, 0x00, 0x74, 0x04, 0xD0, 0x01, 0x40, 0x73, 0x60,
65840x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x05, 0x81, 0x04, 0x24,
65850x32, 0x10, 0x88, 0x40, 0x21, 0x00, 0x81, 0x08, 0x04, 0x52, 0xD2, 0x48, 0x40,
65860x20, 0x00, 0x81, 0x00, 0x04, 0x06, 0xD0, 0x88, 0x44, 0x20, 0x05, 0x8D, 0x04,
65870x34, 0x22, 0xD8, 0x18, 0x40, 0x63, 0x00, 0x8D, 0x20, 0x34, 0x52, 0xD0, 0x48,
65880x40, 0x20, 0x00, 0x81, 0x08, 0x34, 0x12, 0xD0, 0x28, 0x40, 0x4B, 0x00, 0x04,
65890x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x65, 0x58, 0x81, 0x00, 0x44, 0x02,
65900x10, 0x09, 0x40, 0x26, 0x00, 0x91, 0x00, 0x45, 0x12, 0x50, 0x08, 0x50, 0x25,
65910x00, 0x91, 0x04, 0x45, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x20, 0x9D, 0x24, 0x74,
65920x83, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x06, 0x74, 0x02, 0xD0, 0x49, 0x41,
65930x24, 0x00, 0x95, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x00, 0x04, 0x00,
65940x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x25, 0x00, 0x93, 0x82, 0x6D, 0x1A, 0x32,
65950x09, 0xC0, 0x25, 0x40, 0x93, 0x00, 0x4C, 0x06, 0xF2, 0x09, 0xC0, 0x24, 0x00,
65960x93, 0x00, 0x4C, 0x06, 0xF0, 0xB9, 0xC0, 0x24, 0x00, 0x9F, 0x06, 0x7C, 0x02,
65970xF0, 0x09, 0xC0, 0xE7, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xD0, 0x24,
65980x02, 0x93, 0x09, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x17, 0xA0, 0x04, 0x00, 0x00,
65990x00, 0x00, 0x00, 0x16, 0x08, 0x25, 0x00, 0x9F, 0x03, 0x7C, 0x26, 0xF0, 0x09,
66000xC1, 0x21, 0x00, 0x8F, 0x00, 0x7C, 0x46, 0x70, 0x09, 0x40, 0x26, 0x40, 0x9F,
66010x01, 0x7C, 0x0A, 0xF0, 0x18, 0xD0, 0x67, 0x01, 0x9F, 0x00, 0x7C, 0x12, 0xF0,
66020x39, 0xC0, 0x27, 0x01, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x19, 0xD0, 0x27, 0x80,
66030x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00,
66040x00, 0x00, 0x14, 0x08, 0x85, 0x00, 0x13, 0x02, 0x4C, 0x00, 0xB0, 0x01, 0xC0,
66050x04, 0x40, 0x13, 0x04, 0x4C, 0x20, 0x30, 0x01, 0xC0, 0x04, 0x80, 0x1F, 0x00,
66060x4C, 0x00, 0x34, 0x01, 0xC0, 0x04, 0x00, 0x13, 0x82, 0x4C, 0x84, 0xB0, 0x01,
66070xC0, 0x07, 0x00, 0x1F, 0x02, 0x7C, 0x40, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x1F,
66080x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
66090x00, 0x10, 0x00, 0x14, 0x48, 0x51, 0x00, 0xD4, 0x01, 0x34, 0x07, 0x40, 0x14,
66100x00, 0x71, 0x00, 0xC4, 0x01, 0x10, 0x07, 0x50, 0x10, 0x00, 0x5D, 0x10, 0xFC,
66110x11, 0x12, 0x05, 0x40, 0x14, 0x00, 0x71, 0x02, 0xC0, 0x05, 0x30, 0x05, 0x40,
66120x57, 0x04, 0x5D, 0x01, 0xF4, 0x41, 0xD0, 0x07, 0x40, 0x10, 0x00, 0x5D, 0x01,
66130x74, 0x01, 0x10, 0x05, 0x40, 0x53, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
66140x10, 0xA0, 0x36, 0x00, 0xC1, 0x00, 0x44, 0x03, 0x10, 0x2D, 0x40, 0x30, 0x00,
66150x81, 0x00, 0x04, 0x0F, 0xD4, 0x1C, 0x40, 0x30, 0x00, 0xDD, 0x00, 0x04, 0x07,
66160x10, 0x1C, 0x40, 0x30, 0x20, 0xC1, 0x12, 0x00, 0x03, 0x0C, 0x0C, 0x40, 0x23,
66170x00, 0xCD, 0x01, 0x34, 0x01, 0x90, 0x09, 0x40, 0x20, 0x00, 0x8D, 0x00, 0x34,
66180x03, 0x10, 0x0C, 0x40, 0x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
66190x80, 0x30, 0x08, 0xC1, 0x00, 0x94, 0x03, 0x10, 0x02, 0x40, 0x38, 0x00, 0xA1,
66200x02, 0xC4, 0x07, 0xD0, 0x0E, 0x41, 0x38, 0x04, 0xCD, 0x00, 0xB4, 0x05, 0x10,
66210x2C, 0x40, 0x7A, 0x00, 0xF1, 0x01, 0x84, 0x0F, 0x10, 0x0E, 0x40, 0x3B, 0x00,
66220xED, 0x10, 0xB4, 0x01, 0xD0, 0x03, 0x40, 0x28, 0x00, 0xAD, 0x02, 0xB4, 0x07,
66230x10, 0x0E, 0x40, 0x07, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18,
66240x78, 0x40, 0xE3, 0x01, 0xCC, 0x04, 0x33, 0x12, 0x50, 0x60, 0x20, 0x23, 0x01,
66250x8D, 0x07, 0xF0, 0x1A, 0xC2, 0x78, 0x00, 0xED, 0x01, 0xC8, 0x85, 0x30, 0x1E,
66260xD0, 0x7C, 0x41, 0xE3, 0x01, 0x8D, 0x06, 0x30, 0x1E, 0xC0, 0x7B, 0x00, 0xEF,
66270x01, 0xBC, 0x07, 0xF0, 0x1E, 0xD0, 0x78, 0x00, 0xAD, 0x01, 0xFC, 0x07, 0x34,
66280x1E, 0xC0, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0xB5,
66290x05, 0xDF, 0x02, 0x7C, 0x02, 0x70, 0x00, 0xC0, 0x37, 0x00, 0x1C, 0x00, 0x7C,
66300x03, 0x30, 0x29, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x81, 0xF0, 0x0D, 0xC0,
66310x35, 0x02, 0xDF, 0x00, 0x3D, 0x00, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00,
66320x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
66330xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x7D, 0x00,
66340xF3, 0x03, 0xCC, 0x13, 0x30, 0x17, 0xC0, 0x7C, 0x10, 0xF3, 0x01, 0xFC, 0x07,
66350xF0, 0x3F, 0xC0, 0x78, 0x00, 0xF3, 0x01, 0xCC, 0x06, 0x30, 0x1A, 0xC0, 0x7D,
66360x00, 0xFF, 0x01, 0xCC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0xFF, 0x01, 0xFC,
66370x27, 0xF0, 0x1B, 0xD0, 0x6C, 0x00, 0xBF, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0,
66380x0B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x39, 0x40, 0xF1,
66390x00, 0x86, 0x03, 0x10, 0x02, 0x40, 0x38, 0x02, 0xE1, 0x04, 0xB4, 0x00, 0xD0,
66400x8E, 0x40, 0x38, 0x00, 0xB1, 0x00, 0x84, 0x01, 0x10, 0x8A, 0x43, 0x38, 0x08,
66410xED, 0x02, 0x84, 0x02, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x23,
66420xD0, 0x82, 0x40, 0x28, 0x00, 0xED, 0x08, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x57,
66430x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x02, 0xE1, 0x00,
66440x84, 0x20, 0x10, 0x00, 0x41, 0x20, 0x00, 0xA9, 0x40, 0xB4, 0x03, 0xD0, 0x08,
66450x40, 0x38, 0x06, 0xA1, 0x00, 0x84, 0x60, 0x10, 0x0B, 0x40, 0x38, 0x04, 0xED,
66460x00, 0x04, 0x00, 0x50, 0x2E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x23, 0xD8,
66470x0E, 0x40, 0x3A, 0x00, 0xA9, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x23, 0x00,
66480x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x35, 0x00, 0xC1, 0x0A, 0x44,
66490x42, 0x10, 0x00, 0x48, 0x30, 0x00, 0x89, 0x00, 0x34, 0x07, 0xD0, 0xB9, 0x40,
66500x70, 0x48, 0x91, 0x01, 0x04, 0x01, 0x10, 0x28, 0x40, 0x30, 0x00, 0xDD, 0x10,
66510x04, 0x24, 0x10, 0x0C, 0x40, 0x33, 0x90, 0xCD, 0x02, 0x34, 0x02, 0xD0, 0x2D,
66520x40, 0x32, 0x00, 0xCD, 0x03, 0x34, 0x83, 0xD2, 0x0C, 0x40, 0x5B, 0x00, 0x04,
66530x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x25, 0x00, 0xD3, 0x03, 0x4D, 0x0B,
66540x30, 0x10, 0xC0, 0x34, 0x50, 0x9B, 0x00, 0x7C, 0x47, 0xF0, 0x2D, 0xD0, 0x60,
66550x00, 0xD3, 0x05, 0x4D, 0x0E, 0x34, 0x19, 0xD0, 0x7C, 0x00, 0xDF, 0x01, 0x4D,
66560x22, 0x70, 0x0D, 0xC0, 0xB7, 0x02, 0xCF, 0x0A, 0x7C, 0x01, 0xF0, 0xF5, 0xD0,
66570x66, 0x00, 0x9F, 0x09, 0xFC, 0x03, 0xF0, 0x0D, 0xC0, 0x57, 0x20, 0x06, 0x00,
66580x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x77, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0,
66590x21, 0xC0, 0x37, 0x00, 0x97, 0x00, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0x27, 0x00,
66600xDF, 0x00, 0x7C, 0x40, 0xF1, 0x08, 0xC1, 0x37, 0x00, 0xDF, 0x01, 0x7C, 0x02,
66610x70, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC0, 0x25,
66620x02, 0x9F, 0x08, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0x0C, 0x00, 0x00,
66630x00, 0x00, 0x00, 0x80, 0x08, 0x2F, 0x40, 0xF3, 0x10, 0xDC, 0x04, 0x30, 0x03,
66640xC0, 0xF8, 0x00, 0x33, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC1, 0xAC, 0x40, 0xF3,
66650x00, 0x4C, 0x04, 0xF0, 0x0B, 0xE0, 0x3C, 0x00, 0xBF, 0x00, 0xCC, 0x00, 0xD0,
66660x0F, 0xC0, 0x7F, 0x01, 0xB7, 0x01, 0xCC, 0x03, 0xF0, 0x3F, 0xC0, 0xEC, 0x00,
66670xBF, 0x03, 0xCC, 0x03, 0xF0, 0x0F, 0x40, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00,
66680x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0x91, 0x01, 0x74, 0x02, 0x10, 0x71, 0x40,
66690x74, 0x00, 0x11, 0x40, 0x74, 0x03, 0xD0, 0x31, 0x41, 0x24, 0x50, 0xD1, 0x08,
66700x44, 0x00, 0xD0, 0x99, 0x40, 0x34, 0x00, 0x9C, 0x03, 0x44, 0x0C, 0xD0, 0x0D,
66710x48, 0x37, 0x00, 0x9D, 0x09, 0x44, 0x07, 0xD0, 0x1D, 0x40, 0x24, 0x00, 0x8D,
66720x00, 0x45, 0x03, 0xD0, 0x0D, 0x40, 0x17, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00,
66730x00, 0x01, 0xA0, 0x66, 0x00, 0xD1, 0x08, 0x74, 0x23, 0x90, 0x11, 0x40, 0x34,
66740x80, 0xD1, 0x00, 0x74, 0x03, 0xD0, 0x1D, 0x40, 0x34, 0x00, 0x91, 0x00, 0x44,
66750x12, 0xD0, 0x09, 0x40, 0x36, 0x00, 0x5D, 0x01, 0x44, 0x06, 0xD1, 0x0D, 0x40,
66760x37, 0x00, 0xDD, 0x00, 0x74, 0x07, 0xD0, 0x05, 0x41, 0x24, 0x00, 0xDD, 0x00,
66770x44, 0x03, 0xD0, 0x0D, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
66780x10, 0x00, 0x30, 0x00, 0x81, 0x00, 0x34, 0x02, 0x90, 0x00, 0x42, 0x30, 0xC0,
66790xC1, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x50, 0x30, 0x00, 0x81, 0x00, 0x04, 0x00,
66800xD0, 0x08, 0x48, 0x30, 0x00, 0xCD, 0x00, 0x04, 0x02, 0xD8, 0x0C, 0x42, 0x33,
66810x00, 0xCD, 0x80, 0x35, 0x03, 0xD0, 0x0C, 0x70, 0x20, 0x00, 0xDD, 0x00, 0x04,
66820x03, 0xD0, 0x0C, 0x40, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66830x18, 0x2E, 0x00, 0xF3, 0x00, 0x1C, 0x00, 0xB0, 0x01, 0xD0, 0x34, 0x00, 0x93,
66840x00, 0x7C, 0x03, 0xF2, 0x0B, 0xC0, 0x34, 0x00, 0x93, 0x80, 0x4C, 0x80, 0xF0,
66850x09, 0xD0, 0x34, 0x00, 0x9F, 0x00, 0x4D, 0x00, 0xF0, 0x0D, 0xC0, 0x37, 0x20,
66860xD7, 0x00, 0x7C, 0x03, 0xF0, 0x0C, 0xD0, 0x24, 0x00, 0xDF, 0x00, 0x4C, 0x03,
66870xF0, 0x0D, 0xC0, 0x07, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8,
66880x3F, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0x70, 0x03, 0xC0, 0x3F, 0x00, 0xBF, 0x00,
66890xFC, 0x03, 0xF0, 0x03, 0xC0, 0x3F, 0x00, 0xBF, 0x40, 0xFC, 0x00, 0xF0, 0x0B,
66900xC0, 0x3F, 0x00, 0xAF, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x3F, 0x20, 0xFF,
66910x00, 0xCC, 0x03, 0xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0,
66920x0F, 0xC8, 0x17, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x2F,
66930x00, 0xBF, 0x0C, 0xCC, 0x12, 0xF0, 0x1F, 0xC0, 0xBE, 0x09, 0xBF, 0xC0, 0x9D,
66940x40, 0xB0, 0x8F, 0xC0, 0x2F, 0x01, 0xB3, 0x10, 0xDC, 0xE2, 0x30, 0x1F, 0xC0,
66950x3F, 0x01, 0xF3, 0x02, 0xCC, 0x02, 0x33, 0x16, 0xC4, 0x3C, 0x00, 0xEF, 0x01,
66960xCC, 0x33, 0x30, 0x1F, 0xC0, 0x5A, 0x00, 0xFB, 0x01, 0xAC, 0x27, 0xB0, 0x0B,
66970xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x07, 0x00,
66980x1D, 0x0E, 0x44, 0x12, 0xD0, 0x4D, 0x40, 0x3C, 0x03, 0x1D, 0x03, 0x44, 0x0F,
66990x10, 0x2F, 0x40, 0x27, 0x05, 0xD1, 0x06, 0x44, 0x12, 0x10, 0x1D, 0x48, 0xBF,
67000x00, 0xF1, 0x06, 0x44, 0x2C, 0x10, 0x05, 0x41, 0xBC, 0x02, 0xDD, 0x01, 0xD4,
67010x0B, 0x10, 0x1D, 0x40, 0x74, 0x00, 0xD1, 0x01, 0x44, 0x03, 0x10, 0x01, 0x40,
67020x0F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0xA3, 0x05, 0x8D,
67030x01, 0x06, 0x62, 0xD0, 0x09, 0x41, 0x30, 0x20, 0x8D, 0x08, 0x15, 0x03, 0x92,
67040xCC, 0x40, 0x43, 0x03, 0xC5, 0x10, 0x34, 0x10, 0x12, 0x0C, 0x42, 0xB2, 0x25,
67050xC1, 0x8C, 0x04, 0x04, 0x50, 0x01, 0x50, 0x30, 0x0C, 0x5D, 0x00, 0x24, 0x33,
67060x10, 0x0C, 0x40, 0x06, 0x00, 0xD9, 0xA0, 0x64, 0x12, 0x90, 0x08, 0x40, 0x4F,
67070x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x65, 0x00, 0x1D, 0x01,
67080x44, 0x06, 0xD0, 0x19, 0x50, 0x34, 0x00, 0x9D, 0x03, 0x55, 0x0F, 0x10, 0x0D,
67090x42, 0x67, 0x00, 0xD5, 0x00, 0x64, 0x0C, 0x10, 0x0D, 0x40, 0x37, 0x00, 0xD1,
67100x00, 0x44, 0x04, 0x40, 0x05, 0x40, 0x34, 0x00, 0xDD, 0x80, 0x74, 0x03, 0x10,
67110x0D, 0x40, 0x74, 0x00, 0x59, 0x01, 0x44, 0x03, 0x18, 0x11, 0x41, 0x0F, 0xA0,
67120x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x67, 0x04, 0x1F, 0x01, 0x4C,
67130x14, 0xF0, 0x5C, 0xC0, 0x34, 0x00, 0x9F, 0x01, 0x5D, 0x0F, 0xB0, 0x0D, 0xC0,
67140x47, 0x00, 0xD7, 0x00, 0x7C, 0x06, 0x30, 0x0D, 0xE0, 0x37, 0x00, 0xD1, 0x20,
67150x4C, 0x06, 0x60, 0x04, 0xC0, 0x34, 0x00, 0x9F, 0x01, 0x6E, 0x03, 0x30, 0x0C,
67160xC0, 0x76, 0x00, 0xDB, 0x05, 0x2C, 0x03, 0xB0, 0x19, 0x44, 0x23, 0x00, 0x0E,
67170x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x05, 0x00, 0x1F, 0x10, 0xFC, 0x02,
67180xF0, 0x0F, 0xC0, 0x3F, 0x04, 0x3F, 0x40, 0xAC, 0x03, 0xF2, 0x0F, 0xC0, 0x07,
67190x0C, 0xEB, 0x05, 0x1C, 0x02, 0xF0, 0x0F, 0xC8, 0x3F, 0x00, 0xFF, 0x00, 0x3C,
67200x00, 0xB2, 0x0F, 0xC0, 0x3F, 0x00, 0xBF, 0x89, 0x9C, 0x03, 0xF0, 0x5F, 0xC8,
67210x3F, 0x40, 0xF7, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x1F, 0x20, 0x06, 0x00,
67220x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0xA5, 0x80, 0x93, 0x00, 0x4C, 0x00, 0xF0,
67230x09, 0xC0, 0x37, 0x00, 0x93, 0x80, 0x6C, 0x0B, 0x3C, 0x0D, 0xC0, 0x04, 0x00,
67240xD3, 0x00, 0x7C, 0x02, 0x30, 0x0D, 0xC0, 0x32, 0x00, 0xDB, 0x00, 0x4C, 0x02,
67250x31, 0x0D, 0xE0, 0x34, 0x10, 0x93, 0x02, 0x4C, 0x03, 0x34, 0x4D, 0xC0, 0x74,
67260x00, 0x93, 0x00, 0x4C, 0x02, 0xF0, 0x09, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00,
67270x00, 0x00, 0x00, 0x13, 0xA0, 0x24, 0x10, 0x9B, 0x06, 0x44, 0x02, 0xD0, 0x09,
67280x40, 0x3F, 0x00, 0x81, 0x0B, 0x68, 0x07, 0xB0, 0x1F, 0xC0, 0xE4, 0x00, 0xD0,
67290x00, 0x74, 0x02, 0x10, 0x0D, 0x48, 0x3F, 0x00, 0xFB, 0x10, 0x44, 0x02, 0x00,
67300x0D, 0xC0, 0x3F, 0x00, 0x81, 0x81, 0xC4, 0x2B, 0x10, 0x2D, 0x40, 0x70, 0x00,
67310x05, 0x05, 0x6C, 0x2F, 0x10, 0x49, 0xC0, 0x6E, 0x00, 0x02, 0x00, 0x00, 0x00,
67320x00, 0x00, 0x07, 0xA0, 0x02, 0x00, 0x91, 0x02, 0x24, 0x00, 0xD0, 0x08, 0x64,
67330xF3, 0x00, 0x01, 0x03, 0x20, 0x07, 0x10, 0x5C, 0x48, 0xE4, 0x00, 0xC5, 0x00,
67340x34, 0x00, 0x11, 0x0C, 0x40, 0x31, 0x02, 0xD5, 0x01, 0x04, 0x02, 0x50, 0x14,
67350x40, 0x70, 0x01, 0xC1, 0x00, 0x24, 0x23, 0x90, 0x2C, 0x40, 0x10, 0x00, 0xC1,
67360x01, 0x04, 0x07, 0x50, 0x60, 0x44, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67370x00, 0x04, 0x80, 0x58, 0x00, 0xE9, 0x01, 0xA4, 0x05, 0xD0, 0x1A, 0x60, 0x7B,
67380x04, 0x61, 0x01, 0xE4, 0x07, 0x94, 0x1E, 0x40, 0x78, 0x00, 0xE5, 0x01, 0xB4,
67390x07, 0x10, 0x1E, 0x00, 0xFB, 0x00, 0xED, 0x03, 0x84, 0x07, 0x58, 0x37, 0x41,
67400x79, 0x04, 0xF1, 0x00, 0xA0, 0x07, 0x91, 0x0E, 0x40, 0x78, 0x00, 0xF5, 0x01,
67410xE4, 0x27, 0x18, 0x12, 0x48, 0x3E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67420x12, 0x10, 0x10, 0x00, 0xC1, 0x00, 0x24, 0x03, 0xF0, 0x08, 0xC0, 0x37, 0x00,
67430x43, 0x14, 0x2C, 0x43, 0x10, 0x8D, 0xC1, 0x10, 0x04, 0xC7, 0x00, 0x34, 0x21,
67440x30, 0x0C, 0xC0, 0x37, 0x00, 0xD7, 0x88, 0x0C, 0x01, 0x70, 0x00, 0x40, 0x34,
67450x00, 0xC3, 0x18, 0x64, 0x13, 0xB0, 0x8C, 0x40, 0x10, 0x00, 0xC3, 0x00, 0x0C,
67460x42, 0x70, 0x09, 0xC0, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
67470x98, 0x3D, 0x20, 0xF7, 0x00, 0xDC, 0x03, 0xF0, 0x0B, 0xC0, 0x3F, 0x40, 0xEF,
67480x00, 0xFC, 0x23, 0xF5, 0x0F, 0xC4, 0x35, 0x00, 0xFB, 0x00, 0xFC, 0x03, 0xF0,
67490x0F, 0xC0, 0xBF, 0x02, 0xF3, 0x00, 0xFC, 0x01, 0xB0, 0x07, 0xC0, 0x3F, 0x00,
67500xFF, 0x0C, 0xDC, 0x03, 0x70, 0x4E, 0xC0, 0x3F, 0x00, 0xEF, 0x00, 0xFE, 0x83,
67510x70, 0x07, 0xC8, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0,
67520x37, 0x80, 0x5B, 0x00, 0x5C, 0x01, 0x34, 0x09, 0xC0, 0xB7, 0x04, 0xCF, 0x80,
67530x5C, 0x03, 0xF8, 0x4D, 0xC9, 0x37, 0x00, 0xDF, 0x01, 0x4C, 0x01, 0xF0, 0x0D,
67540xC0, 0x37, 0x03, 0xDF, 0x02, 0x7E, 0x03, 0xF0, 0x05, 0xC0, 0xB6, 0x02, 0xDF,
67550x00, 0x5C, 0x5B, 0xF0, 0x1D, 0xC0, 0x36, 0x00, 0xCF, 0x20, 0x4C, 0x03, 0x22,
67560x01, 0xC4, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x1D,
67570x08, 0x63, 0x00, 0xB4, 0x01, 0x10, 0x0A, 0x40, 0xBB, 0x11, 0x6D, 0x00, 0x94,
67580x03, 0x30, 0x6E, 0x48, 0x3B, 0x00, 0xED, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40,
67590x3B, 0x01, 0xED, 0x48, 0xB4, 0x03, 0xD0, 0x0F, 0x40, 0x38, 0x04, 0xAD, 0x00,
67600xB4, 0x0B, 0xD0, 0x0E, 0x40, 0x38, 0x00, 0xED, 0x80, 0xD4, 0x83, 0x10, 0x06,
67610xC0, 0x4E, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x00,
67620xE1, 0x01, 0xB4, 0x47, 0x10, 0x1A, 0x40, 0x7B, 0x00, 0xED, 0x11, 0xD4, 0x47,
67630x50, 0x1E, 0x48, 0x5B, 0x00, 0xED, 0x01, 0xA5, 0x05, 0xD0, 0x1E, 0x40, 0x7B,
67640x00, 0xED, 0x09, 0xB4, 0x07, 0xD2, 0x1E, 0x55, 0x78, 0x00, 0xAD, 0x01, 0xB4,
67650x07, 0xD0, 0x1B, 0x40, 0x7A, 0x00, 0xF5, 0x01, 0x84, 0x06, 0x14, 0x18, 0x40,
67660x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x10, 0xC1,
67670x0D, 0x34, 0x07, 0x90, 0x00, 0x40, 0x33, 0x00, 0xCD, 0x03, 0x14, 0x0B, 0x90,
67680x0C, 0x40, 0xF3, 0x04, 0xCD, 0x08, 0x04, 0x07, 0xD0, 0x0C, 0x40, 0x37, 0x20,
67690xCD, 0x00, 0x34, 0x27, 0xD0, 0x4C, 0x40, 0x30, 0x00, 0x8D, 0x04, 0x34, 0x03,
67700xD0, 0x18, 0x40, 0x70, 0x08, 0xCD, 0x01, 0x14, 0x03, 0x10, 0xAD, 0x43, 0x5A,
67710x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x1D, 0x04, 0x73, 0x02,
67720xFC, 0x01, 0x30, 0x27, 0xC0, 0x17, 0x10, 0x7F, 0x02, 0xDD, 0xA9, 0x74, 0x05,
67730xC0, 0x9F, 0x00, 0x5F, 0x00, 0xEC, 0x15, 0xF0, 0x05, 0x40, 0x17, 0x80, 0x5F,
67740x00, 0xFC, 0x09, 0xF0, 0x36, 0xC0, 0x14, 0x00, 0x7F, 0x02, 0x7C, 0x01, 0xF9,
67750x15, 0xC2, 0x1E, 0x04, 0x67, 0x81, 0x44, 0x01, 0x10, 0x27, 0xC0, 0x5C, 0x00,
67760x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x47, 0x40, 0x1F, 0x00, 0x7C,
67770x40, 0x70, 0x41, 0xC0, 0x83, 0x00, 0x1F, 0x12, 0x7C, 0x00, 0x74, 0x01, 0xC0,
67780x07, 0x02, 0x1F, 0x00, 0x5C, 0x04, 0xF0, 0x01, 0xC2, 0x87, 0x00, 0x1F, 0x00,
67790x7C, 0x00, 0xF0, 0x01, 0xC0, 0x05, 0x00, 0x1F, 0x0A, 0x7C, 0x00, 0xF0, 0x81,
67800xC0, 0x07, 0x10, 0x1F, 0x08, 0x7C, 0x00, 0xF0, 0x21, 0xC0, 0x4B, 0x20, 0x04,
67810x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x80, 0x93, 0x05, 0x3C, 0x02,
67820x30, 0x09, 0xC0, 0x67, 0x02, 0x83, 0x00, 0x4C, 0x02, 0xB0, 0x28, 0xC0, 0x64,
67830x01, 0x9E, 0x00, 0x78, 0x02, 0x30, 0x09, 0xC0, 0xA7, 0x40, 0x9B, 0x01, 0x7C,
67840x42, 0xF0, 0x59, 0xC0, 0x20, 0x01, 0x93, 0x42, 0x7C, 0x82, 0xF0, 0x39, 0xC0,
67850x27, 0x04, 0x97, 0x08, 0x6C, 0x16, 0x30, 0x89, 0xC0, 0x40, 0x20, 0x04, 0x00,
67860x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x26, 0x00, 0x91, 0x01, 0x74, 0x02, 0x10,
67870x09, 0xC0, 0xA7, 0x04, 0x91, 0x86, 0x0C, 0x02, 0xB0, 0x09, 0x40, 0x64, 0x00,
67880x9D, 0x00, 0x7C, 0x02, 0x10, 0x09, 0x40, 0xE7, 0x00, 0x91, 0x01, 0x74, 0x02,
67890xD0, 0x49, 0xC0, 0xE6, 0x04, 0x91, 0x20, 0x74, 0x0E, 0xD0, 0x29, 0x40, 0x23,
67900x40, 0x9B, 0x41, 0x44, 0x46, 0x14, 0x39, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00,
67910x00, 0x00, 0x00, 0x18, 0xA0, 0x20, 0x00, 0x91, 0x00, 0x74, 0x02, 0x10, 0x09,
67920x60, 0x27, 0x00, 0x91, 0x00, 0x65, 0x22, 0x94, 0x09, 0x58, 0x26, 0x00, 0x9D,
67930x00, 0x36, 0x02, 0x10, 0x09, 0x40, 0x27, 0x00, 0x91, 0x08, 0x74, 0x02, 0xD0,
67940x09, 0x60, 0x24, 0x00, 0xD1, 0x00, 0x74, 0x22, 0xD0, 0x09, 0x40, 0x67, 0x00,
67950x95, 0x00, 0x04, 0x02, 0x12, 0x29, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00,
67960x00, 0x00, 0x10, 0x20, 0x20, 0x81, 0x81, 0x05, 0x34, 0x12, 0x10, 0x08, 0x40,
67970x21, 0x09, 0x81, 0x04, 0x44, 0x12, 0x90, 0x58, 0x40, 0x62, 0x01, 0x8D, 0x04,
67980x14, 0x12, 0x10, 0x08, 0x40, 0x23, 0x01, 0xC1, 0x04, 0x34, 0x12, 0xD0, 0x09,
67990x68, 0x22, 0x01, 0xC1, 0x00, 0x36, 0x12, 0xD0, 0x0C, 0x40, 0x23, 0x08, 0x99,
68000x00, 0x05, 0x22, 0x10, 0x48, 0x50, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00,
68010x00, 0x1D, 0xB0, 0x86, 0x02, 0x11, 0x0A, 0x3C, 0x28, 0x30, 0xA1, 0x40, 0x87,
68020x02, 0x13, 0x40, 0x6C, 0x00, 0xB4, 0xA1, 0xC8, 0x86, 0x02, 0x0F, 0x0A, 0x74,
68030x28, 0x34, 0x01, 0x84, 0x97, 0x02, 0x1B, 0x0A, 0x7C, 0x00, 0xD0, 0xA1, 0xC0,
68040x84, 0x42, 0x13, 0x40, 0x7C, 0x29, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x17, 0x00,
68050x4C, 0x08, 0x30, 0xA1, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
68060x19, 0x98, 0x2F, 0x4A, 0xBF, 0x08, 0xFC, 0x22, 0xD4, 0x0B, 0xC0, 0x27, 0x62,
68070xBF, 0x88, 0xBC, 0x22, 0xF4, 0x89, 0xC0, 0x2D, 0x02, 0xBF, 0x08, 0xFC, 0x22,
68080xF0, 0x09, 0xC4, 0x27, 0x02, 0x9F, 0x08, 0xFC, 0x22, 0xF0, 0x0B, 0xC0, 0x27,
68090x02, 0xBF, 0x40, 0x7C, 0x22, 0xD0, 0x0A, 0xC0, 0x2F, 0x80, 0xBF, 0x00, 0xDE,
68100x92, 0xF0, 0x8B, 0xC0, 0x77, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
68110xA0, 0x27, 0x01, 0xB3, 0x14, 0x7C, 0x32, 0x30, 0x09, 0xD0, 0x2C, 0x40, 0xA3,
68120x00, 0x9C, 0x12, 0x30, 0x4B, 0xC1, 0x2C, 0x03, 0x9F, 0x25, 0x7C, 0x02, 0xF0,
68130x09, 0xC0, 0x2D, 0x01, 0xBF, 0x14, 0x4C, 0x12, 0x70, 0x0B, 0xC0, 0x2F, 0x40,
68140xB3, 0x00, 0xFC, 0x12, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0xAB, 0x00, 0x8C, 0x02,
68150xF0, 0x0B, 0xC0, 0x76, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08,
68160x17, 0x0D, 0x11, 0x44, 0x74, 0xB0, 0x10, 0x00, 0x41, 0x04, 0x04, 0x11, 0x08,
68170x44, 0x00, 0x90, 0x41, 0x40, 0x04, 0x03, 0x1D, 0x1A, 0x74, 0x40, 0xD0, 0x01,
68180x40, 0x07, 0x05, 0x1D, 0x04, 0x44, 0x20, 0xD0, 0x01, 0x43, 0x07, 0x04, 0x11,
68190x00, 0x74, 0x50, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x11, 0x40, 0x45, 0x00, 0xD2,
68200x05, 0x40, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23,
68210x03, 0x81, 0x34, 0x34, 0x12, 0x10, 0x48, 0x40, 0x20, 0x02, 0x81, 0x00, 0x54,
68220x27, 0x90, 0x48, 0x41, 0x20, 0x01, 0x8D, 0x04, 0x34, 0x22, 0xD0, 0x08, 0x40,
68230x21, 0x03, 0x8D, 0xB4, 0x04, 0x82, 0x50, 0x48, 0x40, 0x23, 0x02, 0xC5, 0x00,
68240x34, 0x32, 0xD0, 0x08, 0x40, 0x27, 0x80, 0x89, 0x00, 0x24, 0x82, 0xD0, 0x0C,
68250x40, 0x4A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x40,
68260x91, 0x06, 0x74, 0x02, 0x10, 0x29, 0x40, 0x24, 0x00, 0x91, 0x04, 0x44, 0x02,
68270x90, 0x09, 0x50, 0x24, 0x01, 0x9D, 0x08, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27,
68280x00, 0x9D, 0x00, 0x44, 0x02, 0xD0, 0x0D, 0x48, 0x37, 0x00, 0x95, 0x10, 0x74,
68290x82, 0xD0, 0x8D, 0x44, 0x67, 0x88, 0x91, 0x08, 0x64, 0x82, 0xD0, 0x19, 0x40,
68300x62, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x25, 0x00, 0x93,
68310x82, 0x7C, 0x1E, 0x31, 0x09, 0xC0, 0x24, 0x10, 0x93, 0x06, 0x5C, 0x0A, 0x34,
68320x09, 0xC4, 0x24, 0x01, 0x9E, 0x00, 0x7C, 0x32, 0xF0, 0x09, 0xC0, 0x25, 0x00,
68330x9F, 0x00, 0x4C, 0x1E, 0x70, 0xE9, 0xC0, 0x27, 0x00, 0x97, 0x00, 0x74, 0x02,
68340xF0, 0x09, 0xC0, 0x23, 0x00, 0x9B, 0x04, 0x6E, 0x26, 0xD2, 0x09, 0xC0, 0x16,
68350x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xE1, 0x00, 0x9F, 0x00,
68360x7C, 0x16, 0xF6, 0x99, 0xC0, 0x23, 0x28, 0x9F, 0x20, 0x7C, 0x12, 0x70, 0x09,
68370xC5, 0x27, 0x0C, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xE0, 0x27, 0xA0, 0x8F,
68380x00, 0x7D, 0x12, 0xF0, 0x19, 0xC3, 0x27, 0x00, 0x9B, 0x02, 0x7C, 0x42, 0xF0,
68390x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x5E, 0x06, 0xF2, 0x08, 0xC0, 0x59, 0x20,
68400x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x02, 0x7C,
68410x00, 0x30, 0x01, 0xC0, 0x06, 0x01, 0x1F, 0x02, 0x6C, 0x00, 0xB0, 0x00, 0xC0,
68420x07, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x01, 0xC0, 0x07, 0x04, 0x13, 0x00,
68430x7C, 0x08, 0xF0, 0x21, 0xC0, 0x06, 0x41, 0x13, 0x00, 0x4C, 0x00, 0x31, 0x01,
68440xC1, 0x07, 0x20, 0x1F, 0x02, 0x4D, 0x00, 0x70, 0x01, 0xC1, 0x50, 0x20, 0x04,
68450x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x14, 0x00, 0x7D, 0x02, 0x74, 0x01,
68460x12, 0x05, 0xC0, 0x9C, 0x04, 0x6D, 0x21, 0x04, 0x81, 0x10, 0x57, 0x40, 0x5F,
68470x01, 0x5D, 0x80, 0x74, 0x01, 0xD0, 0x05, 0x42, 0x1F, 0x20, 0x71, 0x08, 0x74,
68480x01, 0xD0, 0x57, 0xC0, 0x1C, 0x01, 0x71, 0x00, 0xC4, 0x05, 0x10, 0x27, 0xC1,
68490x9D, 0x04, 0x41, 0x05, 0xC4, 0xAD, 0x10, 0x07, 0x50, 0x40, 0x00, 0x02, 0x00,
68500x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x13, 0x74, 0x03, 0x10,
68510x0D, 0x42, 0x30, 0x10, 0xCD, 0x04, 0x24, 0x02, 0x90, 0x3C, 0x40, 0x73, 0x00,
68520xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0xF3, 0x00, 0xC1, 0x00, 0x34, 0x03,
68530xD0, 0x0C, 0x40, 0x34, 0x80, 0x49, 0x50, 0x05, 0x07, 0x10, 0x18, 0x40, 0xD3,
68540x01, 0xC5, 0x01, 0x04, 0x07, 0x50, 0x0C, 0x40, 0x40, 0x00, 0x0A, 0x00, 0x00,
68550x00, 0x00, 0x00, 0x04, 0x88, 0x38, 0x02, 0xED, 0x02, 0x34, 0x03, 0x14, 0x4E,
68560x40, 0x38, 0x00, 0xED, 0x02, 0xC4, 0x03, 0x10, 0x0E, 0x42, 0x3B, 0x08, 0xED,
68570x0C, 0xB6, 0x03, 0xD0, 0x0E, 0x40, 0xF3, 0x00, 0xE1, 0x10, 0xB4, 0x03, 0xD0,
68580x1E, 0x40, 0x38, 0x80, 0x69, 0x01, 0x84, 0x45, 0x12, 0x0A, 0x40, 0x19, 0x00,
68590xB1, 0x00, 0xC4, 0x45, 0x10, 0x0A, 0x42, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00,
68600x00, 0x00, 0x14, 0x10, 0x78, 0x00, 0xEF, 0x01, 0xBC, 0x47, 0x30, 0x5E, 0xC2,
68610x78, 0x10, 0x6F, 0x01, 0xAC, 0x07, 0xB0, 0x1E, 0xC0, 0x7B, 0x00, 0xEF, 0x01,
68620xB4, 0x17, 0xF0, 0x1E, 0x80, 0x7B, 0x40, 0xE3, 0x01, 0xB4, 0x07, 0xF0, 0x17,
68630xD0, 0x70, 0x00, 0xEB, 0x01, 0xCC, 0x07, 0x34, 0x1A, 0xC0, 0x5B, 0x00, 0xE7,
68640x01, 0x8C, 0x07, 0x70, 0x17, 0xC0, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
68650x00, 0x10, 0xA8, 0x35, 0x04, 0xDF, 0x00, 0x7C, 0x33, 0xF0, 0x8D, 0xD0, 0x15,
68660x00, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0x05, 0xC4, 0x37, 0x10, 0xDF, 0x06, 0x7C,
68670x53, 0xF0, 0x0D, 0xC4, 0x37, 0x00, 0x5F, 0x00, 0x7C, 0x83, 0xF0, 0x05, 0xC0,
68680x35, 0x00, 0xC7, 0x00, 0x7C, 0x01, 0xF0, 0x09, 0xC4, 0x13, 0x00, 0x97, 0x00,
68690x7C, 0x01, 0xF0, 0x01, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
68700x02, 0xA0, 0x7F, 0x00, 0x7F, 0x21, 0xCC, 0x07, 0xF8, 0xAE, 0xC0, 0x5F, 0x08,
68710xEF, 0x01, 0xCC, 0x07, 0x70, 0x9F, 0xC4, 0x5C, 0x02, 0xF3, 0x0B, 0xCC, 0x47,
68720x31, 0x1F, 0x40, 0x5F, 0x20, 0x7F, 0x01, 0xCC, 0x07, 0xF0, 0x1F, 0xC0, 0x7C,
68730x00, 0xFF, 0x01, 0xFC, 0x07, 0x31, 0x9B, 0xC0, 0x7F, 0x00, 0xEF, 0x01, 0xCF,
68740x36, 0x30, 0xDF, 0xD0, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
68750x88, 0x39, 0x00, 0x7D, 0x10, 0x84, 0x23, 0xD8, 0x4E, 0x04, 0xB8, 0x00, 0xAD,
68760x04, 0x81, 0x03, 0x10, 0xAF, 0x40, 0x1C, 0x02, 0xF1, 0x20, 0xD5, 0x03, 0x14,
68770x0E, 0x40, 0x1A, 0x01, 0x6D, 0x08, 0x85, 0x03, 0xD0, 0x8E, 0x00, 0x39, 0x02,
68780xED, 0x00, 0xA4, 0x11, 0x10, 0x8A, 0x40, 0xBB, 0x01, 0xED, 0x04, 0xDC, 0x20,
68790x10, 0xCA, 0x40, 0x54, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68800x39, 0x00, 0x6D, 0x00, 0x85, 0x03, 0xD0, 0x8F, 0x40, 0x19, 0x00, 0x6D, 0x40,
68810xC0, 0x03, 0x50, 0x0E, 0x42, 0x18, 0x64, 0xE1, 0x00, 0x80, 0x43, 0x10, 0x0E,
68820x40, 0x3A, 0x08, 0xCD, 0x00, 0x84, 0x03, 0xD0, 0x07, 0x40, 0x18, 0x00, 0xED,
68830x00, 0x34, 0x03, 0x12, 0x0A, 0x48, 0x3B, 0x24, 0xFD, 0x20, 0x84, 0x52, 0x12,
68840xCA, 0x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x73,
68850x12, 0x0D, 0x02, 0x04, 0x4B, 0xD0, 0x2C, 0x40, 0x04, 0x00, 0x0D, 0x08, 0x04,
68860x6F, 0x10, 0x08, 0x40, 0x40, 0x00, 0xC1, 0x40, 0x04, 0x0F, 0x10, 0x0C, 0x40,
68870x22, 0x00, 0x0D, 0x00, 0x04, 0x0F, 0xD2, 0x00, 0x40, 0x21, 0x00, 0xCD, 0x85,
68880x24, 0x00, 0x10, 0x08, 0x40, 0x73, 0x11, 0xCD, 0x00, 0x14, 0x04, 0x10, 0x38,
68890x40, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x3D, 0x00,
68900x9F, 0x00, 0xCC, 0x1F, 0xD0, 0x2F, 0x80, 0x25, 0x00, 0x8F, 0x20, 0x4C, 0x0F,
68910x74, 0x01, 0xD2, 0xE4, 0x00, 0xF3, 0x00, 0xC4, 0x07, 0x30, 0x0D, 0xC0, 0x26,
68920x00, 0x9F, 0x00, 0x4C, 0x0B, 0xF0, 0x39, 0xC1, 0x04, 0x00, 0x4F, 0x47, 0x74,
68930x02, 0x34, 0x09, 0xC0, 0xF3, 0x00, 0xDF, 0x00, 0x44, 0x07, 0x34, 0x21, 0x80,
68940x54, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x21, 0x9F,
68950x10, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0xA5, 0x00, 0x9F, 0x10, 0x7D, 0x03, 0xF0,
68960x09, 0xC0, 0xA7, 0x04, 0xDF, 0x01, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x86, 0x00,
68970x9F, 0x02, 0x7C, 0x23, 0xF0, 0x41, 0xC0, 0x87, 0x00, 0x5F, 0x40, 0x6C, 0x02,
68980xF0, 0x29, 0xC0, 0xB7, 0x00, 0x9F, 0x90, 0x5C, 0x09, 0xF0, 0xC9, 0xC0, 0x37,
68990x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x80, 0x3F, 0x00,
69000xFC, 0x03, 0xF0, 0x0F, 0xC1, 0x2F, 0x00, 0x33, 0x89, 0xCC, 0x07, 0x10, 0x03,
69010xC0, 0x0F, 0x00, 0xFF, 0x00, 0xF4, 0x43, 0xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xBF,
69020x00, 0xFC, 0x43, 0xC0, 0x0B, 0xC0, 0x2C, 0x00, 0xFF, 0x00, 0xDC, 0x02, 0xF0,
69030x0B, 0xC0, 0x3F, 0x00, 0xB7, 0x00, 0xFC, 0x07, 0x34, 0x01, 0xC8, 0x07, 0x24,
69040x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x80, 0x9D, 0x07, 0x74,
69050x83, 0xD0, 0x0D, 0x42, 0xE7, 0x20, 0x11, 0x87, 0x04, 0x07, 0xB0, 0x31, 0x40,
69060xE7, 0x00, 0xDD, 0x20, 0x64, 0x03, 0xD0, 0x0D, 0x40, 0x46, 0x00, 0x99, 0x01,
69070x74, 0x83, 0x91, 0x30, 0x40, 0xE5, 0x00, 0xDD, 0x01, 0x44, 0x06, 0xD0, 0x39,
69080x40, 0x77, 0x00, 0x91, 0x00, 0x74, 0x02, 0x10, 0x31, 0x44, 0x87, 0x00, 0x08,
69090x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x36, 0x20, 0x9D, 0x01, 0x74, 0x03,
69100xD0, 0x0D, 0x64, 0x47, 0x40, 0x91, 0x00, 0x44, 0x23, 0x50, 0x11, 0x40, 0x67,
69110x04, 0xDD, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0xC7, 0x00, 0x1D, 0x03, 0x74,
69120x03, 0xD0, 0x19, 0x40, 0x47, 0x00, 0x9D, 0x01, 0x54, 0xC4, 0xD0, 0x1D, 0x40,
69130x77, 0x00, 0xD5, 0x01, 0x34, 0x1A, 0x10, 0x31, 0x40, 0x07, 0x00, 0x0A, 0x00,
69140x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x8D, 0x00, 0x34, 0x03, 0xD0,
69150x0C, 0x60, 0x23, 0x00, 0x81, 0x00, 0x44, 0x03, 0xD4, 0x08, 0x40, 0x23, 0x20,
69160xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x03, 0x00, 0x09, 0x00, 0x34, 0x03,
69170x90, 0x09, 0x40, 0x03, 0x00, 0xCD, 0x00, 0x04, 0x00, 0xD0, 0x0C, 0x40, 0x33,
69180x00, 0xC1, 0x00, 0x34, 0x01, 0x10, 0x08, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00,
69190x00, 0x00, 0x00, 0x00, 0x10, 0x3E, 0x00, 0x1D, 0x00, 0xFC, 0x03, 0xF0, 0x0F,
69200xC0, 0x07, 0x08, 0x93, 0x00, 0x4D, 0x03, 0x70, 0x01, 0xC0, 0x07, 0x00, 0xFF,
69210x00, 0xFC, 0x03, 0xF0, 0x0D, 0xC4, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF0,
69220x09, 0xD0, 0x06, 0x00, 0xDF, 0x00, 0x5C, 0x02, 0xF0, 0x09, 0xC0, 0x37, 0x00,
69230x97, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x07, 0x60, 0x00, 0x00, 0x00, 0x00,
69240x00, 0x00, 0x05, 0xB8, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
69250x2F, 0x00, 0x3F, 0x00, 0xBC, 0x03, 0xA0, 0x0B, 0xC0, 0x2F, 0x00, 0xFE, 0x00,
69260xEC, 0x03, 0xF0, 0x0F, 0xC0, 0x0E, 0x00, 0xBA, 0x00, 0xFC, 0x03, 0xB0, 0x0A,
69270xC0, 0x2D, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x03, 0xC2, 0x2F, 0x00, 0xBF,
69280x00, 0xFC, 0x00, 0xF2, 0x0B, 0xC0, 0x17, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00,
69290x00, 0x03, 0xA0, 0x2F, 0x40, 0x23, 0x10, 0xCD, 0x00, 0x30, 0x03, 0xC0, 0x4C,
69300x40, 0x33, 0x81, 0xCC, 0x24, 0x30, 0x13, 0xD0, 0x2C, 0x05, 0xF3, 0x09, 0xDC,
69310x00, 0x30, 0x4E, 0xC0, 0x2C, 0x00, 0x3F, 0x01, 0xCD, 0x04, 0xF1, 0x13, 0xC0,
69320x4C, 0x08, 0x33, 0x01, 0xFC, 0x04, 0xB0, 0x13, 0xD4, 0x4C, 0x40, 0xF3, 0x00,
69330xCD, 0x07, 0xF0, 0x4F, 0xC1, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
69340x01, 0x00, 0x27, 0x00, 0x51, 0x92, 0x04, 0x08, 0x13, 0x09, 0x40, 0x04, 0x05,
69350x11, 0x10, 0x44, 0x01, 0x10, 0x01, 0x41, 0xA4, 0x05, 0xC1, 0x04, 0x44, 0x2C,
69360x10, 0x3F, 0xC0, 0x64, 0x02, 0x1D, 0x00, 0x64, 0x04, 0xD0, 0x05, 0xC0, 0x04,
69370x20, 0x11, 0x01, 0x74, 0x04, 0x10, 0x01, 0x60, 0x04, 0x00, 0xC1, 0x00, 0x44,
69380x07, 0xD1, 0x2D, 0x40, 0x0C, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
69390xA0, 0x27, 0x00, 0x01, 0x05, 0x06, 0x0C, 0x10, 0x00, 0x40, 0x20, 0x01, 0x81,
69400x00, 0x14, 0x02, 0x10, 0x48, 0x48, 0x21, 0x00, 0x81, 0x04, 0x34, 0x00, 0xD4,
69410x8C, 0x44, 0x30, 0x00, 0x8D, 0x00, 0x34, 0x01, 0xD0, 0x00, 0x42, 0x46, 0x20,
69420x0D, 0x01, 0x74, 0x02, 0x10, 0x08, 0x40, 0x20, 0x00, 0xC9, 0x00, 0x24, 0x03,
69430xD0, 0x0C, 0x40, 0x4C, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA8,
69440x25, 0x02, 0x51, 0x44, 0x14, 0x04, 0x14, 0x1D, 0x40, 0x20, 0x00, 0x80, 0x00,
69450x55, 0x03, 0x14, 0x09, 0x40, 0x64, 0x00, 0x51, 0x00, 0x64, 0x0C, 0xC0, 0x1D,
69460x44, 0x76, 0x04, 0x8D, 0x00, 0x74, 0x89, 0xD0, 0x05, 0x50, 0x04, 0x00, 0x15,
69470x00, 0x74, 0x02, 0x10, 0x08, 0x40, 0x20, 0x00, 0x99, 0x00, 0x44, 0x03, 0xD0,
69480x1C, 0x40, 0x0C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x43,
69490x00, 0x13, 0x00, 0x4C, 0x04, 0x30, 0x31, 0xC2, 0x04, 0x00, 0x13, 0x01, 0x5C,
69500x00, 0x30, 0x11, 0xC0, 0xE4, 0x04, 0xD3, 0x04, 0x7C, 0x0C, 0xF0, 0x35, 0xC0,
69510xE4, 0x00, 0x1F, 0x00, 0x5C, 0x00, 0xF0, 0x21, 0xC0, 0x12, 0x00, 0x57, 0x00,
69520x3C, 0x01, 0xB0, 0x01, 0x40, 0x04, 0x00, 0xDB, 0x00, 0x4C, 0x03, 0xF0, 0x1D,
69530xC0, 0x08, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x4D, 0x00,
69540x7F, 0x00, 0xEC, 0x00, 0xF0, 0x0F, 0xC0, 0x0F, 0x12, 0x3F, 0x09, 0xEC, 0x01,
69550xF0, 0x93, 0x80, 0x2F, 0x50, 0xFF, 0x00, 0x5C, 0x00, 0x30, 0x06, 0xC0, 0x25,
69560x00, 0x3F, 0x08, 0xCC, 0x00, 0xF2, 0x07, 0xC4, 0x1F, 0x00, 0x7B, 0x00, 0xFC,
69570x81, 0xF0, 0x83, 0xC0, 0x0F, 0x02, 0xE7, 0x08, 0xFC, 0x03, 0xF0, 0x0F, 0xD4,
69580x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x25, 0x40, 0x33,
69590x00, 0x4C, 0x00, 0x32, 0x31, 0xC0, 0x64, 0x00, 0x9F, 0x01, 0x4C, 0x02, 0xF0,
69600x09, 0xC0, 0x24, 0x00, 0x53, 0x04, 0x6C, 0x88, 0xB0, 0x2D, 0xC0, 0x34, 0x11,
69610x97, 0x05, 0x7C, 0x01, 0x30, 0x41, 0xC0, 0x17, 0x02, 0x5B, 0x10, 0x4C, 0x03,
69620x30, 0x19, 0xC0, 0x64, 0x00, 0x9F, 0x04, 0x4C, 0x03, 0xF0, 0x15, 0xC0, 0x08,
69630x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x24, 0x20, 0x41, 0x01,
69640x44, 0x14, 0x10, 0xBD, 0x40, 0x64, 0x00, 0x9D, 0x0B, 0x44, 0x2F, 0xD0, 0xA8,
69650xC2, 0x26, 0x00, 0xD1, 0x82, 0x04, 0x00, 0x10, 0xAD, 0x40, 0xB4, 0x00, 0x91,
69660x03, 0x70, 0x09, 0x11, 0x35, 0x40, 0x97, 0x02, 0x51, 0x13, 0x44, 0x43, 0x10,
69670xB9, 0x40, 0x64, 0x00, 0x9D, 0x02, 0x45, 0x13, 0xD0, 0x15, 0x40, 0x6C, 0x00,
69680x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x20, 0x02, 0x01, 0x1A, 0x20,
69690x00, 0x14, 0x21, 0x40, 0x10, 0x00, 0x4D, 0x00, 0x60, 0x2C, 0xD0, 0x14, 0x40,
69700x34, 0x40, 0xD1, 0x02, 0x24, 0x00, 0xD0, 0x2C, 0x40, 0x00, 0x20, 0x45, 0x02,
69710x30, 0x62, 0x10, 0x19, 0x40, 0x21, 0x00, 0x80, 0x41, 0x04, 0x04, 0x10, 0x04,
69720x40, 0x10, 0x00, 0xCD, 0x00, 0x04, 0x07, 0xD0, 0x08, 0x40, 0x1C, 0x00, 0x0A,
69730x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x68, 0x00, 0x31, 0x01, 0xA5, 0x04,
69740x10, 0x1B, 0x40, 0x58, 0x00, 0x6D, 0x01, 0xA4, 0x05, 0xD0, 0x16, 0x40, 0x6A,
69750x00, 0xE1, 0x01, 0x84, 0x24, 0x50, 0x9E, 0x40, 0x58, 0x00, 0x61, 0x01, 0xB6,
69760x06, 0x10, 0x1E, 0x40, 0x6F, 0x00, 0xB1, 0x81, 0xC4, 0x04, 0x10, 0x16, 0x40,
69770x58, 0x00, 0xED, 0x09, 0x84, 0x07, 0xD0, 0x2F, 0x40, 0x74, 0x00, 0x02, 0x00,
69780x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x24, 0x01, 0x03, 0x08, 0x24, 0x00, 0x30,
69790x64, 0xC0, 0x30, 0x00, 0xDF, 0x00, 0x2C, 0x02, 0xF0, 0x0C, 0xC1, 0x14, 0x20,
69800x83, 0x00, 0x2C, 0x20, 0xF2, 0x08, 0xD0, 0x10, 0x00, 0xC7, 0x00, 0x3C, 0x03,
69810x30, 0x48, 0xC1, 0x23, 0x10, 0x83, 0x00, 0x0C, 0x02, 0x32, 0x0D, 0xD0, 0x30,
69820x00, 0x8F, 0x00, 0x0D, 0x03, 0xF0, 0x8C, 0xC8, 0x48, 0x40, 0x00, 0x00, 0x00,
69830x00, 0x00, 0x00, 0x02, 0x38, 0x3D, 0x40, 0x3F, 0x00, 0xDC, 0x00, 0xF0, 0x0E,
69840xC0, 0x3F, 0x00, 0xFF, 0x08, 0xDD, 0x03, 0xF2, 0x8E, 0xC4, 0x2F, 0x20, 0xFF,
69850x00, 0xFC, 0x20, 0xB0, 0x0F, 0xC2, 0x1F, 0x02, 0xFF, 0x08, 0xBC, 0x23, 0xF0,
69860x0F, 0xC0, 0x2B, 0x00, 0xA7, 0x00, 0xBC, 0x02, 0xF1, 0x0F, 0xC0, 0x3F, 0x00,
69870xFF, 0x00, 0xFC, 0x03, 0xF0, 0x4E, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00,
69880x00, 0x00, 0x14, 0xA0, 0x07, 0x00, 0x13, 0x00, 0x7C, 0x00, 0x34, 0x05, 0xC0,
69890x14, 0x00, 0x5F, 0x01, 0x4C, 0x00, 0xF0, 0x05, 0xC0, 0x34, 0x00, 0xCF, 0x00,
69900x4C, 0x04, 0x30, 0x4C, 0xC0, 0x34, 0x00, 0x5B, 0x00, 0x7C, 0x02, 0xF0, 0x09,
69910xD0, 0x34, 0x00, 0xD3, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0xDF,
69920x00, 0x0D, 0x03, 0x30, 0x0C, 0xD0, 0x54, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
69930x00, 0x12, 0x80, 0x0D, 0x10, 0x21, 0x00, 0xF4, 0x02, 0x10, 0x0E, 0x40, 0x18,
69940x30, 0x6D, 0x00, 0x84, 0x01, 0xD0, 0x06, 0x40, 0x28, 0x00, 0xED, 0x00, 0xAC,
69950x00, 0x90, 0x0E, 0x43, 0x38, 0x48, 0x61, 0x00, 0xB4, 0x02, 0xD0, 0x0E, 0x42,
69960x38, 0x00, 0xE1, 0x00, 0xB4, 0x01, 0xD0, 0x06, 0x40, 0x1B, 0x00, 0xFD, 0x00,
69970x84, 0x03, 0x10, 0x0E, 0x60, 0x4C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
69980x00, 0x00, 0x79, 0x00, 0x21, 0x01, 0xB4, 0x04, 0x10, 0x1E, 0x40, 0x78, 0x00,
69990xED, 0x01, 0x84, 0x06, 0xD0, 0x1E, 0x60, 0x78, 0x00, 0xFD, 0x01, 0x04, 0x40,
70000xD0, 0x1A, 0x40, 0x78, 0x00, 0xE9, 0x21, 0xB6, 0x07, 0xD0, 0x1A, 0x40, 0x78,
70010x00, 0xE1, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x01, 0x84,
70020x07, 0x10, 0x17, 0x40, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
70030x28, 0x33, 0x02, 0x81, 0x00, 0x74, 0x27, 0x10, 0x7C, 0x40, 0x30, 0x00, 0xCD,
70040x00, 0x44, 0x03, 0xD0, 0x0C, 0x62, 0x20, 0x01, 0xCD, 0x83, 0x24, 0x07, 0xD0,
70050x2C, 0x40, 0x70, 0x00, 0xC1, 0x00, 0x34, 0x03, 0xD0, 0x0D, 0x42, 0x34, 0x00,
70060xC1, 0x40, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x09, 0x04, 0x03,
70070x15, 0x04, 0x60, 0x48, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x20,
70080x19, 0x40, 0x73, 0x42, 0xFC, 0x05, 0x30, 0x57, 0xD0, 0x14, 0x00, 0x5F, 0x00,
70090x4D, 0x01, 0xF0, 0x05, 0xD0, 0x1C, 0x20, 0x7F, 0x05, 0xCC, 0x09, 0x74, 0x27,
70100xC0, 0xDC, 0x03, 0x5B, 0x80, 0x3C, 0x01, 0xF1, 0x05, 0xC0, 0x14, 0x00, 0x53,
70110x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x0C, 0x01, 0x30,
70120x27, 0xC0, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x85,
70130x14, 0x0F, 0x24, 0x7C, 0x04, 0xF4, 0x21, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7C,
70140x00, 0xF0, 0x01, 0xC0, 0x03, 0x00, 0x1F, 0x10, 0x7C, 0x10, 0x30, 0x61, 0xD0,
70150x07, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xD1, 0x01, 0xC8, 0x07, 0x40, 0x1F, 0x00,
70160x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x20, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01,
70170xC1, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x65, 0x00,
70180x93, 0x01, 0x4C, 0x02, 0x30, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x7C, 0x02,
70190x30, 0x89, 0xC0, 0x24, 0x00, 0x93, 0x04, 0x0C, 0x0A, 0x30, 0x29, 0xC0, 0x22,
70200x70, 0x93, 0x80, 0x7C, 0x06, 0x30, 0x09, 0xC0, 0x64, 0x02, 0x93, 0x05, 0x7C,
70210x02, 0xF0, 0x49, 0xC0, 0x27, 0x02, 0x9F, 0x01, 0x4C, 0x02, 0x30, 0x09, 0xC0,
70220x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x10, 0x91,
70230x28, 0x44, 0x02, 0x10, 0x28, 0x40, 0xA4, 0x00, 0x9D, 0x02, 0x74, 0x02, 0x10,
70240x39, 0x40, 0x24, 0x20, 0x81, 0x00, 0x6C, 0x02, 0x10, 0x28, 0x40, 0xA4, 0x00,
70250x91, 0x02, 0x5C, 0x02, 0x10, 0x09, 0x40, 0xE4, 0x08, 0x91, 0x21, 0x74, 0x82,
70260xD0, 0x29, 0x40, 0xE7, 0x00, 0x9D, 0x03, 0x45, 0x02, 0x14, 0x09, 0x40, 0x04,
70270x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x46, 0x91, 0x20,
70280x44, 0x02, 0x12, 0x29, 0x40, 0x24, 0x01, 0xBD, 0x04, 0xF4, 0x02, 0x18, 0x0A,
70290x40, 0x24, 0x00, 0x91, 0x80, 0x64, 0x02, 0x19, 0x0D, 0x40, 0x26, 0x00, 0x91,
70300x00, 0xF4, 0x22, 0x1C, 0x0F, 0x40, 0x2C, 0x04, 0xB1, 0x00, 0xF4, 0x06, 0xD0,
70310x0B, 0x40, 0x2F, 0x00, 0x8D, 0x0A, 0x64, 0x02, 0x10, 0x18, 0x40, 0x62, 0x00,
70320x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x24, 0x01, 0x81, 0x04, 0x04,
70330x12, 0x10, 0x48, 0x50, 0x68, 0x00, 0xAD, 0x01, 0xB4, 0x02, 0x10, 0x1A, 0x42,
70340x20, 0x01, 0x91, 0x00, 0x24, 0x12, 0x10, 0x48, 0x40, 0x32, 0x01, 0xA1, 0x01,
70350xD4, 0x03, 0x10, 0x0A, 0x40, 0x28, 0x20, 0xA1, 0x01, 0xB4, 0x02, 0xD0, 0x1A,
70360x40, 0x6B, 0x00, 0x8D, 0x04, 0x25, 0x02, 0x10, 0x58, 0x50, 0x42, 0x80, 0x00,
70370x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x86, 0x02, 0x53, 0x0A, 0x4D, 0x28,
70380x34, 0xA0, 0x40, 0x84, 0x02, 0x0F, 0x0A, 0x7C, 0x29, 0x30, 0xA2, 0x40, 0x84,
70390x02, 0x13, 0x0A, 0x6C, 0x00, 0x30, 0x05, 0xC0, 0x06, 0x00, 0x13, 0x0A, 0x7C,
70400x00, 0x30, 0xA0, 0xD0, 0x80, 0x02, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0xA1, 0xC0,
70410x8F, 0x02, 0x1F, 0x0A, 0x6C, 0x00, 0x30, 0xA1, 0xC0, 0x76, 0xC0, 0x0A, 0x00,
70420x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x2F, 0x02, 0xBF, 0x08, 0xFC, 0x22, 0xF0,
70430x8B, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF4, 0x09, 0xD0, 0x2F, 0x42,
70440xBF, 0x80, 0xFC, 0x22, 0xF0, 0x8B, 0xC0, 0x29, 0x82, 0x9F, 0x00, 0x5C, 0x02,
70450xF0, 0x09, 0xC0, 0x27, 0x40, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27,
70460x00, 0xBF, 0x08, 0x5C, 0x02, 0xF0, 0x8B, 0xC0, 0x65, 0x60, 0x0E, 0x00, 0x00,
70470x00, 0x00, 0x00, 0x1C, 0xA0, 0x2F, 0x01, 0xA3, 0x14, 0xFC, 0x32, 0xF0, 0x0B,
70480xD0, 0x2C, 0x00, 0xB3, 0x08, 0xFC, 0x02, 0x30, 0x0B, 0xC0, 0x26, 0x19, 0xB3,
70490x00, 0xCC, 0x06, 0x30, 0x1B, 0xC1, 0x6E, 0x04, 0xBF, 0x00, 0xFC, 0x02, 0x30,
70500x0B, 0xC0, 0x3C, 0x00, 0xF3, 0x00, 0xCC, 0x03, 0x31, 0x0B, 0xC0, 0x2C, 0x02,
70510xBF, 0x00, 0xCC, 0x02, 0xF0, 0x8F, 0xC0, 0x60, 0x00, 0x0E, 0x00, 0x00, 0x00,
70520x00, 0x00, 0x18, 0x00, 0x17, 0x45, 0x11, 0x04, 0x74, 0x30, 0xD0, 0x20, 0x41,
70530x14, 0x44, 0x51, 0x00, 0x74, 0x50, 0x10, 0x41, 0x50, 0x04, 0x02, 0x13, 0x00,
70540x6C, 0x28, 0x14, 0x01, 0x40, 0x04, 0x00, 0x5D, 0x04, 0x74, 0x00, 0x10, 0x01,
70550x41, 0x04, 0x04, 0x11, 0x00, 0x44, 0x00, 0x10, 0x45, 0x40, 0x14, 0x01, 0x1D,
70560x12, 0x45, 0x00, 0xD0, 0x81, 0x40, 0x70, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
70570x00, 0x12, 0x00, 0x21, 0x43, 0x81, 0x14, 0x34, 0x12, 0xD0, 0xC8, 0x50, 0x20,
70580x10, 0x81, 0x00, 0x74, 0x16, 0x14, 0x48, 0x41, 0x24, 0x00, 0x81, 0x00, 0x24,
70590x02, 0x90, 0x08, 0x40, 0x22, 0x00, 0x8D, 0x94, 0x74, 0x02, 0x98, 0x49, 0x40,
70600x22, 0x00, 0x91, 0x00, 0x14, 0x02, 0x90, 0x48, 0x41, 0x22, 0x11, 0x8D, 0x0C,
70610x04, 0x02, 0xD0, 0x18, 0x40, 0x48, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
70620x18, 0x28, 0x25, 0x00, 0x91, 0x10, 0x74, 0x02, 0xD0, 0x49, 0x41, 0x20, 0x00,
70630x91, 0x00, 0x74, 0x02, 0x10, 0x29, 0x40, 0xA4, 0x00, 0x91, 0x00, 0x64, 0x62,
70640x98, 0x19, 0x44, 0x24, 0x02, 0x9D, 0x00, 0x74, 0x02, 0x9C, 0x09, 0x50, 0x22,
70650x00, 0x91, 0x00, 0x54, 0x02, 0x90, 0x08, 0x50, 0x26, 0x00, 0x9D, 0x08, 0x44,
70660x02, 0xD0, 0x08, 0x40, 0x60, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
70670x00, 0x25, 0x00, 0x93, 0x00, 0x7C, 0x06, 0xF0, 0x09, 0xC0, 0xA4, 0x00, 0x93,
70680x02, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0x24, 0x40, 0x93, 0x10, 0x6D, 0x0A, 0xB0,
70690x79, 0xC0, 0x26, 0x10, 0x9F, 0x02, 0x3C, 0x02, 0xB0, 0x08, 0xC2, 0x26, 0x40,
70700x83, 0x00, 0x5C, 0x42, 0xB4, 0x29, 0xC0, 0xA6, 0x00, 0x9F, 0x00, 0x4C, 0x02,
70710xF0, 0x19, 0xC0, 0x14, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x08,
70720xE5, 0x00, 0x9F, 0x10, 0x7C, 0xA6, 0xF0, 0x18, 0xD0, 0x27, 0x00, 0x9F, 0x00,
70730x7C, 0x02, 0xF2, 0x09, 0xC0, 0x25, 0x00, 0x97, 0x15, 0x7E, 0x06, 0x70, 0x09,
70740xC0, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x26, 0x72, 0x09, 0xC1, 0x25, 0x00, 0x9F,
70750x00, 0x6D, 0x02, 0x70, 0x09, 0xC0, 0x25, 0x04, 0x9F, 0x10, 0x7E, 0x02, 0xF0,
70760x49, 0xD1, 0x5B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x81,
70770x01, 0x13, 0x02, 0x4C, 0x20, 0x34, 0x81, 0xC0, 0x86, 0x44, 0x13, 0x12, 0x6D,
70780x04, 0xF0, 0x81, 0xC0, 0x04, 0x00, 0x1F, 0x02, 0x4C, 0x88, 0x30, 0x20, 0xC0,
70790x04, 0x08, 0x1F, 0x02, 0x4D, 0x40, 0xF0, 0x01, 0xC0, 0x06, 0x00, 0x13, 0x00,
70800x7C, 0x40, 0xF0, 0x21, 0xD0, 0x84, 0x40, 0x13, 0x08, 0x4C, 0x00, 0xF0, 0x01,
70810xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x1C, 0x00,
70820x71, 0x82, 0x44, 0x05, 0x10, 0x17, 0xC0, 0x9C, 0x00, 0x71, 0x02, 0x84, 0x05,
70830xD0, 0x16, 0x40, 0x10, 0x00, 0x7D, 0x00, 0x14, 0x01, 0x14, 0x37, 0x40, 0x9C,
70840x00, 0x7D, 0x03, 0xC4, 0x11, 0xD0, 0x17, 0xC0, 0x1C, 0x00, 0x71, 0x00, 0xB0,
70850x4D, 0xD0, 0x07, 0x40, 0x1C, 0x00, 0x71, 0x01, 0x45, 0x01, 0xD0, 0x17, 0x41,
70860x50, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x32, 0x40, 0x81,
70870x02, 0x24, 0x07, 0x10, 0x0C, 0x40, 0xB0, 0x00, 0xC1, 0x02, 0x04, 0x27, 0xD0,
70880x08, 0x40, 0x30, 0x00, 0x5D, 0x00, 0x04, 0x03, 0x90, 0xB8, 0x51, 0xB0, 0x21,
70890xCD, 0x05, 0x00, 0x07, 0xD0, 0x2C, 0x40, 0x30, 0x00, 0xC1, 0x13, 0x34, 0x0B,
70900xD8, 0x0C, 0x40, 0x30, 0x00, 0x91, 0x03, 0x04, 0x02, 0xD0, 0x2C, 0x40, 0x50,
70910x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x28, 0x00, 0x31, 0x01,
70920xA4, 0x06, 0x10, 0x06, 0x40, 0x38, 0x00, 0xE1, 0x01, 0x84, 0x03, 0xD0, 0x0E,
70930x42, 0x38, 0x21, 0xED, 0x00, 0x94, 0x03, 0x90, 0x08, 0x40, 0x18, 0x04, 0xED,
70940x03, 0x84, 0x01, 0xD1, 0x2F, 0x50, 0x38, 0x00, 0x21, 0x10, 0xB4, 0x03, 0xD0,
70950x0E, 0x40, 0x78, 0x00, 0xA1, 0x00, 0x84, 0x02, 0xD0, 0x08, 0x40, 0x14, 0x00,
70960x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x5C, 0x02, 0x63, 0x01, 0xEC,
70970x07, 0x30, 0x1E, 0xD1, 0x7C, 0x00, 0xF3, 0x01, 0x8C, 0x07, 0xF0, 0x1A, 0xD0,
70980xF8, 0x21, 0x3F, 0x01, 0x84, 0x07, 0xB0, 0x16, 0xC0, 0x78, 0x00, 0xFF, 0x21,
70990x8C, 0x07, 0xF0, 0x1E, 0xC0, 0x7C, 0x40, 0x23, 0x01, 0xBC, 0x07, 0xF0, 0x1F,
71000xC0, 0x7C, 0x00, 0x73, 0x01, 0x84, 0x06, 0xF0, 0x1E, 0xD0, 0x54, 0x40, 0x00,
71010x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x9D, 0x00, 0x1F, 0x80, 0x5D, 0x12,
71020xF0, 0x07, 0xC0, 0x35, 0x08, 0x5F, 0x00, 0x7C, 0x03, 0xF2, 0x00, 0xC0, 0x77,
71030x00, 0x9F, 0x00, 0x3C, 0x03, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C,
71040x03, 0xF0, 0x0C, 0xC0, 0x35, 0x08, 0x1F, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC0,
71050x37, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x01, 0xC0, 0x43, 0x60, 0x06, 0x00,
71060x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x7D, 0x00, 0x23, 0x01, 0xCC, 0x3F, 0xF8,
71070x8B, 0xC0, 0x7C, 0x00, 0xF3, 0x01, 0xFC, 0x07, 0xB0, 0x9B, 0xC0, 0x7F, 0x00,
71080xE7, 0x01, 0x8C, 0x87, 0x24, 0x1E, 0xC0, 0x5D, 0x00, 0xF3, 0x01, 0xD4, 0x25,
71090xB0, 0x1F, 0xD8, 0x7C, 0x00, 0x32, 0x01, 0xFC, 0x05, 0xF0, 0x1F, 0xC0, 0x7C,
71100x00, 0x73, 0x01, 0xCC, 0x06, 0xF0, 0x17, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x00,
71110x00, 0x00, 0x00, 0x15, 0x00, 0x29, 0x00, 0x21, 0x82, 0x84, 0x62, 0x30, 0x47,
71120x40, 0x3C, 0x00, 0xE1, 0x00, 0xBC, 0x02, 0x10, 0xCE, 0x40, 0x3B, 0x00, 0xEB,
71130x00, 0xAC, 0x13, 0x30, 0x0E, 0x40, 0x98, 0x40, 0xE1, 0x08, 0x84, 0x01, 0x14,
71140x4B, 0xC1, 0x3C, 0x00, 0x21, 0x08, 0xB4, 0x08, 0xD0, 0x2E, 0x40, 0x3C, 0x00,
71150xE1, 0x00, 0x84, 0x02, 0xD0, 0x82, 0x40, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00,
71160x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x61, 0x00, 0x04, 0x13, 0x50, 0x8A, 0x50,
71170x38, 0x00, 0xE9, 0x00, 0xF4, 0x03, 0x10, 0x0A, 0x60, 0x33, 0x00, 0xB5, 0x00,
71180xA4, 0x83, 0x80, 0x0F, 0x50, 0x3B, 0x00, 0x61, 0x00, 0x94, 0x00, 0x94, 0x0E,
71190x60, 0x38, 0x00, 0x29, 0x00, 0xB4, 0x01, 0xD0, 0x0E, 0x40, 0x38, 0x00, 0xE1,
71200x00, 0x84, 0x02, 0xD0, 0x06, 0x40, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
71210x00, 0x02, 0x28, 0x51, 0x00, 0x01, 0x06, 0x05, 0x0A, 0x12, 0xB5, 0x41, 0x30,
71220x00, 0xC9, 0x00, 0x34, 0x02, 0x10, 0x04, 0x60, 0xF3, 0x40, 0x89, 0x03, 0x24,
71230x23, 0x10, 0x1C, 0x40, 0x32, 0x00, 0xD1, 0x00, 0x04, 0x01, 0x90, 0x08, 0x40,
71240x30, 0x00, 0x09, 0x00, 0x34, 0x00, 0xD0, 0x0D, 0x40, 0x30, 0x00, 0xD1, 0x00,
71250x05, 0x02, 0xD0, 0x18, 0x40, 0x13, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
71260x15, 0xA0, 0x65, 0x40, 0x13, 0x07, 0x4C, 0x0E, 0x70, 0x09, 0xC0, 0x34, 0x00,
71270xDB, 0x00, 0x7C, 0x03, 0xB0, 0x08, 0xC2, 0x3F, 0x20, 0x07, 0x0D, 0x0C, 0x0A,
71280xB0, 0x5D, 0xC0, 0x73, 0x04, 0xD3, 0x00, 0x5C, 0x02, 0xB0, 0x0D, 0xC0, 0x34,
71290x00, 0x0B, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xD0, 0x34, 0x00, 0x93, 0x05, 0x4C,
71300x03, 0xF0, 0x0C, 0xC1, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
71310x08, 0x27, 0x02, 0x3F, 0x00, 0x7C, 0x02, 0x70, 0x21, 0xC0, 0x27, 0x20, 0x97,
71320x00, 0x5C, 0x07, 0xF0, 0x29, 0xC0, 0x37, 0x06, 0x97, 0x00, 0x7C, 0x42, 0xF0,
71330x0D, 0xC0, 0x35, 0x20, 0x9F, 0x00, 0x7C, 0x00, 0x72, 0x25, 0xC0, 0xA5, 0x00,
71340x13, 0x00, 0x7C, 0x08, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02,
71350xF0, 0x09, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08,
71360x0F, 0x60, 0x73, 0x00, 0xAC, 0x42, 0xB0, 0x03, 0xC0, 0x1C, 0x00, 0xFF, 0x00,
71370xFC, 0x03, 0x30, 0x4B, 0xC0, 0x3E, 0x00, 0x33, 0x05, 0xCC, 0x07, 0x30, 0x4F,
71380x40, 0x37, 0x00, 0xF3, 0x00, 0xEC, 0x02, 0xE0, 0x3F, 0xC0, 0x1C, 0x00, 0x31,
71390x00, 0xCC, 0x01, 0xF0, 0x07, 0x80, 0x5C, 0x00, 0x53, 0x00, 0xCC, 0x07, 0xF0,
71400x3F, 0xE0, 0x00, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xC6,
71410x00, 0x11, 0x22, 0x44, 0x06, 0x10, 0x31, 0x40, 0x14, 0x00, 0x5D, 0x01, 0x34,
71420x07, 0x10, 0x59, 0x42, 0x30, 0x40, 0x91, 0x40, 0x54, 0x03, 0x10, 0x7D, 0x40,
71430xF7, 0x00, 0x9B, 0x01, 0x44, 0x06, 0xD0, 0x05, 0x50, 0x34, 0x00, 0x11, 0x07,
71440x4C, 0x0C, 0xD0, 0x3D, 0x40, 0xD4, 0x02, 0xD1, 0x00, 0x44, 0x02, 0xD0, 0x39,
71450x50, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xC2, 0x00,
71460x01, 0x00, 0x64, 0x13, 0x90, 0x19, 0x41, 0x76, 0x00, 0xDD, 0x88, 0x74, 0x07,
71470x14, 0x09, 0x48, 0x34, 0x00, 0x99, 0x40, 0x46, 0x12, 0x10, 0x0D, 0x48, 0x67,
71480x00, 0xD1, 0x04, 0x64, 0x04, 0xD0, 0x2C, 0x40, 0xB2, 0x01, 0x15, 0x01, 0x64,
71490x05, 0xD0, 0x8D, 0x40, 0x31, 0x04, 0x51, 0x00, 0x44, 0x13, 0xD0, 0x2D, 0x40,
71500x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x01,
71510x00, 0x04, 0x02, 0x10, 0x00, 0x50, 0x62, 0x00, 0x8D, 0x00, 0x34, 0x07, 0x14,
71520x09, 0x42, 0x34, 0x00, 0x91, 0x00, 0x14, 0x02, 0x10, 0x0C, 0x60, 0x23, 0x40,
71530xC9, 0x00, 0x04, 0x00, 0xD0, 0x0C, 0x40, 0x22, 0x80, 0x05, 0x80, 0x04, 0x00,
71540xD0, 0x08, 0x40, 0x21, 0x00, 0xC1, 0x00, 0x04, 0x02, 0xD0, 0x08, 0x40, 0x40,
71550x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0E, 0x00, 0x53, 0x00,
71560xEC, 0x03, 0xB2, 0x03, 0xD0, 0x36, 0x00, 0xDF, 0x80, 0x7C, 0x03, 0x14, 0x09,
71570xD0, 0x36, 0x00, 0x92, 0x00, 0x4C, 0x03, 0x34, 0x0D, 0x40, 0x27, 0x10, 0x43,
71580x00, 0x6C, 0x00, 0xF0, 0x0D, 0xD0, 0x16, 0x00, 0x17, 0x00, 0x6C, 0x01, 0xF0,
71590x04, 0xD0, 0x35, 0x00, 0xD3, 0x00, 0x4C, 0x03, 0xF0, 0x09, 0xC0, 0x00, 0xC0,
71600x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x0B, 0x00, 0x3F, 0x00, 0xFC,
71610x02, 0xF1, 0x03, 0xC0, 0x3D, 0x00, 0xFF, 0x00, 0xBC, 0x01, 0xF4, 0x0B, 0xC0,
71620x3F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xFF, 0x00,
71630xB4, 0x00, 0xF0, 0x0F, 0xC0, 0x3D, 0x00, 0x3B, 0x00, 0xFC, 0x00, 0xF0, 0x0F,
71640xC0, 0x3E, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x17, 0x60, 0x0E,
71650x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xFF, 0x01, 0xFC, 0x02,
71660xF0, 0x1F, 0xC8, 0x3F, 0x01, 0xBF, 0x22, 0xFC, 0x0A, 0x30, 0x0B, 0xC0, 0xBF,
71670x05, 0xEF, 0x09, 0xEC, 0x10, 0xB0, 0x3F, 0xC0, 0xBD, 0x00, 0xB3, 0x04, 0xCC,
71680x82, 0x32, 0x2F, 0xC4, 0x2F, 0x40, 0xF2, 0x01, 0xCC, 0x13, 0xF0, 0x12, 0x44,
71690x7A, 0x20, 0x33, 0xCC, 0xEC, 0x06, 0x90, 0x1F, 0x40, 0x0E, 0x00, 0x0E, 0x00,
71700x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x77, 0x00, 0xDD, 0x01, 0x74, 0x26, 0xD0,
71710x1D, 0x40, 0xBF, 0x05, 0x1D, 0x02, 0x74, 0x38, 0x10, 0xC1, 0x40, 0xBF, 0x00,
71720xDD, 0x00, 0x64, 0x2C, 0x04, 0x4D, 0x40, 0xBF, 0x08, 0x11, 0x14, 0x74, 0x40,
71730x10, 0x6F, 0x40, 0xE7, 0x00, 0xD5, 0x01, 0xC4, 0x0F, 0xD0, 0x19, 0x40, 0x74,
71740x00, 0x01, 0x22, 0x44, 0x06, 0x12, 0x1D, 0x40, 0x0C, 0x00, 0x0C, 0x00, 0x00,
71750x00, 0x00, 0x00, 0x13, 0xA0, 0x31, 0x00, 0xCD, 0x00, 0x34, 0x80, 0xD8, 0x0C,
71760x40, 0xB3, 0x00, 0x8D, 0x26, 0x34, 0x02, 0x10, 0x00, 0x41, 0x33, 0x11, 0xCD,
71770x80, 0x24, 0x02, 0x00, 0x0C, 0x40, 0x31, 0x83, 0x81, 0x8C, 0x04, 0xB2, 0x12,
71780x2C, 0x60, 0x03, 0x42, 0xD5, 0x00, 0x14, 0x23, 0xD0, 0x08, 0x40, 0x33, 0x00,
71790x45, 0x26, 0x64, 0x01, 0x90, 0x0C, 0x40, 0x4E, 0x80, 0x0E, 0x00, 0x00, 0x00,
71800x00, 0x00, 0x03, 0x28, 0x35, 0x00, 0xDD, 0x00, 0x74, 0x04, 0xD0, 0x0D, 0x44,
71810x37, 0x00, 0x9D, 0x01, 0x74, 0x04, 0x10, 0x11, 0x44, 0x37, 0x00, 0xDD, 0x00,
71820x66, 0x84, 0x10, 0x0D, 0x40, 0x37, 0x00, 0x91, 0x01, 0x74, 0x06, 0x18, 0x0D,
71830x40, 0x47, 0x00, 0x55, 0x11, 0x54, 0x03, 0xD0, 0x19, 0x43, 0x37, 0x80, 0x11,
71840x18, 0x44, 0x0E, 0x10, 0x0D, 0x42, 0x0C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
71850x00, 0x20, 0xA8, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x1E, 0xF0, 0x0D, 0xC0, 0x37,
71860x00, 0x9F, 0x87, 0x7C, 0xC4, 0x30, 0x19, 0xC2, 0x37, 0x18, 0xDF, 0x00, 0x6C,
71870x04, 0x30, 0x0D, 0xC4, 0x35, 0x08, 0x13, 0x01, 0x4C, 0x1E, 0x34, 0x0D, 0xC2,
71880x67, 0x40, 0xD7, 0x01, 0x5C, 0x03, 0xF0, 0x19, 0xC0, 0x37, 0x00, 0x95, 0x02,
71890x2C, 0x0E, 0xB0, 0x0D, 0xC0, 0x22, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
71900x07, 0x80, 0x3D, 0x00, 0xFF, 0x00, 0xFC, 0x82, 0xF0, 0x0F, 0xC0, 0x3F, 0x90,
71910x3F, 0x90, 0xBC, 0x00, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xFF, 0x03, 0x9C, 0x40,
71920x70, 0x0F, 0xC0, 0x37, 0x40, 0x3F, 0x40, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x2F,
71930x00, 0xBF, 0x00, 0xEC, 0x03, 0xF0, 0x0B, 0xC0, 0x3C, 0x0C, 0x2F, 0x01, 0xFC,
71940x02, 0xF0, 0x0F, 0xC0, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
71950x08, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0x93,
71960x02, 0x7C, 0x0A, 0x30, 0x01, 0xC0, 0x34, 0x40, 0xD3, 0x04, 0x4E, 0x02, 0xF1,
71970x0D, 0xC0, 0x30, 0x00, 0x13, 0x08, 0x7C, 0x0A, 0xF0, 0x0D, 0xC0, 0x24, 0x00,
71980xD3, 0x22, 0x7C, 0x03, 0x30, 0x29, 0xC0, 0x34, 0x00, 0x13, 0x02, 0x4C, 0x0D,
71990xF0, 0x0D, 0xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xA0,
72000x34, 0x00, 0xDD, 0x00, 0x74, 0x12, 0xD1, 0x0D, 0x00, 0x3F, 0x00, 0x91, 0x80,
72010x74, 0x00, 0x10, 0x01, 0x40, 0x3C, 0x24, 0xDB, 0x02, 0x66, 0x4A, 0xD0, 0x0D,
72020x48, 0xBC, 0x42, 0x1B, 0x8B, 0x74, 0x02, 0xF0, 0x3F, 0xC1, 0x62, 0x01, 0x8A,
72030x04, 0xF0, 0x03, 0xB1, 0xA8, 0x40, 0x30, 0x00, 0x1B, 0x0E, 0x44, 0x0F, 0xD0,
72040x0C, 0x40, 0x6F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x32,
72050x00, 0xCD, 0x00, 0x34, 0x00, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x01, 0x00, 0x34,
72060x02, 0x10, 0x08, 0x40, 0xF0, 0x09, 0xD1, 0x81, 0x24, 0x0E, 0xD0, 0x0C, 0x48,
72070x70, 0x00, 0x89, 0x03, 0x74, 0x00, 0xD0, 0x6C, 0x42, 0x02, 0x01, 0xC5, 0x30,
72080x20, 0x07, 0x00, 0xBC, 0x40, 0x30, 0x00, 0x00, 0x00, 0x04, 0x03, 0xD0, 0x0C,
72090x40, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x78, 0x00,
72100xED, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0x61, 0x11, 0xB4, 0x07,
72110x10, 0x16, 0x40, 0x78, 0x00, 0xE1, 0x01, 0xA4, 0x25, 0xD0, 0x1E, 0x40, 0x78,
72120x00, 0x61, 0x01, 0xB4, 0x05, 0x50, 0x1E, 0x40, 0x7A, 0x00, 0xED, 0x01, 0xB4,
72130x07, 0x90, 0x0F, 0x40, 0x78, 0x04, 0xE9, 0x01, 0x84, 0x0E, 0xD0, 0x1E, 0x40,
72140x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xCF,
72150x00, 0x3C, 0x01, 0xD0, 0x8C, 0xC0, 0x37, 0x00, 0x43, 0x00, 0x7C, 0x03, 0x10,
72160x8D, 0xD0, 0x34, 0x22, 0xC1, 0x90, 0x04, 0x2B, 0xD8, 0x0D, 0xD0, 0x30, 0x06,
72170xC9, 0x00, 0x3C, 0x01, 0xD0, 0x4D, 0xC0, 0x12, 0x00, 0xC3, 0x04, 0x2C, 0x53,
72180x30, 0x8C, 0x80, 0x30, 0x00, 0xC3, 0xE4, 0x0C, 0x83, 0xF0, 0x0C, 0xC0, 0x4B,
72190x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x3D, 0x00, 0xFF, 0x00,
72200xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x3F, 0x40, 0xFF, 0x00, 0xFC, 0x03, 0xF4, 0x8F,
72210xC0, 0x3F, 0x02, 0xFF, 0x00, 0x5D, 0xA1, 0xF8, 0x0F, 0xC0, 0xBF, 0x00, 0xFF,
72220x80, 0xFC, 0x03, 0xF0, 0x0F, 0xC1, 0x1B, 0x02, 0xFB, 0x00, 0xB0, 0x4B, 0xF0,
72230xCF, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x0B, 0x60,
72240x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x80, 0xDF, 0x00, 0x7C,
72250x01, 0x70, 0x0D, 0xC4, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x05, 0x30, 0x0D, 0xC2,
72260xB5, 0x02, 0xCF, 0x00, 0x5D, 0x03, 0x38, 0x1D, 0xC0, 0x35, 0x01, 0xDF, 0x00,
72270x7C, 0x03, 0xF0, 0x6D, 0xC0, 0x10, 0x00, 0xC3, 0x00, 0x6C, 0x13, 0xF0, 0x09,
72280xC0, 0x37, 0xA0, 0xDF, 0x00, 0x4C, 0x03, 0xD0, 0x0C, 0xC0, 0x42, 0x00, 0x0E,
72290x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x88, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x03,
72300xD0, 0x0E, 0x00, 0x3B, 0x13, 0x6C, 0x00, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x3B,
72310x04, 0xED, 0x00, 0x94, 0x03, 0x41, 0x0E, 0x40, 0x38, 0x00, 0xED, 0x00, 0xB4,
72320x01, 0xD0, 0x8F, 0xC0, 0x3A, 0x00, 0xE5, 0x00, 0x84, 0x03, 0xD0, 0x0A, 0x42,
72330x3B, 0x80, 0xCD, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x4C, 0x00, 0x06, 0x00,
72340x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x79, 0x88, 0xE5, 0x21, 0xB4, 0x47, 0xD0,
72350x1E, 0x44, 0x7B, 0x12, 0xEC, 0x01, 0x34, 0x07, 0x90, 0x1E, 0x40, 0x7B, 0x01,
72360xED, 0x21, 0x14, 0x07, 0x01, 0x1E, 0x4C, 0x79, 0x02, 0xED, 0x01, 0xB4, 0x07,
72370xD8, 0x5F, 0x40, 0x78, 0x00, 0xF5, 0x11, 0xB4, 0x17, 0xD0, 0x3A, 0x40, 0x7B,
72380x00, 0xED, 0x21, 0x84, 0x47, 0xD0, 0x1E, 0x48, 0x12, 0x00, 0x04, 0x00, 0x00,
72390x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x36, 0x0F, 0xD0, 0x0C,
72400x40, 0x33, 0x00, 0xCD, 0x01, 0x34, 0x03, 0x10, 0x9C, 0x40, 0x33, 0x00, 0x8D,
72410xA0, 0x15, 0x07, 0x10, 0x0C, 0x40, 0x30, 0x10, 0xDD, 0x03, 0x34, 0x07, 0xD0,
72420x0C, 0x40, 0xF2, 0x00, 0xC5, 0x01, 0x14, 0x03, 0xD0, 0x08, 0x40, 0x33, 0x80,
72430xDD, 0x0D, 0x04, 0x07, 0xD0, 0x0C, 0x40, 0x5A, 0x20, 0x0C, 0x00, 0x00, 0x00,
72440x00, 0x00, 0x17, 0xA8, 0x15, 0x08, 0x5F, 0x00, 0xFC, 0x01, 0xF0, 0x05, 0xC0,
72450x17, 0x00, 0x7F, 0x0E, 0xF4, 0x01, 0xB0, 0xA7, 0xC2, 0x15, 0x08, 0x4F, 0x05,
72460xDC, 0x1D, 0x35, 0x05, 0xC4, 0x15, 0x00, 0x7F, 0x85, 0xFC, 0xED, 0xF0, 0x05,
72470xC0, 0x1C, 0x81, 0x77, 0x01, 0x7C, 0x01, 0xF1, 0x06, 0xC0, 0x17, 0x08, 0x7D,
72480x02, 0xCD, 0x05, 0xF0, 0x04, 0xC0, 0x5E, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
72490x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x40, 0xF0, 0x01, 0xC0, 0x07,
72500x00, 0x1F, 0x02, 0x78, 0x04, 0x74, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7D,
72510x40, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x06, 0x7C, 0x00, 0xC0, 0x00, 0xC0,
72520x87, 0x81, 0x1F, 0x10, 0x64, 0x08, 0xF2, 0x21, 0xC1, 0x87, 0x20, 0x1F, 0x02,
72530x7D, 0x08, 0xF0, 0x01, 0xC0, 0x49, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
72540x10, 0x08, 0x27, 0x00, 0x9F, 0x00, 0x3C, 0x02, 0x30, 0x09, 0xE0, 0x27, 0x00,
72550x83, 0x00, 0x4C, 0x02, 0xF0, 0x09, 0xC8, 0x26, 0x02, 0x9F, 0x04, 0x0C, 0x02,
72560x34, 0x09, 0xC0, 0x27, 0x01, 0x9C, 0x08, 0x0C, 0x02, 0x30, 0x59, 0xC0, 0xA0,
72570x20, 0x93, 0x00, 0x5C, 0x86, 0xF0, 0x19, 0xC0, 0xA4, 0x00, 0x9F, 0x00, 0x4C,
72580x06, 0xF0, 0x09, 0xD0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
72590x20, 0x26, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x14, 0x09, 0x40, 0x27, 0x00, 0x91,
72600x00, 0x45, 0x02, 0xD0, 0x09, 0xD0, 0xA4, 0x00, 0x9D, 0x02, 0x6C, 0x42, 0x50,
72610x09, 0x40, 0x27, 0x21, 0x9D, 0x02, 0x45, 0x02, 0x14, 0x29, 0x50, 0xE4, 0x40,
72620x81, 0x13, 0x44, 0x86, 0xD0, 0x89, 0x40, 0x64, 0x08, 0x9D, 0x02, 0x44, 0x1A,
72630xD0, 0x19, 0x40, 0x04, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0,
72640x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x23, 0x00, 0x91, 0x08,
72650x44, 0x02, 0xD9, 0x0C, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x65, 0x22, 0x92, 0x09,
72660x44, 0x27, 0x00, 0xDD, 0x02, 0x56, 0x02, 0x50, 0x09, 0x48, 0x34, 0x04, 0x91,
72670xA4, 0x54, 0x2A, 0xD1, 0x29, 0x50, 0xA6, 0x00, 0x9D, 0x0A, 0x64, 0x22, 0xD0,
72680x89, 0x60, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20,
72690x00, 0x8D, 0x00, 0x34, 0x12, 0x10, 0x08, 0x40, 0x23, 0x31, 0x81, 0x04, 0x04,
72700x12, 0xD8, 0x48, 0x4C, 0x20, 0x01, 0x8D, 0x01, 0x24, 0x12, 0x90, 0x08, 0x40,
72710x23, 0x21, 0x8D, 0x24, 0x16, 0x12, 0x50, 0x4C, 0x04, 0x20, 0x01, 0x90, 0x20,
72720x00, 0x12, 0xD0, 0x08, 0x40, 0x22, 0x00, 0x8D, 0x08, 0x24, 0x02, 0xD0, 0x08,
72730x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00,
72740x1F, 0x00, 0x74, 0x00, 0x30, 0x01, 0x40, 0x87, 0x0A, 0x53, 0x0A, 0x4C, 0x28,
72750xF0, 0xA1, 0xC2, 0x94, 0x02, 0x1F, 0x0A, 0x6C, 0x00, 0x30, 0xA0, 0xC0, 0x87,
72760x02, 0x1F, 0x0A, 0x5C, 0x28, 0x70, 0xA1, 0x80, 0x04, 0x10, 0x12, 0x00, 0x5C,
72770x00, 0xF0, 0x01, 0xC0, 0x06, 0x00, 0x1D, 0x36, 0x6D, 0x00, 0xF0, 0x01, 0xC0,
72780x74, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x27, 0x00, 0x9F,
72790x00, 0xFC, 0x23, 0xF0, 0x09, 0xC0, 0x27, 0x42, 0xBF, 0x08, 0xFC, 0x22, 0xF0,
72800x8B, 0x40, 0x27, 0x02, 0xBF, 0x20, 0xFD, 0x22, 0x70, 0x09, 0xC0, 0x27, 0x02,
72810xBF, 0x08, 0xE8, 0x22, 0xB0, 0x89, 0xC0, 0x2F, 0x02, 0xBF, 0x00, 0x7C, 0x22,
72820xF3, 0x0B, 0xC0, 0x25, 0x00, 0xBF, 0x04, 0xDC, 0x02, 0xF0, 0x09, 0xC0, 0x77,
72830x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x27, 0x00, 0x9F, 0x20,
72840xFC, 0x16, 0x30, 0x09, 0xC0, 0xE7, 0x20, 0xBF, 0x21, 0x6C, 0x13, 0xF0, 0xD9,
72850xC6, 0xEF, 0x08, 0xB3, 0x02, 0xCC, 0x16, 0xF0, 0x09, 0xC0, 0x6F, 0x04, 0xB3,
72860x07, 0x4C, 0x1E, 0xF0, 0x5B, 0xC0, 0x68, 0x00, 0xB3, 0x00, 0xFC, 0x12, 0x34,
72870x0B, 0xC2, 0x2F, 0x20, 0xBF, 0x00, 0xC4, 0x02, 0xB4, 0x0B, 0xC0, 0x77, 0x80,
72880x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00, 0x1D, 0x00, 0x74,
72890x28, 0x10, 0x01, 0x4C, 0x47, 0x08, 0x1C, 0x17, 0x45, 0x51, 0xD0, 0xF5, 0x40,
72900xC7, 0x40, 0x11, 0x05, 0x54, 0x08, 0x70, 0x51, 0x41, 0x47, 0x40, 0x11, 0x03,
72910x45, 0x0D, 0xD0, 0x71, 0x51, 0x84, 0x40, 0x15, 0x00, 0x74, 0x00, 0x11, 0x01,
72920x40, 0x07, 0x00, 0x1D, 0x20, 0x44, 0x01, 0x10, 0x01, 0x40, 0x62, 0x00, 0x0C,
72930x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0, 0x23, 0x00, 0x8D, 0x00, 0x34, 0x03,
72940x10, 0x08, 0x40, 0xA3, 0x01, 0x8D, 0x02, 0x04, 0xB2, 0xD0, 0x08, 0x40, 0xA3,
72950x01, 0x81, 0x00, 0x25, 0x0E, 0xC1, 0x08, 0x40, 0x21, 0x04, 0x81, 0x07, 0x24,
72960x32, 0x50, 0x88, 0x40, 0xA2, 0x20, 0x81, 0x40, 0x34, 0x22, 0x50, 0x08, 0x40,
72970x23, 0x00, 0x8D, 0x00, 0x46, 0x03, 0xD1, 0x08, 0x40, 0x4B, 0x80, 0x04, 0x00,
72980x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x9D, 0x00, 0x74, 0x22, 0x10,
72990x09, 0x40, 0x27, 0x00, 0x9D, 0x14, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x37, 0x00,
73000x91, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x27, 0x80, 0x91, 0x40, 0x64, 0x12,
73010xD8, 0x09, 0x60, 0x26, 0x01, 0x95, 0x02, 0x64, 0x02, 0x58, 0x0D, 0x40, 0x27,
73020x00, 0xDD, 0x04, 0x44, 0x02, 0x50, 0x09, 0x40, 0x62, 0x20, 0x06, 0x00, 0x00,
73030x00, 0x00, 0x00, 0x05, 0x28, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x0A, 0x34, 0x09,
73040xC0, 0x27, 0x08, 0x9F, 0x42, 0x4C, 0x02, 0xF0, 0x29, 0xC0, 0x27, 0x20, 0x91,
73050x08, 0x6D, 0x0A, 0xF0, 0x09, 0xC0, 0x25, 0x20, 0x93, 0x00, 0x6C, 0x06, 0x70,
73060x09, 0x42, 0xA6, 0xA1, 0x93, 0x22, 0x74, 0x02, 0x78, 0x09, 0xC1, 0x27, 0x00,
73070x9F, 0x06, 0x4D, 0x02, 0xF4, 0x09, 0xC0, 0x17, 0x80, 0x04, 0x00, 0x00, 0x00,
73080x00, 0x00, 0x16, 0x00, 0x25, 0x08, 0x9F, 0x00, 0x3C, 0x02, 0xF0, 0x09, 0xC0,
73090x27, 0x00, 0x9F, 0x80, 0x7C, 0x22, 0xF0, 0x99, 0xC0, 0x27, 0x00, 0x9F, 0x11,
73100x5C, 0x16, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x8F, 0x13, 0x5C, 0x06, 0xF0, 0x09,
73110xC0, 0x65, 0x80, 0x9F, 0x00, 0x7C, 0x02, 0xB0, 0x09, 0xC1, 0x27, 0x00, 0x9F,
73120x01, 0x7E, 0x22, 0xB4, 0x09, 0xC0, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
73130x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF8, 0x01, 0xC0, 0x07,
73140x80, 0x13, 0x06, 0x7C, 0x08, 0xF0, 0x01, 0xC0, 0x47, 0x80, 0x1F, 0x00, 0x4C,
73150x00, 0x70, 0x01, 0xC0, 0x47, 0x10, 0x1F, 0x00, 0x7C, 0x08, 0x34, 0x11, 0xC0,
73160x87, 0x04, 0x13, 0x26, 0x2C, 0x10, 0xF0, 0x01, 0xC0, 0x05, 0x00, 0x1F, 0x04,
73170x7C, 0x48, 0x30, 0x81, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
73180x14, 0x20, 0x14, 0x00, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x40, 0x17, 0xC0,
73190x70, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x00, 0x5F, 0x80, 0x6F, 0x46, 0xC5, 0x05,
73200x70, 0x05, 0x40, 0x1F, 0x00, 0x7D, 0x81, 0x74, 0x01, 0x30, 0x47, 0x40, 0x1B,
73210x00, 0x71, 0x03, 0xCC, 0x09, 0x60, 0x37, 0x40, 0x1C, 0xA0, 0x7D, 0x02, 0xB4,
73220x09, 0x10, 0x05, 0x40, 0x43, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
73230xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0x31, 0x10, 0xD1,
73240x03, 0x34, 0x03, 0xD2, 0x0C, 0x48, 0x77, 0x0A, 0xCD, 0x03, 0x04, 0x07, 0xD3,
73250x0C, 0x44, 0x37, 0x00, 0xCD, 0x08, 0x36, 0x03, 0x10, 0x1D, 0x40, 0xB1, 0x60,
73260x01, 0x02, 0x04, 0x23, 0xD0, 0x3C, 0x40, 0x81, 0x04, 0xDD, 0x80, 0x34, 0x0B,
73270x04, 0x1C, 0x60, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80,
73280x38, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x7B, 0x00, 0xE1, 0x02,
73290xB6, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xE5, 0x80, 0x85, 0x08, 0x50, 0x0E,
73300x60, 0x9B, 0x00, 0x6D, 0x40, 0x36, 0x07, 0x18, 0x0E, 0x40, 0x3B, 0x40, 0x21,
73310x10, 0x86, 0x03, 0x50, 0x17, 0x49, 0x08, 0x00, 0xAD, 0x02, 0xB6, 0x03, 0x10,
73320x0E, 0x60, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x78,
73330x00, 0xEF, 0x01, 0xBC, 0x06, 0xD0, 0x1E, 0xC2, 0x71, 0x02, 0x61, 0x01, 0xBC,
73340x3F, 0xF0, 0xFE, 0xC0, 0x5B, 0x00, 0xED, 0x01, 0x8D, 0x05, 0x78, 0x3E, 0x41,
73350x7B, 0x00, 0xED, 0x01, 0xBC, 0x07, 0x30, 0x1E, 0xC2, 0x69, 0x00, 0x63, 0xA0,
73360x8C, 0x07, 0xD1, 0x12, 0xC0, 0x49, 0x00, 0xED, 0x81, 0xBC, 0x06, 0x38, 0x1E,
73370xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB0, 0x35, 0x00,
73380xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0xB7, 0x00, 0x5F, 0x00, 0x7C, 0x03,
73390xC0, 0x0D, 0x40, 0x17, 0x00, 0xCF, 0x00, 0x7C, 0x00, 0xF1, 0x2D, 0xC0, 0x37,
73400x20, 0x5F, 0x80, 0x7C, 0xB3, 0xC0, 0x0D, 0xC8, 0x27, 0x00, 0x4F, 0x00, 0x7C,
73410x03, 0xF0, 0x04, 0xC0, 0x17, 0x00, 0x9D, 0x00, 0x3C, 0x00, 0xF1, 0x0D, 0xC8,
73420x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x7F, 0x00, 0xFF,
73430x01, 0xFC, 0x13, 0xF8, 0x8F, 0xC0, 0x7F, 0x04, 0xF7, 0x09, 0xCC, 0x87, 0xF0,
73440x1F, 0xC0, 0x7C, 0x00, 0xEB, 0x01, 0xEC, 0x07, 0xF9, 0x9F, 0xC0, 0x7F, 0x00,
73450xFF, 0x09, 0xCC, 0x0F, 0xB1, 0x1F, 0xC0, 0x3B, 0x00, 0x33, 0x01, 0xEE, 0x27,
73460x30, 0x17, 0xC0, 0x4F, 0x00, 0x7F, 0x81, 0xCC, 0x05, 0xC0, 0x9A, 0xC0, 0x1A,
73470x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x39, 0x00, 0xED, 0x08,
73480xB4, 0x23, 0xD0, 0x0E, 0x48, 0x3B, 0x01, 0xED, 0x00, 0x84, 0x03, 0xD1, 0x0E,
73490x4E, 0x38, 0x40, 0xE1, 0x00, 0x84, 0x00, 0x78, 0x0E, 0x40, 0x1B, 0x08, 0xFD,
73500x00, 0x84, 0x13, 0x10, 0x0E, 0x42, 0x3B, 0x03, 0xA1, 0x80, 0xBC, 0x03, 0x14,
73510x06, 0x40, 0x0B, 0x08, 0x2D, 0x98, 0x84, 0x20, 0x90, 0x0A, 0x40, 0x54, 0x20,
73520x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0xED, 0x00, 0xB4,
73530x0B, 0xD0, 0x8E, 0x40, 0x3B, 0x28, 0xED, 0x00, 0xA4, 0x03, 0xD0, 0x0E, 0x40,
73540x1A, 0x00, 0xE1, 0x00, 0x84, 0x41, 0xD0, 0x0E, 0x44, 0x1B, 0x00, 0xED, 0x90,
73550xA4, 0xC3, 0x18, 0x86, 0x40, 0xAB, 0x0A, 0x61, 0x08, 0xA4, 0x01, 0x54, 0x06,
73560x40, 0x0B, 0x00, 0x6D, 0x00, 0x84, 0x40, 0xD0, 0x0E, 0x40, 0x22, 0x01, 0x04,
73570x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x03,
73580xD0, 0x0C, 0x00, 0x33, 0x10, 0x9D, 0x0B, 0x24, 0x2F, 0xD0, 0x1C, 0x5A, 0x02,
73590x00, 0xC1, 0x40, 0x05, 0x01, 0x50, 0x0C, 0x40, 0x07, 0x00, 0x8D, 0x02, 0x24,
73600x07, 0x1A, 0x08, 0x40, 0x63, 0xC0, 0x41, 0x00, 0x14, 0x01, 0x50, 0x24, 0x40,
73610x13, 0x20, 0x0D, 0x03, 0x05, 0x0C, 0x90, 0x0C, 0x40, 0x08, 0x20, 0x0C, 0x00,
73620x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x00, 0xDF, 0x00, 0x3C, 0x42, 0xD0,
73630x0D, 0xC0, 0x3F, 0x00, 0x9F, 0x00, 0xEC, 0x03, 0xF0, 0x1F, 0xC0, 0x26, 0x00,
73640xC1, 0x00, 0x4C, 0x23, 0xF0, 0x0F, 0xC0, 0x27, 0x00, 0x9F, 0x01, 0xEC, 0x0F,
73650x14, 0x01, 0xE2, 0x77, 0x04, 0x13, 0x02, 0x64, 0x03, 0x50, 0xA5, 0x40, 0x07,
73660x00, 0xDF, 0x03, 0x4C, 0x0F, 0xD0, 0x0D, 0xC2, 0x56, 0x00, 0x06, 0x00, 0x00,
73670x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xDD, 0x00, 0x7C, 0x03, 0xF1, 0x0D,
73680x40, 0x37, 0x20, 0x9F, 0x10, 0x5C, 0x03, 0xF0, 0xCD, 0xC0, 0xA1, 0x10, 0x97,
73690x01, 0x7D, 0x00, 0x70, 0x0D, 0xC0, 0x87, 0x00, 0x1F, 0x04, 0x5C, 0x43, 0x72,
73700x21, 0xE0, 0xA7, 0x80, 0x1F, 0x28, 0x74, 0x03, 0xA0, 0x05, 0xC0, 0x07, 0x00,
73710x9D, 0x04, 0x7C, 0x0B, 0xB0, 0x0D, 0xC0, 0xB7, 0x20, 0x0C, 0x00, 0x00, 0x00,
73720x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0xFF, 0x20, 0xFC, 0x02, 0xB0, 0x0F, 0xE0,
73730x3B, 0xA0, 0x1B, 0x00, 0xCE, 0x43, 0x30, 0x0C, 0xC0, 0x24, 0x00, 0xFB, 0x00,
73740xAC, 0x01, 0xB0, 0x0F, 0xC0, 0x2F, 0x00, 0xA3, 0x00, 0xCC, 0x03, 0xF0, 0x0A,
73750xC0, 0x28, 0x10, 0x73, 0x59, 0x8C, 0x03, 0x32, 0x47, 0xC0, 0x0C, 0x00, 0xED,
73760x02, 0xCC, 0x47, 0x30, 0x0F, 0xC0, 0x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
73770x00, 0x01, 0x20, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x03, 0x90, 0x0D, 0x40, 0x37,
73780x98, 0x11, 0x01, 0x44, 0x03, 0x10, 0x0D, 0x42, 0x64, 0x08, 0xD1, 0x01, 0x6C,
73790x04, 0xB0, 0x0D, 0xC2, 0xE7, 0x04, 0x11, 0x01, 0x44, 0x03, 0xD0, 0x39, 0x44,
73800x64, 0x01, 0x41, 0x01, 0x6C, 0x07, 0x10, 0x24, 0x40, 0x84, 0x02, 0x1D, 0x00,
73810x05, 0x01, 0x10, 0x0D, 0x4E, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
73820x01, 0xA0, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x03, 0x90, 0x0D, 0x48, 0x37, 0x20,
73830x11, 0x01, 0x04, 0x03, 0x10, 0x0D, 0x60, 0x44, 0x00, 0xD1, 0x11, 0x64, 0x07,
73840x92, 0x0D, 0x42, 0x67, 0x80, 0x11, 0x01, 0x64, 0x83, 0x50, 0x11, 0x41, 0x56,
73850x00, 0x19, 0x00, 0x46, 0x07, 0x10, 0x05, 0x40, 0x04, 0x04, 0x5D, 0x00, 0x44,
73860x1B, 0x14, 0x09, 0x40, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
73870x08, 0x30, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x90, 0x0C, 0x40, 0x33, 0x00, 0x81,
73880x01, 0x04, 0x03, 0x14, 0x0C, 0x60, 0x20, 0x20, 0xC1, 0x00, 0x24, 0x00, 0x92,
73890x0C, 0x60, 0x01, 0x90, 0x01, 0x01, 0x24, 0x03, 0xD0, 0x00, 0x42, 0x22, 0x00,
73900xCD, 0x00, 0x24, 0x03, 0x14, 0x04, 0x40, 0x20, 0x00, 0xCD, 0x00, 0x04, 0x02,
73910x10, 0x08, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
73920x36, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xB0, 0x0D, 0x40, 0x3F, 0x00, 0x11, 0x20,
73930xC4, 0x03, 0x30, 0x0F, 0xC0, 0x04, 0x20, 0xDB, 0x00, 0x6D, 0x01, 0xB1, 0x0F,
73940x40, 0x27, 0x18, 0x93, 0x00, 0xAC, 0x03, 0x70, 0x01, 0xC0, 0x26, 0x00, 0x5B,
73950x00, 0x4C, 0x01, 0x30, 0x05, 0xE0, 0x04, 0x00, 0x0F, 0x00, 0x4C, 0x03, 0x30,
73960x0D, 0xC2, 0x07, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x3F,
73970x00, 0xFF, 0x00, 0xFC, 0x03, 0x78, 0x0F, 0xC0, 0x3F, 0x10, 0xB7, 0x00, 0xFC,
73980x03, 0xF0, 0x0F, 0xC0, 0x2F, 0x10, 0x7F, 0x00, 0xFC, 0x00, 0x70, 0x0F, 0xC0,
73990x2F, 0x00, 0xBF, 0x00, 0xDC, 0x03, 0xF0, 0x0B, 0xC0, 0x2D, 0x00, 0x73, 0x00,
74000xBC, 0x00, 0xF0, 0x07, 0x00, 0x0F, 0x08, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x0F,
74010xC0, 0x17, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7B, 0x00,
74020x33, 0x00, 0xCC, 0x03, 0x30, 0x0B, 0xC0, 0x2F, 0x00, 0xA3, 0x00, 0x8C, 0x06,
74030xB0, 0x03, 0xC0, 0x68, 0x02, 0x3F, 0x01, 0x8C, 0x04, 0x70, 0x1B, 0xC0, 0x3F,
74040x00, 0x33, 0x0C, 0xCC, 0x04, 0xB0, 0x2B, 0x10, 0x4C, 0x00, 0xF3, 0x01, 0xCC,
74050x02, 0x30, 0x0B, 0xD0, 0x4C, 0x00, 0xB3, 0x00, 0xCC, 0x07, 0xF0, 0x0F, 0xC0,
74060x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x14, 0x11,
74070x00, 0xC4, 0x03, 0x11, 0x49, 0x40, 0x6F, 0x00, 0x91, 0x0B, 0x44, 0x84, 0x50,
74080x01, 0x40, 0x24, 0x21, 0x1D, 0x21, 0x44, 0x84, 0x10, 0x19, 0x40, 0x3F, 0x04,
74090x11, 0x02, 0x44, 0x04, 0x10, 0x2F, 0x42, 0x24, 0x10, 0xD1, 0x20, 0x44, 0x02,
74100x10, 0x0C, 0x41, 0x44, 0x00, 0x8B, 0x00, 0x54, 0x07, 0xD0, 0x1D, 0x40, 0x0C,
74110x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x37, 0x21, 0x00, 0x00,
74120x04, 0x03, 0x10, 0x08, 0x41, 0x23, 0x00, 0xC1, 0x00, 0x44, 0x02, 0x10, 0x00,
74130x40, 0x20, 0x10, 0x1D, 0x00, 0x05, 0x00, 0x52, 0x08, 0x42, 0x33, 0x82, 0x81,
74140x02, 0x04, 0x00, 0x12, 0x68, 0x60, 0x00, 0x00, 0xD1, 0x40, 0x04, 0x06, 0x50,
74150x58, 0x40, 0x00, 0x00, 0xC1, 0x00, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x4E, 0x80,
74160x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x08, 0x51, 0x01, 0x44,
74170x03, 0x10, 0x09, 0x40, 0x67, 0x40, 0xD1, 0x00, 0x45, 0x00, 0x50, 0x11, 0x50,
74180x34, 0x00, 0x1D, 0x01, 0x44, 0x44, 0x11, 0x19, 0x41, 0x37, 0x00, 0x91, 0x00,
74190x40, 0x04, 0x18, 0x0C, 0x60, 0x40, 0x40, 0xD1, 0x04, 0x44, 0x06, 0x50, 0x41,
74200x40, 0x44, 0x20, 0xD9, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0x0E, 0x20, 0x06,
74210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x73, 0x00, 0x13, 0x13, 0x4D, 0x03,
74220x34, 0x01, 0xC0, 0x67, 0x00, 0x93, 0x00, 0x4C, 0x03, 0x30, 0x39, 0xC8, 0x24,
74230x10, 0x0F, 0x03, 0x4C, 0x0C, 0x70, 0x19, 0xC8, 0x37, 0x40, 0x13, 0x04, 0x4C,
74240x18, 0x34, 0x09, 0xC0, 0xE4, 0x00, 0xC3, 0x00, 0x4D, 0x06, 0x70, 0x1D, 0xC0,
74250xC4, 0x00, 0x93, 0x01, 0x6C, 0x03, 0xF0, 0x4D, 0xD0, 0x02, 0x20, 0x0E, 0x00,
74260x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0xFD, 0x40, 0x2F, 0x00, 0xBC, 0x03, 0xF1,
74270x93, 0xC0, 0x37, 0x00, 0xAF, 0x02, 0xFC, 0x02, 0x70, 0x0D, 0xC0, 0x2F, 0x00,
74280x3F, 0x10, 0xFC, 0x80, 0xF0, 0x03, 0xC8, 0x3F, 0x20, 0x3F, 0x23, 0xFC, 0x00,
74290x70, 0x9D, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xB4, 0x1F, 0xC0, 0x0F,
74300x00, 0xAF, 0x09, 0xDC, 0x03, 0xF0, 0x01, 0xC0, 0x1D, 0x00, 0x06, 0x00, 0x00,
74310x00, 0x00, 0x00, 0x02, 0x08, 0x25, 0x00, 0x53, 0x00, 0x6D, 0x03, 0x32, 0x09,
74320xD0, 0x24, 0x00, 0xD3, 0x80, 0x4C, 0x03, 0x34, 0x6D, 0xC0, 0x24, 0x00, 0x13,
74330x42, 0x7C, 0x10, 0x30, 0x29, 0xD1, 0x30, 0x00, 0x83, 0x00, 0x4C, 0x18, 0x30,
74340x09, 0xC0, 0x84, 0x00, 0xD3, 0x00, 0x3C, 0x02, 0xB0, 0x11, 0xC0, 0x04, 0x00,
74350xDB, 0x00, 0x4D, 0x03, 0xF0, 0x0C, 0xC0, 0xA8, 0x20, 0x04, 0x00, 0x00, 0x00,
74360x00, 0x00, 0x13, 0xA0, 0x24, 0x00, 0xD1, 0x00, 0xC4, 0x43, 0x10, 0x09, 0x40,
74370x10, 0x00, 0xD1, 0x00, 0x04, 0x46, 0x10, 0x2D, 0x50, 0x34, 0x00, 0x13, 0x82,
74380x34, 0x08, 0x10, 0x79, 0x40, 0x7C, 0x04, 0xB5, 0x20, 0x2C, 0x0C, 0xB2, 0xAD,
74390x40, 0xC4, 0x06, 0xD1, 0x01, 0x74, 0x2A, 0x10, 0x08, 0x40, 0x40, 0x00, 0xDB,
74400x00, 0x44, 0x03, 0xD0, 0x01, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
74410x00, 0x03, 0x20, 0x30, 0x40, 0x81, 0x21, 0x04, 0x03, 0x14, 0x08, 0x08, 0x20,
74420x89, 0x81, 0x00, 0x06, 0x06, 0x10, 0x01, 0x40, 0x20, 0x00, 0x08, 0x03, 0x34,
74430x0C, 0x18, 0x08, 0x40, 0x70, 0x00, 0x09, 0x00, 0x14, 0x2C, 0x94, 0x8C, 0x40,
74440x02, 0x00, 0xC1, 0x41, 0x34, 0x02, 0x90, 0x0C, 0x40, 0x52, 0x40, 0xC9, 0x00,
74450x05, 0x03, 0xD0, 0x0C, 0x40, 0x1C, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
74460x04, 0x00, 0x7C, 0x40, 0xF1, 0x19, 0x04, 0x07, 0x10, 0x18, 0x40, 0x68, 0x00,
74470xB1, 0x81, 0xC6, 0x04, 0x10, 0x96, 0x40, 0x6C, 0x40, 0x21, 0x21, 0xB4, 0x44,
74480x18, 0x16, 0x62, 0x78, 0x10, 0x0D, 0x01, 0xB4, 0x04, 0x94, 0x1E, 0x40, 0x6A,
74490x00, 0xE1, 0x50, 0x36, 0x06, 0x10, 0x3E, 0x50, 0x4E, 0x04, 0xE9, 0x01, 0x86,
74500x07, 0xD0, 0x16, 0x60, 0x3C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
74510x18, 0x30, 0x00, 0x83, 0x08, 0x0D, 0x03, 0x10, 0x08, 0xC0, 0x20, 0x40, 0xC3,
74520x00, 0x0D, 0x22, 0x30, 0x04, 0x48, 0x20, 0xB2, 0x09, 0x52, 0x3C, 0x20, 0x34,
74530x88, 0xC0, 0x30, 0x00, 0x0B, 0x00, 0x1C, 0x00, 0x90, 0x0C, 0xC0, 0x86, 0x00,
74540xC3, 0x00, 0x3C, 0x02, 0xB0, 0x00, 0xC0, 0x92, 0x10, 0xCB, 0x04, 0x0C, 0x03,
74550xF0, 0x0C, 0xD0, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38,
74560x3D, 0x00, 0xEF, 0x68, 0xFE, 0x0B, 0xF0, 0x0F, 0xC0, 0xBF, 0x00, 0xFF, 0x00,
74570xFC, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x20, 0xBF, 0x00, 0xFC, 0x20, 0xF0, 0x8E,
74580xC0, 0x3B, 0x00, 0xB7, 0x80, 0xAD, 0x22, 0xF0, 0x8F, 0xC0, 0x2D, 0x40, 0xFF,
74590x04, 0xFC, 0x02, 0xE0, 0x0B, 0xE0, 0x09, 0x40, 0xFF, 0x00, 0xFC, 0x03, 0xF0,
74600x07, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37,
74610x00, 0xD7, 0x60, 0x4C, 0x0B, 0x34, 0x01, 0xC0, 0x6F, 0x00, 0x97, 0x00, 0x7C,
74620x03, 0xF0, 0x09, 0xD0, 0x24, 0x00, 0x9F, 0x01, 0x4C, 0x00, 0xF0, 0x01, 0xC0,
74630x37, 0x81, 0x12, 0x08, 0x0C, 0x00, 0x31, 0x4D, 0xC0, 0x24, 0x00, 0xD3, 0x00,
74640x4C, 0x02, 0xB0, 0x1D, 0xD0, 0x54, 0x00, 0xD3, 0xA0, 0x4C, 0x83, 0xF0, 0x0D,
74650xC0, 0x57, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x3D, 0x00,
74660xE1, 0x00, 0x06, 0x13, 0x10, 0x02, 0x40, 0x3B, 0x00, 0xE1, 0x00, 0xB4, 0x02,
74670xD0, 0x0E, 0x42, 0x28, 0x20, 0xA8, 0x00, 0x84, 0x00, 0xD0, 0x0E, 0x40, 0x3F,
74680x05, 0x31, 0x00, 0x84, 0x00, 0xD4, 0x0F, 0x51, 0x2C, 0x00, 0xE1, 0x00, 0x04,
74690x02, 0x14, 0x0C, 0x40, 0x08, 0x40, 0xF1, 0x00, 0x94, 0x03, 0xD0, 0x0A, 0x44,
74700x4F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xC5,
74710x01, 0x84, 0x27, 0x00, 0x1E, 0x40, 0x63, 0x00, 0xED, 0x01, 0xB4, 0x47, 0xD0,
74720x3C, 0x40, 0x68, 0x08, 0xAC, 0x11, 0x84, 0x05, 0xD0, 0x1A, 0x40, 0x7B, 0x43,
74730x29, 0x05, 0xA5, 0x04, 0x98, 0x1E, 0x40, 0x68, 0x80, 0xE1, 0x01, 0x84, 0x07,
74740x10, 0x12, 0x60, 0x5C, 0x00, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x40, 0x07,
74750x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x33, 0x10, 0xD1, 0x00,
74760x04, 0x03, 0x10, 0x0C, 0x40, 0x53, 0x22, 0xC9, 0x00, 0x34, 0x0A, 0xD0, 0x15,
74770x40, 0x30, 0x00, 0xC9, 0x82, 0x04, 0x6B, 0xD0, 0x2C, 0x40, 0x33, 0x00, 0xD9,
74780x01, 0x24, 0x03, 0xD0, 0x0C, 0x50, 0xF0, 0x81, 0x91, 0x01, 0x04, 0x07, 0x10,
74790x08, 0x60, 0x20, 0x00, 0xC1, 0x00, 0x14, 0x03, 0xD0, 0x98, 0x40, 0x4B, 0x20,
74800x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x20, 0x15, 0x00, 0x77, 0x8A, 0x4D,
74810x81, 0x30, 0x76, 0xC0, 0x9F, 0x00, 0x5F, 0x01, 0xFC, 0x0D, 0xF1, 0xB7, 0xC0,
74820x14, 0x20, 0x7F, 0x4B, 0xCC, 0x0D, 0xF0, 0x26, 0xC0, 0x17, 0x10, 0x7B, 0x01,
74830xAC, 0x05, 0x34, 0x05, 0xC2, 0x9C, 0x04, 0x53, 0x01, 0xCC, 0x09, 0x30, 0x07,
74840xC1, 0x1C, 0x00, 0x53, 0x00, 0x4D, 0x01, 0xF2, 0x27, 0xC2, 0x5F, 0x20, 0x06,
74850x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x05, 0x10, 0x1F, 0x00, 0x3C, 0x00,
74860xF0, 0x01, 0xC1, 0x07, 0x00, 0x17, 0x08, 0x7C, 0x10, 0xF0, 0x21, 0xC0, 0x07,
74870x00, 0x1B, 0x02, 0x7D, 0x08, 0xF0, 0x41, 0xC0, 0x87, 0x00, 0x17, 0x08, 0x5C,
74880x28, 0x70, 0x20, 0xD0, 0x07, 0x40, 0x1F, 0x08, 0x7D, 0x60, 0x70, 0x11, 0xC0,
74890x47, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC1, 0x4B, 0x00, 0x0C, 0x00,
74900x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x93, 0x00, 0x4C, 0x26, 0x30,
74910x09, 0xC0, 0x24, 0x04, 0x9F, 0x00, 0x7C, 0x16, 0xF0, 0x09, 0xC0, 0x24, 0x00,
74920x9F, 0x04, 0x7C, 0x82, 0xB0, 0x09, 0xC4, 0x26, 0x40, 0x93, 0x04, 0x4C, 0x12,
74930x34, 0x19, 0xC0, 0x24, 0x01, 0x93, 0x08, 0x0C, 0x02, 0x30, 0x09, 0xC0, 0x27,
74940x00, 0x9F, 0x01, 0x4C, 0x02, 0xF0, 0x09, 0xC0, 0x40, 0x20, 0x0C, 0x00, 0x00,
74950x00, 0x00, 0x00, 0x01, 0x20, 0x22, 0x00, 0x91, 0x00, 0x44, 0x02, 0x11, 0x09,
74960x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0xA9, 0x41, 0x24, 0x00, 0x9D,
74970x00, 0x34, 0x0A, 0x10, 0x69, 0x40, 0x24, 0x00, 0x91, 0x01, 0x44, 0x16, 0x10,
74980x19, 0xD0, 0x22, 0x00, 0x91, 0x02, 0x45, 0x02, 0x10, 0x09, 0x40, 0x27, 0x20,
74990x9D, 0x09, 0x6C, 0x02, 0xD0, 0x09, 0x50, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
75000x00, 0x00, 0x18, 0xA0, 0x24, 0x40, 0x91, 0x20, 0x44, 0x02, 0x11, 0x09, 0x40,
75010x25, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x0D, 0x50, 0x25, 0x00, 0x9D, 0x00,
75020x74, 0x06, 0x90, 0x09, 0x40, 0x22, 0x02, 0x91, 0x00, 0x64, 0x02, 0x14, 0x49,
75030x48, 0x24, 0x00, 0x91, 0x02, 0x64, 0x22, 0x18, 0x19, 0x40, 0x27, 0x00, 0x8D,
75040x00, 0x65, 0x02, 0xD0, 0x09, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
75050x00, 0x10, 0x20, 0x24, 0x00, 0x81, 0x04, 0x24, 0x12, 0x10, 0x49, 0x40, 0x61,
75060x91, 0x8D, 0x04, 0x34, 0x02, 0xC0, 0x48, 0x40, 0x21, 0x00, 0x8D, 0x20, 0x74,
75070x02, 0x00, 0x08, 0x42, 0x20, 0x89, 0x81, 0x44, 0x26, 0x02, 0x18, 0x48, 0x40,
75080x26, 0x40, 0x81, 0x00, 0x24, 0x12, 0x14, 0x58, 0x40, 0x23, 0x00, 0x8D, 0x04,
75090x24, 0x02, 0xD0, 0x48, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75100x1D, 0xB8, 0x86, 0x02, 0x13, 0x0A, 0x4C, 0x28, 0x34, 0xA1, 0xD0, 0x05, 0x00,
75110x1F, 0x00, 0x7C, 0x00, 0xF0, 0xA1, 0xC0, 0x85, 0x02, 0x5F, 0x00, 0x74, 0x01,
75120xB1, 0x01, 0xC8, 0x96, 0x42, 0x13, 0x0A, 0x6D, 0x00, 0x30, 0xA5, 0x40, 0x84,
75130x0A, 0x03, 0x4A, 0x6C, 0x28, 0x30, 0xA1, 0xC0, 0x07, 0x00, 0x1F, 0x0A, 0x6D,
75140x00, 0xF0, 0x01, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
75150xB8, 0x2F, 0x10, 0xBF, 0x08, 0x5D, 0x22, 0xF0, 0x8B, 0xC0, 0x3E, 0x02, 0xBF,
75160x08, 0xF4, 0x02, 0xF0, 0x8B, 0xC0, 0x2E, 0x00, 0xAF, 0x00, 0xFC, 0x02, 0xF2,
75170x0B, 0x00, 0x27, 0x02, 0xBF, 0x88, 0xDC, 0x82, 0xF2, 0x8B, 0xC0, 0x3F, 0x00,
75180xBF, 0x00, 0xDC, 0x22, 0xD0, 0x8B, 0xC0, 0x2B, 0x00, 0xBF, 0x08, 0x7C, 0x02,
75190xF0, 0x8B, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA8,
75200x3B, 0x00, 0xF2, 0x14, 0xCC, 0x32, 0x34, 0x0B, 0xC0, 0x2C, 0x00, 0x93, 0x00,
75210xCC, 0x02, 0xF0, 0x4B, 0xC1, 0x24, 0x00, 0xB3, 0x00, 0xFC, 0x02, 0x30, 0x0B,
75220xC0, 0xED, 0x00, 0xB3, 0x03, 0xCC, 0x02, 0x30, 0x3B, 0xC0, 0x2C, 0x00, 0xBF,
75230x88, 0xFC, 0x12, 0x30, 0x4A, 0xC1, 0x2C, 0x00, 0xB3, 0x00, 0x4D, 0x02, 0xF0,
75240x09, 0xC0, 0x64, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x05,
75250x05, 0x01, 0x04, 0x04, 0x30, 0x11, 0x21, 0x43, 0x04, 0x08, 0x11, 0x08, 0x44,
75260x00, 0xD0, 0x41, 0x50, 0x04, 0x00, 0x11, 0x00, 0x74, 0x00, 0x10, 0x01, 0x40,
75270xC4, 0x08, 0x41, 0x43, 0x44, 0x01, 0x10, 0x30, 0x40, 0x00, 0x04, 0x1D, 0x00,
75280x5C, 0x51, 0x10, 0x41, 0x42, 0x04, 0x08, 0x0B, 0x12, 0x54, 0x00, 0xD0, 0x81,
75290x40, 0x70, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x25, 0x01,
75300x81, 0x94, 0x05, 0x92, 0x90, 0xCC, 0x40, 0x20, 0x02, 0x91, 0x20, 0x04, 0x02,
75310xD0, 0x48, 0x41, 0x20, 0x00, 0x81, 0x01, 0x74, 0x02, 0x10, 0x0D, 0x40, 0xA1,
75320x09, 0x81, 0x06, 0x04, 0x82, 0x10, 0x68, 0x48, 0x20, 0x00, 0x8D, 0x00, 0x34,
75330x32, 0x10, 0x48, 0x51, 0x20, 0x00, 0x89, 0x0C, 0x04, 0x02, 0xD0, 0x08, 0x40,
75340x48, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x4A, 0x91,
75350x10, 0x44, 0x02, 0x90, 0x39, 0x40, 0x24, 0x40, 0x91, 0x00, 0x44, 0x02, 0xD0,
75360x09, 0x40, 0x24, 0x00, 0x91, 0x40, 0x74, 0x12, 0x10, 0x09, 0x40, 0x24, 0x00,
75370x91, 0x00, 0x45, 0x12, 0x10, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x14, 0x02,
75380x10, 0x69, 0x40, 0x24, 0x20, 0x89, 0x00, 0x54, 0x02, 0xD0, 0x09, 0x40, 0x60,
75390x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x21, 0x00, 0x93, 0x00,
75400x4C, 0x02, 0xB0, 0x29, 0xD0, 0xA4, 0x02, 0x83, 0x00, 0x4D, 0x02, 0xF0, 0x09,
75410xC9, 0x24, 0x40, 0x93, 0x03, 0x7C, 0x4E, 0x34, 0x48, 0xC0, 0x25, 0x40, 0x93,
75420x0B, 0x4C, 0x06, 0x24, 0x09, 0xD0, 0x64, 0x02, 0x9F, 0x00, 0x7C, 0x0E, 0x34,
75430x09, 0xC0, 0xA4, 0x24, 0x9B, 0x01, 0x4D, 0x02, 0xF0, 0x09, 0xD0, 0x14, 0x20,
75440x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x65, 0x10, 0x9F, 0x04, 0x3C,
75450x42, 0x70, 0x09, 0xC0, 0x67, 0x00, 0x9F, 0x02, 0x7C, 0x02, 0xF1, 0x48, 0xC0,
75460xE7, 0x00, 0x9F, 0x02, 0x7C, 0x06, 0xF1, 0x09, 0xC8, 0x23, 0x40, 0x9F, 0x01,
75470x7C, 0x06, 0xF0, 0x08, 0xC0, 0x67, 0x00, 0x9F, 0x05, 0x7C, 0x12, 0xF0, 0x19,
75480xC1, 0x27, 0x00, 0x9F, 0x04, 0x7D, 0x02, 0xF0, 0x08, 0xC0, 0x5B, 0x00, 0x04,
75490x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x13, 0x80, 0x4C, 0x00,
75500x30, 0x00, 0xC0, 0x83, 0x40, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x04,
75510x00, 0x1F, 0x10, 0x7E, 0x08, 0xF2, 0x01, 0xD1, 0x06, 0x01, 0x03, 0x82, 0x4C,
75520x40, 0x31, 0x01, 0xC1, 0xC6, 0x00, 0x13, 0x00, 0x4C, 0x04, 0x30, 0x20, 0xC0,
75530x84, 0x00, 0x1F, 0x00, 0x4D, 0x00, 0xF0, 0x01, 0xC0, 0x50, 0x20, 0x04, 0x00,
75540x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x14, 0x04, 0x51, 0x01, 0xC5, 0x09, 0x10,
75550x05, 0xC0, 0x5D, 0x00, 0x51, 0x00, 0x74, 0x01, 0xD0, 0x17, 0x60, 0x14, 0x00,
75560x7D, 0x03, 0xB4, 0x01, 0xD0, 0x27, 0x44, 0x5C, 0x00, 0x5B, 0x11, 0xAC, 0x15,
75570xB1, 0x57, 0xC0, 0x1E, 0x40, 0x70, 0x00, 0xC4, 0x11, 0x14, 0x37, 0x40, 0x10,
75580x00, 0x5D, 0x11, 0x44, 0x01, 0xD0, 0x05, 0x50, 0x50, 0x80, 0x00, 0x00, 0x00,
75590x00, 0x00, 0x00, 0x10, 0xA0, 0x32, 0x40, 0xD1, 0x00, 0x24, 0x07, 0x11, 0x0C,
75600x40, 0x31, 0x04, 0xC1, 0x00, 0x34, 0x07, 0xD0, 0x1C, 0x48, 0x34, 0x00, 0xCD,
75610x02, 0x34, 0x02, 0xD8, 0x2C, 0x60, 0x32, 0x90, 0xC9, 0x21, 0x04, 0x87, 0x58,
75620x0C, 0x42, 0x30, 0x00, 0xC0, 0x04, 0x04, 0x03, 0x10, 0x3C, 0x40, 0x20, 0x00,
75630xCD, 0x00, 0x04, 0x83, 0xD0, 0x0C, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00,
75640x00, 0x00, 0x04, 0x80, 0x3C, 0x20, 0xA1, 0x10, 0xA5, 0x1A, 0x10, 0x0E, 0x40,
75650x31, 0x04, 0xE1, 0x00, 0xB4, 0x0A, 0xD0, 0x04, 0x41, 0x38, 0x01, 0x6D, 0x02,
75660xB6, 0x40, 0xD8, 0x03, 0x40, 0xAA, 0x82, 0xE9, 0x00, 0xA4, 0x00, 0xD0, 0x0E,
75670x40, 0x7A, 0x00, 0xE1, 0x01, 0x84, 0x03, 0x10, 0x0F, 0x41, 0x28, 0x00, 0xED,
75680x00, 0x85, 0x03, 0xD0, 0x0E, 0x40, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
75690x00, 0x14, 0x18, 0x78, 0x00, 0xE3, 0x01, 0xAC, 0x16, 0x34, 0x1E, 0xC0, 0x79,
75700x00, 0xE3, 0x01, 0xBC, 0x06, 0xD0, 0x16, 0x40, 0xF8, 0x01, 0x2D, 0x01, 0xB4,
75710x05, 0xF0, 0x16, 0xD0, 0x72, 0x00, 0xAB, 0x01, 0x8C, 0x04, 0x74, 0x9E, 0xC0,
75720x78, 0x00, 0xF3, 0x81, 0xCC, 0x07, 0x34, 0x1E, 0xC0, 0x68, 0x00, 0xAF, 0x01,
75730x84, 0x07, 0xF0, 0x1C, 0xC0, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75740x10, 0xB8, 0x35, 0x40, 0x9F, 0x14, 0x5C, 0x22, 0xF0, 0x0D, 0xC0, 0x35, 0x00,
75750xDF, 0x00, 0x7C, 0x02, 0xF0, 0x05, 0xD0, 0x77, 0x00, 0x5F, 0x00, 0x6C, 0x00,
75760xF0, 0x00, 0xD0, 0x25, 0x20, 0x9F, 0x02, 0x3C, 0x00, 0xB1, 0x09, 0xD0, 0x37,
75770x00, 0xDF, 0x00, 0x7D, 0x03, 0xE0, 0x0D, 0xC0, 0x27, 0x00, 0x9F, 0x02, 0x7D,
75780x03, 0xF0, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
75790x20, 0x7D, 0x00, 0xFF, 0x21, 0x8C, 0x06, 0x38, 0x8F, 0xC0, 0x6D, 0x00, 0xF3,
75800x01, 0xFC, 0x06, 0xF0, 0x1F, 0xD0, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x06, 0xF0,
75810x13, 0xC0, 0x5F, 0x20, 0xF7, 0x23, 0xCC, 0x04, 0x31, 0x9F, 0xC0, 0x7C, 0x08,
75820xF3, 0x01, 0x8C, 0x07, 0x31, 0x0B, 0xC0, 0x6F, 0x00, 0xEF, 0x03, 0xCC, 0x07,
75830xF2, 0x1F, 0xC2, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00,
75840x39, 0x00, 0xED, 0x00, 0x84, 0x02, 0x38, 0x0F, 0x40, 0x08, 0x40, 0xE1, 0x00,
75850xBC, 0x02, 0xD0, 0x26, 0x40, 0x38, 0x02, 0x6D, 0x10, 0xB4, 0xA0, 0xD0, 0x82,
75860x40, 0x0F, 0x10, 0xE1, 0x04, 0x94, 0x10, 0x10, 0xE6, 0x41, 0x3C, 0x00, 0xF1,
75870x10, 0x84, 0x83, 0x14, 0x8A, 0x40, 0x2B, 0x04, 0xED, 0x08, 0x84, 0x03, 0xD0,
75880x0E, 0x40, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39,
75890x00, 0xED, 0x00, 0x84, 0x02, 0x90, 0x8E, 0x40, 0x29, 0x00, 0xE1, 0x00, 0xB4,
75900x42, 0xD0, 0x06, 0x40, 0x38, 0x04, 0x2D, 0x00, 0xB4, 0x00, 0xD0, 0x02, 0x40,
75910x2B, 0x02, 0xED, 0x80, 0xC4, 0x00, 0x10, 0x04, 0x40, 0x38, 0x04, 0x61, 0x00,
75920xF4, 0x03, 0x10, 0x8A, 0x41, 0x2B, 0x02, 0xAD, 0x00, 0x84, 0x03, 0xD0, 0x2C,
75930x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x31, 0x00,
75940xCD, 0x00, 0x44, 0x02, 0x10, 0x1C, 0x40, 0x00, 0x04, 0xC1, 0x49, 0x34, 0x02,
75950xD0, 0x25, 0x40, 0x70, 0x00, 0x4D, 0x01, 0x34, 0x00, 0xD2, 0x10, 0x40, 0x23,
75960x00, 0xC9, 0x0A, 0x14, 0xC8, 0x14, 0x04, 0x50, 0xF0, 0x00, 0x41, 0x00, 0x34,
75970x0B, 0x10, 0x18, 0x40, 0x23, 0x00, 0x9D, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40,
75980x58, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x35, 0x00, 0xDF,
75990x07, 0xCC, 0x02, 0xB0, 0x4D, 0xC0, 0xE5, 0x00, 0xD3, 0x00, 0x3C, 0x02, 0xF0,
76000x05, 0xD0, 0x3C, 0x00, 0x1F, 0x02, 0x7C, 0x08, 0xF0, 0x21, 0xC1, 0x3F, 0x00,
76010xDF, 0x23, 0x0D, 0x08, 0x30, 0x11, 0xC0, 0xF4, 0x08, 0xD3, 0x00, 0x7C, 0x23,
76020x30, 0x0D, 0xC0, 0xB7, 0x00, 0x9F, 0x00, 0x4D, 0x03, 0xF0, 0x0D, 0xC0, 0x74,
76030x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x37, 0x10, 0x9F, 0x00,
76040x7E, 0x02, 0x70, 0x0D, 0xC2, 0x63, 0x10, 0xDF, 0x00, 0x5C, 0x02, 0xF0, 0xC5,
76050xC0, 0x37, 0x00, 0x5F, 0x00, 0x7C, 0x10, 0xF0, 0x41, 0xC0, 0x37, 0x00, 0xD7,
76060x10, 0x7C, 0x0C, 0xF0, 0x00, 0xC0, 0x37, 0x04, 0xDF, 0x00, 0x44, 0x0B, 0xF0,
76070x0C, 0xC1, 0x27, 0x01, 0x9F, 0x00, 0x7C, 0x03, 0xF0, 0x1D, 0xC2, 0x07, 0x00,
76080x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0xEF, 0x10, 0xCC,
76090x06, 0x30, 0x0F, 0xC0, 0x04, 0x00, 0xF3, 0x00, 0xFE, 0x52, 0x30, 0x05, 0xC0,
76100x3C, 0x00, 0x37, 0x10, 0xFC, 0x80, 0xF0, 0x03, 0xC0, 0x7B, 0x00, 0x93, 0x00,
76110xCC, 0x00, 0xB0, 0x03, 0x40, 0x2C, 0x00, 0xB3, 0x00, 0xCC, 0x83, 0x32, 0x8F,
76120xC2, 0xBC, 0x00, 0xBF, 0x00, 0xCC, 0x03, 0xF0, 0x0E, 0xC0, 0x04, 0x20, 0x0C,
76130x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0x9D, 0x20, 0x44, 0x0A,
76140x10, 0x0C, 0x50, 0xC4, 0x00, 0xD1, 0x00, 0x74, 0x06, 0x50, 0x15, 0x50, 0x35,
76150x00, 0x5D, 0x07, 0x74, 0x0C, 0xD0, 0x11, 0xC0, 0x35, 0x02, 0x81, 0x00, 0x44,
76160x4C, 0x11, 0x31, 0xC0, 0x36, 0x00, 0xD1, 0x02, 0x44, 0x43, 0x10, 0x21, 0x42,
76170x24, 0x00, 0x9D, 0x09, 0x44, 0x03, 0xD0, 0x0D, 0x40, 0x04, 0x00, 0x08, 0x00,
76180x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x66, 0x00, 0xDD, 0x00, 0x44, 0x28, 0x10,
76190x19, 0x40, 0xE6, 0x00, 0xD1, 0x00, 0x74, 0x02, 0xD0, 0x11, 0x40, 0x36, 0x00,
76200x1D, 0x01, 0x74, 0x44, 0xD0, 0x31, 0x40, 0x17, 0x40, 0xD1, 0x00, 0x44, 0x84,
76210x10, 0x11, 0x02, 0xD3, 0x00, 0xC1, 0x11, 0x06, 0x04, 0x10, 0x29, 0x40, 0x36,
76220x00, 0xDD, 0x00, 0x44, 0x03, 0xD0, 0x0D, 0x40, 0x06, 0x00, 0x02, 0x00, 0x00,
76230x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0xCD, 0x00, 0x05, 0x00, 0x10, 0x09,
76240x40, 0x02, 0x40, 0xC1, 0x00, 0x34, 0x82, 0x50, 0x00, 0x40, 0x33, 0x08, 0x4D,
76250x40, 0x36, 0x00, 0xD0, 0x00, 0x40, 0x11, 0x80, 0xD1, 0x00, 0x44, 0x00, 0x10,
76260x00, 0x40, 0x33, 0x00, 0xC1, 0x00, 0x06, 0x02, 0x10, 0x08, 0x50, 0x22, 0x00,
76270xCD, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x42, 0x80, 0x00, 0x00, 0x00, 0x00,
76280x00, 0x00, 0x00, 0x98, 0x26, 0x00, 0xEF, 0x00, 0x4C, 0x00, 0x34, 0x09, 0xC0,
76290x06, 0x00, 0xD3, 0x00, 0x74, 0x02, 0x70, 0x05, 0xC0, 0x36, 0x00, 0x17, 0x00,
76300x74, 0x00, 0xF2, 0x01, 0xC2, 0x27, 0x20, 0xF3, 0x20, 0x4C, 0x00, 0xB0, 0x03,
76310xD0, 0x07, 0x00, 0x93, 0x00, 0x4C, 0x01, 0x30, 0x09, 0xC0, 0x36, 0x00, 0xBF,
76320x00, 0x4D, 0x03, 0xF0, 0x0D, 0xC0, 0x06, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00,
76330x00, 0x05, 0xB8, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x0B, 0xC0, 0x0D,
76340x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x07, 0xC0, 0x3D, 0x00, 0x7F, 0x00, 0xFC,
76350x00, 0xD0, 0x03, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xBD, 0x00, 0xF4, 0x03, 0xC2,
76360x3E, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x2D, 0x00, 0xBF, 0x00,
76370xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x15, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
76380x03, 0xA0, 0x7F, 0x00, 0xFF, 0x01, 0xFC, 0x27, 0x30, 0x1F, 0xC8, 0x7F, 0x0A,
76390xFF, 0x01, 0xCC, 0x27, 0xF0, 0x1F, 0xC0, 0x7C, 0x00, 0xF3, 0x09, 0xFC, 0x27,
76400xF0, 0x3F, 0xC0, 0x7F, 0x00, 0xF3, 0x01, 0xCC, 0x27, 0x30, 0x9F, 0xC0, 0x78,
76410x00, 0xFF, 0x09, 0xCC, 0x07, 0xB0, 0x13, 0xC0, 0x7E, 0x00, 0xEF, 0x01, 0xFC,
76420x07, 0x30, 0x1F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
76430x08, 0x77, 0x00, 0xDD, 0x01, 0x74, 0x00, 0x10, 0x11, 0x40, 0x07, 0x01, 0x1D,
76440x01, 0x44, 0x00, 0x90, 0x11, 0x40, 0x04, 0x01, 0x11, 0x00, 0x74, 0x10, 0xD0,
76450x01, 0x40, 0x47, 0x00, 0x11, 0x01, 0x44, 0x00, 0x10, 0x01, 0x48, 0x44, 0x00,
76460x1D, 0x00, 0x44, 0x87, 0x51, 0x11, 0x40, 0x74, 0x00, 0x9D, 0x01, 0x74, 0x13,
76470x10, 0x1D, 0x40, 0x0F, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0,
76480x33, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x33, 0x00, 0xDD, 0x00,
76490x04, 0x03, 0xD0, 0x0D, 0x48, 0x34, 0x14, 0xC1, 0x20, 0x34, 0x03, 0xD0, 0x4C,
76500x40, 0x37, 0x00, 0xD9, 0x00, 0x64, 0x03, 0x10, 0x0D, 0x40, 0x31, 0x00, 0xCD,
76510x04, 0x24, 0x03, 0x10, 0x01, 0x48, 0x32, 0x80, 0x8D, 0x00, 0x34, 0x43, 0x19,
76520x0C, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35,
76530x00, 0xDD, 0x00, 0x74, 0x00, 0x10, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x00, 0x44,
76540x00, 0x90, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x74, 0x80, 0xD0, 0x01, 0x40,
76550x07, 0x00, 0x19, 0x00, 0x64, 0x00, 0x11, 0x01, 0x42, 0x05, 0x08, 0x1D, 0x20,
76560x64, 0x07, 0x50, 0x11, 0x41, 0x34, 0x80, 0x1D, 0x01, 0x34, 0x03, 0x18, 0x0D,
76570x42, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x37, 0x00,
76580xDF, 0x00, 0x7C, 0x03, 0x30, 0x0D, 0xC0, 0x37, 0x18, 0xCF, 0x00, 0x4C, 0x03,
76590xF0, 0x0D, 0xC0, 0x34, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x33,
76600x00, 0xCB, 0x00, 0x6C, 0x03, 0x30, 0x0C, 0xC0, 0x35, 0x00, 0xDF, 0x00, 0x6D,
76610x07, 0x30, 0x10, 0xC2, 0x36, 0x00, 0x9F, 0x13, 0x7C, 0x03, 0x30, 0x0D, 0xC2,
76620x23, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xFF,
76630x00, 0xFC, 0x40, 0xF2, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFD, 0x00, 0xF0,
76640x03, 0xD2, 0x0F, 0x00, 0x3F, 0x00, 0xFE, 0x00, 0xF0, 0x03, 0xC2, 0x0F, 0x00,
76650x37, 0x00, 0xDC, 0x00, 0xF6, 0x03, 0xC0, 0x0E, 0x20, 0x3F, 0x00, 0xDC, 0x03,
76660xF0, 0x07, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x1F,
76670x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xDF, 0x00,
76680x7C, 0x03, 0x30, 0x8D, 0xC0, 0x36, 0x00, 0xDF, 0x01, 0x4C, 0x23, 0xF0, 0x0D,
76690xC2, 0x34, 0x04, 0xDF, 0x01, 0x4C, 0x43, 0xF0, 0x0D, 0xE0, 0x37, 0x00, 0xDB,
76700x01, 0x4C, 0x13, 0xF0, 0x8D, 0x80, 0x34, 0x02, 0xD3, 0x18, 0x4C, 0x0E, 0xF0,
76710x01, 0xC0, 0x37, 0x00, 0x93, 0x02, 0x4C, 0x43, 0xF0, 0x0D, 0xC0, 0x2B, 0x20,
76720x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0x74,
76730x00, 0x11, 0x01, 0x40, 0x84, 0x00, 0x1D, 0x00, 0x44, 0x00, 0xD0, 0x10, 0x40,
76740x80, 0x00, 0x1D, 0x80, 0x44, 0x9C, 0xD0, 0x51, 0x40, 0xC7, 0x0A, 0x1D, 0x00,
76750x04, 0x48, 0xD0, 0x21, 0x40, 0x44, 0x20, 0x11, 0xA0, 0x2C, 0x02, 0xD0, 0xA5,
76760x40, 0x77, 0x04, 0x91, 0x00, 0x68, 0x07, 0xD0, 0x0D, 0x40, 0x4F, 0x00, 0x02,
76770x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x74, 0x0F,
76780x10, 0x1C, 0x40, 0x32, 0x02, 0xCD, 0x00, 0x04, 0x43, 0xD0, 0x8C, 0x40, 0xF0,
76790x08, 0xCD, 0x00, 0x04, 0x03, 0xD0, 0x4C, 0x40, 0x73, 0x02, 0xCD, 0x00, 0x04,
76800x0F, 0xD0, 0x0C, 0x40, 0x70, 0x00, 0xD1, 0x00, 0x24, 0x03, 0xD0, 0x04, 0x48,
76810x73, 0x00, 0x88, 0x00, 0x04, 0x27, 0xD0, 0x0C, 0x40, 0x0F, 0x00, 0x00, 0x00,
76820x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x78, 0x00, 0xED, 0x01, 0xF4, 0x64, 0x10,
76830x12, 0x40, 0xC8, 0x00, 0x3D, 0x01, 0x84, 0x04, 0xD0, 0x12, 0x50, 0x48, 0x04,
76840x2D, 0x03, 0x84, 0x04, 0xD0, 0x12, 0x40, 0x4B, 0x02, 0x3D, 0x01, 0x84, 0x04,
76850xD0, 0x33, 0x40, 0x4C, 0x00, 0x31, 0x01, 0xA4, 0x07, 0xD0, 0x16, 0x40, 0x3B,
76860x00, 0xB9, 0x01, 0xA4, 0x07, 0xD0, 0x1E, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00,
76870x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xCF, 0x00, 0x3C, 0x03, 0x30, 0x0C,
76880xC0, 0x32, 0x00, 0xCF, 0x00, 0x0C, 0x03, 0xF0, 0x0C, 0xC0, 0x30, 0x02, 0xDF,
76890x00, 0x0C, 0x03, 0xF0, 0x0C, 0x40, 0x33, 0x00, 0xCF, 0x04, 0x0C, 0x23, 0xF2,
76900x0D, 0x40, 0x30, 0x00, 0xC3, 0x00, 0x2C, 0x0B, 0xF0, 0x00, 0xC0, 0x33, 0x02,
76910x8B, 0x80, 0x0C, 0x23, 0xF0, 0x0C, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00,
76920x00, 0x00, 0x02, 0xB8, 0x3D, 0x00, 0xFF, 0x00, 0xBC, 0x00, 0xF0, 0x82, 0x80,
76930x0F, 0x02, 0x2F, 0x00, 0xFC, 0x00, 0xF1, 0x02, 0xC0, 0x0F, 0x08, 0x3F, 0x00,
76940x7C, 0x00, 0xF0, 0x83, 0xC0, 0x0F, 0x08, 0x2F, 0x00, 0x7C, 0x00, 0xF0, 0x03,
76950xD0, 0x0F, 0x00, 0x2F, 0x09, 0xFC, 0x03, 0xF0, 0x83, 0xC4, 0x3B, 0x01, 0xB7,
76960x00, 0xFC, 0x23, 0xF0, 0x0F, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00,
76970x00, 0x15, 0xA0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x07, 0x34, 0x0D, 0xC0, 0x77,
76980x40, 0xD3, 0x00, 0x7C, 0x07, 0x34, 0x0D, 0xC0, 0x37, 0x08, 0xDF, 0x00, 0x7C,
76990x07, 0x30, 0x1D, 0xD0, 0x70, 0x00, 0xC3, 0x01, 0x4C, 0x03, 0xF0, 0x0D, 0xC0,
77000x37, 0x20, 0xDF, 0x40, 0x7C, 0x01, 0xF0, 0x04, 0xC0, 0x34, 0x00, 0x9F, 0x00,
77010x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
77020x12, 0x88, 0x39, 0x00, 0xED, 0x00, 0xF4, 0x00, 0x10, 0x02, 0x48, 0x0F, 0x00,
77030x21, 0x00, 0xF4, 0x00, 0x10, 0x02, 0x40, 0x0B, 0x00, 0x2D, 0x00, 0xF4, 0x00,
77040x13, 0x03, 0x40, 0x08, 0x00, 0x25, 0x00, 0x84, 0x00, 0xD0, 0x02, 0x40, 0x0B,
77050x00, 0x2D, 0x00, 0xB4, 0x01, 0xD0, 0x06, 0x40, 0x38, 0x00, 0xA9, 0x00, 0xB4,
77060x03, 0xD0, 0x0E, 0x40, 0x4F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
77070x00, 0x79, 0x00, 0xED, 0x01, 0xB4, 0x07, 0x50, 0x1E, 0x40, 0x7B, 0x00, 0xE1,
77080x01, 0xB4, 0x07, 0x10, 0x1E, 0x00, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x07, 0x54,
77090x1E, 0x40, 0x78, 0x00, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00,
77100xED, 0x01, 0xB4, 0x07, 0xD0, 0x12, 0x40, 0x78, 0x80, 0xAD, 0x11, 0xB4, 0x07,
77110xD0, 0x1E, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28,
77120x33, 0x00, 0xCD, 0x00, 0x34, 0x80, 0x50, 0x00, 0x40, 0x03, 0x00, 0x01, 0x00,
77130x34, 0x00, 0x10, 0x00, 0x40, 0x03, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x50, 0x00,
77140x40, 0x00, 0x00, 0x05, 0x00, 0x16, 0x00, 0xD0, 0x00, 0x40, 0x03, 0x00, 0x0D,
77150x00, 0x34, 0x07, 0xD0, 0x6C, 0x40, 0x30, 0x80, 0x89, 0x01, 0x34, 0x03, 0xD0,
77160x0C, 0x40, 0x5B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x28, 0x15,
77170x00, 0x5F, 0x00, 0x7C, 0x01, 0x70, 0x05, 0xC0, 0x17, 0x00, 0x53, 0x00, 0x7C,
77180x01, 0x30, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0x70, 0x05, 0xC0,
77190x14, 0x00, 0x51, 0x00, 0x4D, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00,
77200xBC, 0x95, 0xF0, 0x27, 0xD0, 0x14, 0x00, 0x6F, 0x02, 0x7C, 0x01, 0xD0, 0x05,
77210xC0, 0x5F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00,
77220x1F, 0x00, 0xFC, 0x00, 0x90, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00,
77230xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x90, 0x03, 0xC0, 0x0F,
77240x00, 0x3F, 0x00, 0xEC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0x7C,
77250x40, 0xE0, 0x21, 0xC0, 0x07, 0x08, 0x1F, 0x10, 0x74, 0x00, 0xF0, 0x01, 0xC0,
77260x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x9F,
77270x00, 0x7C, 0x06, 0xF0, 0x09, 0xC0, 0x27, 0x10, 0x9F, 0x00, 0x7C, 0x02, 0xF0,
77280x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x19, 0xC0, 0x27, 0x01,
77290x9F, 0x00, 0x7C, 0x26, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x06,
77300x70, 0x49, 0xC0, 0xE5, 0x00, 0x9F, 0x00, 0x4C, 0x16, 0xF0, 0x09, 0xC0, 0x43,
77310x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x00,
77320x74, 0x0A, 0xD0, 0x09, 0x40, 0x27, 0x04, 0x9D, 0x00, 0x74, 0x2E, 0xD0, 0x09,
77330x46, 0xA7, 0x00, 0x9D, 0x03, 0x74, 0x2A, 0xD0, 0x29, 0x40, 0x67, 0x80, 0x9D,
77340x00, 0x74, 0x0A, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x43, 0x74, 0xA2, 0x30,
77350x38, 0x40, 0x24, 0x01, 0x9D, 0x80, 0x6C, 0x0E, 0xD1, 0x09, 0x40, 0x07, 0x00,
77360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x74,
77370x12, 0xD0, 0x4B, 0x40, 0x6F, 0x00, 0xBD, 0x01, 0xF4, 0x02, 0xD0, 0x1B, 0x40,
77380x6F, 0x00, 0xBD, 0x08, 0xF4, 0x02, 0xD0, 0x8B, 0x40, 0x2F, 0x18, 0xBD, 0x01,
77390xF4, 0x02, 0xD0, 0x1B, 0x41, 0x6F, 0x00, 0xBD, 0x04, 0x64, 0x02, 0x58, 0x09,
77400x40, 0x25, 0x08, 0x9D, 0x00, 0x44, 0x0A, 0xD0, 0x09, 0x40, 0x63, 0x00, 0x02,
77410x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x8D, 0x00, 0xB4, 0x06,
77420xD0, 0x0A, 0x40, 0x2B, 0x00, 0xAD, 0x00, 0xB4, 0x06, 0xD2, 0x0A, 0x40, 0x6B,
77430x00, 0xAD, 0x01, 0xB4, 0x06, 0xD0, 0x1A, 0x48, 0x6B, 0x20, 0xAD, 0xC0, 0xB4,
77440x06, 0xD0, 0x0A, 0x48, 0x2B, 0x00, 0xAD, 0x01, 0x74, 0x02, 0x10, 0x09, 0x40,
77450x20, 0x00, 0x9D, 0x00, 0x25, 0x22, 0xD0, 0x08, 0x40, 0x43, 0x80, 0x00, 0x00,
77460x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x00, 0x7C, 0x28, 0xF0,
77470x01, 0xC2, 0x87, 0x02, 0x1F, 0x00, 0x7C, 0x28, 0xF0, 0x01, 0xC0, 0x87, 0x22,
77480x1F, 0x2A, 0x7C, 0x28, 0xF0, 0xA1, 0xC0, 0x07, 0x00, 0x1D, 0x00, 0x7C, 0x28,
77490xF0, 0xA1, 0x40, 0x07, 0x00, 0x3F, 0x0A, 0x6C, 0x00, 0x72, 0x05, 0xC0, 0x05,
77500x00, 0x1F, 0x00, 0x4C, 0x08, 0xF0, 0x01, 0xC8, 0x77, 0xE0, 0x0A, 0x00, 0x00,
77510x00, 0x00, 0x00, 0x19, 0xB8, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF1, 0x09,
77520xCA, 0x27, 0x08, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F,
77530x00, 0x74, 0x82, 0xF1, 0x09, 0xC0, 0x27, 0x08, 0x9F, 0x00, 0x7C, 0x02, 0xF0,
77540x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0xF8, 0x02, 0x72, 0x0B, 0xC0, 0x27, 0x00,
77550xBF, 0x00, 0x7C, 0x12, 0xF8, 0x09, 0xC0, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00,
77560x00, 0x00, 0x18, 0xA0, 0x27, 0x00, 0x9F, 0x00, 0xFC, 0x22, 0xF0, 0x0B, 0xC6,
77570xAC, 0x18, 0xBF, 0x00, 0xFC, 0x22, 0xB0, 0x0B, 0xC0, 0xAF, 0x20, 0xBF, 0x02,
77580xCC, 0x0A, 0xF0, 0x0B, 0xC0, 0x2C, 0x00, 0xB7, 0x00, 0xFC, 0x0A, 0x30, 0x2B,
77590xC0, 0x2C, 0x20, 0xBF, 0x48, 0xBC, 0x02, 0x30, 0x0F, 0xC0, 0x2F, 0x20, 0x9F,
77600x00, 0xF4, 0x02, 0x30, 0x09, 0xC0, 0x77, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
77610x00, 0x1C, 0x08, 0x07, 0x00, 0x1D, 0x00, 0x74, 0x14, 0xD0, 0x01, 0x40, 0x44,
77620x00, 0x1D, 0x00, 0x74, 0x14, 0xD0, 0x01, 0x48, 0x47, 0x01, 0x1D, 0x81, 0x44,
77630x94, 0x90, 0x11, 0x52, 0x04, 0x00, 0x11, 0x00, 0x74, 0x04, 0x10, 0x51, 0x40,
77640x04, 0x00, 0x1D, 0x05, 0x74, 0x00, 0x10, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x00,
77650x64, 0x00, 0x14, 0x01, 0x40, 0x63, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
77660x10, 0xA0, 0x23, 0x00, 0x8D, 0x00, 0x34, 0x03, 0xD0, 0x0D, 0x50, 0x21, 0x01,
77670x8D, 0x00, 0x34, 0x03, 0x90, 0x0C, 0x40, 0x23, 0x01, 0xC5, 0x04, 0x15, 0x03,
77680xD0, 0x4D, 0x41, 0x20, 0x00, 0x81, 0x00, 0x34, 0x13, 0x10, 0x08, 0x14, 0x32,
77690x20, 0x8D, 0x00, 0x76, 0x82, 0x50, 0x08, 0x48, 0x23, 0x10, 0x8D, 0x00, 0x34,
77700x02, 0x10, 0x08, 0x40, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
77710xA8, 0x25, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x25, 0x00, 0x9D,
77720x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x54, 0x02, 0xD0,
77730x0D, 0x40, 0x24, 0x00, 0x91, 0xC0, 0x74, 0x02, 0x12, 0x09, 0x00, 0x24, 0x00,
77740x9D, 0x00, 0x74, 0x12, 0x54, 0x19, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x24, 0x02,
77750x10, 0x09, 0x40, 0x63, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8,
77760x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x25, 0x00, 0x9F, 0x00,
77770x7C, 0x02, 0xB0, 0x09, 0xC0, 0x27, 0x00, 0x97, 0x00, 0x5C, 0x02, 0xF0, 0x09,
77780xC0, 0x24, 0x40, 0x95, 0x00, 0x7C, 0x02, 0x34, 0x09, 0xC0, 0x26, 0x00, 0x9F,
77790x00, 0x7C, 0x4E, 0x70, 0x69, 0xC0, 0x27, 0x00, 0x9F, 0x05, 0x7C, 0x02, 0x10,
77800x09, 0x40, 0x17, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x25,
77810x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x26, 0x04, 0x9F, 0x00, 0x7C,
77820x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x6C, 0x02, 0xB0, 0x09, 0xC0,
77830x27, 0x20, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC2, 0x25, 0x20, 0x9F, 0x00,
77840x7C, 0x02, 0xB2, 0x09, 0xC0, 0x27, 0x04, 0x9F, 0x04, 0x6C, 0x02, 0xF0, 0x09,
77850xC0, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00,
77860x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7E, 0x00,
77870x34, 0x01, 0xC0, 0x07, 0x40, 0x1B, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC4, 0x47,
77880x00, 0x1F, 0x00, 0x7C, 0x00, 0x30, 0x41, 0xC2, 0x04, 0x00, 0x13, 0x00, 0x7C,
77890x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x10, 0xF0, 0x01, 0xC0,
77900x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x14, 0x00, 0x5D,
77910x00, 0xF4, 0x01, 0xD0, 0x04, 0x40, 0x9F, 0x04, 0x5D, 0x01, 0xF4, 0x21, 0x10,
77920x05, 0x00, 0xDF, 0x02, 0x71, 0x88, 0xF0, 0x01, 0xD0, 0x86, 0xC0, 0x19, 0x01,
77930x5D, 0x11, 0xF4, 0x09, 0x10, 0x37, 0x48, 0x14, 0x20, 0x7B, 0x91, 0x74, 0x01,
77940x10, 0xB7, 0x40, 0x1F, 0x00, 0x5D, 0x00, 0xF4, 0x45, 0xD0, 0x05, 0x40, 0x43,
77950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x00,
77960x34, 0x43, 0xD0, 0x08, 0x40, 0xF3, 0x00, 0x8D, 0x08, 0x34, 0x03, 0x10, 0x08,
77970x40, 0xF3, 0x20, 0xD0, 0x02, 0x34, 0x13, 0xD0, 0x2C, 0x40, 0x53, 0x00, 0x8D,
77980x40, 0x76, 0x43, 0x14, 0x3D, 0x40, 0x20, 0x00, 0xC1, 0x04, 0x74, 0x02, 0x50,
77990x30, 0x48, 0x43, 0x00, 0xCC, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x43, 0x00,
78000x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x38, 0x00, 0xED, 0x00, 0xB4,
78010x03, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x07, 0x10, 0x0E, 0x40,
78020x7B, 0x14, 0xE1, 0x40, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x39, 0x00, 0xED, 0x00,
78030xB4, 0x03, 0x12, 0x2E, 0x50, 0x78, 0x00, 0xE9, 0x00, 0xF4, 0xC2, 0x00, 0x02,
78040x41, 0x0B, 0x04, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x13, 0x00, 0x02,
78050x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x78, 0x00, 0xEF, 0x01, 0xBC, 0x07,
78060xF0, 0x1E, 0xC2, 0x5B, 0x00, 0xEF, 0x01, 0xF4, 0x07, 0x30, 0x1E, 0xC8, 0x7F,
78070x10, 0xE3, 0x01, 0xBC, 0x07, 0xD0, 0x1E, 0xC0, 0x7B, 0x00, 0xEF, 0x01, 0xFC,
78080x07, 0x30, 0x17, 0xC8, 0x78, 0x08, 0xE3, 0x21, 0xBC, 0x07, 0x70, 0x16, 0xC0,
78090x4B, 0x00, 0xEF, 0x21, 0xBC, 0x05, 0xF0, 0x1E, 0xC0, 0x53, 0x00, 0x00, 0x00,
78100x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0,
78110x0D, 0xC0, 0x17, 0x08, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0x40, 0x17, 0x00,
78120xD7, 0x20, 0x7C, 0x01, 0xF0, 0x0D, 0xC4, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x01,
78130xF3, 0x05, 0xC0, 0x32, 0x10, 0x5F, 0x00, 0x7C, 0x03, 0xE0, 0x05, 0xC0, 0x07,
78140x00, 0xDF, 0x00, 0x7C, 0x01, 0xF1, 0x0D, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00,
78150x00, 0x00, 0x00, 0x00, 0xA0, 0x7F, 0x00, 0xFF, 0x01, 0xFC, 0x05, 0xF0, 0x1F,
78160xC0, 0x7F, 0x00, 0xF3, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7C, 0x00, 0xFF,
78170x21, 0xBC, 0x85, 0x30, 0x1F, 0xC0, 0x78, 0x02, 0xF3, 0x01, 0xFC, 0x05, 0xF0,
78180x5F, 0xC0, 0x7F, 0x00, 0xFF, 0x09, 0xFC, 0x16, 0xF0, 0x17, 0xC4, 0x6D, 0x00,
78190xFF, 0x09, 0xF4, 0x27, 0x30, 0x9F, 0xC0, 0x1B, 0x00, 0x04, 0x00, 0x00, 0x00,
78200x00, 0x00, 0x15, 0x80, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x09, 0xD0, 0x0E, 0x40,
78210x3B, 0x00, 0xE1, 0x28, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x38, 0x00, 0xED, 0x08,
78220xB4, 0x03, 0x12, 0x0F, 0x40, 0x38, 0x06, 0xE1, 0x18, 0xB4, 0x43, 0xD0, 0x06,
78230x41, 0x3B, 0x00, 0xED, 0x0A, 0xB4, 0x03, 0xD0, 0x07, 0x40, 0x28, 0x00, 0xED,
78240x08, 0xF4, 0x0B, 0x14, 0x0E, 0x40, 0x57, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
78250x00, 0x00, 0x00, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x01, 0xD0, 0x8E, 0x40, 0x1F,
78260x00, 0xE1, 0x00, 0xB4, 0x09, 0xD0, 0x8F, 0x40, 0x39, 0x02, 0x6D, 0x02, 0xF4,
78270x09, 0x10, 0x26, 0x40, 0xBC, 0x08, 0xE1, 0x00, 0xB4, 0x01, 0xD0, 0x4E, 0x40,
78280x3B, 0x02, 0xED, 0x80, 0xB4, 0x93, 0xD0, 0x07, 0x40, 0x19, 0x00, 0xED, 0x40,
78290xB4, 0x01, 0x12, 0x0E, 0x40, 0x23, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
78300x04, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x08, 0xD0, 0x0C, 0x41, 0x07, 0x01,
78310xC1, 0x01, 0x34, 0x82, 0xD0, 0x2C, 0x4D, 0x65, 0x02, 0x8D, 0x88, 0x74, 0x24,
78320x10, 0x08, 0x40, 0x30, 0x00, 0xC1, 0x02, 0x34, 0x0C, 0xD0, 0x00, 0x40, 0x73,
78330x04, 0x9D, 0x0F, 0x34, 0x02, 0xD0, 0x24, 0x40, 0x00, 0x20, 0xCD, 0x09, 0x74,
78340x00, 0x10, 0x0C, 0x60, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
78350xA8, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x36, 0xF0, 0x0D, 0xC0, 0xA7, 0x00, 0xC3,
78360x12, 0x3C, 0x14, 0xF0, 0x2D, 0xC0, 0x85, 0x00, 0x0F, 0x00, 0x7C, 0x02, 0x30,
78370x51, 0x40, 0x74, 0x80, 0xD3, 0x09, 0x74, 0x26, 0xF0, 0x19, 0xC0, 0x33, 0x04,
78380x1E, 0x00, 0x7C, 0x02, 0xF0, 0x14, 0xC0, 0x05, 0x00, 0xDF, 0x01, 0x7C, 0x02,
78390x30, 0x0D, 0xC8, 0x77, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
78400x37, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x1D, 0xC8, 0xC7, 0x20, 0xDF, 0x04,
78410x7C, 0x00, 0xF0, 0x1D, 0x00, 0x26, 0x01, 0x1D, 0x80, 0x7C, 0x0A, 0xF0, 0x01,
78420xD0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x0A, 0xF0, 0x09, 0x41, 0x37, 0x20, 0x9F,
78430x00, 0x78, 0x02, 0xC0, 0x15, 0xC0, 0x07, 0x00, 0xDF, 0x00, 0x7C, 0x0A, 0xF0,
78440x0D, 0xC0, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F,
78450x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x2C, 0x00, 0xF3, 0x05, 0xEC,
78460x00, 0xB0, 0x5F, 0xC0, 0x0F, 0x00, 0x33, 0x20, 0xCC, 0x02, 0x30, 0x03, 0xC0,
78470x3F, 0x00, 0xFF, 0x04, 0xFC, 0x02, 0xF0, 0x03, 0xC0, 0x3F, 0x20, 0x33, 0x20,
78480xCC, 0x17, 0xF0, 0x17, 0xD1, 0x0C, 0x00, 0xFF, 0x10, 0xFC, 0x00, 0x10, 0x0F,
78490xC2, 0x27, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00,
78500xDD, 0x00, 0x74, 0x06, 0xD1, 0x0C, 0x40, 0x44, 0x08, 0xD1, 0x01, 0x44, 0x04,
78510x10, 0x1D, 0x40, 0x47, 0x01, 0x11, 0x01, 0x44, 0x06, 0x10, 0x31, 0x40, 0xF7,
78520x04, 0xDD, 0x01, 0x74, 0x1E, 0xD0, 0x51, 0x40, 0x37, 0x20, 0x11, 0x03, 0x44,
78530x03, 0xD0, 0xC5, 0x40, 0x44, 0x01, 0xDD, 0x00, 0x74, 0x2C, 0x10, 0x0D, 0x46,
78540x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x00, 0xDD,
78550x00, 0x74, 0x06, 0xD0, 0x1D, 0x40, 0x64, 0x04, 0xD1, 0x00, 0x64, 0x0E, 0x10,
78560x0D, 0x40, 0x47, 0x80, 0x91, 0x03, 0x44, 0x0C, 0x10, 0x19, 0x42, 0x77, 0x00,
78570xDD, 0x00, 0x74, 0x04, 0xD0, 0x19, 0x40, 0x37, 0x09, 0x11, 0x01, 0x44, 0x02,
78580xD0, 0x05, 0x40, 0x44, 0x00, 0xDD, 0x00, 0x74, 0x82, 0x40, 0x0D, 0x40, 0x07,
78590x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x30, 0x00, 0xCD, 0x00,
78600x34, 0x02, 0xD0, 0x0D, 0x40, 0x20, 0x40, 0xC1, 0x00, 0x44, 0x02, 0x10, 0x0C,
78610x40, 0x23, 0x60, 0x91, 0x00, 0x04, 0x02, 0x16, 0x08, 0x40, 0x33, 0x20, 0xCD,
78620x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x37, 0x08, 0x81, 0x20, 0x05, 0x02, 0xD0,
78630x04, 0x40, 0x00, 0x00, 0xCD, 0x00, 0x34, 0x00, 0x50, 0x0C, 0x40, 0x43, 0x20,
78640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x36, 0x00, 0xDF, 0x00, 0x7C,
78650x00, 0xF0, 0x0D, 0xC2, 0x24, 0x00, 0xD3, 0x00, 0x6C, 0x00, 0x30, 0x0D, 0xC0,
78660x07, 0x00, 0x13, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC0, 0x37, 0x00, 0xDF, 0x00,
78670x7C, 0x00, 0xF0, 0x09, 0xC0, 0x37, 0x00, 0x13, 0x40, 0x4C, 0x03, 0xF0, 0x05,
78680xC0, 0x04, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x74, 0x0D, 0xC0, 0x07, 0x40, 0x08,
78690x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02,
78700xF0, 0x0F, 0xC8, 0x2B, 0x08, 0xFF, 0x20, 0xFC, 0x02, 0xF0, 0x0E, 0xC0, 0x2F,
78710x00, 0xBF, 0x00, 0xFC, 0x02, 0xF0, 0x0B, 0xC2, 0x2F, 0x00, 0xFF, 0x00, 0xFC,
78720x02, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
78730x0F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xB0, 0x0F, 0xC0, 0x17, 0x22, 0x0E, 0x00,
78740x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x4F, 0x00, 0x33, 0x01, 0xCC, 0x24, 0x30,
78750x13, 0xC0, 0x2C, 0x02, 0xF3, 0x00, 0x8C, 0x07, 0x30, 0xCF, 0xC0, 0x2C, 0x40,
78760x33, 0x08, 0xCC, 0x23, 0x72, 0xC7, 0xC0, 0xCE, 0x00, 0x33, 0x04, 0xDC, 0x00,
78770x30, 0x13, 0xC0, 0xCF, 0x00, 0x3F, 0x01, 0xED, 0x04, 0x30, 0x13, 0xC0, 0x4C,
78780x00, 0x33, 0x01, 0xCC, 0x04, 0x30, 0x13, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00,
78790x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x21, 0x11, 0x00, 0x44, 0x00, 0x10, 0x04,
78800x40, 0x24, 0x09, 0xF1, 0x00, 0x44, 0x03, 0x30, 0x21, 0x40, 0xB0, 0x05, 0x01,
78810x26, 0x05, 0x3B, 0x30, 0xE1, 0x40, 0x05, 0x21, 0x51, 0x0B, 0x44, 0x18, 0x15,
78820x41, 0xC0, 0x23, 0x00, 0x1D, 0x00, 0x44, 0x82, 0x10, 0x01, 0x42, 0x44, 0x00,
78830x11, 0x80, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00,
78840x00, 0x00, 0x11, 0xA0, 0x03, 0x04, 0x11, 0x01, 0x04, 0x12, 0x10, 0x00, 0x40,
78850x00, 0x00, 0xC1, 0x00, 0x64, 0x53, 0x90, 0x3C, 0x48, 0x24, 0x02, 0x01, 0x06,
78860x25, 0x83, 0xD0, 0x05, 0x40, 0x00, 0x00, 0x09, 0x00, 0x34, 0x48, 0x90, 0x00,
78870x41, 0x03, 0x01, 0x89, 0x00, 0x44, 0x00, 0x90, 0x01, 0x40, 0x46, 0x00, 0x89,
78880x00, 0x24, 0x02, 0x10, 0x08, 0x40, 0x45, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
78890x00, 0x03, 0xA8, 0x05, 0x00, 0x11, 0x40, 0x04, 0x02, 0x10, 0x05, 0x40, 0x04,
78900x12, 0xC1, 0x00, 0x64, 0x03, 0x14, 0x09, 0x40, 0x34, 0x02, 0x11, 0x01, 0x64,
78910x07, 0x10, 0x01, 0x40, 0x45, 0x04, 0x59, 0x20, 0x64, 0x44, 0x92, 0x11, 0x42,
78920x27, 0x00, 0x8C, 0x00, 0x44, 0x02, 0x98, 0x11, 0x00, 0x06, 0x00, 0x89, 0x00,
78930x24, 0x02, 0x10, 0x08, 0x40, 0x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
78940x00, 0xA0, 0x37, 0x40, 0x43, 0x00, 0x4C, 0x04, 0x30, 0x21, 0xC1, 0x64, 0x00,
78950xD3, 0x00, 0x2D, 0x03, 0xB0, 0x0D, 0xC4, 0xC0, 0x40, 0x13, 0x00, 0x6C, 0x07,
78960xF2, 0x0D, 0xC0, 0x84, 0x40, 0x5B, 0x81, 0x7C, 0x0C, 0xB1, 0x51, 0xE0, 0x07,
78970x00, 0x1F, 0x00, 0x4C, 0x01, 0xB0, 0x08, 0xC0, 0x12, 0x18, 0x1B, 0x01, 0x6C,
78980x04, 0x30, 0x11, 0xC0, 0x09, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
78990x88, 0x3D, 0x20, 0x7F, 0x00, 0xFC, 0x24, 0xF0, 0x07, 0xC0, 0x73, 0x00, 0xFF,
79000x00, 0xDC, 0x02, 0xF0, 0x26, 0xC0, 0x0F, 0x30, 0x3F, 0x20, 0x9C, 0x03, 0xF0,
79010x05, 0xC0, 0x0D, 0x00, 0x77, 0x03, 0xDC, 0x00, 0x72, 0x03, 0xC0, 0x2D, 0x02,
79020x3F, 0x08, 0xDC, 0x03, 0x74, 0x0B, 0xC0, 0x1D, 0x18, 0x36, 0x49, 0xDC, 0x24,
79030xF0, 0x93, 0xC0, 0x1E, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08,
79040x75, 0x00, 0x53, 0x10, 0x4C, 0x06, 0x32, 0x01, 0xCA, 0x24, 0x00, 0xD3, 0x00,
79050x4D, 0x03, 0x30, 0x0D, 0xC0, 0x24, 0x00, 0x13, 0x02, 0x6C, 0x02, 0x30, 0x0D,
79060xC1, 0x86, 0x00, 0x4F, 0x50, 0xCC, 0x18, 0x30, 0x01, 0xC8, 0x07, 0x40, 0x93,
79070x05, 0x7C, 0x01, 0xF0, 0x09, 0xC0, 0x14, 0x04, 0x93, 0x11, 0x4C, 0x46, 0x30,
79080x59, 0xC0, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x74,
79090x00, 0x51, 0x80, 0x44, 0x06, 0x12, 0x05, 0x40, 0x34, 0x09, 0xF1, 0x00, 0x44,
79100x0B, 0x10, 0xBD, 0x40, 0xA4, 0x02, 0x35, 0x00, 0x44, 0x00, 0x10, 0x7C, 0x40,
79110x04, 0x06, 0x5D, 0x11, 0x2C, 0x08, 0x10, 0x11, 0x00, 0x67, 0x08, 0x9B, 0x23,
79120x34, 0x2B, 0xD0, 0xA9, 0x40, 0x94, 0x04, 0x91, 0x03, 0x44, 0x0E, 0x10, 0x39,
79130x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x04, 0x00,
79140x89, 0x00, 0x04, 0x01, 0x10, 0x09, 0x40, 0x60, 0x00, 0xC1, 0x01, 0x04, 0x4B,
79150x14, 0x3C, 0x40, 0xA0, 0x00, 0x11, 0x00, 0x24, 0x03, 0x18, 0x24, 0x40, 0x06,
79160x08, 0x8D, 0x02, 0x14, 0x00, 0x11, 0x10, 0x48, 0x53, 0x02, 0x45, 0x00, 0x34,
79170x00, 0xD0, 0x04, 0x40, 0x61, 0x00, 0x41, 0x02, 0x04, 0x09, 0x10, 0x04, 0x02,
79180x1C, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00, 0xB9,
79190x09, 0x84, 0x0D, 0x10, 0x1E, 0x42, 0xF8, 0x00, 0xE1, 0x01, 0xC4, 0x87, 0x14,
79200x1C, 0x41, 0x68, 0x02, 0xA5, 0x01, 0x84, 0x07, 0x10, 0x92, 0x50, 0x48, 0x20,
79210xAD, 0x21, 0x36, 0x84, 0x18, 0x12, 0x40, 0x7B, 0x00, 0x6D, 0x01, 0xB4, 0x06,
79220xD0, 0x97, 0x40, 0x6D, 0x00, 0x61, 0x09, 0x84, 0x25, 0x10, 0x16, 0x40, 0x10,
79230x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x00, 0x40, 0x8B, 0x08,
79240x4C, 0x13, 0x30, 0x08, 0xC0, 0x00, 0x42, 0xD3, 0x10, 0x0C, 0x03, 0x30, 0x0C,
79250x40, 0x20, 0x02, 0x83, 0x00, 0x2C, 0x03, 0x12, 0x04, 0xC2, 0x02, 0x00, 0x8F,
79260x08, 0x1C, 0x12, 0x30, 0x00, 0xE5, 0x13, 0x00, 0xC7, 0x00, 0x3C, 0x20, 0xF0,
79270x04, 0xC0, 0x21, 0x00, 0xD3, 0x08, 0x4C, 0x23, 0x30, 0x0D, 0xC0, 0x48, 0x40,
79280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x0D, 0x00, 0xA7, 0x08, 0xFC,
79290x03, 0xF0, 0x0F, 0xC8, 0x1F, 0x00, 0xFF, 0x80, 0xFD, 0x03, 0xF0, 0x0F, 0xC0,
79300x3F, 0x0A, 0xBE, 0x80, 0xFC, 0x03, 0xF4, 0x03, 0xC2, 0x0F, 0x02, 0xEF, 0x20,
79310xEC, 0x02, 0xF0, 0x83, 0xC0, 0x3F, 0x02, 0xFB, 0x00, 0xFC, 0x02, 0xF1, 0x06,
79320xC0, 0x2A, 0x02, 0xFF, 0x08, 0xFC, 0x23, 0xF0, 0x8F, 0xC0, 0x0B, 0x60, 0x06,
79330x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37, 0x00, 0xCF, 0x00, 0x5C, 0x05,
79340x30, 0x09, 0xC0, 0x24, 0x00, 0xDF, 0x0D, 0x4C, 0x03, 0xF0, 0x0D, 0xC0, 0x27,
79350x00, 0x13, 0x00, 0xCD, 0x03, 0x34, 0x0D, 0xD8, 0x05, 0x10, 0x13, 0x00, 0x7C,
79360x02, 0x70, 0x01, 0xC4, 0x13, 0x00, 0x53, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xD0,
79370x34, 0x00, 0x5F, 0x00, 0x4E, 0x01, 0x30, 0x15, 0xC0, 0x54, 0x00, 0x0E, 0x00,
79380x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x39, 0x00, 0xED, 0x80, 0x84, 0x01, 0x10,
79390x0E, 0x40, 0x38, 0x00, 0xCD, 0x10, 0x84, 0x02, 0xD0, 0x0E, 0x40, 0x2B, 0x10,
79400x81, 0x04, 0x84, 0x03, 0x10, 0x04, 0xC0, 0x0A, 0x00, 0x21, 0x00, 0xB4, 0x02,
79410x11, 0x06, 0x48, 0x3B, 0x00, 0x61, 0x00, 0xB4, 0x03, 0xD2, 0x0F, 0x40, 0x38,
79420x20, 0x6D, 0x00, 0x84, 0x01, 0x10, 0x06, 0x40, 0x48, 0x20, 0x06, 0x00, 0x00,
79430x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xED, 0x01, 0x94, 0x07, 0x10, 0x1A,
79440x50, 0x68, 0x00, 0xED, 0x05, 0x84, 0x47, 0xD8, 0x1E, 0x40, 0x6F, 0x00, 0xA1,
79450x1D, 0x85, 0x07, 0x10, 0x1E, 0x40, 0xC9, 0x18, 0xE1, 0x01, 0xF4, 0x0E, 0x50,
79460x12, 0x40, 0x5B, 0x00, 0xE1, 0x01, 0xB4, 0x05, 0xD0, 0x1E, 0x42, 0x78, 0x00,
79470xED, 0x01, 0x84, 0x87, 0x10, 0x1E, 0x40, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00,
79480x00, 0x00, 0x16, 0x28, 0x73, 0x02, 0xDD, 0x00, 0x04, 0x03, 0x10, 0x0C, 0x40,
79490xB0, 0x00, 0xCD, 0x00, 0x04, 0x07, 0xD0, 0x0D, 0x40, 0xA3, 0x01, 0xC1, 0x40,
79500x04, 0x09, 0x10, 0x8D, 0x40, 0x76, 0x00, 0xC1, 0x03, 0x34, 0x0F, 0x10, 0x88,
79510x42, 0x33, 0x00, 0xC1, 0x00, 0x34, 0x07, 0xD0, 0x0C, 0x40, 0x30, 0x00, 0xCD,
79520x00, 0x04, 0x03, 0x10, 0x0C, 0x40, 0x48, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
79530x00, 0x17, 0xA0, 0x95, 0x00, 0x5F, 0x00, 0x5C, 0x01, 0x34, 0x05, 0xC0, 0x1C,
79540x01, 0x5F, 0x00, 0x4C, 0x01, 0xF0, 0x07, 0xC0, 0xDF, 0x44, 0x73, 0x00, 0xCC,
79550x31, 0x30, 0x17, 0xC2, 0x9D, 0x40, 0x73, 0x07, 0xFC, 0x29, 0x72, 0x16, 0xC0,
79560x17, 0x50, 0x53, 0x20, 0x7C, 0x01, 0xF1, 0x05, 0xC0, 0x14, 0x10, 0x5F, 0x00,
79570x4D, 0x01, 0x34, 0x05, 0xD0, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
79580x12, 0x08, 0x05, 0x04, 0x1D, 0x00, 0x7C, 0x00, 0xF2, 0x01, 0xC8, 0x03, 0x04,
79590x1F, 0x40, 0x7D, 0x08, 0xF0, 0x01, 0xC0, 0x07, 0x10, 0x1F, 0x20, 0x7C, 0x00,
79600xF2, 0x11, 0xD0, 0x07, 0x04, 0x0F, 0x12, 0x3C, 0x08, 0xF1, 0x41, 0xC0, 0x07,
79610x00, 0x1F, 0x00, 0x7C, 0x20, 0xF0, 0x11, 0xC8, 0x07, 0x00, 0x1F, 0x00, 0x7C,
79620x00, 0xF0, 0x01, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
79630x08, 0x25, 0x00, 0x9F, 0x02, 0x4C, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x02, 0x90,
79640x01, 0x7C, 0x02, 0x34, 0x09, 0xC0, 0x24, 0x00, 0x83, 0x00, 0x4C, 0x02, 0x30,
79650x09, 0xC0, 0x64, 0x00, 0x93, 0x05, 0x4C, 0x06, 0x10, 0x09, 0xC8, 0x24, 0x00,
79660x93, 0x00, 0x64, 0x0A, 0x30, 0x09, 0xC0, 0xE4, 0x10, 0x9F, 0x02, 0x4D, 0x0A,
79670x30, 0x59, 0xC0, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
79680xA6, 0x10, 0x9D, 0x00, 0x45, 0x0A, 0xD0, 0x08, 0xC0, 0x66, 0x00, 0x91, 0x01,
79690x34, 0x1A, 0x12, 0x09, 0x48, 0xA4, 0x02, 0x95, 0x00, 0x44, 0x02, 0x12, 0x99,
79700x51, 0x24, 0x08, 0x91, 0x25, 0x44, 0xA6, 0x10, 0x09, 0x40, 0x20, 0x00, 0x91,
79710x02, 0x04, 0x0A, 0x10, 0x29, 0x50, 0x64, 0x08, 0x9D, 0x42, 0x44, 0x0A, 0x10,
79720x39, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24,
79730x80, 0xBD, 0x00, 0xC4, 0x02, 0xD0, 0x0B, 0x40, 0x24, 0x40, 0x95, 0x08, 0x74,
79740x22, 0x14, 0x09, 0x48, 0xB0, 0x00, 0xD9, 0x04, 0x24, 0x02, 0x14, 0x09, 0x40,
79750x24, 0x42, 0xD1, 0x00, 0x45, 0x42, 0x50, 0x09, 0x52, 0x24, 0x40, 0xA1, 0x00,
79760xF4, 0x02, 0x10, 0x2A, 0x42, 0x2C, 0x00, 0xAD, 0x00, 0xA4, 0x02, 0x10, 0x0B,
79770x42, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x68, 0x00,
79780xED, 0x00, 0x84, 0x06, 0xD0, 0x0B, 0x40, 0x22, 0x01, 0x85, 0x04, 0x74, 0x02,
79790x10, 0x48, 0x40, 0x20, 0x01, 0x8D, 0x04, 0x25, 0x12, 0x10, 0x48, 0x40, 0x60,
79800x20, 0x81, 0x84, 0x05, 0x12, 0x14, 0x08, 0x40, 0x2C, 0x00, 0xA1, 0x01, 0xD4,
79810x02, 0x10, 0x0A, 0x42, 0x68, 0x80, 0xAD, 0x01, 0xA4, 0x06, 0x10, 0x1A, 0x40,
79820x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x86, 0x02, 0x1F,
79830x0A, 0x0D, 0x28, 0xF0, 0xA2, 0xC0, 0x94, 0x02, 0x17, 0x0A, 0x7C, 0x28, 0x30,
79840xA5, 0xD0, 0x84, 0x02, 0x1B, 0x0A, 0x2C, 0x28, 0x31, 0xA1, 0xD0, 0x80, 0x22,
79850x13, 0x00, 0x4C, 0x28, 0x70, 0xA1, 0xC0, 0x84, 0x02, 0x13, 0x0A, 0x7C, 0x29,
79860x30, 0xA1, 0xC0, 0x04, 0x00, 0x0F, 0x0A, 0x2C, 0x28, 0x32, 0xA2, 0xC0, 0x77,
79870xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x27, 0x00, 0x9F, 0x00,
79880x7C, 0x02, 0xF0, 0x09, 0xC0, 0x2F, 0x02, 0x9B, 0x08, 0xEC, 0x02, 0xF4, 0x8B,
79890xC8, 0x2B, 0x02, 0xB7, 0x08, 0xDC, 0x23, 0xF0, 0x8B, 0xC2, 0x2F, 0x00, 0xBF,
79900x68, 0xBC, 0x22, 0xF0, 0x0B, 0xC2, 0x27, 0x00, 0x9F, 0x20, 0x6C, 0x02, 0xF4,
79910x09, 0xC8, 0x27, 0x00, 0x9F, 0x00, 0x5C, 0x02, 0xF4, 0x09, 0xC0, 0x67, 0x60,
79920x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x2F, 0x00, 0xF3, 0x28, 0xDC,
79930x02, 0xF0, 0x09, 0xC0, 0x2F, 0x42, 0xB3, 0x04, 0xCC, 0x02, 0x30, 0xCF, 0xC0,
79940x2B, 0x00, 0xA3, 0x05, 0x4D, 0x16, 0x32, 0x9B, 0xC0, 0xAF, 0x10, 0xB3, 0x05,
79950xDC, 0x36, 0x30, 0x0B, 0xC4, 0x2C, 0x00, 0xB3, 0x00, 0xFC, 0x02, 0xF0, 0x8B,
79960xC0, 0x3C, 0x18, 0xBF, 0x40, 0xFC, 0x22, 0xF0, 0x0B, 0xC0, 0x63, 0x00, 0x0E,
79970x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x01, 0x01, 0x04, 0x44, 0x41,
79980xD0, 0x01, 0x41, 0x07, 0x02, 0x11, 0x14, 0x44, 0x10, 0x10, 0xC0, 0x40, 0x87,
79990x44, 0x11, 0x17, 0x44, 0x5C, 0x14, 0x31, 0x44, 0x47, 0x00, 0x11, 0x22, 0x44,
80000x04, 0x10, 0x55, 0x41, 0x44, 0x05, 0x51, 0x14, 0x74, 0x10, 0xD0, 0x41, 0x50,
80010x04, 0x00, 0x5D, 0x10, 0x74, 0x01, 0xD0, 0x45, 0x41, 0x73, 0x20, 0x0C, 0x00,
80020x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x21, 0x45, 0x81, 0x04, 0x14, 0x12, 0xD0,
80030x08, 0x40, 0x23, 0x00, 0x81, 0x0C, 0x24, 0x52, 0x10, 0x48, 0x44, 0x23, 0x03,
80040x81, 0x08, 0x04, 0x22, 0x10, 0x68, 0x40, 0x27, 0x01, 0x89, 0x08, 0x34, 0x1A,
80050x14, 0x09, 0x50, 0x24, 0x00, 0x89, 0x24, 0x34, 0x52, 0xD1, 0x48, 0x40, 0x20,
80060x00, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x48, 0x40, 0x43, 0x80, 0x0E, 0x00, 0x00,
80070x00, 0x00, 0x00, 0x18, 0x28, 0x21, 0x00, 0x91, 0x00, 0x44, 0x02, 0xD2, 0x09,
80080x40, 0x27, 0x00, 0x91, 0x00, 0x65, 0x02, 0x14, 0x29, 0x40, 0xA7, 0x01, 0x91,
80090x11, 0x44, 0x12, 0x10, 0x09, 0x40, 0x67, 0x00, 0x99, 0x06, 0x64, 0x0A, 0x10,
80100x19, 0x40, 0x24, 0x40, 0x99, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x00,
80110x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x20, 0x06, 0x00, 0x00, 0x00,
80120x00, 0x00, 0x05, 0x20, 0x25, 0x00, 0x93, 0x00, 0x5C, 0x0A, 0xF0, 0x09, 0xC0,
80130xA7, 0x01, 0x93, 0x00, 0x6D, 0x06, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x93, 0x01,
80140x4C, 0x0A, 0x30, 0x69, 0xC0, 0x23, 0x24, 0x9B, 0x00, 0x7C, 0x06, 0x32, 0x18,
80150xC0, 0x24, 0x00, 0x9A, 0x02, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x80, 0x9F,
80160x02, 0x7C, 0x0A, 0xF0, 0x29, 0xC0, 0x17, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00,
80170x00, 0x16, 0x08, 0x25, 0x10, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x23,
80180x00, 0x8F, 0x00, 0x5C, 0x4E, 0xF0, 0x09, 0xC0, 0x27, 0x44, 0x8F, 0x40, 0x7C,
80190x02, 0xF2, 0x09, 0xC2, 0x27, 0x40, 0x87, 0x01, 0x54, 0xCA, 0xF0, 0x09, 0xC0,
80200x27, 0x00, 0x97, 0x00, 0x7C, 0x02, 0xF1, 0x09, 0xC0, 0x27, 0x0C, 0x9F, 0x00,
80210x7C, 0x02, 0xF0, 0x09, 0xC0, 0x53, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
80220x14, 0x08, 0x05, 0x04, 0x1F, 0x04, 0x4C, 0x08, 0xB4, 0x01, 0xD0, 0x04, 0x01,
80230x13, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC0, 0x00, 0x00, 0x13, 0x02, 0x4C, 0x08,
80240x30, 0x21, 0xC0, 0x84, 0x00, 0x13, 0x01, 0x0C, 0x00, 0xB4, 0x01, 0xC0, 0x07,
80250x00, 0x1F, 0x06, 0x4D, 0x00, 0x30, 0x01, 0xC0, 0x07, 0x02, 0x1F, 0x02, 0x4D,
80260x48, 0x34, 0x21, 0xD0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
80270x00, 0xDC, 0x00, 0x6D, 0x00, 0xC4, 0x05, 0x30, 0x05, 0x40, 0x1C, 0x00, 0x51,
80280x00, 0xC5, 0x05, 0x10, 0x07, 0x48, 0x1C, 0x00, 0x51, 0x20, 0x44, 0x01, 0x50,
80290x67, 0x40, 0x1C, 0x48, 0x71, 0x10, 0xEC, 0x09, 0x10, 0x15, 0x40, 0x13, 0x00,
80300x7D, 0x83, 0xC4, 0x01, 0x00, 0x17, 0x40, 0x1F, 0x00, 0x7D, 0x00, 0xC4, 0x09,
80310x10, 0x07, 0x40, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0,
80320xF2, 0x02, 0x8D, 0x02, 0x04, 0x07, 0x50, 0x0C, 0x40, 0xB0, 0x40, 0xC5, 0x00,
80330x44, 0x0F, 0x10, 0x8C, 0x40, 0x20, 0x00, 0xC1, 0x00, 0x45, 0x03, 0x18, 0x6C,
80340x44, 0x30, 0x20, 0xC1, 0x01, 0x04, 0x07, 0x10, 0x18, 0x40, 0x33, 0x08, 0xCD,
80350x03, 0x04, 0x05, 0x10, 0x89, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x05, 0x0B, 0x10,
80360x0C, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38,
80370x10, 0x2D, 0x04, 0x84, 0x47, 0x50, 0xDF, 0x42, 0x08, 0x04, 0xE5, 0x00, 0x84,
80380x41, 0x10, 0x1E, 0x40, 0x2C, 0x00, 0xF1, 0x00, 0x84, 0x13, 0x50, 0x1E, 0x50,
80390x3C, 0x05, 0x41, 0x20, 0xA4, 0x0B, 0x10, 0x0E, 0x41, 0x3B, 0x00, 0xED, 0x03,
80400x84, 0x0D, 0x11, 0x02, 0x40, 0x0B, 0x00, 0xED, 0x01, 0x84, 0x07, 0x10, 0x1E,
80410x44, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x79, 0x00,
80420xAF, 0x07, 0xCD, 0x07, 0x70, 0x1E, 0xC0, 0x40, 0x40, 0x87, 0x89, 0x8C, 0x04,
80430x34, 0x1E, 0x10, 0x78, 0x40, 0xE3, 0x31, 0xCC, 0x0F, 0x34, 0x1E, 0xC0, 0xE8,
80440x00, 0x63, 0x01, 0x0C, 0x04, 0x34, 0x1A, 0xC0, 0x7B, 0x00, 0xFF, 0x01, 0xCC,
80450x06, 0x34, 0x12, 0xC0, 0x4B, 0x00, 0xFD, 0x01, 0xCC, 0x07, 0x30, 0x1F, 0xC0,
80460x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0x1F,
80470x20, 0x7C, 0x03, 0x30, 0x2C, 0xC0, 0x07, 0x00, 0xDB, 0x04, 0x3C, 0x00, 0xF2,
80480x05, 0xC0, 0x37, 0x00, 0xDF, 0x06, 0x7C, 0x5B, 0xB0, 0x88, 0xC0, 0x13, 0x00,
80490x5F, 0x20, 0x7C, 0x00, 0xF0, 0x0F, 0xC0, 0xB7, 0x0D, 0xDF, 0x00, 0xFC, 0x80,
80500xF0, 0x09, 0xC0, 0x07, 0x00, 0xDF, 0x20, 0x7C, 0x01, 0xF0, 0x09, 0xC2, 0x43,
80510x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x7D, 0x00, 0x2F, 0x01,
80520xDC, 0x13, 0xF0, 0x3F, 0xC0, 0x4C, 0x10, 0xF7, 0x01, 0xDC, 0x04, 0x30, 0x1F,
80530xC8, 0x6C, 0x00, 0xF3, 0x01, 0xCC, 0x07, 0x31, 0x1B, 0xD0, 0x6D, 0x00, 0x73,
80540x01, 0x9D, 0x04, 0xB2, 0x4F, 0xC0, 0x7C, 0x00, 0xF3, 0x01, 0xDC, 0x05, 0x30,
80550x1F, 0xC0, 0x4C, 0x00, 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0x08,
80560x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x39, 0x00, 0x27, 0x00, 0x84,
80570x0A, 0xD0, 0x8F, 0x41, 0x0C, 0x00, 0xE1, 0x00, 0xEC, 0x00, 0x12, 0x4A, 0x40,
80580x08, 0x02, 0xE0, 0x00, 0x84, 0x13, 0xA1, 0x0B, 0x40, 0x38, 0x00, 0x61, 0x08,
80590x84, 0x02, 0x50, 0x0F, 0x40, 0x3C, 0x02, 0xA7, 0x00, 0xC4, 0x21, 0x12, 0x07,
80600x40, 0x08, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x2E, 0x40, 0x57, 0x20, 0x06,
80610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0xAD, 0x00, 0x94, 0x23,
80620xD0, 0x0E, 0x40, 0x08, 0x00, 0x85, 0x00, 0x94, 0x40, 0x10, 0x0E, 0x40, 0x3C,
80630x00, 0xE1, 0x08, 0x84, 0x03, 0x80, 0x02, 0x40, 0x29, 0x02, 0x21, 0x00, 0xD4,
80640x00, 0x14, 0x2E, 0x40, 0x38, 0x00, 0x61, 0x00, 0x94, 0x02, 0x10, 0x06, 0x40,
80650x08, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x03, 0x00, 0x04, 0x00,
80660x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x35, 0x00, 0x05, 0x00, 0x04, 0x02, 0xD0,
80670x1C, 0x40, 0x00, 0x00, 0xC1, 0x00, 0x24, 0x00, 0x12, 0x31, 0x40, 0x30, 0x00,
80680xC1, 0x00, 0x05, 0x83, 0x90, 0x10, 0x40, 0x10, 0x04, 0x41, 0x61, 0x04, 0x04,
80690x54, 0x9C, 0x44, 0x30, 0x08, 0x95, 0x00, 0x04, 0x00, 0x10, 0x0C, 0x40, 0x00,
80700x00, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x08, 0x40, 0x13, 0x20, 0x0C, 0x00, 0x00,
80710x00, 0x00, 0x00, 0x15, 0xA0, 0x35, 0x00, 0xFF, 0x00, 0x5C, 0x03, 0xF0, 0x1F,
80720xD0, 0x24, 0x00, 0xD7, 0x00, 0x1C, 0x04, 0x30, 0x8D, 0xD5, 0x60, 0x00, 0xD3,
80730x0A, 0xCC, 0x0B, 0xB0, 0x83, 0xD1, 0x39, 0x48, 0x13, 0x10, 0x5D, 0x02, 0x30,
80740x0D, 0xC4, 0xA4, 0x00, 0xD3, 0x00, 0x5C, 0x09, 0x30, 0x0D, 0xC0, 0x00, 0x00,
80750xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00,
80760x00, 0x00, 0x05, 0x08, 0x27, 0x00, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0,
80770x07, 0x02, 0xDF, 0x20, 0x5C, 0x08, 0xF4, 0x2D, 0xC0, 0xE7, 0x40, 0xDF, 0x08,
80780x7C, 0x03, 0xF0, 0x09, 0xC0, 0x37, 0x02, 0x1F, 0x20, 0x7C, 0xA2, 0x74, 0x0D,
80790xC0, 0x37, 0x01, 0xD7, 0x40, 0x7C, 0x11, 0xF0, 0x2D, 0xC0, 0x07, 0x00, 0x9F,
80800x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
80810x00, 0x80, 0x08, 0x1F, 0x00, 0xB3, 0x00, 0xCC, 0x01, 0xF0, 0x0F, 0xC0, 0x0B,
80820x00, 0xB2, 0x00, 0xCC, 0x00, 0x30, 0x1F, 0xC0, 0x2C, 0x40, 0x97, 0x00, 0x7C,
80830x43, 0x32, 0x53, 0xD0, 0x2E, 0x00, 0x13, 0x00, 0xFC, 0x20, 0x20, 0x1F, 0xC0,
80840x2F, 0x00, 0xFD, 0x00, 0xEC, 0x00, 0xF0, 0x0F, 0xC0, 0x0C, 0x10, 0x72, 0x00,
80850xFC, 0x27, 0xF0, 0x07, 0xC0, 0x03, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
80860x81, 0x00, 0x06, 0x08, 0x11, 0x00, 0x45, 0x0B, 0xD0, 0x0D, 0xC8, 0x45, 0x00,
80870xD1, 0x00, 0x44, 0x04, 0x10, 0xBD, 0x41, 0x64, 0x20, 0x91, 0x08, 0x34, 0x03,
80880x12, 0x09, 0x40, 0x15, 0x00, 0x11, 0x01, 0x7C, 0x00, 0x50, 0x1D, 0x40, 0x77,
80890x00, 0xDD, 0x09, 0x44, 0x04, 0xD0, 0x3D, 0x48, 0xC4, 0x04, 0xD1, 0x00, 0x74,
80900x05, 0xD0, 0xBD, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
80910xA0, 0x76, 0x00, 0x41, 0x08, 0x44, 0x23, 0xD0, 0x0D, 0x40, 0x47, 0x00, 0xC5,
80920x00, 0x44, 0x0C, 0x10, 0x0D, 0x40, 0xE5, 0x00, 0xD1, 0x00, 0x74, 0x03, 0x12,
80930x00, 0x41, 0x26, 0x00, 0x11, 0x23, 0x34, 0x00, 0xD8, 0x4D, 0x40, 0x27, 0x01,
80940xDD, 0x00, 0x64, 0x44, 0xD0, 0x6C, 0x40, 0x44, 0x80, 0xD5, 0x01, 0x74, 0x03,
80950xD0, 0x0D, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
80960x70, 0x00, 0x41, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x01, 0x00, 0xC5, 0x00,
80970x04, 0x80, 0x14, 0x0C, 0x50, 0x21, 0x00, 0xC1, 0x00, 0x74, 0x83, 0x18, 0x08,
80980x50, 0x31, 0x00, 0x01, 0x00, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD,
80990x00, 0x04, 0x00, 0xD0, 0x0C, 0x40, 0x00, 0x80, 0x85, 0x01, 0x34, 0x02, 0xD0,
81000x0C, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x36,
81010x00, 0x93, 0x80, 0x4C, 0x81, 0xF0, 0x0F, 0xC0, 0x07, 0x20, 0xB7, 0x00, 0x4D,
81020x00, 0x30, 0x0C, 0x44, 0x25, 0x00, 0xB3, 0x00, 0xFC, 0x03, 0x31, 0x01, 0xC4,
81030x22, 0x00, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0x0D, 0xC2, 0x2F, 0x00, 0x4F, 0x40,
81040x6C, 0x00, 0xF0, 0x0D, 0xC0, 0x04, 0x00, 0x57, 0x00, 0x7C, 0x03, 0xF0, 0x05,
81050xC4, 0x03, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x3F, 0x00,
81060x3F, 0x40, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0xFB, 0x40, 0xFC, 0x00,
81070xF0, 0x0F, 0xC0, 0x2A, 0x00, 0xBF, 0x00, 0xFC, 0x03, 0xF0, 0x03, 0x40, 0x1F,
81080x40, 0x3F, 0x00, 0xD8, 0x00, 0x72, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC,
81090x00, 0xF0, 0x0F, 0xC8, 0x0F, 0x08, 0xFB, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
81100x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xFF,
81110x01, 0xFC, 0x13, 0x32, 0x8B, 0xC2, 0x2C, 0x09, 0xFF, 0x01, 0xFC, 0x63, 0x30,
81120x4B, 0xC2, 0x7C, 0x00, 0xBF, 0x04, 0xCC, 0x82, 0x30, 0x2F, 0xC1, 0x7C, 0x00,
81130xF3, 0x01, 0xFC, 0x43, 0x30, 0x4F, 0x50, 0x28, 0x00, 0xF3, 0x01, 0xFE, 0x07,
81140xB0, 0x1F, 0xC0, 0x7C, 0x00, 0xF9, 0x01, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x0F,
81150x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x77, 0x00, 0xDD, 0x01,
81160xF4, 0x63, 0x10, 0x81, 0x46, 0xE4, 0x0A, 0xDD, 0x41, 0xF4, 0x0B, 0x50, 0x91,
81170x42, 0x74, 0x00, 0x9C, 0x22, 0x44, 0x08, 0x10, 0x2F, 0xC4, 0x34, 0x08, 0xD5,
81180x21, 0xF4, 0x0F, 0x41, 0x9F, 0x40, 0xC4, 0x02, 0xD1, 0x01, 0x74, 0x07, 0x10,
81190x15, 0x40, 0x74, 0x00, 0xD9, 0x01, 0x74, 0x07, 0xD0, 0x1D, 0x40, 0x0F, 0x20,
81200x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x28, 0xCD, 0x80, 0x34,
81210x13, 0x00, 0x08, 0x48, 0x40, 0x20, 0xCD, 0x80, 0x30, 0x03, 0x12, 0x10, 0x40,
81220x30, 0x10, 0x0D, 0x1C, 0x04, 0x76, 0x10, 0x4C, 0x40, 0x33, 0x05, 0xC1, 0x40,
81230x34, 0x83, 0x80, 0x0C, 0x40, 0x20, 0x08, 0xC1, 0x80, 0x34, 0x03, 0x90, 0x0D,
81240x40, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x4F, 0x80, 0x0E,
81250x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00, 0xDD, 0x00, 0x74, 0x03,
81260x11, 0x11, 0x40, 0x64, 0x00, 0xDD, 0x40, 0x64, 0x03, 0x10, 0x11, 0x40, 0x34,
81270x20, 0x09, 0x03, 0x04, 0x06, 0x10, 0x0D, 0x44, 0x35, 0x00, 0xD1, 0x00, 0x74,
81280x03, 0x90, 0x0D, 0x40, 0x64, 0x04, 0xD1, 0x00, 0x74, 0x03, 0x50, 0x19, 0x40,
81290x36, 0x00, 0xDD, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0x00, 0x0F, 0x20, 0x06, 0x00,
81300x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x37, 0x00, 0xDF, 0x00, 0x74, 0x03, 0x30,
81310x31, 0xC0, 0x44, 0x00, 0xDF, 0x40, 0x7C, 0x03, 0x32, 0x19, 0xC0, 0x34, 0x08,
81320x9F, 0x01, 0x4C, 0x04, 0x30, 0x0D, 0xC6, 0x37, 0x00, 0xD1, 0x80, 0x7C, 0x83,
81330xA0, 0x0D, 0xC0, 0x64, 0x00, 0xD3, 0x00, 0x74, 0x03, 0xB0, 0x3D, 0xC1, 0x36,
81340x00, 0xDF, 0x00, 0x7C, 0x03, 0xD0, 0x0D, 0xC0, 0x83, 0x00, 0x0E, 0x00, 0x00,
81350x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xFF, 0x00, 0x7C, 0x03, 0xF0, 0x02,
81360xC0, 0x07, 0x00, 0xFF, 0x40, 0xFC, 0x03, 0xF0, 0x00, 0x40, 0x3F, 0x00, 0x9F,
81370x20, 0x7C, 0x80, 0xF1, 0x0F, 0xC0, 0x3E, 0x00, 0xFD, 0x00, 0xFC, 0x03, 0x72,
81380x0F, 0x40, 0x0B, 0x00, 0xFD, 0x00, 0xFC, 0x03, 0xB0, 0x0F, 0x40, 0x3D, 0x00,
81390xFB, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00,
81400x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xDF, 0x00, 0x3C, 0x03, 0x30, 0xA9, 0xC0,
81410x04, 0x00, 0xD3, 0x60, 0x2C, 0x63, 0x30, 0x09, 0xC0, 0x34, 0x00, 0x9B, 0x20,
81420x4C, 0x00, 0x30, 0x8C, 0xC0, 0x34, 0x00, 0xD2, 0x00, 0x3C, 0x03, 0x30, 0x0C,
81430xC0, 0x27, 0x00, 0xD7, 0x00, 0x7C, 0x23, 0xF1, 0x2D, 0xC0, 0x37, 0x10, 0xDF,
81440x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
81450x00, 0x13, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0xF4, 0x03, 0x10, 0x31, 0x40, 0x24,
81460x00, 0xD1, 0x00, 0xF4, 0x0B, 0x10, 0x09, 0x44, 0x34, 0x00, 0x9D, 0x00, 0x44,
81470x02, 0x12, 0xAF, 0x40, 0x74, 0x20, 0xD1, 0x00, 0xF4, 0x03, 0x10, 0x0F, 0x40,
81480x27, 0x00, 0xD1, 0x80, 0x34, 0x0F, 0xD0, 0x0C, 0x40, 0x37, 0x00, 0xDD, 0x00,
81490xF4, 0x03, 0xD0, 0x0D, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
81500x07, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x14, 0x08, 0x41, 0x20, 0x00,
81510xC1, 0x00, 0x34, 0x0B, 0x10, 0x08, 0x40, 0x30, 0x00, 0x0D, 0x00, 0x04, 0x02,
81520x10, 0x2C, 0x40, 0x34, 0x02, 0xC1, 0x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x03,
81530x00, 0xC5, 0x20, 0x34, 0x4F, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x34,
81540x03, 0xD0, 0x0C, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
81550x80, 0x78, 0x00, 0xED, 0x01, 0xB4, 0x27, 0x10, 0x1E, 0x40, 0x78, 0x00, 0xE1,
81560x01, 0xB4, 0x07, 0x10, 0x1E, 0x40, 0x78, 0x00, 0xED, 0x01, 0x84, 0x05, 0x10,
81570x1E, 0x40, 0xF8, 0x00, 0xE1, 0x01, 0xF4, 0x07, 0x10, 0x1E, 0x40, 0x5B, 0x00,
81580xE1, 0x01, 0xB0, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x07,
81590xD0, 0x1E, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10,
81600x30, 0x00, 0xCF, 0x00, 0x3C, 0x03, 0x30, 0x2D, 0xC0, 0x10, 0x08, 0xC3, 0x08,
81610x7C, 0x03, 0x30, 0x44, 0xC0, 0x30, 0x02, 0x4F, 0x00, 0x0C, 0x03, 0x30, 0x8D,
81620xE0, 0x34, 0x00, 0xC3, 0x08, 0x7C, 0x23, 0x30, 0x0C, 0xC0, 0x13, 0x00, 0xC7,
81630x00, 0x3C, 0x03, 0xF1, 0x0C, 0xC0, 0x33, 0x00, 0xCF, 0x00, 0x3C, 0x03, 0xF0,
81640x0C, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x35,
81650x10, 0xDF, 0x00, 0x7C, 0x0B, 0xC0, 0x0D, 0x40, 0x37, 0x00, 0xDF, 0x00, 0x74,
81660x03, 0xF0, 0x05, 0xC0, 0x37, 0x20, 0xDE, 0x00, 0x7C, 0x03, 0xF0, 0x2D, 0xC0,
81670x37, 0x00, 0xDF, 0x08, 0x7C, 0x83, 0xB4, 0x0D, 0xC1, 0x37, 0x00, 0xDF, 0x00,
81680x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
81690xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x00,
81700xDF, 0x00, 0x7C, 0xB3, 0x30, 0x15, 0xC0, 0x34, 0x00, 0xDF, 0x00, 0x7C, 0x4B,
81710xF0, 0x0D, 0xC8, 0x37, 0x28, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0xAD, 0xC0, 0x37,
81720x00, 0xDF, 0x00, 0x7C, 0x53, 0xF0, 0x1D, 0xC4, 0x34, 0x10, 0xD3, 0x00, 0x7C,
81730x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0,
81740x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x39, 0x00, 0xED,
81750x00, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x38, 0x00, 0xED, 0x00, 0xB4, 0x13, 0xD0,
81760x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x01, 0xD3, 0x4E, 0x40, 0x3B, 0x00,
81770xED, 0x00, 0xB4, 0x1B, 0xD0, 0x4E, 0x41, 0x18, 0x08, 0xE1, 0x80, 0xB4, 0x03,
81780xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x0B, 0xD0, 0x0E, 0x40, 0x4F,
81790x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x00, 0xED, 0x01,
81800xB0, 0x17, 0x10, 0x1C, 0x51, 0x58, 0x00, 0xED, 0x01, 0xB4, 0x27, 0xD0, 0x1E,
81810x40, 0x7B, 0x00, 0x6D, 0x21, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED,
81820x01, 0xB4, 0x07, 0xD0, 0x1C, 0x40, 0x70, 0x40, 0xE1, 0x01, 0xB4, 0x07, 0xD0,
81830x1E, 0x41, 0x7B, 0x80, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x13, 0x00,
81840x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x74,
81850x83, 0x10, 0x3C, 0x45, 0xF0, 0x02, 0xCD, 0x00, 0x34, 0x03, 0xD8, 0xBC, 0x40,
81860x33, 0x00, 0xDD, 0x01, 0x34, 0x2B, 0xD1, 0x0D, 0x40, 0x33, 0x00, 0xCD, 0x00,
81870x34, 0x03, 0xD0, 0x0C, 0x40, 0x70, 0x00, 0xD1, 0x80, 0x34, 0x03, 0xD0, 0x7C,
81880x40, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x60, 0x5B, 0x20, 0x0C,
81890x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15, 0x00, 0x5F, 0xC0, 0x7C, 0x01,
81900x30, 0x17, 0xC0, 0xDC, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x17, 0xC0, 0x17,
81910x00, 0x7F, 0x05, 0xFC, 0x25, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x7C,
81920x01, 0xF0, 0x05, 0xC0, 0x58, 0x01, 0x53, 0x00, 0x7C, 0x01, 0xF0, 0x37, 0xC0,
81930x17, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x5F, 0x00, 0x04, 0x00,
81940x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF4,
81950x01, 0xC0, 0x07, 0x04, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC1, 0x06, 0x10,
81960x1F, 0x41, 0x7C, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00,
81970xF0, 0x01, 0xD0, 0xC7, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x01, 0xC0, 0x07,
81980x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x4B, 0x20, 0x04, 0x00, 0x00,
81990x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x59,
82000xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x26, 0xF0, 0x09, 0xC4, 0x27, 0x00, 0x9F,
82010x00, 0x4C, 0x02, 0xF0, 0x99, 0xC0, 0x64, 0x00, 0x9F, 0x40, 0x7C, 0x02, 0xF0,
82020x09, 0xC0, 0x67, 0x00, 0x97, 0x00, 0x4C, 0x02, 0x70, 0x09, 0xC0, 0x27, 0x00,
82030x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00,
82040x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x19, 0x40,
82050x27, 0x00, 0x9D, 0x00, 0x76, 0x82, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00,
82060x44, 0x02, 0xD0, 0x69, 0xC0, 0xA4, 0x01, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09,
82070x40, 0xA7, 0x12, 0x91, 0x40, 0x0C, 0x9A, 0x11, 0x09, 0x40, 0x27, 0x00, 0x9D,
82080x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82090x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x27,
82100x00, 0x9D, 0x40, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x20, 0x44,
82110x82, 0xD0, 0x09, 0x40, 0x24, 0x0A, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40,
82120xA7, 0x00, 0x95, 0x00, 0x44, 0x02, 0x50, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00,
82130x74, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
82140x10, 0x20, 0x20, 0x00, 0x8D, 0x00, 0x34, 0x12, 0x10, 0x58, 0x40, 0x23, 0x01,
82150x8D, 0x40, 0x34, 0x16, 0xD0, 0x48, 0x40, 0x23, 0x00, 0x8D, 0x44, 0x04, 0x12,
82160xD0, 0x48, 0x40, 0x20, 0x00, 0x8D, 0x00, 0x34, 0x12, 0xD8, 0x48, 0x40, 0x23,
82170x01, 0x91, 0x00, 0x04, 0x02, 0x10, 0x08, 0x40, 0x23, 0x00, 0x8D, 0x00, 0x34,
82180x12, 0xD0, 0x08, 0x40, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
82190xB0, 0x06, 0x00, 0x1F, 0x00, 0x3C, 0x28, 0x30, 0xA1, 0xC0, 0x07, 0x00, 0x1F,
82200x00, 0x74, 0x28, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x0A, 0x4D, 0x28, 0xF1,
82210xA1, 0x40, 0x84, 0x02, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00,
82220x17, 0x00, 0x4D, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00,
82230xF0, 0x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8,
82240x27, 0x00, 0x9F, 0x00, 0x7C, 0x22, 0xF4, 0x8B, 0xC0, 0x2F, 0x0A, 0x9F, 0x00,
82250x7C, 0x22, 0xF0, 0x8B, 0xC0, 0x27, 0x00, 0xFF, 0x08, 0xFC, 0x22, 0xF0, 0x89,
82260xD0, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x22, 0xF0, 0x89, 0xC0, 0x2F, 0x02, 0x9F,
82270x00, 0x5C, 0x02, 0xF0, 0x0B, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x22, 0xF0,
82280x09, 0xC0, 0x77, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x27,
82290x00, 0x9F, 0x00, 0x7C, 0x1E, 0xF0, 0xDB, 0xC0, 0x67, 0x01, 0x9F, 0x00, 0xFC,
82300x36, 0x34, 0x59, 0xC0, 0x27, 0x00, 0x9F, 0x07, 0x4C, 0x1E, 0xF1, 0x7B, 0xD0,
82310xAC, 0x00, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x59, 0xC0, 0x6F, 0x01, 0x9B, 0x00,
82320xFC, 0x02, 0xF0, 0x08, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09,
82330xC0, 0x77, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00,
82340x1D, 0x00, 0x74, 0x3C, 0xD0, 0xF5, 0x42, 0x87, 0x02, 0x1D, 0x00, 0x74, 0x3C,
82350x10, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x05, 0x44, 0x1D, 0xD0, 0x71, 0x40, 0x44,
82360x01, 0x1D, 0x00, 0x74, 0x08, 0xD0, 0x21, 0x40, 0x97, 0x02, 0x11, 0x00, 0x74,
82370x00, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x00, 0x74, 0x20, 0xD0, 0x01, 0x40,
82380x63, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D,
82390x00, 0x34, 0x12, 0xD0, 0x08, 0x40, 0x23, 0x00, 0x8D, 0x00, 0x34, 0x02, 0x10,
82400x28, 0x40, 0x23, 0x00, 0x8D, 0x06, 0x04, 0x0A, 0xD0, 0x28, 0x40, 0x20, 0x00,
82410x8D, 0x00, 0x34, 0x0A, 0xD0, 0x88, 0x40, 0x23, 0x00, 0x89, 0x00, 0x34, 0x02,
82420xD0, 0x08, 0x40, 0x23, 0x00, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x4B,
82430x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x9D, 0x00,
82440x74, 0x02, 0xD0, 0x49, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x69,
82450x40, 0x27, 0x00, 0x9D, 0x00, 0x44, 0x02, 0xD0, 0x0D, 0x40, 0x24, 0x00, 0x9D,
82460x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x91, 0x80, 0x74, 0x82, 0xD0,
82470x89, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x63, 0x20,
82480x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00, 0x9F, 0x00, 0x7C,
82490x02, 0xF0, 0x09, 0xC0, 0xA7, 0x16, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x39, 0xC0,
82500x27, 0x00, 0x9F, 0x08, 0x4C, 0x06, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x00,
82510x7C, 0x02, 0xF0, 0x09, 0xC4, 0x23, 0x00, 0x9B, 0x00, 0x7C, 0x02, 0xF0, 0x19,
82520x41, 0x27, 0x20, 0x9D, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x17, 0x80, 0x04,
82530x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02,
82540xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x3C, 0x02, 0xF0, 0x19, 0xC0, 0x27,
82550x00, 0x8F, 0x00, 0x7D, 0x16, 0xF1, 0x08, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
82560x02, 0xF0, 0x09, 0xCA, 0x27, 0x01, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x19, 0xC0,
82570x27, 0x00, 0x9F, 0x00, 0x74, 0x02, 0xF0, 0x09, 0x80, 0x5B, 0x20, 0x04, 0x00,
82580x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0,
82590x21, 0xC0, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC4, 0x07, 0x00,
82600x1F, 0x02, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x7C, 0x00,
82610xF0, 0x01, 0xC0, 0x87, 0x04, 0x17, 0x00, 0x7C, 0x40, 0xF2, 0x21, 0xC0, 0x04,
82620x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00,
82630x00, 0x00, 0x00, 0x14, 0xA0, 0x14, 0x00, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x27,
82640x40, 0x17, 0x00, 0x5D, 0x00, 0xF4, 0x19, 0xD0, 0x05, 0x40, 0x17, 0x00, 0x5D,
82650x00, 0x74, 0x01, 0xD0, 0xC7, 0x40, 0x9F, 0x83, 0x5D, 0x00, 0x74, 0x01, 0xD0,
82660x05, 0x40, 0x5F, 0x01, 0x51, 0x00, 0xF4, 0x01, 0x70, 0x05, 0x40, 0x14, 0x00,
82670x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00,
82680x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x2C, 0x41,
82690x33, 0x00, 0xCD, 0x00, 0x34, 0x47, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x00,
82700x34, 0x03, 0xD0, 0x2C, 0x40, 0xF3, 0x00, 0xCD, 0x40, 0x34, 0x03, 0xD0, 0x0C,
82710x40, 0x53, 0x08, 0xC5, 0x00, 0x34, 0x00, 0xD0, 0x0C, 0x40, 0x30, 0x00, 0xCD,
82720x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
82730x00, 0x05, 0x80, 0x38, 0x00, 0xED, 0x00, 0xB4, 0x13, 0xD0, 0x0E, 0x41, 0x3B,
82740x00, 0xED, 0x00, 0xB4, 0x01, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x04, 0xB4,
82750x13, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40,
82760x1B, 0x00, 0xE1, 0x40, 0xB4, 0x09, 0x50, 0x0F, 0x40, 0x38, 0x00, 0xED, 0x00,
82770xB4, 0x03, 0xD0, 0x0E, 0x42, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
82780x15, 0x10, 0x78, 0x00, 0xEF, 0x01, 0xBC, 0x17, 0xF0, 0x1E, 0xC0, 0x7B, 0x08,
82790xEF, 0x01, 0xBC, 0x07, 0xF0, 0x1E, 0xC2, 0x7B, 0x00, 0xEF, 0x0D, 0xBC, 0x37,
82800xF0, 0x16, 0xC0, 0x7B, 0x00, 0xED, 0x41, 0xBC, 0x07, 0xF0, 0x1E, 0xC0, 0x5B,
82810x00, 0xE7, 0x01, 0xBC, 0x04, 0xF0, 0x0E, 0xC4, 0x78, 0x00, 0xED, 0x01, 0xBC,
82820x07, 0xF0, 0x1E, 0xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
82830xB8, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x53, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
82840x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x08, 0x7C, 0x03, 0xF0,
82850x05, 0xC4, 0x17, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC8, 0x13, 0x10,
82860xDF, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC8, 0x37, 0x08, 0xDF, 0x00, 0x7C, 0x03,
82870xF0, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
82880x7F, 0x00, 0xFF, 0x01, 0xFC, 0x63, 0xF0, 0x17, 0xC0, 0x7F, 0x00, 0xFF, 0x09,
82890xFC, 0x27, 0xF3, 0x1F, 0xC0, 0x7F, 0x00, 0xFF, 0x81, 0xF8, 0x47, 0x30, 0x1F,
82900x48, 0x5F, 0x02, 0xFE, 0x21, 0xFC, 0x07, 0xD0, 0x9F, 0x80, 0x5D, 0x00, 0xF3,
82910x09, 0xFC, 0x27, 0xF0, 0x1F, 0xC0, 0x7F, 0x02, 0xFF, 0x09, 0xFC, 0x07, 0xF0,
82920x1F, 0xC0, 0x1B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x39,
82930x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x86, 0x41, 0x3B, 0x00, 0xED, 0x00, 0xB4,
82940x01, 0xC0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x08, 0xB4, 0x03, 0x14, 0x8E, 0x40,
82950x1A, 0x00, 0xE9, 0x00, 0xB4, 0x03, 0xD0, 0x0F, 0x42, 0x1C, 0x05, 0xE5, 0x08,
82960xB4, 0x09, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x8E,
82970x40, 0x57, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00,
82980xED, 0x00, 0xB4, 0x23, 0x58, 0x06, 0x40, 0x3B, 0x06, 0xED, 0x80, 0xB0, 0x03,
82990xD1, 0x8E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x3B,
83000x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0F, 0x44, 0x3D, 0x00, 0xE5, 0x40, 0xB4,
83010x81, 0xD0, 0x0E, 0x40, 0x3B, 0x20, 0xED, 0x40, 0xB4, 0x23, 0xD0, 0x0E, 0x40,
83020x23, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x33, 0x00, 0xCD,
83030x00, 0x34, 0x03, 0xD0, 0x00, 0x40, 0xB3, 0x00, 0xCD, 0x00, 0x74, 0x00, 0x90,
83040x1C, 0x40, 0x37, 0x10, 0xCD, 0x02, 0x74, 0x27, 0x10, 0x08, 0x08, 0x02, 0x00,
83050xC9, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x70, 0x00, 0xC5, 0x40, 0x34, 0x01,
83060xD1, 0x0C, 0x40, 0x33, 0x00, 0xCC, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x40, 0x0B,
83070x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x00, 0xDF, 0x00,
83080xFC, 0x03, 0x70, 0x19, 0xC0, 0x77, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x2D,
83090xC3, 0x37, 0x00, 0xFF, 0x44, 0xFC, 0x03, 0x31, 0x09, 0x80, 0x27, 0x10, 0xDE,
83100x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x45, 0x00, 0xD7, 0x40, 0x78, 0x01, 0xD0,
83110x0D, 0xC1, 0x37, 0x10, 0xDD, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x57, 0x00,
83120x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x20, 0xDF, 0x00, 0x7C,
83130x03, 0xF0, 0x49, 0xC4, 0x37, 0x04, 0xDF, 0x20, 0x7C, 0x0A, 0xF0, 0x0D, 0xC8,
83140x37, 0x10, 0xDF, 0x10, 0x7C, 0x43, 0xF0, 0x29, 0xC4, 0x26, 0x20, 0xDB, 0x80,
83150x7C, 0x03, 0xF2, 0x0D, 0xC0, 0x87, 0x04, 0xDE, 0x00, 0x7C, 0x09, 0xF1, 0x4D,
83160xC0, 0x37, 0x10, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x20, 0x0C,
83170x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03,
83180xF0, 0x03, 0xC0, 0x3B, 0x00, 0xF3, 0x00, 0xFC, 0x00, 0x30, 0x0F, 0xC1, 0x3F,
83190x08, 0xF3, 0x00, 0x7C, 0x03, 0x30, 0x03, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xBC,
83200x03, 0x34, 0x0F, 0xC0, 0x5F, 0x02, 0xFF, 0x00, 0xFC, 0x05, 0xD0, 0x0F, 0xC4,
83210x3D, 0x00, 0xFF, 0x00, 0xBC, 0x03, 0x30, 0x0F, 0xC4, 0x07, 0x20, 0x0C, 0x00,
83220x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x03, 0xD0,
83230x79, 0x48, 0x37, 0x30, 0xD1, 0x00, 0x74, 0x1C, 0x10, 0x0D, 0x40, 0x37, 0x00,
83240xD1, 0x00, 0x74, 0x03, 0x10, 0x31, 0x40, 0x67, 0x04, 0xDD, 0x00, 0x74, 0x03,
83250x10, 0x0D, 0x40, 0x17, 0x01, 0xDD, 0x40, 0x74, 0x8D, 0xD0, 0x0C, 0x48, 0x34,
83260x00, 0xDD, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x48, 0x87, 0x00, 0x08, 0x00, 0x00,
83270x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0x74, 0x03, 0xD0, 0x19,
83280x40, 0x37, 0x00, 0xD1, 0x00, 0x74, 0x06, 0x10, 0x0D, 0x40, 0x37, 0x40, 0xD1,
83290x00, 0x74, 0x03, 0x10, 0x11, 0x48, 0x47, 0x20, 0xDD, 0x00, 0x74, 0x03, 0x90,
83300x0D, 0x40, 0x17, 0x00, 0xDC, 0x00, 0x74, 0x11, 0xD0, 0x0D, 0x42, 0x35, 0x00,
83310xDD, 0x40, 0x74, 0x03, 0x10, 0x0D, 0x40, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00,
83320x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0xCD, 0x00, 0x34, 0x03, 0xD2, 0x08, 0x40,
83330x33, 0x00, 0xC1, 0x80, 0x34, 0x02, 0x15, 0x0C, 0x40, 0x37, 0x20, 0xC1, 0xC0,
83340x34, 0x03, 0x14, 0x08, 0x44, 0x03, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x90, 0x0C,
83350x40, 0x13, 0x00, 0xCD, 0x00, 0x34, 0x01, 0xD0, 0x0D, 0x44, 0x30, 0x00, 0xCD,
83360x00, 0x34, 0x03, 0x10, 0x0C, 0x48, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
83370x00, 0x00, 0xB0, 0x36, 0x00, 0xDF, 0x00, 0xFC, 0x03, 0xF0, 0x01, 0xC4, 0x37,
83380x40, 0xD3, 0x00, 0x7C, 0x02, 0x30, 0x0D, 0xC0, 0x37, 0x00, 0xF3, 0x00, 0xFC,
83390x03, 0x30, 0x01, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xB0, 0x0D, 0xC0,
83400x17, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF8, 0x0D, 0xC0, 0x35, 0x80, 0xDF, 0x00,
83410x7C, 0x03, 0x30, 0x0D, 0xC0, 0x07, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
83420x05, 0xB8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0x40, 0x3F, 0x20,
83430xFF, 0xC0, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x83,
83440xF0, 0x0B, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xF8, 0x03, 0x70, 0x0F, 0xC0, 0x1F,
83450x00, 0xFF, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x20, 0xFC,
83460x03, 0xF2, 0x0F, 0xC0, 0x17, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
83470xA0, 0x7F, 0x00, 0xB3, 0x02, 0xCD, 0x27, 0x30, 0x0B, 0xC0, 0x0C, 0x05, 0x3F,
83480x04, 0xFC, 0x07, 0x30, 0x47, 0xC8, 0x3F, 0x05, 0xFF, 0x04, 0xBC, 0xD3, 0x30,
83490x9B, 0xC0, 0x2C, 0x01, 0x23, 0x89, 0xCC, 0x12, 0xF0, 0x03, 0xC8, 0x2C, 0x02,
83500x33, 0x04, 0xFC, 0x07, 0xF0, 0x0F, 0xC0, 0x7C, 0x18, 0xB3, 0x00, 0xCC, 0x04,
83510xF0, 0x1F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08,
83520x37, 0x11, 0x91, 0x02, 0x44, 0x03, 0x10, 0x1B, 0x50, 0x84, 0x10, 0x1D, 0x0B,
83530x74, 0x07, 0x14, 0xBD, 0x40, 0xF7, 0x00, 0xFD, 0x49, 0xF4, 0x0F, 0x12, 0x48,
83540x50, 0xFC, 0x40, 0x11, 0x84, 0x44, 0x4A, 0xD0, 0x31, 0x44, 0xAC, 0x23, 0x13,
83550x0A, 0x74, 0x03, 0xD1, 0x04, 0x40, 0x34, 0x00, 0xD1, 0x03, 0x45, 0x05, 0xD0,
83560x1D, 0x40, 0x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33,
83570x04, 0x91, 0x8C, 0x34, 0x13, 0x14, 0x08, 0x40, 0x20, 0x00, 0x0D, 0x00, 0x34,
83580x03, 0x10, 0x0C, 0x40, 0x23, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x10, 0x08, 0x40,
83590xA0, 0x00, 0x05, 0x00, 0x04, 0x0A, 0xD2, 0x21, 0x40, 0x20, 0x41, 0x81, 0x00,
83600x34, 0x03, 0xD8, 0x08, 0x60, 0x32, 0x10, 0xC1, 0x82, 0x04, 0x00, 0xD0, 0x0C,
83610x40, 0x47, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x40,
83620x91, 0x01, 0x64, 0x03, 0x10, 0x89, 0x40, 0x64, 0x00, 0x1C, 0x11, 0x74, 0x03,
83630x10, 0x1D, 0x40, 0x37, 0x00, 0xDD, 0x00, 0x74, 0x03, 0x14, 0x09, 0x40, 0x34,
83640x00, 0x15, 0x01, 0x45, 0x42, 0xD0, 0x49, 0x40, 0x20, 0xC2, 0x91, 0x03, 0x74,
83650x03, 0xD0, 0x0D, 0x50, 0x36, 0x40, 0xD1, 0x01, 0x46, 0x07, 0xD0, 0x0D, 0x40,
83660x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x37, 0x00, 0x83,
83670x01, 0x6C, 0x03, 0x30, 0x08, 0xC0, 0x44, 0x20, 0x1E, 0x01, 0x7C, 0x03, 0x30,
83680x3D, 0xC0, 0x37, 0x00, 0xDF, 0xC0, 0x7C, 0x03, 0x30, 0x99, 0xC0, 0x24, 0x02,
83690x17, 0x81, 0x4C, 0x02, 0xF1, 0x00, 0xD0, 0x24, 0x00, 0x13, 0x01, 0x7C, 0x03,
83700xF0, 0x0D, 0xE0, 0x36, 0x00, 0x93, 0x01, 0x4C, 0x04, 0xF2, 0x0D, 0xC2, 0x0B,
83710x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xBF, 0x00,
83720xDC, 0x03, 0xF0, 0x19, 0xC0, 0x0F, 0x10, 0x3F, 0x00, 0xF4, 0x03, 0xF1, 0x0D,
83730xC0, 0x7F, 0x12, 0xFF, 0x10, 0xBC, 0x03, 0xC0, 0x0B, 0xC0, 0x7F, 0x20, 0x3B,
83740x00, 0xF8, 0x26, 0xE1, 0x03, 0xC0, 0x27, 0x00, 0x14, 0x00, 0xFC, 0x03, 0xF0,
83750x5F, 0xC0, 0xBD, 0x00, 0xEF, 0x00, 0xFC, 0x81, 0xF1, 0x0F, 0xC0, 0x1F, 0x00,
83760x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0x93, 0x04, 0x4C,
83770x13, 0xF0, 0x09, 0xC4, 0x24, 0x00, 0x13, 0x02, 0x7C, 0x03, 0xF0, 0x0D, 0xC0,
83780x24, 0x00, 0xDF, 0x40, 0x4C, 0x03, 0xB0, 0x09, 0xC8, 0x20, 0x40, 0x13, 0x02,
83790x6C, 0x0E, 0xB0, 0x03, 0xC0, 0x37, 0x00, 0x93, 0x06, 0x6C, 0x03, 0xD0, 0x08,
83800xC0, 0x34, 0x80, 0x5F, 0x00, 0x7C, 0x00, 0x30, 0x0D, 0xC0, 0x0B, 0x20, 0x04,
83810x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x30, 0x00, 0x91, 0x00, 0x44, 0x0B,
83820xD0, 0x09, 0x50, 0x64, 0x08, 0x91, 0x00, 0x34, 0x2B, 0xD0, 0x0D, 0x40, 0xB4,
83830x02, 0xFD, 0x06, 0xC5, 0x6F, 0x10, 0x49, 0x54, 0xB4, 0x03, 0x10, 0x24, 0x44,
83840x06, 0x10, 0xB9, 0x45, 0x37, 0x00, 0x91, 0x83, 0x44, 0x03, 0xD1, 0xAD, 0x40,
83850xB4, 0x02, 0xDD, 0x00, 0x74, 0x47, 0x10, 0x1D, 0x43, 0x4F, 0x00, 0x02, 0x00,
83860x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x72, 0x00, 0xC1, 0x02, 0x44, 0x8B, 0xD0,
83870x68, 0x40, 0x60, 0x00, 0x05, 0x00, 0x34, 0x03, 0xD0, 0x08, 0x40, 0x12, 0x20,
83880xCD, 0x02, 0x04, 0x03, 0x90, 0x09, 0x48, 0xF0, 0x10, 0x11, 0x20, 0x04, 0x4A,
83890x92, 0x10, 0x40, 0x23, 0x20, 0x09, 0x00, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x36,
83900x10, 0xC5, 0x08, 0x34, 0x04, 0x10, 0x0C, 0x40, 0x1F, 0x00, 0x0A, 0x00, 0x00,
83910x00, 0x00, 0x00, 0x04, 0x80, 0x78, 0x40, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x9E,
83920x40, 0x68, 0x04, 0x25, 0x01, 0xB4, 0x07, 0xD1, 0x1A, 0x50, 0x58, 0x00, 0xCD,
83930x89, 0x84, 0x07, 0x10, 0x9A, 0x40, 0x78, 0x00, 0x31, 0x29, 0x85, 0x04, 0x10,
83940x12, 0x40, 0x6B, 0x08, 0xA9, 0x01, 0x84, 0x07, 0xD0, 0x16, 0x50, 0x7A, 0x80,
83950xED, 0x41, 0xB4, 0x05, 0x10, 0x1E, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00,
83960x00, 0x00, 0x12, 0x10, 0x30, 0x04, 0x53, 0x00, 0x0E, 0x03, 0xF0, 0x08, 0xD0,
83970xA4, 0x40, 0x07, 0x08, 0x3C, 0x03, 0xF0, 0x0C, 0xC0, 0x30, 0x02, 0xCF, 0x00,
83980x0C, 0x03, 0xB0, 0x08, 0xC0, 0x30, 0x00, 0x03, 0x4A, 0x6C, 0x02, 0xB0, 0x00,
83990xC0, 0x33, 0x41, 0xCB, 0x10, 0x2C, 0x23, 0xF0, 0x0C, 0xD0, 0x32, 0x02, 0xCF,
84000x00, 0x3C, 0x00, 0x34, 0x0C, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
84010x00, 0x02, 0xB8, 0x39, 0x00, 0xFF, 0x00, 0xFD, 0x03, 0xF0, 0x0B, 0xC0, 0x2F,
84020x10, 0x7B, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC,
84030x03, 0xF0, 0x0B, 0xC4, 0x3B, 0x00, 0x3F, 0x28, 0xFC, 0x00, 0xF0, 0x0F, 0xC0,
84040x3F, 0x00, 0xF7, 0x00, 0xFC, 0x83, 0xF0, 0x0F, 0xD0, 0x3D, 0x00, 0xFF, 0x08,
84050xBC, 0x03, 0xF0, 0x0F, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
84060x15, 0xA0, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF0, 0x49, 0xD0, 0x2C, 0x00,
84070x33, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC8, 0x37, 0x00, 0xDF, 0x04, 0x5C, 0x4F,
84080x30, 0x09, 0xC0, 0xB5, 0x00, 0x13, 0x00, 0x6C, 0x02, 0xF2, 0x01, 0xC0, 0xA7,
84090x01, 0xD3, 0x00, 0x5C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C,
84100x00, 0xF0, 0x0D, 0xC0, 0x57, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
84110x88, 0x39, 0x00, 0xAD, 0x40, 0xB4, 0x03, 0xD0, 0x8C, 0x44, 0x28, 0x00, 0x2B,
84120x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xCD, 0x0E, 0x04, 0x03, 0x10,
84130x0E, 0x40, 0x30, 0x02, 0x61, 0x00, 0x86, 0x00, 0xD0, 0x02, 0x44, 0x23, 0x04,
84140xF1, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x10, 0xED, 0x00, 0xB4, 0x01,
84150xD0, 0x0E, 0x40, 0x4B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
84160x79, 0x00, 0xAD, 0x01, 0xB4, 0x07, 0xD0, 0x1A, 0x40, 0x60, 0x00, 0xA1, 0x41,
84170xB4, 0x07, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x05, 0x94, 0x37, 0x10, 0x3B,
84180x40, 0x79, 0x08, 0x29, 0x11, 0x84, 0x06, 0xD0, 0x12, 0x40, 0xFB, 0x00, 0xE1,
84190x81, 0x94, 0x87, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0xED, 0x01, 0xB4, 0x05, 0xD0,
84200x1E, 0x40, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33,
84210x10, 0x8D, 0x09, 0x34, 0x03, 0xD0, 0x9C, 0x50, 0x70, 0x00, 0xC9, 0x06, 0x34,
84220x03, 0xD0, 0x3C, 0x40, 0xB3, 0x04, 0xCD, 0x00, 0x04, 0x03, 0x14, 0x1C, 0x40,
84230x30, 0xC0, 0x99, 0x06, 0x05, 0x01, 0xD1, 0x0C, 0x44, 0x73, 0x20, 0xC1, 0x03,
84240x04, 0x03, 0xD1, 0x0D, 0x41, 0x63, 0x00, 0xCD, 0x06, 0x34, 0x07, 0xD0, 0x0C,
84250x40, 0x4B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15, 0x00,
84260x7F, 0x02, 0x7C, 0x01, 0xF0, 0x04, 0xC0, 0x58, 0x01, 0x73, 0x02, 0x7C, 0x01,
84270xF0, 0x16, 0xC0, 0x9F, 0x10, 0x5F, 0x00, 0x5C, 0x01, 0x30, 0x04, 0xC4, 0x15,
84280x00, 0x7B, 0x00, 0xCC, 0x45, 0xF1, 0x07, 0xC0, 0x17, 0x48, 0x73, 0x05, 0x5C,
84290x01, 0xF0, 0x27, 0xC0, 0x57, 0x00, 0x7F, 0x02, 0xFC, 0x05, 0xF0, 0x05, 0xC0,
84300x5F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F,
84310x00, 0x7C, 0x00, 0xF0, 0x01, 0xD0, 0x07, 0x10, 0x1F, 0x00, 0x7C, 0x00, 0xF0,
84320x81, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x01, 0xC0, 0x07, 0x00,
84330x17, 0x00, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x10, 0x7C, 0x00,
84340xF0, 0x01, 0xC0, 0x07, 0x12, 0x1F, 0x00, 0x7C, 0x20, 0xF0, 0x01, 0xC0, 0x4B,
84350x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x93, 0x11,
84360x4C, 0x22, 0xF0, 0x09, 0xC0, 0x64, 0x00, 0x93, 0x02, 0x7C, 0x02, 0xF0, 0x09,
84370xC1, 0x20, 0x00, 0x83, 0x00, 0x6D, 0x0E, 0xF0, 0x59, 0xC0, 0x20, 0x00, 0x91,
84380x40, 0x4C, 0x02, 0x10, 0x89, 0xC0, 0x24, 0x00, 0x83, 0x08, 0x4C, 0x02, 0xF0,
84390x19, 0xC0, 0x64, 0x01, 0x90, 0x00, 0x7C, 0x02, 0x30, 0x19, 0xC0, 0x43, 0x20,
84400x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xA6, 0x02, 0x91, 0x01, 0x44,
84410x06, 0xD0, 0x39, 0x41, 0x64, 0x10, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x50,
84420x24, 0x40, 0x91, 0x40, 0x44, 0x02, 0xD0, 0x19, 0x44, 0xE4, 0x40, 0x91, 0x01,
84430x04, 0x02, 0x15, 0x08, 0x40, 0x20, 0x00, 0x9B, 0x03, 0x44, 0x02, 0xD0, 0x19,
84440x40, 0x20, 0x20, 0x91, 0x09, 0x34, 0x02, 0x10, 0x19, 0x40, 0x07, 0x00, 0x08,
84450x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x20, 0x44, 0xC1, 0x04, 0x45, 0x02,
84460xD0, 0x49, 0x40, 0x24, 0x01, 0x91, 0x00, 0x74, 0x02, 0xD0, 0x0D, 0x50, 0x34,
84470x10, 0x99, 0x00, 0x65, 0x02, 0xC0, 0x09, 0x40, 0x24, 0x01, 0x95, 0x04, 0x44,
84480x12, 0x51, 0x29, 0x50, 0x24, 0x20, 0x91, 0x00, 0x44, 0x02, 0xD0, 0x49, 0x50,
84490x24, 0x40, 0xDD, 0x80, 0x74, 0x12, 0x10, 0x89, 0x40, 0x63, 0x00, 0x02, 0x00,
84500x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x81, 0x04, 0x04, 0x02, 0xD0,
84510x48, 0x40, 0x20, 0x01, 0x81, 0x04, 0x34, 0x02, 0xD0, 0x49, 0x40, 0x20, 0x01,
84520x89, 0x04, 0x04, 0x13, 0xD0, 0x08, 0x40, 0x60, 0x81, 0x85, 0x20, 0x46, 0x12,
84530x50, 0x48, 0x40, 0x24, 0x01, 0xC9, 0x04, 0x04, 0x02, 0xD0, 0x48, 0x40, 0x24,
84540x00, 0x8D, 0x04, 0x74, 0x02, 0x14, 0x08, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00,
84550x00, 0x00, 0x00, 0x1D, 0xB0, 0x86, 0x02, 0x13, 0x0A, 0x4C, 0x29, 0xF0, 0x01,
84560xC0, 0x84, 0x02, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x1B,
84570x00, 0x6C, 0x00, 0xD2, 0xA1, 0xC0, 0x04, 0x20, 0x07, 0x2A, 0x4C, 0x28, 0x70,
84580x01, 0xD0, 0x84, 0x42, 0x13, 0x0A, 0x4D, 0x28, 0xF0, 0xA1, 0xC0, 0x84, 0x02,
84590x1F, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00,
84600x00, 0x00, 0x19, 0xB8, 0x27, 0x00, 0xBF, 0x08, 0x7C, 0x02, 0xF0, 0x8B, 0xD0,
84610x2F, 0x42, 0xBF, 0x08, 0x7C, 0x02, 0xF0, 0x8B, 0xD0, 0x2F, 0x02, 0x97, 0x08,
84620x7C, 0x22, 0xF0, 0x0A, 0xD0, 0x2F, 0x22, 0xBB, 0x00, 0xFD, 0x22, 0xB0, 0x8B,
84630xD0, 0x2F, 0x02, 0xBF, 0x08, 0x7C, 0x02, 0xF0, 0x8B, 0xC0, 0x2F, 0x10, 0xB3,
84640x08, 0xFC, 0x02, 0xF0, 0x09, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
84650x00, 0x18, 0xA0, 0x2F, 0x00, 0xB7, 0x0C, 0xCC, 0x02, 0xF0, 0x0B, 0xC0, 0x2C,
84660x02, 0xB3, 0x04, 0x3C, 0x02, 0xF0, 0x49, 0xC0, 0x24, 0x00, 0x9F, 0x01, 0xCC,
84670x16, 0x30, 0x0A, 0xC0, 0x6C, 0x28, 0xBF, 0x00, 0xCC, 0x1E, 0x30, 0x5B, 0xC0,
84680x6F, 0x41, 0xB3, 0x05, 0xCC, 0x02, 0xF0, 0xCB, 0xC0, 0x2C, 0x00, 0xB3, 0x00,
84690xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x60, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
84700x1C, 0x08, 0x07, 0x01, 0x11, 0x0C, 0x6C, 0x40, 0xD0, 0x01, 0x40, 0x04, 0x02,
84710x11, 0x00, 0x74, 0x00, 0xD0, 0x81, 0x40, 0x84, 0x10, 0x3D, 0x02, 0x45, 0x08,
84720xB0, 0x51, 0x40, 0x04, 0x00, 0x1D, 0x15, 0x45, 0x14, 0x10, 0x01, 0x40, 0xC3,
84730x15, 0x11, 0x14, 0x44, 0x10, 0xD1, 0xC1, 0x40, 0x04, 0x04, 0x11, 0x00, 0x74,
84740x00, 0xD0, 0x01, 0x40, 0x70, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
84750xA0, 0x23, 0x05, 0x85, 0x04, 0x04, 0x12, 0xD0, 0x88, 0x40, 0x70, 0x60, 0x81,
84760x08, 0xB4, 0x02, 0xD0, 0x1A, 0x50, 0x6A, 0x02, 0xAD, 0x02, 0x04, 0x22, 0x10,
84770x08, 0x61, 0xA0, 0x00, 0x8D, 0x81, 0x04, 0x1A, 0x90, 0x38, 0x40, 0x23, 0x42,
84780x81, 0x06, 0x04, 0x52, 0xD1, 0x58, 0x40, 0x20, 0x41, 0xC1, 0x08, 0x34, 0x06,
84790xD0, 0x0C, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8,
84800x21, 0x00, 0x91, 0x10, 0x64, 0x02, 0xD0, 0x89, 0x10, 0x20, 0x01, 0x91, 0x04,
84810x74, 0x02, 0xD0, 0x0B, 0x40, 0x2E, 0x01, 0xBD, 0x00, 0x44, 0x02, 0x90, 0x09,
84820x60, 0x24, 0x00, 0x9D, 0x40, 0x44, 0x02, 0x90, 0x09, 0x40, 0x27, 0x20, 0x91,
84830x04, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x30, 0x00, 0x91, 0x11, 0x74, 0x02, 0xD0,
84840x09, 0x40, 0x60, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28, 0x25,
84850x00, 0x97, 0x00, 0x4C, 0x02, 0xF0, 0x19, 0xC0, 0x24, 0x00, 0x93, 0x05, 0x7C,
84860x02, 0xF0, 0x09, 0xC0, 0xA6, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x30, 0x09, 0xD0,
84870x24, 0x20, 0x9F, 0x02, 0x4C, 0x06, 0xB0, 0x29, 0xE0, 0x67, 0x02, 0x93, 0x04,
84880x4D, 0x02, 0xF0, 0x19, 0xD0, 0x64, 0x00, 0x93, 0x03, 0x7C, 0x02, 0xF2, 0x09,
84890xD0, 0x14, 0xA0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x25, 0x00,
84900x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x10, 0x9F, 0x01, 0x7C, 0x02,
84910xF0, 0x98, 0xC0, 0x25, 0x00, 0x9F, 0x40, 0x7C, 0x02, 0xF2, 0x09, 0xC0, 0x27,
84920x00, 0x9F, 0x09, 0x7C, 0x0E, 0x70, 0x89, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
84930x02, 0xF0, 0x39, 0xC0, 0xE7, 0x00, 0x9F, 0x40, 0x7C, 0x12, 0xF0, 0x09, 0xC0,
84940x53, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x0F,
84950x03, 0x4D, 0x04, 0xF0, 0x11, 0xC0, 0x04, 0x00, 0x13, 0x00, 0x7C, 0x00, 0x30,
84960x11, 0xC0, 0x07, 0x00, 0x13, 0x00, 0x2C, 0x00, 0xF8, 0x01, 0xC1, 0x06, 0x04,
84970x13, 0x00, 0x0C, 0x40, 0xF0, 0x01, 0xC0, 0x04, 0x02, 0x13, 0x02, 0x7C, 0x00,
84980xF0, 0x41, 0xC0, 0x44, 0x02, 0x13, 0x02, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x53,
84990x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xDC, 0x00, 0x7D, 0x01,
85000xC4, 0x15, 0x70, 0x16, 0x40, 0x9C, 0x00, 0x51, 0x01, 0x74, 0x01, 0x14, 0x05,
85010x40, 0x57, 0x00, 0x41, 0x00, 0xC4, 0x41, 0xD0, 0x07, 0x40, 0x1C, 0x20, 0x51,
85020x04, 0xC4, 0x09, 0xD1, 0x57, 0x40, 0x14, 0x10, 0x7B, 0x00, 0x74, 0x01, 0xD0,
85030x37, 0x40, 0x1C, 0x00, 0x51, 0x00, 0x45, 0x01, 0xD0, 0x04, 0x40, 0x53, 0x00,
85040x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0xE2, 0x04, 0xCD, 0x01, 0x04,
85050x03, 0x50, 0x1C, 0x40, 0xB1, 0x04, 0x81, 0x01, 0x34, 0x03, 0x10, 0x0C, 0x40,
85060x73, 0x00, 0xC1, 0x00, 0x24, 0x13, 0xD0, 0x2D, 0x40, 0x72, 0x00, 0xD1, 0x40,
85070x04, 0x2A, 0x58, 0x7C, 0x40, 0x34, 0x00, 0xD1, 0x00, 0x34, 0x27, 0xD0, 0x0D,
85080x40, 0x30, 0x00, 0x81, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x53, 0x00, 0x0A,
85090x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x04, 0xFD, 0x10, 0x84, 0x03,
85100x50, 0x06, 0x41, 0x29, 0x01, 0xA1, 0x10, 0xB4, 0x05, 0x10, 0x0E, 0x40, 0x53,
85110x04, 0x01, 0x00, 0x84, 0x00, 0xD0, 0x0B, 0x40, 0x4A, 0xC4, 0xA1, 0x00, 0x84,
85120x05, 0xD0, 0x12, 0x40, 0x38, 0x00, 0xE9, 0x00, 0xB4, 0x03, 0xD0, 0x2E, 0x40,
85130x38, 0x00, 0xC1, 0x01, 0x84, 0x03, 0xD0, 0x0E, 0x40, 0x17, 0x00, 0x02, 0x00,
85140x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x68, 0x00, 0xEF, 0x01, 0x8C, 0x07, 0x70,
85150x10, 0xC0, 0xFD, 0x40, 0xE3, 0x01, 0xBC, 0x07, 0x30, 0x1E, 0xC0, 0x7B, 0x40,
85160xE3, 0x01, 0xAC, 0x04, 0xD0, 0x1A, 0xC0, 0x42, 0x00, 0xA3, 0x01, 0x8D, 0x02,
85170x78, 0x10, 0xC0, 0x78, 0x04, 0xE3, 0x01, 0xBC, 0x07, 0xF0, 0x1F, 0xC0, 0x7C,
85180x00, 0xE1, 0x01, 0x8C, 0x07, 0xF0, 0x1A, 0xC0, 0x57, 0x40, 0x00, 0x00, 0x00,
85190x00, 0x00, 0x00, 0x10, 0xB8, 0x25, 0x00, 0xCF, 0x00, 0x7C, 0x03, 0x70, 0x01,
85200xD0, 0x26, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC0, 0x17, 0x00, 0x1F,
85210x00, 0x7C, 0x00, 0xF0, 0x09, 0xC0, 0x05, 0x00, 0x8F, 0x02, 0xFC, 0x00, 0xF0,
85220x01, 0xD0, 0xB7, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xD0, 0x37, 0x50,
85230xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00,
85240x00, 0x00, 0x02, 0xA0, 0x6B, 0x00, 0xF3, 0x01, 0xCC, 0x23, 0xB4, 0x13, 0xC0,
85250x6C, 0x20, 0xF3, 0x01, 0xCC, 0x07, 0xF0, 0x16, 0xC0, 0x6C, 0x00, 0xF3, 0x01,
85260xBC, 0x04, 0x30, 0x1F, 0xD0, 0x4D, 0x00, 0xF3, 0x03, 0xCC, 0x24, 0xF0, 0x13,
85270xC0, 0x7F, 0x08, 0xF3, 0x01, 0xDC, 0x06, 0x30, 0x1F, 0xC0, 0x7C, 0x10, 0xF3,
85280x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
85290x00, 0x15, 0x80, 0xB9, 0x00, 0x71, 0x02, 0x84, 0x03, 0x10, 0x02, 0x40, 0x28,
85300x00, 0xE1, 0x00, 0xAC, 0x01, 0xC0, 0x06, 0xC0, 0x08, 0x00, 0x21, 0x00, 0x84,
85310x08, 0x00, 0x4B, 0x40, 0x08, 0x01, 0xA5, 0x04, 0x94, 0x00, 0xD0, 0x02, 0xC0,
85320x39, 0x00, 0xE5, 0x02, 0xC4, 0x02, 0x50, 0x0E, 0x40, 0x1C, 0x00, 0xE1, 0x14,
85330xB4, 0x03, 0xD0, 0x0E, 0x40, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
85340x00, 0x08, 0x09, 0x00, 0xE1, 0x00, 0x84, 0x22, 0x18, 0x02, 0x41, 0x38, 0x00,
85350xA1, 0x10, 0x84, 0x03, 0xD0, 0x26, 0x40, 0x20, 0x00, 0xC1, 0x00, 0x94, 0x00,
85360x10, 0x0A, 0x45, 0x09, 0x20, 0xE1, 0x80, 0x84, 0x08, 0xD8, 0x02, 0x40, 0x33,
85370x00, 0xE1, 0x00, 0x94, 0x02, 0x10, 0x0C, 0x40, 0x38, 0x00, 0xE1, 0x00, 0xB4,
85380x0B, 0xD0, 0x0E, 0x40, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
85390x28, 0x13, 0x00, 0x41, 0x00, 0x44, 0x02, 0x14, 0x00, 0x40, 0x20, 0x02, 0x81,
85400x01, 0x24, 0x01, 0xD0, 0x04, 0x40, 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x14,
85410x18, 0x40, 0x40, 0x0A, 0x81, 0x53, 0x14, 0x04, 0xD0, 0x30, 0x40, 0x31, 0x20,
85420xC5, 0x02, 0x04, 0x02, 0x50, 0x2C, 0x40, 0x50, 0x00, 0xC1, 0x00, 0x34, 0x23,
85430xD0, 0x0C, 0x40, 0x13, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8,
85440x21, 0x00, 0xD3, 0x02, 0x4C, 0x03, 0x34, 0x01, 0xD0, 0x1C, 0x50, 0x83, 0x03,
85450x4D, 0x02, 0xF0, 0x09, 0xC0, 0x74, 0x40, 0xD3, 0x00, 0x5C, 0x00, 0x30, 0x1D,
85460xC8, 0x45, 0xE0, 0x93, 0x05, 0x0C, 0x12, 0xF0, 0x69, 0xC0, 0x37, 0x00, 0xD3,
85470x02, 0x5C, 0x02, 0x31, 0x0D, 0xC4, 0x74, 0x24, 0xD3, 0x80, 0x7C, 0x07, 0xF0,
85480x0D, 0xC0, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xA7,
85490x40, 0xDF, 0x42, 0x7C, 0x03, 0x70, 0x01, 0xC0, 0x97, 0x08, 0x9F, 0x10, 0x5C,
85500x00, 0xF0, 0x09, 0xC0, 0x51, 0x00, 0x1F, 0x00, 0x5C, 0x08, 0xF0, 0x0D, 0xC0,
85510x83, 0x00, 0x9F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x37, 0x00, 0xDF, 0x00,
85520x7C, 0x02, 0xF0, 0x75, 0xD0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x0D,
85530xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x6F, 0x21,
85540xB3, 0x90, 0xCC, 0x03, 0x30, 0x00, 0xC0, 0x1C, 0x00, 0xDF, 0x00, 0xCC, 0x06,
85550xF0, 0x0B, 0xC0, 0x3C, 0x00, 0xF3, 0x00, 0x8C, 0x04, 0x30, 0x4B, 0xC8, 0x04,
85560x00, 0xBD, 0x05, 0xFC, 0x02, 0x10, 0x03, 0xC1, 0x7B, 0x00, 0x33, 0x19, 0xCC,
85570x02, 0xF0, 0x0A, 0xC0, 0x2C, 0x00, 0xF1, 0x10, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
85580x03, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xE6, 0x40, 0x91,
85590x02, 0x44, 0x07, 0x10, 0x11, 0x40, 0x94, 0x02, 0xDD, 0x00, 0x44, 0x00, 0xD0,
85600x08, 0x40, 0x14, 0x00, 0x01, 0x00, 0x44, 0x00, 0x10, 0x49, 0x40, 0xC4, 0x00,
85610x91, 0x00, 0x64, 0x04, 0x10, 0x11, 0x40, 0x37, 0x12, 0xD5, 0x03, 0x44, 0x06,
85620xD0, 0x11, 0x50, 0xA4, 0x00, 0xD1, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0x40, 0x07,
85630x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x26, 0x00, 0xC1, 0x01,
85640x44, 0x07, 0x92, 0x11, 0x40, 0xA4, 0x00, 0xDD, 0x00, 0x44, 0x22, 0x50, 0x11,
85650x40, 0x24, 0x00, 0xD1, 0x00, 0x44, 0x20, 0x14, 0x04, 0x40, 0x44, 0x04, 0x91,
85660x00, 0x74, 0x04, 0xD0, 0x11, 0x44, 0x27, 0x00, 0xC1, 0x00, 0x44, 0x12, 0xD0,
85670x4D, 0x51, 0x70, 0x00, 0xD5, 0x01, 0x74, 0x07, 0xD0, 0x1D, 0x48, 0x07, 0x00,
85680x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0xC1, 0x00, 0x04,
85690x07, 0x90, 0x10, 0x50, 0x20, 0x00, 0xCD, 0x00, 0x05, 0x00, 0xD0, 0x00, 0x40,
85700x00, 0x40, 0x01, 0x00, 0x06, 0x00, 0x50, 0x04, 0x40, 0x00, 0x00, 0x81, 0x00,
85710x64, 0x00, 0xD0, 0x00, 0x00, 0x23, 0x40, 0xC5, 0x20, 0x04, 0x02, 0xD0, 0x0C,
85720x48, 0x30, 0x00, 0xC5, 0x00, 0x34, 0x02, 0xD0, 0x0C, 0x40, 0x43, 0x80, 0x00,
85730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x26, 0x00, 0xD3, 0x40, 0x4C, 0x03,
85740xB4, 0x01, 0xC0, 0x30, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x70, 0x01, 0xC0, 0x24,
85750x20, 0xD3, 0x00, 0x4D, 0x00, 0x30, 0x01, 0xC0, 0x04, 0x00, 0xAB, 0x00, 0x7C,
85760x00, 0xF4, 0x01, 0xC8, 0x2F, 0x40, 0x03, 0x00, 0x4D, 0x02, 0xF0, 0x0D, 0xC0,
85770x34, 0x00, 0xD7, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0x80, 0x03, 0xC0, 0x0A, 0x00,
85780x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x2F, 0x00, 0xFF, 0x00, 0xBC, 0x01, 0x70,
85790x03, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00,
85800x3F, 0x00, 0xFC, 0x00, 0x91, 0x03, 0xC0, 0x0F, 0x10, 0xBB, 0x00, 0xEC, 0x00,
85810x30, 0x03, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F,
85820x00, 0xFB, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00,
85830x00, 0x00, 0x00, 0x00, 0xA3, 0x80, 0xC0, 0x0E, 0x02, 0x3A, 0x08, 0xE8, 0x28,
85840xB8, 0xA3, 0xC0, 0x8E, 0x02, 0x3A, 0x08, 0xEC, 0x28, 0xA0, 0x83, 0xE0, 0x8E,
85850x82, 0x3B, 0x0A, 0xEC, 0x28, 0xA8, 0x83, 0xC0, 0x8E, 0x82, 0x3B, 0x0E, 0xE6,
85860x28, 0xA0, 0x83, 0xE0, 0x8E, 0x82, 0x3B, 0x0A, 0xEC, 0x20, 0xB8, 0x83, 0xE0,
85870x0E, 0x82, 0x3A, 0x0A, 0xEE, 0x20, 0xB0, 0x03, 0x8C, 0x00, 0x00, 0x00, 0x00,
85880x00, 0x00, 0x00, 0x83, 0x22, 0x20, 0x8E, 0x80, 0x3B, 0x02, 0xCA, 0x08, 0xA8,
85890x23, 0xA0, 0x8E, 0x80, 0x3A, 0x02, 0xE8, 0x08, 0xA8, 0x23, 0xE0, 0x8E, 0x00,
85900x13, 0x02, 0xE8, 0x08, 0xA8, 0x23, 0xA0, 0x84, 0x00, 0x3B, 0x02, 0xEC, 0x08,
85910x28, 0x23, 0xE0, 0x8A, 0x00, 0x39, 0x02, 0xE8, 0x08, 0xBA, 0x23, 0x40, 0x84,
85920x80, 0x3B, 0x00, 0xEE, 0x08, 0xA8, 0x03, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00,
85930x00, 0x00, 0x21, 0x40, 0x80, 0x04, 0x01, 0x12, 0x04, 0x40, 0x10, 0x20, 0x41,
85940x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80, 0x84, 0x01, 0x12,
85950x06, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x06, 0x48, 0x10, 0x00,
85960x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04, 0x01,
85970x12, 0x04, 0x48, 0x10, 0x20, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
85980x00, 0x83, 0x00, 0x80, 0x0E, 0x00, 0x1A, 0x00, 0x6A, 0x08, 0xA2, 0x61, 0x80,
85990x86, 0xA0, 0x1A, 0x00, 0x28, 0x08, 0xA8, 0x01, 0x80, 0x06, 0x00, 0x1A, 0x80,
86000x68, 0x08, 0xAA, 0x01, 0x80, 0x86, 0x01, 0x1A, 0x00, 0x68, 0x08, 0xA8, 0x00,
86010x80, 0x86, 0x00, 0x3A, 0x02, 0x68, 0x00, 0xA0, 0x01, 0x80, 0x0E, 0x00, 0x0A,
86020x04, 0x60, 0x00, 0xA0, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
86030xA0, 0x12, 0xA0, 0x4E, 0x80, 0x3A, 0x01, 0xEA, 0x04, 0xA0, 0x13, 0xA0, 0x4E,
86040x81, 0x3A, 0x01, 0xE8, 0x04, 0xA8, 0x13, 0xA0, 0xCE, 0x80, 0x3A, 0x01, 0xE8,
86050x34, 0xA8, 0x13, 0xA0, 0xCE, 0x80, 0x3A, 0x01, 0xEA, 0x04, 0xA8, 0x13, 0xA0,
86060x4E, 0x80, 0x2A, 0x01, 0xA8, 0x04, 0xA8, 0x12, 0xA0, 0x4E, 0x80, 0x32, 0x01,
86070xEA, 0x04, 0xA8, 0x03, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3,
86080x02, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x06, 0x00,
86090x18, 0x01, 0x62, 0x00, 0x80, 0x81, 0x00, 0x06, 0x01, 0x18, 0x00, 0x42, 0x00,
86100x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x08, 0x60, 0x10, 0x80, 0x01, 0x00, 0x06,
86110x03, 0x18, 0x00, 0x62, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60,
86120x00, 0x80, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x82,
86130x20, 0x04, 0x80, 0x10, 0x00, 0x42, 0x14, 0x00, 0x10, 0x20, 0x84, 0x80, 0x10,
86140x08, 0x42, 0x10, 0x08, 0x11, 0x20, 0x04, 0x80, 0x10, 0x0C, 0x42, 0x08, 0x08,
86150x11, 0x20, 0x04, 0x80, 0x10, 0x00, 0x42, 0x00, 0x08, 0x11, 0x20, 0x04, 0x80,
86160x10, 0x04, 0x42, 0x04, 0x08, 0x01, 0x20, 0x04, 0x80, 0x10, 0x01, 0x42, 0x04,
86170x08, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xF2, 0xA0,
86180x02, 0x03, 0x0A, 0x04, 0x28, 0x1C, 0xAA, 0x50, 0xA0, 0x02, 0x01, 0x0A, 0x06,
86190x2A, 0x10, 0xA0, 0xD0, 0x80, 0x02, 0x01, 0x0A, 0x04, 0x0A, 0x30, 0xA0, 0x50,
86200xA0, 0x02, 0x01, 0x0A, 0x0E, 0x28, 0x10, 0xA0, 0x50, 0x80, 0x82, 0x01, 0x0A,
86210x04, 0x2A, 0x14, 0xA0, 0x40, 0x80, 0x02, 0x01, 0x2A, 0x05, 0x28, 0x3C, 0xA8,
86220x00, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x80, 0xC8,
86230x00, 0xA2, 0x03, 0xA8, 0x2E, 0xA0, 0x32, 0x80, 0xEA, 0x00, 0xAA, 0x03, 0x08,
86240x0C, 0xA0, 0x3A, 0x80, 0x6A, 0x00, 0x82, 0x01, 0x08, 0x0C, 0x20, 0x3A, 0x80,
86250x6A, 0x00, 0x82, 0x03, 0x08, 0x0C, 0xA0, 0x3A, 0x80, 0xEA, 0x01, 0xA2, 0x03,
86260x08, 0x0E, 0xA0, 0x3A, 0x80, 0xE0, 0x00, 0xAA, 0x03, 0x08, 0x1C, 0x20, 0x02,
86270x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x00, 0x08, 0x80,
86280x30, 0x01, 0x20, 0x18, 0x80, 0x00, 0x00, 0xC2, 0x01, 0x08, 0x02, 0x00, 0x04,
86290x80, 0x00, 0x00, 0x82, 0x00, 0x00, 0x02, 0x00, 0x08, 0x08, 0x02, 0x00, 0x82,
86300x00, 0x10, 0x06, 0x00, 0x04, 0x80, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00,
86310x00, 0x80, 0x00, 0x00, 0x44, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x82, 0x04,
86320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x16, 0x40, 0x18, 0x00, 0x61,
86330x00, 0x04, 0x21, 0x10, 0x04, 0x40, 0x10, 0x00, 0x41, 0x01, 0x06, 0x01, 0x10,
86340x04, 0x40, 0x10, 0x80, 0x41, 0x00, 0x06, 0x01, 0x10, 0x06, 0x40, 0x10, 0x80,
86350x41, 0x00, 0x06, 0x01, 0x10, 0x04, 0x40, 0x10, 0x80, 0x41, 0x00, 0x06, 0x01,
86360x10, 0x04, 0x60, 0x14, 0x00, 0x41, 0x00, 0x04, 0x01, 0x10, 0x82, 0x8C, 0x0A,
86370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x02, 0xA0, 0x06, 0x80, 0x9A, 0x00,
86380x6D, 0x02, 0xA0, 0x01, 0xA0, 0x26, 0x40, 0x9B, 0x00, 0x4A, 0x00, 0xB0, 0x09,
86390x88, 0x26, 0x80, 0x92, 0x00, 0x48, 0x00, 0x80, 0x09, 0xA0, 0x26, 0x40, 0x92,
86400x00, 0x48, 0x00, 0xB0, 0x09, 0x80, 0x26, 0x80, 0x9A, 0x00, 0x4A, 0x02, 0xA8,
86410x09, 0xA0, 0x24, 0x80, 0x9B, 0x00, 0x4A, 0x00, 0xA8, 0x01, 0x8C, 0x00, 0x00,
86420x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x02, 0xC0, 0x06, 0x00, 0x1A, 0x01, 0x68,
86430x00, 0xB0, 0x01, 0xC0, 0x46, 0x80, 0x1A, 0x00, 0x6E, 0x04, 0xA8, 0x01, 0xC0,
86440x06, 0x80, 0x1B, 0x00, 0x6A, 0x00, 0xB0, 0x01, 0xE0, 0x06, 0x80, 0x1B, 0x00,
86450x6E, 0x04, 0xA8, 0x01, 0xC8, 0x06, 0x00, 0x1A, 0x00, 0x6E, 0x00, 0xB0, 0x01,
86460xE0, 0x46, 0x80, 0x1A, 0x00, 0x6E, 0x00, 0xB0, 0x01, 0x8C, 0x00, 0x00, 0x00,
86470x00, 0x00, 0x00, 0x00, 0xA3, 0x42, 0x20, 0x0C, 0x81, 0x31, 0x0C, 0x82, 0x10,
86480x08, 0x43, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC0, 0x30, 0x08, 0x43, 0x20, 0x0C,
86490x01, 0x30, 0x0C, 0xC2, 0x30, 0x10, 0x43, 0x20, 0x0C, 0x03, 0x30, 0x0C, 0xC0,
86500x30, 0x08, 0x43, 0x20, 0x0C, 0x81, 0x30, 0x0C, 0xC0, 0x10, 0x08, 0x43, 0x00,
86510x0C, 0x81, 0x30, 0x04, 0xC2, 0x10, 0x08, 0x03, 0x8C, 0x0A, 0x00, 0x00, 0x00,
86520x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00,
86530x03, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x4C, 0x00,
86540x30, 0x01, 0xC0, 0x04, 0x00, 0x03, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC0, 0x00,
86550x00, 0x03, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC0, 0x00, 0x00, 0x13, 0x08, 0x08,
86560x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
86570x00, 0x00, 0x21, 0x40, 0x80, 0x4C, 0x23, 0x32, 0x04, 0xCA, 0x10, 0x20, 0x43,
86580x80, 0x0C, 0x03, 0x32, 0x0C, 0xCA, 0x10, 0x20, 0x43, 0x88, 0x4C, 0x23, 0x32,
86590x05, 0xC8, 0x14, 0x20, 0x43, 0x80, 0x4C, 0x81, 0x32, 0x05, 0xCA, 0x10, 0x20,
86600x43, 0x80, 0x48, 0x03, 0x32, 0x05, 0x88, 0x10, 0x20, 0xD3, 0xA0, 0x0C, 0x03,
86610x32, 0x04, 0xCA, 0x10, 0x20, 0x03, 0x84, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
86620x00, 0xA2, 0x42, 0xA0, 0x06, 0x83, 0x3A, 0x04, 0x6A, 0x10, 0xA8, 0x41, 0xA0,
86630x06, 0x83, 0x1A, 0x0C, 0x4A, 0x30, 0xA8, 0x41, 0xA0, 0x06, 0x81, 0x1A, 0x0C,
86640x4A, 0x30, 0xA8, 0x41, 0x80, 0x0E, 0x83, 0x1A, 0x0C, 0x4A, 0x30, 0x88, 0x41,
86650xA0, 0x06, 0x01, 0x0A, 0x0C, 0x08, 0x10, 0xA8, 0x41, 0xA0, 0x06, 0x83, 0x1A,
86660x04, 0x6A, 0x10, 0xA8, 0x01, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
86670xA3, 0x40, 0x00, 0x04, 0x01, 0x18, 0x04, 0xC0, 0x10, 0x00, 0x41, 0x00, 0x04,
86680x01, 0x20, 0x04, 0x40, 0x10, 0x00, 0x42, 0x00, 0x00, 0x01, 0x10, 0x04, 0x40,
86690x10, 0x80, 0x41, 0x00, 0x04, 0x01, 0x10, 0x04, 0x00, 0x10, 0x00, 0x43, 0x00,
86700x00, 0x81, 0x10, 0x04, 0x40, 0x10, 0x00, 0x41, 0x00, 0x0C, 0x01, 0x30, 0x04,
86710x40, 0x10, 0x00, 0x01, 0x8C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3,
86720x4A, 0x20, 0x2C, 0x81, 0x10, 0x0C, 0x82, 0x12, 0x88, 0x41, 0x20, 0x26, 0x81,
86730xB0, 0x04, 0x42, 0x10, 0x08, 0x43, 0x20, 0x26, 0x83, 0x90, 0x04, 0x02, 0x12,
86740x08, 0x41, 0x00, 0x26, 0x81, 0x90, 0x04, 0x42, 0x10, 0x08, 0x43, 0x20, 0x26,
86750x83, 0x90, 0x04, 0x40, 0x10, 0x88, 0xC9, 0x20, 0x0C, 0x81, 0xB0, 0x04, 0x62,
86760x12, 0x88, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x06,
86770x20, 0x1A, 0x00, 0x62, 0x00, 0x88, 0x01, 0xA8, 0x06, 0xA0, 0x1A, 0x80, 0x62,
86780x00, 0x80, 0x01, 0x28, 0x06, 0xA0, 0x1A, 0x80, 0x42, 0x00, 0x0A, 0x01, 0xA0,
86790x06, 0x80, 0x18, 0x00, 0x6A, 0x00, 0x88, 0x01, 0x28, 0x06, 0xA0, 0x1A, 0x80,
86800x6A, 0x80, 0x08, 0x01, 0xA8, 0x06, 0x80, 0x18, 0x80, 0x62, 0x00, 0xA8, 0x01,
86810x88, 0x02, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80,
86820x82, 0x01, 0x0A, 0x06, 0x28, 0x18, 0xA0, 0x60, 0x80, 0x82, 0x01, 0x0A, 0x06,
86830x28, 0x18, 0xA0, 0x60, 0x80, 0x82, 0x01, 0x0A, 0x06, 0x28, 0x18, 0xA0, 0x60,
86840xA0, 0x82, 0x01, 0x2A, 0x06, 0x28, 0x18, 0xA0, 0x60, 0x80, 0x82, 0x01, 0x0A,
86850x06, 0xAA, 0x18, 0xA0, 0x60, 0x80, 0x8A, 0x01, 0x0A, 0x06, 0x28, 0x18, 0xA0,
86860x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x48, 0x80, 0x20,
86870x81, 0x02, 0x84, 0x08, 0x12, 0x20, 0x40, 0x80, 0x20, 0x81, 0x82, 0x04, 0x08,
86880x10, 0x20, 0x40, 0x80, 0x20, 0x01, 0x82, 0x04, 0x4A, 0x12, 0x20, 0x40, 0x80,
86890x20, 0x01, 0x82, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x20, 0x01, 0x82, 0x04,
86900x08, 0x10, 0x20, 0x48, 0x80, 0x00, 0x01, 0x82, 0x04, 0x48, 0x12, 0x20, 0x00,
86910x0C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x62, 0xC0, 0x80, 0x01,
86920x03, 0x06, 0xAC, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01, 0x2B, 0x06, 0xAE, 0x18,
86930xB0, 0x62, 0xC0, 0x8A, 0x81, 0x2B, 0x06, 0xAC, 0x18, 0xA0, 0x62, 0xC0, 0x8A,
86940x81, 0x29, 0x06, 0xAE, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01, 0x2B, 0x06, 0xA6,
86950x18, 0xB0, 0x62, 0x60, 0x8A, 0x01, 0x2B, 0x06, 0xAC, 0x18, 0xB0, 0x02, 0x8C,
86960x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x62, 0x80, 0x8E, 0x01, 0x3A,
86970x06, 0xEE, 0x18, 0xA4, 0x63, 0x80, 0x8E, 0x81, 0x3A, 0x06, 0xE8, 0x18, 0xB0,
86980x63, 0x80, 0x8E, 0x01, 0x3A, 0x06, 0xEA, 0x18, 0xA8, 0x63, 0x80, 0x8E, 0x81,
86990x3A, 0x06, 0xE0, 0x18, 0xB0, 0x63, 0x80, 0x8E, 0x81, 0x3B, 0x06, 0xE8, 0x18,
87000xA8, 0x63, 0x20, 0x8E, 0x81, 0x3B, 0x06, 0xEA, 0x18, 0xA8, 0x03, 0x8C, 0x00,
87010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x62, 0xC0, 0x8E, 0x01, 0x3A, 0x06,
87020xE8, 0x18, 0xB0, 0x63, 0xC0, 0x8E, 0x01, 0x3A, 0x06, 0xCC, 0x18, 0xA0, 0x63,
87030xC0, 0x8E, 0x01, 0x3B, 0x86, 0xEA, 0x18, 0x30, 0x63, 0xC0, 0x8E, 0x01, 0x3B,
87040x06, 0xCC, 0x18, 0xA0, 0x63, 0xC0, 0x8E, 0x01, 0x3B, 0x06, 0xEC, 0x18, 0xB0,
87050x63, 0xE0, 0x8E, 0x81, 0x3A, 0x06, 0xEE, 0x18, 0xB0, 0x03, 0x88, 0x00, 0x00,
87060x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x62, 0xA0, 0x8E, 0x81, 0x31, 0x06, 0xC2,
87070x18, 0xA8, 0x63, 0xA0, 0x8E, 0x81, 0x30, 0x06, 0xC2, 0x18, 0x0A, 0x63, 0xA0,
87080x8E, 0x01, 0x10, 0x06, 0xC4, 0x18, 0x30, 0x63, 0x00, 0x8C, 0x21, 0x10, 0x06,
87090xC0, 0x18, 0x08, 0x61, 0xA0, 0x8E, 0xA1, 0x38, 0x86, 0x80, 0x18, 0xA8, 0x63,
87100x00, 0x84, 0x81, 0x38, 0x06, 0xEE, 0x18, 0xA8, 0x03, 0x88, 0x0A, 0x00, 0x00,
87110x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x04, 0x01, 0x1A, 0x04, 0xE8, 0x10,
87120x20, 0x41, 0x80, 0x04, 0x01, 0x3A, 0x04, 0x48, 0x10, 0xA0, 0x43, 0x80, 0x04,
87130x01, 0x12, 0x04, 0x68, 0x10, 0x20, 0x41, 0x00, 0x04, 0x01, 0x12, 0x04, 0x48,
87140x10, 0x20, 0x43, 0x80, 0x04, 0x01, 0x32, 0x04, 0x68, 0x10, 0x20, 0x41, 0x80,
87150x04, 0x01, 0x32, 0x04, 0x48, 0x10, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
87160x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x86, 0x01, 0x12, 0x06, 0x6A, 0x18, 0xA0,
87170x60, 0x88, 0x86, 0x81, 0x1A, 0x06, 0x48, 0x18, 0xA8, 0x60, 0x00, 0x82, 0x01,
87180x02, 0x86, 0x48, 0x18, 0xA0, 0x61, 0x80, 0x84, 0x01, 0x1A, 0x06, 0x48, 0x18,
87190xA8, 0x61, 0x88, 0x86, 0x01, 0x1A, 0x06, 0x48, 0x18, 0xA0, 0x61, 0x80, 0x84,
87200x01, 0x18, 0x06, 0x68, 0x18, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87210x00, 0x00, 0xA2, 0x02, 0xA0, 0x0E, 0x80, 0x3A, 0x00, 0xCA, 0x00, 0x28, 0x03,
87220xA0, 0x0A, 0x80, 0x32, 0x00, 0xC8, 0x00, 0xA8, 0x02, 0xA0, 0x0C, 0x00, 0x32,
87230x00, 0xC8, 0x00, 0xA8, 0x03, 0xA0, 0x0C, 0x00, 0x32, 0x00, 0xC8, 0x00, 0xA8,
87240x03, 0xA0, 0x0C, 0x00, 0x32, 0x00, 0xE8, 0x00, 0x28, 0x03, 0xA0, 0x0C, 0x80,
87250x32, 0x00, 0xCA, 0x00, 0xA8, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
87260x00, 0xA2, 0x42, 0x00, 0x06, 0x01, 0x18, 0x04, 0x40, 0x10, 0x00, 0x41, 0x00,
87270x06, 0x01, 0x10, 0x0C, 0x42, 0x10, 0x80, 0x41, 0x00, 0x04, 0x83, 0x10, 0x0C,
87280x40, 0x10, 0x80, 0xC1, 0x00, 0x04, 0x83, 0x10, 0x04, 0x42, 0x10, 0x80, 0xC1,
87290x00, 0x04, 0x83, 0x10, 0x0C, 0x42, 0x30, 0x00, 0xC0, 0x00, 0x04, 0x03, 0x10,
87300x04, 0x60, 0x10, 0x80, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87310xA2, 0x42, 0x20, 0x04, 0x81, 0x10, 0x04, 0x62, 0x10, 0x88, 0x41, 0x20, 0x04,
87320x81, 0x18, 0x04, 0x62, 0x10, 0x08, 0x41, 0x20, 0x06, 0x81, 0x18, 0x04, 0x60,
87330x10, 0x08, 0x41, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62, 0x10, 0x08, 0x41, 0x20,
87340x06, 0x81, 0x18, 0x04, 0x62, 0x10, 0x88, 0x41, 0x20, 0x06, 0x81, 0x18, 0x05,
87350x42, 0x10, 0x08, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2,
87360x42, 0xA0, 0x02, 0x01, 0x0A, 0x0C, 0xA8, 0x30, 0xA8, 0x42, 0xA0, 0x02, 0x03,
87370x2A, 0x04, 0xAA, 0x10, 0xA0, 0xC0, 0xA0, 0x0A, 0x81, 0x2A, 0x84, 0xA0, 0x10,
87380xA0, 0x40, 0xA0, 0x0A, 0x81, 0x2A, 0x0C, 0xAA, 0x10, 0xA0, 0x40, 0xA8, 0x0A,
87390x81, 0x2A, 0x04, 0x2A, 0x10, 0xA8, 0x42, 0xA0, 0x0A, 0x81, 0x2A, 0x0C, 0xA8,
87400x10, 0xA8, 0x00, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
87410x80, 0x0A, 0x01, 0x2A, 0x0C, 0xA8, 0x30, 0xA0, 0xC2, 0x80, 0x0A, 0x03, 0x2A,
87420x0C, 0xA8, 0x30, 0xA0, 0xC2, 0x80, 0x0A, 0x01, 0x2A, 0x04, 0xA8, 0x30, 0xA0,
87430xC2, 0x80, 0x0A, 0x01, 0x2A, 0x0C, 0xA8, 0x30, 0xA0, 0xC2, 0x80, 0x0A, 0x01,
87440x2A, 0x04, 0xA8, 0x30, 0xA0, 0x42, 0x80, 0x0A, 0x03, 0x2A, 0x05, 0xA8, 0x30,
87450xA0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00,
87460x42, 0x80, 0x08, 0x00, 0x20, 0x00, 0x80, 0x10, 0x00, 0x02, 0x80, 0x08, 0x00,
87470x20, 0x04, 0x82, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x22, 0x04, 0x80, 0x00,
87480x00, 0x02, 0x20, 0x08, 0x00, 0x20, 0x04, 0x80, 0x00, 0x00, 0x02, 0x20, 0x08,
87490x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x60, 0x04, 0x80,
87500x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x42, 0x40, 0x00,
87510x01, 0x01, 0x05, 0x04, 0x14, 0x10, 0x40, 0x40, 0x40, 0x01, 0x01, 0x0C, 0x44,
87520x10, 0x10, 0x50, 0x40, 0x00, 0x81, 0x01, 0x04, 0x00, 0x30, 0x00, 0x50, 0x00,
87530x00, 0x81, 0x01, 0x0C, 0x06, 0x10, 0x10, 0x50, 0x40, 0x00, 0x01, 0x01, 0x04,
87540x46, 0x14, 0x10, 0x40, 0x60, 0x44, 0x01, 0x01, 0x04, 0x04, 0x30, 0x10, 0x00,
87550x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x00, 0xA0, 0x06, 0x80,
87560x1A, 0x00, 0x6E, 0x00, 0xA8, 0x01, 0x80, 0x06, 0x80, 0x1A, 0x00, 0x6A, 0x00,
87570xB8, 0x01, 0xA0, 0x06, 0x80, 0x1A, 0x00, 0x6A, 0x00, 0xA8, 0x01, 0xA0, 0x06,
87580x80, 0x1A, 0x00, 0x68, 0x00, 0xB0, 0x01, 0x80, 0x06, 0x80, 0x1A, 0x00, 0x6A,
87590x00, 0xA8, 0x01, 0xA0, 0x06, 0x80, 0x1B, 0x00, 0x6A, 0x00, 0xA8, 0x01, 0x88,
87600x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x02, 0xC0, 0x06, 0x00, 0x12,
87610x00, 0xE8, 0x00, 0xB0, 0x01, 0xC0, 0x06, 0x80, 0x3A, 0x00, 0x4C, 0x00, 0xA0,
87620x03, 0xC0, 0x06, 0x80, 0x13, 0x00, 0x4E, 0x00, 0xB0, 0x01, 0xC0, 0x06, 0x00,
87630x13, 0x00, 0x6E, 0x00, 0xA0, 0x03, 0xC0, 0x06, 0x00, 0x1B, 0x00, 0x4C, 0x00,
87640xB0, 0x01, 0xC0, 0x04, 0x00, 0x3A, 0x00, 0x6E, 0x00, 0xB0, 0x01, 0x00, 0x00,
87650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x80, 0x11, 0x00,
87660x62, 0x00, 0x08, 0x02, 0x20, 0x0C, 0x80, 0x18, 0x00, 0x42, 0x00, 0x8A, 0x01,
87670x20, 0x0C, 0x02, 0x10, 0x00, 0x44, 0x00, 0x10, 0x01, 0x00, 0x0C, 0x02, 0x10,
87680x00, 0x40, 0x00, 0x80, 0x01, 0x20, 0x0C, 0x00, 0x10, 0x00, 0x40, 0x00, 0x08,
87690x83, 0x00, 0x04, 0x80, 0x18, 0x00, 0xC2, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00,
87700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x90, 0x00, 0x40,
87710x02, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0x90, 0x12, 0x40, 0x02, 0x00, 0x21, 0x00,
87720xA8, 0x01, 0x90, 0x12, 0x40, 0x02, 0x00, 0x21, 0x02, 0xAC, 0x08, 0x90, 0x22,
87730x40, 0x02, 0x00, 0x21, 0x00, 0xAC, 0x05, 0x90, 0x22, 0x40, 0x08, 0x00, 0x2B,
87740x02, 0xA4, 0x00, 0x90, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
87750x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x8C, 0x00, 0x32, 0x0A, 0xCA, 0x28,
87760x22, 0xA3, 0x80, 0x8C, 0x02, 0x32, 0x06, 0x48, 0x28, 0x28, 0xA2, 0x88, 0x8C,
87770x82, 0x12, 0x00, 0x48, 0x08, 0x20, 0xA1, 0x80, 0x8C, 0x03, 0x32, 0x00, 0x48,
87780x28, 0x28, 0xA2, 0x80, 0x8C, 0x00, 0x22, 0x06, 0x08, 0x38, 0x20, 0xA3, 0x80,
87790x84, 0x82, 0x32, 0x02, 0xCA, 0x08, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
87800x00, 0x00, 0x00, 0x00, 0xC4, 0xA0, 0x16, 0x83, 0x5A, 0x0C, 0x4A, 0x31, 0xA8,
87810xC5, 0xA0, 0x16, 0x83, 0x5A, 0x0E, 0x68, 0x31, 0xA8, 0x85, 0xA0, 0x16, 0x83,
87820x5A, 0x0C, 0x60, 0x31, 0xA8, 0x85, 0xA0, 0x16, 0x03, 0x5A, 0x0C, 0x6A, 0x31,
87830xA8, 0xC5, 0xA0, 0x16, 0x03, 0x58, 0x0E, 0x28, 0x31, 0xA8, 0xE4, 0x80, 0x12,
87840x82, 0x5A, 0x0C, 0x6A, 0x31, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87850x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x90, 0x01, 0x40, 0x06, 0x00, 0x09,
87860x00, 0x64, 0x00, 0x90, 0x00, 0x42, 0x02, 0x00, 0x91, 0x00, 0xA4, 0x00, 0x90,
87870x00, 0x40, 0x02, 0x00, 0x91, 0x00, 0xA4, 0x80, 0x90, 0x08, 0x40, 0x02, 0x00,
87880x31, 0x00, 0xA4, 0x80, 0x80, 0x00, 0x42, 0x0C, 0x00, 0x09, 0x20, 0x64, 0x02,
87890x90, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87900x00, 0x00, 0x10, 0x22, 0x42, 0x88, 0x18, 0x20, 0x42, 0x80, 0x88, 0x11, 0x22,
87910x06, 0x88, 0x18, 0x20, 0x62, 0x84, 0x88, 0x01, 0x22, 0x06, 0x88, 0x18, 0x20,
87920x60, 0x84, 0x88, 0x01, 0x22, 0x06, 0x88, 0x18, 0x20, 0x62, 0x84, 0x88, 0x21,
87930x26, 0x06, 0x88, 0x18, 0x20, 0x62, 0x80, 0x88, 0x21, 0x22, 0x06, 0x88, 0x18,
87940x20, 0x62, 0x84, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
87950x00, 0x00, 0xA2, 0x0A, 0x08, 0x2A, 0x20, 0x08, 0x00, 0xA8, 0x02, 0xA2, 0x0A,
87960x84, 0x2A, 0x20, 0xAA, 0x80, 0xA0, 0x02, 0xA6, 0x0A, 0x1C, 0x2A, 0x28, 0xA8,
87970xC0, 0xA0, 0x02, 0xA2, 0x0A, 0x88, 0x2A, 0x20, 0xAA, 0x80, 0xA0, 0x02, 0xA2,
87980x0A, 0x88, 0x2A, 0xA0, 0xAA, 0x80, 0xA9, 0x02, 0xA2, 0x0A, 0x18, 0x28, 0x20,
87990xA8, 0x80, 0xA8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88000x10, 0x84, 0x42, 0x10, 0x0A, 0x41, 0xA8, 0x04, 0xA0, 0x12, 0x80, 0x42, 0x10,
88010x2A, 0x41, 0x28, 0x84, 0xA1, 0x10, 0x84, 0x4A, 0x10, 0x2A, 0x61, 0xA8, 0x04,
88020xA1, 0x10, 0x84, 0x4A, 0x18, 0x2A, 0x61, 0xA8, 0x44, 0xA1, 0x10, 0x84, 0x4A,
88030x14, 0x2A, 0x61, 0xA8, 0x04, 0xA1, 0x12, 0x84, 0x4A, 0x10, 0x2A, 0x01, 0xA8,
88040x04, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
88050x80, 0x40, 0x81, 0x02, 0x8D, 0x08, 0x14, 0x00, 0x50, 0x80, 0x40, 0x83, 0x02,
88060x05, 0x08, 0x14, 0x20, 0x50, 0x80, 0x40, 0x01, 0x00, 0x05, 0x08, 0x14, 0x20,
88070x50, 0x00, 0x40, 0x01, 0x02, 0x05, 0x08, 0x14, 0x28, 0x50, 0x80, 0x40, 0x01,
88080x02, 0x85, 0x00, 0x14, 0x20, 0x50, 0x00, 0x40, 0x01, 0x00, 0x05, 0x00, 0x14,
88090x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0,
88100xCA, 0x00, 0x2B, 0x03, 0xA4, 0x0C, 0x10, 0x32, 0xC0, 0xCA, 0x00, 0x01, 0x03,
88110x0C, 0x0C, 0xB0, 0x32, 0x40, 0xC0, 0x80, 0x21, 0x03, 0x86, 0x0C, 0xA1, 0x32,
88120x00, 0xC8, 0x80, 0x01, 0x03, 0x86, 0x0C, 0xA0, 0x32, 0x40, 0xC8, 0x00, 0x20,
88130x03, 0x86, 0x0C, 0x10, 0x30, 0x60, 0xC8, 0x20, 0x21, 0x03, 0x84, 0x0C, 0xB0,
88140x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA2, 0x4E,
88150x80, 0x3A, 0x09, 0xEE, 0x04, 0xA0, 0x13, 0x80, 0x4E, 0x82, 0x3A, 0x11, 0xEA,
88160x04, 0xB8, 0x13, 0x90, 0x4E, 0x90, 0x3A, 0x21, 0x6A, 0x04, 0xA8, 0x13, 0xA0,
88170x4E, 0x88, 0x3A, 0x21, 0xCA, 0x04, 0xA8, 0x13, 0x10, 0x4C, 0x84, 0x32, 0x01,
88180xE8, 0x04, 0xA8, 0x13, 0xA0, 0x4E, 0x80, 0x3B, 0x01, 0xEA, 0x04, 0xA9, 0x03,
88190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x10, 0x12, 0x03,
88200x08, 0x8C, 0x20, 0x32, 0x80, 0xC4, 0x08, 0x02, 0x03, 0x08, 0x0C, 0x20, 0x31,
88210x82, 0xC0, 0x18, 0x02, 0x03, 0x08, 0x0C, 0x20, 0x31, 0x80, 0xC0, 0x18, 0x02,
88220x03, 0x08, 0x0C, 0x20, 0x31, 0x82, 0xC0, 0x18, 0x02, 0x03, 0x08, 0x0C, 0x20,
88230x30, 0x86, 0xC0, 0x00, 0x02, 0x23, 0x08, 0x0C, 0x20, 0x31, 0x84, 0x00, 0x00,
88240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB,
88250xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF,
88260xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF,
88270xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF,
88280xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0x00, 0x00, 0x00,
88290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xDF, 0xD0, 0x6C, 0x43, 0xB3, 0x0D,
88350xED, 0xBF, 0x34, 0xFB, 0xD2, 0xFE, 0xCB, 0xFF, 0x0D, 0xCD, 0xBE, 0x7C, 0xDB,
88360xF0, 0xFF, 0xCB, 0xFF, 0x2F, 0xED, 0xBF, 0x7C, 0xDB, 0xF0, 0xFF, 0xCB, 0xFF,
88370x2F, 0xCD, 0xBE, 0x7C, 0xDB, 0xF0, 0xFF, 0xCB, 0xB7, 0x2F, 0xDF, 0x36, 0x7C,
88380xDB, 0xF0, 0x6D, 0x43, 0xB3, 0x2F, 0xED, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00,
88390x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x3F, 0x32, 0xF3, 0xC8, 0xCC, 0x23, 0xF3,
88400xBF, 0xCC, 0xFC, 0x32, 0xFF, 0xCB, 0xFF, 0x23, 0x33, 0xBF, 0xFC, 0x3C, 0xF2,
88410xFF, 0xCB, 0xFF, 0x2F, 0xF3, 0xBF, 0xFC, 0x3C, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F,
88420x33, 0xBF, 0xFC, 0x3C, 0xF2, 0xFF, 0xCB, 0xCF, 0x2F, 0x3F, 0x8F, 0xFC, 0x3C,
88430xF2, 0xF3, 0xC8, 0xCC, 0x2F, 0xF3, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88440x00, 0x00, 0x00, 0x00, 0xDC, 0x78, 0x72, 0x63, 0x48, 0xEC, 0x21, 0xB1, 0x9F,
88450xDC, 0x7E, 0x12, 0x7B, 0x48, 0x8C, 0x21, 0xB7, 0x87, 0xC4, 0x7E, 0x12, 0x63,
88460x48, 0x8C, 0x21, 0x37, 0x86, 0xC4, 0x7E, 0x12, 0x63, 0x48, 0x8C, 0x21, 0xB7,
88470x87, 0xC4, 0x7E, 0x12, 0x63, 0x48, 0x8C, 0x21, 0xB1, 0x9F, 0xC4, 0x18, 0x12,
88480x7B, 0x48, 0x8C, 0x27, 0x37, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88490x00, 0x00, 0x00, 0x80, 0x00, 0x0E, 0x02, 0x39, 0x0A, 0xE4, 0x20, 0x90, 0x83,
88500x00, 0x0E, 0x02, 0x39, 0x08, 0xE0, 0x20, 0x80, 0x83, 0x40, 0x0E, 0x02, 0x39,
88510x08, 0xE4, 0x20, 0x90, 0x83, 0x00, 0x0E, 0x02, 0x38, 0x0A, 0xE4, 0x20, 0x80,
88520x83, 0x40, 0x0E, 0x02, 0x38, 0x06, 0xE6, 0x20, 0x90, 0xA3, 0x40, 0x0E, 0x02,
88530x39, 0x08, 0xE4, 0x28, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88540x00, 0x00, 0x20, 0x60, 0x8E, 0x00, 0x3A, 0x02, 0xEA, 0x08, 0xA0, 0x23, 0xA0,
88550x8E, 0x00, 0x3A, 0x02, 0xEA, 0x08, 0xB8, 0x23, 0xA0, 0x8E, 0x00, 0x3A, 0x02,
88560xE8, 0x08, 0xA0, 0x23, 0xA0, 0x8E, 0x80, 0x3A, 0x02, 0xEA, 0x08, 0xA8, 0x23,
88570xA0, 0x8E, 0x80, 0x3A, 0x02, 0xEE, 0x08, 0xA8, 0x23, 0xA0, 0x8E, 0x80, 0x3A,
88580x02, 0xEA, 0x08, 0xA8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88590x00, 0x40, 0x80, 0x04, 0x01, 0x12, 0x06, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04,
88600x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48,
88610x10, 0x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80,
88620x04, 0x01, 0x12, 0x06, 0x48, 0x10, 0x20, 0x61, 0x80, 0x04, 0x01, 0x12, 0x04,
88630x48, 0x18, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88640x00, 0x80, 0x0E, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x20, 0x06, 0x00,
88650x18, 0x00, 0x62, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00,
88660x80, 0x01, 0x28, 0x06, 0x80, 0x18, 0x02, 0x60, 0x00, 0x88, 0x01, 0x00, 0x06,
88670x80, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60,
88680x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
88690x20, 0x4E, 0x00, 0x38, 0x05, 0xE2, 0x04, 0x80, 0x13, 0x20, 0x4E, 0x00, 0x38,
88700x09, 0xE2, 0x04, 0x88, 0x13, 0x20, 0x4E, 0x00, 0x38, 0x01, 0xE0, 0x04, 0x80,
88710x13, 0x20, 0x4E, 0x82, 0x38, 0x05, 0xE2, 0x04, 0x88, 0x12, 0x20, 0x4E, 0x80,
88720x38, 0xA1, 0xE2, 0x04, 0x28, 0x51, 0x20, 0x4E, 0x80, 0x30, 0x01, 0xE2, 0x14,
88730x88, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
88740x06, 0x80, 0x18, 0x00, 0x60, 0x00, 0x88, 0x01, 0x00, 0x06, 0x80, 0x18, 0x00,
88750x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0x88, 0x81,
88760x00, 0x06, 0x02, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18,
88770x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x08, 0x10, 0x00, 0x60, 0x00, 0x80,
88780x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x24,
88790x80, 0x90, 0x01, 0x42, 0x02, 0x08, 0x29, 0x20, 0x24, 0x80, 0x90, 0x02, 0x42,
88800x02, 0x08, 0x11, 0x20, 0x24, 0x80, 0x90, 0x00, 0x42, 0x02, 0x08, 0x09, 0x20,
88810xA4, 0x80, 0x90, 0x01, 0x42, 0x02, 0x08, 0x11, 0x20, 0xA4, 0x80, 0x90, 0x01,
88820x42, 0x04, 0x08, 0x39, 0x20, 0x44, 0x80, 0x18, 0x01, 0x42, 0x06, 0x08, 0x01,
88830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x12, 0x81,
88840x48, 0x05, 0x22, 0x11, 0x88, 0x44, 0x00, 0x12, 0x81, 0x48, 0x04, 0x20, 0x31,
88850x80, 0x54, 0x20, 0x12, 0x81, 0x48, 0x04, 0x22, 0x11, 0x88, 0xC4, 0x00, 0x12,
88860x03, 0x48, 0x0D, 0x22, 0x11, 0x80, 0x54, 0x20, 0x12, 0x01, 0x48, 0x05, 0x20,
88870x15, 0x88, 0x54, 0x20, 0x52, 0x81, 0x68, 0x0D, 0x22, 0x1D, 0x88, 0x00, 0x00,
88880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x30, 0x00, 0xC8, 0x00, 0x00,
88890x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xCA, 0x00, 0x20, 0x03, 0xA0, 0x0C, 0x00,
88900x32, 0x00, 0xC0, 0x02, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xCA, 0x00,
88910x28, 0x03, 0x80, 0x0C, 0x80, 0x32, 0x00, 0xCA, 0x00, 0x28, 0x03, 0xA0, 0x0C,
88920x80, 0x72, 0x00, 0xCA, 0x00, 0x28, 0x03, 0x80, 0x1C, 0x80, 0x02, 0x08, 0x00,
88930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x20, 0x2C, 0x00, 0x90, 0x00,
88940x00, 0x02, 0x00, 0x78, 0x00, 0x26, 0x00, 0x90, 0x03, 0x60, 0x02, 0x08, 0x03,
88950x00, 0x20, 0x00, 0x90, 0x00, 0x40, 0x02, 0x00, 0x19, 0x00, 0xE2, 0x00, 0x88,
88960x00, 0x80, 0x06, 0x80, 0x00, 0x00, 0xE2, 0x01, 0x88, 0x00, 0x20, 0x00, 0x80,
88970x28, 0x00, 0x02, 0x00, 0x08, 0x00, 0x80, 0x0A, 0x80, 0x00, 0x0C, 0x00, 0x00,
88980x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x02, 0x40, 0x08, 0x80, 0x01, 0x00, 0x04,
88990x00, 0x18, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x02, 0x40,
89000x00, 0x82, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
89010x84, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
89020x40, 0x00, 0x00, 0x01, 0x00, 0x84, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x00,
89030x00, 0x00, 0x00, 0x10, 0x03, 0x02, 0x20, 0x06, 0x80, 0x10, 0x00, 0x42, 0x00,
89040x08, 0x01, 0x60, 0x06, 0x80, 0x10, 0x00, 0x66, 0x00, 0x88, 0x01, 0x20, 0x04,
89050x80, 0x10, 0x00, 0x42, 0x00, 0x08, 0x01, 0x40, 0x06, 0x80, 0x19, 0x00, 0x62,
89060x00, 0x98, 0x01, 0x20, 0x06, 0x80, 0x19, 0x00, 0x62, 0x00, 0x88, 0x01, 0x20,
89070x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0x88, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00,
89080x00, 0x00, 0x08, 0x80, 0x02, 0x00, 0x06, 0x00, 0x19, 0x00, 0x64, 0x00, 0x90,
89090x11, 0x00, 0x06, 0x00, 0x19, 0x01, 0x60, 0x00, 0x80, 0x01, 0x40, 0x06, 0x00,
89100x19, 0x00, 0x64, 0x00, 0x90, 0x11, 0x00, 0x46, 0x00, 0x18, 0x00, 0x64, 0x04,
89110x80, 0x01, 0x40, 0x46, 0x00, 0x18, 0x00, 0x66, 0x00, 0x90, 0x01, 0x40, 0x06,
89120x00, 0x19, 0x00, 0x64, 0x00, 0x90, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89130x00, 0x02, 0xA2, 0x42, 0x60, 0x0C, 0x01, 0x30, 0x04, 0xC2, 0x10, 0x00, 0x43,
89140x20, 0x0C, 0x01, 0x30, 0x04, 0xC2, 0x10, 0x18, 0x43, 0x20, 0x0C, 0x01, 0x30,
89150x04, 0xC0, 0x10, 0x00, 0x43, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2, 0x10, 0x08,
89160x43, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2, 0x10, 0x08, 0x43, 0x20, 0x0C, 0x81,
89170x30, 0x04, 0xC2, 0x10, 0x08, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
89180x02, 0x00, 0x10, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x04, 0x00, 0x03, 0x00,
89190x4C, 0x00, 0x30, 0x00, 0xC0, 0x04, 0x00, 0x03, 0x00, 0x4C, 0x00, 0x30, 0x01,
89200xC0, 0x04, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03,
89210x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30,
89220x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
89230x00, 0xD0, 0x00, 0x4C, 0x03, 0x30, 0x04, 0xC0, 0x34, 0x00, 0xC3, 0x20, 0x4C,
89240x03, 0x30, 0x0C, 0xC2, 0x34, 0x00, 0x43, 0x00, 0x4C, 0x03, 0x30, 0x0D, 0xC0,
89250x34, 0x00, 0xC3, 0x20, 0x0C, 0x83, 0x30, 0x04, 0xC0, 0x30, 0x08, 0x43, 0x00,
89260x0C, 0x83, 0x30, 0x04, 0xC2, 0x10, 0x00, 0x43, 0x00, 0x0C, 0x01, 0x30, 0x04,
89270xC0, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2,
89280xC2, 0x20, 0x0E, 0x03, 0x10, 0x04, 0x62, 0x30, 0x00, 0xC1, 0x20, 0x06, 0x03,
89290x10, 0x0C, 0x62, 0x30, 0x88, 0x43, 0x20, 0x06, 0x03, 0x18, 0x0C, 0x40, 0x30,
89300x00, 0xC1, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62, 0x30, 0x88, 0x41, 0x20, 0x06,
89310x83, 0x18, 0x04, 0x60, 0x10, 0x88, 0x41, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62,
89320x10, 0x88, 0x01, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x42,
89330x00, 0x06, 0x81, 0x10, 0x04, 0x40, 0x10, 0x08, 0x41, 0x00, 0x0C, 0x81, 0x10,
89340x04, 0xC0, 0x10, 0x80, 0x41, 0x00, 0x04, 0x81, 0x10, 0x04, 0x42, 0x10, 0x08,
89350x41, 0x00, 0x08, 0x01, 0x30, 0x04, 0x40, 0x10, 0x00, 0x43, 0x00, 0x04, 0x01,
89360x30, 0x04, 0x42, 0x10, 0x00, 0x41, 0x00, 0x04, 0x01, 0x10, 0x04, 0x40, 0x10,
89370x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x42, 0x20,
89380x04, 0x81, 0x10, 0x04, 0x62, 0x10, 0x08, 0x41, 0x20, 0x0C, 0x81, 0x10, 0x04,
89390xC2, 0x10, 0x08, 0x41, 0x20, 0x06, 0x81, 0x10, 0x04, 0x42, 0x10, 0x08, 0x41,
89400x20, 0x0C, 0x83, 0x30, 0x04, 0x62, 0x10, 0x08, 0x43, 0x20, 0x06, 0x81, 0x30,
89410x04, 0x62, 0x10, 0x88, 0x41, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62, 0x10, 0x88,
89420x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x02, 0x00, 0x08,
89430x80, 0x00, 0x00, 0xA2, 0x00, 0x08, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80,
89440x00, 0x00, 0x02, 0x20, 0x0A, 0x80, 0x20, 0x00, 0x82, 0x00, 0x08, 0x02, 0x00,
89450x08, 0x00, 0x20, 0x00, 0xA2, 0x00, 0x00, 0x02, 0x20, 0x0A, 0x00, 0x20, 0x00,
89460xA0, 0x00, 0x88, 0x02, 0x20, 0x0A, 0x80, 0x28, 0x00, 0xA2, 0x00, 0x88, 0x42,
89470x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x60, 0x00, 0x82, 0x01,
89480x08, 0x06, 0x20, 0x18, 0x80, 0x60, 0x00, 0x82, 0x01, 0x08, 0x06, 0x20, 0x18,
89490x80, 0x60, 0x00, 0x82, 0x01, 0x08, 0x06, 0x20, 0x18, 0x80, 0x60, 0x00, 0x82,
89500x01, 0x08, 0x06, 0x20, 0x18, 0x80, 0x60, 0x00, 0x82, 0x01, 0x08, 0x06, 0x20,
89510x18, 0x80, 0x60, 0x00, 0x82, 0x01, 0x28, 0x06, 0x20, 0x18, 0x80, 0x00, 0x00,
89520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x40, 0xA0, 0x00, 0x01, 0x02,
89530x04, 0x08, 0x10, 0x20, 0x41, 0x80, 0x00, 0x01, 0x02, 0x04, 0x48, 0x10, 0x28,
89540x40, 0x80, 0x04, 0x01, 0x02, 0x04, 0x48, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01,
89550x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10,
89560x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00,
89570x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x62, 0xC0, 0x8A, 0x81, 0x2B, 0x06,
89580xAC, 0x18, 0xB8, 0x62, 0xC0, 0x8A, 0x81, 0x2B, 0x06, 0xAC, 0x18, 0xB0, 0x62,
89590xC0, 0x8A, 0x81, 0x2B, 0x06, 0xAE, 0x18, 0xB8, 0x62, 0xC0, 0x8A, 0x01, 0x2B,
89600x06, 0xAC, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01, 0x2B, 0x06, 0xAC, 0x18, 0xB0,
89610x62, 0xC0, 0x8A, 0x01, 0x29, 0x06, 0xAC, 0x18, 0xB0, 0x02, 0x88, 0x0A, 0x00,
89620x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x62, 0x20, 0x8E, 0x81, 0x38, 0x06, 0xE2,
89630x18, 0x88, 0x63, 0x60, 0x8E, 0x81, 0x38, 0x06, 0xE6, 0x18, 0x88, 0x63, 0x20,
89640x8E, 0x81, 0x38, 0x06, 0xE2, 0x18, 0x88, 0x63, 0x50, 0x8E, 0x81, 0x39, 0x06,
89650xE2, 0x18, 0x98, 0x63, 0x20, 0x8E, 0x81, 0x39, 0x04, 0xE2, 0x18, 0x88, 0x63,
89660x20, 0x8E, 0x81, 0x3A, 0x06, 0xE2, 0x18, 0x88, 0x03, 0x00, 0x00, 0x00, 0x00,
89670x00, 0x00, 0x00, 0x02, 0x80, 0x62, 0x00, 0x8E, 0x01, 0x3B, 0x06, 0xE4, 0x18,
89680xB0, 0x63, 0x00, 0x8E, 0x01, 0x39, 0x06, 0xE0, 0x18, 0x80, 0x63, 0x40, 0x8E,
89690x01, 0x39, 0x06, 0xEC, 0x18, 0xB0, 0x63, 0x80, 0x8E, 0x01, 0x38, 0x06, 0xE4,
89700x18, 0x80, 0x63, 0x40, 0x8E, 0x01, 0x38, 0x06, 0xE4, 0x18, 0x90, 0x63, 0x40,
89710x0E, 0x01, 0x39, 0x06, 0xE4, 0x18, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
89720x00, 0x00, 0x0A, 0xA2, 0x62, 0x60, 0x8C, 0x01, 0x30, 0x06, 0xEA, 0x18, 0x80,
89730x63, 0x20, 0x8C, 0x01, 0x30, 0x06, 0xC2, 0x18, 0x18, 0x63, 0xA0, 0x8E, 0x01,
89740x30, 0x06, 0xC0, 0x18, 0x00, 0x63, 0x20, 0x8E, 0x81, 0x30, 0x06, 0xEA, 0x18,
89750x08, 0x63, 0xA0, 0x8E, 0x81, 0x30, 0x06, 0xEA, 0x18, 0xA8, 0x63, 0xA0, 0x8E,
89760x81, 0x3A, 0x06, 0xEA, 0x18, 0xA8, 0x43, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00,
89770x00, 0x02, 0x00, 0x48, 0x00, 0x24, 0x01, 0x9A, 0x04, 0x48, 0x12, 0x20, 0x49,
89780x80, 0x2E, 0x01, 0x90, 0x04, 0xE8, 0x12, 0x00, 0x49, 0x80, 0x24, 0x01, 0x90,
89790x04, 0x68, 0x12, 0xA0, 0x41, 0x80, 0x2C, 0x01, 0xBA, 0x04, 0x48, 0x10, 0xA0,
89800x43, 0x80, 0x24, 0x01, 0xBA, 0x04, 0x48, 0x10, 0x20, 0x49, 0x80, 0x04, 0x01,
89810x92, 0x04, 0x48, 0x12, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89820x02, 0x00, 0x60, 0x00, 0x84, 0x01, 0x10, 0x06, 0x60, 0x18, 0x00, 0x61, 0x20,
89830x86, 0x01, 0x10, 0x06, 0x62, 0x18, 0x00, 0x61, 0x00, 0x86, 0x01, 0x10, 0x06,
89840x40, 0x18, 0x00, 0x61, 0x20, 0x86, 0x81, 0x18, 0x06, 0x60, 0x18, 0x88, 0x61,
89850x00, 0x86, 0x81, 0x58, 0x06, 0x60, 0x18, 0x80, 0x61, 0x00, 0x86, 0x01, 0x18,
89860x06, 0x60, 0x18, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89870xA2, 0x06, 0x20, 0x1E, 0x00, 0x70, 0x00, 0xC2, 0x01, 0x00, 0x07, 0x20, 0x1E,
89880x00, 0x70, 0x00, 0xC2, 0x01, 0x88, 0x07, 0x20, 0x1C, 0x00, 0x70, 0x00, 0xC0,
89890x01, 0x00, 0x07, 0x20, 0x1C, 0x80, 0x70, 0x00, 0xE2, 0x01, 0x88, 0x07, 0x20,
89900x1E, 0x80, 0x78, 0x00, 0xC2, 0x01, 0x88, 0x07, 0x20, 0x1E, 0x80, 0x78, 0x00,
89910xE2, 0x01, 0x88, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
89920x4A, 0x00, 0x26, 0x83, 0x90, 0x04, 0x40, 0x12, 0x08, 0x49, 0x00, 0x26, 0x81,
89930x90, 0x04, 0x40, 0x12, 0x80, 0x49, 0x00, 0x24, 0x81, 0x90, 0x04, 0x42, 0x12,
89940x08, 0x41, 0x00, 0x24, 0x01, 0x90, 0x04, 0x60, 0x10, 0x80, 0x41, 0x00, 0x26,
89950x01, 0x98, 0x04, 0x40, 0x10, 0x80, 0x49, 0x00, 0x06, 0x01, 0x98, 0x04, 0x60,
89960x12, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x42,
89970x20, 0x04, 0x81, 0x18, 0x05, 0x62, 0x10, 0x88, 0x41, 0x20, 0x04, 0x81, 0x18,
89980x04, 0x62, 0x10, 0x08, 0x51, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62, 0x10, 0x88,
89990x41, 0x20, 0x06, 0x81, 0x18, 0x04, 0x42, 0x10, 0x08, 0x41, 0x20, 0x04, 0x81,
90000x10, 0x04, 0x62, 0x10, 0x08, 0x41, 0x20, 0x04, 0x81, 0x10, 0x04, 0x42, 0x10,
90010x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x42, 0x00,
90020x02, 0x81, 0x28, 0x0C, 0xA2, 0x30, 0x88, 0x42, 0x00, 0x02, 0x83, 0x28, 0x0C,
90030xA0, 0x10, 0x80, 0xC0, 0x20, 0x0A, 0x83, 0x28, 0x0C, 0xA2, 0x30, 0x88, 0xC2,
90040x00, 0x0A, 0x03, 0x28, 0x04, 0x22, 0x10, 0x80, 0x40, 0x20, 0x02, 0x01, 0x08,
90050x04, 0xA2, 0x10, 0x88, 0x40, 0x20, 0x02, 0x81, 0x08, 0x04, 0x22, 0x10, 0x88,
90060x00, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0A,
90070x01, 0x28, 0x05, 0xA0, 0x10, 0x80, 0xC2, 0x00, 0x0A, 0x03, 0x28, 0x0C, 0xA0,
90080x10, 0x80, 0x52, 0x00, 0x0A, 0x01, 0x28, 0x04, 0xA0, 0x10, 0x80, 0xC2, 0x00,
90090x0A, 0x03, 0x28, 0x0C, 0xA0, 0x30, 0x80, 0xC2, 0x00, 0x0A, 0x03, 0x28, 0x0C,
90100x80, 0x30, 0x80, 0xC2, 0x00, 0x0A, 0x03, 0x28, 0x04, 0xA0, 0x30, 0x80, 0x02,
90110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x20, 0x06, 0x00,
90120x08, 0x00, 0x60, 0x00, 0x80, 0x11, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x04,
90130x88, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02,
90140x00, 0x08, 0x01, 0x20, 0x04, 0x80, 0x10, 0x00, 0x42, 0x00, 0x08, 0x00, 0x80,
90150x04, 0x80, 0x10, 0x00, 0x42, 0x00, 0x08, 0x01, 0x20, 0x04, 0x80, 0x00, 0x00,
90160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x42, 0x40, 0x00, 0x81, 0x01,
90170x04, 0x04, 0x10, 0x18, 0x40, 0x40, 0x00, 0x83, 0x01, 0x05, 0x04, 0x10, 0x10,
90180x40, 0x40, 0x00, 0x81, 0x01, 0x04, 0x06, 0x10, 0x18, 0x50, 0x40, 0x40, 0x01,
90190x01, 0x0C, 0x04, 0x10, 0x10, 0x40, 0x40, 0x00, 0x01, 0x01, 0x05, 0x84, 0x10,
90200x10, 0x40, 0x40, 0x00, 0x01, 0x01, 0x04, 0x04, 0x10, 0x10, 0x00, 0x88, 0x0A,
90210x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x02, 0x20, 0x06, 0x80, 0x18, 0x00,
90220x62, 0x00, 0x88, 0x01, 0x60, 0x06, 0x80, 0x18, 0x00, 0x66, 0x00, 0x88, 0x01,
90230x20, 0x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0x88, 0x01, 0x60, 0x06, 0x80, 0x19,
90240x00, 0x62, 0x00, 0x98, 0x01, 0x20, 0x06, 0x80, 0x19, 0x00, 0x62, 0x00, 0x88,
90250x01, 0x20, 0x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00,
90260x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x02, 0x00, 0x24, 0x00, 0x99, 0x00, 0x64,
90270x02, 0x10, 0x09, 0x00, 0x2E, 0x00, 0x91, 0x00, 0xE0, 0x00, 0x00, 0x09, 0x40,
90280x26, 0x00, 0x91, 0x00, 0x44, 0x02, 0x10, 0x09, 0x00, 0x2E, 0x00, 0xB8, 0x00,
90290x64, 0x00, 0x80, 0x0B, 0x40, 0x26, 0x00, 0xB8, 0x00, 0x64, 0x02, 0x98, 0x09,
90300x40, 0x26, 0x00, 0x99, 0x00, 0x64, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00,
90310x00, 0x00, 0x00, 0x02, 0xA2, 0x06, 0x60, 0x14, 0x00, 0x50, 0x00, 0xC2, 0x01,
90320x00, 0x05, 0x20, 0x16, 0x00, 0x50, 0x00, 0x62, 0x01, 0x18, 0x05, 0x20, 0x1C,
90330x00, 0x50, 0x00, 0x40, 0x01, 0x00, 0x05, 0x20, 0x16, 0x80, 0x58, 0x00, 0xC2,
90340x01, 0x88, 0x05, 0x28, 0x1C, 0x80, 0x58, 0x00, 0xC2, 0x01, 0x08, 0x07, 0x20,
90350x1C, 0x80, 0x70, 0x08, 0xC2, 0x01, 0x08, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00,
90360x00, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x04, 0x02, 0x10, 0x08, 0xC0, 0x20, 0x00,
90370xA1, 0x00, 0x04, 0x02, 0x10, 0x08, 0x40, 0x20, 0x00, 0x81, 0x00, 0x0C, 0x02,
90380x10, 0x08, 0x40, 0x20, 0x00, 0x81, 0x00, 0x04, 0x02, 0x10, 0x0A, 0xC0, 0x20,
90390x00, 0xA1, 0x00, 0x8C, 0x02, 0x10, 0x08, 0xC0, 0x28, 0x00, 0xE3, 0x00, 0x1C,
90400x02, 0x30, 0x0A, 0xC0, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90410x00, 0x02, 0x00, 0x20, 0x00, 0xA4, 0x00, 0x90, 0x02, 0xC0, 0x0A, 0x00, 0xA9,
90420x20, 0xAC, 0x00, 0xB0, 0x0A, 0xC2, 0x08, 0x00, 0x29, 0x00, 0xAC, 0x00, 0xB0,
90430x02, 0xC0, 0x0A, 0x00, 0xAB, 0x20, 0xAC, 0x82, 0xB0, 0x06, 0xC0, 0x28, 0x08,
90440xAB, 0x00, 0xAC, 0x82, 0xB0, 0x0A, 0xC0, 0x3A, 0x08, 0xAB, 0x00, 0xAC, 0x02,
90450xB0, 0x0E, 0xC0, 0x28, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90460x02, 0xA2, 0xC2, 0x20, 0x06, 0x03, 0x18, 0x0C, 0x62, 0x30, 0x80, 0xE1, 0x20,
90470x06, 0x03, 0x18, 0x0C, 0x62, 0x30, 0x88, 0xC1, 0x20, 0x06, 0x03, 0x18, 0x0C,
90480x60, 0x30, 0x80, 0xC1, 0x20, 0x06, 0x83, 0x18, 0x0E, 0x62, 0x30, 0x88, 0xE1,
90490x20, 0x06, 0x83, 0x18, 0x0C, 0x62, 0x38, 0x80, 0xE1, 0x20, 0x06, 0x83, 0x18,
90500x0E, 0x62, 0x30, 0x88, 0x01, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
90510x80, 0x02, 0x00, 0x04, 0x80, 0x10, 0x00, 0x40, 0x00, 0x08, 0x01, 0x00, 0x04,
90520x80, 0x10, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x80, 0x10, 0x00, 0x42,
90530x00, 0x08, 0x11, 0x00, 0x44, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
90540x84, 0x00, 0x10, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
90550x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
90560x12, 0x22, 0x06, 0x88, 0x18, 0x20, 0x62, 0x80, 0x88, 0x11, 0x20, 0x06, 0x88,
90570x18, 0x20, 0x62, 0x84, 0x88, 0x01, 0x22, 0x06, 0x88, 0x18, 0x20, 0x62, 0x80,
90580x88, 0x01, 0x22, 0x06, 0x88, 0x18, 0x01, 0x62, 0x84, 0x88, 0x31, 0x20, 0x46,
90590x80, 0x18, 0x20, 0x62, 0x04, 0x80, 0x11, 0x20, 0x46, 0x88, 0x18, 0x01, 0x62,
90600x84, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x02,
90610x02, 0x0A, 0x88, 0x28, 0x20, 0xA2, 0x80, 0x88, 0x22, 0x00, 0x0A, 0x88, 0x28,
90620x00, 0xA0, 0x80, 0x80, 0x02, 0x22, 0x0A, 0x88, 0x28, 0x20, 0xA2, 0x80, 0x88,
90630x02, 0x02, 0x0A, 0x00, 0x28, 0x20, 0xA2, 0x80, 0x80, 0x02, 0x22, 0x0A, 0x02,
90640x28, 0x20, 0xA2, 0x80, 0x80, 0x02, 0x20, 0x0A, 0x88, 0x28, 0x20, 0xA2, 0x00,
90650x88, 0x02, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x04,
90660x42, 0x10, 0x28, 0x01, 0xA0, 0x04, 0x81, 0x12, 0x04, 0x42, 0x10, 0x28, 0x41,
90670xA0, 0x04, 0x81, 0x10, 0x04, 0x4A, 0x10, 0x28, 0x41, 0xA0, 0x04, 0x81, 0x12,
90680x04, 0x4A, 0x10, 0x28, 0x01, 0x20, 0x04, 0x81, 0x10, 0x04, 0x42, 0x10, 0x08,
90690x01, 0xA0, 0x04, 0x81, 0x10, 0x00, 0x42, 0x10, 0x08, 0x41, 0x20, 0x04, 0x80,
90700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xA0, 0x40,
90710x01, 0x00, 0x05, 0x08, 0x14, 0x00, 0x50, 0x80, 0x40, 0x01, 0x02, 0x05, 0x00,
90720x14, 0x28, 0x50, 0x00, 0x40, 0x01, 0x00, 0x05, 0x00, 0x14, 0x20, 0x50, 0x00,
90730x40, 0x01, 0x00, 0x85, 0x08, 0x34, 0x20, 0x50, 0x80, 0x40, 0x03, 0x02, 0x05,
90740x00, 0x14, 0x20, 0x50, 0x80, 0x40, 0x01, 0x02, 0x05, 0x08, 0x14, 0x20, 0x00,
90750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x82, 0xB2, 0xC0, 0xCA, 0x82,
90760x21, 0x0B, 0xA4, 0x2C, 0x18, 0xB2, 0xC0, 0xCA, 0x02, 0x28, 0x0B, 0x84, 0x2C,
90770xB0, 0xB2, 0x40, 0xC8, 0x82, 0x21, 0x0B, 0x86, 0x2C, 0x80, 0xB2, 0x40, 0xC8,
90780x02, 0x21, 0x0B, 0xAC, 0x2C, 0xB0, 0xB2, 0xC0, 0xCA, 0x02, 0x2B, 0x0B, 0x84,
90790x2C, 0xB0, 0xB2, 0xC0, 0xCA, 0x02, 0x2B, 0x0B, 0xAC, 0x2C, 0xB0, 0x02, 0x88,
90800x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x12, 0x20, 0x4E, 0x80, 0x38,
90810x01, 0xEA, 0x04, 0x88, 0x13, 0x60, 0x4E, 0x80, 0x3A, 0x01, 0xE6, 0x04, 0x88,
90820x13, 0x20, 0x4E, 0x80, 0x38, 0x01, 0xE2, 0x04, 0xA8, 0x13, 0x60, 0x4E, 0x00,
90830x39, 0x01, 0xE2, 0x24, 0x98, 0x13, 0x20, 0x4E, 0x82, 0x39, 0x01, 0xE2, 0x04,
90840x88, 0x13, 0x20, 0x4E, 0x82, 0x38, 0x01, 0xE2, 0x04, 0x88, 0x03, 0x00, 0x00,
90850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x00, 0x02, 0x03, 0x08, 0x0C,
90860x20, 0x30, 0x80, 0xC0, 0x00, 0x02, 0x03, 0x08, 0x0C, 0x20, 0x31, 0x80, 0xC0,
90870x10, 0x02, 0x03, 0x08, 0x0C, 0x20, 0x30, 0x80, 0xC0, 0x08, 0x02, 0x03, 0x08,
90880x0C, 0x20, 0x31, 0x82, 0xC0, 0x18, 0x02, 0x43, 0x08, 0x0C, 0x20, 0x30, 0x86,
90890xC0, 0x00, 0x02, 0x63, 0x08, 0x0C, 0x21, 0x31, 0x80, 0x00, 0x00, 0x00, 0x00,
90900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F,
90910xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF,
90920xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF,
90930x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC,
90940xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00,
90950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91000x00, 0x00, 0x00, 0x00, 0x34, 0xDB, 0xD0, 0x6C, 0x43, 0xB3, 0x2F, 0xCD, 0x36,
91010xFC, 0xDF, 0xD0, 0x6C, 0x43, 0xFB, 0x0D, 0xCD, 0x36, 0x34, 0xDB, 0xD0, 0x6C,
91020x43, 0xB3, 0x0D, 0xCD, 0x36, 0x34, 0xDB, 0xD0, 0x7E, 0xC3, 0xB7, 0x2F, 0xCD,
91030x36, 0x7C, 0xDB, 0xF0, 0x7F, 0x43, 0xB3, 0x2F, 0xDF, 0x36, 0xFC, 0xFF, 0xD2,
91040x6C, 0xC3, 0xB7, 0x0D, 0xED, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91050x00, 0x00, 0x00, 0xCC, 0x3C, 0x32, 0xF3, 0xC8, 0xCC, 0x2F, 0x33, 0x8F, 0xFC,
91060x3F, 0x32, 0xF3, 0xC8, 0xFC, 0x23, 0x33, 0x8F, 0xCC, 0x3C, 0x32, 0xF3, 0xC8,
91070xCC, 0x23, 0x33, 0x8F, 0xCC, 0x3C, 0x32, 0xFF, 0xC8, 0xCF, 0x2F, 0x33, 0x8F,
91080xFC, 0x3C, 0xF2, 0xFF, 0xC8, 0xCC, 0x2F, 0x3F, 0x8F, 0xFC, 0xFF, 0x32, 0xF3,
91090xC8, 0xCF, 0x23, 0xF3, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91100x00, 0x00, 0xDC, 0x18, 0x12, 0x63, 0x48, 0x8C, 0x27, 0x31, 0x86, 0xDC, 0x1E,
91110x12, 0x63, 0x48, 0xEC, 0x21, 0x37, 0x86, 0xC4, 0x78, 0x12, 0x63, 0x48, 0x8C,
91120x21, 0x31, 0x86, 0xC4, 0x1E, 0x12, 0x7B, 0xC8, 0x8D, 0x27, 0xB7, 0x87, 0xDC,
91130x7E, 0x72, 0x7B, 0x48, 0x8C, 0x27, 0xB7, 0x9F, 0xDC, 0x7E, 0x12, 0xFB, 0xC9,
91140x8D, 0x27, 0xB7, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91150x00, 0x40, 0xE1, 0x0C, 0x85, 0x33, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00,
91160x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02,
91170x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0xCE, 0x50, 0x08, 0x40, 0x21,
91180x00, 0x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0xE1, 0x0C, 0x85, 0x00, 0x14,
91190x02, 0x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91200x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
91210x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04,
91220x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
91230x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x01, 0x02,
91240x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
91250x21, 0x40, 0x84, 0x00, 0x11, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00,
91260x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08,
91270x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84,
91280x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40,
91290x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
91300x0C, 0x80, 0x33, 0x00, 0x02, 0x04, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00,
91310x02, 0x00, 0x08, 0x00, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10,
91320x20, 0x00, 0x80, 0x00, 0x00, 0xCE, 0x00, 0x08, 0x00, 0x20, 0x40, 0x80, 0x00,
91330x00, 0x02, 0x04, 0x08, 0x00, 0xE0, 0x4C, 0x80, 0x00, 0x01, 0x02, 0x00, 0x08,
91340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
91350x04, 0x00, 0x10, 0xCC, 0x40, 0x00, 0x10, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
91360x44, 0x00, 0x10, 0x01, 0x00, 0x04, 0x33, 0x10, 0x00, 0x40, 0x00, 0x00, 0xC1,
91370x0C, 0x04, 0x00, 0x10, 0xCC, 0x40, 0x30, 0x03, 0x01, 0x00, 0x04, 0x00, 0x10,
91380x00, 0x40, 0x00, 0x00, 0xC1, 0x0C, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
91390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01,
91400x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
91410x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
91420x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
91430x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00,
91440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00,
91450x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00,
91460x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04,
91470x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44,
91480x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00,
91490x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01,
91500xCC, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
91510x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
91520x01, 0x00, 0x04, 0x30, 0x13, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
91530x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00,
91540x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02,
91550x54, 0x08, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21,
91560x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15,
91570x02, 0x54, 0x08, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x50,
91580x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00,
91590x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04,
91600x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
91610x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02,
91620x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20,
91630x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
91640x00, 0x00, 0x10, 0x00, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08,
91650x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84,
91660x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40,
91670x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00,
91680x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91690x00, 0x10, 0x08, 0x00, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03,
91700xE0, 0x0C, 0x80, 0x33, 0x00, 0x02, 0x00, 0x38, 0x03, 0x20, 0x00, 0x80, 0x33,
91710x00, 0x02, 0x00, 0x38, 0x03, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x08,
91720x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x38, 0x03, 0xE0, 0x0C, 0x80,
91730x00, 0x00, 0xCE, 0x00, 0x38, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91740x10, 0x00, 0x00, 0x21, 0x00, 0x84, 0x33, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21,
91750x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10,
91760xCE, 0x40, 0x08, 0x00, 0xE1, 0x0C, 0x84, 0x00, 0x10, 0xCE, 0x40, 0x38, 0x03,
91770x21, 0x00, 0x84, 0x33, 0x10, 0xCE, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x33,
91780x10, 0x02, 0x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91790x00, 0x40, 0x00, 0x00, 0x81, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
91800x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x02,
91810x10, 0x00, 0x40, 0x20, 0x00, 0x01, 0x00, 0x04, 0x02, 0x10, 0x08, 0x40, 0x00,
91820x00, 0x81, 0x00, 0x04, 0x02, 0x10, 0x00, 0x40, 0x00, 0x00, 0x81, 0x00, 0x04,
91830x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91840x00, 0x01, 0x00, 0x84, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04,
91850x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x02, 0x40,
91860x00, 0x00, 0x21, 0x00, 0x04, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x01, 0x00,
91870x84, 0x00, 0x10, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x84, 0x00, 0x10, 0x00,
91880x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01,
91890x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x00,
91910x00, 0xC0, 0x0C, 0x00, 0x00, 0x00, 0xCC, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00,
91920x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91930x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
91980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00,
91990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
92030xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
92190x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
92200xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
92210x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC,
92220xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92230x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
92240x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
92250xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
92260x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
92270xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92280x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
92290xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
92300x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
92310x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
92320xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92330x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC,
92340xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03,
92350x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
92360xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
92370x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92380x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
92390xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
92400x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC,
92410xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03,
92420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92430x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
92440xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
92450x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
92460xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
92470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92480x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00, 0x85,
92490x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02, 0x50,
92500x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00,
92510x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02,
92520x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
92530x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00,
92540x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08,
92550x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
92560x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04,
92570x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
92580x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10,
92590x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00,
92600x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00,
92610x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08,
92620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
92630x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02,
92640x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20,
92650x40, 0x80, 0x00, 0x01, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00,
92660x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00,
92670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04,
92680x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40,
92690x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
92700x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
92710x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x00,
92720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
92730x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
92740x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01,
92750x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
92760x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
92770x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11,
92780x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10,
92790x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00,
92800x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x10, 0x00, 0x44, 0x00,
92810x10, 0x01, 0x00, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x00,
92820x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
92830x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
92840x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01,
92850x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
92860x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
92870x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0xCE, 0x54,
92880x08, 0x50, 0x21, 0x40, 0x85, 0x33, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21, 0x40,
92890x85, 0x00, 0x15, 0x02, 0x54, 0x38, 0x53, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02,
92900x54, 0x08, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21,
92910x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
92920x00, 0x00, 0x10, 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08,
92930x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
92940x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04,
92950x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
92960x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92970x00, 0x10, 0x00, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00,
92980x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00,
92990x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08,
93000x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84,
93010x00, 0x10, 0x02, 0x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93020x10, 0x08, 0x00, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03, 0xE0,
93030x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03, 0xE0, 0x0C, 0x80, 0x33, 0x00,
93040x02, 0x00, 0x38, 0x03, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03,
93050xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03, 0x20, 0x00, 0x80, 0x33,
93060x00, 0xCE, 0x00, 0x38, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
93070x00, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00,
93080x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02,
93090x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21,
93100x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10,
93110x02, 0x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93120x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01,
93130x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
93140x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
93150x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
93160x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93170x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
93180x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00,
93190x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04,
93200x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40,
93210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00,
93220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93260x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00,
93320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0,
93360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93510x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
93520x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
93530xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
93540x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
93550xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93560x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
93570xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
93580x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
93590x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
93600xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93610x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC,
93620xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03,
93630x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
93640xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
93650x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93660x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
93670xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
93680x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC,
93690xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03,
93700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93710x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
93720xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
93730x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
93740xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
93750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93760xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
93770x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
93780x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
93790xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
93800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x80,
93860x40, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
93870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
93990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
95990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x80, 0x40,
97070x40, 0x00, 0x00, 0x0C, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x00,
100230x00, 0x22, 0x25, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x0C, 0x00,
100240x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100290x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xA0, 0x0C, 0x00, 0x05, 0x80,
100300x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x87, 0xE8, 0x00,
100310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100320x00, 0x00
10033};
diff --git a/drivers/staging/me4000/me4610_firmware.h b/drivers/staging/me4000/me4610_firmware.h
new file mode 100644
index 00000000000..c550d99286c
--- /dev/null
+++ b/drivers/staging/me4000/me4610_firmware.h
@@ -0,0 +1,5409 @@
1/*
2 This file is copyright by Meilhaus Electronic GmbH 2003.
3 You are not allowed to distribute, sell, modify, reverse engineer or use this
4 code (or parts of it) for any other purpose or under any other conditions
5 than stated below.
6
7 1) You are allowed to distribute verbatim copies of this file together
8 with device drivers for the Meilhaus ME-4000, board family.
9
10 2) Derived work (device drivers using this file) can be published under
11 the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version. Any other license terms have
14 to be agreed by Meilhaus GmbH in written.
15
16 2) This file is distributed WITHOUT ANY WARRANTY;
17 without even the implied warranty of MERCHANTABILITY
18 or FITNESS FOR A PARTICULAR PURPOSE. Meilhaus is under
19 no means liable for products using this file or parts of it.
20
21 3) The copyright of this file has to be mentioned in derived work.
22
23 4) If this license terms are not valid due to any other law
24 or restrictions imposed on you, you are not allowed to use
25 this file in any way at all.
26 */
27
28/* Version 0 of ME-4610 firmware */
29static unsigned char xilinx_firm_4610[] = {
300x00, 0x01, 0x11, 0x0c, 0x01, 0x01, 0x04, 0x00, 0x00, 0x09, 0x04, 0x02, 0x00,
310x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x99, 0xAA, 0x66, 0x0C, 0x00,
320x01, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x0C, 0x80, 0x06, 0x80, 0x00, 0x00, 0x00,
330xD0, 0x0C, 0x80, 0x04, 0x80, 0x00, 0x01, 0xFC, 0xB4, 0x0C, 0x00, 0x03, 0x80,
340x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x90, 0x0C,
350x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00,
360x00, 0x80, 0x0C, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x7C, 0x20, 0x40, 0x58, 0x04,
370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x01, 0x00,
400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00,
410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
430x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
440x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
470x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00,
520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00,
550x00, 0x00, 0x00, 0x40, 0x48, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
580x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
590x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
620x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x58, 0x80, 0x54, 0x00,
630x44, 0x01, 0x18, 0x05, 0x60, 0x04, 0x80, 0x01, 0x00, 0x66, 0x00, 0xD8, 0x00,
640x60, 0x0A, 0x80, 0x2D, 0x00, 0xF6, 0x00, 0xD8, 0x03, 0x60, 0x0A, 0x80, 0x69,
650x00, 0xC6, 0x01, 0x98, 0x05, 0x20, 0x16, 0xFC, 0x23, 0x00, 0x00, 0x00, 0x00,
660x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0xFF, 0x00, 0xBF, 0x00, 0xDC, 0x32, 0xF0,
670x13, 0xC0, 0x4F, 0x00, 0xFB, 0x28, 0xBC, 0x04, 0xB0, 0x17, 0xC0, 0x4E, 0x12,
680x1B, 0x10, 0xFC, 0x13, 0x30, 0x93, 0xC0, 0x4B, 0x00, 0x1F, 0x01, 0xFC, 0x24,
690x30, 0xCF, 0xE2, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
700x01, 0x08, 0x37, 0x01, 0x9D, 0x06, 0x44, 0x30, 0xD1, 0x11, 0x40, 0x47, 0x00,
710xFD, 0x0A, 0x74, 0x06, 0x10, 0x09, 0x40, 0x17, 0x09, 0x11, 0x42, 0xF4, 0x0B,
720x50, 0x49, 0x40, 0x06, 0x0C, 0x1D, 0x00, 0x74, 0x00, 0x10, 0x8F, 0x40, 0x04,
730x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x33, 0x00,
740x8D, 0x18, 0x05, 0x16, 0xDA, 0x08, 0x40, 0x33, 0x00, 0xCD, 0x40, 0x74, 0x03,
750x91, 0x0C, 0x40, 0x35, 0x01, 0x0D, 0x20, 0x34, 0xA3, 0x10, 0x48, 0x40, 0x01,
760x01, 0xCD, 0xA0, 0x74, 0x13, 0xD2, 0x4C, 0x40, 0x44, 0x80, 0x0E, 0x00, 0x00,
770x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x34, 0x00, 0x9D, 0x01, 0x44, 0x86,
780xD0, 0x39, 0x40, 0x07, 0x00, 0xDD, 0x00, 0x64, 0x8A, 0x10, 0x89, 0x02, 0x37,
790x00, 0x15, 0x10, 0x74, 0x03, 0x50, 0x19, 0x07, 0x47, 0x20, 0x5D, 0x04, 0x74,
800xA3, 0xDA, 0x0D, 0x48, 0x0C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
810x00, 0x00, 0xA8, 0x77, 0x00, 0x1F, 0x91, 0x4C, 0x86, 0xE0, 0x19, 0xC0, 0x57,
820x21, 0xDB, 0x00, 0x7C, 0x01, 0xB0, 0x05, 0x80, 0x06, 0x91, 0x1B, 0x0B, 0x7C,
830x03, 0x31, 0x31, 0xC0, 0x47, 0x01, 0x9F, 0x44, 0x7C, 0x02, 0xD0, 0x0D, 0x60,
840x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D,
850x02, 0x3E, 0x40, 0xE8, 0x00, 0xF0, 0x0B, 0x40, 0x8F, 0x00, 0xFE, 0x00, 0xF4,
860x48, 0xF0, 0x0B, 0xC0, 0x1F, 0x80, 0x1A, 0x20, 0xBC, 0x03, 0xE1, 0x0B, 0xC8,
870x0E, 0x00, 0x3E, 0x01, 0xF8, 0x02, 0x30, 0x0F, 0xD1, 0x1F, 0x00, 0x06, 0x00,
880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0x9F, 0x00, 0x5C,
890x46, 0x70, 0x09, 0xC0, 0x37, 0x00, 0xDF, 0x20, 0x7C, 0x21, 0x30, 0x0D, 0xC4,
900x34, 0x00, 0xDF, 0x00, 0x4C, 0x83, 0xB0, 0x29, 0xC0, 0x84, 0x08, 0x9F, 0x44,
910x7C, 0x43, 0xF0, 0x0C, 0xC4, 0x0A, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
920x00, 0x00, 0x13, 0xA0, 0x34, 0x00, 0x9D, 0x00, 0x74, 0x0A, 0x90, 0x09, 0x40,
930x67, 0x00, 0xF0, 0x80, 0x34, 0x04, 0xB0, 0xB9, 0x40, 0x32, 0x00, 0xD1, 0x41,
940xC0, 0x03, 0xD0, 0x09, 0x40, 0x07, 0x00, 0x51, 0x00, 0x34, 0x43, 0xD0, 0x3F,
950x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0,
960x32, 0x10, 0x1D, 0x40, 0x30, 0x00, 0x90, 0x10, 0x40, 0xA3, 0x84, 0xC9, 0x00,
970x34, 0x00, 0x10, 0x08, 0x40, 0x20, 0x00, 0xC0, 0x21, 0x00, 0x03, 0x90, 0x00,
980x40, 0x00, 0x00, 0x49, 0x83, 0x04, 0x89, 0xD8, 0x0C, 0x40, 0x1C, 0x00, 0x0A,
990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x82, 0x78, 0x02, 0xEC, 0x81,
1000xB4, 0x05, 0x9A, 0x92, 0x60, 0x4B, 0x90, 0xE1, 0xA9, 0xB6, 0x06, 0x90, 0x1A,
1010x60, 0x7A, 0x00, 0xE1, 0x13, 0xA4, 0x07, 0xC0, 0x12, 0x40, 0x4F, 0x00, 0x61,
1020x35, 0xB4, 0x25, 0xC0, 0x9F, 0x61, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
1030x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x10, 0x4D, 0x00, 0x1C, 0xA1, 0x78, 0x80,
1040xE1, 0x33, 0x25, 0xCF, 0x20, 0x3C, 0x23, 0x30, 0x2C, 0xC1, 0x34, 0x08, 0x07,
1050x05, 0x0D, 0x03, 0xB0, 0xC0, 0xE8, 0x10, 0x22, 0xCF, 0x41, 0x3C, 0x17, 0xF2,
1060xDD, 0xD0, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
1070xB2, 0x3D, 0x08, 0xFF, 0x00, 0xFE, 0xA3, 0x80, 0x8F, 0xC2, 0x1B, 0x00, 0xFF,
1080x80, 0xFE, 0x03, 0xF0, 0x0B, 0x40, 0x3F, 0x10, 0x37, 0x08, 0xDC, 0x63, 0xF0,
1090x87, 0xC6, 0x3F, 0x08, 0xDF, 0x00, 0x7C, 0x23, 0xFA, 0x8F, 0xC2, 0x09, 0x60,
1100x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x77, 0x00, 0x57,
1110x00, 0x7C, 0x03, 0xF0, 0x11, 0xC0, 0x35, 0x00, 0xDF, 0x10, 0x5C, 0x01, 0xF0,
1120x18, 0xC0, 0x66, 0x00, 0xD3, 0x00, 0x6C, 0x13, 0xF0, 0x01, 0xC8, 0x17, 0x10,
1130x9F, 0x00, 0x7C, 0x03, 0x32, 0xBD, 0xC5, 0x54, 0x20, 0x0E, 0x00, 0x00, 0x00,
1140x00, 0x00, 0x00, 0x00, 0x12, 0x98, 0x3D, 0x00, 0x61, 0x80, 0xB6, 0x01, 0xD0,
1150x0A, 0x48, 0x38, 0x00, 0xFD, 0x06, 0x84, 0x03, 0xD2, 0x0A, 0x40, 0x39, 0x40,
1160xF1, 0x80, 0x86, 0x43, 0xD0, 0x0A, 0x48, 0x1B, 0x00, 0xED, 0x00, 0xB4, 0x03,
1170x10, 0x0F, 0x40, 0x48, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1180x03, 0x00, 0x79, 0x80, 0xE5, 0x01, 0x94, 0x07, 0xD0, 0x17, 0x40, 0x79, 0x08,
1190xEC, 0x01, 0x94, 0x07, 0xD0, 0x1F, 0x40, 0x7B, 0x00, 0xE1, 0x01, 0x84, 0x07,
1200xD0, 0x1E, 0x60, 0x79, 0x00, 0xAD, 0x11, 0xA4, 0x07, 0x50, 0x1E, 0x40, 0x0C,
1210x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x23, 0x00,
1220xC1, 0x00, 0x34, 0x03, 0xD0, 0x0C, 0x42, 0x31, 0x02, 0xCD, 0x00, 0x14, 0x4B,
1230xD1, 0x08, 0x40, 0x31, 0x00, 0xC1, 0x0D, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x73,
1240x01, 0xCD, 0x80, 0x74, 0x0B, 0x50, 0x0C, 0x40, 0x48, 0x00, 0x0C, 0x00, 0x00,
1250x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x14, 0x01, 0x77, 0x03, 0xFC, 0x29,
1260xD0, 0x17, 0xC1, 0x5D, 0x00, 0x5F, 0x00, 0x9C, 0x19, 0xD0, 0x07, 0xC0, 0x1E,
1270x00, 0x73, 0x02, 0x4C, 0x01, 0xF0, 0x47, 0xC0, 0x1F, 0x8C, 0x7F, 0x00, 0xFC,
1280x09, 0x72, 0x05, 0x40, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1290x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x08, 0x7C, 0x00, 0xD0, 0x11, 0x40, 0x46,
1300x00, 0x0E, 0x40, 0x68, 0x00, 0xF0, 0x01, 0xC0, 0x06, 0x00, 0x1F, 0x42, 0x5C,
1310x00, 0xB2, 0x11, 0xC0, 0x07, 0x00, 0x1B, 0x10, 0x7C, 0x10, 0x82, 0x01, 0xC0,
1320x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x27,
1330x00, 0x8F, 0x10, 0x54, 0x0A, 0xF2, 0x09, 0x40, 0x27, 0x00, 0x9B, 0x00, 0x4C,
1340x06, 0xD0, 0x99, 0xC0, 0x27, 0x00, 0x8F, 0x04, 0x5C, 0x82, 0xE0, 0x09, 0xC0,
1350x27, 0x00, 0x97, 0x00, 0x7C, 0x02, 0x30, 0x89, 0xC2, 0x43, 0x20, 0x0C, 0x00,
1360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x10, 0x9C, 0x00, 0x54,
1370x02, 0xD0, 0xB9, 0x40, 0xE7, 0x00, 0x9D, 0x00, 0x44, 0x6A, 0x10, 0x19, 0x04,
1380x27, 0x00, 0x9D, 0x02, 0x45, 0x02, 0xC2, 0x09, 0x40, 0x27, 0x00, 0x90, 0x13,
1390x74, 0x22, 0x10, 0x59, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
1400x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x44, 0x02, 0x90, 0x09, 0x40,
1410xE7, 0x00, 0x9D, 0x80, 0x45, 0x02, 0x90, 0x09, 0x41, 0x26, 0x00, 0x9D, 0x02,
1420x44, 0x82, 0x90, 0x09, 0x40, 0x23, 0x00, 0x91, 0x01, 0x74, 0x02, 0x10, 0x09,
1430x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
1440x20, 0x02, 0x8D, 0x14, 0x14, 0x56, 0xD0, 0x0C, 0x40, 0x23, 0x08, 0x8D, 0x00,
1450x04, 0x02, 0x10, 0x08, 0x40, 0x23, 0x02, 0x8D, 0x00, 0x04, 0x02, 0xD0, 0x88,
1460x00, 0x23, 0x02, 0x81, 0x00, 0x30, 0x02, 0x14, 0x48, 0x49, 0x43, 0x80, 0x00,
1470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x86, 0x00, 0x1F, 0x24,
1480x4C, 0x10, 0xF0, 0x01, 0xC0, 0x07, 0x10, 0x1E, 0x14, 0x4C, 0x00, 0xB0, 0xA1,
1490xC2, 0x83, 0x00, 0x1F, 0x1E, 0x4C, 0x78, 0xF0, 0x21, 0xC0, 0x87, 0x00, 0x17,
1500x0A, 0x3C, 0x81, 0x30, 0x41, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00,
1510x00, 0x00, 0x00, 0x19, 0xB0, 0x2F, 0x01, 0xBF, 0x94, 0xFC, 0x52, 0xF2, 0x0A,
1520xC8, 0x2F, 0x00, 0x9C, 0x14, 0xFC, 0x02, 0xB0, 0x1F, 0x80, 0x2F, 0x01, 0xBF,
1530x81, 0x70, 0x06, 0xF1, 0x4F, 0xC0, 0x2F, 0x41, 0xBF, 0x01, 0xFC, 0x53, 0xF0,
1540x49, 0x41, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19,
1550x80, 0x23, 0x00, 0x97, 0x08, 0xF0, 0x37, 0x30, 0x0A, 0xC0, 0x2F, 0x20, 0x9F,
1560x0C, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0xA2, 0x00, 0xBF, 0x10, 0x4C, 0x02, 0xF0,
1570x29, 0xC0, 0x25, 0x02, 0xB3, 0x00, 0xFC, 0x02, 0x30, 0x0B, 0xC0, 0x64, 0x00,
1580x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x01, 0x01,
1590x05, 0x74, 0x3D, 0xB0, 0x01, 0x40, 0x17, 0x00, 0x1D, 0x01, 0x74, 0x01, 0xD1,
1600x01, 0x40, 0x04, 0x00, 0x0D, 0x02, 0x51, 0x28, 0x91, 0x01, 0x40, 0x14, 0x11,
1610x11, 0x00, 0x74, 0x00, 0x10, 0x01, 0x48, 0x71, 0x00, 0x0C, 0x00, 0x00, 0x00,
1620x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x04, 0x85, 0x42, 0x34, 0x02, 0x59,
1630x08, 0x40, 0x23, 0x08, 0x8D, 0x02, 0x34, 0x02, 0xD0, 0x09, 0x42, 0x22, 0x10,
1640x8D, 0x00, 0x16, 0x82, 0xD0, 0x09, 0x40, 0x21, 0x00, 0xC5, 0x20, 0x74, 0x02,
1650x11, 0x08, 0x50, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1660x18, 0xA8, 0x21, 0x00, 0x91, 0x04, 0x74, 0x03, 0xD0, 0x39, 0x60, 0x27, 0x08,
1670x9D, 0x00, 0x74, 0x02, 0xD0, 0x8D, 0x42, 0x24, 0x00, 0x9D, 0x00, 0x54, 0x02,
1680xD0, 0x09, 0x40, 0x24, 0x40, 0x95, 0x04, 0x74, 0x02, 0x52, 0x09, 0x40, 0x61,
1690x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28, 0x25, 0x08,
1700x97, 0x93, 0x78, 0x0A, 0x74, 0x19, 0xC0, 0xE7, 0x00, 0x9F, 0x00, 0x7C, 0x0A,
1710xF0, 0x08, 0xC8, 0xE6, 0x01, 0x9F, 0xB8, 0x5C, 0x02, 0xF0, 0x28, 0xC2, 0x25,
1720x00, 0x97, 0x04, 0x3C, 0x0E, 0x20, 0x09, 0xC4, 0x14, 0x20, 0x04, 0x00, 0x00,
1730x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x02, 0x64, 0x02, 0x9F, 0x00, 0x3C, 0x16,
1740xB0, 0x09, 0xC4, 0xE7, 0x00, 0x9F, 0x80, 0x7C, 0x26, 0xF0, 0x09, 0xC0, 0x27,
1750x01, 0x9F, 0x01, 0x68, 0x02, 0xB0, 0x29, 0xC4, 0x27, 0x01, 0x9B, 0x00, 0x7C,
1760x0E, 0xB4, 0x08, 0x40, 0x52, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1770x00, 0x14, 0x08, 0x05, 0x00, 0x13, 0x02, 0x4C, 0x08, 0xF0, 0x61, 0xC0, 0x07,
1780x00, 0x17, 0x00, 0x4C, 0x40, 0xF0, 0x21, 0x40, 0x04, 0x00, 0x03, 0x42, 0x5C,
1790x00, 0x30, 0x21, 0xC0, 0x87, 0x10, 0x1F, 0x00, 0x4C, 0x08, 0xF0, 0x01, 0xD1,
1800x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x14,
1810x00, 0x51, 0x00, 0xC4, 0x0D, 0xD0, 0x37, 0x40, 0x1C, 0x02, 0x51, 0x20, 0xCC,
1820x41, 0xD2, 0x07, 0x48, 0x14, 0x00, 0x71, 0x49, 0x44, 0x81, 0x50, 0x05, 0x40,
1830x17, 0x00, 0x7C, 0x82, 0xC4, 0x69, 0xD0, 0x07, 0x40, 0x50, 0x00, 0x00, 0x00,
1840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x60, 0xC1, 0x40, 0x14,
1850xCF, 0xC0, 0xB4, 0x40, 0x72, 0x02, 0xC5, 0x00, 0x24, 0x03, 0xD0, 0x8C, 0x40,
1860x30, 0x10, 0xC1, 0x0B, 0x24, 0x03, 0x10, 0x0C, 0x40, 0x37, 0x00, 0xC9, 0x04,
1870x04, 0x80, 0xD0, 0x30, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
1880x00, 0x00, 0x04, 0x82, 0x3C, 0x22, 0xE1, 0x0D, 0x94, 0x43, 0xD0, 0x12, 0x40,
1890x7E, 0x00, 0xC1, 0x01, 0x84, 0x01, 0xD0, 0x0E, 0x40, 0x7C, 0x43, 0x61, 0x00,
1900xA4, 0x27, 0x50, 0x0E, 0x40, 0x3B, 0x10, 0xAD, 0x21, 0x84, 0x01, 0xD0, 0x23,
1910x44, 0x10, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10,
1920x78, 0x01, 0xE3, 0x91, 0x9D, 0x07, 0xF0, 0x16, 0xC0, 0x4A, 0x00, 0xE7, 0x01,
1930xAD, 0x07, 0xE1, 0x13, 0xC0, 0x78, 0x02, 0xA3, 0x61, 0xFC, 0x37, 0x30, 0x5E,
1940xC1, 0x7B, 0x00, 0xBB, 0x01, 0x8C, 0x06, 0xFA, 0x1B, 0xC0, 0x50, 0x00, 0x00,
1950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB0, 0x35, 0x04, 0xDF, 0x40,
1960x6C, 0x03, 0xF3, 0x01, 0xC0, 0x00, 0x20, 0xDF, 0x00, 0x7C, 0x01, 0xD0, 0x05,
1970x90, 0x37, 0x01, 0x1F, 0x00, 0x5C, 0x93, 0xF1, 0xAD, 0x80, 0xB7, 0x03, 0x9C,
1980x40, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
1990x00, 0x00, 0x00, 0x02, 0xA0, 0x7F, 0x00, 0xFF, 0x01, 0xDC, 0x25, 0x30, 0x1F,
2000xC0, 0x7F, 0x00, 0xF7, 0x11, 0xFC, 0x26, 0x10, 0x1F, 0xC0, 0x7F, 0x10, 0x7F,
2010x09, 0xCC, 0x87, 0x30, 0x9F, 0xC0, 0xFC, 0x8A, 0xBF, 0x0D, 0xEC, 0x24, 0xF1,
2020x17, 0xC0, 0x0B, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
2030x88, 0x39, 0x24, 0xED, 0x00, 0xF4, 0x03, 0xB0, 0x4A, 0x48, 0x0B, 0x00, 0xED,
2040x04, 0xB4, 0x21, 0x10, 0x4E, 0x42, 0x7B, 0x01, 0x29, 0x01, 0x84, 0x03, 0xF0,
2050x0E, 0x44, 0x38, 0x00, 0x8D, 0x43, 0x34, 0x21, 0xD0, 0x84, 0x40, 0x57, 0x20,
2060x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x39, 0x00, 0xED,
2070x10, 0x94, 0x01, 0x98, 0x02, 0x40, 0x0B, 0x04, 0xED, 0x80, 0xF4, 0x00, 0x90,
2080x02, 0x41, 0x3B, 0x01, 0x0D, 0x08, 0x94, 0x03, 0x10, 0x0E, 0x48, 0x38, 0x20,
2090x25, 0x02, 0xB4, 0x20, 0xD8, 0x0E, 0x40, 0x23, 0x00, 0x04, 0x00, 0x00, 0x00,
2100x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x33, 0x00, 0xCD, 0x01, 0x74, 0x42, 0x90,
2110x00, 0x40, 0x03, 0x00, 0xCD, 0x00, 0x34, 0x2D, 0x90, 0x10, 0x40, 0x37, 0x00,
2120x19, 0x00, 0x14, 0x03, 0xD0, 0x2D, 0x40, 0xB0, 0x00, 0x0D, 0x08, 0x34, 0x03,
2130xD0, 0x0C, 0x40, 0x1B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2140x05, 0x88, 0x3D, 0x00, 0xFF, 0x01, 0x5C, 0x02, 0xB0, 0xA5, 0xC0, 0x27, 0x90,
2150xF7, 0x00, 0x7C, 0x27, 0xB6, 0xB9, 0xC8, 0x3F, 0x00, 0x9F, 0x20, 0xDC, 0x03,
2160x30, 0xAF, 0xC8, 0x3C, 0x08, 0x8F, 0x01, 0x6C, 0x83, 0xD0, 0x0D, 0xC8, 0x57,
2170x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00,
2180xDF, 0x10, 0x7C, 0x28, 0xF0, 0x15, 0xC0, 0xA7, 0x00, 0xDF, 0x00, 0x7C, 0x03,
2190x70, 0x21, 0xC0, 0x77, 0x00, 0x1E, 0x42, 0x25, 0x83, 0xB0, 0x8D, 0xC0, 0x37,
2200x00, 0x1D, 0x02, 0x7C, 0x03, 0xD0, 0x0D, 0xC4, 0x27, 0x00, 0x0C, 0x00, 0x00,
2210x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x08, 0x3F, 0x28, 0xFB, 0x40, 0xFC, 0x02,
2220x30, 0x37, 0xC0, 0x2F, 0x04, 0xFF, 0x00, 0xFC, 0x16, 0xF0, 0x03, 0xC0, 0x3F,
2230x00, 0x33, 0x00, 0xCC, 0x03, 0x71, 0x0F, 0xE0, 0x3C, 0x0C, 0xBF, 0x20, 0xDC,
2240x03, 0xF2, 0x0B, 0xC2, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2250x00, 0xA1, 0x00, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x06, 0xB0, 0x05, 0xC0, 0xE7,
2260x00, 0xDD, 0x00, 0x74, 0x0A, 0xD0, 0x11, 0x40, 0x36, 0x00, 0x1B, 0x00, 0x6C,
2270x03, 0x10, 0x0D, 0x40, 0x35, 0x00, 0x1C, 0x03, 0x40, 0x04, 0xD0, 0x35, 0x40,
2280x84, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34,
2290x00, 0xDD, 0x00, 0x74, 0x04, 0x18, 0x0D, 0x40, 0x67, 0x04, 0xDD, 0x00, 0x64,
2300x0A, 0xD0, 0x1B, 0x40, 0x37, 0x00, 0x31, 0x06, 0xC0, 0x03, 0x00, 0x0D, 0x44,
2310x36, 0x00, 0xBD, 0x01, 0x44, 0xA3, 0xD0, 0x64, 0x50, 0x04, 0x00, 0x0A, 0x00,
2320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x80, 0xCD, 0x00, 0x36,
2330x00, 0x18, 0x0C, 0x40, 0x01, 0x00, 0xCD, 0x00, 0x34, 0x03, 0xD1, 0x00, 0x42,
2340x36, 0x21, 0x19, 0x24, 0x24, 0x03, 0x15, 0x0C, 0x40, 0x30, 0x00, 0x1D, 0x04,
2350x04, 0xA6, 0xD0, 0x28, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2360x00, 0x00, 0x01, 0xB0, 0x3E, 0x08, 0xFB, 0x80, 0x7C, 0x00, 0x14, 0x01, 0x40,
2370x27, 0x08, 0xDF, 0x00, 0x6C, 0x00, 0xF0, 0x01, 0xC2, 0x3F, 0x05, 0x13, 0x16,
2380x8C, 0x03, 0x70, 0x0E, 0xD0, 0x3C, 0x10, 0x1F, 0x1C, 0x5C, 0x01, 0xF0, 0x21,
2390xC0, 0x04, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0,
2400x3F, 0x00, 0xFF, 0x40, 0xFC, 0x02, 0xF2, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x40,
2410xBC, 0x00, 0xF0, 0x03, 0xC0, 0x36, 0x00, 0x1F, 0x14, 0xFC, 0x03, 0xF0, 0x0F,
2420xC4, 0x3F, 0x00, 0x1F, 0x04, 0xFD, 0x10, 0xF2, 0x43, 0x00, 0x17, 0x60, 0x0E,
2430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7D, 0x02, 0xFA, 0x00,
2440xFC, 0x20, 0xB0, 0x0F, 0xC0, 0x3F, 0x20, 0xF7, 0xA0, 0xEC, 0x03, 0x30, 0x4F,
2450xC4, 0x0D, 0x10, 0x33, 0x01, 0xFC, 0x27, 0xF1, 0x33, 0xC0, 0x3E, 0x00, 0x2F,
2460x01, 0x6C, 0x80, 0xF2, 0x03, 0xC4, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
2470x00, 0x00, 0x00, 0x01, 0x08, 0x37, 0x20, 0xF1, 0x82, 0x34, 0x3A, 0x10, 0x3F,
2480x40, 0xBE, 0x16, 0xF1, 0x89, 0xF4, 0x0F, 0x10, 0x9F, 0xC8, 0x45, 0x32, 0x95,
2490x00, 0x74, 0x11, 0xD1, 0x41, 0x40, 0x3F, 0x20, 0x1D, 0x54, 0x44, 0x04, 0xD0,
2500x01, 0x40, 0x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11,
2510x20, 0x33, 0x11, 0xC1, 0x36, 0x74, 0x03, 0x11, 0x2C, 0x44, 0x33, 0x01, 0xC5,
2520x80, 0x34, 0x23, 0x10, 0x0C, 0x40, 0x03, 0x00, 0x01, 0x00, 0x34, 0x13, 0x90,
2530x00, 0x40, 0x32, 0x00, 0xCD, 0x00, 0x24, 0x80, 0xD8, 0x00, 0x40, 0x47, 0x80,
2540x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x75, 0x20, 0xD1,
2550x00, 0x74, 0x07, 0x10, 0x0D, 0x40, 0x36, 0x20, 0xD1, 0x00, 0x74, 0x83, 0x10,
2560x0D, 0x40, 0x97, 0x00, 0x94, 0x04, 0x74, 0x21, 0xD0, 0x11, 0x43, 0x3F, 0x00,
2570x1D, 0x10, 0xC0, 0x60, 0xC0, 0x3B, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00,
2580x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x37, 0x40, 0xDB, 0x00, 0x3C, 0x06, 0xB4,
2590x0D, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x6E, 0x03, 0x30, 0x0D, 0xC0, 0x83, 0x00,
2600xD3, 0x80, 0x7C, 0x97, 0xF0, 0x11, 0xC8, 0x36, 0x00, 0xDF, 0x00, 0x6C, 0x00,
2610xF1, 0x31, 0xC0, 0x0B, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2620x07, 0x80, 0x3D, 0x00, 0xFF, 0x80, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F, 0x20,
2630xDF, 0x00, 0xFA, 0x43, 0xF0, 0x0D, 0xC2, 0x4D, 0x01, 0xFF, 0x01, 0xFC, 0x01,
2640xF0, 0x03, 0xC0, 0x3F, 0x00, 0x3F, 0x09, 0xFC, 0x00, 0xF0, 0x03, 0x40, 0x1F,
2650x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x01,
2660xDF, 0x08, 0x7C, 0x03, 0x30, 0x0D, 0xC0, 0x33, 0x00, 0xDF, 0x40, 0x3C, 0x03,
2670xF0, 0x0D, 0xC0, 0x27, 0x08, 0xDB, 0x00, 0x7C, 0x03, 0x30, 0x21, 0xC0, 0x37,
2680x04, 0xDF, 0x02, 0x4C, 0x00, 0xF0, 0x09, 0xC0, 0x0B, 0x20, 0x04, 0x00, 0x00,
2690x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0xF4, 0x09, 0xFD, 0xC1, 0x74, 0x83,
2700x50, 0x3F, 0x44, 0x3F, 0x00, 0xFC, 0x0A, 0xC4, 0x8F, 0xD0, 0x0F, 0x41, 0x34,
2710x00, 0xDD, 0x01, 0x74, 0x81, 0x00, 0x01, 0x00, 0xFF, 0x00, 0x1C, 0x00, 0x44,
2720x12, 0xD0, 0x39, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2730x00, 0x07, 0xA0, 0x76, 0x00, 0xC9, 0x47, 0x34, 0x03, 0x18, 0x0C, 0x49, 0x33,
2740x00, 0xCD, 0x03, 0x04, 0x2F, 0xD0, 0x5C, 0x40, 0x31, 0x00, 0x49, 0x00, 0x34,
2750x02, 0x10, 0x00, 0x40, 0xF3, 0x00, 0x1D, 0x00, 0x14, 0x04, 0xD0, 0x00, 0x01,
2760x1F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x78,
2770x00, 0xED, 0x01, 0xB4, 0x27, 0x50, 0x9E, 0x40, 0x7B, 0x00, 0xED, 0x35, 0x85,
2780x07, 0xD0, 0x5E, 0x40, 0x69, 0x80, 0xED, 0x03, 0xF4, 0x06, 0x90, 0x92, 0x02,
2790x7B, 0x00, 0x3D, 0x01, 0x96, 0x24, 0xD0, 0x9A, 0x48, 0x13, 0x00, 0x02, 0x00,
2800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x02, 0xCF, 0x08, 0x3C,
2810x03, 0x3A, 0x0C, 0xC1, 0x33, 0x00, 0xCF, 0x0D, 0x2C, 0x03, 0xF0, 0x5C, 0xC0,
2820x11, 0x00, 0x4B, 0x10, 0x3C, 0x06, 0x30, 0x00, 0xC2, 0x33, 0x06, 0xCF, 0x00,
2830x1C, 0x14, 0xF0, 0x00, 0xC1, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2840x00, 0x00, 0x02, 0xB8, 0x3D, 0x00, 0xFE, 0x00, 0xF8, 0x03, 0xF8, 0x0F, 0xC9,
2850x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC1, 0x1C, 0x00, 0xFF, 0x08,
2860x3C, 0x02, 0x75, 0x07, 0xC6, 0x3F, 0x00, 0xFF, 0x00, 0xED, 0x20, 0xF0, 0x0B,
2870xE8, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0,
2880x37, 0x10, 0xDE, 0x44, 0x7C, 0x03, 0x30, 0x5D, 0xC2, 0x34, 0x11, 0xD3, 0x04,
2890x7C, 0x0B, 0xF3, 0x3D, 0xD1, 0x34, 0x00, 0xD3, 0x01, 0x4C, 0x03, 0xF0, 0x01,
2900xD0, 0xB4, 0x07, 0xCE, 0x00, 0x4C, 0x04, 0x32, 0x19, 0xC0, 0x54, 0x00, 0x0E,
2910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x38, 0x00, 0xED, 0x96,
2920xF4, 0x03, 0xB0, 0x0C, 0x55, 0x38, 0x14, 0xE1, 0x16, 0xB4, 0x5B, 0xD0, 0x4C,
2930x40, 0x20, 0x10, 0xF1, 0x80, 0x84, 0x03, 0xD0, 0x02, 0x40, 0x38, 0x01, 0xED,
2940x00, 0x84, 0x02, 0x11, 0x0B, 0xC0, 0x4A, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
2950x00, 0x00, 0x00, 0x03, 0x00, 0x78, 0x00, 0xED, 0x01, 0xB4, 0x07, 0x10, 0x1E,
2960x4A, 0x70, 0x13, 0xE1, 0x01, 0xA4, 0x07, 0xD0, 0x5E, 0x40, 0x78, 0x40, 0xE1,
2970x01, 0x84, 0x07, 0xD0, 0x16, 0x43, 0x78, 0x81, 0xFD, 0x01, 0x04, 0x84, 0x18,
2980x1A, 0x40, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
2990x28, 0x23, 0x02, 0xDD, 0x00, 0x34, 0x03, 0x92, 0x0C, 0x40, 0x30, 0x40, 0xC1,
3000x20, 0x34, 0x03, 0xD0, 0x0C, 0x48, 0x30, 0x04, 0xC1, 0x08, 0x04, 0x07, 0xD0,
3010x2C, 0x41, 0x30, 0x00, 0xDD, 0x10, 0x04, 0x0F, 0x18, 0x3C, 0x40, 0x4A, 0x20,
3020x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x55, 0x00, 0x5F,
3030x80, 0xFC, 0x29, 0x30, 0x05, 0xC0, 0x14, 0x00, 0x43, 0x00, 0x7C, 0x01, 0xF0,
3040x05, 0x82, 0x1C, 0x00, 0x73, 0x03, 0xCD, 0x15, 0xF0, 0x37, 0xC0, 0x14, 0x00,
3050x7F, 0x12, 0xCC, 0x15, 0x30, 0x17, 0xC0, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00,
3060x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x20, 0x7C, 0x00, 0xF0,
3070x01, 0xC0, 0x07, 0x08, 0x1F, 0x02, 0x7C, 0x00, 0xF0, 0x01, 0xC8, 0x87, 0x00,
3080x1F, 0x10, 0x7C, 0x80, 0xF3, 0x01, 0xC0, 0x07, 0x30, 0x1F, 0x00, 0x7D, 0x10,
3090xF1, 0x81, 0xC1, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3100x10, 0x08, 0x67, 0x00, 0x93, 0x00, 0x4C, 0x02, 0x70, 0x19, 0xC0, 0x27, 0x00,
3110x97, 0x01, 0x5C, 0x26, 0xF0, 0x19, 0xC0, 0x23, 0x00, 0x90, 0x80, 0x7C, 0x02,
3120x30, 0x09, 0xC0, 0xA4, 0x00, 0x9F, 0x05, 0x4C, 0x12, 0xF0, 0x29, 0xC0, 0x43,
3130x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xE2, 0x22,
3140x91, 0x00, 0x14, 0x02, 0x10, 0x09, 0x40, 0x27, 0x00, 0x91, 0x03, 0x44, 0x8A,
3150xD0, 0x99, 0x44, 0x27, 0x02, 0x91, 0x02, 0x74, 0x82, 0x12, 0x08, 0x42, 0x24,
3160x00, 0x9D, 0x01, 0x44, 0x02, 0xD0, 0x09, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00,
3170x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x44, 0x91, 0x21, 0x54, 0x03,
3180x50, 0x49, 0x41, 0x23, 0x00, 0x95, 0x86, 0x54, 0x0A, 0xD1, 0x09, 0x40, 0x27,
3190x00, 0x95, 0x01, 0x34, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x44,
3200x02, 0xD0, 0x09, 0x41, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3210x00, 0x10, 0x20, 0x24, 0x00, 0xC1, 0x00, 0x54, 0x52, 0x54, 0x08, 0x40, 0x23,
3220x02, 0x81, 0x80, 0x00, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x40, 0x85, 0x01, 0x34,
3230x22, 0x10, 0x89, 0x42, 0x60, 0x01, 0x8D, 0x08, 0x04, 0x12, 0xD0, 0x48, 0x48,
3240x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06,
3250x00, 0x13, 0x94, 0x5C, 0x10, 0x74, 0x41, 0xC1, 0x87, 0x05, 0x16, 0x94, 0x5C,
3260x50, 0xF1, 0x45, 0xC1, 0x17, 0x05, 0x17, 0x0A, 0x7C, 0x08, 0x34, 0x20, 0xC0,
3270xC4, 0x02, 0x1F, 0x02, 0x4D, 0x04, 0xF0, 0xB1, 0xC0, 0x77, 0xC0, 0x0A, 0x00,
3280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x2F, 0x05, 0x9F, 0x34, 0xFC,
3290x52, 0xB0, 0x09, 0xC2, 0x27, 0x01, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0,
3300x2F, 0x00, 0xBB, 0x01, 0xFC, 0x12, 0xF0, 0x4B, 0xD0, 0x67, 0x02, 0xBF, 0x04,
3310xFC, 0x22, 0xF0, 0x9B, 0xC2, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
3320x00, 0x00, 0x18, 0xA0, 0x2F, 0x02, 0xBF, 0x86, 0x0C, 0x16, 0xB0, 0x4B, 0xC0,
3330x27, 0x05, 0xBB, 0x00, 0xDC, 0x82, 0x30, 0x0B, 0xC0, 0x2D, 0x00, 0xBF, 0xC0,
3340x7C, 0x22, 0x30, 0x29, 0xC0, 0x2F, 0x00, 0xB1, 0x02, 0xCC, 0x02, 0xE0, 0x0B,
3350xC0, 0x60, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08,
3360x47, 0x01, 0x1D, 0x01, 0x44, 0x5C, 0x10, 0x01, 0x40, 0x87, 0x01, 0x1D, 0x00,
3370x44, 0x00, 0x14, 0xA1, 0x40, 0x04, 0x00, 0x0D, 0x00, 0x74, 0x00, 0x10, 0x01,
3380x40, 0x07, 0x00, 0x15, 0x04, 0x45, 0x00, 0xD2, 0x01, 0x48, 0x70, 0x20, 0x0C,
3390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D, 0x06,
3400x04, 0x22, 0x92, 0x28, 0x40, 0x23, 0x04, 0x8D, 0x22, 0x04, 0x8A, 0x10, 0x08,
3410x50, 0xA0, 0x00, 0x8D, 0x00, 0x34, 0x12, 0x10, 0x08, 0x60, 0x23, 0x10, 0x81,
3420x20, 0x05, 0x83, 0xD0, 0x09, 0x60, 0x42, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
3430x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x80, 0x9D, 0x00, 0x45, 0x02, 0x10, 0x09,
3440x60, 0x27, 0x00, 0x9D, 0x00, 0x47, 0x02, 0x10, 0x09, 0x00, 0x24, 0x01, 0x9D,
3450x00, 0x74, 0x02, 0x10, 0xA9, 0x40, 0x27, 0x00, 0x95, 0x14, 0x45, 0x0E, 0xD1,
3460x69, 0x40, 0x62, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3470x88, 0x67, 0x02, 0x9F, 0x00, 0x4C, 0x36, 0xB0, 0x09, 0xC8, 0x27, 0x00, 0x9B,
3480x40, 0x5C, 0x02, 0x12, 0x09, 0xC0, 0x24, 0x01, 0x9E, 0x00, 0x7C, 0x02, 0x34,
3490x29, 0xC0, 0x27, 0x00, 0x83, 0x01, 0x4C, 0x0E, 0xF2, 0x29, 0xD0, 0x16, 0x20,
3500x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x65, 0x10, 0x9F,
3510x00, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x50, 0x3C, 0x02, 0xF0,
3520x09, 0xC0, 0x26, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00,
3530x9F, 0x01, 0x7D, 0x02, 0xF0, 0x09, 0xC0, 0x51, 0x00, 0x06, 0x00, 0x00, 0x00,
3540x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x04, 0x00, 0x03, 0x00, 0x4D, 0x00, 0x50,
3550x01, 0xC0, 0x05, 0x00, 0x03, 0x08, 0x7C, 0x00, 0xF0, 0x01, 0xC1, 0x87, 0x01,
3560x13, 0x00, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x01, 0x01, 0x13, 0x02, 0x4C, 0x00,
3570x30, 0x21, 0xC1, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3580x14, 0xA0, 0xDC, 0x00, 0x75, 0x19, 0x44, 0x01, 0x50, 0x27, 0xC0, 0x16, 0x50,
3590x71, 0x23, 0xF4, 0x21, 0xD0, 0x06, 0x41, 0x1F, 0x20, 0x75, 0x01, 0x44, 0x01,
3600xD0, 0x05, 0x48, 0x1F, 0x18, 0x75, 0x0A, 0x44, 0x01, 0x11, 0x27, 0xC0, 0x52,
3610x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x72, 0x81,
3620xC9, 0x03, 0x04, 0x03, 0x10, 0x9C, 0x41, 0x33, 0x00, 0x81, 0x03, 0x34, 0x2B,
3630xD0, 0x2C, 0x40, 0x33, 0x00, 0xC5, 0x11, 0x44, 0x03, 0xD0, 0x0C, 0x40, 0xF1,
3640x80, 0xC9, 0x01, 0x04, 0x03, 0x12, 0x8D, 0x40, 0x52, 0x00, 0x0A, 0x00, 0x00,
3650x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x78, 0x04, 0xED, 0x20, 0xC4, 0x03,
3660x50, 0x1A, 0x40, 0x7A, 0x00, 0xE1, 0x00, 0xB0, 0x01, 0xD0, 0x0E, 0x40, 0x7B,
3670x48, 0xE5, 0x11, 0x84, 0x23, 0xC0, 0x8E, 0x40, 0x13, 0x04, 0xED, 0x10, 0xC4,
3680x07, 0x1C, 0x0B, 0x40, 0x16, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3690x00, 0x15, 0x10, 0x7C, 0x00, 0xFB, 0x81, 0x8C, 0x47, 0x74, 0x1E, 0xC0, 0x73,
3700x01, 0xA3, 0x01, 0xBC, 0x06, 0xF0, 0x1E, 0xC0, 0x7B, 0x00, 0x67, 0x81, 0x84,
3710xD7, 0xF0, 0x1E, 0xC1, 0x69, 0x20, 0xBB, 0x01, 0x8D, 0x07, 0x30, 0x1B, 0xC0,
3720x56, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x15,
3730x00, 0xD7, 0x00, 0x7C, 0x33, 0xF0, 0x00, 0xC0, 0xB5, 0x20, 0x9F, 0x00, 0x7C,
3740x00, 0xF1, 0x09, 0xC0, 0x33, 0x00, 0x1B, 0x00, 0x75, 0x03, 0xF2, 0x6D, 0xC0,
3750x07, 0x00, 0x97, 0x00, 0x3C, 0x02, 0xF1, 0x01, 0xC0, 0x43, 0x60, 0x06, 0x00,
3760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x5F, 0x00, 0x7F, 0x01, 0xFC,
3770x07, 0x70, 0x1F, 0xC0, 0xFF, 0x44, 0xB3, 0x09, 0x9C, 0x27, 0x70, 0x9F, 0xC0,
3780x7F, 0x00, 0xA3, 0x41, 0xEC, 0x07, 0x31, 0x1D, 0xC0, 0x4F, 0x00, 0xF3, 0x01,
3790xCC, 0x07, 0x30, 0x9B, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
3800x00, 0x00, 0x15, 0x88, 0xB9, 0x00, 0x6D, 0x02, 0xB4, 0x03, 0xB0, 0x0A, 0x60,
3810x3B, 0x00, 0xC1, 0x08, 0xB4, 0x82, 0x10, 0x04, 0x48, 0x3B, 0x00, 0x21, 0x00,
3820x04, 0x37, 0x10, 0x1E, 0xC0, 0x0F, 0x00, 0xFB, 0x18, 0xC4, 0x23, 0xB2, 0xCA,
3830x50, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3840x19, 0x00, 0x6D, 0x08, 0xF4, 0x03, 0x50, 0x0A, 0x40, 0x39, 0x00, 0xA9, 0x80,
3850x94, 0x02, 0x50, 0x0E, 0x60, 0x1B, 0x02, 0x39, 0x00, 0xC4, 0x13, 0x10, 0x0E,
3860x41, 0x0B, 0x00, 0xB1, 0x00, 0xC4, 0x43, 0x50, 0x0A, 0x40, 0x01, 0x00, 0x04,
3870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x43, 0x20, 0x0D, 0x80,
3880x34, 0x03, 0x90, 0x00, 0x40, 0x37, 0x08, 0x49, 0x40, 0x34, 0x02, 0x10, 0x00,
3890x44, 0x53, 0x42, 0x09, 0x02, 0x04, 0x03, 0x94, 0x1D, 0x40, 0x01, 0x00, 0x89,
3900x10, 0x04, 0x06, 0xD8, 0x60, 0x40, 0x11, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
3910x00, 0x00, 0x00, 0x15, 0xA8, 0x64, 0x01, 0x9F, 0x00, 0xFC, 0x03, 0x74, 0x01,
3920xC0, 0x3F, 0x00, 0x9B, 0x00, 0x5C, 0x02, 0x50, 0x01, 0xC0, 0x37, 0x08, 0x13,
3930x02, 0xCC, 0x03, 0x30, 0xBF, 0x40, 0x37, 0x00, 0x53, 0x00, 0x4D, 0xAB, 0x50,
3940x09, 0xC1, 0x55, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
3950x00, 0xA7, 0x00, 0x9F, 0x00, 0x7C, 0x43, 0xF0, 0x21, 0xC0, 0x37, 0x00, 0xD7,
3960x20, 0x7C, 0x08, 0xF0, 0x01, 0xC0, 0x33, 0x00, 0x17, 0x82, 0x5C, 0x43, 0x70,
3970x0D, 0xC0, 0x87, 0x00, 0x5F, 0xC2, 0x7C, 0x03, 0xB0, 0x29, 0x88, 0x06, 0x00,
3980x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x2F, 0x20, 0x2F,
3990x80, 0xD4, 0x03, 0x3C, 0x02, 0xC8, 0x34, 0x00, 0xB3, 0x00, 0xDC, 0x00, 0xF0,
4000x2B, 0xE0, 0x24, 0x20, 0x33, 0x10, 0xF4, 0x03, 0xB0, 0x0F, 0xC0, 0x0C, 0x00,
4010x7F, 0x00, 0xCC, 0x27, 0xF0, 0x09, 0xC0, 0x03, 0x22, 0x0C, 0x00, 0x00, 0x00,
4020x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xE6, 0x00, 0x9D, 0x43, 0x06, 0x03, 0x10,
4030x11, 0x40, 0x34, 0x00, 0x81, 0x00, 0x44, 0x14, 0xD0, 0x18, 0xE0, 0x26, 0x00,
4040x11, 0x04, 0x74, 0x03, 0xD0, 0x0D, 0xC0, 0x44, 0x01, 0x47, 0x85, 0x7C, 0x02,
4050xD0, 0x51, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4060x01, 0xA0, 0x44, 0x00, 0x9D, 0x21, 0x40, 0x03, 0x92, 0x39, 0x44, 0x34, 0x00,
4070x91, 0x00, 0x56, 0x06, 0xD2, 0x25, 0x48, 0x74, 0x00, 0x31, 0x84, 0x74, 0x83,
4080xD8, 0x0D, 0x40, 0x4C, 0x00, 0x9D, 0x01, 0x45, 0x02, 0xD0, 0x13, 0x40, 0x07,
4090x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00,
4100x8D, 0x20, 0x54, 0x03, 0x12, 0x08, 0x40, 0x30, 0x20, 0xC1, 0x40, 0x16, 0x02,
4110xD0, 0x24, 0x44, 0x32, 0x10, 0x01, 0x00, 0x34, 0x33, 0xD8, 0x0C, 0x45, 0x00,
4120x10, 0x85, 0x00, 0x34, 0x22, 0xD0, 0x00, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00,
4130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x06, 0x08, 0x1F, 0x00, 0xD4, 0x03,
4140x32, 0x09, 0xC2, 0x3C, 0x00, 0x93, 0x2A, 0x54, 0x00, 0xD9, 0x0D, 0x40, 0x04,
4150x00, 0x13, 0x00, 0xFC, 0x9B, 0xB1, 0x0F, 0xC0, 0x04, 0x00, 0x9F, 0x00, 0x4C,
4160x02, 0xF1, 0x01, 0xC0, 0x03, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4170x00, 0x05, 0xB2, 0x2F, 0x00, 0xBF, 0x00, 0xAD, 0x03, 0xF1, 0x03, 0xC0, 0x3F,
4180x10, 0x7F, 0x04, 0xEC, 0x00, 0xF0, 0x03, 0xC6, 0x0F, 0x40, 0x3F, 0x00, 0x3C,
4190x0B, 0xF0, 0x0F, 0xC0, 0x0D, 0x10, 0xB7, 0x00, 0xFC, 0x12, 0xF8, 0x03, 0xC0,
4200x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x2F,
4210x01, 0xBF, 0x08, 0xFC, 0x43, 0x30, 0x8F, 0xC0, 0x3F, 0x05, 0x3F, 0x03, 0xDC,
4220x23, 0xF0, 0x3B, 0xD0, 0x3C, 0x00, 0xFB, 0x00, 0xFC, 0x13, 0x30, 0x13, 0xC0,
4230x7C, 0x10, 0x3D, 0x61, 0xCC, 0x18, 0x30, 0x43, 0xC1, 0x0C, 0x00, 0x0E, 0x00,
4240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x10, 0x87, 0x1D, 0x9D, 0x02, 0xDC,
4250x0F, 0x00, 0x6F, 0x40, 0xBF, 0x01, 0x1D, 0x04, 0xC4, 0x0B, 0x70, 0x0D, 0x40,
4260xFC, 0x00, 0xF1, 0x03, 0xF4, 0xA7, 0x10, 0x11, 0x40, 0x04, 0x08, 0x1D, 0x00,
4270x04, 0xAB, 0x10, 0x29, 0x51, 0x0C, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
4280x00, 0x00, 0x13, 0xA0, 0x21, 0x82, 0x0D, 0x08, 0x14, 0x03, 0x10, 0x6C, 0x48,
4290x33, 0x14, 0x9D, 0x00, 0x14, 0x33, 0xD2, 0x48, 0x60, 0x30, 0x0A, 0xC9, 0x08,
4300x34, 0x03, 0x10, 0x01, 0x40, 0x30, 0x20, 0x1D, 0x00, 0x04, 0x10, 0x10, 0x40,
4310x42, 0x4D, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0,
4320x47, 0x00, 0x9D, 0x03, 0x54, 0x83, 0x14, 0x0D, 0x40, 0x37, 0x00, 0x9D, 0x01,
4330x44, 0x03, 0x50, 0x0C, 0x60, 0x34, 0x10, 0xD0, 0x00, 0x74, 0x03, 0x14, 0x15,
4340x18, 0x24, 0x00, 0x1D, 0x01, 0x44, 0x81, 0x16, 0x01, 0x41, 0x0D, 0x00, 0x06,
4350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xA8, 0xC7, 0x00, 0x9F, 0x01,
4360x5C, 0x03, 0x30, 0x0D, 0xC0, 0x37, 0x00, 0x0F, 0x03, 0x5C, 0x83, 0xF0, 0x8D,
4370xC0, 0x30, 0x08, 0xDB, 0x60, 0x3C, 0x03, 0x30, 0x20, 0xC4, 0x34, 0x00, 0x0F,
4380x53, 0x4C, 0x24, 0x30, 0x11, 0xC4, 0x29, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
4390x00, 0x00, 0x00, 0x07, 0x80, 0x0D, 0x00, 0xBF, 0x00, 0xDC, 0x03, 0xF1, 0x0D,
4400xC0, 0x3F, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0xD0, 0x1F, 0xC0, 0x3F, 0x00, 0xFF,
4410x50, 0xF0, 0x83, 0xF0, 0x03, 0xC8, 0x8F, 0x00, 0x3F, 0x00, 0xBC, 0xC7, 0xF0,
4420x3D, 0xC0, 0x1E, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A,
4430x08, 0xA5, 0x00, 0x1F, 0x00, 0x0C, 0x03, 0xF0, 0x0D, 0xC4, 0x35, 0x00, 0x1F,
4440x02, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x7C, 0x03, 0xF0,
4450x05, 0xC0, 0x34, 0x10, 0x1F, 0x00, 0x4C, 0x22, 0x34, 0x2C, 0xC0, 0x28, 0x20,
4460x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x64, 0x04, 0x9D,
4470x00, 0xC4, 0x3B, 0xD0, 0x0F, 0x40, 0x3C, 0x00, 0x9D, 0x00, 0xFC, 0x03, 0xD0,
4480x0D, 0x48, 0x3F, 0x00, 0xF1, 0x03, 0xF4, 0x2B, 0xD0, 0xA5, 0xC0, 0x26, 0x08,
4490x1D, 0x00, 0x44, 0x0F, 0x10, 0x3D, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00,
4500x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xE2, 0x34, 0x0D, 0x40, 0x04, 0x07, 0x90,
4510x0C, 0x44, 0x30, 0x08, 0x8C, 0x00, 0x34, 0x03, 0x90, 0x0C, 0x48, 0x32, 0x00,
4520xC0, 0x01, 0x34, 0x27, 0xD0, 0x20, 0x40, 0x30, 0x04, 0x0D, 0x00, 0x04, 0x00,
4530x10, 0x04, 0x41, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4540x0D, 0x02, 0x7A, 0x02, 0x6D, 0x01, 0x84, 0x07, 0xD0, 0x9E, 0x42, 0x78, 0x00,
4550xAD, 0x01, 0x94, 0x07, 0xD0, 0x1E, 0x40, 0x73, 0x02, 0xE5, 0x01, 0xB4, 0x07,
4560xD0, 0x17, 0x40, 0x5B, 0x04, 0x3D, 0x01, 0x84, 0x06, 0x12, 0x92, 0x41, 0x34,
4570x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x32, 0x00,
4580x5F, 0x08, 0x0D, 0x03, 0xF0, 0x0C, 0xC0, 0x31, 0x02, 0x8F, 0x08, 0x34, 0x03,
4590xF0, 0x4C, 0xC0, 0x33, 0x0A, 0xC7, 0x10, 0x3C, 0x03, 0xF0, 0xA1, 0xE0, 0x30,
4600x00, 0x5F, 0x00, 0x0C, 0x80, 0x30, 0x50, 0xD0, 0x48, 0x40, 0x08, 0x00, 0x00,
4610x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xBA, 0x3D, 0x20, 0xFF, 0x00, 0xFC, 0x03,
4620xF0, 0x0F, 0xC3, 0x3F, 0x00, 0xBF, 0x28, 0xFC, 0x23, 0xF0, 0x0F, 0xC4, 0x3F,
4630x02, 0xDB, 0x10, 0xFC, 0x23, 0xF0, 0x07, 0xE0, 0x3E, 0x80, 0x7F, 0x00, 0xFC,
4640x00, 0xF8, 0x81, 0xC2, 0x0B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4650x00, 0x10, 0xA0, 0x57, 0x00, 0xD3, 0x00, 0x7C, 0x6F, 0xB0, 0x5D, 0xE0, 0xB7,
4660x14, 0x1F, 0x00, 0x7C, 0x13, 0xF0, 0x0D, 0xC0, 0xB7, 0x03, 0xD3, 0x15, 0x4C,
4670x53, 0xF0, 0x05, 0xE0, 0x77, 0x00, 0x53, 0x00, 0x7C, 0x01, 0x30, 0x0D, 0xC0,
4680x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x98, 0x1D,
4690x00, 0xEB, 0x00, 0xB4, 0x03, 0x18, 0xCF, 0x60, 0xB8, 0x01, 0xED, 0x00, 0xB4,
4700x4B, 0xD0, 0x0E, 0x40, 0x3B, 0x03, 0xC1, 0x04, 0x84, 0x1B, 0xD0, 0x06, 0x40,
4710x1B, 0x20, 0x61, 0x20, 0xF4, 0x03, 0x14, 0x0F, 0x40, 0x4C, 0x60, 0x06, 0x00,
4720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x79, 0x14, 0x61, 0x21, 0x36,
4730x07, 0x18, 0x5E, 0x4C, 0x79, 0x00, 0x6D, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x64,
4740x71, 0x01, 0xE1, 0x41, 0x96, 0x17, 0xD0, 0x16, 0x40, 0x7F, 0x00, 0x65, 0x01,
4750xB6, 0x07, 0x94, 0x1E, 0x42, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
4760x00, 0x00, 0x16, 0x20, 0x33, 0x00, 0xC9, 0x0B, 0x34, 0x83, 0x10, 0x0C, 0x40,
4770x30, 0x00, 0xCD, 0x07, 0x74, 0x03, 0xD0, 0x9C, 0x60, 0x33, 0x40, 0xC1, 0x00,
4780x15, 0x03, 0xD1, 0x1C, 0x42, 0x33, 0x00, 0xC4, 0x06, 0x34, 0x17, 0x90, 0x9C,
4790x40, 0x58, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8,
4800x1F, 0x00, 0x73, 0x02, 0x7C, 0x01, 0xB0, 0x05, 0xC2, 0x17, 0x00, 0x7F, 0x10,
4810x7C, 0x01, 0xF0, 0x15, 0xC0, 0x13, 0x00, 0x51, 0x00, 0x5C, 0x01, 0xF0, 0x46,
4820xC0, 0x1F, 0x00, 0x77, 0x12, 0xFA, 0x1D, 0xB0, 0xB7, 0xC4, 0x5C, 0x20, 0x0E,
4830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x00, 0x1F, 0x04,
4840x7C, 0x00, 0xF4, 0x01, 0xC8, 0x07, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0xF0, 0x01,
4850xC0, 0x07, 0x00, 0x1F, 0x00, 0x64, 0x00, 0xF0, 0x01, 0xC4, 0x07, 0x40, 0x1B,
4860x00, 0x7C, 0x08, 0x70, 0x01, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
4870x00, 0x00, 0x00, 0x10, 0x08, 0xE5, 0x04, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x09,
4880xC0, 0x27, 0x00, 0x9F, 0xA0, 0x4C, 0x02, 0x32, 0x09, 0xC8, 0x27, 0x09, 0x93,
4890x00, 0x3C, 0x92, 0x30, 0x19, 0xC1, 0x26, 0x01, 0x9F, 0x00, 0x3C, 0x06, 0x30,
4900x89, 0xC0, 0x41, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
4910x20, 0x26, 0x10, 0x9D, 0x80, 0x74, 0x32, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D,
4920x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x27, 0x09, 0x91, 0x23, 0x74, 0x4E, 0x14,
4930x99, 0x42, 0xA4, 0x04, 0x9D, 0x00, 0x74, 0x0A, 0x10, 0x29, 0x44, 0x04, 0x00,
4940x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x34, 0x00, 0x9D,
4950x00, 0x54, 0x02, 0xC0, 0x09, 0x40, 0x27, 0x00, 0xCD, 0x00, 0x44, 0x02, 0x50,
4960x09, 0x42, 0x25, 0x40, 0x91, 0x18, 0x74, 0x02, 0x90, 0x29, 0x40, 0x26, 0x00,
4970x9D, 0x00, 0x74, 0x22, 0x08, 0x08, 0x40, 0x71, 0x00, 0x02, 0x00, 0x00, 0x00,
4980x00, 0x00, 0x00, 0x00, 0x14, 0x28, 0x30, 0x05, 0x8D, 0x54, 0x34, 0x02, 0xD0,
4990x88, 0x40, 0x23, 0x02, 0x8D, 0x88, 0x05, 0x22, 0x10, 0x88, 0x40, 0x23, 0x00,
5000x81, 0x00, 0x30, 0x02, 0x10, 0x08, 0x42, 0x20, 0x00, 0x8D, 0x00, 0x36, 0x23,
5010x10, 0x08, 0x40, 0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5020x1D, 0xB0, 0x06, 0x21, 0x1F, 0x24, 0x5C, 0xD0, 0xF0, 0x61, 0xC5, 0x87, 0x05,
5030x1F, 0x02, 0x4C, 0x58, 0x70, 0x21, 0xC0, 0x05, 0x05, 0x13, 0x34, 0x7C, 0x50,
5040x30, 0x01, 0xC0, 0x86, 0x02, 0x1F, 0x0A, 0x7C, 0x58, 0x34, 0x45, 0xC1, 0x75,
5050xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0, 0x2F, 0x05,
5060xBF, 0x34, 0x7C, 0x02, 0xF0, 0x49, 0xC0, 0x27, 0x01, 0xBF, 0x04, 0x7C, 0x12,
5070xF4, 0x4B, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x0B, 0xC0, 0x6B,
5080x00, 0xBF, 0x21, 0xFC, 0x12, 0xF0, 0x4B, 0xC1, 0x67, 0x20, 0x0E, 0x00, 0x00,
5090x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F, 0x00, 0x93, 0x02, 0xDC, 0x02,
5100xF0, 0x89, 0xC0, 0xA6, 0x15, 0x9B, 0x00, 0x5C, 0x42, 0x30, 0x09, 0xC0, 0x2E,
5110x04, 0xBF, 0x00, 0xDC, 0x02, 0xB2, 0x0B, 0xC0, 0x2F, 0x08, 0x9F, 0x00, 0xCC,
5120xC2, 0x32, 0x0B, 0xD0, 0x60, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5130x00, 0x1C, 0x18, 0x07, 0x01, 0x1B, 0x60, 0x74, 0xA8, 0xD0, 0xA0, 0x42, 0x84,
5140x00, 0x11, 0x20, 0x74, 0x08, 0x10, 0x41, 0x40, 0x84, 0x00, 0x17, 0x4A, 0x44,
5150x28, 0x10, 0x01, 0x44, 0x07, 0x20, 0x1D, 0x00, 0x44, 0x08, 0x14, 0x01, 0x40,
5160x70, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0, 0xA1,
5170x84, 0x81, 0x02, 0x34, 0x02, 0xD0, 0x48, 0x40, 0x22, 0x01, 0x85, 0x14, 0x34,
5180x52, 0x12, 0x09, 0x61, 0x22, 0x00, 0x8D, 0x00, 0x14, 0x02, 0x10, 0x08, 0x40,
5190x33, 0x80, 0x8D, 0x00, 0x04, 0x02, 0x10, 0x08, 0x62, 0x4A, 0x00, 0x04, 0x00,
5200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x25, 0x00, 0x99, 0x80, 0x74,
5210x02, 0xC0, 0x08, 0x40, 0x26, 0x20, 0x95, 0x02, 0x34, 0x02, 0x10, 0x09, 0x4A,
5220x24, 0x00, 0x95, 0x00, 0x54, 0x02, 0x10, 0x0D, 0x40, 0xA7, 0x00, 0x8D, 0x14,
5230x45, 0x02, 0x10, 0x0D, 0x40, 0x62, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
5240x00, 0x00, 0x05, 0xA8, 0x27, 0x01, 0x93, 0x87, 0x7C, 0x02, 0xF0, 0x09, 0xC8,
5250x26, 0x08, 0x97, 0x00, 0x5E, 0x02, 0x10, 0x08, 0xC0, 0x26, 0x20, 0x9F, 0x20,
5260x5C, 0x02, 0xB0, 0x59, 0xC0, 0x27, 0x20, 0x9E, 0x23, 0x4C, 0x42, 0x30, 0x49,
5270xC0, 0x16, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80,
5280x61, 0x02, 0x9F, 0x05, 0x7C, 0x02, 0xD0, 0x09, 0xC0, 0x21, 0x40, 0x9B, 0x84,
5290x7C, 0x02, 0xF4, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x6C, 0x42, 0xD4, 0x39,
5300xC0, 0x27, 0x00, 0x9F, 0x21, 0x7C, 0x02, 0xF0, 0x48, 0xC0, 0x49, 0x00, 0x06,
5310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x84, 0x04, 0x1F, 0x02,
5320x6C, 0x00, 0xE0, 0x01, 0xC0, 0x04, 0x00, 0x13, 0x80, 0x7C, 0x00, 0x30, 0x01,
5330xC0, 0x05, 0x04, 0x1F, 0x10, 0x4C, 0x00, 0x70, 0x11, 0xC2, 0x07, 0x01, 0x1F,
5340xA2, 0x3C, 0x20, 0x10, 0x41, 0xC2, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
5350x00, 0x00, 0x00, 0x14, 0xA0, 0xDC, 0x00, 0x5D, 0x20, 0xD4, 0x65, 0xC0, 0x05,
5360x40, 0x14, 0x00, 0x50, 0x00, 0x74, 0x81, 0x10, 0x05, 0xC0, 0x1C, 0x00, 0x6D,
5370x20, 0x80, 0x0D, 0x70, 0x07, 0x80, 0x1D, 0x10, 0x5D, 0x80, 0xF4, 0x01, 0x10,
5380x37, 0x42, 0x53, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
5390xA0, 0xF2, 0x02, 0xCD, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x50, 0x30, 0x80, 0xC1,
5400x00, 0x34, 0x03, 0x10, 0x0C, 0x40, 0x31, 0x00, 0xCD, 0x0A, 0x00, 0x0B, 0xD8,
5410x8C, 0x48, 0xB2, 0x00, 0xCC, 0x00, 0x36, 0x93, 0x90, 0x00, 0x44, 0x53, 0x00,
5420x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x38, 0x00, 0xCD,
5430x01, 0x94, 0x00, 0xD0, 0x0E, 0x40, 0x38, 0xC2, 0xE1, 0x04, 0xB4, 0x23, 0x11,
5440x0E, 0x40, 0x38, 0x80, 0x8D, 0x00, 0x85, 0x0B, 0xD8, 0x06, 0x40, 0x09, 0x20,
5450xED, 0x04, 0x34, 0x00, 0x94, 0x0A, 0x41, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00,
5460x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x78, 0x00, 0xEF, 0x0D, 0x84, 0x04, 0xF0,
5470x1E, 0xC1, 0x70, 0x05, 0xE1, 0x0D, 0x34, 0x57, 0x34, 0x3F, 0xC0, 0x79, 0x00,
5480xAF, 0x01, 0x8C, 0x07, 0x70, 0x16, 0xC0, 0x6B, 0x00, 0xEF, 0x0B, 0xBC, 0x07,
5490xB0, 0x16, 0xC0, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5500x10, 0xA2, 0x15, 0x10, 0xDF, 0x84, 0x5C, 0x00, 0xF0, 0x4D, 0xC0, 0x37, 0x00,
5510xDF, 0x04, 0x7C, 0x1B, 0xF0, 0x6D, 0xC9, 0x37, 0x20, 0x1B, 0x00, 0x7C, 0x00,
5520x78, 0x05, 0xC0, 0x07, 0x10, 0xDF, 0x00, 0x7C, 0x00, 0x74, 0x0D, 0xC0, 0x43,
5530x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x7D, 0x00,
5540xFF, 0x11, 0x8C, 0x24, 0x70, 0x1F, 0xC5, 0x7C, 0x00, 0xF3, 0x11, 0xFC, 0x07,
5550x30, 0x1F, 0xC0, 0x7F, 0x02, 0xB7, 0x05, 0xFC, 0x07, 0xF8, 0x96, 0xC0, 0x6C,
5560x02, 0xF3, 0x89, 0xCC, 0x07, 0x24, 0x1B, 0xC4, 0x00, 0x00, 0x04, 0x00, 0x00,
5570x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x08, 0x39, 0x20, 0xED, 0x04, 0x84, 0x00,
5580x18, 0x0E, 0x50, 0x38, 0x22, 0xE1, 0x00, 0xB4, 0x23, 0x10, 0x0E, 0x40, 0x3B,
5590x00, 0xA7, 0x00, 0xB4, 0x23, 0xD0, 0x06, 0x48, 0x0D, 0x02, 0xFB, 0x40, 0x85,
5600x00, 0xF0, 0x88, 0xE1, 0x54, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5610x00, 0x00, 0x00, 0x39, 0x04, 0xED, 0x80, 0xA4, 0x00, 0x58, 0x0C, 0x40, 0x39,
5620x00, 0xE9, 0x00, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x1B, 0x00, 0xA5, 0x04, 0xB4,
5630x03, 0xD0, 0x03, 0x46, 0x08, 0x82, 0xE1, 0x00, 0x84, 0x03, 0x50, 0x0C, 0x40,
5640x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x61,
5650x00, 0xCD, 0x41, 0x04, 0x00, 0x10, 0x0C, 0x40, 0x34, 0x00, 0xD1, 0x42, 0x34,
5660x03, 0x12, 0x8C, 0x40, 0x13, 0x00, 0x05, 0x00, 0x34, 0x00, 0xD0, 0xB0, 0x44,
5670x01, 0x00, 0xC9, 0x02, 0x04, 0x41, 0xD0, 0x34, 0x50, 0x10, 0x00, 0x04, 0x00,
5680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x45, 0x20, 0xFF, 0x9A, 0x6C,
5690x00, 0x41, 0x0F, 0xC0, 0x3D, 0x00, 0xFB, 0x00, 0xFC, 0x03, 0x30, 0x1F, 0xC0,
5700x37, 0x00, 0x97, 0x00, 0x7C, 0x03, 0xF0, 0x01, 0x44, 0x00, 0x06, 0xF3, 0x42,
5710x4C, 0x4B, 0x30, 0x25, 0xC0, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
5720x00, 0x00, 0x01, 0x00, 0xA7, 0x01, 0xDF, 0x00, 0x7C, 0x08, 0xF0, 0x0D, 0xC0,
5730x37, 0x20, 0xDF, 0x08, 0x7C, 0x03, 0xF0, 0x0D, 0xC4, 0x37, 0x00, 0x9F, 0x80,
5740x3C, 0x8B, 0xF0, 0x01, 0xC8, 0x87, 0x00, 0xDF, 0x00, 0x3C, 0x00, 0x96, 0x65,
5750xC0, 0x05, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08,
5760x0F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x3C, 0x00, 0xF3, 0x10,
5770x5C, 0x03, 0xE0, 0x0F, 0xC0, 0x2F, 0x02, 0xBF, 0x00, 0xFC, 0x83, 0x30, 0x03,
5780xC1, 0x0D, 0x20, 0xF3, 0x10, 0x7C, 0x07, 0x30, 0x97, 0xC2, 0x13, 0x22, 0x0C,
5790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x20, 0xC6, 0x04, 0xDD, 0x00,
5800x74, 0x0C, 0xD0, 0x0D, 0x50, 0x34, 0x20, 0xD1, 0x00, 0x44, 0x03, 0xD0, 0x0D,
5810x40, 0x27, 0x00, 0x19, 0x01, 0x74, 0x18, 0x00, 0x31, 0xC0, 0x47, 0x01, 0xD1,
5820x00, 0x74, 0x20, 0x10, 0x29, 0x40, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
5830x00, 0x00, 0x00, 0x01, 0xA0, 0x44, 0x00, 0xDD, 0x00, 0x74, 0x44, 0xD0, 0x0C,
5840x40, 0x34, 0x00, 0xD1, 0x00, 0x44, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0x80, 0x1D,
5850x03, 0x74, 0x10, 0x10, 0x11, 0x40, 0x4F, 0x00, 0xF1, 0x00, 0x74, 0x43, 0x19,
5860x09, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
5870x28, 0x20, 0x20, 0xCD, 0x80, 0x24, 0x00, 0xD2, 0x0C, 0x40, 0x30, 0x20, 0xC1,
5880x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x33, 0x80, 0x09, 0x00, 0x34, 0x00, 0x10,
5890x00, 0x44, 0x07, 0x40, 0xC1, 0x00, 0x34, 0x02, 0x13, 0x84, 0x40, 0x43, 0xA0,
5900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x06, 0x00, 0xEF,
5910x80, 0x7C, 0x80, 0xF0, 0x0F, 0xC0, 0x38, 0x00, 0xF3, 0x00, 0xC5, 0x03, 0xF0,
5920x0F, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x05, 0x00,
5930xF3, 0x00, 0x7C, 0x00, 0x30, 0x09, 0xC8, 0x03, 0xC0, 0x0A, 0x00, 0x00, 0x00,
5940x00, 0x00, 0x00, 0x00, 0x85, 0xA8, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0,
5950x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xEC, 0x83, 0xF0, 0x0F, 0xC0, 0x0F, 0x00,
5960x3B, 0x40, 0xFC, 0x00, 0xF0, 0x03, 0xE8, 0x0D, 0x00, 0xFF, 0x00, 0xFC, 0x00,
5970xF0, 0x43, 0xC0, 0x17, 0x21, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5980x03, 0xA8, 0x3F, 0x04, 0xB3, 0x08, 0xCC, 0x93, 0xF1, 0xCF, 0xC0, 0x3C, 0x42,
5990xF3, 0x00, 0xFC, 0x03, 0x30, 0x13, 0xC0, 0x3D, 0x05, 0xF7, 0x2C, 0xFC, 0x04,
6000xB0, 0x0F, 0xC0, 0x3E, 0x06, 0x3F, 0x04, 0xEC, 0x03, 0xF0, 0x83, 0xC0, 0x0F,
6010x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0xBF, 0x00,
6020x1B, 0x04, 0xC4, 0xAF, 0xD0, 0x6F, 0x40, 0xBC, 0x03, 0xF1, 0x84, 0xF4, 0x0F,
6030x10, 0x09, 0xC4, 0x7D, 0x08, 0xD5, 0x08, 0x74, 0x00, 0x50, 0x2F, 0x42, 0x3C,
6040x10, 0x1D, 0x12, 0xC4, 0x87, 0xD0, 0x40, 0x40, 0x07, 0x20, 0x0C, 0x00, 0x00,
6050x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x04, 0x81, 0x22, 0x04, 0x03,
6060xD0, 0x2C, 0x44, 0x31, 0x01, 0xC1, 0x18, 0x24, 0x0B, 0x50, 0x04, 0x40, 0x31,
6070x00, 0xC5, 0x00, 0x74, 0x02, 0x10, 0x2C, 0x44, 0x33, 0x01, 0x8D, 0x06, 0x24,
6080x03, 0xD0, 0x00, 0x40, 0x47, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6090x00, 0x03, 0xA0, 0x34, 0x30, 0x09, 0x41, 0x46, 0x03, 0xD0, 0x0D, 0x40, 0x35,
6100x00, 0xD1, 0x00, 0x74, 0x03, 0x14, 0x0D, 0x40, 0x35, 0x00, 0xD4, 0x00, 0x74,
6110x22, 0x50, 0x0D, 0x40, 0x35, 0x00, 0xDD, 0x00, 0xC4, 0x03, 0xD0, 0x33, 0x40,
6120x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x37,
6130x00, 0x93, 0x03, 0x4C, 0x83, 0xF0, 0x0D, 0xC0, 0x35, 0x20, 0xD3, 0x80, 0x7C,
6140x03, 0x72, 0x91, 0xC8, 0x35, 0x00, 0xD7, 0x80, 0x7C, 0x45, 0xB0, 0x0D, 0xC0,
6150x37, 0x18, 0x1F, 0xA2, 0x6C, 0x03, 0xF0, 0x11, 0xC0, 0x03, 0x20, 0x0E, 0x00,
6160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xBF, 0x40, 0xFD,
6170x03, 0xF0, 0x0D, 0xC2, 0x36, 0x00, 0xFF, 0x00, 0xBC, 0x03, 0xF0, 0x03, 0xC1,
6180x3F, 0x00, 0xD9, 0x00, 0xFC, 0x41, 0xF0, 0x0D, 0xC0, 0x3E, 0x08, 0xFC, 0x09,
6190xFC, 0x03, 0xF0, 0x03, 0x80, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
6200x00, 0x00, 0x02, 0x08, 0x31, 0x01, 0x9F, 0x02, 0x7C, 0x03, 0xF0, 0x0D, 0xC0,
6210x31, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0xF0, 0x01, 0xC0, 0x35, 0x00, 0xD7, 0x00,
6220x4C, 0x22, 0xB0, 0x0C, 0xC8, 0x34, 0x08, 0x07, 0x00, 0x5C, 0x03, 0x30, 0x21,
6230xC0, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
6240xFC, 0x0C, 0x9D, 0x00, 0xFC, 0x0F, 0xD0, 0x0F, 0x44, 0x3C, 0x00, 0xF1, 0x00,
6250xF4, 0x07, 0xD0, 0x15, 0xC2, 0x39, 0x08, 0xF0, 0x03, 0x2C, 0x8B, 0xD0, 0x0F,
6260x48, 0x3C, 0x00, 0xD5, 0x10, 0xC4, 0x2F, 0x10, 0x09, 0x40, 0x4C, 0x00, 0x02,
6270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x32, 0x00, 0x0D, 0x00,
6280x34, 0x43, 0xD0, 0x0D, 0x40, 0x31, 0x00, 0xC1, 0x00, 0x34, 0x1B, 0xD2, 0x14,
6290x48, 0x32, 0x00, 0xC8, 0x87, 0x04, 0x0D, 0xD0, 0x0C, 0x00, 0x31, 0x00, 0x41,
6300x10, 0x14, 0x23, 0x10, 0x00, 0x40, 0x1C, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
6310x00, 0x00, 0x00, 0x06, 0x88, 0x78, 0x00, 0x6D, 0x01, 0xB4, 0x67, 0xD0, 0x9E,
6320x40, 0x78, 0x00, 0xE1, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x40, 0x73, 0x48, 0xED,
6330x01, 0xA4, 0x05, 0xD1, 0x1E, 0x40, 0x71, 0x00, 0xE5, 0x01, 0xC4, 0x17, 0x14,
6340x92, 0x40, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
6350x10, 0x30, 0x02, 0xCF, 0x0C, 0x34, 0x03, 0xF0, 0x0C, 0x48, 0x31, 0x00, 0xC3,
6360x00, 0x3C, 0x43, 0xF0, 0x04, 0xC1, 0x32, 0x00, 0xCF, 0x10, 0x0C, 0x00, 0xB0,
6370x8C, 0xD0, 0x31, 0xA0, 0x17, 0x22, 0x5C, 0x17, 0x30, 0x50, 0xD0, 0x48, 0x40,
6380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x3D, 0x0C, 0xFF,
6390x88, 0xDC, 0x83, 0xF0, 0x2F, 0x00, 0x3F, 0x00, 0xDF, 0x00, 0xF4, 0x03, 0xF0,
6400x0F, 0xC0, 0x3D, 0x30, 0xF3, 0x08, 0x7C, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0xA0,
6410xFF, 0x00, 0xFC, 0x03, 0xF0, 0x89, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00,
6420x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x24, 0x5F, 0x40, 0x7C, 0x6F, 0x30,
6430xBD, 0xC0, 0xF4, 0x05, 0xD3, 0x68, 0x1C, 0x63, 0x70, 0x01, 0xD0, 0x36, 0x01,
6440xDF, 0x49, 0x4C, 0x05, 0x30, 0x4D, 0xC9, 0x37, 0x03, 0x1F, 0x00, 0x4D, 0x63,
6450xF0, 0x11, 0x84, 0x54, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6460x12, 0x88, 0x39, 0x01, 0x6D, 0x60, 0x36, 0x13, 0x10, 0x4E, 0x40, 0xB8, 0x01,
6470xE1, 0x0C, 0x84, 0x03, 0x10, 0x07, 0xC0, 0xB8, 0x04, 0xED, 0x84, 0xAC, 0x01,
6480x10, 0x4E, 0x48, 0x3B, 0x04, 0xCD, 0x00, 0x84, 0x03, 0xD0, 0x02, 0x40, 0x48,
6490x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x01,
6500xED, 0x03, 0x94, 0x07, 0x18, 0x1E, 0x50, 0x7A, 0x00, 0xC5, 0x01, 0x94, 0x17,
6510x50, 0x12, 0x41, 0x78, 0x00, 0xCD, 0x01, 0xC4, 0x04, 0x92, 0x9E, 0x42, 0x7B,
6520x01, 0x2D, 0x21, 0x84, 0x07, 0xD0, 0x10, 0x40, 0x0D, 0x00, 0x04, 0x00, 0x00,
6530x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x03,
6540x15, 0x0C, 0x60, 0x30, 0x00, 0xC1, 0x00, 0x24, 0x03, 0x10, 0x14, 0x41, 0x30,
6550x00, 0xCD, 0x40, 0x24, 0x21, 0x90, 0x0C, 0x40, 0x33, 0x00, 0xCD, 0x04, 0x04,
6560x03, 0xD0, 0x8C, 0x40, 0x49, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6570x00, 0x17, 0xA8, 0x15, 0x00, 0x7F, 0x0A, 0x7C, 0x81, 0x38, 0x05, 0xC0, 0x16,
6580x00, 0x53, 0x00, 0x5C, 0x01, 0x70, 0x27, 0xC0, 0x14, 0x00, 0x5F, 0x00, 0xCC,
6590x85, 0xB0, 0x05, 0xC0, 0x17, 0x10, 0x7F, 0x04, 0x4C, 0x01, 0xF0, 0x17, 0xC0,
6600x5D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x07,
6610x08, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x40, 0x1F, 0x00, 0x1C,
6620x00, 0xF0, 0x01, 0xC4, 0x05, 0x80, 0x1F, 0x00, 0x7C, 0x00, 0x74, 0x01, 0xC2,
6630x07, 0x00, 0x1F, 0x02, 0x7C, 0x00, 0xF2, 0x41, 0x80, 0x4A, 0x00, 0x0C, 0x00,
6640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x65, 0x00, 0x9F, 0x40, 0x7C,
6650x06, 0x70, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x08, 0x4C, 0x16, 0x30, 0x39, 0xC0,
6660x24, 0x00, 0x9D, 0x00, 0x74, 0x12, 0xF0, 0x09, 0xC0, 0x23, 0x00, 0x97, 0x08,
6670x5C, 0x06, 0x30, 0x09, 0xC0, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
6680x00, 0x00, 0x01, 0x20, 0x66, 0x0E, 0x9D, 0x20, 0x74, 0x0A, 0xD2, 0x09, 0x40,
6690x27, 0x00, 0x9D, 0x03, 0x44, 0x0E, 0x15, 0x08, 0x40, 0x64, 0x20, 0x9D, 0x1B,
6700x70, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x91, 0x11, 0x04, 0xAE, 0x10, 0x09,
6710x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0,
6720x24, 0x00, 0xDD, 0x00, 0x74, 0x62, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x8D, 0x02,
6730x44, 0x42, 0x11, 0x09, 0x40, 0x27, 0x09, 0x9D, 0x00, 0x70, 0x42, 0xD2, 0x09,
6740x40, 0x27, 0x00, 0x81, 0x00, 0x54, 0x0A, 0x10, 0x09, 0x40, 0x63, 0x00, 0x02,
6750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x20, 0x05, 0x8D, 0x14,
6760x34, 0x02, 0xD0, 0x88, 0x40, 0x23, 0x22, 0x8D, 0x48, 0x04, 0x02, 0x11, 0x09,
6770x40, 0x21, 0x10, 0x8D, 0x08, 0x34, 0x02, 0xD8, 0x08, 0x40, 0x23, 0x40, 0x81,
6780x08, 0x04, 0x92, 0x10, 0x48, 0x48, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
6790x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x01, 0x1F, 0x04, 0x7C, 0x50, 0x70, 0x60,
6800xC1, 0x83, 0x05, 0x1F, 0x96, 0x4C, 0x50, 0x30, 0xA1, 0xD0, 0x05, 0x05, 0x1F,
6810x16, 0x7C, 0x28, 0xE0, 0xE1, 0xC9, 0x07, 0x15, 0x17, 0x16, 0x5C, 0x04, 0x30,
6820x11, 0xC0, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19,
6830xA8, 0x27, 0x25, 0xBF, 0x34, 0x7E, 0x02, 0xF0, 0x49, 0xC0, 0x27, 0x01, 0x9F,
6840x04, 0x7D, 0x02, 0xF0, 0x1B, 0xC0, 0x26, 0x20, 0x9F, 0x04, 0xBC, 0x07, 0xF0,
6850x19, 0xC0, 0x27, 0x05, 0xBF, 0x04, 0x7C, 0x22, 0xF4, 0xCB, 0xC1, 0x67, 0x60,
6860x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0, 0x2F, 0x03, 0x93,
6870x03, 0xCC, 0x12, 0x70, 0x29, 0xC0, 0xA5, 0x00, 0xBF, 0x00, 0xCC, 0x42, 0x30,
6880x0B, 0xC0, 0x2E, 0x00, 0xB3, 0x00, 0xCC, 0x02, 0xB0, 0x09, 0xC0, 0x24, 0x0B,
6890xB3, 0x40, 0xCC, 0x02, 0x30, 0x09, 0xC0, 0x67, 0x00, 0x0E, 0x00, 0x00, 0x00,
6900x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x47, 0x01, 0x1B, 0x43, 0x68, 0x28, 0x10,
6910x01, 0x40, 0x84, 0x02, 0x1D, 0x0E, 0x45, 0x08, 0x10, 0x01, 0x40, 0x85, 0x02,
6920x11, 0x20, 0x44, 0x00, 0x13, 0x21, 0xC0, 0x46, 0x01, 0x1B, 0x00, 0x44, 0x00,
6930x10, 0x01, 0x44, 0x73, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6940x10, 0xA2, 0xA3, 0x10, 0x81, 0x06, 0x04, 0x02, 0x50, 0x68, 0x40, 0x21, 0x81,
6950x8D, 0x90, 0x06, 0x02, 0x10, 0x09, 0x40, 0x21, 0x40, 0x81, 0x16, 0x44, 0x02,
6960x90, 0x28, 0x40, 0xA0, 0x01, 0x81, 0x40, 0x05, 0x02, 0x90, 0x08, 0x40, 0x43,
6970x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x20,
6980x99, 0x02, 0x66, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x8D, 0x20, 0x46, 0x02,
6990x04, 0x09, 0x40, 0x25, 0x00, 0xC1, 0x00, 0x44, 0x03, 0x18, 0x09, 0x40, 0x27,
7000x20, 0x89, 0x00, 0x44, 0x02, 0x84, 0x69, 0x40, 0x63, 0x20, 0x06, 0x00, 0x00,
7010x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28, 0x25, 0x20, 0x93, 0x21, 0x4C, 0x02,
7020x70, 0x09, 0xC0, 0x25, 0x00, 0x9F, 0x80, 0x4C, 0x02, 0x32, 0x09, 0xC8, 0x27,
7030x00, 0x93, 0x00, 0x4C, 0x02, 0xB1, 0x09, 0xC4, 0x24, 0x10, 0x93, 0x13, 0x4C,
7040x02, 0xB0, 0x09, 0xC0, 0x17, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7050x00, 0x14, 0x00, 0x21, 0x00, 0x8F, 0x04, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27,
7060x00, 0x9F, 0x00, 0x3C, 0x02, 0xF0, 0x89, 0xC0, 0x23, 0x00, 0x9F, 0x00, 0x7D,
7070x26, 0xF1, 0x09, 0xC4, 0x26, 0xA8, 0x9F, 0x03, 0x3C, 0x82, 0x70, 0x09, 0xC0,
7080x53, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05,
7090x04, 0x1F, 0x40, 0x4C, 0x10, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x13, 0x10, 0x5C,
7100x84, 0x70, 0x01, 0xC0, 0x06, 0x00, 0x1F, 0x20, 0x4C, 0x08, 0x30, 0x01, 0xC0,
7110x07, 0x00, 0x1F, 0x26, 0x4C, 0x00, 0x30, 0x21, 0xC0, 0x53, 0x20, 0x04, 0x00,
7120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x5C, 0x04, 0x5D, 0x00, 0x84,
7130x01, 0xD0, 0x05, 0x44, 0x17, 0x40, 0x71, 0x83, 0xF4, 0x01, 0xD0, 0x07, 0x40,
7140x14, 0x00, 0x7D, 0x00, 0x84, 0xC5, 0x34, 0x05, 0x40, 0x17, 0x00, 0x7D, 0x01,
7150xC4, 0x1D, 0x50, 0x05, 0x40, 0x53, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
7160x00, 0x00, 0x14, 0xA0, 0xB2, 0x20, 0xCD, 0x20, 0x24, 0x2B, 0xD1, 0x0C, 0x40,
7170x33, 0x00, 0xC9, 0x08, 0x14, 0x07, 0x52, 0x0D, 0x21, 0x72, 0x80, 0xCD, 0x01,
7180x04, 0x07, 0x10, 0x0D, 0x40, 0x37, 0x00, 0xCD, 0x00, 0x07, 0x4F, 0x50, 0x0C,
7190x46, 0x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x82,
7200x38, 0x00, 0xCD, 0x04, 0xA4, 0x01, 0xD0, 0x4E, 0x40, 0x7B, 0x02, 0xE9, 0x00,
7210xB4, 0x0A, 0xD0, 0x27, 0x48, 0x38, 0x04, 0xED, 0x02, 0x84, 0x03, 0x10, 0x0E,
7220x40, 0x3B, 0x00, 0xED, 0x82, 0xC4, 0x03, 0x50, 0x0E, 0x40, 0x17, 0x08, 0x02,
7230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x78, 0x00, 0xEF, 0x05,
7240xAD, 0x07, 0xF0, 0x5E, 0xC0, 0x7F, 0x01, 0x69, 0x41, 0x9C, 0x05, 0x70, 0x1E,
7250xE0, 0x7A, 0x00, 0xFE, 0x01, 0xCD, 0x84, 0x30, 0x1E, 0xC0, 0x7B, 0x00, 0xFF,
7260x01, 0xCC, 0x07, 0x70, 0x9E, 0xC2, 0x57, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
7270x00, 0x00, 0x00, 0x10, 0xB8, 0x15, 0x00, 0xDF, 0x42, 0x5C, 0x00, 0xF0, 0xAD,
7280xC0, 0x37, 0x00, 0x57, 0x00, 0x7C, 0x02, 0xF0, 0x04, 0xC0, 0x35, 0x00, 0x1F,
7290x00, 0x7C, 0x00, 0xF0, 0x0D, 0xC1, 0x37, 0x02, 0xDF, 0x00, 0x7C, 0x03, 0xF0,
7300x4D, 0xC0, 0x43, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
7310xA0, 0x5F, 0x00, 0xF3, 0x53, 0xFC, 0x26, 0x30, 0x3F, 0xC0, 0xFF, 0x00, 0xFF,
7320x01, 0xCC, 0x07, 0xF0, 0x1B, 0xC0, 0x7F, 0x22, 0xBF, 0x01, 0xCC, 0x07, 0xF0,
7330x1F, 0xC1, 0x7C, 0x00, 0xF3, 0x01, 0xEC, 0x07, 0x30, 0x1F, 0xC1, 0x08, 0x00,
7340x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0xBD, 0x00, 0xE1,
7350x00, 0xB4, 0x0A, 0x10, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x22, 0x80, 0x02, 0xD0,
7360x02, 0x40, 0x3B, 0x00, 0xAD, 0x08, 0x84, 0x23, 0xD2, 0x0E, 0x60, 0x3D, 0x00,
7370xEB, 0x00, 0x04, 0x15, 0x10, 0xDD, 0x40, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00,
7380x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x19, 0x00, 0xE1, 0x00, 0xB4, 0x02, 0x94,
7390x0E, 0x40, 0x3B, 0x00, 0x8D, 0x00, 0x84, 0x00, 0xD0, 0x0E, 0x40, 0x3B, 0x80,
7400xED, 0x00, 0x84, 0x41, 0xD0, 0x0E, 0x40, 0x38, 0x00, 0xE1, 0x08, 0x24, 0x12,
7410x10, 0x4E, 0x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7420x06, 0x28, 0x07, 0x10, 0xD1, 0x11, 0x36, 0x02, 0x98, 0x0C, 0x40, 0x33, 0x88,
7430x9D, 0x40, 0x04, 0x02, 0xD1, 0x30, 0x40, 0x33, 0x08, 0x1D, 0x00, 0x04, 0x00,
7440xD0, 0x0C, 0x40, 0x31, 0x00, 0x09, 0x05, 0x04, 0x80, 0x18, 0x3C, 0x50, 0x58,
7450x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x24, 0x00,
7460xF3, 0x13, 0x7C, 0x02, 0xB0, 0x0F, 0xC0, 0x3F, 0x00, 0x9F, 0x40, 0x4E, 0x02,
7470xF0, 0x29, 0xC1, 0x37, 0x00, 0x5F, 0x00, 0x4C, 0x02, 0xD1, 0x0F, 0x40, 0x3C,
7480x00, 0x13, 0x13, 0x2C, 0x03, 0x30, 0x0F, 0xC1, 0x74, 0x20, 0x06, 0x00, 0x00,
7490x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0xA7, 0x00, 0xDF, 0x80, 0x7C, 0x00,
7500x70, 0x0D, 0xC0, 0x37, 0x00, 0x9F, 0x42, 0x3F, 0x02, 0xF0, 0x01, 0xC0, 0x37,
7510x00, 0x5F, 0x82, 0x7C, 0x00, 0xF0, 0x0D, 0xC8, 0x37, 0x10, 0x1F, 0xA2, 0x7C,
7520x02, 0xF5, 0x4D, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7530x00, 0x81, 0x09, 0x2F, 0x10, 0xF3, 0x00, 0x44, 0x00, 0xF0, 0x0F, 0xC0, 0x3F,
7540x00, 0x3F, 0x08, 0xCD, 0x00, 0x30, 0x0B, 0xC1, 0x7F, 0x00, 0xFF, 0x00, 0xCC,
7550x00, 0xF0, 0x0F, 0xC0, 0x3B, 0x00, 0x03, 0x02, 0xCC, 0x25, 0x32, 0x0F, 0xC0,
7560x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x66,
7570x00, 0xD5, 0x00, 0x44, 0x0C, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0x1D, 0x02, 0x44,
7580x06, 0x50, 0x31, 0x41, 0x37, 0x00, 0x1D, 0x02, 0x44, 0x0C, 0xD0, 0x0D, 0x40,
7590x37, 0x00, 0x11, 0x02, 0x44, 0x44, 0x50, 0x0D, 0x40, 0x07, 0x02, 0x08, 0x00,
7600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x46, 0x00, 0xD1, 0x00, 0x54,
7610x06, 0xD8, 0x0D, 0x40, 0x37, 0x00, 0x5D, 0x00, 0x44, 0x44, 0x10, 0x13, 0x40,
7620x37, 0x12, 0x1D, 0x00, 0xE4, 0x06, 0xD0, 0x0F, 0x40, 0x37, 0x00, 0x11, 0x50,
7630x44, 0x83, 0x50, 0x0D, 0x48, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
7640x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0xC5, 0x00, 0x14, 0x02, 0xD8, 0x0C, 0x40,
7650x33, 0x08, 0x4C, 0x00, 0x05, 0x00, 0x50, 0x00, 0x40, 0x33, 0x00, 0x0D, 0x00,
7660x04, 0x00, 0xD0, 0x0C, 0x48, 0x33, 0x00, 0xC1, 0x00, 0x04, 0x10, 0x51, 0x4C,
7670x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x90,
7680x06, 0x00, 0xF3, 0x40, 0x5C, 0x00, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0x1F, 0x00,
7690x4C, 0x00, 0x32, 0x01, 0xC0, 0x27, 0x00, 0xCF, 0x00, 0x4C, 0x00, 0xF0, 0x0E,
7700xC4, 0x37, 0x00, 0x13, 0x00, 0x4D, 0x60, 0x30, 0xAF, 0xC0, 0x07, 0xC0, 0x0A,
7710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x2F, 0x20, 0xFF, 0x00,
7720xEC, 0x00, 0xF1, 0x0F, 0xC0, 0x3F, 0x00, 0x3F, 0x40, 0xFC, 0x00, 0xF0, 0x03,
7730xC2, 0x2F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x3F,
7740x40, 0x7C, 0x10, 0xE0, 0x6D, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
7750x00, 0x00, 0x00, 0x03, 0xA8, 0x3F, 0x0B, 0xFF, 0x2C, 0xFC, 0x0A, 0xD0, 0x8F,
7760xC0, 0x4C, 0x00, 0x3F, 0x49, 0xEC, 0x93, 0x30, 0x4F, 0xC0, 0x0F, 0x10, 0x33,
7770x00, 0xFC, 0x24, 0xB0, 0x4F, 0xC0, 0x6C, 0x00, 0xF3, 0x00, 0x8C, 0x03, 0xB1,
7780x03, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
7790x10, 0xBF, 0x01, 0xFD, 0x08, 0x74, 0x8A, 0xD0, 0x6F, 0x44, 0x64, 0x00, 0x19,
7800x00, 0xF4, 0x0F, 0x51, 0xAF, 0x40, 0x27, 0x12, 0x11, 0x41, 0x74, 0x12, 0x10,
7810x9F, 0x40, 0x74, 0x00, 0xF1, 0x42, 0x44, 0x87, 0x10, 0x11, 0x40, 0x0F, 0x00,
7820x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA8, 0xB3, 0x01, 0xCD,
7830x00, 0x36, 0x1A, 0xD0, 0x2C, 0x50, 0x20, 0x00, 0x8D, 0x44, 0x24, 0x0B, 0x11,
7840x0C, 0x40, 0x01, 0x00, 0x05, 0x80, 0x74, 0x90, 0x90, 0x0C, 0x40, 0x35, 0x00,
7850xC1, 0x02, 0x04, 0x07, 0x90, 0x00, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00,
7860x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x35, 0x00, 0xDD, 0x00, 0x74, 0x06, 0xD0,
7870x0D, 0x40, 0xE4, 0x00, 0x19, 0x01, 0x74, 0x03, 0x50, 0x0D, 0x60, 0x07, 0x00,
7880x31, 0x01, 0x74, 0x0E, 0x10, 0x0D, 0x00, 0x74, 0x00, 0xD1, 0x00, 0x44, 0x87,
7890x00, 0x11, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
7900x00, 0xA8, 0x37, 0x00, 0xDF, 0x80, 0x7C, 0x8C, 0xF0, 0x0D, 0xC0, 0xC4, 0x30,
7910x9F, 0x01, 0x6C, 0x03, 0x34, 0x0D, 0xC0, 0x07, 0x00, 0x12, 0x05, 0x3C, 0x0E,
7920xB1, 0x0C, 0xC0, 0x60, 0x00, 0xD3, 0x00, 0x4C, 0x80, 0xB0, 0x19, 0xC0, 0x23,
7930x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00,
7940xFF, 0x00, 0xFC, 0x02, 0xF2, 0x0E, 0x40, 0x2F, 0x08, 0x3D, 0x40, 0xFC, 0x03,
7950xB0, 0x0F, 0xC0, 0x6B, 0xD1, 0xBF, 0x40, 0xFC, 0x02, 0xF1, 0x0F, 0xC0, 0x2F,
7960x00, 0xEF, 0x10, 0xFD, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x20, 0x06, 0x00, 0x00,
7970x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x35, 0x08, 0xDF, 0x05, 0x7C, 0x10,
7980x70, 0x0D, 0xC6, 0x25, 0x00, 0x9F, 0xC0, 0x3C, 0x03, 0xF0, 0x0D, 0xC0, 0x37,
7990x09, 0x1F, 0x10, 0x7C, 0x02, 0xF0, 0x4D, 0xC0, 0x06, 0x01, 0xD7, 0x00, 0x0C,
8000x01, 0x30, 0x09, 0xC0, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8010x00, 0x13, 0xA0, 0x3C, 0x20, 0xFD, 0x42, 0x74, 0x0E, 0xD0, 0x0F, 0x50, 0x64,
8020x00, 0x1D, 0x80, 0xF0, 0x13, 0xD0, 0xAF, 0x40, 0xB7, 0x01, 0x9D, 0x23, 0x74,
8030x02, 0xD0, 0x3F, 0x40, 0xA7, 0x80, 0xF1, 0x01, 0x54, 0x01, 0x14, 0x09, 0x41,
8040x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x30,
8050x00, 0xCD, 0x02, 0x34, 0x2C, 0x50, 0x0C, 0x48, 0x00, 0x02, 0x09, 0x40, 0x30,
8060x03, 0xD0, 0x1C, 0x40, 0x13, 0x00, 0x0D, 0x0B, 0x34, 0x00, 0x90, 0x3C, 0x4C,
8070xA2, 0x08, 0xCD, 0x41, 0x04, 0x03, 0x51, 0x08, 0x40, 0x0E, 0x00, 0x00, 0x00,
8080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x78, 0x00, 0xED, 0x01, 0xB4,
8090x05, 0xD1, 0x1C, 0x40, 0xC8, 0x00, 0x2D, 0x01, 0xB6, 0x0F, 0xD0, 0x1E, 0x41,
8100x7B, 0x02, 0x2D, 0x01, 0xB4, 0x04, 0xD0, 0x1E, 0x40, 0x7F, 0x00, 0xE1, 0x41,
8110xD4, 0x2F, 0x50, 0x16, 0x60, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8120x00, 0x00, 0x12, 0x02, 0x30, 0x08, 0xCF, 0x00, 0x3C, 0x03, 0x70, 0x8C, 0xC0,
8130x01, 0x00, 0x8F, 0x8A, 0x3E, 0x23, 0xF0, 0x0C, 0xC0, 0x13, 0x00, 0x4F, 0x00,
8140x3C, 0x80, 0xF1, 0x0C, 0xC1, 0x32, 0x00, 0xD7, 0x10, 0x0C, 0x23, 0x70, 0x4C,
8150xC0, 0x4B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28,
8160x3D, 0x24, 0xFF, 0x00, 0xF8, 0x03, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xFF, 0x28,
8170xFC, 0x63, 0xF0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7C, 0x03, 0xF0, 0x0F,
8180xE9, 0x3B, 0x00, 0xFF, 0x00, 0xFC, 0x23, 0xB4, 0x0D, 0xE0, 0x0B, 0x60, 0x04,
8190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0xF7, 0x04, 0xD7, 0x02,
8200x7C, 0x05, 0x30, 0xCD, 0xC0, 0x07, 0x00, 0x9B, 0x00, 0x7C, 0x13, 0xF1, 0xCD,
8210xD0, 0x04, 0x40, 0xD3, 0x01, 0x4D, 0x00, 0xF0, 0x6D, 0xC0, 0x27, 0x80, 0xD7,
8220x02, 0x7C, 0x03, 0x34, 0x18, 0xC4, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
8230x00, 0x00, 0x00, 0x13, 0x80, 0x30, 0x00, 0xE1, 0x56, 0xB4, 0x03, 0xB0, 0x8E,
8240x44, 0x2B, 0x00, 0xED, 0x00, 0xB4, 0x33, 0xD0, 0x0F, 0x41, 0x2C, 0x00, 0xE1,
8250x00, 0x84, 0x01, 0xD0, 0x4E, 0x41, 0x3B, 0x80, 0xED, 0x0E, 0xB4, 0x03, 0xB0,
8260x06, 0x40, 0x4C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
8270x00, 0x78, 0x01, 0xED, 0x01, 0x36, 0x05, 0x10, 0x5E, 0x40, 0x7B, 0x18, 0xAD,
8280x01, 0xA4, 0x17, 0xD0, 0x5E, 0x40, 0x7A, 0x00, 0xC1, 0x01, 0xA4, 0x06, 0xD0,
8290x1E, 0x40, 0x5B, 0x04, 0xED, 0x25, 0xB4, 0x07, 0x10, 0x1E, 0x40, 0x10, 0x00,
8300x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x33, 0x00, 0xC9,
8310x00, 0x34, 0x43, 0x98, 0x0C, 0x40, 0x33, 0x22, 0xCD, 0x0A, 0x34, 0x03, 0xD0,
8320x0C, 0x40, 0xB2, 0x03, 0xC1, 0x0A, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x73, 0x01,
8330xCD, 0x00, 0x34, 0x03, 0x90, 0x6C, 0x40, 0x58, 0x20, 0x0C, 0x00, 0x00, 0x00,
8340x00, 0x00, 0x00, 0x00, 0x17, 0x28, 0x17, 0x10, 0x5F, 0x00, 0xFC, 0x81, 0x30,
8350x05, 0xE0, 0x5B, 0x00, 0x7B, 0x61, 0x3C, 0x01, 0xF2, 0x05, 0xC0, 0xDE, 0x00,
8360x73, 0x01, 0xEC, 0x05, 0xF0, 0x05, 0xCA, 0x1B, 0x00, 0x5F, 0x00, 0xFC, 0x01,
8370x30, 0x07, 0xD4, 0x5C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8380x12, 0x00, 0x05, 0x08, 0x17, 0x00, 0x78, 0x20, 0xF0, 0x01, 0xC6, 0x47, 0x08,
8390x1F, 0x10, 0x7C, 0x00, 0xF0, 0x20, 0xC8, 0x01, 0x00, 0x1F, 0x04, 0x5C, 0x24,
8400xF0, 0x01, 0xC0, 0x07, 0x20, 0x1F, 0x00, 0x7C, 0x04, 0xF1, 0x21, 0xC0, 0x4B,
8410x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00,
8420x8F, 0x01, 0x4C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x02, 0x9B, 0x20, 0x4C, 0x82,
8430xB0, 0x19, 0x80, 0x24, 0x00, 0x91, 0x01, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0xE5,
8440x00, 0x93, 0x00, 0x7C, 0x02, 0x32, 0x09, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00,
8450x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x03, 0x45, 0x8E,
8460xD0, 0x09, 0x40, 0xE7, 0x10, 0x80, 0x00, 0x44, 0x06, 0x10, 0x49, 0x50, 0x24,
8470x02, 0x91, 0x02, 0x74, 0x02, 0x10, 0x09, 0x40, 0xA7, 0x00, 0x91, 0x0B, 0x34,
8480x02, 0x14, 0x29, 0x44, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8490x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x18, 0x54, 0x2B, 0xD0, 0x09, 0x40, 0x27,
8500x00, 0x98, 0x20, 0x44, 0x52, 0x92, 0x49, 0x48, 0x25, 0x08, 0x95, 0x38, 0x34,
8510x02, 0x00, 0x09, 0x42, 0x27, 0x40, 0x91, 0x00, 0x74, 0x06, 0x1C, 0x2D, 0x40,
8520x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20,
8530x00, 0x89, 0x14, 0x14, 0x52, 0xD1, 0x88, 0x40, 0x23, 0x08, 0x91, 0x48, 0x00,
8540x02, 0x00, 0x08, 0x60, 0x21, 0x00, 0x85, 0x04, 0x36, 0x22, 0x14, 0x08, 0x40,
8550x23, 0x00, 0xC1, 0x14, 0x34, 0x56, 0x10, 0x48, 0x41, 0x43, 0x80, 0x00, 0x00,
8560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x06, 0x05, 0x1F, 0x04, 0x5C,
8570x10, 0xF0, 0x61, 0xC1, 0x17, 0x00, 0x1A, 0x02, 0x4C, 0x50, 0xB0, 0xE1, 0xC1,
8580x85, 0x47, 0x17, 0x01, 0x7C, 0x08, 0x20, 0x41, 0xC1, 0x15, 0x00, 0x13, 0x0E,
8590x7C, 0x10, 0x30, 0x41, 0xC0, 0x77, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
8600x00, 0x00, 0x1D, 0xB8, 0x27, 0x05, 0x9F, 0x14, 0xEC, 0x52, 0xF0, 0x49, 0xC2,
8610x2F, 0x10, 0xBF, 0x44, 0x7D, 0x02, 0xF0, 0x19, 0xC2, 0x6E, 0x00, 0xBB, 0x08,
8620xFC, 0x12, 0xF0, 0x09, 0xC0, 0x2F, 0x00, 0x9F, 0x81, 0xBC, 0x02, 0xF0, 0x0B,
8630xC0, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00,
8640xA7, 0x10, 0xBF, 0x06, 0xCC, 0x46, 0x10, 0x29, 0xC0, 0x2D, 0x00, 0x9F, 0x82,
8650xDC, 0x12, 0xF0, 0x0B, 0xC0, 0x2C, 0x05, 0xB3, 0x00, 0x7C, 0x82, 0x30, 0x4B,
8660xC1, 0x2F, 0x00, 0xB3, 0x00, 0xBC, 0x93, 0x30, 0x0B, 0xC0, 0x77, 0x00, 0x0E,
8670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x87, 0x00, 0x11, 0x0A,
8680x45, 0x0C, 0xB0, 0xE0, 0x40, 0x07, 0x08, 0x17, 0x00, 0x44, 0x00, 0xD0, 0xA1,
8690x40, 0x84, 0x08, 0x11, 0x00, 0x74, 0x50, 0x10, 0x21, 0x40, 0x17, 0x00, 0x11,
8700x00, 0x74, 0x00, 0x10, 0x01, 0x44, 0x63, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
8710x00, 0x00, 0x00, 0x12, 0x20, 0xA1, 0x01, 0x85, 0x04, 0x04, 0x52, 0x58, 0x48,
8720x40, 0x23, 0x00, 0x89, 0x00, 0x14, 0x0B, 0xD0, 0x08, 0x40, 0x20, 0x00, 0x85,
8730x80, 0x34, 0x02, 0x10, 0x08, 0x42, 0x25, 0x00, 0xC1, 0x00, 0x34, 0x8A, 0x10,
8740x08, 0x40, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
8750x28, 0x25, 0x00, 0xD1, 0x00, 0x44, 0x03, 0xD1, 0x09, 0x40, 0x27, 0x0C, 0x95,
8760x04, 0x44, 0x02, 0xD0, 0x09, 0x10, 0x24, 0x14, 0x94, 0x04, 0x74, 0x0A, 0x14,
8770x09, 0x40, 0x27, 0x00, 0x91, 0x00, 0x74, 0x12, 0x18, 0x49, 0x40, 0x63, 0x28,
8780x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA2, 0x27, 0x10, 0x97,
8790x00, 0x48, 0x1A, 0x70, 0x09, 0xE0, 0xA5, 0x00, 0x9F, 0x93, 0x54, 0x02, 0xF0,
8800x09, 0xC4, 0xE4, 0x40, 0x97, 0x00, 0x7C, 0x02, 0x33, 0x09, 0xC0, 0x67, 0x00,
8810x91, 0x00, 0x7C, 0x06, 0x34, 0x49, 0x42, 0x17, 0x08, 0x04, 0x00, 0x00, 0x00,
8820x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x20, 0x00, 0x9F, 0x90, 0x7C, 0x12, 0xB0,
8830x09, 0xC0, 0x67, 0x09, 0x97, 0x21, 0x7C, 0x02, 0xF0, 0x08, 0xC0, 0x23, 0x11,
8840x9B, 0x00, 0x7C, 0x0A, 0xF0, 0x09, 0xC0, 0x27, 0x41, 0x9F, 0x20, 0x7C, 0x06,
8850xF0, 0x09, 0xC0, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8860x14, 0x08, 0x04, 0x00, 0x1F, 0x00, 0x6C, 0x08, 0xF2, 0x01, 0xC0, 0x86, 0x14,
8870x1F, 0x02, 0x4C, 0x40, 0xF0, 0x01, 0xC0, 0x86, 0x03, 0x1F, 0x28, 0x7C, 0x00,
8880xF0, 0x11, 0xC4, 0x04, 0x01, 0x13, 0x10, 0x7C, 0x40, 0x30, 0x21, 0xC0, 0x50,
8890x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x14, 0x00,
8900x7D, 0x85, 0xC4, 0x81, 0xD0, 0x05, 0x58, 0xDC, 0x00, 0x5C, 0x00, 0xEC, 0x01,
8910xD0, 0x27, 0x41, 0x1F, 0x10, 0x7D, 0x00, 0x74, 0x01, 0xD0, 0x07, 0x40, 0xD8,
8920x40, 0x73, 0x02, 0xB4, 0x09, 0x15, 0x07, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
8930x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x32, 0x00, 0xDD, 0x03, 0x74, 0x33,
8940xD0, 0x0C, 0x40, 0x71, 0x00, 0xDD, 0x00, 0x04, 0x0B, 0xD0, 0x2C, 0x41, 0xB2,
8950x00, 0xCC, 0x04, 0x74, 0x03, 0xD0, 0x0C, 0x40, 0x70, 0x00, 0xC1, 0x02, 0x34,
8960x03, 0x90, 0x0C, 0x40, 0x40, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
8970x00, 0x04, 0x80, 0x38, 0x00, 0xED, 0x00, 0x94, 0x03, 0xD1, 0x9E, 0x40, 0x99,
8980x28, 0xFD, 0x08, 0xA0, 0x03, 0xDA, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB6,
8990x13, 0xD0, 0x1E, 0x50, 0x3C, 0x04, 0xA9, 0x00, 0xF4, 0x03, 0x90, 0x1C, 0x41,
9000x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x78,
9010x10, 0xFF, 0x01, 0xBC, 0x07, 0xF1, 0x5E, 0xC1, 0x6B, 0x00, 0xFE, 0x11, 0x8C,
9020x06, 0xC0, 0x12, 0xC0, 0x6A, 0x00, 0xEF, 0x21, 0xBC, 0x47, 0xF0, 0x1C, 0xE2,
9030x58, 0x00, 0xA3, 0x01, 0xBC, 0x07, 0xB0, 0x1E, 0xD0, 0x50, 0x60, 0x00, 0x00,
9040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB0, 0xB5, 0x05, 0x5F, 0x00, 0x6C,
9050x01, 0xF1, 0x2D, 0xC0, 0x06, 0x00, 0xDF, 0x06, 0x7C, 0x00, 0xF0, 0x01, 0xC0,
9060x27, 0x10, 0xDF, 0x00, 0x7C, 0x2B, 0xF0, 0x0D, 0xC0, 0x13, 0x00, 0x17, 0x40,
9070x7C, 0x03, 0x74, 0x0D, 0xD0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
9080x00, 0x00, 0x06, 0x28, 0x7D, 0x04, 0x73, 0x01, 0xCD, 0x27, 0x30, 0x1F, 0xC2,
9090x7F, 0x02, 0xF7, 0x01, 0xCC, 0x05, 0xB4, 0x9F, 0xC8, 0x5F, 0x92, 0x6F, 0x09,
9100xDC, 0x07, 0xF0, 0x1F, 0xC0, 0x58, 0x40, 0xB3, 0x09, 0xCC, 0xA5, 0x30, 0x1F,
9110xC0, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x08,
9120x39, 0xA0, 0x61, 0x00, 0xAC, 0x03, 0x10, 0x4E, 0x48, 0x2B, 0x82, 0xE1, 0x00,
9130x84, 0x08, 0x10, 0x06, 0x40, 0x1B, 0x00, 0xED, 0x08, 0x84, 0x03, 0xD0, 0x06,
9140x50, 0x18, 0x02, 0xA1, 0x00, 0x85, 0x33, 0xB0, 0x0A, 0xC8, 0x56, 0x00, 0x04,
9150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x39, 0x00, 0xC1, 0x08,
9160x94, 0x43, 0x18, 0x0E, 0x60, 0x2F, 0x84, 0xE5, 0x00, 0x84, 0x00, 0x10, 0x06,
9170x08, 0x1B, 0x00, 0x2D, 0x00, 0x94, 0x43, 0xD0, 0x8E, 0x40, 0x0E, 0x00, 0x81,
9180x80, 0xC4, 0x01, 0x18, 0x0E, 0x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
9190x00, 0x00, 0x00, 0x02, 0x28, 0x35, 0x00, 0x01, 0x00, 0x50, 0x02, 0x18, 0x0D,
9200x44, 0x63, 0x00, 0xC5, 0x02, 0x04, 0x00, 0x10, 0x00, 0x44, 0x83, 0x00, 0x8D,
9210x02, 0x04, 0x4F, 0xD0, 0x04, 0x40, 0xC2, 0x02, 0x01, 0x00, 0x44, 0x01, 0x90,
9220xA8, 0x40, 0x0A, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
9230xA8, 0x3D, 0x00, 0x93, 0x00, 0x54, 0x28, 0x30, 0x0F, 0xC0, 0x67, 0x00, 0xF7,
9240x00, 0x4C, 0x02, 0x30, 0x09, 0x40, 0x27, 0x00, 0x9F, 0x06, 0xDC, 0x0F, 0xF0,
9250x0C, 0x40, 0x62, 0x08, 0x91, 0x00, 0x4C, 0x03, 0x11, 0x3D, 0xC8, 0x54, 0x00,
9260x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x37, 0x00, 0x9F,
9270x02, 0x64, 0x02, 0xF0, 0x0D, 0xC0, 0x87, 0x28, 0xDA, 0x11, 0x7C, 0x0A, 0x70,
9280x09, 0xC0, 0x87, 0x10, 0xDF, 0x10, 0x7C, 0x03, 0xF0, 0x09, 0xC4, 0x05, 0x04,
9290x9F, 0xC0, 0x6C, 0x03, 0xF0, 0x2D, 0xC2, 0x37, 0x20, 0x0C, 0x00, 0x00, 0x00,
9300x00, 0x00, 0x00, 0x00, 0x81, 0x08, 0x3F, 0x00, 0xB3, 0x80, 0x7C, 0x00, 0x31,
9310x0F, 0xE0, 0x0C, 0x04, 0xF7, 0x00, 0x7C, 0x02, 0xF0, 0x03, 0x40, 0x2F, 0x04,
9320x37, 0x00, 0xCC, 0x03, 0xF0, 0x0D, 0xC0, 0x0C, 0x40, 0xB2, 0x00, 0xFC, 0x02,
9330x70, 0x05, 0xC1, 0x05, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
9340xA1, 0x20, 0x36, 0x00, 0x91, 0x03, 0x74, 0x04, 0x10, 0x0D, 0x48, 0x44, 0x01,
9350xDD, 0x00, 0x74, 0x04, 0xD0, 0x11, 0x40, 0x47, 0x00, 0x4D, 0x00, 0x6C, 0x03,
9360xD0, 0x09, 0x40, 0x44, 0x00, 0x11, 0x07, 0x74, 0x02, 0x10, 0x44, 0x42, 0x84,
9370x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x36, 0x00,
9380x11, 0x01, 0x74, 0x04, 0x10, 0x0D, 0x40, 0x64, 0x18, 0xDD, 0x00, 0x74, 0x06,
9390xD0, 0x1B, 0x60, 0xCF, 0x00, 0x1D, 0x58, 0x44, 0x03, 0xD0, 0x1D, 0x70, 0xC4,
9400x00, 0x35, 0x81, 0x74, 0x21, 0x50, 0x0D, 0x40, 0x05, 0x00, 0x0A, 0x00, 0x00,
9410x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0x01, 0x00, 0x24, 0x02,
9420x10, 0x0C, 0x40, 0x20, 0x00, 0xCD, 0x00, 0x34, 0x02, 0xD0, 0x00, 0x40, 0x02,
9430x20, 0xCD, 0x00, 0x24, 0x03, 0xD0, 0x00, 0x40, 0x04, 0x00, 0x05, 0x00, 0x64,
9440x83, 0x14, 0x08, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
9450x00, 0x01, 0x10, 0x3A, 0x08, 0x93, 0x00, 0x7C, 0x00, 0x30, 0x0F, 0x40, 0x04,
9460x10, 0xE7, 0x00, 0x7C, 0x02, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x17, 0x60, 0xCC,
9470x03, 0xF0, 0x0D, 0xC0, 0x04, 0x00, 0x17, 0x00, 0x7C, 0x00, 0x71, 0x05, 0xC0,
9480x05, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x38, 0x3F,
9490x20, 0xBF, 0x80, 0xFE, 0x02, 0xF0, 0x0F, 0xC0, 0x0B, 0x00, 0xFF, 0x00, 0xFC,
9500x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x83, 0xF0, 0x03, 0xC8,
9510x0F, 0x00, 0x3B, 0x00, 0xBC, 0x00, 0xF0, 0x03, 0xC2, 0x17, 0x62, 0x0E, 0x00,
9520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x7F, 0x02, 0xFB, 0x09, 0xAC,
9530x07, 0xB0, 0x1F, 0xC0, 0x7A, 0x00, 0xFD, 0x21, 0xEC, 0x07, 0xB0, 0x1F, 0xC0,
9540x7A, 0x08, 0xFB, 0x89, 0xCC, 0x07, 0xF2, 0x1F, 0xC0, 0x7D, 0x12, 0xFB, 0x09,
9550xEC, 0x87, 0x33, 0x1E, 0xD2, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
9560x00, 0x00, 0x03, 0x00, 0x07, 0x01, 0x11, 0x04, 0x44, 0x04, 0x30, 0x11, 0x40,
9570x44, 0x00, 0x11, 0x01, 0x40, 0x00, 0x10, 0x40, 0x47, 0x44, 0x00, 0x0D, 0x00,
9580x44, 0x04, 0x10, 0x11, 0xC0, 0x05, 0x39, 0x11, 0x24, 0x44, 0x10, 0xB2, 0x11,
9590x44, 0x0C, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
9600x35, 0x18, 0xD9, 0x60, 0x34, 0x03, 0xD0, 0x0D, 0x40, 0x36, 0x00, 0xD9, 0xA0,
9610x64, 0x53, 0x92, 0x0D, 0x40, 0x33, 0x00, 0xD5, 0x00, 0x44, 0x03, 0x90, 0x0C,
9620x40, 0x36, 0x00, 0xDD, 0x04, 0x34, 0x43, 0x19, 0x0C, 0x40, 0x4C, 0x80, 0x0E,
9630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA8, 0x07, 0x08, 0x11, 0x00,
9640x44, 0x00, 0xD1, 0x01, 0x40, 0x04, 0x08, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01,
9650x40, 0x05, 0x00, 0x1D, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x05, 0x18, 0x15,
9660x00, 0x14, 0x00, 0x90, 0x01, 0x40, 0x0C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
9670x00, 0x00, 0x00, 0x00, 0xA0, 0x32, 0x20, 0xCB, 0x20, 0x6C, 0x03, 0xF0, 0x0D,
9680xC0, 0x36, 0x80, 0xCF, 0x00, 0x2C, 0x03, 0xB0, 0x0D, 0xC0, 0x37, 0x08, 0xDB,
9690x00, 0x4C, 0x03, 0xB0, 0x0C, 0x80, 0x36, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x32,
9700x0C, 0xC8, 0x20, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
9710x88, 0x0D, 0x00, 0x3F, 0x80, 0xF8, 0x40, 0x30, 0x03, 0xC3, 0x0D, 0x80, 0x3E,
9720x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x08, 0x3D, 0x00, 0xF8, 0x00, 0xB0,
9730x03, 0x82, 0x0F, 0x00, 0x3B, 0x30, 0xE8, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00,
9740x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x35, 0x00, 0xD7,
9750x00, 0x6C, 0x03, 0x71, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0,
9760x0D, 0xC0, 0x36, 0x04, 0xDF, 0x00, 0x5C, 0x93, 0x31, 0x0D, 0xC1, 0x34, 0x02,
9770xDF, 0x00, 0x7C, 0x03, 0x70, 0x0D, 0xC1, 0x09, 0x20, 0x04, 0x00, 0x00, 0x00,
9780x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x84, 0x06, 0x11, 0x40, 0x34, 0x4C, 0x10,
9790x20, 0x41, 0x83, 0x24, 0x10, 0x00, 0x74, 0x04, 0x10, 0xB0, 0x00, 0x04, 0x00,
9800x02, 0x00, 0x04, 0x0C, 0x10, 0x31, 0x42, 0x03, 0x00, 0x0C, 0x03, 0x70, 0x80,
9810x10, 0x21, 0x40, 0x6C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
9820x13, 0x20, 0x70, 0x10, 0xC5, 0x80, 0x24, 0x07, 0x40, 0x0C, 0x40, 0x33, 0x01,
9830xC5, 0x00, 0x24, 0x47, 0x50, 0xAC, 0x40, 0x31, 0x08, 0xC4, 0x00, 0x14, 0x0B,
9840x14, 0x3C, 0x00, 0x30, 0x04, 0xCD, 0x00, 0x34, 0x03, 0x98, 0x2C, 0x40, 0x0F,
9850x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x02, 0x4C, 0x0A,
9860x21, 0x09, 0xF4, 0x04, 0x10, 0x12, 0x40, 0x4F, 0x00, 0x25, 0x37, 0xF6, 0x04,
9870x12, 0x12, 0x60, 0x49, 0x02, 0x21, 0x01, 0x84, 0x04, 0x00, 0x12, 0x41, 0x4B,
9880x02, 0x2D, 0x11, 0xB4, 0x24, 0x80, 0x12, 0x42, 0x3E, 0x20, 0x08, 0x00, 0x00,
9890x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x30, 0x00, 0xC7, 0x00, 0x2C, 0x23,
9900x51, 0x8C, 0xC0, 0x33, 0x00, 0xCF, 0x08, 0x3C, 0x43, 0x70, 0x0C, 0xC4, 0x31,
9910x06, 0xC7, 0x00, 0x1C, 0x43, 0x30, 0x0C, 0xC0, 0x30, 0x00, 0xCF, 0x00, 0x7C,
9920x03, 0xF0, 0x0C, 0xE4, 0x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
9930x00, 0x02, 0x38, 0x09, 0x20, 0x3F, 0x00, 0xF0, 0x00, 0xF0, 0x03, 0xC2, 0x0F,
9940x00, 0x3B, 0x2C, 0xBC, 0x20, 0x70, 0x03, 0xC0, 0x0C, 0x02, 0x3F, 0x00, 0xBC,
9950x20, 0xF8, 0x83, 0xC0, 0x0F, 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x71, 0x11, 0xC8,
9960x09, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x77,
9970x00, 0xC3, 0x40, 0x6C, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x00, 0xC7, 0x01, 0x6C,
9980x07, 0x36, 0x0D, 0xC4, 0x70, 0x00, 0xDB, 0x40, 0x6C, 0x03, 0xF0, 0x0C, 0xD0,
9990x34, 0x40, 0xD3, 0x00, 0x7C, 0x03, 0xB0, 0x0D, 0xC0, 0x43, 0x00, 0x0E, 0x00,
10000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x98, 0x0D, 0x08, 0x2B, 0x00, 0x84,
10010x00, 0xD2, 0x02, 0x40, 0x0B, 0x00, 0x21, 0x60, 0x84, 0x00, 0x10, 0x02, 0x42,
10020x08, 0x00, 0x31, 0x00, 0x84, 0x00, 0x90, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00,
10030xB4, 0x00, 0x10, 0x02, 0x40, 0x4F, 0x68, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
10040x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0xF9, 0x01, 0xA6, 0x07, 0xD9, 0x1E, 0x40,
10050x7B, 0x00, 0xF5, 0x01, 0xA4, 0x07, 0x10, 0x1E, 0x40, 0x78, 0x10, 0xE9, 0x01,
10060xB4, 0x07, 0xD0, 0x1E, 0x60, 0x78, 0x00, 0xE1, 0x01, 0xD4, 0x07, 0x90, 0x1E,
10070x60, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x20,
10080x03, 0x00, 0x19, 0x00, 0x06, 0x00, 0xD0, 0x00, 0x42, 0x03, 0x00, 0x05, 0x00,
10090x04, 0x00, 0x18, 0x00, 0x50, 0x01, 0x00, 0x01, 0x00, 0x14, 0x00, 0x90, 0x00,
10100x60, 0x00, 0x00, 0x05, 0x00, 0x74, 0x00, 0x10, 0x00, 0x40, 0x5B, 0x00, 0x0C,
10110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x28, 0x15, 0x00, 0x5B, 0x80,
10120x2C, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00, 0x57, 0x40, 0x6C, 0x01, 0x30, 0x05,
10130xCA, 0x14, 0x10, 0x5B, 0x00, 0x7C, 0x01, 0xF0, 0x04, 0xC0, 0x10, 0x00, 0x53,
10140x00, 0x7C, 0x01, 0xB0, 0x05, 0xC0, 0x5F, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
10150x00, 0x00, 0x00, 0x12, 0x00, 0x8D, 0x08, 0x3F, 0x00, 0xFC, 0x08, 0xE0, 0x03,
10160xC0, 0x0F, 0x20, 0x39, 0x20, 0xFC, 0x08, 0xF0, 0x03, 0x00, 0x0E, 0x00, 0x3F,
10170x40, 0xE4, 0x80, 0xC2, 0x03, 0xC0, 0x8F, 0x00, 0x3B, 0x20, 0xFC, 0x00, 0xF0,
10180x03, 0xC0, 0x4B, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
10190x08, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x22, 0x30, 0x49, 0xC0, 0x25, 0x00, 0x9F,
10200xC0, 0x7C, 0x02, 0xF1, 0x09, 0x80, 0xE5, 0x08, 0x9F, 0x00, 0x5C, 0x02, 0x70,
10210x09, 0xC0, 0x24, 0x00, 0x97, 0x01, 0x7C, 0x16, 0x30, 0x09, 0x80, 0x41, 0x20,
10220x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xE4, 0x23, 0x9D,
10230x00, 0x45, 0x0A, 0x10, 0x18, 0x80, 0x26, 0x00, 0x9C, 0x11, 0x70, 0x06, 0xD0,
10240x28, 0x40, 0x64, 0x04, 0x8D, 0x80, 0x04, 0x02, 0x00, 0x09, 0x40, 0x64, 0x03,
10250x91, 0x02, 0x74, 0x0E, 0x10, 0x18, 0x40, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
10260x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x80, 0xBD, 0x80, 0xC4, 0x02, 0x50,
10270x0B, 0x40, 0x2C, 0x01, 0xBC, 0x08, 0xF0, 0x22, 0xD2, 0x0B, 0x41, 0x2D, 0x00,
10280xBD, 0x00, 0xD4, 0x02, 0x42, 0x0B, 0x40, 0x2C, 0x00, 0xB5, 0x0A, 0xF4, 0xC2,
10290x00, 0x4B, 0x40, 0x71, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
10300x10, 0x20, 0x29, 0x00, 0xAD, 0x00, 0xD4, 0x03, 0x54, 0x1B, 0x40, 0x6A, 0x20,
10310xAC, 0xA0, 0xB0, 0xA3, 0xD1, 0x8B, 0x40, 0x29, 0x00, 0xBD, 0x68, 0xC4, 0x02,
10320x51, 0x0B, 0x40, 0x28, 0x02, 0xA1, 0x08, 0xB0, 0x22, 0x11, 0x0B, 0x44, 0x51,
10330xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x07, 0x08,
10340x1F, 0x80, 0x4C, 0x00, 0x74, 0x01, 0xC0, 0x05, 0x00, 0x1F, 0x00, 0x38, 0x08,
10350xF0, 0x20, 0xC0, 0x05, 0x00, 0x1F, 0x22, 0x5C, 0x00, 0x72, 0x01, 0xD0, 0x80,
10360x00, 0x17, 0x02, 0x78, 0x08, 0x34, 0x03, 0xC0, 0x75, 0xC0, 0x0A, 0x00, 0x00,
10370x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x27, 0x05, 0x9F, 0x14, 0x6C, 0x02,
10380xB0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x12, 0xF0, 0x49, 0x80, 0x26,
10390x00, 0x9F, 0x04, 0x7C, 0x02, 0xB0, 0x09, 0xC0, 0x27, 0x01, 0x9F, 0x04, 0x3C,
10400x12, 0xF4, 0x09, 0xC0, 0x66, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
10410x00, 0x1D, 0xA8, 0xAF, 0x00, 0x9F, 0x02, 0xF4, 0x02, 0x30, 0x0B, 0xC0, 0x2B,
10420x00, 0xBF, 0x80, 0xCC, 0x82, 0xF0, 0x0B, 0xD0, 0x2C, 0x00, 0x8B, 0x82, 0x8C,
10430x02, 0xB0, 0x0B, 0xC0, 0x2E, 0x00, 0xAF, 0x00, 0xCD, 0x0A, 0xB0, 0x0A, 0xC0,
10440x64, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x10, 0x47,
10450x01, 0x0D, 0x05, 0x74, 0x00, 0xB0, 0x01, 0x40, 0x07, 0x08, 0x1D, 0x00, 0x6C,
10460x10, 0xD0, 0x41, 0x40, 0x04, 0x00, 0x11, 0x00, 0x54, 0x00, 0x10, 0x01, 0x40,
10470x00, 0x01, 0x1D, 0x00, 0x45, 0x10, 0x10, 0x01, 0x42, 0x70, 0x60, 0x0C, 0x00,
10480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA2, 0x21, 0x00, 0x8D, 0x00, 0x34,
10490x02, 0x10, 0x0C, 0x40, 0x23, 0x08, 0x9D, 0xA0, 0x04, 0x42, 0xD0, 0x08, 0x41,
10500x24, 0x00, 0x89, 0x00, 0x64, 0x02, 0x90, 0x09, 0x40, 0x22, 0x04, 0x8D, 0x00,
10510x44, 0x02, 0x90, 0x08, 0x50, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
10520x00, 0x00, 0x18, 0x20, 0x25, 0x10, 0x9D, 0x00, 0x74, 0x03, 0x90, 0x0D, 0x40,
10530x27, 0x00, 0x9D, 0x00, 0x64, 0x02, 0xD0, 0x09, 0x40, 0x24, 0x00, 0x91, 0x00,
10540x74, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x8C, 0x00, 0x44, 0x02, 0x10, 0x09,
10550x40, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x28,
10560x25, 0x00, 0x9F, 0x00, 0x3C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x20,
10570x4C, 0x02, 0xF0, 0x09, 0xC0, 0x20, 0x00, 0x9B, 0x00, 0x2C, 0x02, 0xB0, 0x08,
10580xC0, 0x26, 0x00, 0x9E, 0x00, 0x4C, 0x02, 0xB0, 0x09, 0xC0, 0x14, 0x28, 0x0E,
10590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x80, 0x25, 0x00, 0x9F, 0x00,
10600x7C, 0x02, 0xF8, 0x09, 0xC0, 0x27, 0x10, 0x9F, 0x00, 0x7C, 0x82, 0xF0, 0x09,
10610xC0, 0x27, 0x00, 0x9F, 0x00, 0x58, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F,
10620x00, 0x7C, 0x02, 0xF0, 0x09, 0xC1, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
10630x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x01, 0x1F, 0x00, 0x4D, 0x10, 0xF0, 0x01,
10640xC0, 0x07, 0x04, 0x17, 0x40, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x17,
10650x00, 0x5C, 0x40, 0x30, 0x81, 0xC0, 0x07, 0x00, 0x17, 0x00, 0x5C, 0x90, 0x34,
10660x01, 0xC0, 0x41, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
10670xA0, 0xDC, 0x01, 0x5D, 0x00, 0xC4, 0x05, 0xD0, 0x87, 0x48, 0x5F, 0x04, 0x71,
10680x07, 0xF4, 0x01, 0x10, 0x07, 0x40, 0x1F, 0x02, 0x51, 0x00, 0xC0, 0x11, 0x10,
10690xB7, 0x40, 0x5F, 0x00, 0x70, 0x01, 0x84, 0x01, 0x10, 0x06, 0x40, 0x50, 0x00,
10700x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xB2, 0x08, 0xCD,
10710x00, 0x14, 0x0A, 0xD8, 0x2C, 0x40, 0xB3, 0x00, 0xD4, 0x11, 0x34, 0x07, 0x10,
10720x1D, 0x40, 0xA3, 0x00, 0xD5, 0x00, 0x14, 0x0E, 0x14, 0x1C, 0x40, 0x63, 0x00,
10730xC4, 0x05, 0x14, 0x2B, 0x14, 0x24, 0x40, 0x51, 0x00, 0x0A, 0x00, 0x00, 0x00,
10740x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x39, 0x00, 0xED, 0x01, 0x84, 0x08, 0xD1,
10750x0E, 0x40, 0x7F, 0x00, 0x61, 0x80, 0xB0, 0x0F, 0x10, 0x0E, 0x4D, 0x2F, 0x00,
10760xF1, 0x00, 0x84, 0x02, 0x10, 0x0E, 0x40, 0x6B, 0x04, 0xF5, 0x30, 0x84, 0x03,
10770x14, 0x07, 0x40, 0x04, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
10780x14, 0x18, 0x59, 0x00, 0xEF, 0x09, 0x9C, 0x05, 0xF1, 0x1A, 0xC0, 0x4B, 0x00,
10790xE7, 0x41, 0xFC, 0x07, 0x34, 0x16, 0xC0, 0x7B, 0x00, 0xE7, 0x77, 0x9C, 0x06,
10800x30, 0x1E, 0xC2, 0x7B, 0x00, 0x67, 0xE1, 0xDC, 0x06, 0x30, 0x16, 0x80, 0x45,
10810x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x15, 0x00,
10820xDF, 0x00, 0x7C, 0x00, 0xF2, 0x01, 0xC4, 0x27, 0x00, 0xDF, 0x00, 0x7C, 0x00,
10830xE0, 0x05, 0xC0, 0x33, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC4, 0x17,
10840x00, 0x5B, 0x00, 0x7C, 0x02, 0xF0, 0x05, 0xC8, 0x43, 0x20, 0x06, 0x00, 0x00,
10850x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x7F, 0x22, 0xFF, 0x11, 0xF8, 0x04,
10860xF0, 0x9F, 0xC0, 0x7F, 0x00, 0xAF, 0x01, 0xDC, 0x86, 0x30, 0x9F, 0xC8, 0x6B,
10870x00, 0xFB, 0x01, 0xCC, 0x07, 0xF0, 0x1B, 0xE4, 0x6F, 0x00, 0xB3, 0x09, 0xC4,
10880x07, 0x30, 0x16, 0xC8, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
10890x00, 0x15, 0x00, 0x39, 0x00, 0xED, 0x04, 0xBC, 0x40, 0xD8, 0x8A, 0x40, 0x2B,
10900x01, 0x2D, 0x00, 0x84, 0x22, 0x10, 0x8A, 0x42, 0x2B, 0x00, 0xE1, 0x08, 0x84,
10910x42, 0xD0, 0x02, 0x40, 0x2B, 0x01, 0xBB, 0x0C, 0xC4, 0x13, 0xB0, 0x0E, 0x40,
10920x54, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x19,
10930x30, 0xED, 0x40, 0xB4, 0x01, 0xD0, 0x0A, 0x48, 0x0B, 0x80, 0xED, 0x00, 0xB4,
10940x03, 0x94, 0x86, 0x44, 0x3F, 0x04, 0xE9, 0x00, 0x84, 0x03, 0xD0, 0x8A, 0x41,
10950x2B, 0x24, 0x21, 0x40, 0xD5, 0x00, 0x11, 0x07, 0x40, 0x22, 0x00, 0x04, 0x00,
10960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x83, 0x00, 0xCD, 0x09, 0x36,
10970x85, 0xD0, 0xA0, 0x40, 0xE3, 0x84, 0xCD, 0x0C, 0x74, 0x08, 0x90, 0x01, 0x40,
10980xD3, 0x00, 0xD1, 0x52, 0x04, 0x06, 0xD0, 0x00, 0x48, 0xD3, 0x80, 0x09, 0x03,
10990x14, 0x28, 0x90, 0xAC, 0x40, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
11000x00, 0x00, 0x1D, 0xA0, 0xE5, 0x2C, 0xFF, 0x0B, 0x7C, 0x2C, 0xF0, 0x30, 0xC0,
11010x67, 0x01, 0xDF, 0x02, 0x7C, 0x19, 0xB0, 0xD9, 0xC0, 0xA7, 0x02, 0xFB, 0x87,
11020x4F, 0x02, 0xE0, 0x2C, 0x00, 0x07, 0x02, 0xD3, 0x11, 0x5D, 0x0D, 0x31, 0x95,
11030xC0, 0x56, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08,
11040xA7, 0x00, 0xDE, 0x60, 0x5C, 0x00, 0xF0, 0x21, 0xC0, 0x27, 0x00, 0x1F, 0x02,
11050x40, 0x01, 0x70, 0x25, 0xC0, 0x27, 0x20, 0xDF, 0x80, 0x7C, 0xCA, 0xF0, 0x09,
11060xC9, 0x07, 0x00, 0xDF, 0x52, 0x68, 0x41, 0xF0, 0x05, 0xC0, 0xA7, 0x00, 0x0C,
11070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x09, 0x2F, 0x14, 0xFF, 0x00,
11080xFC, 0x01, 0xF8, 0x03, 0xC1, 0x0E, 0x00, 0xFF, 0x01, 0xCC, 0x43, 0x30, 0x8B,
11090xC0, 0x6C, 0x20, 0xFF, 0x00, 0xCD, 0x06, 0xF0, 0x8F, 0xC8, 0x3C, 0x00, 0x77,
11100x05, 0xFC, 0x07, 0x34, 0x03, 0xC0, 0x15, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
11110x00, 0x00, 0x00, 0x89, 0x20, 0x66, 0x01, 0xDD, 0x00, 0x74, 0x08, 0xD8, 0x31,
11120x40, 0x64, 0x00, 0x8D, 0x05, 0x44, 0x08, 0x50, 0x05, 0x40, 0x34, 0x00, 0xDE,
11130x00, 0x44, 0x62, 0xD0, 0x19, 0x44, 0x90, 0x00, 0x91, 0x04, 0x74, 0x4B, 0x30,
11140x00, 0x40, 0x14, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
11150xA0, 0x46, 0x00, 0xDD, 0x80, 0x74, 0x00, 0xD0, 0x19, 0x00, 0x46, 0x00, 0x1D,
11160x08, 0x44, 0x08, 0x10, 0x09, 0x41, 0x25, 0x02, 0xD9, 0x00, 0x64, 0x03, 0xD0,
11170x09, 0x40, 0x84, 0x30, 0x95, 0x00, 0x30, 0x20, 0x02, 0x45, 0x40, 0x05, 0x00,
11180x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0xCD,
11190x00, 0x34, 0x00, 0xD0, 0x08, 0x44, 0x40, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x50,
11200x00, 0x50, 0x20, 0x10, 0xC5, 0x00, 0x04, 0x01, 0xD0, 0x01, 0x10, 0x04, 0x88,
11210x41, 0x00, 0x34, 0x00, 0x11, 0x0C, 0x40, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00,
11220x00, 0x00, 0x00, 0x00, 0x01, 0x19, 0x06, 0x00, 0xFF, 0x00, 0x7C, 0x01, 0xD0,
11230x09, 0xC0, 0x06, 0x00, 0x5F, 0x00, 0x0C, 0x03, 0x30, 0x09, 0xC0, 0x24, 0x10,
11240xED, 0x00, 0x4C, 0x03, 0xF0, 0x09, 0xC0, 0x20, 0x20, 0x17, 0x00, 0x7C, 0x00,
11250x34, 0x01, 0xC0, 0x05, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11260x05, 0xB8, 0x2D, 0x00, 0xFF, 0x00, 0xFC, 0x01, 0xF0, 0x03, 0xC0, 0x0F, 0x00,
11270x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC4, 0x1F, 0x00, 0xFF, 0x00, 0xFC, 0x01,
11280xF1, 0x03, 0xE0, 0x1F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0x70, 0x0B, 0xD0, 0x17,
11290x24, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x2F, 0x04,
11300xFF, 0x01, 0xEC, 0x52, 0xD0, 0x1F, 0xC0, 0x3E, 0x21, 0x2F, 0x01, 0xFC, 0x13,
11310x30, 0x0D, 0xC0, 0x57, 0x00, 0x8B, 0x21, 0xCE, 0x23, 0xB0, 0x6F, 0xC0, 0xBC,
11320x09, 0x3F, 0x04, 0xCC, 0x93, 0x33, 0x03, 0xC2, 0x0F, 0x00, 0x0E, 0x00, 0x00,
11330x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x87, 0x10, 0xDD, 0x00, 0x74, 0x0E,
11340xD8, 0x1D, 0x40, 0x7F, 0x0A, 0x9D, 0x01, 0xF4, 0x2F, 0x10, 0x2F, 0x44, 0x57,
11350x10, 0x91, 0x00, 0x44, 0x33, 0x10, 0x2F, 0x40, 0xBC, 0x01, 0x5D, 0x09, 0xC4,
11360xDB, 0x10, 0x01, 0x40, 0x0F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11370x00, 0x13, 0xA0, 0x03, 0x05, 0xCD, 0x54, 0x34, 0x00, 0xD0, 0x0C, 0x40, 0x33,
11380x00, 0xCD, 0x01, 0x34, 0x03, 0x18, 0x2C, 0x40, 0x14, 0x00, 0xDD, 0x00, 0x15,
11390x13, 0xD0, 0x6C, 0x40, 0xB1, 0x08, 0x8D, 0x00, 0x54, 0x23, 0x10, 0x00, 0x40,
11400x4D, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x45,
11410x00, 0xDD, 0x04, 0x74, 0x84, 0xD1, 0x0D, 0x40, 0x37, 0x00, 0xDC, 0x00, 0x74,
11420x03, 0x10, 0x0D, 0x40, 0x17, 0x00, 0x95, 0x00, 0x64, 0x03, 0x50, 0x0D, 0x4A,
11430x35, 0x00, 0xDD, 0x00, 0x54, 0x03, 0x10, 0x11, 0x40, 0x0F, 0x20, 0x02, 0x00,
11440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x67, 0x00, 0xDF, 0x20, 0x6C,
11450x14, 0xD0, 0x0D, 0xC0, 0x36, 0x00, 0x5F, 0xE8, 0x7C, 0x03, 0x31, 0x0D, 0xC0,
11460x42, 0x00, 0x8B, 0x40, 0x4C, 0x03, 0xF0, 0x0D, 0x40, 0x35, 0x10, 0x4E, 0x52,
11470x1C, 0x03, 0x14, 0x19, 0xC0, 0x23, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
11480x00, 0x00, 0x0F, 0x80, 0x05, 0x00, 0xFF, 0x41, 0xFC, 0x02, 0xF2, 0x2F, 0xC1,
11490x3F, 0x0C, 0x7F, 0x01, 0xB0, 0x03, 0xF0, 0x0F, 0xC0, 0x4F, 0x02, 0xB8, 0x40,
11500xD8, 0x03, 0xB0, 0x0F, 0xC0, 0x3E, 0x00, 0xFF, 0x03, 0xEC, 0x23, 0xF4, 0x03,
11510x40, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08,
11520x65, 0x01, 0xD3, 0x00, 0x7C, 0x0C, 0xF0, 0x0D, 0xC8, 0x37, 0x00, 0x5B, 0x00,
11530x4C, 0x43, 0xF0, 0x8D, 0xC0, 0x97, 0x00, 0xDF, 0x08, 0x5C, 0x03, 0xF1, 0x0D,
11540xC0, 0x37, 0x00, 0x5F, 0x00, 0x5C, 0x43, 0xF0, 0x89, 0xC0, 0x2B, 0x20, 0x04,
11550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x04, 0x00, 0xD1, 0x0B,
11560x74, 0x00, 0xD0, 0x3D, 0x40, 0xBF, 0x24, 0x51, 0x0A, 0xC4, 0x1B, 0xD0, 0xBF,
11570x40, 0x17, 0x06, 0x9C, 0x00, 0xC4, 0x03, 0xD0, 0x0F, 0x04, 0x3C, 0x10, 0xDC,
11580x01, 0x40, 0x0B, 0x10, 0xB9, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
11590x00, 0x00, 0x00, 0x03, 0x20, 0xA0, 0x00, 0xC1, 0x01, 0x24, 0x02, 0xD0, 0x1C,
11600x40, 0x33, 0x00, 0x09, 0x0B, 0x34, 0x03, 0xD0, 0x1C, 0x60, 0x83, 0x08, 0x88,
11610x01, 0x54, 0x03, 0xD0, 0x0D, 0x40, 0x30, 0x00, 0x4D, 0x13, 0x10, 0x2F, 0x50,
11620x08, 0x40, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F,
11630x00, 0x78, 0x40, 0xE1, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x49, 0x7B, 0x00, 0xB5,
11640x09, 0xA4, 0x87, 0xD0, 0x5E, 0x40, 0x4B, 0x09, 0xAD, 0x25, 0x80, 0x07, 0xD0,
11650x1C, 0x40, 0x78, 0x00, 0xCD, 0x21, 0xC0, 0x27, 0x00, 0x12, 0x40, 0x3F, 0x00,
11660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x10, 0x02, 0xC3,
11670x18, 0x3C, 0x23, 0xF8, 0x0C, 0xC0, 0x33, 0x01, 0x8B, 0x08, 0x2C, 0x03, 0xF0,
11680x5C, 0x80, 0x43, 0x01, 0xCF, 0x05, 0x1C, 0x03, 0xF0, 0x4C, 0xC0, 0x31, 0x00,
11690x4F, 0x10, 0x5C, 0x37, 0x70, 0x0C, 0xC0, 0x4B, 0x60, 0x00, 0x00, 0x00, 0x00,
11700x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x3D, 0x00, 0xFF, 0x08, 0xFC, 0x23, 0xF0,
11710x0F, 0xC8, 0x3B, 0x00, 0xFB, 0x68, 0xDC, 0x23, 0xF0, 0x2F, 0xC1, 0x0F, 0x20,
11720x9F, 0x00, 0x7C, 0x03, 0xF0, 0x0F, 0xC0, 0x3C, 0x00, 0xFF, 0x08, 0x7C, 0xAB,
11730x52, 0x0F, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11740x10, 0xA8, 0x37, 0x00, 0xDF, 0x00, 0x78, 0x01, 0xF0, 0x0D, 0xC0, 0x36, 0x04,
11750x1F, 0x00, 0x4C, 0x63, 0xF0, 0x4D, 0xC8, 0x06, 0x08, 0x93, 0x00, 0x7C, 0x03,
11760xF1, 0xFD, 0xC0, 0xB6, 0x01, 0x5F, 0x01, 0x6C, 0x0A, 0x30, 0x0D, 0xC0, 0x40,
11770x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x90, 0x39, 0x00,
11780xED, 0x80, 0xB4, 0x03, 0xC1, 0x0E, 0xC0, 0x39, 0x01, 0xED, 0x00, 0x84, 0x03,
11790xD1, 0x4E, 0x42, 0x0A, 0x00, 0xA5, 0x00, 0xB4, 0x13, 0xD1, 0x0E, 0x41, 0x38,
11800x0D, 0xED, 0x00, 0x84, 0x02, 0x12, 0x06, 0xC0, 0x4E, 0x00, 0x06, 0x00, 0x00,
11810x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x28, 0xED, 0x21, 0xB0, 0x07,
11820xD9, 0x1E, 0x40, 0x7B, 0x03, 0xAD, 0x01, 0xA4, 0x17, 0xD0, 0x5E, 0x40, 0x4A,
11830x08, 0xE1, 0x21, 0xB4, 0x27, 0xD0, 0x1C, 0x40, 0x7A, 0x02, 0x7D, 0x01, 0xA4,
11840x06, 0x10, 0x1C, 0x40, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11850x00, 0x16, 0x00, 0x37, 0x04, 0x9D, 0x41, 0x34, 0x47, 0xD0, 0x08, 0x40, 0x31,
11860x00, 0xCD, 0x08, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x62, 0x80, 0x85, 0x00, 0x34,
11870x03, 0xD0, 0x0C, 0x40, 0x30, 0x00, 0xCD, 0x03, 0x04, 0x02, 0x10, 0x2D, 0x40,
11880x5A, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x28, 0x9F,
11890x00, 0x5D, 0x01, 0xFE, 0x1D, 0xF0, 0x15, 0xE1, 0x16, 0x00, 0x6F, 0x03, 0x6F,
11900x01, 0xF0, 0x05, 0xC0, 0x5A, 0x04, 0x53, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0,
11910x16, 0x00, 0x7F, 0x10, 0x6C, 0x45, 0x30, 0x47, 0xC0, 0x5C, 0x00, 0x04, 0x00,
11920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x02, 0x05, 0x00, 0x1F, 0x08, 0x7E,
11930x00, 0xF0, 0x01, 0xA0, 0x07, 0x00, 0x1F, 0x04, 0x5E, 0x00, 0xF0, 0x20, 0x08,
11940x07, 0x01, 0x1F, 0x80, 0x7C, 0x00, 0xD0, 0x01, 0xC0, 0x03, 0x20, 0x1D, 0x24,
11950x7C, 0x00, 0xF0, 0x21, 0xD8, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
11960x00, 0x00, 0x10, 0x08, 0x65, 0x00, 0x93, 0xC1, 0x2C, 0x82, 0xE1, 0x19, 0xC0,
11970x25, 0x09, 0x9F, 0x00, 0x4C, 0x92, 0xD0, 0x19, 0xC0, 0x64, 0x10, 0x93, 0x08,
11980x3C, 0x02, 0x40, 0x09, 0xC4, 0x27, 0x00, 0x93, 0x80, 0x7C, 0x02, 0x75, 0x09,
11990xC1, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20,
12000x66, 0x00, 0x91, 0x81, 0x4C, 0x02, 0x10, 0x98, 0x00, 0xA5, 0x00, 0x9D, 0x18,
12010x45, 0x0A, 0xD0, 0xA9, 0x50, 0x24, 0x03, 0x95, 0x00, 0x74, 0x02, 0x13, 0x09,
12020x44, 0x27, 0x00, 0x91, 0x1B, 0x34, 0x06, 0x12, 0x69, 0x50, 0x04, 0x00, 0x00,
12030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x34, 0x82, 0x99, 0x08,
12040x64, 0x06, 0x10, 0x09, 0x00, 0xA4, 0x00, 0x99, 0x00, 0x54, 0x42, 0xD2, 0x09,
12050x45, 0x34, 0x00, 0x91, 0x00, 0x74, 0x02, 0x50, 0x09, 0x40, 0x27, 0x40, 0x91,
12060x00, 0x74, 0x12, 0x51, 0x0D, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
12070x00, 0x00, 0x00, 0x10, 0x22, 0x30, 0x15, 0xC1, 0x00, 0x04, 0x52, 0x12, 0x19,
12080x42, 0x21, 0x80, 0x8D, 0x40, 0x06, 0x82, 0xD0, 0x08, 0x40, 0x24, 0x00, 0x85,
12090x00, 0x34, 0x22, 0x50, 0x88, 0x40, 0x23, 0x02, 0x81, 0x00, 0x70, 0xD2, 0x10,
12100x48, 0x41, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
12110x38, 0x07, 0x01, 0x1B, 0x00, 0x6C, 0x10, 0x70, 0x01, 0xC0, 0x05, 0x05, 0x1B,
12120x40, 0x48, 0xD0, 0xF0, 0xE1, 0xC1, 0x04, 0x00, 0x53, 0x0A, 0x7C, 0x58, 0x71,
12130x61, 0xC1, 0x87, 0x05, 0x13, 0x14, 0x38, 0x11, 0x70, 0x41, 0xC0, 0x74, 0xE0,
12140x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x2D, 0x45, 0xBF,
12150x14, 0xDC, 0x02, 0xB4, 0x0B, 0xC0, 0x27, 0x00, 0xAC, 0x00, 0x7C, 0x02, 0xF0,
12160x19, 0xC0, 0x2B, 0x08, 0xBF, 0x01, 0x7C, 0x12, 0xB1, 0x49, 0xC0, 0x27, 0x11,
12170xAF, 0x00, 0xFC, 0x52, 0xF0, 0x4B, 0xC1, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00,
12180x00, 0x00, 0x00, 0x00, 0x1D, 0xA0, 0xBF, 0x00, 0xB3, 0x00, 0xFC, 0x52, 0xF0,
12190x0B, 0xC0, 0x2D, 0x05, 0xB3, 0x00, 0xCC, 0x02, 0xF0, 0x0B, 0xC0, 0x2C, 0x00,
12200xBF, 0x80, 0x6C, 0x02, 0x10, 0x09, 0xC0, 0x24, 0x00, 0xBF, 0x00, 0xCC, 0x02,
12210x32, 0x0B, 0xD0, 0x74, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
12220x18, 0x00, 0x87, 0x00, 0x1B, 0xA4, 0x74, 0x08, 0xD0, 0x01, 0x40, 0x84, 0x48,
12230x11, 0x20, 0x44, 0x00, 0xD2, 0xA1, 0x40, 0x05, 0x00, 0x1D, 0x00, 0x40, 0x90,
12240x10, 0x41, 0x40, 0x04, 0x01, 0x1D, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x60,
12250x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0, 0xA1, 0x21,
12260x81, 0x10, 0x30, 0x02, 0xD0, 0x08, 0x40, 0x21, 0x00, 0xD5, 0x00, 0x04, 0x0B,
12270xD0, 0x0D, 0x40, 0x20, 0x00, 0x8D, 0x80, 0x30, 0x4A, 0x11, 0x28, 0x41, 0xA2,
12280x04, 0x8D, 0x00, 0x05, 0x82, 0x14, 0x08, 0x40, 0x49, 0x00, 0x04, 0x00, 0x00,
12290x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0x99, 0x04, 0x74, 0x02,
12300xD0, 0x49, 0x40, 0x26, 0x08, 0x95, 0x00, 0x44, 0x02, 0xC0, 0x09, 0x40, 0x25,
12310x0D, 0x9D, 0x80, 0x14, 0x02, 0x10, 0x08, 0x46, 0x26, 0x00, 0x9D, 0x10, 0x44,
12320x02, 0x10, 0x0D, 0x40, 0x60, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
12330x00, 0x05, 0x20, 0xE5, 0x06, 0x93, 0x40, 0x78, 0x1A, 0xD1, 0x09, 0xC0, 0x25,
12340x00, 0x97, 0x0F, 0x45, 0x02, 0xF0, 0x09, 0xC0, 0xA4, 0x00, 0x8F, 0x81, 0x7E,
12350x02, 0x34, 0x09, 0xD0, 0x26, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0x30, 0x49, 0xC0,
12360x15, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x24,
12370x00, 0x9F, 0xC0, 0x7C, 0x12, 0xF0, 0x09, 0xC8, 0x25, 0x00, 0x9B, 0x00, 0x7C,
12380x02, 0xF0, 0x09, 0xC0, 0x67, 0x00, 0x9F, 0x05, 0x6C, 0x02, 0xF0, 0x09, 0xC0,
12390x25, 0x00, 0x9F, 0x40, 0x7C, 0x02, 0xF0, 0x49, 0xC1, 0x5B, 0x20, 0x04, 0x00,
12400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x10, 0x78,
12410x08, 0xF0, 0x01, 0xC1, 0x01, 0x04, 0x1F, 0x04, 0x7C, 0x90, 0xB0, 0x01, 0xC0,
12420x84, 0x00, 0x1F, 0x10, 0x4C, 0x00, 0xF1, 0x01, 0xC0, 0x07, 0x10, 0x07, 0x10,
12430x3C, 0x04, 0x30, 0x21, 0xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
12440x00, 0x00, 0x10, 0x20, 0xDC, 0x01, 0x7D, 0x07, 0x74, 0x01, 0x10, 0x26, 0x40,
12450x1F, 0x19, 0x6D, 0x00, 0xF4, 0x09, 0x10, 0x07, 0x40, 0xDC, 0x02, 0x7D, 0x03,
12460x44, 0x01, 0xD0, 0x05, 0x40, 0x17, 0x00, 0x71, 0x45, 0xF4, 0x41, 0x11, 0x27,
12470x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0,
12480xF6, 0x01, 0xCD, 0x03, 0x34, 0x22, 0x58, 0x2C, 0x48, 0x73, 0x00, 0xCC, 0x00,
12490x34, 0x03, 0xD0, 0x0D, 0x40, 0x30, 0x00, 0xCD, 0x0A, 0x32, 0x03, 0xD0, 0x0C,
12500x40, 0x33, 0x80, 0xC5, 0x00, 0x34, 0x04, 0x90, 0xAD, 0x40, 0x40, 0x00, 0x0A,
12510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x00, 0x6D, 0x00,
12520xB4, 0x07, 0x5A, 0x2A, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xB0, 0x07, 0x52, 0x0A,
12530x40, 0x98, 0x00, 0xED, 0x00, 0x84, 0x13, 0xD0, 0x4E, 0x40, 0x7B, 0x81, 0xE1,
12540x00, 0xB4, 0x02, 0x90, 0x04, 0x44, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
12550x00, 0x00, 0x00, 0x14, 0x18, 0x79, 0x08, 0xEF, 0x01, 0xBC, 0x87, 0x70, 0x1E,
12560xC0, 0x5B, 0x00, 0xEE, 0x01, 0xBC, 0x06, 0xF0, 0x1F, 0xC0, 0x78, 0x00, 0xBF,
12570x01, 0x9C, 0x07, 0xF0, 0xBE, 0xC4, 0x7F, 0x21, 0xE7, 0x01, 0xFC, 0x04, 0xB0,
12580x1E, 0xD0, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
12590xB2, 0x35, 0x00, 0x5F, 0x60, 0x3C, 0x03, 0x38, 0x01, 0xC8, 0x07, 0x00, 0xDF,
12600x00, 0x3C, 0x00, 0xB0, 0x05, 0xC0, 0x37, 0x00, 0x9F, 0x20, 0x7C, 0x2B, 0xF0,
12610x6D, 0xC8, 0xB7, 0x20, 0x9D, 0x00, 0x7C, 0x82, 0x71, 0x05, 0xC0, 0x43, 0x60,
12620x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x7D, 0x02, 0xFF,
12630x81, 0xCC, 0x17, 0x71, 0x17, 0xC0, 0x6F, 0x02, 0xFF, 0x81, 0xFC, 0x85, 0xF0,
12640x9F, 0x40, 0x78, 0x02, 0xB3, 0x29, 0xFE, 0x2F, 0xB0, 0x1F, 0xE0, 0xFF, 0x04,
12650x73, 0x09, 0xFC, 0x27, 0xF1, 0x5F, 0xC0, 0x1B, 0x00, 0x04, 0x00, 0x00, 0x00,
12660x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x19, 0x26, 0x6D, 0x08, 0xAC, 0x83, 0xD0,
12670x22, 0x40, 0x8B, 0x00, 0x2D, 0x00, 0xB4, 0x08, 0xD0, 0x1A, 0x40, 0x98, 0x00,
12680xA1, 0x01, 0xB4, 0x03, 0xD0, 0x0E, 0xC0, 0x39, 0x01, 0xEB, 0x00, 0x34, 0x07,
12690xD0, 0x0A, 0x40, 0x57, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
12700x48, 0x08, 0x39, 0x18, 0xFD, 0x00, 0xA4, 0x13, 0xD0, 0x02, 0x40, 0x0B, 0x00,
12710xED, 0x10, 0xB4, 0x20, 0xD0, 0x0E, 0x40, 0x2B, 0x40, 0x21, 0x00, 0xB4, 0x83,
12720x91, 0x0E, 0x40, 0x39, 0x10, 0x61, 0x10, 0xB4, 0x02, 0xD0, 0x4E, 0x40, 0x23,
12730x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x21, 0x00,
12740x1D, 0x01, 0x26, 0x07, 0xD0, 0x00, 0x40, 0x03, 0x00, 0x0D, 0x03, 0x34, 0x80,
12750xD0, 0x00, 0x40, 0xA3, 0x00, 0x01, 0x01, 0x34, 0x03, 0xD0, 0x0C, 0x48, 0x31,
12760x80, 0x85, 0x00, 0x34, 0x81, 0xD0, 0x29, 0x40, 0x0B, 0x20, 0x04, 0x00, 0x00,
12770x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x04, 0x00, 0x9F, 0x01, 0x64, 0x0B,
12780x71, 0x09, 0xC0, 0x27, 0x90, 0x1F, 0x03, 0x7C, 0x02, 0xF0, 0x01, 0xC0, 0x27,
12790x20, 0xD3, 0x11, 0xFC, 0x03, 0xB0, 0x0F, 0xC0, 0x3D, 0x00, 0x81, 0x01, 0x7C,
12800x01, 0xD0, 0x29, 0xC0, 0x57, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
12810x00, 0x0D, 0x00, 0x87, 0x01, 0x9F, 0x08, 0x7C, 0x23, 0xF0, 0x19, 0xC0, 0x27,
12820x00, 0x1F, 0x32, 0x3E, 0x0A, 0xF0, 0x01, 0x40, 0x14, 0xA1, 0x9F, 0x00, 0x70,
12830x03, 0xD0, 0x0D, 0xC8, 0x35, 0x40, 0x9B, 0x10, 0x74, 0x01, 0xE0, 0x21, 0xC0,
12840x37, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x08, 0x0B,
12850x00, 0xBB, 0x00, 0x8C, 0x43, 0xB0, 0x0B, 0xC4, 0x2B, 0x00, 0xF3, 0x00, 0xFC,
12860x02, 0x32, 0x01, 0xC4, 0x2F, 0x01, 0xBF, 0x40, 0xEC, 0x03, 0xF0, 0x0F, 0xC4,
12870x3B, 0x00, 0x37, 0x05, 0x94, 0x81, 0x33, 0x03, 0x81, 0x04, 0x28, 0x0C, 0x00,
12880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xC6, 0x21, 0x91, 0x07, 0x44,
12890x83, 0xB0, 0x31, 0x40, 0xE7, 0x00, 0xD1, 0x06, 0x74, 0x04, 0x10, 0x31, 0x48,
12900x77, 0x10, 0x9C, 0x01, 0x74, 0x03, 0x71, 0x0D, 0x40, 0x37, 0x00, 0x11, 0x32,
12910x44, 0x0B, 0x10, 0x31, 0x40, 0x85, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
12920x00, 0x00, 0x01, 0xA0, 0x64, 0x00, 0x19, 0x01, 0x54, 0x07, 0x90, 0x19, 0x00,
12930x66, 0x00, 0x11, 0x01, 0x74, 0x06, 0x10, 0x13, 0x41, 0x07, 0x00, 0xB9, 0x01,
12940x74, 0x03, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0x55, 0x00, 0x54, 0x47, 0x50, 0x19,
12950x40, 0x05, 0x08, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
12960x00, 0x00, 0x01, 0x20, 0x14, 0x03, 0x90, 0x08, 0x62, 0x03, 0x00, 0x00, 0x00,
12970x34, 0x02, 0x14, 0x40, 0x40, 0x13, 0x00, 0x8D, 0x04, 0x34, 0x03, 0x50, 0x0C,
12980x40, 0x33, 0x08, 0xC1, 0x00, 0x14, 0x20, 0x10, 0x08, 0x42, 0x41, 0x00, 0x00,
12990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x26, 0x08, 0x9B, 0x00,
13000x5E, 0x03, 0xB1, 0x09, 0xC0, 0x27, 0x40, 0xD1, 0x00, 0x7C, 0x02, 0x30, 0x41,
13010xC0, 0x07, 0x10, 0x1F, 0x1C, 0xEC, 0x03, 0xF1, 0x0F, 0xE4, 0x3B, 0x00, 0x57,
13020x00, 0x5C, 0x12, 0x34, 0x01, 0xC0, 0x05, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00,
13030x00, 0x00, 0x00, 0x45, 0xA8, 0x2F, 0x00, 0xAF, 0x00, 0xEC, 0x03, 0x70, 0x03,
13040xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0xC1, 0xC1, 0x0F, 0x04, 0x1F,
13050x04, 0xFC, 0x03, 0x72, 0x0F, 0xC4, 0x3F, 0x00, 0x3F, 0x00, 0x6C, 0x30, 0xF0,
13060x03, 0xC4, 0x17, 0x62, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
13070xA0, 0x2D, 0x11, 0xBF, 0x00, 0xFC, 0x13, 0xB2, 0x93, 0xC8, 0x3D, 0x11, 0x13,
13080x08, 0xDC, 0x22, 0x32, 0x4F, 0xC8, 0x0F, 0x20, 0x7B, 0x41, 0xEC, 0x03, 0xF0,
13090x17, 0xC0, 0x3C, 0x00, 0xBF, 0x01, 0xEC, 0x00, 0x30, 0x03, 0xC4, 0x0C, 0x00,
13100x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x47, 0x02, 0x9C,
13110x8C, 0xF4, 0x27, 0x04, 0x09, 0x4C, 0x7D, 0x22, 0x1D, 0x04, 0x74, 0x12, 0x50,
13120xAF, 0x42, 0x07, 0x00, 0x99, 0x81, 0x44, 0x0B, 0xD0, 0x09, 0x40, 0x3C, 0x10,
13130x9D, 0x40, 0x44, 0x00, 0x10, 0x11, 0x40, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
13140x00, 0x00, 0x00, 0x00, 0x13, 0x20, 0x21, 0x08, 0x0D, 0x50, 0x34, 0x03, 0x18,
13150x51, 0x44, 0x31, 0x00, 0x0D, 0x20, 0x74, 0x02, 0x10, 0x0C, 0x64, 0x01, 0x00,
13160x89, 0x00, 0x24, 0x0B, 0xD0, 0x01, 0x50, 0x30, 0x00, 0x9D, 0x00, 0x24, 0x00,
13170x10, 0x00, 0x40, 0x4C, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13180x03, 0xA8, 0x47, 0x80, 0x1D, 0x51, 0x74, 0x03, 0x10, 0x11, 0x40, 0x35, 0x00,
13190x3D, 0x02, 0xF4, 0x02, 0x50, 0x0D, 0x00, 0x4F, 0x08, 0x89, 0x08, 0x44, 0x03,
13200xD2, 0x19, 0x00, 0x3C, 0x00, 0x9D, 0x01, 0x44, 0x04, 0x10, 0x11, 0x42, 0x0C,
13210xA0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x67, 0x00,
13220x9F, 0x03, 0x7C, 0x03, 0x30, 0x18, 0xCC, 0x35, 0x18, 0x1B, 0x01, 0x5E, 0x06,
13230x20, 0x0D, 0xC0, 0xC7, 0x00, 0xDB, 0x00, 0x6C, 0x03, 0xF0, 0x1C, 0xC0, 0x34,
13240x20, 0xCF, 0x01, 0x6C, 0x84, 0x30, 0x11, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00,
13250x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x2D, 0x00, 0xBF, 0x80, 0xBC, 0x03,
13260xF0, 0x0B, 0xC0, 0x3E, 0x80, 0x1D, 0x03, 0xFC, 0x26, 0xF0, 0x0F, 0xC0, 0x2F,
13270x00, 0xBF, 0x01, 0xFC, 0x03, 0xF2, 0x0B, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC,
13280x00, 0xF4, 0x09, 0xD0, 0x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13290x00, 0x02, 0x08, 0x25, 0x18, 0x93, 0x01, 0x7C, 0xA3, 0xF0, 0x01, 0xC0, 0x77,
13300x00, 0x1B, 0x02, 0x4C, 0x42, 0xF0, 0x0D, 0xC0, 0x87, 0x00, 0x9F, 0x00, 0x7C,
13310x03, 0x30, 0x09, 0x80, 0x37, 0x00, 0x5F, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC1,
13320x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xA0, 0x64,
13330x04, 0x91, 0x02, 0xF4, 0x2F, 0xD0, 0x01, 0x40, 0xBF, 0x00, 0x11, 0x80, 0x45,
13340x47, 0xD1, 0x0F, 0x44, 0x27, 0x00, 0x9D, 0x00, 0xF4, 0x03, 0x10, 0x09, 0x40,
13350x3F, 0x00, 0x5D, 0x00, 0x34, 0x44, 0x10, 0x38, 0x58, 0x6C, 0x00, 0x02, 0x00,
13360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x20, 0x00, 0x60, 0x08, 0x30, 0x36,
13370x0F, 0xD8, 0x00, 0x40, 0x33, 0x01, 0x09, 0x00, 0x50, 0x0E, 0xD0, 0x9C, 0x22,
13380x43, 0x02, 0x4C, 0x80, 0x34, 0x03, 0x10, 0x00, 0x40, 0x33, 0x00, 0xCD, 0x06,
13390x34, 0x00, 0x14, 0xA0, 0x40, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13400x00, 0x00, 0x0F, 0x00, 0x58, 0x02, 0xE9, 0x81, 0xB4, 0x07, 0xD0, 0x1A, 0x40,
13410x7B, 0x00, 0x21, 0x09, 0x84, 0x06, 0xD1, 0x9E, 0x40, 0x5B, 0x00, 0xAD, 0x01,
13420xB4, 0x07, 0x10, 0x1A, 0x40, 0x7B, 0x00, 0xED, 0x41, 0xB4, 0x07, 0x18, 0x9A,
13430x40, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x1A,
13440x30, 0x00, 0x4B, 0x08, 0x3C, 0x03, 0xF0, 0x80, 0xC0, 0x33, 0x00, 0x0B, 0x05,
13450x0C, 0x02, 0xF0, 0x0C, 0xC0, 0x43, 0x01, 0xCF, 0x00, 0x7C, 0x23, 0x34, 0x00,
13460x40, 0x33, 0x00, 0xCF, 0x00, 0x3C, 0x01, 0x30, 0x04, 0xC8, 0x48, 0x68, 0x00,
13470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0x19, 0x00, 0xF0, 0x60,
13480xFC, 0x63, 0xF0, 0x0F, 0xC0, 0x3B, 0x02, 0xFF, 0x08, 0xF0, 0x23, 0xF0, 0x0F,
13490xC4, 0x1F, 0x02, 0xBF, 0x00, 0xFC, 0x83, 0xF0, 0x0B, 0xC0, 0xBF, 0x10, 0xFF,
13500x00, 0xBC, 0x03, 0xF1, 0x0D, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00,
13510x00, 0x00, 0x00, 0x10, 0xA0, 0x17, 0x10, 0x53, 0x00, 0x74, 0x5F, 0x34, 0x09,
13520xC0, 0x37, 0x00, 0x1F, 0x00, 0x4C, 0x02, 0x31, 0x9D, 0x80, 0x74, 0x00, 0xD3,
13530x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0xB7, 0x82, 0xCF, 0x00, 0x2C, 0x02, 0x30,
13540x15, 0xD0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
13550x8A, 0x39, 0x00, 0xE1, 0x00, 0x34, 0x13, 0x10, 0x0A, 0x40, 0xBB, 0x03, 0x8D,
13560x80, 0x84, 0x02, 0x12, 0x8C, 0x42, 0x3C, 0x08, 0xA1, 0x00, 0xB4, 0x13, 0xD0,
13570x0A, 0x40, 0x3A, 0x80, 0xED, 0x00, 0x84, 0x03, 0x10, 0x0E, 0x40, 0x4C, 0x00,
13580x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x40, 0x69,
13590x01, 0xB4, 0x17, 0xD0, 0x1E, 0x40, 0x7B, 0x00, 0x6D, 0x11, 0x94, 0x46, 0x90,
13600x5E, 0x40, 0x68, 0x00, 0xE1, 0x01, 0xB4, 0x37, 0x90, 0x1E, 0x40, 0x7B, 0x00,
13610x7D, 0x61, 0xA4, 0x07, 0x14, 0x14, 0x40, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00,
13620x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0xB3, 0x00, 0xC9, 0x01, 0x34, 0x03, 0x50,
13630x8C, 0x40, 0x33, 0x00, 0xCD, 0xC3, 0x54, 0x07, 0x90, 0x0C, 0x50, 0x70, 0x01,
13640x81, 0x00, 0x34, 0x03, 0xD0, 0x48, 0x40, 0x36, 0x00, 0x4D, 0x09, 0x04, 0x03,
13650x10, 0x1C, 0x41, 0x58, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13660x17, 0xA0, 0x1F, 0x20, 0x7B, 0x85, 0x7C, 0x01, 0x78, 0x17, 0xC6, 0x17, 0x08,
13670x7F, 0x03, 0x5C, 0x05, 0xB6, 0x05, 0xC0, 0x5C, 0x01, 0x73, 0x02, 0x7C, 0x01,
13680xB0, 0x37, 0xC1, 0x17, 0x00, 0x7F, 0x09, 0xAC, 0x01, 0x30, 0x77, 0xC0, 0x5C,
13690x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x05, 0x24,
13700x17, 0x46, 0x7C, 0x00, 0xA0, 0x01, 0xE0, 0x83, 0x20, 0x1E, 0xA0, 0x6C, 0x00,
13710x70, 0x01, 0xC0, 0x87, 0x00, 0x1F, 0x04, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x06,
13720x00, 0x1F, 0x02, 0x7C, 0x04, 0xF0, 0x01, 0xC0, 0x4B, 0x20, 0x04, 0x00, 0x00,
13730x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0xA1, 0x00, 0x93, 0x08, 0x7C, 0x86,
13740xF0, 0x09, 0xC1, 0x25, 0x08, 0x93, 0x10, 0x4C, 0x02, 0x30, 0x09, 0xC0, 0x67,
13750x00, 0x9F, 0x00, 0x4C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x48,
13760x16, 0x30, 0x49, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
13770x00, 0x01, 0x20, 0x26, 0x00, 0x95, 0x03, 0x74, 0x66, 0xD0, 0x09, 0x40, 0x27,
13780x20, 0x91, 0x00, 0x44, 0x0A, 0x10, 0x39, 0x44, 0xA7, 0x02, 0x8D, 0x20, 0x44,
13790x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x85, 0x40, 0x44, 0x42, 0x10, 0x49, 0x40,
13800x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x34,
13810x00, 0x91, 0x82, 0x74, 0x82, 0xD0, 0x09, 0x40, 0x67, 0x00, 0x81, 0x00, 0x54,
13820x0A, 0x10, 0x49, 0x49, 0xB7, 0x00, 0x9D, 0x00, 0x44, 0x02, 0xD0, 0x09, 0x40,
13830x27, 0x00, 0x91, 0x00, 0x55, 0x03, 0x10, 0x0D, 0x40, 0x63, 0x00, 0x02, 0x00,
13840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0xA5, 0x85, 0x14, 0x34,
13850x82, 0xD0, 0x88, 0x40, 0x33, 0x60, 0x81, 0x4C, 0x04, 0x32, 0x18, 0x08, 0x40,
13860x23, 0x01, 0x9D, 0x02, 0x04, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x01, 0x85, 0x00,
13870x14, 0xD2, 0x10, 0x48, 0x41, 0x43, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
13880x00, 0x00, 0x1D, 0xB0, 0x07, 0x01, 0x13, 0x24, 0x7C, 0x50, 0xF0, 0x21, 0xC4,
13890x05, 0x05, 0x13, 0x03, 0x09, 0x0C, 0x30, 0xE1, 0xC1, 0xC7, 0x02, 0x1F, 0x00,
13900x4D, 0x78, 0xF0, 0xA1, 0xC8, 0xC7, 0x0A, 0x53, 0x00, 0x5C, 0x10, 0x32, 0x41,
13910xC0, 0x77, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8,
13920x2B, 0x00, 0xBF, 0x14, 0x7C, 0x02, 0xF0, 0x4B, 0xC0, 0x27, 0x00, 0xBF, 0x0C,
13930xFC, 0x32, 0xF4, 0x19, 0xC2, 0x6F, 0x02, 0xBD, 0x01, 0x7C, 0x06, 0xF0, 0x1B,
13940xC0, 0x67, 0x02, 0xFF, 0x14, 0xE4, 0x52, 0xF4, 0x0B, 0xC0, 0x77, 0x40, 0x0E,
13950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x7F, 0x04, 0xBF, 0x02,
13960xFC, 0x02, 0xF0, 0x29, 0xC0, 0x2D, 0x20, 0x9F, 0x00, 0xFC, 0x0A, 0x30, 0x4B,
13970xC0, 0x2C, 0x00, 0x93, 0x02, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0x24, 0x00, 0xB3,
13980x00, 0xFC, 0x0A, 0x30, 0x0B, 0xC0, 0x74, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
13990x00, 0x00, 0x00, 0x18, 0x08, 0x17, 0x00, 0x1D, 0x02, 0x74, 0x28, 0xD0, 0x00,
14000x48, 0x87, 0x02, 0x1D, 0x04, 0x5C, 0x10, 0x14, 0xA1, 0x50, 0x04, 0x00, 0x15,
14010x01, 0x74, 0x28, 0x10, 0x01, 0x40, 0x05, 0x00, 0x1B, 0x00, 0x74, 0x10, 0x10,
14020x01, 0xC0, 0x62, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
14030x00, 0x21, 0x20, 0x8D, 0x86, 0x34, 0x02, 0xC0, 0x08, 0x40, 0x23, 0x00, 0x8D,
14040x10, 0x30, 0x12, 0x18, 0x08, 0x40, 0x24, 0x00, 0x81, 0x01, 0x34, 0x02, 0x14,
14050x08, 0x40, 0x20, 0x00, 0x81, 0x00, 0x34, 0x13, 0x10, 0x08, 0x44, 0x48, 0x00,
14060x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0xDD,
14070x0A, 0x74, 0x02, 0xC0, 0x09, 0x40, 0x37, 0x00, 0x9D, 0x02, 0x14, 0x22, 0x10,
14080x09, 0x40, 0x24, 0x00, 0x95, 0x01, 0x34, 0x02, 0x10, 0x49, 0x44, 0x25, 0x00,
14090x99, 0x00, 0x34, 0x06, 0x14, 0x49, 0x40, 0x62, 0x20, 0x00, 0x00, 0x00, 0x00,
14100x00, 0x00, 0x00, 0x00, 0x05, 0x0A, 0x25, 0x10, 0x9F, 0x00, 0x7C, 0x02, 0xE0,
14110x29, 0xC1, 0x27, 0x00, 0x9F, 0x02, 0x7C, 0x02, 0x30, 0x08, 0xC6, 0x64, 0x02,
14120xB3, 0x00, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0x24, 0x00, 0x93, 0x02, 0x7C, 0x06,
14130x30, 0x09, 0xC0, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14140x16, 0x00, 0xA5, 0x20, 0x9F, 0x21, 0x7C, 0x02, 0xF0, 0x39, 0xC0, 0x27, 0x04,
14150x9F, 0x04, 0x7C, 0x02, 0xF0, 0x09, 0x40, 0x67, 0x00, 0x9F, 0x00, 0x7C, 0x02,
14160xF2, 0x19, 0xC0, 0x23, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF2, 0x08, 0xC0, 0x5B,
14170x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00,
14180x1F, 0x04, 0x6C, 0x00, 0x70, 0x21, 0xC0, 0x04, 0x02, 0x1F, 0x02, 0x7C, 0x00,
14190x31, 0x01, 0xC0, 0x04, 0x00, 0x13, 0x40, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x07,
14200x08, 0x13, 0x0A, 0x7C, 0x04, 0x30, 0xC1, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00,
14210x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0xDC, 0x0E, 0x7D, 0x06, 0xF4, 0x41,
14220x10, 0x05, 0x80, 0x5E, 0x00, 0x5D, 0x60, 0xF4, 0x6D, 0x10, 0x37, 0x40, 0x1C,
14230x00, 0x51, 0x00, 0x6C, 0x01, 0xD0, 0x05, 0x40, 0x17, 0x00, 0x75, 0x40, 0xF4,
14240x01, 0x10, 0x17, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14250x00, 0x10, 0xA0, 0xE2, 0x00, 0xCD, 0x41, 0x24, 0x17, 0x80, 0x0C, 0x58, 0xF0,
14260x20, 0xCD, 0x00, 0x34, 0x0F, 0x90, 0x2C, 0x41, 0x74, 0x04, 0xC1, 0x00, 0x04,
14270x03, 0xD1, 0x0D, 0x40, 0x33, 0x00, 0x81, 0x10, 0x34, 0x03, 0x10, 0x2C, 0x40,
14280x43, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x88, 0x29,
14290x80, 0xED, 0x80, 0xB4, 0x07, 0x94, 0xDE, 0x40, 0x28, 0x20, 0xEC, 0x08, 0x34,
14300x03, 0x90, 0x2C, 0x50, 0x20, 0x04, 0xF1, 0x45, 0xA4, 0x23, 0xD0, 0x0E, 0x40,
14310x3B, 0x00, 0x25, 0x00, 0x34, 0x03, 0x12, 0x0A, 0x40, 0x13, 0x00, 0x02, 0x00,
14320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x79, 0x00, 0xEF, 0x01, 0xAC,
14330x05, 0xB1, 0x5E, 0x41, 0x78, 0x00, 0xEF, 0x05, 0xBC, 0x05, 0xB0, 0x1A, 0xC0,
14340x78, 0x00, 0xF3, 0x43, 0x8C, 0x57, 0xF0, 0x1E, 0xC3, 0x73, 0x00, 0xA3, 0x01,
14350xBC, 0x07, 0x34, 0x12, 0xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14360x00, 0x00, 0x10, 0xA8, 0x35, 0x00, 0x5F, 0x40, 0x3C, 0x00, 0x31, 0x4D, 0xC8,
14370x27, 0x08, 0xDF, 0x10, 0x7C, 0x01, 0x70, 0x09, 0xC8, 0x37, 0x40, 0xDF, 0x00,
14380x7C, 0x13, 0xF0, 0xCD, 0xC0, 0xB7, 0x02, 0x1F, 0x00, 0x7C, 0x03, 0xB4, 0x09,
14390xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20,
14400x6D, 0x00, 0xFF, 0x01, 0xCC, 0x06, 0xF0, 0x9F, 0xC0, 0x5F, 0x02, 0xFF, 0x09,
14410xCC, 0x27, 0xF0, 0x1B, 0xC0, 0x7D, 0x00, 0xEF, 0x41, 0xCC, 0x87, 0x70, 0x1F,
14420xC0, 0xFC, 0x00, 0xE3, 0x01, 0xCC, 0x07, 0x30, 0x1F, 0xC8, 0x1B, 0x00, 0x04,
14430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x29, 0x20, 0xFD, 0x00,
14440xAC, 0x1A, 0xD2, 0xCE, 0x40, 0x2B, 0x00, 0xFD, 0x00, 0x84, 0x04, 0xD0, 0x0F,
14450xC0, 0x20, 0x01, 0xED, 0x25, 0xC4, 0x07, 0x50, 0x0E, 0xC1, 0x3A, 0x20, 0x6B,
14460x00, 0x94, 0x03, 0xB0, 0x0A, 0x40, 0x57, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
14470x00, 0x00, 0x00, 0x08, 0x00, 0x29, 0x00, 0xED, 0x00, 0xB4, 0x02, 0xD2, 0x0E,
14480x60, 0x0B, 0x20, 0xED, 0x00, 0x96, 0x03, 0xD0, 0x02, 0x40, 0x1B, 0x80, 0xFD,
14490x05, 0xC4, 0x03, 0x11, 0x8E, 0x40, 0x38, 0x00, 0xF1, 0x00, 0x84, 0x43, 0x10,
14500x2E, 0x40, 0x23, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
14510x28, 0xF1, 0x04, 0x8D, 0x13, 0x34, 0x02, 0xD0, 0x2D, 0x40, 0x23, 0x00, 0xC9,
14520x03, 0x54, 0x04, 0xD0, 0x00, 0x40, 0xC0, 0x10, 0xCD, 0x04, 0x04, 0x03, 0x58,
14530x3C, 0x41, 0x32, 0x00, 0x59, 0x00, 0x14, 0x07, 0x91, 0x0C, 0x40, 0x0B, 0x20,
14540x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x25, 0x10, 0x1F,
14550x12, 0x7C, 0x02, 0xF0, 0x2F, 0xC0, 0x27, 0x00, 0xFF, 0x05, 0x5C, 0x46, 0xF0,
14560x05, 0xC0, 0x07, 0x01, 0xDF, 0x07, 0xCD, 0x03, 0x32, 0x0F, 0x40, 0x3C, 0x00,
14570x53, 0x00, 0x4C, 0x07, 0x30, 0x25, 0xC0, 0x57, 0x00, 0x06, 0x00, 0x00, 0x00,
14580x00, 0x00, 0x00, 0x00, 0x0D, 0x08, 0x27, 0x02, 0x9F, 0x00, 0x64, 0x08, 0xF0,
14590xCD, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0x6C, 0x02, 0xF0, 0x05, 0xC0, 0x87, 0x00,
14600xDF, 0x00, 0x7C, 0x03, 0xE0, 0x0D, 0xC0, 0x37, 0x00, 0x5F, 0x00, 0x7C, 0x03,
14610xF0, 0x01, 0xC2, 0x37, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14620x89, 0x09, 0x3F, 0x10, 0x2F, 0x00, 0xCC, 0x80, 0xF0, 0x0F, 0xC0, 0x08, 0x00,
14630xF3, 0x10, 0xFC, 0x20, 0x30, 0x03, 0xC0, 0x0F, 0x04, 0xFF, 0x00, 0xBC, 0x03,
14640x10, 0x0F, 0xC0, 0x3F, 0x10, 0xFF, 0x01, 0x4C, 0x65, 0xF0, 0x97, 0xC0, 0x07,
14650x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0xB6, 0x00,
14660x1D, 0x21, 0x54, 0x04, 0xD0, 0x0D, 0x40, 0xC4, 0x00, 0xD1, 0x40, 0x74, 0x00,
14670x10, 0x21, 0x40, 0xC6, 0x01, 0xDD, 0x00, 0x74, 0x03, 0xB0, 0x0D, 0xC0, 0x35,
14680x00, 0xDD, 0x0B, 0x54, 0x00, 0xD0, 0x2D, 0x44, 0x87, 0x02, 0x08, 0x00, 0x00,
14690x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x24, 0x14, 0x1D, 0x01, 0x46, 0x06,
14700xD0, 0x0D, 0x40, 0x44, 0x00, 0xD1, 0x00, 0x74, 0x03, 0x10, 0x13, 0x41, 0x4F,
14710x80, 0xDD, 0x00, 0xF4, 0x03, 0x50, 0x0F, 0x40, 0x3F, 0x00, 0x9D, 0x10, 0x44,
14720x03, 0x90, 0x25, 0x40, 0x07, 0x08, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
14730x00, 0x10, 0x22, 0x20, 0x00, 0x8D, 0x80, 0x14, 0x00, 0xD8, 0x0C, 0x40, 0x20,
14740x00, 0xC1, 0x22, 0x34, 0x40, 0x14, 0x00, 0x40, 0x03, 0x00, 0xCD, 0x04, 0x34,
14750x13, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x8D, 0x00, 0x14, 0x07, 0xD0, 0x00, 0x40,
14760x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB8, 0x06,
14770x00, 0x1F, 0x00, 0x4C, 0x02, 0xF0, 0x0F, 0xC0, 0x04, 0x00, 0xF1, 0x02, 0x74,
14780x13, 0x30, 0x01, 0xC0, 0x87, 0x02, 0xFF, 0x10, 0xFC, 0x53, 0x70, 0x0E, 0xC0,
14790x3B, 0x00, 0x9F, 0x00, 0x4C, 0x03, 0xF0, 0x0D, 0xC0, 0x07, 0x60, 0x08, 0x00,
14800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xB0, 0x1F, 0x00, 0xBF, 0x80, 0xF8,
14810x00, 0xF0, 0x0F, 0xC2, 0x0F, 0x00, 0xFF, 0x20, 0x7C, 0x00, 0xF0, 0x03, 0xC0,
14820x0E, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xB1, 0x0F, 0xC0, 0x3D, 0x00, 0xBF, 0x00,
14830xFC, 0x83, 0xF0, 0x0F, 0xC0, 0x17, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
14840x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xFF, 0x09, 0xFC, 0x02, 0x30, 0x4B, 0xC1,
14850x3F, 0x13, 0xFF, 0x00, 0xCC, 0x13, 0x70, 0x83, 0xC0, 0x3C, 0x40, 0xF3, 0x00,
14860xBC, 0x06, 0xB0, 0x0F, 0xC0, 0x2C, 0x17, 0x3B, 0x0C, 0xCC, 0x00, 0xB0, 0x03,
14870xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18,
14880x37, 0x01, 0xCD, 0x04, 0x74, 0xEA, 0x10, 0x69, 0xC8, 0xBD, 0x22, 0xFD, 0xDE,
14890xD4, 0x2F, 0x10, 0x01, 0x40, 0xFC, 0x00, 0xD1, 0x02, 0x44, 0x87, 0x10, 0x1F,
14900x40, 0xA5, 0x01, 0x11, 0x0E, 0x44, 0x08, 0x10, 0x01, 0x40, 0x0F, 0x60, 0x0C,
14910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x33, 0x04, 0xCD, 0x00,
14920x34, 0x10, 0x50, 0x00, 0x41, 0x33, 0x09, 0xCD, 0x44, 0x14, 0x03, 0x10, 0x50,
14930x60, 0xB1, 0x00, 0xC5, 0x02, 0x14, 0x82, 0x90, 0x0D, 0x60, 0x34, 0x01, 0xC9,
14940x00, 0x04, 0x08, 0x12, 0x00, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
14950x00, 0x00, 0x00, 0x03, 0xA0, 0x35, 0x00, 0xDD, 0x04, 0x36, 0x0E, 0x54, 0x19,
14960x42, 0x37, 0x00, 0xDD, 0x00, 0x44, 0x03, 0x10, 0x12, 0x40, 0x35, 0x00, 0xD5,
14970x20, 0x55, 0x03, 0x10, 0x0F, 0x40, 0x55, 0x00, 0xC1, 0x18, 0x45, 0x63, 0x10,
14980x11, 0x40, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
14990xA8, 0x37, 0x00, 0xDD, 0x00, 0x7C, 0x06, 0x70, 0x31, 0xC0, 0x37, 0x00, 0xDF,
15000x00, 0x4C, 0x03, 0x30, 0x11, 0x40, 0x35, 0x00, 0xD6, 0x00, 0x7C, 0x02, 0xB0,
15010x0D, 0xC0, 0x64, 0x80, 0x1B, 0x03, 0x4E, 0x07, 0x30, 0x19, 0xC0, 0x2B, 0x20,
15020x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0xFD, 0x20, 0xFF,
15030x81, 0x7E, 0x02, 0xB0, 0x01, 0xC4, 0x3D, 0x00, 0xDF, 0x00, 0xBC, 0x43, 0xB0,
15040x0B, 0xC0, 0x3E, 0x10, 0xFA, 0x00, 0xEC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F, 0x00,
15050xFF, 0x80, 0x7C, 0x01, 0x70, 0x03, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00,
15060x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xDF, 0x00, 0x4C, 0x08, 0x38,
15070x21, 0xC0, 0x34, 0x08, 0xD7, 0xC0, 0x4C, 0x03, 0x70, 0x01, 0xD1, 0x30, 0x00,
15080xDF, 0x84, 0x4D, 0x42, 0x32, 0x4D, 0xC0, 0x27, 0x00, 0x1B, 0x12, 0x3C, 0x02,
15090x30, 0x09, 0xC0, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
15100x1B, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0x6C, 0x82, 0x10, 0x19, 0x41, 0x3C, 0x00,
15110xF1, 0x00, 0xC4, 0x4B, 0xD0, 0x19, 0x40, 0x3C, 0x01, 0xE7, 0x01, 0x04, 0x46,
15120x12, 0x3F, 0xC0, 0x11, 0x00, 0xDD, 0x00, 0x74, 0x1B, 0x10, 0xB9, 0x41, 0x4F,
15130x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x32, 0x00,
15140xCD, 0x00, 0x24, 0x00, 0x10, 0x58, 0x40, 0x30, 0x00, 0xD5, 0x00, 0x04, 0x0B,
15150x50, 0x20, 0x40, 0x32, 0x00, 0xC8, 0x2B, 0x04, 0x0A, 0x12, 0x0D, 0x44, 0x23,
15160x10, 0x09, 0x08, 0x34, 0x40, 0x90, 0x18, 0x40, 0x0E, 0x00, 0x08, 0x00, 0x00,
15170x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x08, 0x7A, 0x00, 0xED, 0x01, 0xA4, 0x05,
15180x10, 0x1E, 0x40, 0x78, 0x00, 0xE1, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x41, 0x78,
15190x80, 0xE5, 0x01, 0xC4, 0x07, 0x10, 0x1E, 0x40, 0x79, 0x00, 0xED, 0x01, 0xB4,
15200x15, 0x90, 0x12, 0x40, 0x37, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
15210x00, 0x12, 0x10, 0x32, 0x00, 0xCE, 0x40, 0x2C, 0x21, 0x10, 0x84, 0xC0, 0x34,
15220x02, 0xC7, 0x08, 0x06, 0x03, 0x70, 0x05, 0xC0, 0x32, 0x00, 0xCF, 0x40, 0x0C,
15230x02, 0x30, 0x0C, 0xC1, 0x23, 0x00, 0x0B, 0x04, 0x3C, 0x02, 0xB0, 0x0C, 0xC0,
15240x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x3D,
15250x20, 0xFF, 0x80, 0xDD, 0x81, 0xF0, 0x8F, 0xC0, 0x3F, 0x00, 0xFF, 0x20, 0xFE,
15260x03, 0xF0, 0x0F, 0xC0, 0xBD, 0x04, 0xEF, 0x00, 0xFC, 0x03, 0xF5, 0x0F, 0xC0,
15270x1F, 0x00, 0xDF, 0x00, 0x7C, 0x13, 0x72, 0x0F, 0xC0, 0x0B, 0x20, 0x06, 0x00,
15280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x37, 0x20, 0xDF, 0x00, 0x7C,
15290x03, 0x70, 0x0D, 0xC0, 0x37, 0x01, 0xDF, 0x04, 0x7C, 0x13, 0xD1, 0x11, 0xD0,
15300x30, 0x01, 0xD3, 0x08, 0x4C, 0x06, 0x30, 0x5D, 0xC8, 0x20, 0x00, 0x17, 0x00,
15310x5C, 0x00, 0xB4, 0x0D, 0xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
15320x00, 0x00, 0x13, 0x88, 0x38, 0x10, 0xED, 0x20, 0xB6, 0x03, 0xD0, 0x0E, 0x40,
15330xBB, 0x03, 0xED, 0x28, 0xB4, 0x23, 0xD0, 0x0B, 0x40, 0x38, 0x00, 0xE1, 0x00,
15340xAC, 0x02, 0x50, 0xAE, 0x40, 0x38, 0x00, 0xE1, 0x40, 0xB4, 0x01, 0x10, 0x06,
15350x40, 0x4C, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
15360x79, 0x80, 0xED, 0x81, 0x94, 0x07, 0xD8, 0x16, 0x40, 0x7B, 0x00, 0xED, 0x09,
15370xB4, 0x27, 0xD0, 0x16, 0x49, 0x78, 0x01, 0xE1, 0x05, 0x94, 0x06, 0x90, 0x5E,
15380x58, 0x6C, 0x40, 0x21, 0x03, 0x34, 0x06, 0x50, 0x1C, 0x40, 0x10, 0x00, 0x04,
15390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x23, 0x80, 0x8D, 0x00,
15400x34, 0x07, 0xD8, 0xAC, 0x40, 0x33, 0x10, 0xCD, 0x00, 0x34, 0x03, 0xD0, 0x2C,
15410x40, 0x30, 0x80, 0xC1, 0x00, 0x34, 0x86, 0xD0, 0x0C, 0x40, 0x10, 0x00, 0xC1,
15420x10, 0x74, 0x2F, 0x50, 0x2D, 0x40, 0x58, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
15430x00, 0x00, 0x00, 0x17, 0xA8, 0x17, 0x01, 0x5F, 0x00, 0xFC, 0x0D, 0x72, 0x17,
15440xCA, 0x17, 0x08, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0x48, 0x14, 0x00, 0x43,
15450x00, 0x54, 0x01, 0xB0, 0x05, 0xC4, 0x1C, 0x01, 0x73, 0x03, 0xDC, 0x2D, 0x70,
15460x47, 0xC0, 0x5C, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
15470x00, 0x05, 0x20, 0x1F, 0x00, 0x7C, 0x60, 0xF8, 0x01, 0xC1, 0x07, 0x00, 0x0F,
15480x00, 0x7C, 0x08, 0xF0, 0x41, 0xC8, 0x03, 0x40, 0x1F, 0x00, 0x64, 0x20, 0x73,
15490x01, 0xC0, 0x07, 0x20, 0x19, 0x02, 0x7C, 0x00, 0xB0, 0x21, 0xD0, 0x4B, 0x00,
15500x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x9F,
15510x00, 0x78, 0x02, 0xF0, 0x89, 0xC2, 0x27, 0x00, 0x9B, 0x00, 0x4C, 0x06, 0xF0,
15520x09, 0xC0, 0x25, 0x01, 0x93, 0x09, 0x5C, 0x02, 0xF0, 0x99, 0xC0, 0x23, 0x00,
15530x97, 0x28, 0x44, 0x82, 0x31, 0x09, 0xC1, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00,
15540x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xD0,
15550x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x44, 0x0E, 0xD0, 0x29, 0x40, 0x27, 0x00,
15560x91, 0x03, 0x44, 0x02, 0xD0, 0x39, 0x40, 0x27, 0x00, 0x91, 0x07, 0x44, 0x0A,
15570x10, 0x29, 0x51, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
15580x1C, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x70, 0x02, 0xD0, 0x0D, 0x40, 0x27, 0x00,
15590x9D, 0x00, 0x44, 0x1A, 0xD0, 0x29, 0x00, 0x27, 0x40, 0x91, 0x02, 0x54, 0x02,
15600xD8, 0x09, 0x41, 0x27, 0x00, 0x85, 0x00, 0x54, 0x02, 0x10, 0x0D, 0x40, 0x70,
15610x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x20, 0x00,
15620x8D, 0x00, 0x34, 0x52, 0xD0, 0x4C, 0x41, 0x23, 0x02, 0x8D, 0x08, 0x04, 0x82,
15630xD0, 0xC8, 0x40, 0x23, 0x00, 0x81, 0x14, 0x04, 0x03, 0xD9, 0x48, 0x40, 0x23,
15640x00, 0x81, 0x08, 0x14, 0x82, 0x14, 0x48, 0x41, 0x50, 0xA0, 0x00, 0x00, 0x00,
15650x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x40, 0x7C, 0x10,
15660xF0, 0x41, 0xC0, 0x87, 0x05, 0x1B, 0x16, 0x4C, 0x50, 0xF0, 0x31, 0xC0, 0x05,
15670x05, 0x03, 0x0E, 0x5C, 0x00, 0xF0, 0x11, 0xC0, 0x87, 0x05, 0x17, 0x16, 0x5D,
15680x51, 0x30, 0x41, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
15690x00, 0x19, 0xB8, 0x2F, 0x0D, 0xBF, 0x34, 0xFC, 0x52, 0xF0, 0x4B, 0xC1, 0x27,
15700x01, 0x9F, 0x04, 0x7D, 0x82, 0xF0, 0xCB, 0x80, 0x27, 0x00, 0x9F, 0x01, 0xBC,
15710x02, 0xF0, 0x88, 0xC0, 0x2F, 0x04, 0xBF, 0x04, 0xEC, 0x52, 0xF8, 0x4B, 0xC1,
15720x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0xA7,
15730x00, 0xDF, 0x02, 0x54, 0x1E, 0xF0, 0x2B, 0xC0, 0x25, 0x01, 0x9F, 0x54, 0xFC,
15740x12, 0x30, 0x8B, 0xC0, 0x2E, 0x05, 0xB3, 0x01, 0xCC, 0x02, 0xF0, 0x0B, 0xC0,
15750xA4, 0x00, 0xBF, 0x00, 0xCC, 0x02, 0x32, 0x0B, 0xC0, 0x60, 0x00, 0x0E, 0x00,
15760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x03, 0x20, 0x1D, 0x01, 0x6E,
15770x08, 0x10, 0x85, 0x40, 0x00, 0x05, 0x0D, 0x04, 0x74, 0x80, 0x10, 0x01, 0x50,
15780x84, 0x00, 0x11, 0x00, 0x44, 0x00, 0xD0, 0x01, 0x40, 0x54, 0x01, 0x1D, 0x40,
15790x44, 0x00, 0xBA, 0x05, 0xC0, 0x72, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
15800x00, 0x00, 0x12, 0xA0, 0x21, 0x81, 0x9D, 0x00, 0x04, 0xB2, 0x58, 0x48, 0x40,
15810x21, 0x02, 0x8D, 0x14, 0x34, 0x0A, 0x12, 0x48, 0x44, 0x20, 0x00, 0x81, 0x22,
15820x04, 0x02, 0xD0, 0x08, 0x50, 0x21, 0x01, 0x8D, 0x00, 0x14, 0x02, 0x10, 0x08,
15830x40, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20,
15840x25, 0x80, 0x9D, 0x00, 0x64, 0x62, 0x58, 0x0D, 0x40, 0x24, 0x00, 0x9C, 0x00,
15850x70, 0x02, 0x00, 0x0C, 0x60, 0x24, 0x40, 0x91, 0x00, 0x45, 0x02, 0xD0, 0x0D,
15860x40, 0x25, 0x22, 0x9D, 0x80, 0x54, 0x2A, 0x90, 0x09, 0x40, 0x62, 0x00, 0x04,
15870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x67, 0x00, 0x8D, 0x40,
15880x44, 0x06, 0x68, 0x09, 0xC0, 0x25, 0x00, 0x9F, 0x00, 0x3C, 0x02, 0x30, 0x19,
15890xC4, 0x26, 0x00, 0x93, 0x00, 0x4C, 0x02, 0xF0, 0x09, 0x40, 0x25, 0x00, 0x9D,
15900x0F, 0x5C, 0x06, 0x30, 0x29, 0xC0, 0x14, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
15910x00, 0x00, 0x00, 0x12, 0x80, 0x24, 0x01, 0x9F, 0x04, 0x3C, 0x02, 0xB0, 0x59,
15920xC0, 0x27, 0x08, 0x9F, 0x00, 0x7E, 0x02, 0xF4, 0x49, 0xC0, 0x21, 0x00, 0x9F,
15930x00, 0x7C, 0x02, 0xF0, 0x08, 0xC0, 0x66, 0x00, 0x9F, 0x11, 0x6D, 0x42, 0xF2,
15940x49, 0xC1, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
15950x08, 0x05, 0x48, 0x1B, 0x00, 0x7C, 0x00, 0xB8, 0x21, 0xC1, 0x07, 0x00, 0x17,
15960x00, 0x4C, 0x00, 0xF0, 0x01, 0xC0, 0x06, 0x00, 0x13, 0x00, 0x5C, 0x20, 0xF0,
15970x11, 0xC0, 0x05, 0x00, 0x07, 0x22, 0x4C, 0x08, 0xE0, 0x21, 0xD0, 0x40, 0x20,
15980x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x14, 0x00, 0x51,
15990x00, 0x74, 0x01, 0xB8, 0x07, 0x40, 0x17, 0x00, 0x51, 0x00, 0xC4, 0x09, 0xD0,
16000x17, 0xC0, 0x14, 0x00, 0x73, 0x81, 0xC4, 0x29, 0xD0, 0x07, 0x40, 0x14, 0x00,
16010x71, 0x02, 0xC0, 0x45, 0xD1, 0x07, 0x40, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00,
16020x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xC1, 0x80, 0x34, 0x03, 0x93,
16030x8D, 0x46, 0x33, 0x00, 0xC5, 0x00, 0x14, 0x17, 0xD0, 0x0C, 0x40, 0x22, 0x30,
16040x59, 0x8F, 0x14, 0x02, 0xC8, 0x1C, 0x40, 0x31, 0x80, 0xC5, 0x03, 0x45, 0x0B,
16050xD0, 0x8D, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
16060x01, 0x88, 0x78, 0x09, 0xE1, 0x00, 0xB4, 0x13, 0x10, 0x0E, 0x40, 0x7B, 0x03,
16070xE4, 0x0D, 0x91, 0x43, 0xD0, 0x28, 0x40, 0x30, 0x00, 0x01, 0x00, 0xA4, 0x01,
16080xD1, 0x0E, 0x41, 0x78, 0x00, 0xE1, 0x02, 0x84, 0x03, 0xD0, 0x04, 0x40, 0x04,
16090x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x79, 0x04,
16100xE3, 0x0D, 0xB4, 0x0F, 0x90, 0x1E, 0xC0, 0x7B, 0x04, 0xE7, 0x15, 0x9C, 0x07,
16110xF0, 0x16, 0xE0, 0x6A, 0x00, 0x2B, 0x01, 0x9C, 0x04, 0xF0, 0x1E, 0xC0, 0x7D,
16120x00, 0x77, 0x01, 0x8D, 0x07, 0xF0, 0x1E, 0xC4, 0x44, 0x40, 0x00, 0x00, 0x00,
16130x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0x35, 0x23, 0xD7, 0x80, 0x7C, 0x43,
16140xF0, 0x0D, 0xC0, 0xB7, 0x01, 0xDB, 0x04, 0x6C, 0x03, 0xF0, 0x01, 0xC2, 0x27,
16150x40, 0x1F, 0x22, 0x5C, 0x01, 0xF0, 0x08, 0xC0, 0x37, 0x08, 0x5F, 0x00, 0x7C,
16160x01, 0xF2, 0x05, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
16170x00, 0x00, 0x20, 0x7D, 0x00, 0xF3, 0x19, 0xF8, 0x27, 0x78, 0x9F, 0xC0, 0x7D,
16180x00, 0xF3, 0x01, 0xBC, 0x06, 0x30, 0x1F, 0xC0, 0x6F, 0x00, 0x63, 0x83, 0xCC,
16190x04, 0xF0, 0x17, 0xC4, 0x78, 0x00, 0xB3, 0x01, 0xCE, 0x25, 0x30, 0x1F, 0xC0,
16200x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x39,
16210x1A, 0xEB, 0x38, 0xB4, 0x03, 0x70, 0x0E, 0x40, 0x38, 0x02, 0xE1, 0x00, 0xB4,
16220x80, 0x10, 0x0E, 0x40, 0x3B, 0x01, 0x65, 0x00, 0x84, 0x08, 0xD0, 0x56, 0x40,
16230x39, 0x00, 0xA1, 0x02, 0x84, 0x28, 0x10, 0x62, 0xC0, 0x56, 0x60, 0x04, 0x00,
16240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x04, 0xE1, 0x88, 0xB4,
16250x03, 0xD8, 0x06, 0x45, 0x31, 0x40, 0xE9, 0x00, 0xB4, 0x23, 0x90, 0x06, 0x40,
16260x23, 0x80, 0xA9, 0x00, 0x84, 0x00, 0xD0, 0x4C, 0x40, 0x3E, 0x00, 0x05, 0x08,
16270x05, 0x81, 0x10, 0x06, 0x40, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
16280x00, 0x00, 0x04, 0x20, 0x75, 0x00, 0xD8, 0x00, 0x74, 0x07, 0xDA, 0x19, 0x41,
16290x30, 0x00, 0xC9, 0x00, 0x34, 0x01, 0x93, 0x25, 0x40, 0x27, 0x00, 0x1D, 0x00,
16300x04, 0x20, 0xD0, 0x08, 0x40, 0x71, 0x40, 0x45, 0x01, 0x44, 0x80, 0x18, 0x21,
16310x40, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8,
16320x7D, 0x00, 0xF3, 0x01, 0xFC, 0x13, 0xF0, 0x01, 0xC4, 0x3D, 0x00, 0xFB, 0x80,
16330x7E, 0x01, 0xB0, 0x5D, 0xC0, 0x27, 0x00, 0x1B, 0x00, 0x4D, 0x84, 0xF0, 0x09,
16340xC0, 0x7C, 0x04, 0xD5, 0x13, 0x4C, 0x3E, 0x36, 0x29, 0xC0, 0x55, 0x20, 0x06,
16350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xDF, 0x40,
16360x7C, 0x43, 0x70, 0x01, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x3E, 0x08, 0x72, 0x01,
16370xC0, 0x37, 0x00, 0x17, 0x02, 0x7C, 0x01, 0xF0, 0x01, 0xC0, 0x37, 0x0C, 0xDA,
16380x04, 0x7C, 0x0A, 0xF0, 0x29, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
16390x00, 0x00, 0x00, 0x84, 0x08, 0x3F, 0x00, 0xF3, 0x00, 0xCE, 0x83, 0x30, 0x01,
16400xC0, 0x38, 0x00, 0xF3, 0x00, 0xFE, 0x83, 0x32, 0x1F, 0xC1, 0x2C, 0x10, 0x33,
16410x00, 0xCC, 0x14, 0xF0, 0x0B, 0x80, 0x3B, 0x00, 0x63, 0x08, 0xCC, 0x02, 0xF0,
16420x09, 0xD1, 0x10, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85,
16430x20, 0x36, 0x00, 0xD1, 0x20, 0x44, 0x03, 0x18, 0x11, 0x40, 0x35, 0x00, 0xD1,
16440x00, 0x74, 0x12, 0x50, 0x21, 0xC0, 0x26, 0x00, 0x1B, 0x23, 0x6C, 0x09, 0xD0,
16450x21, 0x00, 0x37, 0x00, 0x91, 0x02, 0x44, 0x04, 0x10, 0x19, 0x40, 0x14, 0x00,
16460x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x10, 0xD1,
16470x00, 0x44, 0x03, 0x10, 0x19, 0x40, 0x34, 0x40, 0xD1, 0x00, 0x54, 0x10, 0x50,
16480x49, 0x40, 0x24, 0x00, 0x31, 0x11, 0x44, 0x00, 0xD0, 0x15, 0x40, 0x37, 0x00,
16490x91, 0x00, 0x44, 0x86, 0x50, 0x19, 0x40, 0x04, 0x08, 0x02, 0x00, 0x00, 0x00,
16500x00, 0x00, 0x00, 0x00, 0x10, 0x2A, 0x30, 0x00, 0xC1, 0x00, 0x04, 0x83, 0x10,
16510x08, 0x48, 0x31, 0x00, 0xC1, 0x00, 0x34, 0x00, 0x10, 0x01, 0x40, 0x36, 0x80,
16520x19, 0x00, 0x20, 0x01, 0xD0, 0x44, 0x44, 0x33, 0x00, 0x01, 0x60, 0x04, 0x82,
16530x12, 0x08, 0x40, 0x40, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
16540x00, 0x30, 0x3C, 0x08, 0xF3, 0x00, 0xC4, 0x03, 0x10, 0x01, 0x40, 0x3C, 0x00,
16550xF3, 0x00, 0x7C, 0x03, 0x70, 0x09, 0xC0, 0x24, 0x00, 0x33, 0x00, 0x4C, 0x00,
16560xF1, 0x4D, 0xC1, 0x37, 0x40, 0x13, 0x00, 0x4D, 0x02, 0x70, 0x01, 0xC0, 0x00,
16570xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xA8, 0x3B, 0x00,
16580xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xFF, 0x40, 0xF4, 0x00,
16590xF1, 0x03, 0xC8, 0x2F, 0x00, 0x3E, 0x20, 0xFC, 0x81, 0xF0, 0x01, 0xC0, 0x3F,
16600x20, 0x3F, 0x00, 0xFD, 0x00, 0xE0, 0x03, 0xC0, 0x17, 0x20, 0x0E, 0x00, 0x00,
16610x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x3B, 0x04, 0xFF, 0xC0, 0xFC, 0x43,
16620xB2, 0x4F, 0xC0, 0x3D, 0x00, 0xEF, 0x04, 0xEC, 0x23, 0xF1, 0x12, 0xC0, 0x35,
16630x03, 0x7B, 0x01, 0xFC, 0x42, 0xB0, 0x13, 0xC0, 0x2E, 0x00, 0xBB, 0x01, 0xEC,
16640x86, 0x30, 0x03, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
16650x00, 0x01, 0x08, 0xFF, 0x00, 0xFD, 0x0C, 0xF4, 0x8F, 0xD0, 0x9F, 0x48, 0xFC,
16660x22, 0xDD, 0x03, 0xC4, 0x3B, 0xD2, 0x19, 0x40, 0xB4, 0x01, 0x91, 0xE1, 0x74,
16670x0E, 0x10, 0x05, 0x43, 0x74, 0x00, 0x91, 0x01, 0x44, 0x03, 0x13, 0x11, 0x48,
16680x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33,
16690x18, 0xCD, 0x50, 0x34, 0x03, 0xC0, 0x0C, 0x40, 0x32, 0x00, 0xCD, 0x42, 0x24,
16700x13, 0xD2, 0x01, 0x60, 0xB1, 0x00, 0xCD, 0x00, 0x34, 0x02, 0xD0, 0x41, 0x40,
16710x22, 0x00, 0x4D, 0x00, 0x74, 0x04, 0x10, 0x00, 0x40, 0x47, 0x80, 0x0E, 0x00,
16720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x34, 0x08, 0xDD, 0x00, 0x74,
16730x83, 0xD0, 0x0D, 0x40, 0x36, 0x08, 0xDD, 0x00, 0x44, 0x83, 0xD0, 0x11, 0x48,
16740x34, 0x08, 0x99, 0x00, 0x74, 0x07, 0x51, 0x81, 0x41, 0x34, 0x00, 0xD5, 0x08,
16750x56, 0x91, 0x10, 0x19, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
16760x00, 0x00, 0x00, 0xA8, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xA0, 0x0D, 0xC0,
16770x36, 0x20, 0xDF, 0x20, 0x6C, 0x03, 0xF2, 0x38, 0xC8, 0x35, 0x30, 0xDB, 0x08,
16780x7C, 0x02, 0xF0, 0x35, 0x86, 0x62, 0x00, 0xCF, 0x03, 0x3C, 0x07, 0x30, 0x11,
16790xC0, 0x03, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80,
16800x3D, 0x24, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3C, 0x00, 0xFF, 0x00,
16810xFC, 0x03, 0xE0, 0x0B, 0x80, 0x36, 0x00, 0xB5, 0x00, 0xBC, 0x43, 0xB0, 0x17,
16820xC0, 0x7F, 0x0A, 0xFB, 0x00, 0xEC, 0x01, 0xF2, 0x0B, 0xC0, 0x1F, 0x00, 0x06,
16830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xD7, 0x04,
16840x7C, 0x03, 0x71, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x5C, 0x03, 0xF0, 0x21,
16850xC0, 0x35, 0x00, 0xD7, 0x00, 0x7C, 0x22, 0xF0, 0x21, 0xC0, 0x27, 0x00, 0x5F,
16860x00, 0x7C, 0x11, 0x30, 0x81, 0xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
16870x00, 0x00, 0x00, 0x13, 0xA0, 0x3C, 0x00, 0xF1, 0x82, 0xF4, 0x8F, 0x18, 0x5E,
16880x44, 0xFF, 0x24, 0xED, 0x02, 0xC4, 0x03, 0xD2, 0x81, 0x41, 0x7C, 0x00, 0x9B,
16890x00, 0x74, 0x0F, 0xC0, 0x00, 0x40, 0x37, 0x00, 0xDC, 0x09, 0x40, 0x09, 0x10,
16900x09, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
16910xA0, 0xF2, 0x00, 0xC5, 0x01, 0x34, 0x17, 0x51, 0x0C, 0x40, 0xB2, 0x04, 0xCD,
16920x10, 0x14, 0x03, 0xD0, 0x00, 0x40, 0x37, 0x02, 0x05, 0x00, 0x34, 0x0B, 0xC0,
16930x00, 0x4A, 0x33, 0x10, 0x4C, 0x01, 0x14, 0x03, 0x10, 0x00, 0x41, 0x1F, 0x00,
16940x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0x78, 0x06, 0xE1,
16950xB1, 0xB4, 0x07, 0x10, 0x1E, 0x40, 0x7B, 0x20, 0xED, 0x89, 0x94, 0x07, 0xD0,
16960x1E, 0x42, 0x7A, 0x01, 0xA9, 0x81, 0xB4, 0x87, 0xD0, 0x16, 0x40, 0x6B, 0x00,
16970x6D, 0x31, 0xC0, 0x07, 0x10, 0x12, 0x40, 0x1B, 0x00, 0x02, 0x00, 0x00, 0x00,
16980x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xC7, 0x08, 0x3C, 0x43, 0x50,
16990x0C, 0xC0, 0x33, 0x00, 0xCF, 0x20, 0x1C, 0x03, 0xF0, 0x40, 0xC0, 0x73, 0x81,
17000xC7, 0x00, 0x3C, 0x32, 0xF0, 0x40, 0xC0, 0x33, 0x00, 0x4F, 0x22, 0x1C, 0x12,
17010x30, 0x84, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
17020x02, 0xB8, 0x3D, 0x00, 0xFF, 0x40, 0xBC, 0x2B, 0xB1, 0x0F, 0xC0, 0x3F, 0x00,
17030xFF, 0x90, 0xE4, 0x03, 0xF0, 0x0B, 0xC0, 0x3D, 0x00, 0xB7, 0x00, 0xFC, 0x63,
17040xF0, 0x07, 0xC0, 0x2F, 0x02, 0x6F, 0x00, 0x1C, 0x03, 0xF0, 0x8D, 0xC2, 0x0B,
17050x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x73, 0x01,
17060xDB, 0x0A, 0x7C, 0x97, 0x39, 0x6D, 0xC1, 0xB7, 0x01, 0xDF, 0x00, 0x5C, 0x4B,
17070x71, 0x18, 0xC0, 0x36, 0x20, 0x9F, 0x20, 0x7C, 0x02, 0xF0, 0x05, 0xC0, 0x32,
17080x00, 0x5B, 0x00, 0x7C, 0x03, 0x36, 0x05, 0xC0, 0x57, 0x00, 0x0E, 0x00, 0x00,
17090x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0xB9, 0x05, 0xE1, 0x54, 0xB4, 0x13,
17100x18, 0x2E, 0x60, 0xBB, 0x03, 0xED, 0x04, 0x04, 0x03, 0x10, 0x0E, 0x60, 0x38,
17110x01, 0xA7, 0x00, 0xB4, 0x13, 0xD0, 0x07, 0x42, 0x28, 0x10, 0x61, 0x20, 0xB4,
17120x01, 0x10, 0x0E, 0x40, 0x4B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
17130x00, 0x03, 0x00, 0x79, 0x00, 0xE9, 0x05, 0x34, 0x27, 0x12, 0x5E, 0x40, 0x7B,
17140x00, 0xCD, 0x05, 0x94, 0x27, 0x52, 0x1A, 0x64, 0x7A, 0x02, 0xED, 0x01, 0xB4,
17150x0E, 0xD0, 0x1E, 0x40, 0x7A, 0x20, 0x6D, 0x21, 0xF4, 0x07, 0x10, 0x16, 0x40,
17160x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x33,
17170x08, 0xC1, 0x00, 0x34, 0x83, 0x10, 0x0C, 0x40, 0x33, 0x10, 0xCD, 0x20, 0x04,
17180x03, 0x10, 0x0C, 0x40, 0x32, 0x00, 0x85, 0x00, 0x34, 0x03, 0xD0, 0x25, 0x41,
17190x20, 0x00, 0x45, 0x08, 0x34, 0x8F, 0x10, 0xEC, 0x40, 0x4B, 0x20, 0x0C, 0x00,
17200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA0, 0x15, 0x00, 0x5B, 0x20, 0x7C,
17210x01, 0x35, 0x05, 0xC0, 0x17, 0x00, 0x5F, 0x00, 0x5C, 0x01, 0x70, 0x27, 0xC2,
17220x16, 0x00, 0x7F, 0x22, 0x7C, 0x01, 0xF8, 0x27, 0xD3, 0x16, 0x20, 0x6F, 0x20,
17230xF4, 0x0D, 0x30, 0x17, 0xC2, 0x5F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
17240x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x02, 0x7C, 0x08, 0xF0, 0x21, 0xC4,
17250x87, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x21, 0xC0, 0x05, 0x00, 0x17, 0x04,
17260x7C, 0x08, 0xF2, 0x01, 0xC0, 0x87, 0x00, 0x1A, 0x02, 0x74, 0x60, 0xF0, 0x01,
17270xC0, 0x4B, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
17280x27, 0x02, 0x9F, 0x09, 0x7C, 0x06, 0xF0, 0x19, 0xC0, 0x67, 0x80, 0x83, 0x08,
17290x5C, 0x02, 0x30, 0x99, 0xC3, 0x23, 0x00, 0x92, 0x00, 0x0C, 0x86, 0x70, 0x09,
17300xC0, 0x21, 0x01, 0x93, 0x04, 0x5C, 0x06, 0x32, 0x08, 0xC2, 0x40, 0x20, 0x0C,
17310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xE6, 0x00, 0x9D, 0x03,
17320x74, 0x02, 0xD0, 0xA9, 0x41, 0xE3, 0x04, 0x9B, 0x01, 0x44, 0x02, 0x10, 0x09,
17330x40, 0x27, 0x00, 0x81, 0x00, 0xC4, 0x0A, 0xB0, 0x09, 0x40, 0xA4, 0x00, 0x95,
17340x00, 0x04, 0x0E, 0x10, 0x09, 0x40, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
17350x00, 0x00, 0x00, 0x18, 0x88, 0x24, 0x04, 0x9D, 0x10, 0x74, 0x22, 0xD0, 0x09,
17360x40, 0x27, 0x01, 0x91, 0x00, 0x14, 0x02, 0x14, 0x0D, 0x41, 0x27, 0x41, 0x95,
17370x00, 0x54, 0x12, 0x50, 0x09, 0x40, 0xA5, 0x00, 0x91, 0x00, 0x54, 0x12, 0x14,
17380x89, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
17390x20, 0x20, 0x05, 0x8D, 0x34, 0x36, 0x52, 0xD2, 0x08, 0x40, 0x23, 0x40, 0x89,
17400xC0, 0x04, 0x22, 0x10, 0x08, 0x40, 0xA3, 0x00, 0x95, 0x02, 0x14, 0x03, 0x90,
17410x88, 0x40, 0x20, 0x05, 0x94, 0x00, 0x44, 0x06, 0x10, 0x48, 0x41, 0x41, 0x80,
17420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x01, 0x1F,
17430x24, 0x7C, 0x91, 0xF0, 0x41, 0xC1, 0x07, 0x05, 0x11, 0x54, 0x5C, 0x58, 0x30,
17440x01, 0xCA, 0x07, 0x05, 0x17, 0x00, 0x5D, 0x04, 0x70, 0x21, 0xC0, 0x05, 0x01,
17450x53, 0x00, 0x5C, 0x00, 0x30, 0x45, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00,
17460x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x27, 0x00, 0x9F, 0x54, 0x7C, 0x02, 0xF0,
17470x09, 0xC0, 0x27, 0x00, 0x97, 0x00, 0x7C, 0x12, 0xF2, 0x0B, 0xC0, 0x67, 0x00,
17480xBB, 0x01, 0xEC, 0x0A, 0x70, 0x4B, 0xC8, 0x2F, 0x00, 0xFF, 0x00, 0xAE, 0x52,
17490xF4, 0x0B, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
17500x19, 0xA8, 0x6F, 0x04, 0xBF, 0x36, 0xFC, 0x42, 0xF0, 0x0A, 0xC0, 0x2C, 0x00,
17510xBF, 0x90, 0x7F, 0x32, 0xF0, 0x0F, 0xC0, 0xAF, 0x04, 0x9F, 0x02, 0xCD, 0x86,
17520x34, 0x89, 0xC0, 0x2F, 0x00, 0xAF, 0x00, 0xFC, 0x02, 0x30, 0x0B, 0xC0, 0x64,
17530x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x07, 0x00,
17540x1D, 0x02, 0x74, 0x08, 0xD0, 0xA1, 0x52, 0x84, 0x02, 0x1D, 0x02, 0x44, 0x00,
17550x70, 0x05, 0x40, 0xC7, 0x00, 0x1D, 0x01, 0x44, 0x88, 0x10, 0x05, 0x48, 0x04,
17560x00, 0x1D, 0x00, 0x74, 0x00, 0x10, 0x01, 0x40, 0x70, 0x20, 0x0C, 0x00, 0x00,
17570x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D, 0x04, 0x34, 0x02,
17580xD0, 0x08, 0x40, 0x20, 0x00, 0x8D, 0x00, 0x14, 0x1A, 0xD0, 0x08, 0x62, 0x23,
17590x00, 0x8D, 0x00, 0x04, 0x0A, 0x10, 0x48, 0x40, 0x22, 0x00, 0x8D, 0x00, 0x74,
17600x03, 0x10, 0x08, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
17610x00, 0x18, 0xA0, 0x25, 0x00, 0x9D, 0xA0, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x24,
17620x20, 0x9D, 0x00, 0x44, 0x02, 0x50, 0x09, 0x48, 0x27, 0x00, 0x8D, 0x00, 0x44,
17630x02, 0x11, 0x89, 0x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x29, 0x40,
17640x60, 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27,
17650x10, 0x9F, 0x00, 0x78, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x08, 0x9F, 0x00, 0x7C,
17660x02, 0xF0, 0x09, 0x40, 0x2F, 0x00, 0xBE, 0x07, 0x4C, 0x02, 0x31, 0x39, 0xC2,
17670x27, 0x00, 0x9F, 0x00, 0x3C, 0x16, 0x20, 0x09, 0xD0, 0x14, 0x20, 0x04, 0x00,
17680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x24, 0x00, 0x9F, 0x80, 0x7C,
17690x42, 0xF0, 0x08, 0xE0, 0x27, 0x0C, 0x8F, 0x10, 0x7D, 0x02, 0xF0, 0x39, 0xC0,
17700x27, 0x00, 0x9F, 0x02, 0x7C, 0x4A, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x23,
17710x7C, 0x16, 0xF4, 0x59, 0xC0, 0x53, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
17720x00, 0x00, 0x14, 0x08, 0x05, 0x01, 0x1F, 0x00, 0x4C, 0x20, 0x30, 0x41, 0xC0,
17730x04, 0x00, 0x12, 0x00, 0x5C, 0x80, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x13, 0x02,
17740x7C, 0x00, 0xF0, 0x21, 0xC0, 0x07, 0x24, 0x1F, 0x22, 0x5C, 0x00, 0x30, 0x41,
17750xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00,
17760xDC, 0x04, 0x7D, 0x00, 0xC4, 0x09, 0xF0, 0x17, 0x44, 0xDD, 0x4C, 0x71, 0x03,
17770x44, 0x01, 0x10, 0x77, 0xC0, 0x55, 0x00, 0x5B, 0x00, 0xB4, 0x11, 0xD0, 0x05,
17780x40, 0x5F, 0x00, 0x7D, 0x03, 0xC4, 0x01, 0x50, 0x36, 0x40, 0x50, 0x00, 0x00,
17790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0xE2, 0x00, 0xCD, 0x45,
17800x14, 0x0A, 0x10, 0x24, 0x40, 0x70, 0x80, 0x81, 0x00, 0x14, 0x03, 0x10, 0x48,
17810x40, 0x33, 0x00, 0xC5, 0x00, 0x34, 0x02, 0xD0, 0x0D, 0x42, 0xA3, 0x00, 0x8D,
17820x12, 0x14, 0x03, 0x10, 0x8C, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
17830x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x00, 0xED, 0x03, 0x94, 0x05, 0x51, 0x22,
17840x40, 0x61, 0x00, 0x81, 0x10, 0x84, 0x17, 0x14, 0x0A, 0x40, 0xFD, 0x01, 0xED,
17850x04, 0xB4, 0x02, 0xD0, 0x4E, 0x00, 0x2B, 0x04, 0xBD, 0x11, 0x84, 0x03, 0x52,
17860x00, 0x40, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
17870x10, 0x68, 0x00, 0xCF, 0x01, 0x15, 0x04, 0x10, 0x16, 0xE0, 0x78, 0x88, 0xA3,
17880x01, 0xDC, 0x47, 0x30, 0x1E, 0xE8, 0x7F, 0x01, 0xE7, 0x03, 0xBC, 0x06, 0xF0,
17890x1E, 0xC0, 0x6B, 0x00, 0xAF, 0x41, 0xDC, 0x07, 0x32, 0x1E, 0xC0, 0x50, 0x40,
17900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0x5F,
17910x00, 0x6C, 0x01, 0xF0, 0x01, 0xC2, 0x27, 0x00, 0x9F, 0x20, 0x7E, 0x23, 0xF0,
17920x09, 0xC0, 0x37, 0x12, 0xDB, 0x00, 0x7C, 0x02, 0xF0, 0x8D, 0xC0, 0x27, 0x00,
17930x9F, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xD0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00,
17940x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x6F, 0x40, 0x73, 0x81, 0xE4, 0x04, 0xF1,
17950x17, 0xC0, 0x78, 0x00, 0xF3, 0x01, 0xFC, 0x07, 0xF0, 0x1B, 0xC0, 0x6F, 0x80,
17960xE7, 0x09, 0xCC, 0x07, 0xF0, 0x1F, 0xC2, 0x7C, 0x00, 0xFF, 0x01, 0xFC, 0x07,
17970x30, 0x17, 0xC0, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
17980x15, 0x88, 0x29, 0x00, 0x61, 0x00, 0x84, 0x10, 0x70, 0x02, 0x40, 0x98, 0x02,
17990xE1, 0x80, 0xB4, 0x03, 0xD0, 0x0A, 0x40, 0x2B, 0x81, 0xE1, 0x00, 0x84, 0x02,
18000xD0, 0x8E, 0xC0, 0x3A, 0x00, 0xED, 0x00, 0xF4, 0x23, 0x18, 0x26, 0x40, 0x54,
18010x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x21, 0x00,
18020xE1, 0x00, 0x84, 0x00, 0xD1, 0x08, 0x40, 0x38, 0x00, 0xE1, 0x08, 0xB4, 0x03,
18030xD0, 0x0E, 0x41, 0x2B, 0x30, 0xF5, 0x01, 0x84, 0x03, 0xD0, 0x0F, 0x40, 0x28,
18040x04, 0xAD, 0x00, 0xB4, 0x02, 0x50, 0x26, 0x40, 0x20, 0x01, 0x04, 0x00, 0x00,
18050x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x13, 0x00, 0x11, 0x40, 0x04, 0x01,
18060x50, 0x08, 0x4C, 0x10, 0x00, 0xC9, 0x00, 0x34, 0x03, 0xD0, 0x24, 0x40, 0x23,
18070x00, 0xC1, 0x04, 0x04, 0x05, 0xD0, 0x2C, 0x40, 0x22, 0x80, 0x4D, 0x00, 0x36,
18080x0C, 0x50, 0x0C, 0x52, 0x18, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
18090x00, 0x05, 0xA8, 0x25, 0x00, 0x93, 0x00, 0x4C, 0x00, 0xF0, 0x05, 0xC4, 0x14,
18100x00, 0x93, 0x00, 0xFC, 0x03, 0xD0, 0x09, 0xC4, 0x37, 0x00, 0xD7, 0x04, 0x4D,
18110x12, 0xF0, 0x3F, 0xC1, 0x24, 0x00, 0x9F, 0x0A, 0x7C, 0x0C, 0x70, 0x29, 0xC0,
18120x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37,
18130x10, 0x9F, 0x82, 0x5C, 0x01, 0xF0, 0x05, 0xC0, 0x03, 0x00, 0x97, 0x80, 0x7E,
18140x03, 0xF0, 0x09, 0xC0, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC1,
18150xA7, 0x00, 0x9F, 0x00, 0x7C, 0x60, 0xB4, 0x29, 0xC0, 0x27, 0x00, 0x0C, 0x00,
18160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x0A, 0x2B, 0x20, 0x93, 0x80, 0xCC,
18170x00, 0x30, 0x07, 0xC0, 0xAF, 0x00, 0xA3, 0x09, 0x8D, 0x03, 0x32, 0x0F, 0xC1,
18180x77, 0x00, 0xFB, 0x00, 0xCC, 0x02, 0x34, 0x0F, 0x00, 0x2E, 0x00, 0xBF, 0x00,
18190xFC, 0x00, 0x30, 0x09, 0xC0, 0x07, 0x2A, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
18200x00, 0x00, 0x81, 0x21, 0x36, 0x00, 0x91, 0x11, 0x14, 0x41, 0x51, 0x95, 0x40,
18210xA7, 0x00, 0x91, 0x02, 0x44, 0x03, 0x10, 0x09, 0x44, 0x67, 0x02, 0xDD, 0x00,
18220x04, 0x02, 0x30, 0x0D, 0x40, 0x27, 0x04, 0x9D, 0x00, 0x34, 0x1C, 0x10, 0xBD,
18230x44, 0x87, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0,
18240x24, 0x10, 0x11, 0x81, 0x64, 0x80, 0x18, 0x05, 0x40, 0x17, 0x00, 0x91, 0x02,
18250x44, 0x03, 0x14, 0x09, 0x40, 0x27, 0x00, 0xCD, 0x00, 0x44, 0x03, 0x10, 0x0D,
18260x40, 0x36, 0x02, 0xDD, 0x00, 0x74, 0x04, 0x10, 0x01, 0x40, 0x07, 0x00, 0x0A,
18270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x20, 0x00, 0x01, 0x00,
18280x16, 0x80, 0x50, 0x04, 0x40, 0x13, 0x00, 0x01, 0x00, 0x04, 0x03, 0x10, 0x08,
18290x48, 0xB3, 0x20, 0xCD, 0x00, 0x05, 0x02, 0x10, 0x0C, 0x40, 0x33, 0x00, 0xCD,
18300x00, 0x74, 0x00, 0x10, 0x0C, 0x40, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
18310x00, 0x00, 0x00, 0x01, 0xB0, 0x26, 0x00, 0x93, 0x00, 0x4C, 0x00, 0x30, 0x09,
18320xC0, 0x27, 0x00, 0xD1, 0x00, 0xCC, 0x03, 0x30, 0x0D, 0xC0, 0x27, 0x08, 0xFB,
18330x00, 0x4C, 0x03, 0x30, 0x0D, 0xC0, 0x16, 0x00, 0x9F, 0x00, 0x7C, 0x00, 0x30,
18340x01, 0xC4, 0x07, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
18350xA8, 0x1F, 0x00, 0xBF, 0x00, 0xFC, 0x01, 0xF0, 0x0B, 0xC0, 0x0F, 0x00, 0x7F,
18360x40, 0xFC, 0x03, 0xF1, 0x07, 0xC0, 0x2F, 0x01, 0xFF, 0x00, 0xFC, 0x01, 0x70,
18370x0E, 0xC0, 0x1F, 0x00, 0x7F, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x17, 0x60,
18380x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x88, 0x7B, 0x22, 0xFB,
18390x29, 0xEC, 0x27, 0xF0, 0x9F, 0xC4, 0x7C, 0x02, 0xEF, 0x09, 0xCC, 0x07, 0x30,
18400x9F, 0xC0, 0x7C, 0x00, 0xE3, 0x01, 0xCC, 0x07, 0xF0, 0x9F, 0xC0, 0x7C, 0x00,
18410xEF, 0x09, 0xCC, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00,
18420x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x07, 0x00, 0x11, 0x04, 0x4C, 0x00, 0xD1,
18430x01, 0x00, 0x04, 0x31, 0x1D, 0x04, 0x44, 0x04, 0x50, 0x41, 0x00, 0x05, 0x05,
18440x11, 0x00, 0x5C, 0x10, 0xD0, 0x41, 0x40, 0x00, 0x25, 0x1D, 0x04, 0x44, 0x00,
18450xD0, 0x01, 0x40, 0x0F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
18460x13, 0xA0, 0x35, 0x00, 0xD9, 0x00, 0x24, 0x13, 0x52, 0x4C, 0x42, 0x31, 0x01,
18470xCD, 0x04, 0x44, 0x83, 0x50, 0x0D, 0x0A, 0x30, 0x00, 0xD5, 0x00, 0x04, 0x43,
18480xD0, 0x4C, 0x60, 0x30, 0x00, 0xCD, 0x00, 0x05, 0x03, 0xD0, 0x0C, 0x40, 0x4D,
18490x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x07, 0x00,
18500x11, 0x00, 0x40, 0x80, 0xD0, 0x01, 0x40, 0x05, 0x00, 0x1D, 0x00, 0x47, 0x00,
18510x50, 0x01, 0x48, 0x01, 0x40, 0x15, 0x20, 0x74, 0x00, 0xD0, 0x00, 0x48, 0x05,
18520x00, 0x0D, 0x00, 0x54, 0x00, 0xC0, 0x01, 0x40, 0x0F, 0x20, 0x06, 0x00, 0x00,
18530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x36, 0x00, 0xDB, 0x00, 0x6C, 0x03,
18540xF0, 0x0D, 0xC0, 0x35, 0x00, 0xDF, 0x40, 0x0C, 0x03, 0x70, 0x0D, 0x40, 0x34,
18550x00, 0xD7, 0x00, 0x4C, 0x03, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0xDF, 0x00, 0x4C,
18560x03, 0xE0, 0x0D, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
18570x00, 0x07, 0x80, 0x0D, 0x00, 0x3F, 0x00, 0xDC, 0x40, 0xF3, 0x03, 0xD4, 0x0E,
18580x10, 0x3F, 0x00, 0xF8, 0x40, 0xF0, 0x03, 0xC0, 0x0F, 0x20, 0x3B, 0x00, 0xDC,
18590x00, 0xF1, 0x03, 0xC0, 0x0E, 0x00, 0x3F, 0x00, 0xEC, 0x00, 0xF0, 0x03, 0xC0,
18600x1F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35,
18610x00, 0xD7, 0x04, 0x7C, 0x03, 0xF0, 0x4D, 0xC0, 0x37, 0x00, 0xD7, 0x60, 0x5C,
18620x07, 0xB0, 0x0D, 0xC0, 0x37, 0x00, 0xD7, 0x00, 0x4C, 0x13, 0xF0, 0x0D, 0xC0,
18630x34, 0x40, 0xD3, 0x04, 0x4C, 0x43, 0xF0, 0x0D, 0xC0, 0xAB, 0x20, 0x04, 0x00,
18640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xA0, 0x00, 0x06, 0x01, 0x12, 0x74,
18650x14, 0xD0, 0x71, 0x60, 0x07, 0x00, 0x11, 0x00, 0x6C, 0x00, 0x10, 0x00, 0x40,
18660xC7, 0x02, 0x0D, 0x11, 0x6C, 0x18, 0xD2, 0x01, 0x40, 0x04, 0x00, 0x11, 0x12,
18670x6C, 0x00, 0xD0, 0xB1, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
18680x00, 0x00, 0x03, 0x20, 0xF0, 0x10, 0xC5, 0x80, 0x34, 0x03, 0xD1, 0x0D, 0x42,
18690x33, 0x00, 0xDD, 0x00, 0x24, 0x0B, 0x90, 0x0C, 0x40, 0xB3, 0x00, 0xC5, 0x01,
18700x04, 0x0F, 0xD8, 0x0C, 0x40, 0x32, 0x00, 0xC1, 0x01, 0x04, 0x0B, 0xD2, 0x1C,
18710x40, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x02,
18720x4C, 0x00, 0x21, 0x01, 0xB4, 0x04, 0xD9, 0x12, 0x40, 0x4F, 0x02, 0x39, 0x01,
18730xA4, 0x04, 0x10, 0x12, 0x40, 0x4B, 0x04, 0x3D, 0x01, 0xA6, 0x24, 0xD0, 0x12,
18740x68, 0x4A, 0x00, 0x31, 0x01, 0xA4, 0x04, 0xD0, 0x12, 0x53, 0x3C, 0x00, 0x00,
18750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xC7, 0x00,
18760x3C, 0x03, 0xF0, 0x0C, 0x48, 0x33, 0x10, 0xCF, 0x00, 0x3C, 0x03, 0xB0, 0x0C,
18770x40, 0x33, 0x00, 0xC7, 0x00, 0x0C, 0xA3, 0xF1, 0x0D, 0xCC, 0x32, 0x80, 0xC3,
18780x00, 0x0C, 0x03, 0xF0, 0x0D, 0xC0, 0x49, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
18790x00, 0x00, 0x00, 0x02, 0x38, 0x0D, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF8, 0x03,
18800x80, 0x0B, 0x08, 0x36, 0x00, 0xBC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F,
18810x00, 0xFC, 0x20, 0xD2, 0x03, 0xC0, 0x0D, 0x10, 0x3F, 0x00, 0xFC, 0x00, 0xFA,
18820x11, 0xC0, 0x09, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
18830xA8, 0x77, 0x20, 0xD7, 0x41, 0x6C, 0x03, 0xF0, 0x0D, 0xC0, 0x74, 0x00, 0xC3,
18840x01, 0x4C, 0x03, 0xF0, 0x0D, 0xC0, 0x33, 0x00, 0xD3, 0x01, 0x4D, 0x03, 0x70,
18850x1D, 0xC0, 0x30, 0x00, 0xD3, 0x01, 0x4C, 0x07, 0x30, 0x1D, 0xD0, 0x40, 0x00,
18860x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x80, 0x0D, 0x48, 0x21,
18870x40, 0x84, 0x00, 0xD0, 0x02, 0x40, 0x09, 0x00, 0x25, 0x00, 0x90, 0x00, 0xD0,
18880x02, 0x40, 0x0B, 0x00, 0x35, 0x00, 0xC4, 0x00, 0x10, 0x02, 0x40, 0x09, 0x00,
18890x2B, 0x40, 0x84, 0x00, 0xB0, 0x03, 0xC0, 0x4E, 0x08, 0x06, 0x00, 0x00, 0x00,
18900x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xF9, 0x01, 0xA4, 0x07, 0xC2,
18910x1F, 0x40, 0x7C, 0x00, 0xF5, 0x01, 0x84, 0x07, 0xD0, 0x1E, 0x40, 0x7F, 0x00,
18920xE1, 0x01, 0x94, 0x07, 0x50, 0x1F, 0x48, 0x7C, 0x80, 0xE1, 0x01, 0xC4, 0x07,
18930x18, 0x1E, 0x48, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
18940x16, 0x28, 0x03, 0x00, 0x09, 0x00, 0x40, 0x00, 0xD8, 0x00, 0x42, 0x01, 0x00,
18950x05, 0x20, 0x14, 0x00, 0xD0, 0x00, 0x40, 0x07, 0x00, 0x05, 0x00, 0x14, 0x00,
18960x50, 0x00, 0x40, 0x05, 0x08, 0x09, 0x00, 0x04, 0x00, 0x98, 0x00, 0x40, 0x5A,
18970x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x28, 0x15, 0x00,
18980x5B, 0x00, 0x6C, 0x01, 0xD0, 0x04, 0xC0, 0x14, 0x00, 0x57, 0x00, 0x4C, 0x01,
18990xF0, 0x05, 0xC4, 0x17, 0x00, 0x53, 0x00, 0x1C, 0x01, 0x70, 0x05, 0xC0, 0x14,
19000x08, 0x53, 0x60, 0x4C, 0x01, 0x30, 0x05, 0x40, 0x5C, 0x00, 0x04, 0x00, 0x00,
19010x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x8D, 0x00, 0x37, 0x02, 0xFC, 0x00,
19020xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x08, 0xF0, 0x03, 0xC8, 0x0F,
19030x00, 0x3F, 0x02, 0xE4, 0x08, 0xB0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x80, 0xFD,
19040x00, 0xF0, 0x03, 0xC0, 0x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19050x00, 0x10, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x19, 0x40, 0x24,
19060x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x24, 0x00, 0x93, 0x00, 0x7C,
19070x16, 0x30, 0x09, 0xC0, 0x27, 0x40, 0x93, 0x04, 0x78, 0x16, 0xF0, 0x09, 0xC0,
19080x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x24,
19090x01, 0x9D, 0x00, 0x74, 0x42, 0x14, 0x59, 0xC0, 0x26, 0x00, 0x9D, 0x00, 0x74,
19100x0A, 0xD0, 0x09, 0x40, 0xA4, 0x00, 0x91, 0x9A, 0x74, 0x8E, 0xB2, 0x09, 0x40,
19110x27, 0x10, 0x91, 0x02, 0x64, 0x16, 0xD1, 0x09, 0x40, 0x07, 0x00, 0x00, 0x00,
19120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x6C, 0x80, 0xBD, 0x01, 0xE4,
19130x06, 0x10, 0x4B, 0x40, 0x2D, 0x00, 0xBD, 0x00, 0xF4, 0x0E, 0xD0, 0x0A, 0x40,
19140x2C, 0x04, 0xB1, 0x00, 0xF4, 0x02, 0x10, 0x0B, 0x00, 0x2F, 0x00, 0xB1, 0x10,
19150xF4, 0x02, 0xD0, 0x0B, 0x41, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
19160x00, 0x00, 0x10, 0x20, 0x28, 0x00, 0xEC, 0x00, 0xB4, 0x02, 0x10, 0x0B, 0x40,
19170x2B, 0x22, 0xAD, 0x08, 0xB4, 0x82, 0xD0, 0x8A, 0x60, 0x28, 0x42, 0xA1, 0x40,
19180xF4, 0x02, 0x90, 0x8A, 0x40, 0x2B, 0x0A, 0xA1, 0x08, 0xA4, 0x02, 0xD0, 0x0A,
19190x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8,
19200x06, 0x00, 0x1F, 0x40, 0x6C, 0x00, 0x30, 0x01, 0xC0, 0x85, 0x00, 0x1D, 0x02,
19210x7C, 0x00, 0xF0, 0x21, 0xD0, 0x84, 0x00, 0x13, 0x0A, 0x7C, 0x01, 0x30, 0x21,
19220xC0, 0x87, 0x08, 0x03, 0x22, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x77, 0xE0, 0x0A,
19230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x27, 0x05, 0x8D, 0x14,
19240x7C, 0x52, 0xF0, 0x48, 0xC1, 0x22, 0x01, 0x9F, 0x04, 0x7C, 0x02, 0xF0, 0x49,
19250xC0, 0x27, 0x01, 0x9F, 0x81, 0x7C, 0x52, 0xF0, 0x48, 0xC0, 0x27, 0x01, 0x9F,
19260x24, 0x3C, 0x52, 0xF0, 0x49, 0xC1, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
19270x00, 0x00, 0x00, 0x1D, 0xA0, 0xAF, 0x00, 0xB7, 0x02, 0xDC, 0x0A, 0xB0, 0x2B,
19280xC0, 0x27, 0x00, 0x9F, 0x02, 0xDC, 0x02, 0x30, 0x89, 0xC0, 0x2F, 0x10, 0xB3,
19290x00, 0xFC, 0x02, 0xF0, 0x29, 0xC0, 0xA7, 0x10, 0xBF, 0x00, 0xCC, 0x02, 0xB0,
19300x0B, 0xC0, 0x77, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
19310x00, 0x05, 0x01, 0x11, 0x81, 0x44, 0x00, 0x10, 0x41, 0x40, 0x07, 0x05, 0x1D,
19320x00, 0x44, 0x00, 0x50, 0x01, 0x40, 0x07, 0x01, 0x11, 0x00, 0x74, 0x50, 0xD0,
19330x01, 0x40, 0x07, 0x00, 0x1D, 0x00, 0x44, 0x00, 0x50, 0x01, 0x40, 0x63, 0x00,
19340x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20, 0x21, 0x01, 0x85,
19350x00, 0x54, 0x12, 0x90, 0x48, 0x40, 0x23, 0x80, 0x8D, 0x04, 0x44, 0x02, 0x10,
19360x48, 0x40, 0x23, 0x44, 0x81, 0x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x23, 0x80,
19370x8D, 0x00, 0x06, 0x02, 0x90, 0x08, 0x40, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00,
19380x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0x91, 0x00, 0x44, 0x03, 0x08,
19390x09, 0x40, 0x27, 0x00, 0x8C, 0x00, 0x45, 0x82, 0x50, 0x09, 0x42, 0x23, 0x08,
19400x91, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x44, 0x02,
19410xD8, 0x09, 0x40, 0x63, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19420x05, 0x20, 0x25, 0x00, 0x97, 0x00, 0x1C, 0x02, 0xB0, 0x09, 0xC4, 0x27, 0x00,
19430x9F, 0x00, 0x5C, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x92, 0x00, 0x7C, 0x02,
19440xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x4C, 0x02, 0xB0, 0x09, 0xC8, 0x17,
19450x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x88, 0x25, 0x00,
19460x9F, 0x00, 0x7C, 0x02, 0xF8, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x80, 0x7C, 0x02,
19470xF0, 0x09, 0xC2, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27,
19480x00, 0x9F, 0x80, 0x7D, 0x42, 0x70, 0x09, 0xC0, 0x5B, 0x20, 0x04, 0x00, 0x00,
19490x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1D, 0x10, 0x7C, 0x10,
19500xD0, 0x01, 0xC0, 0x07, 0x00, 0x1B, 0x00, 0x5C, 0x00, 0x70, 0x01, 0xC0, 0x04,
19510x00, 0x1B, 0x49, 0x7C, 0x40, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x1F, 0x00, 0x7C,
19520x00, 0xB4, 0x41, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19530x00, 0x10, 0xA0, 0xDC, 0x00, 0x7D, 0x23, 0xF4, 0x9D, 0x10, 0x97, 0x40, 0x17,
19540x00, 0x5D, 0x00, 0xB4, 0x21, 0xD0, 0x05, 0x40, 0x1C, 0x00, 0x7D, 0x01, 0xF4,
19550x01, 0xD0, 0x05, 0x40, 0x15, 0x20, 0x7D, 0x02, 0xF4, 0x09, 0x10, 0x07, 0x40,
19560x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xB6,
19570x06, 0xDD, 0x0B, 0x34, 0x03, 0x50, 0xAC, 0x40, 0x33, 0x00, 0xCD, 0x80, 0x14,
19580x8F, 0xD0, 0x0C, 0x50, 0x70, 0x80, 0xC9, 0x21, 0x32, 0x27, 0xD0, 0x0C, 0x40,
19590x32, 0x00, 0xDD, 0x12, 0x74, 0x23, 0x10, 0x1C, 0x40, 0x43, 0x00, 0x0A, 0x00,
19600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x39, 0x00, 0xED, 0x00, 0xF4,
19610x03, 0x10, 0x0E, 0x40, 0x3B, 0x03, 0xEC, 0x04, 0xB4, 0x0A, 0xC0, 0x5E, 0x40,
19620x38, 0x04, 0xE9, 0x00, 0xB4, 0x03, 0xD0, 0x5F, 0x40, 0x3B, 0x00, 0x2D, 0x10,
19630xB4, 0x03, 0x10, 0x2E, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
19640x00, 0x00, 0x14, 0x18, 0x79, 0x00, 0xEF, 0x01, 0xBC, 0x07, 0x70, 0x1E, 0xC0,
19650x7B, 0x05, 0xEB, 0x89, 0x9C, 0x07, 0x70, 0xBF, 0xC0, 0x78, 0x20, 0x2B, 0x21,
19660xBC, 0x07, 0xF0, 0x3E, 0xC0, 0x7A, 0x05, 0xEF, 0x01, 0xFC, 0x07, 0x31, 0x1E,
19670xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8,
19680x15, 0x10, 0x5F, 0x00, 0x3C, 0x03, 0x70, 0x0D, 0x80, 0xB7, 0x01, 0xDF, 0x0C,
19690x7C, 0x00, 0xF0, 0x4D, 0xC0, 0x17, 0x00, 0x1F, 0x20, 0x7C, 0x03, 0xF0, 0x0C,
19700x41, 0x35, 0x08, 0x1F, 0x00, 0x7C, 0x01, 0x70, 0x0D, 0xC0, 0x43, 0x60, 0x06,
19710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x7D, 0x00, 0xFF, 0x89,
19720xF8, 0x05, 0x70, 0x1F, 0xC2, 0x7D, 0x00, 0xFB, 0x01, 0xFC, 0x07, 0xF0, 0x1F,
19730xC0, 0x6F, 0x00, 0xF7, 0x01, 0xCE, 0x25, 0x30, 0x1F, 0xC0, 0x7F, 0x04, 0xF3,
19740x01, 0x8C, 0x25, 0x30, 0x1E, 0xC0, 0x18, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
19750x00, 0x00, 0x00, 0x15, 0x08, 0x39, 0x04, 0xED, 0x08, 0xF4, 0x11, 0x00, 0x0E,
19760x40, 0x3F, 0x00, 0xE0, 0x10, 0xB4, 0x42, 0xD0, 0x8E, 0x41, 0x3B, 0x00, 0xF5,
19770x02, 0x94, 0x0B, 0x50, 0x0E, 0xC0, 0x3B, 0x00, 0x3B, 0x08, 0x85, 0x39, 0xB0,
19780x0A, 0x40, 0x55, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98,
19790x00, 0x39, 0x02, 0xED, 0x08, 0xB0, 0x01, 0xD1, 0x06, 0x40, 0x39, 0x04, 0xE9,
19800x08, 0xB4, 0x02, 0xD0, 0x0E, 0x40, 0x2F, 0x00, 0x71, 0x08, 0xC4, 0x01, 0x90,
19810x0E, 0x40, 0x3F, 0x00, 0xE9, 0x00, 0xC4, 0x00, 0x18, 0x07, 0x40, 0x20, 0x00,
19820x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x21, 0x10, 0x9D,
19830x03, 0x34, 0x00, 0x90, 0x89, 0x40, 0xF2, 0x80, 0xC1, 0x02, 0x34, 0x0C, 0xD0,
19840x1C, 0x60, 0x57, 0x00, 0x05, 0x06, 0x14, 0x0E, 0xD8, 0x2C, 0x40, 0xB1, 0x00,
19850xCD, 0x0A, 0x00, 0xAC, 0x98, 0x00, 0x42, 0x09, 0x00, 0x04, 0x00, 0x00, 0x00,
19860x00, 0x00, 0x00, 0x00, 0x55, 0xA0, 0xC4, 0x20, 0x1F, 0x52, 0x7C, 0x0A, 0xD0,
19870xA1, 0xC0, 0xFD, 0x80, 0xFB, 0x01, 0x7C, 0x2C, 0xF0, 0x0F, 0xC8, 0xD7, 0x01,
19880x93, 0x11, 0x4C, 0x12, 0xB0, 0x3F, 0x41, 0xBF, 0x00, 0xC9, 0x08, 0x48, 0x0E,
19890x10, 0x91, 0xC0, 0x74, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
19900x0D, 0x08, 0x27, 0x20, 0x9F, 0x84, 0x7E, 0x60, 0x70, 0x21, 0xC8, 0x37, 0x09,
19910xDF, 0x00, 0x7C, 0x08, 0xF0, 0x0D, 0xC1, 0xA6, 0x00, 0x9E, 0x40, 0x7E, 0x40,
19920x70, 0x0D, 0xC1, 0x37, 0x22, 0x1B, 0x00, 0x7C, 0x1A, 0xF0, 0x89, 0xC4, 0x97,
19930x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x08, 0x0B, 0x84,
19940x33, 0x80, 0xCC, 0x02, 0xF0, 0x03, 0xC0, 0x3E, 0x00, 0xF7, 0x10, 0xF8, 0x00,
19950xF2, 0x0F, 0xC0, 0x1C, 0x04, 0x33, 0x80, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F,
19960x04, 0xFF, 0x00, 0xCC, 0x02, 0xF0, 0x03, 0xC0, 0x04, 0x20, 0x0C, 0x00, 0x00,
19970x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x46, 0x08, 0x17, 0x11, 0x4C, 0x06,
19980xD0, 0x11, 0x40, 0x34, 0x00, 0xD1, 0x80, 0x74, 0x04, 0xF0, 0x0C, 0x40, 0x85,
19990x02, 0x11, 0x03, 0x64, 0x06, 0xD0, 0x0D, 0x40, 0x37, 0x08, 0x1D, 0x11, 0x6C,
20000x04, 0xD0, 0x38, 0xC8, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20010x00, 0x01, 0xA0, 0x44, 0x04, 0x11, 0x21, 0x54, 0x06, 0xD8, 0x39, 0x66, 0x32,
20020x00, 0xD5, 0x00, 0x74, 0x0E, 0xD0, 0x0D, 0x40, 0x04, 0x04, 0x31, 0x21, 0x74,
20030x04, 0xD8, 0x0D, 0x40, 0x37, 0x00, 0xDD, 0x08, 0x44, 0x06, 0xD0, 0x31, 0x40,
20040x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0A, 0x24,
20050x00, 0x85, 0x00, 0x05, 0x00, 0xD2, 0x08, 0x60, 0x30, 0x00, 0xC1, 0x00, 0x34,
20060x02, 0xD0, 0x0D, 0x40, 0x21, 0x20, 0x01, 0x00, 0x34, 0x00, 0xD2, 0x0C, 0x40,
20070x33, 0x00, 0x1D, 0x00, 0x24, 0x02, 0xD0, 0x09, 0x40, 0x42, 0x00, 0x00, 0x00,
20080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x30, 0x06, 0x00, 0x11, 0x00, 0x5C,
20090x82, 0xF8, 0x01, 0xC0, 0x3E, 0x00, 0xF6, 0x00, 0x7C, 0x02, 0xF0, 0x0F, 0x40,
20100x04, 0x00, 0x13, 0x00, 0x74, 0x00, 0xF0, 0x0F, 0xC0, 0x3F, 0x90, 0x1F, 0x00,
20110x4C, 0x02, 0xF0, 0x01, 0xC0, 0x04, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
20120x00, 0x00, 0x85, 0xA8, 0x2F, 0x00, 0xB6, 0x00, 0xCC, 0x02, 0xF8, 0x0B, 0xC0,
20130x3F, 0x00, 0xFE, 0x80, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0B, 0x40, 0x3F, 0x00,
20140xA4, 0x02, 0xF2, 0x0F, 0xC0, 0x3B, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03,
20150xC0, 0x17, 0x61, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8,
20160x7F, 0x40, 0xF3, 0x46, 0xFC, 0x03, 0x30, 0x4F, 0xC0, 0x4F, 0x12, 0x3B, 0x4C,
20170xCC, 0x23, 0x30, 0x4F, 0xC2, 0x0C, 0x80, 0x3F, 0x01, 0xFC, 0x07, 0x71, 0x8F,
20180xC0, 0x0F, 0x08, 0x73, 0x01, 0xFC, 0x00, 0x30, 0x03, 0xC0, 0x0C, 0x00, 0x0E,
20190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x10, 0x7D, 0x00, 0xE1, 0x08,
20200xF4, 0xAF, 0x10, 0xBF, 0x40, 0x27, 0x01, 0x5D, 0x08, 0xC4, 0x3B, 0x50, 0x9F,
20210x40, 0x44, 0x00, 0x5D, 0x00, 0xF4, 0x07, 0x10, 0x0F, 0x40, 0x07, 0x00, 0xD5,
20220x81, 0x74, 0x00, 0xB1, 0x01, 0x80, 0x0E, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
20230x00, 0x00, 0x00, 0x13, 0x20, 0x33, 0x00, 0xC4, 0x04, 0x34, 0x03, 0x55, 0x0C,
20240x40, 0x43, 0x01, 0x8D, 0x44, 0x14, 0x03, 0x50, 0x0C, 0x50, 0x00, 0x00, 0x0D,
20250x80, 0x34, 0x03, 0x10, 0x4C, 0x40, 0x07, 0x00, 0x41, 0x00, 0x34, 0x00, 0xD0,
20260x00, 0x40, 0x4D, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
20270xA0, 0x35, 0x00, 0xD5, 0x00, 0x70, 0x03, 0x50, 0x0D, 0x40, 0x67, 0x00, 0x5D,
20280x14, 0x54, 0x03, 0x10, 0x0D, 0x00, 0x6C, 0x00, 0x5D, 0x10, 0x74, 0x03, 0x10,
20290x0F, 0x40, 0x6F, 0x00, 0xD5, 0x04, 0x70, 0x06, 0xD0, 0x11, 0x40, 0x0F, 0x20,
20300x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x36, 0x00, 0xD7,
20310x00, 0x7E, 0x03, 0x70, 0x0D, 0xC4, 0x47, 0x00, 0x1B, 0x03, 0x5D, 0x03, 0x70,
20320x0D, 0x80, 0x44, 0x20, 0xDD, 0x00, 0x3C, 0x03, 0x74, 0x0D, 0xC4, 0x47, 0x00,
20330x93, 0x06, 0x78, 0x04, 0x70, 0x51, 0xC0, 0x01, 0x00, 0x0E, 0x00, 0x00, 0x00,
20340x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xFB, 0x00, 0xBC, 0x03, 0xB0,
20350x0F, 0xC0, 0x0F, 0x00, 0x6A, 0x20, 0xEC, 0x03, 0xF0, 0x0F, 0x84, 0x0F, 0x08,
20360xFC, 0x00, 0xFE, 0x03, 0xE0, 0x0F, 0x80, 0x0F, 0x00, 0xBF, 0x01, 0xB8, 0x02,
20370xB0, 0x09, 0xC2, 0x3E, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20380x02, 0x08, 0x31, 0x10, 0xD3, 0x40, 0x5C, 0x03, 0xF3, 0x0D, 0xC0, 0x06, 0x00,
20390x9F, 0x02, 0x2C, 0x03, 0x70, 0x4C, 0xC0, 0x26, 0x04, 0xD7, 0x22, 0x7C, 0x13,
20400x30, 0x0D, 0xC0, 0x24, 0x00, 0x9F, 0x02, 0x4C, 0x00, 0x30, 0x01, 0xC0, 0x28,
20410x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xA0, 0x34, 0x00,
20420xF1, 0x20, 0xC4, 0x17, 0xD0, 0x4F, 0x40, 0x24, 0x00, 0x5D, 0x40, 0xC0, 0x17,
20430x10, 0x7F, 0x40, 0xE7, 0x00, 0xDD, 0x06, 0x70, 0x03, 0x11, 0xAF, 0x10, 0x24,
20440x00, 0x9D, 0x45, 0x44, 0x46, 0x11, 0x19, 0x11, 0x4C, 0x00, 0x02, 0x00, 0x00,
20450x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x72, 0x40, 0xC9, 0x20, 0x24, 0x03,
20460xD0, 0x6C, 0x40, 0x22, 0x00, 0x08, 0x20, 0x20, 0x03, 0xD0, 0x1C, 0x40, 0xC2,
20470x88, 0x84, 0x20, 0x30, 0x0B, 0x10, 0x0C, 0x40, 0x04, 0x00, 0x8D, 0x21, 0x25,
20480x04, 0x14, 0x11, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20490x00, 0x0F, 0x00, 0x70, 0x04, 0xE9, 0x01, 0xB4, 0x17, 0xD8, 0x1E, 0x40, 0x6A,
20500x08, 0xAD, 0x05, 0xA4, 0x07, 0x90, 0x1E, 0x4A, 0x5B, 0x0A, 0xED, 0x6B, 0x34,
20510x07, 0x81, 0x9E, 0x42, 0x58, 0x00, 0xAD, 0x01, 0xB6, 0x05, 0x10, 0xB6, 0x40,
20520x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x18, 0x30,
20530x00, 0xCB, 0x00, 0x2C, 0x03, 0xF0, 0x0C, 0xC0, 0x22, 0x01, 0x9F, 0x00, 0x6C,
20540x03, 0xF0, 0x0C, 0xC0, 0x02, 0x04, 0x87, 0x05, 0x3C, 0x43, 0x20, 0x0D, 0xC0,
20550x10, 0x00, 0xCF, 0x00, 0x6C, 0x01, 0x30, 0x00, 0xC0, 0x48, 0x68, 0x00, 0x00,
20560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0x7D, 0x00, 0xF7, 0x10, 0xC1,
20570x53, 0xF0, 0x0E, 0xC0, 0x3D, 0x00, 0xBB, 0x04, 0xDC, 0x0B, 0x7A, 0x8F, 0xC1,
20580x3F, 0x08, 0xFF, 0x28, 0xFC, 0x07, 0x72, 0x2F, 0xC0, 0x3F, 0x00, 0xEF, 0x00,
20590x4C, 0x03, 0xF0, 0x07, 0xC0, 0x0B, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
20600x00, 0x00, 0x10, 0xA0, 0x37, 0x00, 0xDF, 0x03, 0x5C, 0x4F, 0x30, 0x3D, 0xC9,
20610x04, 0x10, 0x5F, 0x40, 0x4C, 0x37, 0x30, 0x2D, 0xC0, 0x56, 0x40, 0xDB, 0x01,
20620x4C, 0x03, 0xB3, 0x2D, 0xC2, 0x14, 0x00, 0x8F, 0x00, 0x4C, 0x00, 0xF0, 0x0D,
20630xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x80,
20640x39, 0x01, 0xCD, 0x14, 0x02, 0x13, 0xB0, 0x4C, 0x4A, 0x08, 0x00, 0xCC, 0x00,
20650x84, 0x13, 0xB0, 0x4E, 0x41, 0x1B, 0x00, 0xE1, 0x00, 0x84, 0x0B, 0xD0, 0x0F,
20660x40, 0x18, 0x00, 0xAD, 0x00, 0x84, 0x03, 0xD0, 0x0E, 0xC0, 0x4E, 0x00, 0x06,
20670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x02, 0xED, 0x01,
20680x94, 0x17, 0x10, 0x9E, 0x40, 0x79, 0x00, 0xED, 0x01, 0x04, 0x17, 0x10, 0x1E,
20690x40, 0x61, 0x88, 0xE1, 0x21, 0x96, 0x17, 0xD0, 0x9E, 0x44, 0x78, 0x00, 0xBD,
20700x01, 0x85, 0x05, 0xD0, 0x1C, 0x40, 0x11, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
20710x00, 0x00, 0x00, 0x16, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x14, 0x03, 0x90, 0x0C,
20720x40, 0x71, 0x01, 0xCD, 0x88, 0x04, 0x03, 0x90, 0x0C, 0x40, 0x33, 0x00, 0xC1,
20730x3A, 0x14, 0x03, 0xD0, 0x0C, 0x42, 0xF0, 0x04, 0x8D, 0x03, 0x44, 0x0B, 0xD0,
20740x8D, 0x40, 0x5B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17,
20750x20, 0x15, 0x00, 0x5F, 0x00, 0x5C, 0x01, 0x30, 0x05, 0x40, 0xDD, 0x01, 0x7F,
20760xC1, 0x4D, 0x01, 0x31, 0x05, 0xC0, 0x9E, 0x04, 0x71, 0x03, 0x5C, 0x01, 0xB0,
20770x05, 0xC4, 0xDC, 0x01, 0x7F, 0x59, 0xCC, 0x09, 0xF0, 0xB7, 0x40, 0x5D, 0x00,
20780x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x08, 0x05, 0x00, 0x1F,
20790x00, 0x64, 0x00, 0xF0, 0x21, 0x50, 0x06, 0x20, 0x0B, 0x80, 0x7C, 0x00, 0xF0,
20800x01, 0xC0, 0x86, 0x04, 0x17, 0x00, 0x68, 0x08, 0xA2, 0x01, 0xD0, 0x07, 0x08,
20810x1F, 0x22, 0x7C, 0x48, 0xF0, 0x01, 0xC0, 0x4A, 0x20, 0x04, 0x00, 0x00, 0x00,
20820x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x65, 0x00, 0x9F, 0x00, 0x6C, 0x82, 0xF0,
20830x09, 0xC0, 0x27, 0x00, 0x97, 0x00, 0x6C, 0x22, 0xF0, 0x49, 0xC4, 0x27, 0x00,
20840x9F, 0x00, 0x7C, 0x0A, 0xD0, 0x29, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x50, 0x02,
20850x30, 0x09, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20860x01, 0x20, 0x2C, 0x00, 0x9D, 0x40, 0x74, 0x02, 0xD0, 0xA9, 0x40, 0x27, 0x10,
20870x94, 0x00, 0x44, 0x02, 0xD0, 0x29, 0x04, 0xA7, 0x01, 0x9D, 0x11, 0xF4, 0x4E,
20880xC2, 0x29, 0x50, 0x24, 0x00, 0x8D, 0x04, 0x44, 0x2A, 0x50, 0x09, 0x40, 0x04,
20890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x02,
20900x9D, 0x00, 0x74, 0x22, 0xD0, 0x09, 0x40, 0x23, 0x00, 0x90, 0x40, 0x64, 0x02,
20910xD0, 0x09, 0x01, 0x26, 0x82, 0x9D, 0x01, 0x74, 0x02, 0xC0, 0x28, 0x40, 0x24,
20920x00, 0x9C, 0x80, 0x54, 0x02, 0x12, 0x29, 0x46, 0x60, 0x00, 0x02, 0x00, 0x00,
20930x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x21, 0x00, 0x8D, 0x48, 0x34, 0x02,
20940xD1, 0x08, 0x40, 0x23, 0x62, 0x81, 0x08, 0x04, 0x0A, 0xD0, 0x08, 0x40, 0x23,
20950x21, 0x8D, 0x20, 0x34, 0x02, 0xD0, 0xC8, 0x40, 0x20, 0x01, 0x8D, 0x80, 0x10,
20960x53, 0x52, 0x48, 0x41, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
20970x00, 0x1D, 0xB8, 0x46, 0x00, 0x1F, 0x36, 0x7C, 0x50, 0xF0, 0x45, 0xC1, 0x87,
20980x00, 0x12, 0x16, 0x6C, 0x50, 0xF1, 0x41, 0x81, 0x46, 0x00, 0x0F, 0x0A, 0x7C,
20990x04, 0xF0, 0x31, 0xC4, 0xC4, 0x02, 0x1F, 0x00, 0x58, 0x10, 0x30, 0x41, 0xE2,
21000x74, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0xA7,
21010x00, 0x9F, 0x24, 0x78, 0x82, 0xF0, 0x09, 0xCA, 0x2F, 0x01, 0xFC, 0x04, 0x7C,
21020x06, 0xF1, 0x09, 0x80, 0x2F, 0x02, 0xBF, 0x01, 0x7C, 0x0A, 0xB0, 0xC9, 0xC0,
21030x6F, 0x02, 0xBF, 0x00, 0xEC, 0x52, 0xF0, 0x4B, 0xD1, 0x77, 0x60, 0x0E, 0x00,
21040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x6F, 0x00, 0x9F, 0x16, 0xFC,
21050x02, 0x34, 0x4B, 0xC0, 0x24, 0x00, 0x9F, 0x02, 0xFC, 0x22, 0xF0, 0x0B, 0xC0,
21060x2C, 0x60, 0xB3, 0x00, 0xFC, 0x46, 0xF0, 0x0B, 0xC0, 0x24, 0x00, 0xB3, 0x80,
21070xCD, 0x82, 0xF0, 0x0B, 0xC0, 0x77, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
21080x00, 0x00, 0x18, 0x00, 0x87, 0x00, 0x1D, 0x02, 0x74, 0x00, 0x10, 0x01, 0x40,
21090x04, 0x01, 0x0D, 0x8A, 0x74, 0x04, 0xD0, 0xA1, 0x40, 0x04, 0x08, 0x11, 0x00,
21100x74, 0x08, 0xD0, 0x41, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0xD1, 0x01,
21110x42, 0x63, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0,
21120xA1, 0x00, 0x8D, 0x00, 0x34, 0x0A, 0x11, 0x2C, 0x40, 0x20, 0x24, 0x89, 0x40,
21130x34, 0x1A, 0xD0, 0x08, 0x40, 0x20, 0x10, 0x85, 0x00, 0x34, 0x02, 0xD8, 0x08,
21140x61, 0x20, 0x40, 0x95, 0x00, 0x14, 0x06, 0xD0, 0x08, 0x40, 0x4B, 0x00, 0x04,
21150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x28, 0x25, 0x00, 0x9D, 0x00,
21160x70, 0x02, 0x12, 0x09, 0x40, 0xA4, 0x0A, 0x9D, 0x20, 0x74, 0x02, 0xD0, 0x09,
21170x10, 0x24, 0x10, 0x95, 0x20, 0x74, 0x82, 0xD0, 0x08, 0x4C, 0x24, 0x04, 0x95,
21180x08, 0x54, 0xA3, 0xD0, 0x09, 0x40, 0x63, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00,
21190x00, 0x00, 0x00, 0x05, 0x2A, 0x25, 0x20, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x09,
21200xD0, 0x64, 0x00, 0x9F, 0x02, 0xFC, 0x02, 0xF0, 0x09, 0xC4, 0xA4, 0x04, 0x97,
21210x00, 0x7C, 0x02, 0xF2, 0x09, 0x50, 0x64, 0x02, 0x87, 0x00, 0x5C, 0x02, 0xF0,
21220x09, 0xC0, 0x17, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
21230x00, 0x25, 0x00, 0x9F, 0x00, 0x7E, 0x02, 0xF0, 0x08, 0xC0, 0x67, 0x20, 0x9F,
21240x00, 0x7C, 0x02, 0xF0, 0x09, 0xC3, 0x27, 0x02, 0x9B, 0x10, 0x7C, 0x82, 0xF0,
21250x09, 0xC0, 0x67, 0x00, 0x9A, 0x00, 0x6C, 0x02, 0xF0, 0x09, 0xC0, 0x5B, 0x20,
21260x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x17,
21270x00, 0x4C, 0x00, 0xB0, 0x01, 0xC8, 0x07, 0x00, 0x13, 0x02, 0x6C, 0x20, 0xF0,
21280x81, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x4C, 0x00, 0x34, 0x01, 0xC0, 0x87, 0x00,
21290x13, 0x04, 0x7C, 0x04, 0x30, 0x01, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00,
21300x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x14, 0x04, 0x51, 0x00, 0x2C, 0x01, 0xD0,
21310xA7, 0x48, 0x17, 0x08, 0x51, 0x00, 0x44, 0x01, 0xD0, 0x26, 0x40, 0x5B, 0x20,
21320x7C, 0x83, 0xC4, 0x01, 0x11, 0x07, 0x41, 0x17, 0x00, 0x70, 0x00, 0xF4, 0x01,
21330x10, 0x07, 0x44, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21340x10, 0x80, 0x32, 0x00, 0xC5, 0x00, 0x14, 0x27, 0x9A, 0x0C, 0x44, 0x33, 0x00,
21350xC0, 0x00, 0x24, 0x07, 0xD0, 0x2C, 0x40, 0x63, 0x20, 0xCD, 0x00, 0x00, 0x02,
21360x90, 0x5C, 0x40, 0x37, 0x00, 0x81, 0x03, 0x30, 0x03, 0x94, 0x1C, 0x40, 0x43,
21370x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x79, 0x00,
21380xE1, 0x01, 0xA5, 0x03, 0xD0, 0x06, 0x40, 0x7B, 0x02, 0xE1, 0x49, 0x84, 0x02,
21390xD0, 0x06, 0x40, 0xBB, 0x80, 0x6D, 0x03, 0x84, 0x46, 0x92, 0x06, 0x40, 0x33,
21400x00, 0xE1, 0x02, 0xB4, 0x07, 0x90, 0x26, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00,
21410x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x79, 0x00, 0xF7, 0x09, 0x9C, 0x06,
21420xB0, 0x1E, 0xC0, 0x7F, 0x45, 0xE2, 0x15, 0xAC, 0x07, 0xF0, 0x1A, 0xC0, 0x6B,
21430x20, 0xBF, 0x01, 0x8C, 0x06, 0xA0, 0x1A, 0xC0, 0x7B, 0x05, 0xA3, 0x01, 0xFC,
21440x07, 0xB0, 0x1E, 0xC0, 0x53, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21450x00, 0x10, 0xB8, 0x31, 0x00, 0xDF, 0x0C, 0x5C, 0x02, 0xF1, 0x01, 0xC0, 0xB7,
21460x01, 0xDF, 0x86, 0x7C, 0x22, 0xF0, 0x09, 0xE0, 0x26, 0x00, 0x1F, 0x00, 0x3C,
21470x02, 0x70, 0x09, 0xC0, 0x37, 0x01, 0xDF, 0x80, 0x7C, 0x02, 0x72, 0x05, 0xC0,
21480x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x7D,
21490x00, 0xFF, 0x01, 0xDE, 0x27, 0x70, 0x9B, 0xC0, 0x7F, 0x00, 0xFF, 0x21, 0xDC,
21500x27, 0xF0, 0x1F, 0xC0, 0x6F, 0x00, 0x7B, 0x09, 0xCC, 0x07, 0x30, 0x1F, 0xC0,
21510x7C, 0x26, 0xBF, 0x81, 0xFC, 0x27, 0x31, 0x9F, 0xC0, 0x18, 0x00, 0x04, 0x00,
21520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x39, 0x00, 0xED, 0x00, 0x84,
21530x02, 0xC0, 0x22, 0x42, 0x3B, 0x00, 0xE9, 0x00, 0x80, 0x02, 0xD0, 0x22, 0x40,
21540x3B, 0x00, 0x19, 0x01, 0x94, 0x0A, 0x50, 0x06, 0x40, 0x79, 0x0A, 0xED, 0x00,
21550xB4, 0x33, 0x30, 0x22, 0x40, 0x54, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
21560x00, 0x00, 0x88, 0x00, 0x39, 0x00, 0xED, 0x00, 0x94, 0x82, 0x50, 0x02, 0x00,
21570x3B, 0x00, 0xED, 0x08, 0x94, 0x03, 0xD1, 0x0A, 0x40, 0x2B, 0x00, 0x39, 0x10,
21580x24, 0x03, 0xD0, 0x04, 0x40, 0x38, 0x00, 0xAD, 0x00, 0xB4, 0x09, 0x12, 0x0E,
21590x60, 0x61, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x20,
21600x21, 0x00, 0xCD, 0x00, 0x04, 0x02, 0xD0, 0x00, 0x40, 0xF3, 0x00, 0xCD, 0x02,
21610x04, 0x02, 0xD0, 0x08, 0x48, 0x73, 0x84, 0x09, 0x01, 0x34, 0x03, 0xD0, 0x04,
21620x64, 0x31, 0x82, 0xCD, 0x00, 0x34, 0x04, 0x11, 0x00, 0x40, 0x09, 0x20, 0x04,
21630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x10, 0xFF, 0x00,
21640x54, 0x03, 0x70, 0x09, 0xC0, 0x3F, 0x03, 0xFF, 0x01, 0x5C, 0x03, 0xF0, 0x09,
21650xC8, 0xA7, 0x01, 0x9B, 0x01, 0x64, 0x02, 0xB0, 0x0D, 0xCC, 0xFC, 0x12, 0x9D,
21660x0A, 0x7C, 0x90, 0x33, 0x19, 0xC2, 0x75, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
21670x00, 0x00, 0x00, 0x0D, 0x00, 0x37, 0x20, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x29,
21680xC0, 0x37, 0x08, 0xDB, 0x18, 0x7E, 0x02, 0xF2, 0x01, 0x40, 0x37, 0x00, 0x1E,
21690x00, 0x5C, 0x0A, 0x38, 0x05, 0xC0, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x08, 0x74,
21700x81, 0x50, 0x16, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
21710x08, 0x3F, 0x10, 0xDF, 0x00, 0xFC, 0x0B, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xDF,
21720x00, 0xFC, 0x07, 0xF1, 0x0A, 0xC0, 0x2C, 0x40, 0x32, 0x01, 0xFC, 0x02, 0xF2,
21730x1A, 0x80, 0x3C, 0x00, 0xB3, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC1, 0x07, 0x26,
21740x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0xDD,
21750x00, 0x64, 0x07, 0xD0, 0x19, 0x42, 0x33, 0x00, 0xD1, 0x80, 0x74, 0x07, 0xD0,
21760x39, 0x40, 0x00, 0x00, 0x11, 0x07, 0x74, 0x00, 0xD0, 0x19, 0xC0, 0x37, 0x00,
21770x9B, 0x18, 0x64, 0x0C, 0xD0, 0x31, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00,
21780x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x03, 0xD8,
21790x19, 0x40, 0x37, 0x00, 0xD9, 0x00, 0x74, 0x13, 0xD0, 0x11, 0x40, 0xA6, 0x00,
21800x35, 0x08, 0x74, 0x03, 0xC8, 0x49, 0x46, 0x39, 0x00, 0x91, 0x00, 0x60, 0x04,
21810xD0, 0x19, 0x40, 0x07, 0x08, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21820x10, 0x20, 0x30, 0x00, 0xCD, 0x00, 0x24, 0x02, 0xD8, 0x08, 0x40, 0x37, 0x00,
21830xC1, 0x00, 0x34, 0x82, 0xD0, 0x00, 0x40, 0x30, 0x80, 0x05, 0x00, 0x34, 0x02,
21840xD0, 0x00, 0x40, 0x32, 0x01, 0xC9, 0xA0, 0x24, 0x00, 0xD0, 0x00, 0x40, 0x43,
21850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x36, 0x00,
21860xFF, 0x00, 0x7C, 0x03, 0xF0, 0x01, 0xC0, 0x3F, 0x00, 0xFB, 0x00, 0x74, 0x02,
21870xD1, 0x01, 0xC0, 0x24, 0x00, 0x17, 0x04, 0x7C, 0x03, 0xF0, 0x01, 0xC0, 0x3D,
21880x05, 0x13, 0x40, 0x7C, 0x00, 0xF0, 0x01, 0xC2, 0x07, 0x64, 0x08, 0x00, 0x00,
21890x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xB8, 0x2F, 0x00, 0xFF, 0x00, 0xEC, 0x02,
21900xF0, 0x03, 0xCC, 0x3F, 0x00, 0xFB, 0x00, 0xF8, 0x02, 0xF2, 0x03, 0x88, 0x1F,
21910x00, 0x1B, 0x16, 0xFC, 0x01, 0xF0, 0x03, 0xC0, 0x37, 0x00, 0x7F, 0x00, 0xFC,
21920x00, 0xF0, 0x03, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21930x00, 0x03, 0xAA, 0x7B, 0x12, 0xEF, 0x09, 0xEC, 0x07, 0xB0, 0x9E, 0xC0, 0x7A,
21940x00, 0xF7, 0x09, 0xEC, 0x07, 0xF0, 0x3F, 0xC0, 0x7B, 0x00, 0xF7, 0x29, 0xCC,
21950x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0xF3, 0x01, 0xFC, 0xA7, 0xB0, 0x1F, 0xC0,
21960x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x07,
21970x00, 0x1D, 0x44, 0x44, 0x04, 0x32, 0x01, 0x40, 0x44, 0x20, 0x11, 0x04, 0x4C,
21980x10, 0x10, 0x01, 0xC0, 0x44, 0x00, 0x11, 0x00, 0x44, 0x10, 0xD0, 0x01, 0x40,
21990x44, 0x10, 0x11, 0x20, 0x74, 0x00, 0x10, 0x11, 0xC0, 0x0E, 0x00, 0x0C, 0x00,
22000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x33, 0x11, 0xDD, 0x00, 0x24,
22010x03, 0x91, 0x4D, 0x42, 0x33, 0x00, 0xC5, 0x00, 0x34, 0x43, 0xD0, 0x4C, 0x40,
22020x32, 0x00, 0xC5, 0x44, 0x14, 0x43, 0xD0, 0x0C, 0x62, 0x32, 0x00, 0xC1, 0x80,
22030x34, 0x13, 0x90, 0x0D, 0x42, 0x4D, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
22040x00, 0x00, 0x03, 0xA0, 0x05, 0x00, 0x1D, 0x00, 0x54, 0x00, 0x90, 0x01, 0x40,
22050x05, 0x08, 0x01, 0x00, 0x34, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x05, 0x00,
22060x54, 0x00, 0xDA, 0x01, 0x44, 0x04, 0x40, 0x11, 0x00, 0x34, 0x00, 0x11, 0x01,
22070x40, 0x0F, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
22080x37, 0x08, 0xDF, 0x80, 0x6C, 0x83, 0xB0, 0x0D, 0xC0, 0x37, 0x00, 0xD6, 0x00,
22090x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x33, 0x00, 0xD7, 0x00, 0x5C, 0x03, 0xE0, 0x0D,
22100xC0, 0x32, 0x00, 0xD3, 0x00, 0x7C, 0x03, 0xB1, 0x0C, 0xC0, 0x21, 0x00, 0x0E,
22110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x0D, 0x00, 0x3F, 0x00,
22120xEC, 0x00, 0x70, 0x03, 0xC8, 0x0E, 0x20, 0x3E, 0x00, 0xCC, 0x00, 0xF0, 0x03,
22130xC0, 0x0C, 0x08, 0x3B, 0x00, 0xEC, 0x00, 0xF2, 0x03, 0xC0, 0x0E, 0x00, 0x3F,
22140x00, 0xE4, 0x00, 0xF0, 0x03, 0xC0, 0x1E, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
22150x00, 0x00, 0x00, 0x0A, 0x00, 0x35, 0x20, 0xD7, 0xC8, 0x5C, 0x83, 0xC0, 0x0D,
22160xC0, 0x35, 0x01, 0xD7, 0x00, 0x5C, 0x03, 0xF0, 0x4D, 0xC0, 0x36, 0x00, 0xD7,
22170x00, 0x7C, 0x13, 0x30, 0x4D, 0xC4, 0x36, 0x00, 0xD7, 0x00, 0x7C, 0x03, 0xF0,
22180x0D, 0xD0, 0x28, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
22190xA0, 0xC4, 0x00, 0x01, 0x83, 0x04, 0x04, 0x10, 0xE0, 0x40, 0x80, 0x00, 0x11,
22200x00, 0x44, 0x00, 0xD0, 0x01, 0x40, 0x07, 0x02, 0x11, 0x00, 0x74, 0x48, 0xB0,
22210x50, 0x40, 0xC7, 0x00, 0x11, 0x00, 0x70, 0x24, 0xD1, 0x01, 0x40, 0x4D, 0x00,
22220x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x20, 0xB0, 0x04, 0xC5,
22230x53, 0x14, 0x03, 0x50, 0x0C, 0x42, 0x31, 0x00, 0xC5, 0x00, 0x14, 0x03, 0xD0,
22240x0D, 0x00, 0x32, 0x00, 0xC5, 0x00, 0x34, 0x0F, 0x92, 0x3C, 0x44, 0xB2, 0x09,
22250xC5, 0x00, 0x24, 0x03, 0xD0, 0x0C, 0x40, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
22260x00, 0x00, 0x00, 0x00, 0x0F, 0x08, 0x4C, 0x06, 0x31, 0x01, 0xC4, 0x04, 0x11,
22270x13, 0x40, 0x48, 0x08, 0x25, 0x01, 0x84, 0x04, 0xD0, 0x12, 0x40, 0x4B, 0x00,
22280x21, 0x01, 0xF4, 0x04, 0xD2, 0x92, 0x40, 0x4B, 0x0C, 0x21, 0x01, 0xB4, 0x14,
22290xD0, 0x92, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22300x12, 0x10, 0x30, 0x00, 0xC7, 0x08, 0x1C, 0x63, 0x72, 0x0C, 0xC0, 0x31, 0x02,
22310xD5, 0x00, 0x1C, 0x13, 0xF0, 0x4C, 0xC0, 0x32, 0x01, 0xC7, 0x28, 0x3C, 0x23,
22320xB0, 0x8C, 0xC0, 0x32, 0x00, 0xC6, 0x00, 0x3C, 0x63, 0xF2, 0x8C, 0xC0, 0x4A,
22330x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x28, 0x0D, 0x00,
22340x3F, 0x00, 0xBC, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x0A, 0x3B, 0x08, 0xFC, 0x00,
22350xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x08, 0xBC, 0xA0, 0xA0, 0x81, 0xC0, 0x0B,
22360x10, 0x1F, 0x00, 0xFC, 0x30, 0xF0, 0x90, 0xC0, 0x09, 0x60, 0x04, 0x00, 0x00,
22370x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37, 0x00, 0xD3, 0x00, 0x7E, 0x03,
22380x70, 0x0D, 0x80, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x30, 0x0D, 0xC0, 0x30,
22390x00, 0xDA, 0x00, 0x5C, 0x03, 0xF0, 0x0C, 0xC0, 0x30, 0x00, 0xD3, 0x00, 0x7C,
22400x03, 0x34, 0x0D, 0xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22410x00, 0x13, 0x80, 0x0D, 0x08, 0x20, 0x00, 0xB2, 0x00, 0xD1, 0x02, 0x40, 0x0B,
22420x00, 0x2D, 0x00, 0xB4, 0x00, 0x50, 0x02, 0xC0, 0x09, 0x00, 0x21, 0xA0, 0xB4,
22430x00, 0xD0, 0x02, 0xC4, 0x0A, 0x00, 0x2B, 0x80, 0xB4, 0x00, 0x10, 0x02, 0xC0,
22440x4E, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x79,
22450x20, 0xE9, 0x01, 0x94, 0x87, 0xD0, 0x1E, 0x60, 0x7B, 0x00, 0xED, 0x01, 0xF4,
22460x07, 0xD0, 0x1F, 0x40, 0x7B, 0x00, 0xE9, 0x01, 0xB4, 0x07, 0xD0, 0x1F, 0x40,
22470x7E, 0x00, 0xE9, 0x21, 0xB4, 0x07, 0x10, 0x1E, 0x40, 0x10, 0x00, 0x04, 0x00,
22480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x02, 0x00, 0x09, 0x00, 0x34,
22490x00, 0xD2, 0x01, 0x40, 0x03, 0x00, 0x0D, 0x00, 0x74, 0x00, 0xD0, 0x00, 0x40,
22500x01, 0x80, 0x0D, 0x00, 0x34, 0x80, 0xD0, 0x00, 0x40, 0x02, 0x00, 0x09, 0x00,
22510x36, 0x00, 0x10, 0x00, 0x40, 0x5A, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
22520x00, 0x00, 0x17, 0xA0, 0x11, 0x00, 0x5B, 0x00, 0x78, 0x01, 0x70, 0x05, 0xE0,
22530x17, 0x00, 0x5F, 0x00, 0x7E, 0x01, 0xB1, 0x04, 0xC0, 0x16, 0x00, 0x5B, 0x20,
22540x5C, 0x01, 0xF0, 0x05, 0xC4, 0x14, 0x00, 0x5B, 0x20, 0x7C, 0x01, 0x30, 0x05,
22550xC0, 0x5C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88,
22560x8F, 0x40, 0x37, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3F, 0x00,
22570xFA, 0x00, 0x70, 0x23, 0xC0, 0x0F, 0x00, 0x33, 0x00, 0xF4, 0x08, 0xF0, 0x23,
22580xC0, 0x8F, 0x00, 0x3F, 0x40, 0xF4, 0x08, 0xF0, 0x03, 0xC0, 0x4B, 0x20, 0x04,
22590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x01, 0x97, 0x00,
22600x7C, 0x16, 0x50, 0x09, 0xC0, 0x27, 0x10, 0x9F, 0xA0, 0x7C, 0x02, 0x33, 0x09,
22610xC2, 0x25, 0x20, 0x93, 0x40, 0x74, 0x02, 0x02, 0x09, 0x54, 0xA4, 0x00, 0x97,
22620x00, 0x7C, 0x06, 0x32, 0x29, 0xC2, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
22630x00, 0x00, 0x00, 0x01, 0x20, 0xE6, 0x00, 0x91, 0x05, 0x34, 0x86, 0x10, 0x39,
22640x40, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x50, 0x09, 0x10, 0xA0, 0x04, 0x91,
22650x00, 0x34, 0x06, 0xB2, 0x28, 0x40, 0xE0, 0x08, 0x95, 0x00, 0x30, 0x06, 0x51,
22660x08, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
22670xA0, 0x24, 0x00, 0xB5, 0x04, 0xF4, 0x02, 0x50, 0x6B, 0x40, 0x2D, 0x00, 0xBD,
22680x80, 0xD4, 0x82, 0x18, 0x0B, 0x41, 0x2C, 0xC0, 0xB1, 0x00, 0xD4, 0x12, 0x10,
22690x2B, 0x40, 0x2D, 0x90, 0xB0, 0x80, 0xF4, 0x22, 0x12, 0x0B, 0x42, 0x60, 0x00,
22700x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x3D, 0x00, 0xA1,
22710x00, 0xF4, 0x02, 0x50, 0x0A, 0x40, 0x28, 0x20, 0xAC, 0x28, 0xB4, 0x22, 0x50,
22720x0A, 0x40, 0x28, 0x00, 0xA1, 0xC8, 0xF4, 0x03, 0xD0, 0x0A, 0x40, 0x2D, 0x00,
22730xA4, 0x00, 0xF4, 0x23, 0x50, 0x0E, 0x40, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00,
22740x00, 0x00, 0x00, 0x00, 0x1D, 0x38, 0x06, 0x00, 0x17, 0x80, 0x7C, 0x00, 0x70,
22750x01, 0xC0, 0x07, 0x00, 0x1C, 0x02, 0x7C, 0x08, 0x30, 0x01, 0xC0, 0x05, 0x00,
22760x13, 0x02, 0x5C, 0x00, 0x32, 0xA1, 0xC0, 0x15, 0x00, 0x17, 0x0A, 0x38, 0x08,
22770x30, 0x03, 0xC8, 0x74, 0xE0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22780x1D, 0xB0, 0x25, 0x05, 0x9F, 0x34, 0x7C, 0x02, 0xB0, 0x49, 0xC1, 0x27, 0x00,
22790x9F, 0x04, 0x2C, 0x12, 0xF0, 0x48, 0xC9, 0x27, 0x00, 0x9F, 0x04, 0x7C, 0x52,
22800xB0, 0x19, 0xC0, 0x26, 0x00, 0x9F, 0x01, 0x7C, 0x12, 0xF0, 0x08, 0xC0, 0x77,
22810x40, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x80, 0x2F, 0x00,
22820xBF, 0x08, 0xDC, 0x02, 0xF8, 0x0B, 0xC2, 0x2F, 0x00, 0x8F, 0x02, 0x7C, 0x02,
22830x34, 0x0B, 0xC0, 0x2C, 0x00, 0x93, 0x00, 0xFC, 0x0A, 0x30, 0x0B, 0xC0, 0x2C,
22840x40, 0x83, 0x00, 0xCC, 0x02, 0xB0, 0x0B, 0xC0, 0x74, 0x00, 0x0E, 0x00, 0x00,
22850x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x47, 0x01, 0x1D, 0x25, 0x44, 0x00,
22860xD1, 0x41, 0x41, 0x07, 0x00, 0x1D, 0x04, 0x74, 0x80, 0x10, 0x01, 0x42, 0x05,
22870x08, 0x11, 0x00, 0x74, 0x00, 0xB0, 0x01, 0x42, 0x04, 0x00, 0x11, 0x40, 0x44,
22880x00, 0x11, 0x01, 0x40, 0x61, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
22890x00, 0x12, 0x00, 0x31, 0x15, 0x8D, 0x44, 0x10, 0x02, 0xD8, 0x0C, 0x40, 0x23,
22900x00, 0x8D, 0x04, 0x34, 0x42, 0x10, 0x09, 0x40, 0x20, 0x00, 0x81, 0x14, 0x34,
22910x02, 0x10, 0x08, 0x50, 0x20, 0x80, 0x81, 0x20, 0x15, 0x02, 0xD0, 0x09, 0x40,
22920x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x2A, 0x25,
22930x00, 0x9D, 0x00, 0x44, 0x82, 0xD0, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x00, 0x74,
22940x02, 0x11, 0x09, 0x40, 0x25, 0x20, 0x91, 0x00, 0x74, 0x02, 0x90, 0x08, 0x60,
22950x24, 0x00, 0x91, 0x00, 0x54, 0x02, 0xD0, 0x09, 0x40, 0x61, 0x20, 0x04, 0x00,
22960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x22, 0x25, 0x10, 0x9F, 0x00, 0x5C,
22970x02, 0xD0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x09, 0xC0,
22980x20, 0x08, 0x93, 0x80, 0x7C, 0x02, 0x30, 0x09, 0xC0, 0x20, 0x00, 0x93, 0x00,
22990x5C, 0x82, 0xF0, 0x09, 0xC0, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
23000x00, 0x00, 0x16, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0,
23010x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x40, 0x9F, 0x00,
23020x7C, 0x02, 0xF0, 0x09, 0xC1, 0x27, 0x04, 0x9F, 0x00, 0x6C, 0x42, 0x30, 0x09,
23030x40, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08,
23040x05, 0x00, 0x17, 0x00, 0x4C, 0x00, 0xF0, 0x41, 0xC4, 0x07, 0x01, 0x17, 0x00,
23050x4C, 0x00, 0x70, 0x01, 0xC3, 0x07, 0x00, 0x1F, 0x00, 0x5C, 0x40, 0xB0, 0x01,
23060xC0, 0x04, 0x00, 0x1F, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC1, 0x51, 0x20, 0x04,
23070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1C, 0x02, 0x7D, 0xD8,
23080x44, 0x01, 0x70, 0x27, 0x40, 0x9F, 0x00, 0x51, 0x20, 0x6C, 0x01, 0xD0, 0x76,
23090x42, 0xDF, 0x00, 0x5D, 0x40, 0xEC, 0x0D, 0x11, 0x27, 0x40, 0x1C, 0x00, 0x59,
23100x00, 0xD4, 0x01, 0x14, 0x06, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23110x00, 0x00, 0x00, 0x10, 0xA0, 0x32, 0x00, 0xD5, 0x40, 0x04, 0x26, 0xD0, 0x0C,
23120x40, 0xA3, 0x00, 0xC5, 0x00, 0x44, 0x03, 0x58, 0x0C, 0x48, 0xF3, 0x03, 0xCD,
23130x00, 0x46, 0x07, 0x90, 0x2C, 0x40, 0x32, 0x00, 0xDD, 0x00, 0x40, 0x0F, 0x00,
23140x3C, 0x40, 0x40, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
23150x80, 0x38, 0x20, 0xED, 0x40, 0x85, 0x03, 0x58, 0x0E, 0x68, 0xEF, 0x00, 0xF5,
23160x09, 0xA4, 0x23, 0xD0, 0x06, 0x40, 0x3B, 0x00, 0xFD, 0x45, 0xA4, 0x0B, 0x10,
23170x02, 0x41, 0x2A, 0x04, 0xF9, 0x04, 0x96, 0x0B, 0x12, 0x0E, 0x45, 0x10, 0x00,
23180x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x59, 0x00, 0x77,
23190x01, 0x8C, 0x07, 0xF1, 0x1E, 0x40, 0x6B, 0x00, 0xE7, 0x15, 0x8C, 0x07, 0x70,
23200x16, 0x80, 0x7B, 0x00, 0xEF, 0x01, 0xDC, 0x05, 0xB0, 0x1E, 0xD0, 0x5A, 0x08,
23210xEF, 0x07, 0xCC, 0x06, 0x30, 0x1E, 0xC0, 0x51, 0x60, 0x04, 0x00, 0x00, 0x00,
23220x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x15, 0x00, 0x5F, 0x40, 0x7C, 0x83, 0xF0,
23230x0D, 0xC0, 0x23, 0x00, 0xDB, 0x06, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0x37, 0x00,
23240xCF, 0x08, 0x7E, 0x83, 0xF0, 0x60, 0xD5, 0x15, 0x20, 0xDB, 0x06, 0x7C, 0x02,
23250xD0, 0x0C, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23260x06, 0x20, 0x7D, 0x0A, 0xFF, 0x01, 0xDC, 0xA7, 0xF0, 0x1F, 0xC0, 0x7F, 0x00,
23270xE7, 0x01, 0x8C, 0x0F, 0xB0, 0x13, 0xC8, 0x7B, 0x00, 0xF3, 0x03, 0xCC, 0x07,
23280x30, 0x1B, 0xD0, 0x78, 0xA2, 0xFB, 0x03, 0xCC, 0x07, 0xF0, 0x1A, 0xC0, 0x18,
23290x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x39, 0x00,
23300xEC, 0x18, 0xB4, 0x83, 0xD0, 0x0E, 0x42, 0x3B, 0x28, 0xE1, 0x10, 0x94, 0x03,
23310x50, 0x22, 0x44, 0x3B, 0x06, 0xE5, 0x00, 0xD4, 0x03, 0x50, 0x43, 0x40, 0x28,
23320x02, 0xE1, 0x04, 0x84, 0x13, 0x71, 0x4A, 0x48, 0x54, 0x00, 0x04, 0x00, 0x00,
23330x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x02, 0x39, 0x10, 0xED, 0x00, 0x94, 0x03,
23340xC0, 0x06, 0x40, 0x3B, 0x04, 0xF5, 0x00, 0xE4, 0x43, 0x10, 0x02, 0x40, 0x3F,
23350x00, 0xFD, 0x00, 0xD4, 0x01, 0x50, 0x0A, 0x61, 0x18, 0x84, 0xE1, 0xB0, 0x84,
23360x42, 0xD2, 0x0A, 0x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23370x00, 0x02, 0x28, 0x65, 0x00, 0x8D, 0x00, 0x36, 0x13, 0xD0, 0x39, 0x40, 0xF3,
23380x00, 0xC5, 0x03, 0x34, 0x0B, 0x50, 0xA0, 0x40, 0xF3, 0x00, 0xDD, 0x02, 0x14,
23390x2A, 0x50, 0x38, 0x62, 0x40, 0x04, 0xC9, 0x53, 0x05, 0x04, 0x50, 0x28, 0x40,
23400x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xA0, 0xE5,
23410x10, 0x9F, 0x01, 0x5C, 0x43, 0xD0, 0xA1, 0xC4, 0x07, 0x02, 0xF7, 0x01, 0xEC,
23420x07, 0x30, 0xB1, 0xC8, 0xB7, 0x00, 0xFF, 0x01, 0x5E, 0x0E, 0x10, 0x99, 0xC4,
23430x44, 0x00, 0xEB, 0x00, 0x0C, 0x81, 0xF3, 0x3D, 0xC6, 0x54, 0x00, 0x06, 0x00,
23440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x27, 0x06, 0x9F, 0x04, 0x7C,
23450x03, 0xF0, 0x81, 0xC0, 0xA7, 0x10, 0xDA, 0x00, 0x5C, 0x43, 0x78, 0x21, 0x80,
23460x37, 0x0C, 0xD7, 0xB8, 0x78, 0x00, 0xF0, 0x09, 0xC0, 0xA7, 0x40, 0xD7, 0x00,
23470x7C, 0x81, 0x70, 0xAD, 0xC1, 0x37, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
23480x00, 0x00, 0x81, 0x08, 0x0F, 0x00, 0x3B, 0x00, 0xFC, 0x03, 0xF0, 0x0B, 0xC0,
23490x0E, 0x00, 0xF3, 0x10, 0xCC, 0x03, 0xF0, 0x03, 0x40, 0x3E, 0x00, 0xF3, 0x00,
23500xFC, 0x40, 0xF0, 0x0B, 0xC0, 0x0C, 0x00, 0xF7, 0x00, 0xD4, 0x54, 0x30, 0x0F,
23510xC0, 0x04, 0x28, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20,
23520xC6, 0x00, 0x11, 0x03, 0x74, 0x03, 0xD0, 0x19, 0x40, 0x60, 0x01, 0xDB, 0x00,
23530x54, 0x03, 0xD0, 0x11, 0x40, 0xD3, 0x00, 0xDB, 0x00, 0x44, 0x0C, 0xD0, 0x18,
23540xC0, 0x83, 0x20, 0xD1, 0x00, 0x54, 0x89, 0x51, 0x4C, 0x50, 0x84, 0x04, 0x08,
23550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0xC6, 0x00, 0x19, 0x03,
23560x74, 0x13, 0xD8, 0x31, 0x40, 0x66, 0x00, 0xC1, 0x80, 0x44, 0x03, 0xD0, 0x11,
23570x40, 0x66, 0x04, 0xD1, 0x00, 0x44, 0xC6, 0x90, 0x1B, 0x40, 0x04, 0x06, 0xF5,
23580x00, 0x40, 0x09, 0x50, 0x45, 0x48, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
23590x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x81, 0x00, 0x34, 0x83, 0xD0, 0x00,
23600x40, 0x24, 0x00, 0xCD, 0x00, 0x14, 0x03, 0xD0, 0x00, 0x40, 0x27, 0x00, 0xC9,
23610x00, 0x04, 0x82, 0xC2, 0x19, 0x40, 0x02, 0xA0, 0xD1, 0x40, 0x54, 0x02, 0x50,
23620x04, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
23630x18, 0x06, 0x10, 0x1B, 0x00, 0x7C, 0x03, 0xDA, 0x01, 0xC0, 0x26, 0x00, 0xF3,
23640x00, 0xC4, 0x03, 0xF0, 0x01, 0xC4, 0x26, 0x00, 0xF3, 0x00, 0x5D, 0x00, 0xF0,
23650x0B, 0xC0, 0x04, 0x00, 0xE7, 0x00, 0x5C, 0x00, 0x30, 0x09, 0xD0, 0x04, 0x60,
23660x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xB8, 0x2F, 0x00, 0xBF,
23670x00, 0xFC, 0x03, 0xD0, 0x0B, 0xC0, 0x2B, 0x00, 0xFB, 0x00, 0xFC, 0x03, 0xE0,
23680x03, 0xC0, 0x2F, 0x00, 0xEF, 0x00, 0xFC, 0x02, 0xF1, 0x0B, 0xC2, 0x0F, 0x00,
23690xFF, 0x00, 0xFC, 0x00, 0xF0, 0x0B, 0xC4, 0x17, 0x62, 0x0E, 0x00, 0x00, 0x00,
23700x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x6F, 0x00, 0xBF, 0x10, 0xFC, 0x05, 0x30,
23710x16, 0xC8, 0x3F, 0x10, 0xFF, 0x14, 0xFC, 0x00, 0x30, 0x17, 0xC0, 0x2C, 0x00,
23720x63, 0x01, 0xFC, 0x0F, 0x30, 0x4B, 0xC0, 0x5F, 0x00, 0xF3, 0x01, 0xBC, 0x02,
23730xB0, 0x1F, 0xC8, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23740x01, 0x00, 0x67, 0x00, 0xDD, 0x01, 0x74, 0x05, 0x00, 0x19, 0x40, 0xFF, 0x30,
23750xFD, 0x03, 0x74, 0x0D, 0x10, 0x1D, 0x42, 0xE4, 0x00, 0x95, 0x01, 0xF4, 0x13,
23760x12, 0x19, 0x40, 0x77, 0x00, 0xF1, 0x41, 0x74, 0x02, 0x50, 0x11, 0x40, 0x0F,
23770x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x00,
23780x8D, 0x40, 0x74, 0x00, 0x00, 0x08, 0x40, 0xB3, 0x00, 0xCD, 0x00, 0x14, 0x08,
23790x14, 0x0D, 0x48, 0xB0, 0x10, 0x84, 0x00, 0x34, 0x13, 0x10, 0x8C, 0x40, 0x23,
23800x00, 0xC1, 0x00, 0x54, 0x02, 0x90, 0x0C, 0x40, 0x4F, 0x80, 0x06, 0x00, 0x00,
23810x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA8, 0x35, 0x00, 0x9D, 0x00, 0x74, 0x10,
23820x18, 0x09, 0x40, 0x37, 0x20, 0xDD, 0x00, 0x76, 0x23, 0x10, 0x0D, 0x48, 0x30,
23830x00, 0x91, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x04, 0x23, 0x00, 0xD1, 0x40, 0x74,
23840x06, 0x50, 0x0D, 0x42, 0x0F, 0xA0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
23850x00, 0x00, 0xA0, 0x77, 0x00, 0x9F, 0x01, 0x3C, 0x09, 0x30, 0x0D, 0xC2, 0x37,
23860x00, 0xDF, 0x60, 0x5C, 0x13, 0x31, 0x08, 0xC8, 0x64, 0x02, 0xD3, 0x00, 0x7C,
23870x03, 0x34, 0x0D, 0xC0, 0xD7, 0x00, 0xD3, 0x00, 0x7C, 0x17, 0xB2, 0x6D, 0xC0,
23880x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x3D,
23890x21, 0x9F, 0x04, 0xFC, 0x45, 0xF4, 0x0B, 0xC2, 0x3F, 0x00, 0xFF, 0x00, 0xFC,
23900x03, 0xF0, 0x2B, 0xD0, 0x3F, 0x40, 0xFD, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
23910x7F, 0x01, 0xFF, 0x80, 0xFC, 0x03, 0xF1, 0x23, 0xC0, 0x1F, 0x20, 0x06, 0x00,
23920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x01, 0x9F, 0x00, 0x5C,
23930x09, 0xB8, 0x0D, 0xC1, 0x34, 0x00, 0xDB, 0x50, 0x7C, 0x01, 0xB0, 0x0D, 0xC0,
23940x27, 0x80, 0x9E, 0x04, 0x0C, 0x03, 0xD0, 0x0D, 0xC4, 0xB7, 0x08, 0xDF, 0x40,
23950x7C, 0x13, 0x32, 0x0D, 0xC2, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
23960x00, 0x00, 0x13, 0x80, 0x34, 0x00, 0x9D, 0x00, 0x44, 0x0D, 0xF0, 0x29, 0x40,
23970x3C, 0x00, 0xFD, 0x01, 0x34, 0x0B, 0x10, 0x0D, 0x48, 0x37, 0x80, 0x9F, 0x12,
23980x44, 0x2B, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xDD, 0x11, 0x34, 0x03, 0xB0, 0x1D,
23990x41, 0x6F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20,
24000x30, 0x00, 0x8D, 0x00, 0x14, 0x0C, 0xD0, 0xB4, 0x50, 0x70, 0x01, 0xCD, 0x02,
24010x20, 0x10, 0x92, 0x00, 0x4C, 0x23, 0x00, 0x4D, 0x01, 0x24, 0x23, 0xD0, 0x08,
24020x40, 0x23, 0x00, 0xCD, 0x00, 0x34, 0x08, 0x1C, 0x0C, 0x40, 0x0F, 0x00, 0x00,
24030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x78, 0x00, 0xED, 0x01,
24040x84, 0x44, 0x50, 0x1B, 0x40, 0x78, 0x00, 0xED, 0x01, 0x34, 0x06, 0x10, 0x1A,
24050x40, 0x7B, 0x00, 0xB5, 0x09, 0xA6, 0x97, 0xD0, 0x1A, 0x40, 0x6B, 0x00, 0xED,
24060x01, 0xF4, 0x86, 0x90, 0x12, 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24070x00, 0x00, 0x00, 0x12, 0x18, 0x30, 0x04, 0xCF, 0x08, 0x1C, 0x00, 0xDA, 0x08,
24080xC8, 0x30, 0x14, 0xCB, 0x10, 0x2C, 0x20, 0xB0, 0x48, 0xC0, 0x23, 0x02, 0x8D,
24090x00, 0x2C, 0x23, 0xF0, 0x8C, 0x40, 0xA3, 0x00, 0xCF, 0x8C, 0x3E, 0x00, 0x30,
24100x0C, 0xC0, 0x4B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
24110x38, 0x3D, 0x00, 0xFF, 0x00, 0xFC, 0x00, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xFF,
24120x12, 0xF4, 0x23, 0xF0, 0x0B, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xDD, 0x37, 0xF0,
24130x0F, 0x00, 0x2F, 0x00, 0xDF, 0x29, 0x7E, 0x22, 0xF4, 0x0F, 0xC0, 0x0B, 0x60,
24140x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x33, 0x00, 0xD3,
24150x48, 0x7C, 0x00, 0x60, 0x0C, 0xC0, 0xB4, 0x04, 0xDF, 0x04, 0x5C, 0x00, 0xF0,
24160x09, 0xC0, 0x24, 0x00, 0xD7, 0x01, 0x6C, 0x27, 0x30, 0x0D, 0xC0, 0x27, 0x00,
24170xDF, 0x00, 0x7C, 0x00, 0x30, 0x00, 0xC0, 0x40, 0x00, 0x0E, 0x00, 0x00, 0x00,
24180x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x39, 0x00, 0xE1, 0xC0, 0xB4, 0x00, 0xD0,
24190x0A, 0x44, 0x38, 0x00, 0xED, 0x04, 0xB4, 0x02, 0xD0, 0x0A, 0x40, 0x38, 0x00,
24200xED, 0x00, 0x04, 0x13, 0x10, 0x0E, 0x40, 0x2B, 0x00, 0xED, 0x04, 0xB4, 0x02,
24210x50, 0x02, 0x40, 0x4C, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24220x00, 0x02, 0x79, 0x10, 0xE1, 0x05, 0xB4, 0x44, 0xD8, 0x1F, 0x51, 0x78, 0x13,
24230xE9, 0x05, 0x94, 0x25, 0xD0, 0x3A, 0x40, 0xE8, 0x02, 0xAD, 0x01, 0xA4, 0x07,
24240x90, 0x1E, 0x40, 0x6B, 0x04, 0xED, 0x09, 0xF4, 0x0C, 0x10, 0x02, 0x40, 0x10,
24250x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x28, 0x33, 0x00,
24260xC1, 0x01, 0x34, 0x16, 0xD0, 0x38, 0x40, 0x30, 0x10, 0xCD, 0x00, 0x34, 0x07,
24270xD0, 0x18, 0x41, 0x70, 0x00, 0x8D, 0x00, 0x04, 0x03, 0x90, 0x9C, 0x40, 0x63,
24280x00, 0xCD, 0x00, 0x34, 0x06, 0x50, 0x8C, 0x40, 0x58, 0x20, 0x0C, 0x00, 0x00,
24290x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x20, 0x15, 0x00, 0x43, 0x11, 0xFC, 0x05,
24300xF0, 0x36, 0xC0, 0x14, 0x20, 0x4F, 0x00, 0xDC, 0x15, 0xF1, 0x27, 0xD4, 0x14,
24310x00, 0x77, 0x1B, 0x6C, 0x01, 0xB5, 0x15, 0xC0, 0x1F, 0x00, 0x5F, 0x00, 0xBC,
24320x01, 0x34, 0x37, 0xC4, 0x5C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24330x00, 0x12, 0x08, 0x05, 0x42, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x21, 0xC0, 0x07,
24340x20, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C,
24350x08, 0x71, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x22, 0x7C, 0x00, 0xF0, 0x01, 0xC1,
24360x4B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25,
24370x00, 0x93, 0x00, 0x45, 0x06, 0x50, 0x19, 0xD1, 0x24, 0x40, 0x93, 0x08, 0x5C,
24380x42, 0xF0, 0x09, 0x40, 0x22, 0x40, 0x93, 0x02, 0x7C, 0x16, 0xF0, 0x29, 0xC0,
24390x27, 0x00, 0x93, 0x82, 0x7C, 0x06, 0x34, 0x09, 0xC0, 0x43, 0x20, 0x04, 0x00,
24400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x20, 0x00, 0xB1, 0x03, 0x44,
24410x02, 0xD0, 0x29, 0x40, 0x20, 0x13, 0x91, 0x40, 0xC4, 0x02, 0xD0, 0x09, 0x40,
24420x2C, 0x00, 0x91, 0x40, 0xF4, 0x0E, 0xD0, 0x09, 0x40, 0x22, 0x20, 0xB1, 0x83,
24430x74, 0x06, 0x10, 0x09, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24440x00, 0x00, 0x18, 0xA0, 0x24, 0x40, 0x91, 0x08, 0x54, 0x1B, 0xD0, 0x69, 0x40,
24450x24, 0x00, 0x91, 0x50, 0x50, 0x1A, 0xD0, 0x08, 0x40, 0x27, 0x00, 0x91, 0x00,
24460x74, 0x0A, 0xD8, 0x09, 0x40, 0x27, 0x00, 0x91, 0x40, 0x74, 0x52, 0x10, 0x09,
24470x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20,
24480x21, 0x00, 0x81, 0x00, 0x04, 0x02, 0xD0, 0x08, 0x40, 0x20, 0x00, 0x80, 0x00,
24490x04, 0x02, 0xD0, 0x28, 0x40, 0xA0, 0x00, 0x81, 0x00, 0x34, 0x0A, 0x80, 0x08,
24500x40, 0xA6, 0x00, 0x81, 0x00, 0x74, 0x02, 0x14, 0x08, 0x40, 0x43, 0x80, 0x00,
24510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB8, 0x07, 0x00, 0x53, 0x01,
24520x5C, 0x00, 0x70, 0x01, 0xC0, 0x04, 0x05, 0x12, 0x14, 0x5C, 0x04, 0xF0, 0x00,
24530xC0, 0x47, 0x00, 0x13, 0x00, 0x7C, 0x04, 0xF0, 0x11, 0xC0, 0x07, 0x40, 0x53,
24540x81, 0x7C, 0x00, 0x34, 0x01, 0xC0, 0x77, 0xE0, 0x0E, 0x00, 0x00, 0x00, 0x00,
24550x00, 0x00, 0x00, 0x1D, 0xB8, 0x2F, 0x00, 0xBF, 0x02, 0xFC, 0x02, 0xF0, 0x0B,
24560xC0, 0x27, 0x08, 0x9F, 0x40, 0xFC, 0x0A, 0xF1, 0x1B, 0xC0, 0xEF, 0x00, 0xEF,
24570x00, 0x7C, 0x0E, 0xF0, 0x2B, 0x00, 0x6E, 0x20, 0x9F, 0x82, 0xBC, 0x5A, 0xE0,
24580x0B, 0xC0, 0x77, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
24590xA0, 0x29, 0x00, 0xBF, 0x01, 0xCC, 0x02, 0x34, 0x0B, 0xD0, 0x2C, 0x40, 0xA3,
24600x00, 0xBC, 0x46, 0xB0, 0x09, 0x40, 0x67, 0x00, 0xBB, 0x00, 0xC4, 0x16, 0x24,
24610x5B, 0xC0, 0xA7, 0x10, 0xB3, 0x15, 0xCD, 0x42, 0xB0, 0x0B, 0xC0, 0x74, 0x00,
24620x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x07, 0x00, 0x1D,
24630x00, 0x44, 0x00, 0x10, 0x05, 0x40, 0x85, 0x02, 0x11, 0x40, 0x74, 0x08, 0x30,
24640x55, 0x41, 0xC3, 0x01, 0x11, 0x00, 0x54, 0x14, 0x10, 0x01, 0x40, 0x47, 0x08,
24650x11, 0x02, 0x44, 0x08, 0x11, 0x01, 0x40, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00,
24660x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x21, 0x00, 0x8D, 0x02, 0x14, 0x02, 0x90,
24670x08, 0x68, 0x20, 0x00, 0x81, 0x02, 0x34, 0x02, 0x90, 0x08, 0x40, 0xA3, 0x04,
24680x99, 0x00, 0x04, 0x4A, 0x10, 0x28, 0x40, 0x23, 0x00, 0x81, 0x20, 0x04, 0x52,
24690x91, 0x09, 0x42, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24700x18, 0x28, 0x25, 0x00, 0x9D, 0x00, 0x44, 0x02, 0x10, 0x09, 0x64, 0x24, 0x00,
24710x90, 0x00, 0x74, 0x06, 0x10, 0x89, 0x4C, 0x27, 0x00, 0x91, 0x00, 0x14, 0x02,
24720x10, 0x09, 0x40, 0x23, 0x40, 0x91, 0x00, 0x44, 0x02, 0x90, 0x19, 0x40, 0x60,
24730x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x65, 0x02,
24740x8F, 0x09, 0x5C, 0x12, 0xB0, 0x18, 0x40, 0x24, 0x00, 0x93, 0x00, 0x7C, 0x4A,
24750xB0, 0x3B, 0xC0, 0x6F, 0x00, 0x9B, 0x00, 0xCC, 0x02, 0x30, 0x19, 0xC0, 0xEF,
24760x01, 0x93, 0x80, 0x4C, 0x02, 0xB0, 0x49, 0xD0, 0x14, 0x00, 0x04, 0x00, 0x00,
24770x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x6D, 0x12,
24780xF0, 0x59, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x70, 0x09, 0xC0, 0x23,
24790x01, 0x9F, 0x02, 0x7C, 0x02, 0xF0, 0x89, 0xC0, 0x67, 0x01, 0x9F, 0x00, 0x7C,
24800x02, 0x71, 0x09, 0xC0, 0x5B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24810x00, 0x14, 0x08, 0x05, 0x10, 0x13, 0x08, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x05,
24820xC1, 0x13, 0x08, 0x1C, 0x10, 0x34, 0x01, 0xC0, 0x07, 0x00, 0x1B, 0x00, 0x7C,
24830x00, 0x30, 0x01, 0xC0, 0x87, 0x00, 0x1F, 0x08, 0x7C, 0x00, 0x31, 0x01, 0xC0,
24840x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0xDC,
24850x06, 0x71, 0x00, 0xB0, 0x1D, 0x50, 0x07, 0x42, 0x1B, 0x80, 0x71, 0x01, 0xC4,
24860x0D, 0x10, 0x05, 0x40, 0x17, 0x00, 0x71, 0x02, 0xF4, 0x61, 0xB0, 0x05, 0x40,
24870x17, 0x00, 0x6D, 0x00, 0xF4, 0x01, 0x11, 0x04, 0x40, 0x43, 0x00, 0x00, 0x00,
24880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xE2, 0x00, 0x81, 0x10, 0x34,
24890x1E, 0x18, 0x04, 0x40, 0x23, 0x10, 0x85, 0x51, 0x14, 0x0D, 0x10, 0x0C, 0x40,
24900x33, 0x00, 0xD9, 0x13, 0x34, 0x06, 0x14, 0x1C, 0x40, 0x33, 0x00, 0x8D, 0x10,
24910x74, 0x02, 0x10, 0x08, 0x40, 0x43, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
24920x00, 0x00, 0x04, 0x82, 0x7C, 0x00, 0xA1, 0x00, 0xF4, 0x03, 0x50, 0x06, 0x40,
24930x33, 0x00, 0xA5, 0x01, 0x84, 0x09, 0x11, 0x4E, 0x40, 0x3B, 0x03, 0xE1, 0x02,
24940xB4, 0x33, 0x90, 0x0E, 0x61, 0x3B, 0x09, 0xED, 0x00, 0xB4, 0x02, 0x10, 0x0E,
24950x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18,
24960x68, 0x00, 0xA3, 0x01, 0xBC, 0x06, 0x30, 0x16, 0xC0, 0x6B, 0x00, 0xE5, 0x01,
24970x9C, 0x05, 0x30, 0x3E, 0xC0, 0x7B, 0x00, 0xEB, 0x01, 0xBC, 0x07, 0x30, 0x1E,
24980xC0, 0xFB, 0x00, 0xAF, 0x01, 0x3C, 0x01, 0x30, 0x1A, 0xC0, 0x53, 0x60, 0x00,
24990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x40, 0x9D, 0x00,
25000x3C, 0x02, 0xF0, 0x05, 0xC0, 0x27, 0x00, 0xDB, 0x00, 0x7C, 0x01, 0xF0, 0x0D,
25010xC0, 0x37, 0x00, 0xDF, 0x00, 0x3C, 0x03, 0x70, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
25020x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
25030x00, 0x00, 0x00, 0x06, 0x28, 0x6D, 0x00, 0xBB, 0x21, 0xFC, 0x06, 0xF0, 0x17,
25040xC0, 0x6F, 0x00, 0xB3, 0x01, 0xDE, 0x07, 0x31, 0x9E, 0xC8, 0x7C, 0x00, 0xAE,
25050x01, 0xEC, 0x07, 0xF8, 0x9F, 0xC0, 0x78, 0x00, 0xB3, 0x41, 0xCC, 0x06, 0x30,
25060x1B, 0xC0, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
25070x10, 0x29, 0x00, 0xAD, 0x08, 0xB4, 0x03, 0xD0, 0x06, 0x40, 0x3B, 0x08, 0xA1,
25080x00, 0x84, 0x13, 0xB0, 0x0E, 0x40, 0x38, 0x00, 0xED, 0x02, 0x84, 0x03, 0xD0,
25090x0E, 0xC0, 0x3A, 0x02, 0xA1, 0x00, 0x94, 0x02, 0xB0, 0x0E, 0x44, 0x54, 0x00,
25100x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x29, 0x00, 0xAD,
25110x00, 0xB4, 0x02, 0xD0, 0x06, 0x40, 0x23, 0x00, 0xA1, 0x00, 0xD4, 0x01, 0x11,
25120x1F, 0x00, 0x78, 0x00, 0xED, 0x00, 0xA4, 0x03, 0xD0, 0x0E, 0x44, 0x7C, 0x00,
25130x81, 0x00, 0x84, 0x01, 0x50, 0x0B, 0x40, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00,
25140x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x21, 0x00, 0x8D, 0x01, 0x34, 0x41, 0xD0,
25150x04, 0x40, 0x03, 0x00, 0x41, 0x00, 0x04, 0x33, 0x90, 0x2C, 0x41, 0x30, 0x20,
25160xCD, 0x0C, 0x04, 0x01, 0xD0, 0x0C, 0x40, 0x32, 0x04, 0xC1, 0x00, 0x54, 0x03,
25170xD0, 0x3C, 0x40, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25180x1D, 0xA8, 0x25, 0x10, 0xDF, 0x11, 0x7C, 0x8A, 0xF0, 0x8D, 0xC1, 0x27, 0x00,
25190x93, 0x00, 0x5C, 0x05, 0x31, 0x0D, 0xD0, 0x34, 0x01, 0x4F, 0x02, 0x6C, 0x01,
25200xF1, 0x0C, 0xC0, 0xB4, 0x40, 0x93, 0x00, 0x4C, 0xAA, 0x70, 0x29, 0xC0, 0x74,
25210x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x37, 0x00,
25220xDF, 0x00, 0x7C, 0x03, 0xF0, 0x25, 0xC0, 0x37, 0x00, 0x8F, 0x00, 0x7E, 0x01,
25230xF0, 0x0D, 0xC0, 0x37, 0x00, 0xDF, 0x80, 0x7C, 0x09, 0xF0, 0x0D, 0xC0, 0x37,
25240x08, 0xDF, 0x00, 0x7C, 0x02, 0xB0, 0x89, 0xC0, 0x17, 0x20, 0x0C, 0x00, 0x00,
25250x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x08, 0x6F, 0x00, 0xAF, 0x00, 0xDC, 0x02,
25260x34, 0x1F, 0x00, 0x6F, 0x00, 0xDF, 0x00, 0xEC, 0x89, 0xF1, 0x0F, 0xC0, 0x3F,
25270x00, 0x7F, 0x00, 0xCC, 0x01, 0x70, 0x4D, 0xD0, 0x3C, 0x00, 0xBF, 0x00, 0xCD,
25280x00, 0x34, 0x0B, 0xC1, 0x07, 0x26, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25290x00, 0xA1, 0x20, 0x36, 0x10, 0x9D, 0x03, 0x04, 0x02, 0x10, 0x89, 0x43, 0x37,
25300x00, 0xDD, 0x00, 0x44, 0x05, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xDD, 0x03, 0x44,
25310x19, 0x10, 0x0D, 0x42, 0x34, 0x00, 0xCD, 0x02, 0x44, 0x06, 0x10, 0x19, 0x40,
25320x27, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xA6,
25330x01, 0xDD, 0x06, 0x54, 0x02, 0x10, 0x0D, 0x40, 0x27, 0x01, 0x9D, 0x00, 0x60,
25340x03, 0xD0, 0x0D, 0x44, 0x37, 0x00, 0xDD, 0x01, 0x04, 0x85, 0x50, 0x0D, 0x40,
25350x34, 0x10, 0x9D, 0x50, 0x44, 0x06, 0x10, 0x49, 0x40, 0x07, 0x00, 0x0A, 0x00,
25360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0xCD, 0x00, 0x04,
25370x03, 0x10, 0x04, 0x40, 0x33, 0x00, 0x8D, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40,
25380x33, 0x80, 0xDD, 0xA0, 0x04, 0x03, 0x10, 0x0C, 0x40, 0x30, 0x00, 0x8D, 0xC0,
25390x44, 0x02, 0x10, 0x08, 0x44, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25400x00, 0x00, 0x01, 0x18, 0x26, 0x00, 0x5F, 0x00, 0x5C, 0x02, 0x30, 0x0D, 0xC0,
25410x27, 0x00, 0x9F, 0x00, 0x6C, 0x00, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xDF, 0x00,
25420x4C, 0x01, 0x70, 0x09, 0x80, 0x3C, 0x00, 0x1F, 0x00, 0x4C, 0x00, 0x30, 0x09,
25430xC0, 0x07, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8,
25440x1F, 0x00, 0x7F, 0x00, 0xFC, 0x01, 0xF0, 0x0B, 0xC0, 0x1F, 0x00, 0x7F, 0x00,
25450xBC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFD, 0x01, 0xD0, 0x0B,
25460xC0, 0x3F, 0x00, 0x7F, 0x00, 0xBC, 0x02, 0xF0, 0x0A, 0xC4, 0x17, 0x62, 0x0E,
25470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xB3, 0x0C,
25480xDC, 0x00, 0x30, 0x4F, 0xC0, 0x3C, 0x01, 0xF3, 0x18, 0xFC, 0x32, 0x70, 0x17,
25490xC0, 0x7F, 0x00, 0x5B, 0x01, 0x8C, 0x06, 0x32, 0x1A, 0xC2, 0x7E, 0x00, 0x3B,
25500x08, 0xCD, 0x00, 0xB0, 0x03, 0xC2, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
25510x00, 0x00, 0x00, 0x03, 0x18, 0x37, 0x01, 0x91, 0x8E, 0x44, 0x27, 0x10, 0x3F,
25520x40, 0xBC, 0x40, 0xF5, 0x26, 0x74, 0x38, 0x10, 0x05, 0x44, 0x77, 0x00, 0x53,
25530x01, 0x54, 0x05, 0x52, 0x19, 0x40, 0x55, 0x00, 0x11, 0x06, 0x44, 0x82, 0x10,
25540x01, 0xC0, 0x0E, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
25550xA0, 0x33, 0x04, 0x81, 0x00, 0x54, 0x03, 0x10, 0x2C, 0x44, 0xB2, 0x05, 0xC1,
25560x00, 0x34, 0x02, 0x50, 0x44, 0x41, 0x31, 0x00, 0x4D, 0x00, 0x54, 0x03, 0x10,
25570x08, 0x40, 0x22, 0x00, 0x89, 0x02, 0x04, 0x21, 0xD0, 0x10, 0x42, 0x4F, 0x80,
25580x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x31, 0x00, 0x91,
25590x01, 0x44, 0x07, 0x10, 0x0D, 0x40, 0x36, 0x00, 0xD1, 0x00, 0x74, 0x84, 0x10,
25600x05, 0x41, 0x37, 0x01, 0x51, 0x01, 0x54, 0x09, 0x50, 0x1D, 0x00, 0x35, 0x00,
25610x11, 0x02, 0x44, 0x83, 0x51, 0x11, 0x40, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00,
25620x00, 0x00, 0x00, 0x00, 0x02, 0x88, 0x36, 0x00, 0x13, 0x07, 0x10, 0x17, 0x30,
25630x0D, 0xC0, 0x36, 0x08, 0xD3, 0x40, 0x7C, 0x44, 0x50, 0xB1, 0xE0, 0x35, 0x20,
25640x5B, 0x07, 0x5C, 0x0B, 0x30, 0x18, 0x80, 0x36, 0x00, 0x1B, 0x02, 0x4C, 0x28,
25650xF4, 0x19, 0xC0, 0x2B, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25660x0F, 0x80, 0x3D, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF4, 0x0F, 0xC0, 0x39, 0x00,
25670xDF, 0x00, 0x7C, 0x40, 0xF0, 0x13, 0xC0, 0x7F, 0x00, 0x79, 0x10, 0xFC, 0x13,
25680xE0, 0x0F, 0xC0, 0x1F, 0x00, 0x5F, 0x02, 0xBC, 0x04, 0xB0, 0x02, 0xC0, 0x1E,
25690x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00,
25700x1F, 0x04, 0x4C, 0x03, 0x70, 0x0C, 0xE1, 0x35, 0x04, 0xD7, 0x08, 0x4C, 0x02,
25710x70, 0x25, 0xC0, 0x37, 0x00, 0x57, 0x02, 0x5C, 0x0B, 0xB0, 0x49, 0xC0, 0x34,
25720x00, 0x5B, 0x00, 0x4C, 0x49, 0x34, 0x09, 0xC0, 0x2B, 0x20, 0x04, 0x00, 0x00,
25730x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xA0, 0x34, 0x00, 0x9D, 0x00, 0x44, 0x03,
25740x11, 0x1F, 0xC4, 0xFC, 0x04, 0xF1, 0x00, 0x44, 0x10, 0x10, 0x05, 0x40, 0x70,
25750x00, 0x4B, 0x41, 0x68, 0x2F, 0xB0, 0x2D, 0x40, 0xB0, 0x01, 0x51, 0x00, 0x44,
25760x89, 0x00, 0x19, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
25770x00, 0x03, 0x20, 0x32, 0x00, 0x1D, 0x00, 0x34, 0x83, 0x50, 0x1C, 0x40, 0x73,
25780x80, 0xC1, 0x26, 0x64, 0x0E, 0x10, 0x00, 0x48, 0x31, 0x00, 0xC5, 0x03, 0x70,
25790x0F, 0x90, 0x00, 0x48, 0x31, 0x21, 0x59, 0x0F, 0x04, 0x24, 0x10, 0x08, 0x60,
25800x0F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x7A,
25810x80, 0x6D, 0x51, 0x95, 0x47, 0x10, 0x9E, 0x41, 0x70, 0x80, 0xE1, 0x81, 0xA6,
25820x07, 0x14, 0x12, 0x00, 0x78, 0x00, 0x69, 0x05, 0xB4, 0x47, 0x99, 0xDA, 0x40,
25830x5D, 0x00, 0xA1, 0x49, 0x04, 0x26, 0x10, 0x32, 0x41, 0x37, 0x20, 0x08, 0x00,
25840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x32, 0x00, 0xCF, 0x20, 0x1C,
25850x03, 0x50, 0x8C, 0x40, 0x33, 0x00, 0xC1, 0x00, 0x2C, 0x13, 0x30, 0x41, 0xC0,
25860x33, 0x24, 0x47, 0x15, 0x3C, 0x03, 0xB0, 0x5C, 0xC8, 0x21, 0x08, 0x8B, 0x05,
25870x0D, 0x08, 0x30, 0x0C, 0xC0, 0x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
25880x00, 0x00, 0x02, 0xB8, 0x3D, 0x20, 0xFF, 0x00, 0xE8, 0x03, 0xF0, 0xAE, 0xC0,
25890x3F, 0x40, 0xFB, 0x00, 0xDD, 0x03, 0xF1, 0x03, 0xC0, 0x3B, 0x00, 0x45, 0x80,
25900xEC, 0x03, 0xF0, 0x0D, 0xC0, 0x3A, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0xF4, 0x8F,
25910xC0, 0x0B, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0,
25920x77, 0x20, 0x53, 0x20, 0x7E, 0x83, 0xF0, 0xCD, 0xC0, 0x34, 0x11, 0xDF, 0x44,
25930x5C, 0x01, 0xF0, 0x11, 0xC0, 0x32, 0x00, 0x1B, 0x00, 0x1C, 0x03, 0x70, 0x0D,
25940xC2, 0x36, 0x00, 0xDF, 0x00, 0x4D, 0x03, 0x30, 0x0D, 0xC2, 0x40, 0x00, 0x0E,
25950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x98, 0x3D, 0x00, 0x61, 0x00,
25960xB4, 0x83, 0x14, 0x0E, 0x40, 0xB8, 0x05, 0xFD, 0x16, 0x84, 0x03, 0xD0, 0x02,
25970x40, 0x38, 0x80, 0x27, 0x40, 0x84, 0x03, 0x11, 0x0E, 0x40, 0x18, 0x00, 0xED,
25980x00, 0x85, 0x03, 0x10, 0x07, 0x40, 0x4C, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00,
25990x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0xE1, 0x01, 0xF6, 0x87, 0xD2, 0x4E,
26000x40, 0x7B, 0x00, 0xED, 0x01, 0x94, 0x07, 0xD0, 0x33, 0x40, 0x7B, 0x00, 0x31,
26010x01, 0x94, 0x07, 0x58, 0x1F, 0x41, 0x7A, 0x00, 0xED, 0x01, 0x04, 0x07, 0x54,
26020x1E, 0x40, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
26030x20, 0x33, 0x00, 0xC1, 0x43, 0x36, 0x03, 0x10, 0x0C, 0x40, 0x30, 0x00, 0xDD,
26040x00, 0x44, 0x1F, 0xD0, 0x48, 0x60, 0x21, 0x02, 0x05, 0x01, 0x06, 0x0F, 0x10,
26050x3C, 0x40, 0x72, 0x00, 0xCD, 0x19, 0x04, 0x23, 0x50, 0x2D, 0x40, 0x58, 0x00,
26060x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x17, 0x00, 0x71,
26070x05, 0xFC, 0x49, 0xF0, 0x05, 0xC0, 0x16, 0x00, 0x5F, 0x00, 0xDC, 0x0D, 0xF0,
26080x17, 0xC0, 0x17, 0x00, 0x63, 0x02, 0x9C, 0x6D, 0x70, 0x27, 0xE0, 0x1E, 0x09,
26090x7F, 0x02, 0xCC, 0x25, 0x70, 0x87, 0xC0, 0x5C, 0x20, 0x0E, 0x00, 0x00, 0x00,
26100x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x40, 0x1F, 0x30, 0x7C, 0x10, 0x74,
26110x01, 0xC0, 0x87, 0x00, 0x1F, 0x00, 0x7E, 0x28, 0xF0, 0x01, 0xC0, 0x06, 0x08,
26120x17, 0x58, 0x7C, 0x00, 0xF0, 0x61, 0xC0, 0x85, 0x00, 0x1E, 0x82, 0x3C, 0x00,
26130x90, 0x21, 0xD0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26140x10, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x30, 0x19, 0xC0, 0x67, 0x01,
26150x9F, 0x01, 0x68, 0x06, 0x32, 0x09, 0xC2, 0x27, 0x00, 0x92, 0x20, 0x5C, 0x06,
26160x70, 0x19, 0xD0, 0x24, 0x00, 0x8A, 0x05, 0x44, 0x02, 0x70, 0x09, 0xC2, 0x40,
26170x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00,
26180x9D, 0x11, 0x34, 0x02, 0x10, 0x59, 0x40, 0xE7, 0x00, 0x9D, 0x8B, 0x44, 0x06,
26190x10, 0x09, 0x40, 0x23, 0x00, 0x91, 0x08, 0x44, 0x8A, 0x10, 0x88, 0x40, 0xE4,
26200x20, 0x9D, 0x07, 0x44, 0x0A, 0x50, 0x29, 0x40, 0x04, 0x00, 0x08, 0x00, 0x00,
26210x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x24, 0x00, 0x9D, 0x08, 0x74, 0x12,
26220x50, 0x89, 0x42, 0x27, 0x04, 0x9D, 0x00, 0x74, 0x52, 0x50, 0x09, 0x48, 0x27,
26230x40, 0x9D, 0x90, 0x54, 0xA2, 0x53, 0x0D, 0x61, 0x64, 0x00, 0x98, 0x00, 0x54,
26240x2A, 0x51, 0x39, 0x40, 0x70, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26250x00, 0x14, 0x28, 0x20, 0x00, 0x8D, 0x14, 0x74, 0x52, 0x15, 0x48, 0x41, 0x23,
26260x25, 0xCD, 0x14, 0x14, 0x52, 0x50, 0x08, 0x40, 0x23, 0x00, 0x95, 0x00, 0x04,
26270x02, 0x11, 0x08, 0x60, 0x20, 0x00, 0x8D, 0x08, 0x14, 0x02, 0x50, 0x48, 0x51,
26280x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x30, 0x06,
26290x00, 0x1F, 0x04, 0x7C, 0x10, 0x70, 0x41, 0xC8, 0x07, 0x01, 0x1F, 0x04, 0x7C,
26300x10, 0x70, 0x01, 0xC8, 0x07, 0x08, 0x17, 0x00, 0x58, 0x01, 0x72, 0x01, 0xD0,
26310x14, 0x00, 0x0B, 0x16, 0x5C, 0x50, 0x70, 0x41, 0xC0, 0x74, 0xC0, 0x0A, 0x00,
26320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA8, 0x25, 0x05, 0xBF, 0x34, 0xBC,
26330x02, 0xF6, 0x08, 0xC0, 0x27, 0x05, 0x9F, 0x14, 0xE4, 0x52, 0xB4, 0x4A, 0xC1,
26340x2F, 0x10, 0xAB, 0x00, 0xFC, 0x02, 0xF0, 0x0A, 0xC0, 0x2F, 0x00, 0xBF, 0x04,
26350xED, 0x52, 0xF0, 0x4B, 0xC1, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
26360x00, 0x00, 0x18, 0xA0, 0x27, 0x00, 0xBF, 0x11, 0xBC, 0x02, 0xC4, 0x0B, 0xC0,
26370x6E, 0x01, 0xBF, 0x54, 0xFC, 0x32, 0xF0, 0x09, 0xC8, 0x29, 0x90, 0xB3, 0x00,
26380xAD, 0x02, 0xB0, 0x0B, 0xC0, 0x2C, 0x00, 0xB7, 0x00, 0xCC, 0x12, 0x36, 0x0F,
26390xC0, 0x63, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18,
26400x47, 0x05, 0x1D, 0x87, 0x74, 0x00, 0x10, 0x81, 0x40, 0x07, 0x05, 0x1D, 0x04,
26410x7C, 0x30, 0xD0, 0x05, 0x40, 0x07, 0x80, 0x55, 0x40, 0x44, 0x00, 0x12, 0x05,
26420x54, 0x04, 0x00, 0x11, 0x00, 0x45, 0x28, 0x54, 0x01, 0x40, 0x73, 0x60, 0x0C,
26430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xA0, 0x21, 0x00, 0xCD, 0x10,
26440x74, 0x27, 0xC0, 0x0C, 0x40, 0xA3, 0x00, 0x8D, 0x14, 0x34, 0x13, 0xD2, 0x08,
26450x40, 0x27, 0x00, 0x81, 0x00, 0x24, 0x03, 0x90, 0x09, 0x40, 0x24, 0x00, 0x85,
26460x80, 0x04, 0x02, 0x18, 0x08, 0x40, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
26470x00, 0x00, 0x00, 0x18, 0x20, 0x25, 0x00, 0x9D, 0x02, 0x76, 0x02, 0x10, 0x09,
26480x40, 0x27, 0x00, 0x9D, 0x00, 0x74, 0x02, 0xC2, 0x09, 0x48, 0x27, 0x01, 0x95,
26490x00, 0x44, 0x22, 0x10, 0x09, 0x44, 0xA4, 0x02, 0x91, 0x00, 0x44, 0x22, 0x50,
26500x09, 0x00, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
26510xA8, 0x27, 0x00, 0x9D, 0x01, 0x3C, 0x0A, 0xF0, 0x09, 0xC0, 0x26, 0x08, 0x9F,
26520x40, 0x7A, 0x42, 0xF0, 0xB9, 0xC0, 0x21, 0x80, 0x91, 0x00, 0x2C, 0x02, 0xB0,
26530x19, 0xC0, 0x64, 0x00, 0x97, 0x04, 0x4C, 0x02, 0x30, 0x49, 0xC0, 0x17, 0x28,
26540x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x25, 0x20, 0x9F,
26550x04, 0x7C, 0x16, 0xF4, 0x09, 0xC0, 0x27, 0x0C, 0x9F, 0x20, 0x5E, 0x52, 0xF0,
26560x19, 0xC0, 0x27, 0x20, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x89, 0xC1, 0x27, 0x00,
26570x9F, 0x53, 0x7C, 0x02, 0xF0, 0x49, 0xC1, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00,
26580x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x05, 0x00, 0x1F, 0x42, 0x7C, 0x00, 0x70,
26590x11, 0xCC, 0x07, 0x00, 0x1B, 0x00, 0x4C, 0x00, 0xF0, 0x21, 0xC0, 0x07, 0x00,
26600x12, 0x30, 0x4C, 0x40, 0x70, 0x01, 0xC0, 0x85, 0x09, 0x0F, 0x8A, 0x5C, 0x00,
26610x34, 0x21, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26620x14, 0xA0, 0x14, 0x00, 0x7D, 0x0A, 0x74, 0x01, 0x10, 0x07, 0x40, 0x9F, 0x00,
26630x71, 0x80, 0xC4, 0x01, 0xD0, 0x05, 0xC0, 0x9F, 0x00, 0x61, 0x41, 0xC5, 0x09,
26640x10, 0x06, 0x42, 0x58, 0x08, 0x7D, 0x21, 0xC4, 0x09, 0x10, 0x07, 0x40, 0x50,
26650x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00,
26660xCD, 0x00, 0x34, 0x02, 0xD0, 0x00, 0x48, 0x73, 0x80, 0xC9, 0x11, 0x14, 0x03,
26670xD0, 0x0C, 0x40, 0xB3, 0x06, 0xC1, 0x88, 0x04, 0x03, 0x51, 0x2C, 0x40, 0x31,
26680x02, 0xCD, 0x01, 0x54, 0x43, 0x90, 0x2C, 0x40, 0x53, 0x00, 0x0A, 0x00, 0x00,
26690x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x88, 0x38, 0x01, 0xED, 0x80, 0xF4, 0x03,
26700x14, 0x02, 0x40, 0xFB, 0x00, 0xE1, 0x03, 0x94, 0x03, 0xD0, 0x8E, 0x64, 0x2B,
26710x40, 0xF1, 0x00, 0x84, 0x03, 0x10, 0x0E, 0x44, 0x18, 0x00, 0xAD, 0x00, 0xC4,
26720x03, 0x91, 0x1C, 0x40, 0x07, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26730x00, 0x11, 0x10, 0x78, 0x00, 0xEF, 0x81, 0xB4, 0x07, 0x70, 0x12, 0xCA, 0x7F,
26740x00, 0x4B, 0x01, 0x9D, 0x05, 0xF2, 0x1E, 0xC8, 0x7B, 0x80, 0x62, 0x01, 0x8C,
26750x07, 0x70, 0x1E, 0xE8, 0x69, 0x20, 0xFF, 0x01, 0xDC, 0x85, 0xB0, 0x1E, 0xD0,
26760x47, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA8, 0xB5,
26770x0A, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x01, 0xC0, 0x17, 0x00, 0xDF, 0x00, 0x6C,
26780x03, 0xF0, 0x0D, 0xC0, 0x25, 0x00, 0xCF, 0x00, 0x7C, 0x03, 0xF0, 0x0C, 0x40,
26790x27, 0x00, 0x9F, 0x00, 0x7C, 0x00, 0x70, 0x09, 0xC2, 0x40, 0x00, 0x06, 0x00,
26800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFD, 0x00, 0xFF, 0x01, 0xCC,
26810x87, 0xB0, 0x17, 0x80, 0x5F, 0x00, 0xFF, 0x41, 0xFC, 0x07, 0xF9, 0x9E, 0xC0,
26820x58, 0x00, 0x73, 0x81, 0x8C, 0x86, 0xB0, 0x9E, 0xC0, 0x7D, 0x08, 0xDF, 0x01,
26830xFC, 0x07, 0x34, 0x17, 0xC2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
26840x00, 0x00, 0x15, 0x18, 0x39, 0x00, 0x7D, 0x08, 0x84, 0x23, 0x10, 0x82, 0x40,
26850x1B, 0x00, 0xED, 0x00, 0xB4, 0x01, 0xD0, 0x0E, 0x62, 0x18, 0x01, 0x6B, 0x04,
26860x84, 0x22, 0x10, 0x1C, 0xC0, 0x2A, 0x04, 0x8D, 0x0D, 0xB4, 0x29, 0xB4, 0x07,
26870x40, 0x54, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26880x39, 0x00, 0xED, 0x00, 0xC4, 0x03, 0x90, 0x02, 0x40, 0x3B, 0x00, 0x6D, 0x00,
26890xB4, 0x01, 0xD0, 0x0F, 0x5A, 0x18, 0x20, 0x71, 0x00, 0xF4, 0x43, 0xD0, 0x4F,
26900x40, 0x2B, 0x00, 0xED, 0x00, 0xB4, 0x01, 0x90, 0x0E, 0x40, 0x00, 0x00, 0x04,
26910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x31, 0x80, 0x8D, 0x22,
26920x04, 0x0B, 0x19, 0x08, 0x40, 0x07, 0x00, 0x8D, 0x00, 0x34, 0x08, 0xD1, 0x2C,
26930x40, 0x50, 0x00, 0x49, 0x00, 0x34, 0x4A, 0x51, 0x3C, 0x40, 0xE3, 0x04, 0x0D,
26940x10, 0x34, 0x00, 0x90, 0x28, 0x51, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
26950x00, 0x00, 0x00, 0x15, 0xA8, 0x3D, 0x10, 0x1F, 0x01, 0x4C, 0x0B, 0xB0, 0x01,
26960xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x1A, 0xF0, 0x2F, 0xC0, 0x30, 0x04, 0xC1,
26970x20, 0x7C, 0x80, 0xF0, 0x0C, 0xCC, 0xA3, 0x00, 0x5D, 0x20, 0x7C, 0x0A, 0x90,
26980x29, 0x48, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
26990x00, 0x37, 0x28, 0x9F, 0x0C, 0x7D, 0x23, 0xF0, 0x01, 0xC0, 0x27, 0x00, 0x1F,
27000x02, 0x7C, 0x4A, 0xF0, 0x0D, 0xC0, 0x27, 0xC0, 0xD7, 0x50, 0x49, 0x0A, 0xA0,
27010xCD, 0x00, 0xA6, 0x00, 0x0F, 0x08, 0x78, 0x12, 0x74, 0x01, 0xC0, 0x07, 0x00,
27020x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x3F, 0x10, 0x2F,
27030x00, 0xEC, 0x47, 0xB0, 0x02, 0xD0, 0x2C, 0x00, 0x33, 0x00, 0xBC, 0x80, 0xB0,
27040x0F, 0xC3, 0x3F, 0x00, 0x7F, 0xC0, 0xEC, 0x80, 0x71, 0x0B, 0xC0, 0x2E, 0x08,
27050x73, 0x00, 0x0D, 0x02, 0x14, 0x0A, 0xD0, 0x11, 0x22, 0x0C, 0x00, 0x00, 0x00,
27060x00, 0x00, 0x00, 0x00, 0x85, 0x20, 0x36, 0x00, 0x9D, 0x25, 0x04, 0x27, 0x10,
27070x21, 0x40, 0x64, 0x00, 0x11, 0x05, 0x74, 0x16, 0x12, 0x0D, 0x40, 0x27, 0x10,
27080xD5, 0x01, 0x04, 0x24, 0x10, 0x19, 0x45, 0xE4, 0x01, 0x55, 0x0A, 0x44, 0x06,
27090x54, 0x71, 0x42, 0x14, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27100x01, 0xA0, 0x34, 0x00, 0x1D, 0x81, 0x64, 0x03, 0x90, 0x05, 0x49, 0xC4, 0x80,
27110x91, 0x01, 0x76, 0x06, 0x90, 0x0D, 0x40, 0xB7, 0x00, 0x55, 0x01, 0x66, 0x8A,
27120x50, 0x1D, 0x60, 0x66, 0x80, 0x55, 0x02, 0x44, 0x06, 0x54, 0x11, 0x40, 0x04,
27130x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x30, 0x08,
27140x0D, 0x00, 0x44, 0x03, 0x14, 0x00, 0x40, 0x00, 0x48, 0x81, 0x40, 0x36, 0x02,
27150x10, 0x0C, 0x40, 0x33, 0x00, 0x11, 0x08, 0x44, 0x02, 0x10, 0x4D, 0x60, 0x04,
27160xC0, 0x05, 0x06, 0x04, 0x00, 0x58, 0x00, 0x40, 0x40, 0xA0, 0x00, 0x00, 0x00,
27170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x3E, 0x00, 0x1F, 0x00, 0x6C, 0x83,
27180xB0, 0x01, 0xC0, 0x24, 0x00, 0x13, 0x00, 0x7C, 0x00, 0xB0, 0x0D, 0xC8, 0x37,
27190x40, 0x1F, 0x02, 0x6C, 0x02, 0x70, 0xE9, 0xC3, 0x26, 0x80, 0x93, 0x16, 0x4C,
27200x02, 0x70, 0x09, 0xC2, 0x01, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27210x00, 0x85, 0xA0, 0x3F, 0x20, 0xBF, 0x00, 0xBC, 0x03, 0xF0, 0x03, 0xC0, 0x2F,
27220x00, 0xBF, 0x40, 0xFC, 0x02, 0xF1, 0x0F, 0xC0, 0x3F, 0x08, 0x2F, 0x00, 0xFC,
27230x02, 0xF0, 0x41, 0xC0, 0x2F, 0x00, 0x3F, 0x04, 0xFC, 0x00, 0xF0, 0x03, 0xC0,
27240x17, 0x22, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F,
27250x00, 0x63, 0x04, 0xCC, 0x32, 0x72, 0x1F, 0xC8, 0x2C, 0x03, 0x72, 0x01, 0xCC,
27260x05, 0x70, 0x0B, 0xC0, 0x3D, 0x00, 0xBB, 0x80, 0xEC, 0x04, 0xD0, 0x9B, 0xD0,
27270x5C, 0x4A, 0xF3, 0x01, 0xCC, 0x12, 0xF1, 0x17, 0xC0, 0x0C, 0x00, 0x0E, 0x00,
27280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x7F, 0x00, 0x51, 0x03, 0x44,
27290xB2, 0x12, 0x1F, 0x40, 0x24, 0x13, 0xD1, 0x01, 0x44, 0x07, 0x10, 0x3D, 0x40,
27300xFC, 0x00, 0xB1, 0x03, 0x44, 0x80, 0xD0, 0x45, 0x40, 0x04, 0x01, 0xF1, 0x21,
27310x44, 0x26, 0xD0, 0x1D, 0x40, 0x05, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
27320x00, 0x00, 0x11, 0xA0, 0x33, 0x00, 0x55, 0x02, 0x04, 0x12, 0x50, 0x0C, 0x40,
27330x21, 0x01, 0x91, 0x00, 0x16, 0x02, 0x50, 0x88, 0x40, 0x31, 0x02, 0x89, 0x08,
27340x24, 0x00, 0xD8, 0x08, 0x40, 0x30, 0x88, 0xC1, 0x00, 0x14, 0x82, 0xD2, 0x08,
27350x40, 0x44, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA8,
27360x35, 0x00, 0xD5, 0x00, 0x44, 0x82, 0x50, 0x0D, 0x40, 0x25, 0x00, 0xD1, 0x00,
27370x10, 0x22, 0x00, 0x09, 0x40, 0x35, 0x80, 0x95, 0x04, 0x44, 0x06, 0xC0, 0x81,
27380x00, 0x34, 0x04, 0xD1, 0x40, 0x54, 0x12, 0xD0, 0x0C, 0x40, 0x0D, 0x20, 0x06,
27390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x33, 0x40, 0xC7, 0x00,
27400x4C, 0x26, 0x71, 0x0D, 0xD0, 0x64, 0x00, 0x83, 0x80, 0x5C, 0x07, 0x70, 0x05,
27410xC0, 0x35, 0x00, 0x9B, 0x00, 0x6C, 0x4C, 0xF0, 0x09, 0xC8, 0x24, 0x00, 0xD3,
27420x00, 0x5C, 0x07, 0xF0, 0x0D, 0xC0, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
27430x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x10, 0x7B, 0x09, 0xFC, 0x03, 0xB3, 0x0F,
27440xC0, 0x3E, 0x41, 0xBF, 0x00, 0xED, 0x83, 0xF0, 0x9F, 0x82, 0x36, 0x20, 0x9B,
27450x01, 0xFC, 0x00, 0xF0, 0x1F, 0xC0, 0x2F, 0x00, 0xFD, 0x80, 0xEC, 0x02, 0xF2,
27460x8F, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
27470x08, 0x35, 0x12, 0xDF, 0x0A, 0x4D, 0x03, 0xF0, 0x8C, 0xC4, 0x34, 0x00, 0x9F,
27480x00, 0x7C, 0x03, 0xF0, 0x00, 0xC0, 0x73, 0x00, 0x8B, 0x00, 0x5C, 0x08, 0xF0,
27490x09, 0xC0, 0xA7, 0x00, 0xCF, 0x00, 0x7C, 0x42, 0xF2, 0x09, 0xC2, 0x08, 0x20,
27500x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA2, 0x34, 0x00, 0xDD,
27510x80, 0x44, 0x03, 0xD0, 0x0D, 0x40, 0x74, 0x00, 0x9D, 0x00, 0x74, 0x03, 0xD0,
27520x0B, 0x02, 0x3F, 0x00, 0x91, 0x01, 0x44, 0x02, 0xD0, 0x0D, 0x40, 0x67, 0x04,
27530xDD, 0x00, 0x74, 0x02, 0xD2, 0x0D, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00,
27540x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x32, 0x0C, 0x4C, 0x00, 0x44, 0x03, 0xD0,
27550x0C, 0x51, 0x34, 0x02, 0x4D, 0x00, 0x30, 0x00, 0xD0, 0x08, 0x40, 0x32, 0x00,
27560x81, 0x00, 0x14, 0x00, 0xD0, 0x0D, 0x40, 0x37, 0x00, 0xCD, 0x20, 0x34, 0x2E,
27570xD0, 0x00, 0x50, 0x1C, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27580x04, 0x80, 0x78, 0x00, 0x6D, 0x41, 0x84, 0x46, 0xD0, 0x1E, 0x48, 0x68, 0x00,
27590xED, 0x01, 0xB4, 0x06, 0xD0, 0x1E, 0x42, 0x7B, 0x60, 0xA1, 0x21, 0x84, 0x84,
27600xD0, 0x5E, 0x41, 0x6B, 0x00, 0xEC, 0x81, 0xB4, 0x07, 0xD2, 0x1B, 0x40, 0x18,
27610x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00,
27620xCF, 0x00, 0x0C, 0x02, 0xF2, 0x0C, 0xC0, 0x20, 0x00, 0x8F, 0x00, 0x3C, 0x12,
27630xF0, 0x48, 0xC0, 0x33, 0x00, 0x83, 0x10, 0x1C, 0x80, 0xF8, 0x08, 0xE0, 0x33,
27640x00, 0xCF, 0x48, 0x3C, 0x03, 0xF0, 0x09, 0xC0, 0x48, 0x40, 0x00, 0x00, 0x00,
27650x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x7D, 0x00, 0xFF, 0x00, 0xFC, 0x42,
27660xF0, 0x1E, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3F,
27670x00, 0xB7, 0x00, 0xEC, 0x22, 0xF2, 0x4B, 0xC0, 0x3F, 0x00, 0xFE, 0x01, 0xFC,
27680x43, 0xF0, 0x09, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
27690x00, 0x11, 0xA0, 0x37, 0x00, 0x5F, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x37,
27700x00, 0x9F, 0x00, 0x78, 0x02, 0xF0, 0x85, 0xC0, 0xF0, 0x22, 0xDB, 0x14, 0x74,
27710x00, 0xE0, 0x1C, 0xC0, 0x24, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x09, 0xC0,
27720x57, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0xB9,
27730x00, 0x6D, 0x04, 0xB4, 0x13, 0xD0, 0x4E, 0x40, 0x3B, 0x00, 0xAD, 0x00, 0xB6,
27740x02, 0xD0, 0x4E, 0x50, 0x38, 0x04, 0xA1, 0x00, 0xB4, 0x02, 0xD0, 0x0E, 0x40,
27750x28, 0x00, 0xED, 0x04, 0xB4, 0x03, 0xD0, 0x0A, 0x40, 0x4B, 0x20, 0x06, 0x00,
27760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x89, 0xED, 0x09, 0xB4,
27770x07, 0xD0, 0x9E, 0x40, 0x79, 0x03, 0xAD, 0x01, 0xB4, 0x06, 0xD0, 0x14, 0x62,
27780x78, 0x01, 0xE9, 0x11, 0xB4, 0x04, 0xD0, 0x1F, 0x40, 0x69, 0x88, 0xED, 0x0D,
27790xB4, 0x57, 0xD0, 0x1A, 0x40, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
27800x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0x8D, 0xA0, 0x34, 0x07, 0xD0, 0x0C, 0x40,
27810x73, 0x10, 0x8D, 0x0B, 0x34, 0x2A, 0xD0, 0x2C, 0x40, 0x30, 0x00, 0xC1, 0x01,
27820x34, 0x03, 0xD0, 0xDC, 0x40, 0x21, 0x23, 0xCD, 0x00, 0x34, 0x07, 0xD0, 0x08,
27830x41, 0x4B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8,
27840x11, 0x00, 0x7F, 0x20, 0x7C, 0x11, 0xF0, 0x05, 0xC0, 0x17, 0x24, 0x7F, 0x02,
27850xFC, 0x0D, 0xF0, 0x07, 0xC0, 0x14, 0x00, 0x5B, 0x01, 0xFC, 0x31, 0xF0, 0x07,
27860xD0, 0x9D, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xF0, 0x27, 0xC0, 0x5F, 0x20, 0x06,
27870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x87, 0x00, 0x1F, 0x01,
27880x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x10, 0x70, 0x40, 0xF0, 0x80,
27890xC0, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF1, 0x01, 0x80, 0x06, 0x28, 0x1F,
27900x80, 0x78, 0x08, 0xF0, 0x01, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
27910x00, 0x00, 0x00, 0x10, 0x08, 0x67, 0x00, 0x93, 0x00, 0x7C, 0x26, 0xF0, 0x39,
27920xC0, 0x27, 0x01, 0x9F, 0x00, 0x4D, 0x02, 0x32, 0x09, 0xC3, 0x64, 0x00, 0x8F,
27930x01, 0x4C, 0x02, 0xF1, 0x29, 0xC0, 0x27, 0x01, 0x9F, 0x00, 0x4C, 0x06, 0x30,
27940x09, 0xC0, 0x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
27950x20, 0x2E, 0x00, 0xB1, 0x03, 0xF4, 0x02, 0xD0, 0x0B, 0x40, 0x6F, 0x00, 0x9D,
27960x00, 0x04, 0x02, 0x10, 0x09, 0x40, 0x24, 0x00, 0x9D, 0x01, 0x44, 0x02, 0xD0,
27970x09, 0x40, 0x67, 0x08, 0xBD, 0x00, 0x84, 0x0E, 0x10, 0x08, 0x40, 0x04, 0x00,
27980x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x02, 0xD1,
27990x08, 0x74, 0x02, 0xD0, 0x09, 0x41, 0x27, 0x00, 0x8D, 0x00, 0x44, 0x02, 0x10,
28000x09, 0x50, 0x24, 0x01, 0x9D, 0x04, 0x44, 0x02, 0xD0, 0x0D, 0x42, 0x27, 0x00,
28010x8D, 0x00, 0x44, 0x1A, 0x10, 0x09, 0x40, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00,
28020x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x81, 0x00, 0x34, 0x0A, 0xD0,
28030x08, 0x42, 0xA3, 0x08, 0x8D, 0x02, 0x44, 0x0A, 0x10, 0x68, 0x41, 0x20, 0x05,
28040x8D, 0x14, 0x05, 0x02, 0xD0, 0x28, 0x40, 0xA3, 0x08, 0x8D, 0x02, 0x05, 0x02,
28050x10, 0x29, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28060x1D, 0xB0, 0x56, 0x40, 0x53, 0x01, 0x7C, 0x04, 0xF0, 0x11, 0xC0, 0x47, 0x00,
28070x1F, 0x00, 0x4C, 0x00, 0x34, 0x41, 0xC0, 0x04, 0x01, 0x1F, 0x04, 0x4C, 0x28,
28080xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x01, 0x4C, 0x04, 0x34, 0x01, 0xD0, 0x74,
28090xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0xA7, 0x00,
28100xBF, 0x02, 0xFC, 0x0E, 0xF0, 0x29, 0xC0, 0xEF, 0x00, 0xBF, 0x01, 0xFC, 0x06,
28110xF0, 0x1B, 0xC0, 0x27, 0x00, 0xBF, 0x80, 0xFC, 0x06, 0xF0, 0x1B, 0xC0, 0x6F,
28120x08, 0x9F, 0x23, 0xFC, 0x0A, 0xF0, 0x1B, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00,
28130x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x6F, 0x00, 0xFB, 0x11, 0xCD, 0x16,
28140xF0, 0x1B, 0xC0, 0x6F, 0x01, 0x93, 0x00, 0x6C, 0x0A, 0x20, 0x59, 0x80, 0x6D,
28150x01, 0xA3, 0x05, 0x0C, 0x02, 0xF0, 0x2B, 0xC8, 0x2B, 0x00, 0x9D, 0x85, 0xCC,
28160x06, 0x30, 0x29, 0xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28170x00, 0x1C, 0x08, 0x07, 0x00, 0x11, 0x42, 0x44, 0x14, 0xD0, 0x21, 0x40, 0xC7,
28180x03, 0x51, 0x15, 0x64, 0x04, 0x10, 0x30, 0x40, 0x04, 0x00, 0x11, 0x00, 0x54,
28190x00, 0xD0, 0x51, 0x40, 0x57, 0x00, 0x1D, 0x07, 0x44, 0x28, 0x10, 0x11, 0x40,
28200x73, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0xA3,
28210x00, 0x89, 0x00, 0x04, 0x4A, 0xD0, 0x28, 0x42, 0x23, 0x04, 0x81, 0x20, 0x24,
28220x02, 0x10, 0xC8, 0x61, 0xA3, 0x00, 0x81, 0x02, 0x04, 0x02, 0x50, 0x48, 0x60,
28230x33, 0x05, 0x8D, 0x12, 0x14, 0x02, 0xD0, 0x08, 0x40, 0x43, 0x80, 0x0E, 0x00,
28240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x91, 0x40, 0x44,
28250x02, 0xD0, 0x09, 0x42, 0x27, 0x60, 0x91, 0x08, 0x24, 0x02, 0x10, 0x09, 0x42,
28260x26, 0x00, 0x91, 0x04, 0x54, 0x0A, 0xD0, 0x89, 0x42, 0x27, 0x01, 0x9D, 0x00,
28270x54, 0x06, 0xD0, 0x09, 0x40, 0x63, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
28280x00, 0x00, 0x05, 0x28, 0x25, 0x00, 0x9B, 0x0E, 0xCC, 0x22, 0xF0, 0x09, 0xC0,
28290x2F, 0x00, 0xB3, 0x03, 0xEC, 0x12, 0x30, 0x1B, 0xC0, 0x27, 0x00, 0x93, 0x00,
28300x4C, 0x06, 0xE0, 0x1B, 0xC0, 0xEF, 0x20, 0xBF, 0x00, 0x5D, 0x02, 0xF0, 0x6B,
28310xC0, 0x17, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00,
28320x25, 0x00, 0x9F, 0x10, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0xA7, 0x00, 0x9F, 0x21,
28330x7C, 0x12, 0xF4, 0x38, 0xD0, 0x21, 0x40, 0x9F, 0x00, 0x7C, 0x0A, 0xF2, 0x09,
28340xC0, 0x67, 0x08, 0x9F, 0x00, 0x2C, 0x82, 0x34, 0x39, 0xC0, 0x53, 0x00, 0x04,
28350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x01, 0x01, 0x0F, 0x00,
28360x4D, 0x80, 0x30, 0x81, 0xC0, 0x07, 0x00, 0x1F, 0x02, 0x7C, 0x00, 0xF0, 0x01,
28370xC0, 0x04, 0x10, 0x17, 0x00, 0x4C, 0x08, 0x72, 0x01, 0xD0, 0x04, 0x40, 0x03,
28380x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x53, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
28390x00, 0x00, 0x00, 0x14, 0x20, 0xDC, 0x20, 0x7D, 0x00, 0x44, 0x05, 0x10, 0x07,
28400x40, 0x17, 0x04, 0x5D, 0x00, 0x74, 0x01, 0xD0, 0x05, 0xC0, 0x16, 0x00, 0x41,
28410x11, 0x44, 0x01, 0x10, 0x15, 0x43, 0x14, 0x00, 0x51, 0x00, 0xF0, 0x01, 0xC0,
28420x05, 0x40, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
28430xA0, 0xE2, 0x00, 0x8D, 0x00, 0x04, 0x07, 0x10, 0x08, 0x42, 0x37, 0x00, 0xCD,
28440x00, 0x30, 0x03, 0xD0, 0x0C, 0x40, 0x32, 0x00, 0x85, 0x01, 0x05, 0x03, 0x50,
28450x0C, 0x40, 0x32, 0x00, 0xC1, 0x80, 0x34, 0x02, 0xC0, 0x0C, 0x40, 0x53, 0x00,
28460x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0xB8, 0x00, 0xAD,
28470x00, 0x04, 0x77, 0x14, 0x0E, 0x40, 0x2B, 0x82, 0xED, 0x04, 0xB4, 0x13, 0xD0,
28480x4E, 0x40, 0x2A, 0x00, 0xF5, 0x00, 0xC4, 0x07, 0x50, 0xDE, 0x40, 0x7E, 0x01,
28490xE1, 0x0C, 0xB4, 0x03, 0xD1, 0x4E, 0x40, 0x13, 0x00, 0x02, 0x00, 0x00, 0x00,
28500x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x68, 0x00, 0xAF, 0x01, 0x84, 0x06, 0x30,
28510x1A, 0xC0, 0x7B, 0x01, 0xEF, 0x03, 0xBC, 0x0F, 0xF0, 0x5E, 0xC0, 0x6A, 0x00,
28520xE7, 0x01, 0x8C, 0x07, 0x70, 0x1F, 0x80, 0xFA, 0x00, 0xE3, 0x01, 0xBC, 0x06,
28530xF0, 0x3E, 0xC0, 0x53, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28540x10, 0xB8, 0x35, 0x00, 0x8F, 0x00, 0x7C, 0x02, 0xC0, 0x0D, 0xC0, 0x27, 0x00,
28550xDF, 0x00, 0x7C, 0x03, 0xE0, 0x8D, 0xC4, 0x23, 0x00, 0xDB, 0x00, 0x7C, 0x63,
28560xB8, 0x0D, 0xC0, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x43,
28570x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x6F, 0x00,
28580xB3, 0x01, 0xFC, 0x87, 0x30, 0x1B, 0x80, 0x7F, 0x02, 0xE3, 0x01, 0x8C, 0x07,
28590x30, 0x1F, 0x40, 0x7C, 0x01, 0xFF, 0x01, 0xEC, 0x07, 0x30, 0x1B, 0xC0, 0x78,
28600x28, 0xF3, 0x21, 0xFC, 0x06, 0x30, 0x1E, 0xC8, 0x08, 0x00, 0x0E, 0x00, 0x00,
28610x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x29, 0x40, 0xA1, 0x00, 0xF4, 0x03,
28620x14, 0x0A, 0x40, 0x2B, 0x48, 0xE1, 0x00, 0x84, 0x23, 0x10, 0x8E, 0x40, 0x29,
28630x00, 0xED, 0x00, 0xC4, 0x43, 0xB0, 0x0A, 0xC0, 0x3A, 0x02, 0xE1, 0x00, 0xB4,
28640x0B, 0x10, 0x8E, 0x40, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28650x00, 0x00, 0x00, 0x21, 0x00, 0xA1, 0x10, 0xB4, 0x02, 0x10, 0x0A, 0x40, 0x3B,
28660x80, 0xF1, 0x01, 0xC4, 0x07, 0x10, 0x1F, 0x40, 0x28, 0x01, 0xCD, 0x00, 0xA4,
28670x03, 0x10, 0x0B, 0x41, 0x3D, 0x00, 0xE1, 0x01, 0xB4, 0x62, 0x14, 0x1F, 0x40,
28680x20, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x13,
28690x00, 0x81, 0x01, 0x34, 0x86, 0x10, 0x0C, 0x40, 0x63, 0x00, 0xC1, 0x07, 0x04,
28700x0B, 0x18, 0x3C, 0x40, 0x21, 0x00, 0xCD, 0x00, 0x04, 0x17, 0x90, 0x3C, 0x43,
28710x67, 0x00, 0xC1, 0x00, 0x34, 0x07, 0x10, 0x1C, 0x40, 0x18, 0x20, 0x0C, 0x00,
28720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x25, 0x00, 0xD3, 0x03, 0x7C,
28730x13, 0x30, 0x09, 0xC2, 0x77, 0x04, 0xD3, 0x04, 0x45, 0x2B, 0x34, 0x6D, 0xC0,
28740x24, 0x00, 0xDF, 0x11, 0xEC, 0x03, 0x30, 0x3C, 0xC0, 0x65, 0x44, 0xD3, 0x20,
28750x3C, 0x02, 0x30, 0x6D, 0xD0, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
28760x00, 0x00, 0x01, 0x00, 0x37, 0x00, 0xCF, 0x00, 0x7C, 0x03, 0xF0, 0x2D, 0xC0,
28770x27, 0x08, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0xDD, 0x40,
28780x7C, 0x83, 0xF2, 0x0D, 0xC0, 0x26, 0x00, 0xDF, 0x00, 0x7C, 0x0A, 0xF0, 0x4D,
28790xC0, 0x27, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08,
28800x2F, 0x00, 0xBF, 0x10, 0x8C, 0x06, 0x31, 0x0B, 0xD0, 0xB4, 0x00, 0xFF, 0x00,
28810xCC, 0x03, 0xF0, 0x0F, 0xC1, 0xEF, 0x00, 0xFF, 0x85, 0xCC, 0x03, 0x30, 0x4F,
28820xC0, 0xEC, 0x00, 0xF3, 0x00, 0x4C, 0x16, 0x30, 0x0F, 0xC0, 0x04, 0x20, 0x0C,
28830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0xDD, 0x03,
28840x44, 0x02, 0x11, 0x24, 0x40, 0x74, 0x00, 0xDD, 0x40, 0x44, 0x03, 0xD0, 0x0D,
28850x42, 0x67, 0x20, 0xCD, 0x01, 0x44, 0x03, 0x10, 0x19, 0x48, 0x74, 0x20, 0xD1,
28860x00, 0x44, 0x01, 0x00, 0x0D, 0x40, 0x84, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00,
28870x00, 0x00, 0x00, 0x01, 0xA0, 0x26, 0x00, 0xDD, 0x06, 0x44, 0xA3, 0x14, 0x09,
28880x41, 0x34, 0x00, 0xCD, 0x00, 0x64, 0x03, 0xD0, 0x0D, 0x40, 0x27, 0x10, 0xDD,
28890x00, 0x84, 0x03, 0x10, 0x09, 0x40, 0x24, 0x40, 0xC1, 0x00, 0x44, 0x02, 0x10,
28900x0C, 0x40, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
28910x00, 0x20, 0x00, 0xCD, 0x00, 0x14, 0x02, 0x10, 0x08, 0x40, 0x20, 0x00, 0xCD,
28920x00, 0x05, 0x03, 0xD0, 0x0C, 0x40, 0x23, 0x80, 0xDD, 0x40, 0x04, 0x03, 0x14,
28930x09, 0x50, 0x20, 0x00, 0xC1, 0x40, 0x04, 0x02, 0x16, 0x0C, 0x54, 0x40, 0x80,
28940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, 0x00, 0x1F,
28950x00, 0x4C, 0x03, 0x30, 0x09, 0xCA, 0x24, 0x00, 0xFF, 0x00, 0xEC, 0x03, 0xF0,
28960x0F, 0xC0, 0x27, 0x00, 0xDF, 0x00, 0xCD, 0x03, 0x30, 0x09, 0xC0, 0x24, 0x00,
28970xF3, 0x00, 0x4D, 0x02, 0x30, 0x0F, 0xC0, 0x04, 0x40, 0x08, 0x00, 0x00, 0x00,
28980x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x1F, 0x00, 0x7F, 0x00, 0xED, 0x02, 0xF0,
28990x07, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0E, 0xC0, 0x2F, 0x00,
29000xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0A, 0xC0, 0x2F, 0x00, 0xFF, 0x00, 0xFC, 0x01,
29010xF0, 0x0F, 0xC0, 0x17, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29020x03, 0xA0, 0x7F, 0x00, 0xF7, 0x0C, 0xCC, 0x1B, 0x70, 0x3A, 0xC0, 0xEC, 0x00,
29030xBB, 0x04, 0xFC, 0x03, 0x30, 0x1E, 0xC0, 0x3E, 0x00, 0xA7, 0x01, 0x8C, 0x06,
29040x30, 0x1B, 0xC0, 0x7E, 0x12, 0xBF, 0x04, 0xCC, 0x07, 0xF0, 0x03, 0xC4, 0x0E,
29050x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x77, 0x00,
29060xF1, 0x8E, 0xC4, 0x3B, 0x10, 0x49, 0x40, 0x24, 0x00, 0x91, 0x0E, 0xF4, 0x2F,
29070x50, 0x19, 0x40, 0xF4, 0x00, 0x5D, 0x01, 0x44, 0x50, 0x10, 0x19, 0x40, 0x34,
29080x00, 0xC9, 0x14, 0x44, 0x03, 0xD0, 0x19, 0x40, 0x04, 0x20, 0x0C, 0x00, 0x00,
29090x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA2, 0x33, 0x20, 0xC5, 0x04, 0x04, 0x13,
29100x50, 0x49, 0x40, 0x30, 0x01, 0x09, 0x10, 0x14, 0x03, 0x12, 0x08, 0x60, 0x32,
29110x02, 0xCD, 0x80, 0x44, 0x10, 0x10, 0x08, 0x40, 0x33, 0x00, 0x8D, 0x0C, 0x04,
29120x03, 0xD0, 0x08, 0x40, 0x47, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29130x00, 0x03, 0xA8, 0x35, 0x00, 0xD1, 0x00, 0x46, 0x03, 0x10, 0x19, 0x41, 0x70,
29140x00, 0x11, 0x01, 0x74, 0x03, 0x10, 0x19, 0x40, 0x34, 0x00, 0xDD, 0x84, 0x46,
29150x84, 0x10, 0x09, 0x40, 0x35, 0x00, 0x99, 0x00, 0x44, 0x03, 0xD0, 0x19, 0x41,
29160x0D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA8, 0x36,
29170x08, 0xD7, 0x00, 0x48, 0x03, 0x70, 0x39, 0xC0, 0x44, 0x01, 0x9B, 0x05, 0x5C,
29180x83, 0x30, 0x19, 0xC0, 0x36, 0x80, 0xD7, 0x00, 0x4C, 0x4E, 0x31, 0x08, 0xC0,
29190x37, 0x02, 0x9F, 0x00, 0x4D, 0x07, 0xF0, 0x30, 0xC0, 0x03, 0x20, 0x0E, 0x00,
29200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x82, 0x3D, 0x10, 0xEF, 0x00, 0xFC,
29210x03, 0xF0, 0x0B, 0xC0, 0x2F, 0x00, 0xBF, 0x80, 0xFC, 0x43, 0xF0, 0x0B, 0xC0,
29220x3F, 0xA4, 0xFF, 0x01, 0xFD, 0x03, 0xF0, 0x0F, 0xC2, 0x3E, 0x00, 0xEF, 0x02,
29230xFC, 0x8F, 0xF0, 0x03, 0xC0, 0x1E, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
29240x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0x70, 0x21, 0xC0,
29250x35, 0x00, 0x97, 0x08, 0x0C, 0x03, 0x70, 0x01, 0xC0, 0x34, 0x02, 0xD7, 0x10,
29260x4C, 0x00, 0xB1, 0x0D, 0xC0, 0x37, 0x04, 0xD3, 0x18, 0x44, 0x03, 0xF0, 0x21,
29270xC0, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
29280x70, 0x00, 0xFD, 0x0F, 0xF4, 0x03, 0xD0, 0x0C, 0x60, 0x34, 0x00, 0x91, 0x03,
29290xC4, 0x4F, 0x30, 0xC0, 0xC0, 0x3C, 0x08, 0xC1, 0x11, 0x2C, 0x00, 0x10, 0x8D,
29300x40, 0xF4, 0x00, 0xD5, 0x00, 0x44, 0x0B, 0xD0, 0xB1, 0x40, 0x4C, 0x00, 0x02,
29310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x72, 0x00, 0xCD, 0x03,
29320x74, 0x07, 0x50, 0x08, 0x44, 0x31, 0x00, 0x05, 0x12, 0x14, 0x0B, 0xD0, 0x18,
29330x40, 0xF0, 0x20, 0xC5, 0x00, 0x24, 0x02, 0xD2, 0x00, 0x06, 0xF3, 0x00, 0x89,
29340x01, 0x04, 0x37, 0xD0, 0x90, 0x40, 0x1D, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
29350x00, 0x00, 0x00, 0x06, 0x82, 0x78, 0x04, 0xED, 0x81, 0xB4, 0x4F, 0xD0, 0x1B,
29360x48, 0x7D, 0x08, 0xE1, 0x09, 0x95, 0x07, 0x00, 0x9B, 0x40, 0x78, 0x00, 0x61,
29370x01, 0xE4, 0x04, 0x10, 0x9A, 0x40, 0x78, 0x06, 0xAD, 0x01, 0x84, 0x07, 0xD9,
29380x1A, 0x48, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
29390x10, 0x30, 0x00, 0xCD, 0x00, 0x34, 0x03, 0x70, 0x08, 0x40, 0x31, 0x00, 0x57,
29400x00, 0x1C, 0x03, 0xF0, 0x88, 0xC0, 0x30, 0x00, 0xC7, 0x00, 0x2C, 0x00, 0xB0,
29410x00, 0xC0, 0x37, 0x00, 0x8B, 0x0C, 0x0C, 0x03, 0xF0, 0x0C, 0xC0, 0x49, 0x48,
29420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB0, 0x3D, 0x00, 0xFF,
29430x02, 0xFC, 0x4B, 0xF0, 0x8B, 0x80, 0x3A, 0x02, 0xFF, 0x00, 0xAC, 0x63, 0xF1,
29440x8B, 0xD0, 0x3B, 0x00, 0xFF, 0x48, 0xFC, 0x00, 0xF0, 0x0A, 0xC2, 0x3F, 0x00,
29450x97, 0x28, 0xFD, 0x03, 0xF0, 0x8E, 0xC0, 0x09, 0x60, 0x06, 0x00, 0x00, 0x00,
29460x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x00, 0xDF, 0x0C, 0x7C, 0x0B, 0xF0,
29470x09, 0xC0, 0x34, 0x00, 0x57, 0x01, 0x4C, 0x1B, 0xF1, 0x09, 0xC0, 0x34, 0x12,
29480xCF, 0x00, 0x4C, 0x03, 0xB0, 0x01, 0xC0, 0x76, 0x90, 0xDB, 0x00, 0x7C, 0x83,
29490x30, 0x05, 0xC0, 0x54, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29500x12, 0x88, 0x39, 0x00, 0xED, 0x04, 0xB4, 0x13, 0xD0, 0x0F, 0x44, 0x38, 0x00,
29510xE1, 0x00, 0x84, 0x33, 0xD8, 0x0A, 0x42, 0x38, 0x00, 0xED, 0xA0, 0x84, 0x81,
29520x14, 0x0E, 0x44, 0x39, 0x00, 0xE5, 0x00, 0xB4, 0x03, 0x50, 0x0E, 0x40, 0x48,
29530x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x79, 0x00,
29540xED, 0x05, 0xB4, 0x07, 0xD0, 0x1A, 0x54, 0x7C, 0x00, 0x45, 0x01, 0x84, 0x17,
29550xC0, 0x13, 0x48, 0x78, 0x01, 0xEC, 0x01, 0xC5, 0x05, 0x12, 0x16, 0x40, 0x7D,
29560x80, 0xE1, 0xA1, 0xF4, 0x8F, 0x11, 0x1C, 0x60, 0x0C, 0x00, 0x04, 0x00, 0x00,
29570x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x00, 0xCD, 0x00, 0x34, 0x03,
29580xD8, 0x2C, 0x40, 0x30, 0x00, 0xC1, 0x03, 0x04, 0x03, 0xD0, 0x80, 0x40, 0x30,
29590x20, 0xCD, 0x05, 0x04, 0x15, 0x10, 0x0C, 0x40, 0x21, 0x00, 0xC5, 0x08, 0x74,
29600x06, 0x50, 0x2C, 0x41, 0x48, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29610x00, 0x17, 0xA8, 0x15, 0x00, 0x5F, 0x00, 0x7C, 0x01, 0xD0, 0x47, 0xC0, 0x98,
29620x00, 0x77, 0x49, 0x4C, 0x01, 0xF0, 0xA7, 0xC8, 0x14, 0x00, 0x7F, 0x07, 0x8C,
29630x15, 0x30, 0x47, 0xC0, 0x55, 0x00, 0x5B, 0x21, 0x7C, 0x01, 0x10, 0x27, 0xD1,
29640x5C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07,
29650x00, 0x1F, 0x82, 0x7C, 0x00, 0xF1, 0x01, 0xC1, 0x07, 0x01, 0x1F, 0xA8, 0x7D,
29660x08, 0xD0, 0x21, 0xD4, 0x87, 0x00, 0x1F, 0x40, 0x7C, 0x00, 0x70, 0x21, 0xC0,
29670x05, 0x02, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x21, 0xC0, 0x4B, 0x00, 0x0C, 0x00,
29680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x01, 0x9F, 0x03, 0x3C,
29690x02, 0x30, 0x09, 0xC0, 0x24, 0x08, 0x97, 0x01, 0x7C, 0x12, 0xF2, 0x29, 0xC0,
29700x26, 0x00, 0x9F, 0x08, 0x5C, 0x02, 0x34, 0x09, 0xC0, 0x24, 0x00, 0x8F, 0x09,
29710x4D, 0x02, 0x30, 0x48, 0xC0, 0x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
29720x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x03, 0x74, 0x0A, 0x10, 0x09, 0x40,
29730x24, 0x00, 0x91, 0x01, 0x74, 0x1A, 0xD0, 0x08, 0x41, 0xE4, 0x01, 0x8D, 0x60,
29740x44, 0x02, 0x12, 0x68, 0x40, 0x24, 0x03, 0x9D, 0x02, 0x44, 0x02, 0x30, 0x29,
29750x50, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0,
29760x24, 0x00, 0x9D, 0x00, 0x74, 0x46, 0x50, 0x08, 0x42, 0x24, 0x00, 0x95, 0x08,
29770x74, 0x82, 0xD0, 0x09, 0x40, 0x27, 0x02, 0x9D, 0x00, 0x54, 0x02, 0x52, 0x0D,
29780x40, 0x24, 0x00, 0x9D, 0x02, 0x44, 0x0A, 0x10, 0x09, 0x40, 0x60, 0x00, 0x02,
29790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0xCD, 0x14,
29800x34, 0x52, 0x54, 0x08, 0x40, 0x24, 0x0A, 0xC1, 0x94, 0x30, 0xD2, 0xD0, 0x09,
29810x40, 0x21, 0x00, 0x8D, 0x00, 0x44, 0x02, 0x19, 0x09, 0x70, 0x20, 0x10, 0x8D,
29820x08, 0x04, 0x02, 0x14, 0x4C, 0x41, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
29830x00, 0x00, 0x00, 0x1D, 0xB0, 0x07, 0x00, 0x1F, 0x04, 0x7C, 0x10, 0x70, 0x01,
29840xD0, 0x84, 0x00, 0x17, 0x04, 0x78, 0x10, 0xF0, 0x01, 0xC4, 0x07, 0x05, 0x1D,
29850x40, 0x5C, 0x00, 0x30, 0x01, 0xC0, 0x04, 0x00, 0x1F, 0x16, 0x4C, 0x00, 0x30,
29860x41, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19,
29870xB0, 0x27, 0x00, 0x9F, 0x14, 0x7C, 0x52, 0xB1, 0x4B, 0xC1, 0x2B, 0x01, 0xBF,
29880x94, 0x7C, 0x02, 0xF2, 0x0A, 0xC0, 0x26, 0x10, 0xFE, 0x00, 0xBC, 0x53, 0xF0,
29890x0A, 0xC0, 0x2B, 0x15, 0xBF, 0x04, 0xBC, 0x52, 0x70, 0x0B, 0xC0, 0x67, 0x60,
29900x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0, 0x2F, 0x00, 0xBF,
29910x01, 0xCC, 0x5E, 0xE0, 0x28, 0xC0, 0xA7, 0x00, 0xB7, 0x09, 0xEC, 0x12, 0x70,
29920x0A, 0xC0, 0x2F, 0x04, 0xAD, 0x00, 0x4C, 0x02, 0x30, 0x0A, 0xC0, 0xAE, 0x00,
29930xBB, 0x00, 0xCD, 0x02, 0xB0, 0x0B, 0xC0, 0x67, 0x00, 0x0E, 0x00, 0x00, 0x00,
29940x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00, 0x1D, 0x0F, 0x44, 0x08, 0xD0,
29950x01, 0x40, 0x07, 0x01, 0x11, 0x0B, 0x44, 0x00, 0x10, 0x01, 0x40, 0x87, 0x00,
29960x19, 0x00, 0x44, 0x10, 0x10, 0x01, 0x40, 0x04, 0x01, 0x11, 0x00, 0x44, 0x00,
29970x10, 0x01, 0x40, 0x73, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29980x10, 0xA0, 0x23, 0x00, 0x8D, 0x10, 0x04, 0x12, 0xD0, 0x48, 0x40, 0x67, 0x00,
29990x85, 0x04, 0x24, 0x0B, 0x50, 0x08, 0x40, 0x33, 0x00, 0x99, 0x00, 0x04, 0x42,
30000x10, 0x09, 0x40, 0x22, 0x01, 0x89, 0x00, 0x24, 0x02, 0x90, 0x08, 0x40, 0x43,
30010x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00,
30020x9D, 0x60, 0x44, 0x02, 0xC8, 0x09, 0x41, 0x27, 0x02, 0x91, 0x00, 0x64, 0x02,
30030x10, 0x09, 0x44, 0x27, 0x00, 0x99, 0x00, 0x00, 0x02, 0x11, 0x09, 0x00, 0x64,
30040x00, 0x91, 0x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x63, 0x20, 0x06, 0x00, 0x00,
30050x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x08, 0x25, 0x00, 0x9F, 0x00, 0x4C, 0x02,
30060xC1, 0x39, 0xC8, 0x67, 0x00, 0x95, 0x51, 0x6C, 0x02, 0x70, 0x79, 0xC0, 0x27,
30070x00, 0x9B, 0x01, 0x4C, 0x0E, 0x30, 0x19, 0xC0, 0x26, 0x00, 0x9B, 0x00, 0x4C,
30080x06, 0xB0, 0x09, 0xC1, 0x17, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30090x00, 0x14, 0x00, 0x25, 0x00, 0x9F, 0x00, 0x7D, 0x02, 0xF0, 0x29, 0xC0, 0x67,
30100x00, 0x8F, 0x05, 0x1C, 0x02, 0xF0, 0x99, 0xC4, 0x27, 0x24, 0x9B, 0x03, 0x7D,
30110x12, 0xF4, 0x99, 0xC3, 0x27, 0x00, 0x9F, 0x13, 0x7C, 0xD6, 0xF0, 0x49, 0xC1,
30120x53, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x04,
30130x00, 0x0F, 0x04, 0x7C, 0x00, 0xF4, 0x21, 0xC2, 0x04, 0x40, 0x13, 0x00, 0x6C,
30140x40, 0xF0, 0x01, 0xC0, 0x06, 0x00, 0x1F, 0x02, 0x5C, 0x08, 0x31, 0x01, 0xC0,
30150x04, 0x00, 0x1F, 0x00, 0x4C, 0x00, 0x30, 0x01, 0xC0, 0x50, 0x20, 0x04, 0x00,
30160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x20, 0x54, 0x04, 0x7D, 0x00, 0xF4,
30170x61, 0x10, 0x05, 0xC0, 0x12, 0x00, 0x71, 0x07, 0xC4, 0x09, 0xD0, 0x27, 0x40,
30180x1C, 0x00, 0x6D, 0x60, 0x44, 0x01, 0x12, 0x36, 0x41, 0x1C, 0x01, 0x7D, 0x47,
30190xC4, 0x85, 0x50, 0x27, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30200x00, 0x00, 0x14, 0xA0, 0x32, 0x80, 0xCD, 0x00, 0x34, 0x0F, 0x10, 0x0C, 0x40,
30210x30, 0x00, 0xC1, 0x07, 0x24, 0x09, 0xD1, 0xC4, 0x40, 0xB3, 0x00, 0x8D, 0x00,
30220x14, 0x03, 0x10, 0x00, 0x48, 0x35, 0x09, 0xDD, 0x03, 0x45, 0xAF, 0x10, 0xAC,
30230x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x88,
30240x28, 0x00, 0x6D, 0x82, 0xB4, 0x07, 0x10, 0xDF, 0x40, 0x3A, 0x03, 0xE1, 0x00,
30250x84, 0x03, 0xD0, 0x13, 0x48, 0x39, 0x80, 0x7D, 0x80, 0xD4, 0x13, 0x1C, 0x02,
30260x40, 0x39, 0x10, 0xED, 0x20, 0xC4, 0x03, 0x41, 0x1C, 0x40, 0x10, 0x00, 0x02,
30270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x68, 0x00, 0xEF, 0x01,
30280x3C, 0x05, 0x30, 0xDE, 0xC0, 0x7C, 0x00, 0x73, 0x01, 0xAC, 0x07, 0xF0, 0x1E,
30290xC0, 0x5B, 0x00, 0xAF, 0x01, 0x9C, 0x17, 0x30, 0x12, 0xD0, 0x79, 0x90, 0xBF,
30300x01, 0xCC, 0x07, 0x20, 0x1E, 0xC0, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
30310x00, 0x00, 0x00, 0x10, 0xA8, 0x25, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0x31, 0x0D,
30320xC8, 0xB7, 0x05, 0x5F, 0x20, 0x70, 0x03, 0xF1, 0x01, 0xC0, 0x16, 0x00, 0x5F,
30330x80, 0x2C, 0x6B, 0xF0, 0x01, 0xD0, 0x36, 0x00, 0x9F, 0x00, 0x7C, 0x01, 0xF0,
30340x0D, 0xD0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
30350xA0, 0x6F, 0x02, 0xF7, 0x09, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x78, 0x00, 0xFB,
30360x01, 0xFC, 0x07, 0xF0, 0x17, 0xC0, 0x7E, 0x00, 0xBB, 0x01, 0xCC, 0x17, 0xB0,
30370x97, 0xC0, 0x7C, 0x08, 0x7F, 0x01, 0xCC, 0x05, 0xF1, 0x1F, 0xC0, 0x0B, 0x00,
30380x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x29, 0x00, 0x6D,
30390x48, 0xB0, 0x03, 0xD0, 0x4E, 0xC0, 0x3B, 0x01, 0x61, 0x22, 0xB4, 0x8B, 0xD0,
30400x46, 0x40, 0xB8, 0x08, 0x71, 0x00, 0xFC, 0x13, 0x10, 0xC6, 0x40, 0x38, 0x00,
30410x6D, 0x48, 0x84, 0x00, 0xD0, 0x42, 0x40, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00,
30420x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x29, 0x20, 0xE5, 0x40, 0xB4, 0x03, 0xD0,
30430x0F, 0x40, 0x3C, 0x10, 0xE9, 0x08, 0xB4, 0x03, 0xD0, 0x07, 0x41, 0x1B, 0x02,
30440xB9, 0x08, 0xA4, 0x73, 0x92, 0x06, 0x41, 0x18, 0x00, 0x2D, 0x00, 0xA4, 0x61,
30450xD0, 0x0E, 0x60, 0x23, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30460x06, 0x28, 0x23, 0x00, 0x9D, 0x00, 0x34, 0x02, 0xD0, 0xEC, 0x60, 0xB2, 0x04,
30470x09, 0x01, 0x34, 0x03, 0xD0, 0x10, 0x40, 0x10, 0x00, 0x41, 0x23, 0x36, 0x0F,
30480x12, 0x34, 0x41, 0x20, 0x20, 0x0D, 0x09, 0x60, 0x04, 0xD0, 0x00, 0x40, 0x1B,
30490x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xA8, 0x25, 0x00,
30500x97, 0x00, 0x74, 0x02, 0xF0, 0x0F, 0xC0, 0x3C, 0x00, 0x9B, 0x02, 0x7C, 0x03,
30510xF0, 0x05, 0x80, 0x37, 0x00, 0x4B, 0x05, 0xEC, 0x07, 0xB0, 0x34, 0xD0, 0x04,
30520x80, 0xDF, 0x01, 0x6D, 0x06, 0xD0, 0x0D, 0x48, 0x57, 0x20, 0x06, 0x00, 0x00,
30530x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x27, 0x00, 0x1F, 0x00, 0x7C, 0x02,
30540xF0, 0x0D, 0xC0, 0x37, 0x08, 0x97, 0x0E, 0x74, 0x0B, 0xE0, 0x01, 0xA0, 0x36,
30550x10, 0x5F, 0x02, 0x5C, 0x13, 0xF0, 0x05, 0xC0, 0x87, 0x0A, 0xDF, 0x02, 0x5C,
30560x02, 0xF0, 0x0D, 0xC8, 0x27, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30570x00, 0x81, 0x08, 0xAF, 0x00, 0x3F, 0x00, 0xEC, 0x00, 0xF0, 0x0F, 0xC0, 0x3E,
30580x00, 0x3F, 0x00, 0xFC, 0x03, 0xF1, 0x07, 0xC8, 0x17, 0x20, 0x3B, 0x18, 0xCC,
30590x03, 0xB2, 0x07, 0xD0, 0x0E, 0x00, 0xBF, 0x01, 0xFC, 0x02, 0x30, 0x23, 0xC1,
30600x07, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x01, 0x26,
30610x20, 0x1D, 0x01, 0x44, 0x04, 0xD0, 0x0C, 0xC0, 0x36, 0x00, 0x1D, 0x01, 0x74,
30620x0F, 0xD0, 0x31, 0x42, 0xD7, 0x00, 0x5D, 0x52, 0x04, 0x03, 0x10, 0x35, 0x40,
30630x44, 0x04, 0x1D, 0x03, 0x74, 0x8C, 0x10, 0x21, 0x40, 0x87, 0x02, 0x08, 0x00,
30640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x26, 0x80, 0x9D, 0x31, 0x64,
30650x0C, 0xD0, 0x0D, 0x40, 0x36, 0x00, 0x9D, 0x01, 0x74, 0x07, 0x50, 0x15, 0x41,
30660x77, 0x00, 0x5D, 0x00, 0x47, 0x03, 0x90, 0x1D, 0x41, 0x64, 0x00, 0x5D, 0x94,
30670x74, 0x46, 0x10, 0x2D, 0x48, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
30680x00, 0x00, 0x10, 0x20, 0x20, 0x00, 0x0D, 0x00, 0x04, 0x02, 0xD0, 0x0D, 0x40,
30690x32, 0x00, 0x8D, 0x20, 0x34, 0x83, 0xD0, 0x00, 0x40, 0x23, 0x00, 0x4D, 0x00,
30700x46, 0x03, 0x10, 0x04, 0x40, 0x20, 0x00, 0x8D, 0x00, 0x26, 0x82, 0x1C, 0x00,
30710x40, 0x43, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10,
30720x24, 0x00, 0x9F, 0x80, 0x6C, 0x00, 0xF1, 0x0F, 0xC0, 0x3E, 0x00, 0x9F, 0x00,
30730x7C, 0x03, 0x70, 0x05, 0xC4, 0x17, 0x00, 0x1B, 0x00, 0xCC, 0x03, 0xB4, 0x05,
30740xC0, 0x04, 0x00, 0x4F, 0x00, 0x7C, 0x02, 0x30, 0x01, 0xC4, 0x07, 0x40, 0x08,
30750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x2F, 0x00, 0xBE, 0x00,
30760xFC, 0x02, 0xF0, 0x0E, 0xC0, 0x3F, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0xF0, 0x02,
30770xC0, 0x3F, 0x20, 0x7F, 0x40, 0xFC, 0x03, 0xF0, 0x06, 0xC0, 0x2F, 0x00, 0x3F,
30780x00, 0xFC, 0x00, 0xF2, 0x03, 0xE0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
30790x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xBF, 0x01, 0xEC, 0x32, 0xF2, 0xC7,
30800xC8, 0x5F, 0x02, 0x33, 0xA1, 0xFC, 0x07, 0x30, 0x6B, 0xC8, 0x3F, 0x08, 0xB3,
30810x00, 0xEC, 0x04, 0x10, 0x1B, 0xC8, 0x1F, 0x03, 0xFD, 0x09, 0xCC, 0x82, 0x32,
30820x1F, 0xC6, 0x0F, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
30830x08, 0x7F, 0x00, 0xDD, 0x81, 0x74, 0x32, 0xD2, 0xC5, 0x40, 0x07, 0x11, 0xD1,
30840x01, 0xF4, 0x07, 0x10, 0x69, 0x48, 0xFF, 0x00, 0x95, 0x03, 0x74, 0x04, 0x10,
30850x1D, 0x40, 0x97, 0x01, 0xED, 0x04, 0x44, 0x0E, 0x10, 0x1F, 0x40, 0x0F, 0x60,
30860x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33, 0x00, 0xCD,
30870x00, 0x24, 0x03, 0xD0, 0x44, 0x40, 0x37, 0x01, 0xC5, 0x01, 0x14, 0x83, 0x10,
30880x28, 0x40, 0x33, 0x0A, 0x01, 0x08, 0x74, 0x00, 0x10, 0x0C, 0x40, 0x93, 0x00,
30890xCD, 0x00, 0x14, 0x22, 0x1A, 0x0C, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00,
30900x00, 0x00, 0x00, 0x00, 0x03, 0x88, 0x35, 0x00, 0xDD, 0x01, 0x74, 0x82, 0xD0,
30910x65, 0x40, 0x27, 0x00, 0xD0, 0x01, 0x74, 0x03, 0x50, 0x0D, 0x42, 0x37, 0x08,
30920x95, 0x20, 0x74, 0x04, 0x10, 0x1D, 0x42, 0x37, 0x09, 0xDC, 0x00, 0x54, 0x13,
30930x10, 0x0D, 0x40, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30940x02, 0xA8, 0x37, 0x00, 0xDF, 0x05, 0x6C, 0x02, 0xF0, 0x05, 0xC0, 0xB3, 0x01,
30950xD7, 0x21, 0x3C, 0x03, 0x34, 0x1D, 0xC0, 0x37, 0x10, 0x93, 0x80, 0x28, 0x0C,
30960x32, 0x1D, 0xC1, 0x57, 0x00, 0xDF, 0x80, 0x5C, 0x86, 0x31, 0x0D, 0xC0, 0x0B,
30970x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00,
30980xFE, 0x00, 0xFC, 0x23, 0xF1, 0x0F, 0xC0, 0xBF, 0x40, 0xFF, 0x00, 0xFC, 0x03,
30990xA0, 0x3B, 0xC0, 0x37, 0x04, 0xBF, 0x23, 0xF0, 0x00, 0xF0, 0x0F, 0xC1, 0x1F,
31000x00, 0xFF, 0x00, 0x2C, 0x02, 0xF0, 0x0F, 0xC4, 0x1F, 0x00, 0x06, 0x00, 0x00,
31010x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xD7, 0x00, 0x7C, 0x07,
31020x70, 0x0D, 0xC0, 0x34, 0x00, 0xD3, 0x80, 0x7C, 0x43, 0x34, 0x0D, 0xC0, 0x33,
31030x42, 0x13, 0x00, 0x4C, 0x00, 0xF0, 0x0D, 0xC0, 0xB7, 0x08, 0xC3, 0x00, 0x4C,
31040x43, 0x70, 0x0D, 0xC1, 0x0B, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31050x00, 0x13, 0xA0, 0x34, 0x00, 0xD1, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x40, 0xB4,
31060x08, 0xDA, 0x01, 0x74, 0x07, 0x00, 0x4D, 0x46, 0xBF, 0x00, 0xB1, 0x00, 0x44,
31070x48, 0xD0, 0x2D, 0x40, 0x77, 0x04, 0xD1, 0x00, 0x40, 0x0F, 0x10, 0x3D, 0x40,
31080x6F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x32,
31090x00, 0xC1, 0x00, 0x20, 0x02, 0x10, 0x9C, 0x40, 0x60, 0x26, 0xC5, 0x01, 0x24,
31100x27, 0x10, 0x08, 0x00, 0xF3, 0x00, 0x89, 0x01, 0x35, 0x44, 0xD0, 0x2C, 0x40,
31110x33, 0x00, 0xC5, 0x29, 0x04, 0x2F, 0x90, 0xBC, 0x42, 0x0F, 0x00, 0x08, 0x00,
31120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x78, 0x00, 0xE1, 0x01, 0xB6,
31130x06, 0x10, 0x14, 0x58, 0x68, 0x10, 0xED, 0x51, 0x34, 0x07, 0x10, 0x1A, 0x42,
31140x7B, 0x10, 0x89, 0x01, 0x94, 0x04, 0xD0, 0x1E, 0x40, 0x5B, 0xC2, 0xE5, 0x03,
31150x84, 0x06, 0x90, 0x1E, 0x40, 0x77, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
31160x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xC7, 0x00, 0x7E, 0x02, 0x70, 0x04, 0xC0,
31170x20, 0x82, 0xC7, 0x80, 0x2C, 0x13, 0x38, 0x0C, 0xE0, 0x33, 0x00, 0x0B, 0x90,
31180x1C, 0x30, 0xF0, 0x0C, 0xC0, 0xB7, 0xA0, 0xC7, 0x80, 0x0C, 0x03, 0xF0, 0x0C,
31190xC0, 0x4B, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8,
31200x79, 0xC0, 0xFF, 0x00, 0xF4, 0x02, 0xF8, 0x07, 0xC8, 0x2B, 0x08, 0xFB, 0x08,
31210xFC, 0x07, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xB7, 0x10, 0xEC, 0xA0, 0xF0, 0x0F,
31220xC0, 0x3F, 0x00, 0xFB, 0x01, 0x7E, 0x23, 0x70, 0x1D, 0xC1, 0x0B, 0x20, 0x06,
31230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x00, 0xDF, 0x00,
31240x7C, 0x83, 0xF0, 0x8D, 0x80, 0x27, 0x00, 0xDF, 0x40, 0x7E, 0x83, 0xF0, 0x89,
31250x40, 0x37, 0x03, 0x9F, 0x00, 0x6E, 0x00, 0xF0, 0x0D, 0xC0, 0x17, 0x10, 0xD3,
31260x00, 0x7E, 0x02, 0xF0, 0x0D, 0xC0, 0x40, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
31270x00, 0x00, 0x00, 0x12, 0x88, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x1B, 0xD0, 0x0E,
31280x40, 0x2B, 0x00, 0xED, 0x00, 0xB6, 0x0B, 0xD0, 0x4A, 0x44, 0x3B, 0x02, 0x8D,
31290x04, 0x84, 0x80, 0xD0, 0x0E, 0x40, 0x93, 0x01, 0xE1, 0x04, 0xB4, 0x82, 0xD8,
31300x4C, 0x40, 0x4D, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
31310x00, 0x79, 0x02, 0xED, 0x01, 0x94, 0x07, 0xD0, 0x1E, 0x60, 0x6B, 0x24, 0xED,
31320x01, 0xB4, 0x97, 0xD0, 0x5E, 0x62, 0x7B, 0x18, 0x2D, 0x01, 0xA4, 0xC4, 0xD2,
31330x1E, 0x41, 0xFB, 0x00, 0xE1, 0x0D, 0xB4, 0x2F, 0xD1, 0x1E, 0x40, 0x10, 0x00,
31340x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33, 0x10, 0x4D,
31350x07, 0x74, 0x07, 0xD0, 0x38, 0x49, 0xE3, 0x20, 0xCD, 0x05, 0x34, 0x03, 0xD0,
31360x1C, 0x40, 0x33, 0x80, 0xCD, 0x00, 0x04, 0x0F, 0xD0, 0x74, 0x40, 0x63, 0x40,
31370xC1, 0x00, 0x34, 0x07, 0xD0, 0x0C, 0x40, 0x59, 0x20, 0x0C, 0x00, 0x00, 0x00,
31380x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15, 0x00, 0x7F, 0x10, 0x7C, 0x41, 0xF0,
31390x17, 0xC0, 0xDF, 0x00, 0x7F, 0x04, 0x3C, 0x01, 0xF0, 0x05, 0xC0, 0x17, 0x00,
31400x7F, 0x11, 0xAC, 0x05, 0xF0, 0x27, 0xC8, 0xDF, 0x08, 0x53, 0x80, 0x7C, 0x01,
31410xF1, 0x04, 0xC0, 0x5C, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31420x12, 0x00, 0x87, 0x08, 0x1F, 0x80, 0x78, 0x00, 0xF0, 0x81, 0xC8, 0x87, 0x00,
31430x1C, 0x00, 0x7C, 0x08, 0xF0, 0x81, 0x82, 0x02, 0x00, 0x0F, 0x00, 0x7C, 0x10,
31440xF0, 0x21, 0xC0, 0x03, 0x00, 0x1F, 0x02, 0x74, 0x00, 0xF0, 0x01, 0xC8, 0x4B,
31450x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x67, 0x02,
31460x9F, 0x00, 0x7C, 0x06, 0x30, 0x49, 0xC0, 0x67, 0x04, 0x9F, 0xC8, 0x7C, 0x02,
31470x31, 0x19, 0xC0, 0x27, 0x00, 0x93, 0x00, 0x4D, 0x8A, 0x30, 0x49, 0xC0, 0x67,
31480x04, 0x93, 0x08, 0x4C, 0x22, 0x30, 0x09, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00,
31490x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0xEE, 0x00, 0x9D, 0x40, 0xF0, 0x06,
31500x10, 0x0B, 0x40, 0xA7, 0x02, 0x9D, 0x01, 0xF4, 0x0A, 0x10, 0x9B, 0x40, 0x27,
31510x01, 0x9B, 0x80, 0x44, 0x06, 0x10, 0x29, 0x44, 0x2F, 0x00, 0xB1, 0x03, 0x84,
31520x02, 0x10, 0x0B, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31530x00, 0x18, 0xA0, 0x24, 0x04, 0x9D, 0x80, 0x70, 0x22, 0x10, 0x09, 0x40, 0x27,
31540x00, 0x9D, 0x00, 0x74, 0x42, 0x10, 0x09, 0x40, 0x27, 0x00, 0x91, 0x08, 0x44,
31550x43, 0x14, 0x29, 0x40, 0x27, 0x02, 0x80, 0x00, 0x44, 0xC2, 0x10, 0x09, 0x40,
31560x70, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20,
31570x18, 0x8D, 0x42, 0x34, 0x0A, 0x14, 0x28, 0x44, 0xB3, 0x00, 0x8D, 0x00, 0x36,
31580x02, 0x11, 0x28, 0x40, 0x23, 0x45, 0x89, 0x14, 0x04, 0x02, 0x10, 0x08, 0x40,
31590xA3, 0x00, 0x81, 0x02, 0x04, 0x02, 0x10, 0x08, 0x40, 0x50, 0xA0, 0x00, 0x00,
31600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x46, 0x00, 0x1F, 0x00, 0x7C,
31610x04, 0x12, 0x11, 0xC2, 0x07, 0x10, 0x1F, 0x00, 0x7C, 0x04, 0x34, 0x11, 0xC0,
31620x07, 0x01, 0x13, 0x04, 0x4C, 0x00, 0x32, 0x01, 0xC0, 0x47, 0x40, 0x53, 0x01,
31630x4C, 0x04, 0x34, 0x11, 0xD0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
31640x00, 0x00, 0x19, 0xB8, 0xA7, 0x00, 0xBF, 0x01, 0xFC, 0x8E, 0xF0, 0x3B, 0xC0,
31650x7F, 0x20, 0xBE, 0x00, 0x7C, 0x0A, 0xF0, 0x3B, 0xC0, 0x27, 0x00, 0xF7, 0x00,
31660xFC, 0x02, 0xF0, 0x0B, 0xC0, 0xEF, 0x00, 0x9C, 0x23, 0xFD, 0x0A, 0xF0, 0x29,
31670xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0,
31680x6B, 0x00, 0x93, 0x82, 0xFC, 0x16, 0xF0, 0x7B, 0xC1, 0x2C, 0x00, 0xB3, 0x00,
31690xFC, 0x06, 0xF0, 0x7B, 0xC1, 0x6C, 0x01, 0xBE, 0x81, 0xCC, 0x02, 0xF0, 0x0B,
31700xD0, 0xEC, 0x01, 0xBF, 0x07, 0xFC, 0x16, 0xF0, 0x1B, 0xC0, 0x60, 0x00, 0x0E,
31710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x87, 0x00, 0x51, 0x05,
31720x74, 0x54, 0xD0, 0x31, 0x40, 0x40, 0x05, 0x11, 0x00, 0x74, 0x00, 0xD1, 0x31,
31730x44, 0x05, 0x00, 0x1D, 0x0A, 0x44, 0x01, 0xD0, 0x01, 0x40, 0x44, 0x20, 0x1D,
31740x03, 0x74, 0x28, 0xD2, 0x01, 0x48, 0x70, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00,
31750x00, 0x00, 0x00, 0x10, 0xA0, 0xA3, 0x40, 0x85, 0x44, 0x36, 0x0A, 0xD8, 0x49,
31760x40, 0x22, 0x00, 0x81, 0x21, 0x34, 0x0A, 0xD1, 0x48, 0x40, 0xA0, 0x00, 0x8D,
31770xA0, 0x04, 0x02, 0xD1, 0x08, 0x60, 0xA2, 0x11, 0xCD, 0x06, 0x34, 0x82, 0xD0,
31780x28, 0x40, 0x48, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
31790xA8, 0x25, 0x80, 0x95, 0x01, 0x74, 0x82, 0xD0, 0x19, 0x41, 0x22, 0x40, 0x91,
31800x00, 0x74, 0x03, 0xD0, 0x09, 0x40, 0x25, 0x00, 0x9D, 0x00, 0x44, 0x02, 0xD0,
31810x09, 0x41, 0x26, 0x05, 0x9D, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40, 0x60, 0x00,
31820x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00, 0xB7,
31830x00, 0xFC, 0x06, 0xF2, 0x0A, 0xD0, 0xAE, 0x10, 0x93, 0x0B, 0x7C, 0x02, 0xF0,
31840x0B, 0xC0, 0x24, 0x20, 0x9F, 0x03, 0x4C, 0x8E, 0xF0, 0x08, 0xC0, 0xEE, 0x00,
31850xBF, 0x00, 0x7C, 0x06, 0xF0, 0x08, 0xD0, 0x14, 0x20, 0x0E, 0x00, 0x00, 0x00,
31860x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x25, 0x00, 0x9B, 0x00, 0x7C, 0x0E, 0xF0,
31870x09, 0xC0, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x39, 0xC0, 0x27, 0x0C,
31880x8F, 0x49, 0x7D, 0x12, 0xF1, 0x49, 0xC0, 0x25, 0x00, 0x9F, 0x00, 0x7C, 0x52,
31890xF0, 0x09, 0x81, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31900x14, 0x08, 0x01, 0x01, 0x13, 0x02, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x04, 0x00,
31910x1B, 0x08, 0x7C, 0x80, 0xF0, 0x01, 0xC0, 0x04, 0x00, 0x17, 0x88, 0x7C, 0x00,
31920xF1, 0x21, 0xC0, 0x05, 0x00, 0x1B, 0x04, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x43,
31930x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0xDC, 0x00,
31940x50, 0x00, 0x74, 0x01, 0x10, 0x05, 0x42, 0x5C, 0x02, 0x51, 0x00, 0xF4, 0x05,
31950xD0, 0x15, 0x41, 0x1C, 0x00, 0x51, 0x81, 0xF4, 0x05, 0xD0, 0x07, 0x41, 0x14,
31960x04, 0x71, 0x40, 0xF4, 0x0D, 0xD0, 0x27, 0x40, 0x53, 0x00, 0x02, 0x00, 0x00,
31970x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0xE2, 0x00, 0xC9, 0x00, 0x34, 0x07,
31980x90, 0x9C, 0x40, 0x20, 0x22, 0x89, 0x20, 0x34, 0x06, 0xD0, 0x0D, 0x40, 0xB0,
31990x0A, 0x85, 0x01, 0x34, 0x23, 0xD0, 0x08, 0x43, 0x73, 0x00, 0x89, 0x00, 0x34,
32000x0E, 0xD0, 0xA8, 0x40, 0x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32010x00, 0x05, 0x80, 0xA8, 0x00, 0xE9, 0x04, 0x34, 0x0E, 0x90, 0xCA, 0x50, 0x38,
32020x01, 0xE1, 0x00, 0xB4, 0x0A, 0xD0, 0x0E, 0x70, 0x48, 0x00, 0xE1, 0x00, 0xB4,
32030x00, 0xD0, 0x02, 0x40, 0x7A, 0x00, 0x61, 0x00, 0xB4, 0x42, 0xD1, 0x0A, 0x60,
32040x07, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x68,
32050x00, 0xEB, 0x07, 0xBC, 0x07, 0xB0, 0x1C, 0xC0, 0xD8, 0x00, 0xEB, 0x01, 0xBC,
32060x06, 0xF0, 0x5F, 0xC0, 0x58, 0x00, 0xE7, 0x01, 0xBC, 0x04, 0xF1, 0x16, 0xC2,
32070x73, 0x00, 0xEB, 0x07, 0xBC, 0x06, 0xF0, 0x1A, 0xC0, 0x47, 0x40, 0x00, 0x00,
32080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x25, 0x40, 0xD7, 0x00, 0x7C,
32090x02, 0x74, 0x09, 0xC0, 0x17, 0x00, 0xDE, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xC0,
32100x03, 0x00, 0xDF, 0x00, 0x7C, 0x00, 0xF0, 0x04, 0xC6, 0x35, 0x02, 0x5F, 0x00,
32110x7C, 0x02, 0xFA, 0x09, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
32120x00, 0x00, 0x00, 0xA0, 0x7F, 0x00, 0xF3, 0x01, 0xDC, 0x47, 0x30, 0x1F, 0xC2,
32130x78, 0x00, 0xF3, 0x01, 0xFC, 0x07, 0x30, 0x1B, 0x41, 0x4D, 0x00, 0xF1, 0x09,
32140xCC, 0x06, 0xE0, 0x16, 0xE0, 0x6C, 0x01, 0xE3, 0x01, 0xCC, 0x07, 0x30, 0x9B,
32150xC2, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88,
32160xB9, 0x10, 0xE1, 0x10, 0x84, 0x02, 0x12, 0x0B, 0x41, 0x38, 0x20, 0xE1, 0x00,
32170xB4, 0x02, 0x10, 0x0A, 0x40, 0x08, 0x01, 0xE1, 0x08, 0x84, 0x00, 0xD1, 0x0E,
32180xD0, 0x2C, 0x41, 0x61, 0x00, 0xC4, 0x02, 0x10, 0x8A, 0x40, 0x57, 0x60, 0x04,
32190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0xF9, 0x01,
32200x94, 0x03, 0x14, 0x8E, 0x40, 0x1C, 0x00, 0xE1, 0x00, 0x34, 0x03, 0x90, 0x0A,
32210x40, 0x08, 0x00, 0xF9, 0x00, 0xA4, 0x00, 0xD0, 0x8E, 0x41, 0x28, 0x13, 0xE1,
32220x00, 0xD4, 0x23, 0x90, 0x0A, 0x44, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
32230x00, 0x00, 0x00, 0x04, 0x28, 0x23, 0x00, 0xC9, 0x02, 0x06, 0x06, 0x10, 0x09,
32240x42, 0x10, 0x00, 0xC1, 0x06, 0x34, 0x02, 0x90, 0x08, 0x40, 0x00, 0x00, 0xC9,
32250x01, 0x26, 0x4C, 0xD0, 0x0C, 0x42, 0x20, 0x04, 0x41, 0x00, 0x14, 0x81, 0x90,
32260x08, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
32270xA8, 0x25, 0x00, 0xDB, 0x00, 0x5C, 0x03, 0x30, 0x1D, 0xC0, 0x74, 0x48, 0xD3,
32280x13, 0x7C, 0x02, 0xB4, 0x1D, 0xC0, 0x05, 0x00, 0xCB, 0x01, 0x6C, 0x46, 0xF0,
32290x1D, 0xE0, 0x74, 0x00, 0xD3, 0x40, 0x1D, 0x06, 0xB0, 0x0D, 0xC0, 0x57, 0x20,
32300x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x40, 0xD7,
32310x00, 0x7C, 0x22, 0xF0, 0x49, 0xD0, 0x37, 0x02, 0xDF, 0x00, 0x7C, 0x0A, 0x70,
32320x8D, 0xD0, 0x07, 0x00, 0xD7, 0x0C, 0x5D, 0x00, 0xF0, 0x05, 0xC9, 0x35, 0x02,
32330x4F, 0x00, 0x64, 0x22, 0x74, 0x29, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00,
32340x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x2F, 0x00, 0xFF, 0x10, 0x4C, 0x0B, 0xF0,
32350x0F, 0xC0, 0x5C, 0x00, 0xFF, 0x80, 0xEC, 0x0E, 0xF0, 0x8C, 0xC0, 0x04, 0x00,
32360xFF, 0x08, 0xCC, 0x00, 0xF0, 0x87, 0xC0, 0x7E, 0x20, 0xF3, 0x08, 0xCC, 0x02,
32370x33, 0x2F, 0xC6, 0x13, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32380x81, 0x00, 0x26, 0x00, 0xDD, 0x00, 0x44, 0x87, 0xD0, 0x19, 0xC0, 0xF6, 0x00,
32390xCD, 0x09, 0x44, 0x00, 0xD2, 0x19, 0x40, 0x44, 0x04, 0xDC, 0x20, 0x6C, 0x04,
32400x90, 0x04, 0x40, 0x21, 0x00, 0xD3, 0x02, 0x44, 0x02, 0x10, 0x19, 0x40, 0x17,
32410x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x82,
32420xCD, 0x00, 0x44, 0x03, 0xD0, 0x4D, 0x50, 0xB4, 0x02, 0xDD, 0x00, 0x64, 0x03,
32430xD8, 0x09, 0x40, 0x44, 0x20, 0xDD, 0x00, 0x44, 0x06, 0xD0, 0x05, 0x44, 0x24,
32440x01, 0xD0, 0x10, 0x44, 0x03, 0x10, 0x0D, 0x41, 0x07, 0x00, 0x02, 0x00, 0x00,
32450x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0xCD, 0x00, 0x04, 0x02,
32460xD0, 0x0C, 0x40, 0x12, 0x00, 0xDD, 0x00, 0x04, 0x03, 0xD0, 0x08, 0x40, 0x00,
32470x00, 0xCD, 0x00, 0x26, 0x00, 0x90, 0x0D, 0x40, 0x35, 0x40, 0x41, 0x00, 0x05,
32480x02, 0x1C, 0x04, 0x44, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32490x00, 0x00, 0xB0, 0x16, 0x00, 0xFF, 0x40, 0x4C, 0x02, 0xF0, 0x09, 0x40, 0x14,
32500x20, 0xDF, 0x00, 0x6C, 0x03, 0xD0, 0x0D, 0xC4, 0x04, 0x08, 0xDF, 0x00, 0x4C,
32510x00, 0xF0, 0x0D, 0xC0, 0x26, 0x10, 0x53, 0x00, 0x4C, 0x03, 0x30, 0x0D, 0xC2,
32520x03, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x1F,
32530x00, 0xEF, 0x00, 0xFC, 0x02, 0xF0, 0x0B, 0xC0, 0x1D, 0x00, 0xFF, 0x00, 0xFC,
32540x01, 0xF0, 0x0B, 0xD0, 0x0F, 0x00, 0xEF, 0x00, 0xFC, 0x00, 0xF0, 0x0F, 0xC0,
32550x2F, 0x00, 0x77, 0x40, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x17, 0x22, 0x0E, 0x00,
32560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x7F, 0x00, 0xEF, 0x09, 0xDC,
32570x06, 0xF2, 0x1F, 0xC0, 0x7D, 0x00, 0xE3, 0x01, 0xDC, 0x12, 0x30, 0x13, 0xC0,
32580x4E, 0x10, 0xB3, 0x00, 0xDC, 0x32, 0x70, 0x2B, 0xC0, 0xBC, 0x00, 0xB3, 0x20,
32590xFC, 0x10, 0x30, 0x02, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
32600x00, 0x00, 0x03, 0x18, 0x77, 0x00, 0xDD, 0x04, 0x44, 0x06, 0x10, 0x1D, 0x40,
32610x74, 0x00, 0xD1, 0x01, 0x44, 0x0E, 0x10, 0x11, 0x40, 0x74, 0x00, 0x51, 0x43,
32620x44, 0xB2, 0x10, 0xA1, 0x40, 0xBC, 0x03, 0x11, 0x32, 0x74, 0x26, 0x50, 0x11,
32630x40, 0x0C, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0,
32640x33, 0x00, 0xCD, 0x04, 0x14, 0x03, 0x58, 0x0C, 0x40, 0x27, 0x00, 0xD5, 0x00,
32650x17, 0x08, 0x10, 0x01, 0x60, 0x06, 0x08, 0x81, 0x28, 0x16, 0x12, 0xD8, 0x40,
32660x40, 0x30, 0x00, 0x05, 0x86, 0x34, 0x00, 0x18, 0x08, 0x60, 0x4E, 0x80, 0x0E,
32670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x35, 0x00, 0xDD, 0x04,
32680x54, 0x07, 0x10, 0x0D, 0x46, 0x26, 0x00, 0xD5, 0x11, 0x44, 0x0C, 0x12, 0x11,
32690x40, 0x74, 0x00, 0x91, 0x01, 0x44, 0x46, 0x18, 0x10, 0x40, 0x36, 0x00, 0x15,
32700x01, 0x74, 0x43, 0x52, 0x19, 0x41, 0x0C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
32710x00, 0x00, 0x00, 0x02, 0xA8, 0x37, 0x08, 0xDF, 0x00, 0x1E, 0x06, 0x70, 0xD5,
32720xC0, 0xD3, 0x00, 0xC7, 0x03, 0x5C, 0x0C, 0x30, 0x30, 0xC4, 0x52, 0x04, 0x92,
32730x07, 0x5D, 0x04, 0x70, 0x39, 0xC0, 0x34, 0x00, 0x97, 0x61, 0x7C, 0x8D, 0x30,
32740x39, 0xC0, 0x2A, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
32750x80, 0x3D, 0x30, 0xFF, 0x01, 0xEC, 0x02, 0xF0, 0x0F, 0xC0, 0x7D, 0x02, 0xFB,
32760x00, 0xFC, 0x02, 0xF0, 0x03, 0xC0, 0x1F, 0x00, 0x6F, 0x20, 0xBC, 0x00, 0xF0,
32770x03, 0xD0, 0x3D, 0x00, 0x3B, 0x20, 0xFC, 0x24, 0xF1, 0x0B, 0xC0, 0x1F, 0x00,
32780x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x35, 0x00, 0xDF,
32790x00, 0x5C, 0x03, 0xB0, 0x49, 0xC0, 0xA5, 0x00, 0xDB, 0x02, 0x4C, 0x00, 0xF0,
32800x21, 0xC0, 0x17, 0x02, 0xD7, 0x05, 0x6C, 0x02, 0xF1, 0x09, 0xC0, 0x37, 0x44,
32810x93, 0x02, 0x6C, 0x0B, 0xF0, 0x29, 0xC4, 0x2B, 0x20, 0x04, 0x00, 0x00, 0x00,
32820x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x34, 0x00, 0xDD, 0x4D, 0x40, 0x0F, 0x15,
32830x38, 0x40, 0x24, 0x10, 0x91, 0x00, 0x2C, 0x44, 0xD1, 0xB1, 0x44, 0x54, 0x10,
32840xD1, 0x01, 0x74, 0xB2, 0xD2, 0x01, 0x4A, 0xFF, 0x00, 0x90, 0x30, 0x34, 0x83,
32850xD1, 0x08, 0x40, 0x4C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32860x13, 0xA0, 0x32, 0x00, 0xDD, 0x00, 0x14, 0x26, 0x10, 0x9C, 0x48, 0x31, 0x00,
32870xCC, 0x08, 0x25, 0x02, 0xD0, 0x10, 0x40, 0x11, 0x00, 0x85, 0x02, 0x34, 0x00,
32880xD0, 0x08, 0x42, 0x36, 0x00, 0x85, 0x25, 0x24, 0x00, 0xD0, 0xB0, 0x41, 0x0D,
32890x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x08, 0x7A, 0x00,
32900xFD, 0x01, 0xC4, 0x1E, 0x18, 0x9F, 0x40, 0x7C, 0x10, 0xF5, 0x41, 0xB4, 0x07,
32910xD0, 0x12, 0x00, 0x58, 0x00, 0xA0, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x00, 0x73,
32920x04, 0xE5, 0x01, 0xB4, 0x04, 0xD1, 0x16, 0x00, 0x34, 0x20, 0x08, 0x00, 0x00,
32930x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xCF, 0x00, 0x1C, 0x02,
32940x30, 0x8C, 0xC0, 0xB1, 0x00, 0xCF, 0x00, 0x2C, 0x03, 0xF0, 0xE0, 0xC3, 0x11,
32950x00, 0x87, 0x00, 0x28, 0x01, 0xF0, 0x04, 0xC0, 0x32, 0x30, 0x47, 0x00, 0x2C,
32960x03, 0xF0, 0x00, 0xC0, 0x49, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
32970x00, 0x02, 0xA0, 0x3D, 0x00, 0xFF, 0x00, 0xBC, 0x12, 0x70, 0x8E, 0xC0, 0x3B,
32980x02, 0xFB, 0x88, 0xEC, 0x23, 0xF0, 0x82, 0xC0, 0x19, 0x00, 0xBB, 0x00, 0xFC,
32990x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x20, 0x7B, 0x40, 0xFC, 0x23, 0xF0, 0x8F, 0xC0,
33000x09, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x37,
33010x00, 0x9F, 0x00, 0x3C, 0x06, 0x70, 0x0D, 0xE0, 0x35, 0x00, 0xDF, 0x00, 0x44,
33020x01, 0xB2, 0x05, 0xC2, 0x13, 0x00, 0xCB, 0x00, 0x6C, 0x05, 0x72, 0x0D, 0xC2,
33030xB7, 0x03, 0xDD, 0x00, 0x6C, 0x00, 0xF0, 0x15, 0x80, 0x40, 0x00, 0x0E, 0x00,
33040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x98, 0x39, 0x10, 0xEC, 0x00, 0xB4,
33050x82, 0x10, 0x0E, 0x52, 0x38, 0x00, 0x6D, 0x00, 0x94, 0x03, 0x90, 0x06, 0x40,
33060x1B, 0x00, 0xE1, 0x00, 0xC5, 0x01, 0x10, 0x0E, 0x48, 0x3B, 0x05, 0xED, 0x00,
33070x84, 0x00, 0x90, 0x0E, 0x40, 0x4C, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
33080x00, 0x00, 0x04, 0x00, 0x79, 0x20, 0xAC, 0x91, 0xB4, 0x06, 0xD0, 0x1F, 0x48,
33090x79, 0x20, 0xFD, 0x01, 0xB4, 0x47, 0x90, 0x1E, 0x60, 0x5B, 0x00, 0xE9, 0x01,
33100xA4, 0x07, 0x50, 0x1E, 0x41, 0x7B, 0x00, 0xCD, 0x03, 0xB4, 0x07, 0xD8, 0x14,
33110x64, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x20,
33120x33, 0x00, 0xCD, 0x01, 0x34, 0x40, 0xD0, 0x5C, 0x40, 0x31, 0x00, 0xCD, 0x05,
33130x34, 0x03, 0x98, 0x24, 0x40, 0x93, 0x08, 0xC1, 0x08, 0x04, 0x03, 0x10, 0x2C,
33140x41, 0x33, 0x88, 0xDD, 0x00, 0x14, 0x1F, 0x90, 0x2C, 0x40, 0x58, 0x00, 0x0C,
33150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x17, 0x00, 0x5F, 0x01,
33160xFC, 0x09, 0xF0, 0x07, 0x40, 0x1D, 0x00, 0x7F, 0x01, 0xFC, 0x01, 0xB0, 0x77,
33170xC0, 0x5B, 0x00, 0x6B, 0x01, 0xEC, 0x29, 0x70, 0x07, 0xC0, 0x17, 0x00, 0x7F,
33180x08, 0xFC, 0x01, 0xF0, 0x47, 0x40, 0x5C, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00,
33190x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x00, 0x1F, 0xC2, 0x7C, 0x00, 0x00, 0xA1,
33200x80, 0x06, 0x01, 0x1C, 0x08, 0x58, 0x00, 0xC3, 0x01, 0x88, 0x07, 0x02, 0x1F,
33210x42, 0x7C, 0x20, 0xF0, 0x01, 0xC0, 0x87, 0x20, 0x1F, 0x40, 0x60, 0x20, 0xB0,
33220x01, 0xD0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
33230x08, 0x25, 0x00, 0x9F, 0x03, 0x7C, 0x12, 0xF9, 0x09, 0xC8, 0x25, 0x00, 0x9F,
33240x04, 0x1C, 0x56, 0x31, 0x89, 0xC3, 0x27, 0x04, 0x97, 0x05, 0x40, 0x06, 0xF0,
33250x09, 0xC0, 0x27, 0x01, 0x9F, 0x00, 0x4C, 0x82, 0xF3, 0x39, 0xC1, 0x43, 0x20,
33260x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D,
33270x03, 0x74, 0x0A, 0xD8, 0x48, 0x40, 0x24, 0x10, 0x8D, 0x00, 0x44, 0x06, 0x14,
33280x19, 0x44, 0xE7, 0x81, 0x9B, 0x12, 0x44, 0x0E, 0xD0, 0x09, 0x40, 0x67, 0x20,
33290x9D, 0x0E, 0x44, 0x02, 0x78, 0x39, 0x40, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00,
33300x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x0B, 0x98,
33310x09, 0x40, 0x25, 0x00, 0x9D, 0x02, 0x56, 0x02, 0x50, 0x09, 0x48, 0x67, 0x00,
33320x95, 0x00, 0x54, 0x1A, 0xD0, 0x0D, 0x60, 0x27, 0x00, 0xDD, 0x00, 0x44, 0x02,
33330x50, 0x29, 0x40, 0x73, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33340x14, 0x28, 0x20, 0x00, 0xCD, 0x00, 0x34, 0x02, 0xD0, 0x09, 0x40, 0x20, 0x00,
33350x8D, 0x80, 0x14, 0xD2, 0x50, 0x0C, 0x40, 0x23, 0x00, 0x81, 0x00, 0x10, 0x52,
33360xD0, 0x48, 0x61, 0x33, 0x0D, 0x8D, 0x14, 0x14, 0x02, 0x50, 0x48, 0x41, 0x53,
33370xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x30, 0x04, 0x00,
33380x1F, 0x00, 0x7C, 0x00, 0x90, 0x01, 0xC0, 0x05, 0x00, 0x1F, 0x80, 0x5C, 0x10,
33390x70, 0x01, 0xC0, 0x07, 0x20, 0x14, 0x14, 0x4D, 0x10, 0xF0, 0x41, 0xC0, 0x07,
33400x01, 0x1F, 0x04, 0x4D, 0x50, 0x70, 0x41, 0xE2, 0x77, 0xC0, 0x0A, 0x00, 0x00,
33410x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0, 0x27, 0x00, 0xBF, 0x94, 0xFC, 0x02,
33420xC0, 0x0E, 0x40, 0x3F, 0x00, 0xAF, 0x80, 0xEC, 0x02, 0xB0, 0x0B, 0xC0, 0x2F,
33430x00, 0xBF, 0x00, 0xEC, 0x52, 0xF0, 0x4B, 0x41, 0x27, 0x05, 0xBF, 0x14, 0xEC,
33440x02, 0x70, 0x0B, 0xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33450x00, 0x18, 0xA0, 0x27, 0x00, 0xBF, 0x08, 0xFC, 0x02, 0x79, 0x0A, 0xC0, 0x25,
33460x00, 0xBF, 0x00, 0xCC, 0x06, 0xB1, 0x0B, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0xDD,
33470x12, 0xF0, 0x99, 0xC0, 0x6D, 0x03, 0xB9, 0x0D, 0xF8, 0x02, 0x30, 0x0B, 0xC8,
33480x60, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x18, 0x07,
33490x00, 0x1D, 0x41, 0x74, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x1D, 0x00, 0x44,
33500x28, 0x10, 0x01, 0x40, 0x07, 0x00, 0x1D, 0x40, 0x44, 0x10, 0xD0, 0xB1, 0x40,
33510xC4, 0x03, 0x11, 0x0F, 0x74, 0x00, 0x10, 0x01, 0x50, 0x70, 0x60, 0x0C, 0x00,
33520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x23, 0x00, 0x8D, 0x04, 0x74,
33530x02, 0xD4, 0x08, 0x40, 0x21, 0x20, 0x9D, 0x00, 0x17, 0x02, 0x90, 0x08, 0x40,
33540x23, 0x00, 0x9D, 0x00, 0x36, 0x62, 0xD0, 0x48, 0x40, 0x23, 0x00, 0x89, 0x00,
33550x34, 0x02, 0x14, 0x08, 0x48, 0x49, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
33560x00, 0x00, 0x18, 0xA0, 0x25, 0x00, 0x9D, 0x80, 0x74, 0x42, 0x12, 0x09, 0x44,
33570x24, 0x00, 0x9D, 0x40, 0x52, 0x46, 0x00, 0x09, 0x41, 0x27, 0x00, 0x9D, 0x00,
33580x74, 0x8E, 0xD0, 0x09, 0x61, 0x24, 0x00, 0x91, 0x10, 0x74, 0x02, 0x10, 0x09,
33590x40, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8,
33600x26, 0x00, 0x9D, 0x00, 0x78, 0x0A, 0xF2, 0x08, 0xC0, 0x25, 0x80, 0x9F, 0x04,
33610x5C, 0x0A, 0xB2, 0x09, 0xC2, 0x27, 0x08, 0x9F, 0x19, 0x7C, 0x02, 0xF0, 0x39,
33620xC0, 0x25, 0x20, 0x9A, 0x03, 0x7E, 0x16, 0x20, 0x09, 0xE5, 0x15, 0x20, 0x0E,
33630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x25, 0x00, 0x9F, 0x00,
33640x7C, 0x12, 0xF0, 0x29, 0xC0, 0xA6, 0x00, 0x9F, 0x28, 0x2C, 0x02, 0xF0, 0x09,
33650xC0, 0x27, 0x00, 0x9F, 0x90, 0x4C, 0x02, 0xF0, 0x48, 0xC4, 0x27, 0x00, 0x9F,
33660x89, 0x7E, 0x22, 0xF2, 0x08, 0xE0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
33670x00, 0x00, 0x00, 0x10, 0x08, 0x05, 0x00, 0x1F, 0x04, 0x7C, 0x18, 0xB2, 0x41,
33680xC0, 0x04, 0x20, 0x1F, 0x06, 0x4C, 0x28, 0xF2, 0x61, 0xC0, 0x05, 0x02, 0x1F,
33690x02, 0x6C, 0x08, 0xB0, 0x21, 0xC2, 0x07, 0x00, 0x1F, 0x12, 0x1C, 0x08, 0x30,
33700x21, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
33710xA0, 0x14, 0x00, 0x7D, 0x11, 0xB0, 0x0D, 0x10, 0x17, 0x58, 0x14, 0x00, 0x6D,
33720x03, 0x45, 0x05, 0xD0, 0x17, 0x44, 0x9F, 0x02, 0x6D, 0x00, 0xC0, 0x01, 0x10,
33730x05, 0x40, 0x9F, 0x02, 0x7D, 0x80, 0x44, 0x01, 0x10, 0x27, 0x00, 0x50, 0x00,
33740x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD,
33750x00, 0x34, 0x8A, 0x90, 0xAC, 0x04, 0x30, 0x00, 0x45, 0x02, 0x12, 0x06, 0xD1,
33760x2C, 0x40, 0x91, 0x00, 0xCD, 0x22, 0x24, 0x17, 0x90, 0x0C, 0x40, 0x37, 0xA2,
33770xCD, 0x08, 0x16, 0xA7, 0x10, 0x4C, 0x50, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00,
33780x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x38, 0x00, 0x6D, 0x00, 0xF4, 0x0A, 0x10,
33790x0E, 0x40, 0x38, 0x00, 0x6D, 0x10, 0xB4, 0x03, 0xD0, 0x0E, 0x61, 0x1B, 0x80,
33800xFD, 0x30, 0xA0, 0x47, 0x90, 0x4E, 0x40, 0x3B, 0xA0, 0x6D, 0x01, 0x84, 0x03,
33810x50, 0x2C, 0x40, 0x04, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33820x11, 0x10, 0x78, 0x00, 0xEF, 0x01, 0xBC, 0x06, 0xB0, 0x1E, 0xC0, 0x78, 0x20,
33830x6F, 0x01, 0x9C, 0x07, 0xF0, 0x1E, 0xE0, 0x59, 0x00, 0xEF, 0x01, 0xE8, 0x07,
33840xB0, 0xBE, 0xC0, 0x7B, 0x20, 0xFF, 0x21, 0x1C, 0x07, 0x34, 0x1E, 0xC0, 0x44,
33850x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00,
33860xDF, 0x00, 0x3C, 0x02, 0xF0, 0x0D, 0xC0, 0x37, 0x10, 0x4F, 0x00, 0x4D, 0x83,
33870xF0, 0x0D, 0xE0, 0x17, 0x00, 0xCF, 0x00, 0x5C, 0x03, 0x70, 0x6D, 0xC4, 0x17,
33880x08, 0x5E, 0x40, 0x7C, 0x03, 0xB0, 0x09, 0xC0, 0x43, 0x20, 0x06, 0x00, 0x00,
33890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7D, 0x00, 0xFF, 0x01, 0xFC, 0x07,
33900x30, 0x17, 0xC0, 0x7D, 0x00, 0x7F, 0x01, 0xDC, 0x27, 0xF1, 0x9F, 0xC0, 0x5F,
33910x00, 0xEF, 0x01, 0xEC, 0x85, 0xB0, 0x9F, 0x00, 0x5F, 0x02, 0xF3, 0x4D, 0xC8,
33920x07, 0x20, 0x1F, 0xC0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
33930x00, 0x15, 0x18, 0x39, 0x00, 0x6D, 0x42, 0xB4, 0x12, 0x10, 0x0E, 0x40, 0x38,
33940x00, 0x29, 0x44, 0x80, 0x03, 0xD0, 0x0E, 0x40, 0x1B, 0x00, 0x6D, 0x02, 0x94,
33950x01, 0xD0, 0x0E, 0x43, 0x1A, 0x00, 0xE1, 0x18, 0x84, 0x53, 0x10, 0x07, 0x41,
33960x55, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39,
33970x00, 0xED, 0x00, 0xF4, 0x02, 0x18, 0x2E, 0x50, 0xB9, 0x00, 0x6D, 0xB2, 0x80,
33980x43, 0xD0, 0x0E, 0x42, 0x1B, 0x04, 0xED, 0x18, 0x95, 0x01, 0x90, 0x0E, 0x42,
33990x3A, 0x30, 0xE1, 0x44, 0xB5, 0x03, 0x1C, 0x0F, 0x40, 0x00, 0x00, 0x04, 0x00,
34000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x30, 0x00, 0x8D, 0x00, 0x34,
34010x0A, 0x18, 0x0C, 0x58, 0x31, 0x08, 0x49, 0x01, 0x04, 0x07, 0xD0, 0x08, 0x40,
34020xD3, 0x00, 0x4D, 0x03, 0x04, 0x9C, 0xD0, 0x1D, 0x48, 0x02, 0x80, 0x91, 0x01,
34030x34, 0x13, 0x10, 0x30, 0x00, 0x11, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
34040x00, 0x00, 0x15, 0xA8, 0x35, 0x00, 0x9F, 0x00, 0x74, 0x0B, 0x30, 0x2D, 0xC0,
34050x31, 0x00, 0xCF, 0x02, 0x4D, 0x23, 0xF2, 0x0D, 0xC0, 0xD7, 0x00, 0xCF, 0x09,
34060x5C, 0x1A, 0xB0, 0x3F, 0x40, 0x26, 0x20, 0x91, 0x02, 0x7C, 0x02, 0x30, 0x2D,
34070xC0, 0x54, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
34080x37, 0x00, 0x1F, 0x01, 0x7C, 0x43, 0xF0, 0x0D, 0x40, 0x36, 0x00, 0xDB, 0x02,
34090x7C, 0x03, 0xF0, 0x6D, 0xC4, 0x17, 0x01, 0xDF, 0x00, 0x74, 0x00, 0xD0, 0x0D,
34100xC1, 0x26, 0x00, 0x1F, 0x02, 0x4C, 0x02, 0xF1, 0x4D, 0xC0, 0x07, 0x00, 0x0C,
34110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x3F, 0x08, 0x3F, 0x00,
34120xFC, 0x02, 0xF0, 0x0F, 0xC0, 0x3D, 0x08, 0x77, 0x00, 0xCC, 0x03, 0xE0, 0x9F,
34130xD0, 0x1C, 0x00, 0xF9, 0x00, 0x8D, 0x02, 0xB0, 0x0F, 0xC0, 0x24, 0x00, 0x9F,
34140x10, 0x48, 0x82, 0xD0, 0x07, 0xC0, 0x13, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00,
34150x00, 0x00, 0x00, 0x85, 0x20, 0x36, 0x00, 0x1D, 0x03, 0x74, 0x86, 0xD2, 0x3C,
34160x41, 0x34, 0x00, 0x51, 0x21, 0x44, 0x03, 0xD0, 0x5C, 0x40, 0x54, 0x08, 0xDD,
34170x43, 0x44, 0x4E, 0x10, 0x0D, 0x40, 0x64, 0x00, 0x1D, 0x07, 0x6C, 0xA2, 0xD2,
34180x01, 0x40, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
34190xA0, 0x34, 0x00, 0x9D, 0x01, 0x74, 0x07, 0xD0, 0x1D, 0x40, 0x35, 0x00, 0x55,
34200x03, 0x45, 0x07, 0xD2, 0x0D, 0x42, 0x55, 0x04, 0x9D, 0x81, 0x54, 0x06, 0x90,
34210x0D, 0x50, 0xC4, 0x00, 0x1D, 0x01, 0x54, 0x03, 0xD0, 0x89, 0x41, 0x07, 0x08,
34220x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x30, 0x00, 0x0D,
34230x00, 0x34, 0x07, 0xD0, 0x09, 0x40, 0x34, 0x00, 0x51, 0x00, 0x04, 0x03, 0xD0,
34240x04, 0x40, 0x10, 0x00, 0x4D, 0x00, 0x04, 0x00, 0x18, 0x0C, 0x40, 0x00, 0x00,
34250x1D, 0x00, 0x36, 0x83, 0xD0, 0x00, 0x40, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00,
34260x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x36, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0,
34270x0D, 0xC0, 0x35, 0x00, 0x57, 0x00, 0x48, 0x03, 0xF0, 0x0D, 0x40, 0x34, 0x10,
34280x5B, 0x00, 0x48, 0x02, 0xB0, 0x0F, 0xC0, 0x24, 0x00, 0x9F, 0x00, 0x5C, 0x03,
34290xF0, 0x01, 0xC8, 0x03, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34300x05, 0xA0, 0x3F, 0x00, 0xBF, 0x00, 0xB4, 0x00, 0xF0, 0x0A, 0xC0, 0x3F, 0x20,
34310x6F, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xC0, 0x2F, 0x00, 0x7E, 0x00, 0xFC, 0x02,
34320xF0, 0x0F, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0xEC, 0x03, 0xF0, 0x03, 0xC0, 0x17,
34330x21, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x7F, 0x00,
34340xEF, 0x09, 0xCC, 0x27, 0xF2, 0x1F, 0xC0, 0x7C, 0x00, 0xFF, 0x01, 0xBC, 0x27,
34350xF0, 0x3F, 0xC0, 0x7F, 0x00, 0xEE, 0x09, 0xCC, 0x07, 0x31, 0x1E, 0xC0, 0x7C,
34360x00, 0xF3, 0x09, 0xFC, 0x07, 0x30, 0x1F, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00,
34370x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x47, 0x10, 0x1D, 0x44, 0x44, 0x10,
34380xD0, 0x11, 0x40, 0x44, 0x00, 0x1D, 0x01, 0x74, 0x00, 0xD2, 0x01, 0x48, 0x47,
34390x00, 0x1D, 0x44, 0x44, 0x04, 0x50, 0x11, 0x40, 0x44, 0x00, 0x11, 0x84, 0x74,
34400x04, 0x14, 0x11, 0x40, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34410x00, 0x11, 0xA0, 0x33, 0x00, 0xDD, 0x00, 0x14, 0x03, 0xD0, 0x0D, 0x40, 0x30,
34420x08, 0xCC, 0x80, 0x36, 0x13, 0xD0, 0x4C, 0x40, 0x33, 0x00, 0xCD, 0x00, 0x04,
34430x03, 0x11, 0x0C, 0x40, 0x30, 0x00, 0xC1, 0x80, 0x74, 0x03, 0x18, 0x0C, 0x40,
34440x44, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x05,
34450x00, 0x1D, 0x00, 0x54, 0x80, 0xD0, 0x01, 0x40, 0x04, 0x18, 0x1D, 0x00, 0x74,
34460x00, 0xD0, 0x01, 0x40, 0x07, 0x00, 0x0D, 0x00, 0x45, 0x00, 0x50, 0x01, 0x40,
34470x04, 0x00, 0x11, 0x60, 0x76, 0x00, 0x10, 0x01, 0x40, 0x0C, 0x20, 0x06, 0x00,
34480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x37, 0x00, 0xDF, 0x20, 0x5C,
34490x03, 0xF2, 0x0D, 0xD0, 0x34, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0,
34500x37, 0x00, 0xDF, 0x00, 0x4C, 0x83, 0x30, 0x0C, 0xC0, 0x30, 0x00, 0xD3, 0x00,
34510x3C, 0x83, 0x31, 0x0D, 0xC0, 0x00, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
34520x00, 0x00, 0x07, 0x80, 0x0D, 0x00, 0x3F, 0x00, 0xEC, 0x00, 0xF0, 0x03, 0xC0,
34530x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF2, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0xB0,
34540xFC, 0x00, 0xF2, 0x03, 0xD0, 0x0F, 0x00, 0x3F, 0x80, 0xFC, 0x00, 0xF0, 0x03,
34550xD1, 0x1F, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
34560x35, 0x00, 0xDF, 0x01, 0x4C, 0x03, 0x30, 0x0D, 0xC0, 0x34, 0x00, 0xD3, 0x80,
34570x4C, 0x23, 0x34, 0x8D, 0xC0, 0x74, 0x00, 0xDF, 0x00, 0x4C, 0x03, 0x30, 0x0D,
34580xC0, 0x34, 0x01, 0xD3, 0x00, 0x4C, 0x83, 0xF0, 0x0D, 0xC0, 0x0B, 0x20, 0x04,
34590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x04, 0x00, 0x0D, 0x00,
34600x40, 0x40, 0x10, 0x10, 0x50, 0x04, 0x00, 0x1A, 0x05, 0x44, 0x00, 0x10, 0x11,
34610xC0, 0x86, 0x00, 0x1D, 0x03, 0x04, 0x04, 0x10, 0x11, 0x40, 0x85, 0x08, 0x11,
34620x11, 0x6E, 0x2C, 0xD0, 0x30, 0x40, 0x4F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
34630x00, 0x00, 0x00, 0x07, 0xA8, 0x72, 0x02, 0xCD, 0x00, 0x06, 0x07, 0x00, 0x9C,
34640x40, 0x70, 0x80, 0xC1, 0x01, 0x20, 0x87, 0x10, 0x0C, 0x42, 0x30, 0x04, 0xCD,
34650x20, 0x04, 0x23, 0x1A, 0x1C, 0x40, 0x30, 0x00, 0xC1, 0x81, 0x24, 0x07, 0xD0,
34660x3C, 0x40, 0x1F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
34670x80, 0x48, 0x02, 0x3D, 0x01, 0x84, 0x04, 0x10, 0x92, 0x40, 0x48, 0x00, 0x39,
34680x01, 0xE4, 0x04, 0x10, 0x33, 0x40, 0x4A, 0x20, 0x2D, 0x91, 0x85, 0x14, 0x18,
34690x13, 0x41, 0x49, 0x00, 0x21, 0x01, 0xA4, 0x44, 0xD0, 0x12, 0x41, 0x1B, 0x00,
34700x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xCF,
34710x80, 0x44, 0x23, 0x34, 0x0C, 0xC0, 0x30, 0x26, 0xC3, 0x00, 0x2D, 0x23, 0x30,
34720x0C, 0x40, 0x30, 0x20, 0xCF, 0x44, 0x0E, 0x03, 0x34, 0x0C, 0xC0, 0x30, 0x40,
34730xD3, 0x08, 0x25, 0x03, 0xF0, 0x0C, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00,
34740x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x0D, 0x08, 0x3F, 0x80, 0xFD, 0x00, 0xF0,
34750x02, 0xC0, 0x0B, 0x80, 0x2F, 0x00, 0xDC, 0x20, 0xF0, 0x82, 0xE0, 0x0F, 0x02,
34760x3F, 0x00, 0xBC, 0x10, 0xF0, 0x03, 0xC0, 0x0B, 0x00, 0x3F, 0x00, 0x5E, 0x00,
34770xF0, 0x13, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34780x15, 0xA0, 0x33, 0x00, 0xD7, 0x00, 0x7C, 0x83, 0xF0, 0x1D, 0xC0, 0x34, 0x00,
34790xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x00, 0xD3, 0x00, 0x1C, 0x03,
34800x30, 0x0D, 0xC0, 0x33, 0x00, 0xD3, 0x00, 0x7E, 0x03, 0xF0, 0x1D, 0xC0, 0x54,
34810x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x09, 0x20,
34820x21, 0x20, 0xB4, 0x00, 0xD0, 0x02, 0x40, 0x08, 0x10, 0x2D, 0x40, 0xB4, 0x00,
34830xD0, 0x02, 0x40, 0x0B, 0x00, 0x21, 0x00, 0x84, 0x00, 0x52, 0x02, 0x40, 0x0B,
34840x00, 0x21, 0x00, 0xB6, 0x00, 0xD1, 0x02, 0x40, 0x48, 0x60, 0x06, 0x00, 0x00,
34850x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x79, 0x00, 0xE5, 0xC1, 0xB4, 0x07,
34860xD8, 0x1F, 0x40, 0x78, 0x00, 0xED, 0x01, 0xB4, 0x07, 0xD0, 0x1E, 0x4A, 0x7B,
34870x88, 0xE1, 0x01, 0x94, 0x07, 0x94, 0x1E, 0x40, 0x7F, 0x00, 0xE9, 0x01, 0xB4,
34880x87, 0xD2, 0x1E, 0x52, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34890x00, 0x12, 0x28, 0x03, 0x00, 0x01, 0x00, 0x34, 0x00, 0xD9, 0x00, 0x56, 0x00,
34900x08, 0x0D, 0x80, 0x76, 0x00, 0xD0, 0x00, 0x44, 0x03, 0x00, 0x01, 0x40, 0x04,
34910x00, 0xD0, 0x00, 0x48, 0x03, 0x08, 0x09, 0x00, 0x34, 0x00, 0xD0, 0x00, 0x40,
34920x48, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x11,
34930x00, 0x57, 0x00, 0x3C, 0x01, 0xF0, 0x05, 0xC0, 0x10, 0x00, 0x5F, 0x00, 0x7C,
34940x01, 0xF0, 0x04, 0xC0, 0x17, 0x40, 0x43, 0x00, 0x1C, 0x01, 0xB4, 0x05, 0xC0,
34950x17, 0x00, 0x5B, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC0, 0x5C, 0x20, 0x06, 0x00,
34960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0xFC,
34970x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xF4, 0x00, 0xF0, 0x03, 0xC4,
34980x8F, 0x00, 0x3F, 0x00, 0xFD, 0x08, 0x70, 0x23, 0xC0, 0x8F, 0x40, 0x37, 0x00,
34990xFC, 0x00, 0xF0, 0x03, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
35000x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x93, 0x09, 0x7C, 0x26, 0x30, 0x19, 0xC0,
35010x67, 0x00, 0x93, 0x08, 0x7C, 0x0A, 0x31, 0x19, 0xC8, 0x66, 0x02, 0x9F, 0x80,
35020x6C, 0x02, 0x34, 0x09, 0xC0, 0x67, 0x40, 0x92, 0x05, 0x7C, 0x02, 0xF0, 0x09,
35030xC0, 0x43, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20,
35040x26, 0x00, 0x91, 0x01, 0x74, 0x02, 0x51, 0x19, 0x40, 0x27, 0x00, 0x91, 0x01,
35050x74, 0x02, 0x10, 0x89, 0x40, 0x64, 0x01, 0x9D, 0x00, 0x44, 0x12, 0x10, 0x39,
35060x48, 0x23, 0x02, 0x91, 0x01, 0x74, 0x0E, 0xD0, 0x09, 0x40, 0x07, 0x00, 0x08,
35070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x01, 0xB1, 0x80,
35080xF4, 0x02, 0x10, 0x8B, 0x40, 0x2F, 0x01, 0xB1, 0x00, 0xF4, 0x02, 0x10, 0x0B,
35090x40, 0x2E, 0x20, 0xBD, 0x00, 0xC4, 0x02, 0x10, 0x8B, 0x40, 0x2F, 0x80, 0xB5,
35100x00, 0xF4, 0x52, 0xD0, 0x0B, 0x40, 0x63, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
35110x00, 0x00, 0x00, 0x10, 0x20, 0x2C, 0x00, 0xA1, 0x02, 0xF4, 0x0A, 0x50, 0x0A,
35120x40, 0x2F, 0x00, 0xA1, 0x00, 0xB4, 0x0A, 0x04, 0x1A, 0x40, 0x2A, 0x00, 0xBD,
35130x00, 0x85, 0x02, 0x18, 0x0E, 0x40, 0x2B, 0x00, 0xA5, 0x02, 0xB4, 0x02, 0xD0,
35140x0A, 0x40, 0x43, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D,
35150xB0, 0x06, 0x00, 0x13, 0x00, 0x7C, 0x00, 0x30, 0x01, 0xC8, 0x07, 0x40, 0x13,
35160x00, 0x7C, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x00, 0x0F, 0x40, 0x4C, 0x00, 0x32,
35170x01, 0xC2, 0x17, 0x40, 0x17, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xC0, 0x77, 0xC0,
35180x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x27, 0x40, 0x9F,
35190x01, 0x7C, 0x86, 0xF0, 0x08, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x06, 0xF2,
35200x49, 0x41, 0x25, 0x20, 0x9F, 0x14, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00,
35210x9B, 0x01, 0x7C, 0x02, 0xF0, 0x08, 0xC0, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00,
35220x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F, 0x00, 0xBF, 0x00, 0xCC, 0x02, 0xF0,
35230x0B, 0xC0, 0x2F, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0x30, 0x0A, 0xC0, 0x2B, 0x20,
35240xAF, 0x42, 0x8D, 0x02, 0x30, 0x0B, 0xC0, 0x28, 0x00, 0xB3, 0x02, 0xCC, 0x02,
35250xF0, 0x0A, 0xC0, 0x64, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35260x1C, 0x08, 0x07, 0x00, 0x1D, 0x15, 0x44, 0x54, 0xD0, 0x01, 0x48, 0x07, 0x00,
35270x1D, 0x00, 0x74, 0x14, 0x10, 0x51, 0x41, 0x07, 0x00, 0x1D, 0x81, 0x44, 0x00,
35280x50, 0x01, 0x48, 0x04, 0x10, 0x15, 0x01, 0x44, 0x00, 0xD0, 0x01, 0x40, 0x71,
35290x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00,
35300x8D, 0x00, 0x04, 0x02, 0xD0, 0x08, 0x48, 0x23, 0x00, 0x8D, 0x00, 0x34, 0x42,
35310x10, 0x08, 0x40, 0x23, 0xA0, 0x8D, 0x00, 0x44, 0x03, 0x10, 0x08, 0x52, 0x20,
35320x00, 0xD1, 0x04, 0x04, 0x02, 0xD0, 0x09, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00,
35330x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x25, 0x00, 0x9D, 0x00, 0x44, 0x02,
35340xD0, 0x09, 0x40, 0x27, 0x10, 0x9D, 0x00, 0x74, 0x02, 0x14, 0x09, 0x44, 0x27,
35350x00, 0x8D, 0x00, 0x44, 0x82, 0x50, 0x09, 0x46, 0x24, 0x00, 0x95, 0x00, 0x44,
35360x02, 0xD0, 0x09, 0x40, 0x61, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35370x00, 0x05, 0x28, 0x25, 0x00, 0xBF, 0x00, 0xCD, 0x82, 0xF0, 0x09, 0xC0, 0x27,
35380x00, 0x9F, 0x00, 0xFC, 0x02, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x4C,
35390x02, 0x30, 0x09, 0xC0, 0x20, 0x08, 0xA3, 0x00, 0x4D, 0x02, 0xF0, 0x09, 0xC0,
35400x14, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x25,
35410x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x00, 0x7C,
35420x02, 0xF0, 0x09, 0xC2, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x82, 0xF0, 0x09, 0xC0,
35430x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x53, 0x00, 0x04, 0x00,
35440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x02, 0x1F, 0x00, 0x4C,
35450x00, 0xF0, 0x01, 0xC0, 0x07, 0x02, 0x1F, 0x00, 0x7C, 0x00, 0x70, 0x01, 0xD0,
35460x04, 0x40, 0x13, 0x00, 0x4C, 0x10, 0x30, 0x01, 0xC0, 0x07, 0x40, 0x13, 0x00,
35470x7C, 0x04, 0x30, 0x01, 0xC1, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
35480x00, 0x00, 0x14, 0x20, 0x14, 0x00, 0x5D, 0x20, 0x44, 0x01, 0xD1, 0x05, 0x40,
35490x17, 0x10, 0x5D, 0x01, 0x70, 0x01, 0xD0, 0x07, 0x40, 0xDC, 0x00, 0x71, 0x81,
35500x94, 0x01, 0x50, 0x16, 0x41, 0x1F, 0x00, 0x51, 0x00, 0xF4, 0x05, 0x11, 0x26,
35510x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0,
35520x62, 0x00, 0xDD, 0x08, 0x04, 0x07, 0xD0, 0x88, 0x48, 0x33, 0x00, 0x8D, 0x80,
35530x74, 0x03, 0x50, 0x04, 0x40, 0xA0, 0x06, 0xC9, 0x11, 0x06, 0x01, 0x10, 0x4C,
35540x48, 0x33, 0x0C, 0xC1, 0x80, 0x34, 0x05, 0x90, 0x18, 0x44, 0x50, 0x00, 0x0A,
35550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x38, 0x00, 0xED, 0x08,
35560x84, 0x53, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xED, 0x10, 0xB4, 0x43, 0xD0, 0x1F,
35570x40, 0x5C, 0x20, 0xF9, 0x50, 0xD4, 0x80, 0x50, 0x0A, 0x40, 0x1F, 0x20, 0xE1,
35580x08, 0xF4, 0x47, 0x91, 0x2B, 0x40, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
35590x00, 0x00, 0x00, 0x14, 0x10, 0x78, 0x00, 0xFF, 0x05, 0x8C, 0x07, 0xF0, 0x1E,
35600xC0, 0x7B, 0x00, 0xEF, 0x01, 0xBC, 0x87, 0x70, 0x1E, 0xC0, 0x48, 0x00, 0xEB,
35610x01, 0x8C, 0x07, 0x30, 0x12, 0xC0, 0x7B, 0x00, 0xA3, 0x81, 0xBC, 0x07, 0xB4,
35620x1A, 0xC0, 0x50, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
35630xB8, 0x35, 0x10, 0xDF, 0x00, 0x7C, 0x23, 0xF1, 0x0D, 0xC0, 0x37, 0x00, 0xDF,
35640x00, 0x7C, 0x03, 0xF0, 0x0F, 0xC0, 0x06, 0x00, 0xD7, 0x00, 0x78, 0x02, 0xF0,
35650x01, 0xC0, 0x37, 0x00, 0x9D, 0x00, 0x3C, 0x03, 0x70, 0x09, 0xC0, 0x43, 0x60,
35660x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x7F, 0x00, 0xBF,
35670x00, 0xFC, 0x06, 0x30, 0x9F, 0xC0, 0x7F, 0x00, 0xE3, 0x01, 0x8C, 0x47, 0x30,
35680x17, 0xC0, 0x4F, 0x00, 0x3F, 0x01, 0x9C, 0x04, 0x70, 0x16, 0xC4, 0x5C, 0x00,
35690xEF, 0x01, 0xCC, 0x07, 0xF0, 0x1B, 0xC2, 0x0B, 0x00, 0x0E, 0x00, 0x00, 0x00,
35700x00, 0x00, 0x00, 0x00, 0x15, 0x98, 0x39, 0x04, 0xAD, 0x0C, 0xB4, 0x02, 0x11,
35710x8E, 0x40, 0x3B, 0x10, 0xE1, 0x00, 0x84, 0x23, 0x10, 0x0E, 0x40, 0x0B, 0x10,
35720x6D, 0x0A, 0x85, 0x60, 0x55, 0x86, 0xC0, 0x9A, 0x10, 0xED, 0x00, 0x84, 0x03,
35730xD0, 0x0A, 0x44, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35740x00, 0x00, 0x39, 0x00, 0xAD, 0x08, 0xF4, 0x02, 0x10, 0x8E, 0x40, 0x3F, 0x04,
35750xE1, 0x10, 0xE4, 0x03, 0x10, 0x0E, 0x41, 0x0B, 0x00, 0x2D, 0x10, 0x94, 0x00,
35760xD0, 0x07, 0x41, 0x3A, 0x00, 0xBD, 0x0A, 0xA4, 0x03, 0xD0, 0x0A, 0x41, 0x23,
35770x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x20, 0x33, 0x00,
35780x8D, 0x03, 0x74, 0x0A, 0x10, 0x5C, 0x40, 0xE3, 0x00, 0xC1, 0x41, 0x24, 0x0E,
35790x10, 0x1D, 0x40, 0x83, 0x02, 0x5D, 0x03, 0x04, 0x04, 0xD0, 0x14, 0x40, 0x72,
35800x10, 0x9D, 0x01, 0x24, 0x0B, 0xD1, 0x18, 0x40, 0x1B, 0x20, 0x0C, 0x00, 0x00,
35810x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x00, 0xDF, 0x89, 0x7C, 0x03,
35820x30, 0x2D, 0xC0, 0x77, 0x40, 0xD3, 0x01, 0x6C, 0x46, 0x34, 0x19, 0xC0, 0x83,
35830x00, 0x5F, 0x41, 0x1C, 0x08, 0xF0, 0xB1, 0xC0, 0x76, 0x04, 0xDF, 0x11, 0x2C,
35840x02, 0xF0, 0x1D, 0xC2, 0x77, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35850x00, 0x01, 0x00, 0x37, 0x00, 0xDF, 0x08, 0x78, 0x17, 0xF0, 0x8D, 0xC0, 0x37,
35860x00, 0xDF, 0x10, 0x5C, 0x02, 0xF0, 0x0D, 0xC1, 0x07, 0x04, 0xDF, 0x00, 0x7C,
35870x48, 0x60, 0x01, 0xC4, 0x37, 0x00, 0xDF, 0x00, 0x5C, 0x0F, 0xF0, 0x2D, 0xC1,
35880x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F,
35890x06, 0xF3, 0x04, 0xFC, 0x0B, 0x30, 0x9F, 0xC8, 0x3F, 0x04, 0xFF, 0x80, 0xCC,
35900x56, 0xF0, 0x0F, 0xD0, 0x0C, 0x00, 0x73, 0x10, 0xCC, 0x00, 0xB0, 0x03, 0xC0,
35910x2F, 0x04, 0xB2, 0x03, 0xC8, 0x43, 0x30, 0x0F, 0xC0, 0x07, 0x24, 0x0C, 0x00,
35920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x72, 0x40, 0x91, 0x01, 0x74,
35930x06, 0x10, 0x1D, 0x44, 0x37, 0x08, 0xCD, 0x40, 0x44, 0x06, 0xD0, 0x3D, 0x40,
35940x44, 0x30, 0xDF, 0xC0, 0x45, 0x04, 0x10, 0x71, 0x44, 0x63, 0x10, 0xD1, 0x01,
35950x44, 0x17, 0xB0, 0x0D, 0x40, 0x27, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
35960x00, 0x00, 0x01, 0xA0, 0x36, 0x00, 0x91, 0x80, 0x74, 0x02, 0x10, 0x0D, 0x40,
35970x37, 0x00, 0xDD, 0x04, 0x44, 0x02, 0xD0, 0x19, 0x41, 0x46, 0x00, 0x11, 0x00,
35980x44, 0x0C, 0x9A, 0x15, 0x42, 0x77, 0x00, 0xD5, 0x00, 0x77, 0x07, 0x00, 0x49,
35990x41, 0x07, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
36000x34, 0x00, 0x81, 0x00, 0x34, 0x02, 0x14, 0x0C, 0x40, 0x33, 0x00, 0xDD, 0x00,
36010x06, 0x03, 0xD0, 0x0C, 0x40, 0x44, 0x28, 0x45, 0x00, 0x04, 0x00, 0x10, 0x04,
36020x40, 0x33, 0x60, 0x85, 0x00, 0x34, 0x03, 0x90, 0x04, 0x40, 0x43, 0x00, 0x00,
36030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x36, 0x00, 0xD3, 0x00,
36040x7C, 0x03, 0x10, 0x0D, 0xC0, 0x37, 0x20, 0xDF, 0x00, 0x4D, 0x02, 0xF0, 0x0D,
36050xC0, 0x04, 0x00, 0x01, 0x80, 0x4C, 0x00, 0xB4, 0x05, 0xC0, 0x27, 0x00, 0x97,
36060x00, 0x7C, 0x03, 0x30, 0x09, 0xC0, 0x07, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00,
36070x00, 0x00, 0x00, 0x05, 0xB8, 0x3F, 0x00, 0xBF, 0x00, 0xBC, 0x02, 0xF1, 0x0F,
36080xC0, 0x2B, 0x10, 0xFF, 0x00, 0xFC, 0x02, 0xF0, 0x0F, 0x80, 0x0F, 0x20, 0x7F,
36090x00, 0xFD, 0x00, 0xF0, 0x07, 0xC0, 0x2F, 0x00, 0xBB, 0x40, 0xCC, 0x83, 0xF0,
36100x07, 0xC4, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
36110xA0, 0x7F, 0x00, 0xEF, 0x01, 0x8C, 0x07, 0x70, 0x1B, 0xD0, 0x28, 0x01, 0xA7,
36120x01, 0xFC, 0x32, 0x30, 0x1A, 0xC0, 0x3C, 0x00, 0xB3, 0x14, 0xEC, 0x12, 0x30,
36130x8B, 0xC0, 0x3D, 0x0C, 0xBF, 0x08, 0xCC, 0x02, 0xF1, 0x0F, 0xC0, 0x0F, 0x00,
36140x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x77, 0x00, 0x9D,
36150x01, 0x44, 0x06, 0x10, 0x11, 0x42, 0x64, 0x00, 0x51, 0x01, 0x44, 0x0A, 0x10,
36160x19, 0x40, 0xFC, 0x12, 0x91, 0x02, 0x44, 0x3A, 0x10, 0x49, 0x40, 0xBC, 0x00,
36170x9D, 0x00, 0x44, 0x2A, 0xD0, 0x0D, 0x44, 0x0F, 0x60, 0x0C, 0x00, 0x00, 0x00,
36180x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x31, 0x00, 0xDD, 0x00, 0x44, 0x85, 0x50,
36190x04, 0x48, 0x00, 0x82, 0xD5, 0x00, 0x14, 0x18, 0x50, 0x09, 0x40, 0x32, 0x00,
36200x85, 0x00, 0x34, 0x40, 0x50, 0x88, 0x42, 0x31, 0x24, 0x09, 0x06, 0x04, 0x00,
36210xD0, 0x0C, 0x40, 0x4F, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36220x03, 0xA0, 0x37, 0x00, 0xDD, 0x11, 0x45, 0x05, 0x10, 0x11, 0x44, 0x44, 0x00,
36230xD1, 0x03, 0x04, 0x8C, 0x11, 0x89, 0x40, 0x36, 0x80, 0x94, 0x41, 0x14, 0x04,
36240x50, 0x19, 0x40, 0x34, 0x00, 0x0D, 0x11, 0x44, 0x0C, 0xD0, 0x0D, 0x20, 0x0F,
36250x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x37, 0x00,
36260xCF, 0x01, 0x0C, 0x04, 0x70, 0x10, 0x40, 0x44, 0x20, 0xC7, 0x03, 0x5C, 0x0E,
36270x70, 0x40, 0xD0, 0x32, 0x08, 0x17, 0xA3, 0x7C, 0x96, 0x71, 0x11, 0xC0, 0x35,
36280x10, 0x1F, 0x03, 0x4E, 0x0E, 0xF8, 0x0D, 0xC0, 0x0B, 0x20, 0x0E, 0x00, 0x00,
36290x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x3D, 0x00, 0xFF, 0x80, 0xFC, 0x00,
36300xF0, 0x03, 0xC0, 0x2B, 0x00, 0x7F, 0x00, 0x7C, 0x02, 0xF2, 0x0B, 0xC0, 0x3D,
36310x60, 0x9B, 0x00, 0xEC, 0x02, 0xB0, 0x00, 0xC0, 0x3F, 0x00, 0xBF, 0xA0, 0xFF,
36320x02, 0xF0, 0x0D, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36330x00, 0x2A, 0x08, 0x35, 0x00, 0xDF, 0x03, 0x4C, 0x01, 0x30, 0x05, 0xC0, 0x07,
36340x24, 0xD3, 0x04, 0x5C, 0x02, 0x30, 0x21, 0xC0, 0x36, 0x01, 0x17, 0x00, 0x5C,
36350x82, 0xF0, 0x29, 0xC0, 0x76, 0x04, 0x13, 0x02, 0x7C, 0x06, 0x30, 0x0D, 0xC2,
36360xA9, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x34,
36370x08, 0xDC, 0x01, 0x46, 0x05, 0x10, 0x41, 0x48, 0x27, 0x00, 0x51, 0x81, 0x44,
36380x02, 0x10, 0x19, 0xC4, 0xBE, 0x00, 0x9B, 0x00, 0x44, 0x02, 0xD1, 0x09, 0x48,
36390xBC, 0x00, 0x11, 0x80, 0x74, 0x22, 0x10, 0x0F, 0x40, 0x4C, 0x00, 0x02, 0x00,
36400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x32, 0x08, 0xCD, 0x00, 0x06,
36410x33, 0x10, 0x04, 0x40, 0x23, 0x02, 0x49, 0x02, 0x14, 0x00, 0x10, 0x2C, 0x51,
36420x33, 0x00, 0x14, 0x00, 0x10, 0x00, 0xD0, 0x00, 0x40, 0xB2, 0x00, 0x81, 0x80,
36430x34, 0x00, 0x11, 0x0C, 0x48, 0x0F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
36440x00, 0x00, 0x0D, 0x08, 0x7A, 0x00, 0xFD, 0x01, 0x84, 0x07, 0x11, 0x12, 0x40,
36450x7B, 0x10, 0x79, 0x11, 0x94, 0x07, 0x10, 0x1F, 0x41, 0x7B, 0x00, 0x6C, 0x01,
36460x94, 0x07, 0xD8, 0x1E, 0x40, 0x70, 0x42, 0xE1, 0x01, 0xB4, 0x07, 0x5C, 0x1E,
36470x40, 0x37, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10,
36480x32, 0x00, 0xCF, 0x00, 0x04, 0x21, 0x12, 0x84, 0xC0, 0x33, 0x01, 0xCB, 0x00,
36490x1C, 0x21, 0x30, 0x4C, 0xC0, 0x33, 0x00, 0xC7, 0xE8, 0x1C, 0x81, 0xF0, 0x24,
36500xC0, 0x32, 0x02, 0xC3, 0x00, 0x7C, 0x11, 0x30, 0x0C, 0xC0, 0x4B, 0x40, 0x08,
36510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA8, 0x3D, 0x00, 0xFF, 0x00,
36520xFC, 0x81, 0xF0, 0x83, 0xC0, 0x3F, 0x00, 0xF7, 0x00, 0xEC, 0x03, 0xF0, 0x0F,
36530xCC, 0x3A, 0x00, 0xFB, 0x00, 0xEC, 0x03, 0xF0, 0x0F, 0xC0, 0xBF, 0x02, 0xFF,
36540x48, 0xFC, 0x01, 0xB0, 0x0F, 0xC0, 0x08, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00,
36550x00, 0x00, 0x00, 0x10, 0xA2, 0x37, 0x20, 0xDF, 0x00, 0x4C, 0x03, 0xF0, 0x05,
36560xC2, 0x13, 0x00, 0x57, 0x00, 0x7C, 0x01, 0xF0, 0x1D, 0xC0, 0x36, 0x00, 0x5F,
36570x40, 0x7C, 0x01, 0x70, 0x15, 0xC0, 0x34, 0x01, 0x53, 0x01, 0x4D, 0x01, 0x10,
36580x0D, 0xC4, 0x43, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13,
36590x98, 0x39, 0x08, 0xED, 0x00, 0x84, 0x01, 0xD0, 0x02, 0x40, 0x3B, 0x00, 0x61,
36600x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x3A, 0x04, 0xED, 0x00, 0xB4, 0x03, 0xD0,
36610x07, 0x50, 0xBC, 0x00, 0xF1, 0x00, 0xC4, 0x03, 0x10, 0x4E, 0x40, 0x4F, 0x60,
36620x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x79, 0x00, 0xFD,
36630x11, 0xA6, 0x05, 0xD0, 0x16, 0x40, 0x5B, 0x04, 0x65, 0x01, 0xB4, 0x05, 0xD0,
36640x0A, 0x50, 0x7A, 0x93, 0x6D, 0x01, 0xB4, 0x05, 0x50, 0x1E, 0x40, 0x78, 0x41,
36650xE5, 0x03, 0x84, 0x07, 0x10, 0x9E, 0x40, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00,
36660x00, 0x00, 0x00, 0x00, 0x16, 0x20, 0x33, 0x00, 0x4D, 0x12, 0x06, 0xBD, 0xD0,
36670x20, 0x40, 0x33, 0x00, 0x41, 0x01, 0x74, 0x47, 0xD0, 0xEC, 0x40, 0x32, 0x80,
36680xCD, 0x0A, 0x34, 0x2B, 0xD0, 0x0C, 0x40, 0x34, 0x00, 0xC5, 0x00, 0x04, 0x8B,
36690x10, 0x0C, 0x40, 0x5B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36700x17, 0xA8, 0x17, 0x00, 0x6F, 0x02, 0xEC, 0x09, 0xF2, 0x07, 0xC0, 0x1B, 0x0A,
36710x77, 0x07, 0xFC, 0x15, 0xF0, 0x06, 0xC0, 0x16, 0x00, 0x7F, 0x21, 0xF4, 0x2D,
36720x78, 0x87, 0xC1, 0x14, 0x00, 0x77, 0x00, 0xCC, 0x39, 0x30, 0x05, 0xC0, 0x5F,
36730x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0x05, 0x00,
36740x1F, 0x82, 0x7D, 0x00, 0xF3, 0x01, 0x01, 0x07, 0x00, 0x1F, 0x10, 0x7C, 0x00,
36750xC0, 0x21, 0xC0, 0x05, 0x20, 0x1F, 0x10, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07,
36760x00, 0x19, 0x04, 0x7C, 0x08, 0xF4, 0x01, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00,
36770x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x25, 0x00, 0x9F, 0x04, 0x5C, 0x0E,
36780xF0, 0x49, 0xC4, 0x24, 0x08, 0x9B, 0x00, 0x4D, 0x02, 0x30, 0x99, 0x02, 0x67,
36790x01, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x10, 0x97, 0x80, 0x3C,
36800x0E, 0x70, 0x49, 0xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36810x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x00, 0x44, 0x1A, 0xD0, 0x78, 0x44, 0x24,
36820x10, 0x81, 0x00, 0x44, 0x02, 0x10, 0x29, 0x44, 0xA4, 0x08, 0x9D, 0x00, 0x74,
36830x82, 0xD1, 0x09, 0x40, 0x67, 0x00, 0x91, 0x80, 0x74, 0x06, 0x10, 0x09, 0x40,
36840x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xA0, 0x24,
36850x00, 0x9D, 0x00, 0x54, 0x02, 0xD0, 0x0D, 0x44, 0x34, 0x20, 0x99, 0x08, 0x44,
36860x02, 0x10, 0x09, 0x60, 0x27, 0x04, 0xDD, 0x00, 0x74, 0x02, 0xD0, 0x09, 0x40,
36870x27, 0x01, 0x95, 0x00, 0x74, 0x42, 0x50, 0x09, 0x40, 0x73, 0x00, 0x02, 0x00,
36880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x28, 0x20, 0x00, 0xCD, 0x00, 0x04,
36890x02, 0xD0, 0x09, 0x48, 0x20, 0x05, 0x81, 0x00, 0x04, 0x52, 0x10, 0x0C, 0x40,
36900x21, 0x15, 0x8D, 0x14, 0x34, 0x52, 0xD0, 0x48, 0x41, 0x33, 0x05, 0x81, 0x14,
36910x34, 0x52, 0x10, 0x48, 0x40, 0x53, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
36920x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x00, 0x5C, 0x00, 0xF0, 0x01, 0xC0,
36930x04, 0x01, 0x1B, 0x00, 0x4C, 0x10, 0x34, 0x01, 0xC0, 0x07, 0x21, 0x1F, 0x06,
36940x7C, 0x10, 0xF0, 0x41, 0xC8, 0x07, 0x01, 0x17, 0x04, 0x7C, 0x10, 0x70, 0x01,
36950xC4, 0x77, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xA0,
36960x27, 0x00, 0xAF, 0x00, 0xFC, 0x02, 0xF2, 0x0B, 0xD0, 0x2F, 0x00, 0xBF, 0x00,
36970xFC, 0x52, 0xF0, 0x0A, 0xC0, 0x26, 0x00, 0xBF, 0x10, 0xFC, 0x52, 0xF0, 0x4B,
36980xC1, 0x27, 0x05, 0xBF, 0x14, 0xFC, 0x52, 0xF0, 0x69, 0xC3, 0x67, 0x20, 0x0E,
36990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x80, 0x25, 0x00, 0xBF, 0x00,
37000xCC, 0x02, 0xF0, 0x0B, 0xC0, 0x6F, 0x60, 0xB3, 0x00, 0x7C, 0x26, 0xF0, 0x0A,
37010xC0, 0x2D, 0x00, 0x93, 0x02, 0x7C, 0x52, 0x30, 0x39, 0xC1, 0xAF, 0x00, 0x9F,
37020x09, 0xCC, 0x06, 0xF0, 0x5B, 0xE0, 0x63, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
37030x00, 0x00, 0x00, 0x1C, 0x18, 0x07, 0x00, 0x5D, 0x00, 0x44, 0x00, 0xD0, 0x01,
37040x40, 0x07, 0x00, 0x11, 0x00, 0x74, 0x2C, 0xD0, 0x01, 0x40, 0x04, 0x00, 0x11,
37050x01, 0x74, 0x18, 0x10, 0x21, 0x40, 0x47, 0x09, 0x1D, 0x0B, 0x44, 0x00, 0xD0,
37060x01, 0x40, 0x73, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
37070x20, 0x21, 0x00, 0x8D, 0x00, 0x04, 0x02, 0xD0, 0x08, 0x40, 0xA3, 0x00, 0x85,
37080x01, 0x34, 0x12, 0xD0, 0x09, 0x40, 0xA3, 0x80, 0x81, 0x26, 0x34, 0x42, 0x14,
37090x08, 0x40, 0xA3, 0x00, 0x8D, 0x04, 0x04, 0x0A, 0xD0, 0x68, 0x41, 0x4B, 0x00,
37100x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x20, 0x25, 0x00, 0x9D,
37110x00, 0x46, 0x06, 0xD3, 0x19, 0x40, 0x27, 0x04, 0x95, 0x04, 0x76, 0x12, 0xD2,
37120x49, 0x40, 0x24, 0xC0, 0x91, 0x02, 0x74, 0x82, 0x00, 0x09, 0x41, 0x27, 0x00,
37130x9D, 0x02, 0x44, 0x02, 0xD2, 0x09, 0x48, 0x63, 0x00, 0x04, 0x00, 0x00, 0x00,
37140x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27, 0x00, 0x8F, 0x02, 0x44, 0x16, 0xF2,
37150x39, 0xC1, 0xA7, 0x00, 0x97, 0x02, 0x7C, 0x16, 0xF2, 0x09, 0xC0, 0x25, 0x00,
37160x93, 0xC2, 0x7C, 0x12, 0x30, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x09, 0x4D, 0x6E,
37170xD8, 0x09, 0x48, 0x17, 0x28, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37180x12, 0x80, 0x25, 0x00, 0x9F, 0x02, 0x7D, 0x02, 0xF0, 0x09, 0xC0, 0x63, 0x02,
37190x9B, 0xA0, 0x7C, 0x02, 0xF1, 0x19, 0xC0, 0x27, 0x20, 0x9F, 0x05, 0x7C, 0x16,
37200xF0, 0x59, 0xC0, 0x27, 0x00, 0x8F, 0x01, 0x7C, 0x46, 0xF0, 0x09, 0xC0, 0x4B,
37210x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x05, 0x00,
37220x1F, 0x04, 0x6C, 0x08, 0xF0, 0x01, 0xC0, 0x87, 0x00, 0x1F, 0x00, 0x7C, 0x08,
37230xF0, 0x01, 0xD0, 0x00, 0x00, 0x17, 0x00, 0x7C, 0x08, 0xF0, 0x21, 0xC2, 0x04,
37240x04, 0x1F, 0x02, 0x4C, 0x08, 0x30, 0x01, 0xC0, 0x40, 0x20, 0x04, 0x00, 0x00,
37250x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x14, 0x00, 0x7D, 0x02, 0xC4, 0x45,
37260xC2, 0x07, 0x00, 0x1F, 0x20, 0x7D, 0x21, 0x7C, 0x01, 0xD0, 0x16, 0x58, 0x1C,
37270x00, 0x5D, 0x00, 0x74, 0x01, 0xD1, 0x05, 0xC0, 0x1E, 0x04, 0x5D, 0x00, 0xC4,
37280x89, 0x10, 0x05, 0x50, 0x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37290x00, 0x14, 0xA0, 0x32, 0x00, 0x8D, 0x8B, 0x24, 0x06, 0xC8, 0xCC, 0x00, 0x53,
37300x04, 0x0C, 0x05, 0x34, 0x03, 0xD1, 0xD4, 0x40, 0x40, 0x00, 0xC5, 0x00, 0x74,
37310x03, 0xD0, 0x0C, 0x60, 0x72, 0x00, 0xCD, 0x00, 0x04, 0x0B, 0x15, 0x8C, 0x40,
37320x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x38,
37330x00, 0xAD, 0x00, 0x84, 0x02, 0xD0, 0x0A, 0x40, 0xBB, 0x80, 0x2D, 0x82, 0x94,
37340x03, 0xD0, 0x07, 0x40, 0x88, 0x00, 0xED, 0x24, 0xB4, 0x23, 0xD0, 0x1F, 0x40,
37350x3A, 0x00, 0xFD, 0x80, 0x04, 0x07, 0x12, 0x1E, 0x40, 0x04, 0x20, 0x02, 0x00,
37360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x10, 0x79, 0x00, 0xAF, 0x01, 0xAC,
37370x06, 0xF0, 0x1A, 0xC8, 0x5B, 0x00, 0x2F, 0x01, 0xB0, 0x07, 0xF0, 0x12, 0xCA,
37380x78, 0x00, 0xE7, 0xA3, 0xBC, 0x87, 0xF0, 0x7F, 0xC4, 0x5A, 0x00, 0xFF, 0x0F,
37390x89, 0x07, 0x32, 0x1F, 0xC0, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37400x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0x8F, 0x00, 0x5C, 0x00, 0xF0, 0x09, 0xC0,
37410x37, 0x00, 0x1F, 0x80, 0x7C, 0x03, 0xF0, 0x05, 0xC0, 0x17, 0x10, 0xDF, 0x00,
37420x7C, 0x0B, 0xF0, 0x2D, 0xC4, 0x37, 0x00, 0xDF, 0xA4, 0x7C, 0x02, 0xF0, 0x0D,
37430xC0, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
37440x7D, 0x00, 0xBF, 0x01, 0xCC, 0x26, 0xF0, 0x9B, 0xC0, 0x6F, 0x02, 0x33, 0x09,
37450xDC, 0xEF, 0x73, 0x17, 0xC8, 0x5C, 0x22, 0xFD, 0x09, 0xFC, 0x0F, 0xF1, 0x3F,
37460xC0, 0x7F, 0x02, 0xF7, 0x81, 0xDC, 0x05, 0x10, 0x9B, 0xC0, 0x00, 0x00, 0x04,
37470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x39, 0x00, 0xAD, 0x48,
37480x85, 0x22, 0xD0, 0x0A, 0x00, 0x3B, 0x00, 0x21, 0xC0, 0x84, 0xE3, 0x10, 0x86,
37490x41, 0x98, 0x00, 0xED, 0x18, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x00, 0xE1,
37500x00, 0xF4, 0x11, 0x12, 0xCB, 0x40, 0x55, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00,
37510x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x2D, 0x10, 0x84, 0x2A, 0xD8, 0x0A,
37520x61, 0x2B, 0x60, 0x31, 0x50, 0x94, 0x23, 0x51, 0x06, 0x50, 0x3A, 0x98, 0xED,
37530x08, 0xB4, 0x23, 0xD0, 0x0E, 0x41, 0x1B, 0x00, 0xE1, 0x00, 0x94, 0x43, 0x99,
37540x0F, 0x44, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
37550x20, 0x31, 0x00, 0x0D, 0x47, 0x04, 0x00, 0xD8, 0x58, 0x40, 0xB3, 0x02, 0x01,
37560x53, 0x04, 0x07, 0x58, 0x34, 0x40, 0x12, 0x80, 0xCD, 0x41, 0x24, 0x33, 0xD0,
37570x3C, 0x40, 0x23, 0x50, 0xC1, 0x42, 0x34, 0x46, 0x98, 0x0C, 0x40, 0x11, 0x00,
37580x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8, 0x35, 0x10, 0x9D,
37590x00, 0x4C, 0x02, 0xD0, 0x19, 0xC0, 0x93, 0x40, 0x13, 0x01, 0xDC, 0x0B, 0x70,
37600x05, 0xC0, 0x06, 0x00, 0xFF, 0x03, 0xFC, 0x0B, 0xF8, 0x3F, 0xC4, 0x27, 0x00,
37610xF3, 0x0F, 0x5C, 0x02, 0xB4, 0x0D, 0x40, 0x55, 0x20, 0x06, 0x00, 0x00, 0x00,
37620x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x36, 0x00, 0xDF, 0x00, 0x7C, 0x22, 0xF0,
37630x09, 0xC0, 0x37, 0x01, 0x9F, 0x00, 0x7C, 0x13, 0x90, 0x45, 0xC0, 0x05, 0x00,
37640xDF, 0x10, 0x74, 0x03, 0xF0, 0x4D, 0xC0, 0x87, 0x00, 0xDF, 0x00, 0x7C, 0x00,
37650x70, 0x0D, 0x88, 0x07, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37660x84, 0x08, 0x3E, 0x00, 0xBF, 0x00, 0xFC, 0x02, 0xC0, 0x03, 0xC8, 0x1F, 0x00,
37670x3B, 0x02, 0x7C, 0x03, 0xF0, 0x07, 0xC0, 0x18, 0x00, 0xFA, 0x00, 0xAC, 0x03,
37680xB0, 0x0F, 0xC8, 0x06, 0x10, 0xEF, 0x00, 0xDC, 0x02, 0xF0, 0x0F, 0x80, 0x13,
37690x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x20, 0x36, 0x00,
37700x9D, 0x01, 0x74, 0x05, 0xD0, 0x11, 0x40, 0x37, 0x00, 0xD1, 0x83, 0x74, 0x03,
37710xD0, 0x14, 0x40, 0x94, 0x00, 0xD1, 0x00, 0x74, 0x03, 0x10, 0x0D, 0x40, 0xC4,
37720x04, 0xDD, 0x00, 0x44, 0x1C, 0xD2, 0x0D, 0x42, 0x17, 0x00, 0x08, 0x00, 0x00,
37730x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0x34, 0x00, 0x9D, 0x01, 0x74, 0x06,
37740xD0, 0x69, 0x40, 0x27, 0x00, 0x19, 0x10, 0x74, 0x03, 0xD0, 0x35, 0x60, 0x14,
37750x00, 0xD5, 0x00, 0x64, 0x03, 0xD0, 0x0C, 0x60, 0x65, 0x00, 0xDD, 0x20, 0x54,
37760x04, 0xD8, 0x09, 0x40, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
37770x00, 0x10, 0x28, 0x30, 0x00, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x08, 0x40, 0x33,
37780x00, 0x00, 0x20, 0x34, 0x83, 0xD0, 0x05, 0x40, 0x10, 0x00, 0xC5, 0x00, 0x34,
37790x03, 0x10, 0x0C, 0x60, 0x20, 0x00, 0xCD, 0x00, 0x06, 0x00, 0xD8, 0x08, 0x40,
37800x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x36,
37810x00, 0x1F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x27, 0x00, 0x1B, 0x20, 0xFC,
37820x03, 0xF2, 0x05, 0xD0, 0x14, 0x10, 0xD7, 0x00, 0xEC, 0x03, 0xB0, 0x0F, 0xC0,
37830x04, 0x10, 0xFF, 0x20, 0x5C, 0x02, 0xF0, 0x0D, 0xC8, 0x03, 0xC0, 0x0A, 0x00,
37840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xA8, 0x3F, 0x00, 0x2F, 0x00, 0xFC,
37850x80, 0xF1, 0x0B, 0xC0, 0x3B, 0x00, 0x2F, 0x00, 0xFC, 0x03, 0xF0, 0x0E, 0xC0,
37860x1F, 0x20, 0xFB, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x2F, 0x20, 0xFF, 0x00,
37870xFC, 0x00, 0xF0, 0x0F, 0xE0, 0x17, 0x21, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
37880x00, 0x00, 0x03, 0xA0, 0x5F, 0x40, 0xB3, 0x00, 0xFC, 0x12, 0xF0, 0x17, 0xC0,
37890x7F, 0x00, 0x73, 0x81, 0xFC, 0x10, 0xF1, 0xC3, 0xC0, 0x2C, 0x02, 0x33, 0x81,
37900xCC, 0x23, 0x30, 0x0F, 0xC0, 0x48, 0x10, 0xBF, 0x20, 0xFC, 0x05, 0x30, 0x1F,
37910xC0, 0x0C, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08,
37920x77, 0x08, 0x91, 0x4B, 0x74, 0x2E, 0xD2, 0x19, 0x00, 0x7F, 0x00, 0x51, 0x01,
37930x74, 0x2C, 0xD0, 0xE1, 0x40, 0xA4, 0x01, 0x11, 0x01, 0xC4, 0x1B, 0x51, 0xBB,
37940x48, 0x64, 0x00, 0x8D, 0x4E, 0x74, 0x07, 0x10, 0x0F, 0x48, 0x04, 0x60, 0x0C,
37950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x23, 0x00, 0x81, 0x40,
37960x34, 0x02, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x81, 0x00, 0x34, 0x00, 0xD0, 0x09,
37970x40, 0xA0, 0x80, 0x15, 0x00, 0x04, 0x1B, 0x10, 0x0C, 0x40, 0x00, 0x00, 0x8D,
37980x10, 0x34, 0x82, 0x10, 0x0C, 0x40, 0x44, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00,
37990x00, 0x00, 0x00, 0x03, 0xA8, 0x25, 0x20, 0xD1, 0x00, 0x74, 0x02, 0xD0, 0x0D,
38000x40, 0x37, 0x00, 0x91, 0x82, 0x74, 0x04, 0xD0, 0x09, 0x48, 0x25, 0x84, 0x11,
38010x01, 0x45, 0x07, 0x53, 0x89, 0x40, 0x64, 0x00, 0x9D, 0x40, 0x34, 0x43, 0x10,
38020x0D, 0x40, 0x0C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
38030x88, 0x23, 0x00, 0xD3, 0x08, 0x7C, 0x02, 0xF0, 0x0D, 0x44, 0x33, 0x40, 0xD3,
38040x00, 0x7C, 0x0C, 0xF0, 0x88, 0xC0, 0x64, 0x40, 0x13, 0x81, 0x4C, 0x05, 0x30,
38050x1D, 0x90, 0x44, 0x00, 0x9E, 0x40, 0x7C, 0x2D, 0x34, 0x0D, 0xC0, 0x00, 0x20,
38060x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0xAD, 0x00, 0xBF,
38070x81, 0xFC, 0x13, 0xD0, 0x4B, 0x48, 0x3F, 0x00, 0xFF, 0x09, 0x7C, 0x00, 0xF0,
38080x1B, 0xC0, 0x6E, 0x2A, 0x3E, 0x10, 0xBC, 0x83, 0xF0, 0x09, 0xC4, 0x2F, 0x28,
38090xBF, 0x00, 0xF4, 0x03, 0xF1, 0x0F, 0xC0, 0x1F, 0x00, 0x06, 0x00, 0x00, 0x00,
38100x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x25, 0x02, 0xD3, 0x00, 0x7C, 0x03, 0xF0,
38110x0D, 0xC0, 0x37, 0x02, 0x93, 0x02, 0x7C, 0x00, 0x34, 0x09, 0xE0, 0x24, 0x20,
38120x1B, 0x01, 0x7C, 0x03, 0x30, 0x0D, 0xC8, 0x04, 0x44, 0xD3, 0x00, 0x4C, 0x02,
38130xF0, 0x0D, 0xC5, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38140x13, 0xA0, 0x24, 0x00, 0xD1, 0x00, 0x74, 0x03, 0xD0, 0x0D, 0xC0, 0x35, 0x02,
38150x95, 0x00, 0x74, 0x04, 0x10, 0x0B, 0x42, 0x64, 0x04, 0x01, 0x03, 0x5C, 0xAF,
38160x51, 0x18, 0xC0, 0xE6, 0x18, 0xD1, 0x01, 0x6C, 0x03, 0xD0, 0x6D, 0x40, 0x4C,
38170x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xA0, 0x12, 0x04,
38180x81, 0x00, 0x34, 0x03, 0xD0, 0x00, 0x40, 0x33, 0x00, 0x81, 0x00, 0x34, 0x10,
38190x12, 0x00, 0x01, 0x64, 0x88, 0x09, 0x00, 0x34, 0x0F, 0x51, 0xBC, 0x41, 0x81,
38200x10, 0x85, 0x11, 0x04, 0x82, 0xD2, 0x2D, 0x42, 0x1C, 0x00, 0x0A, 0x00, 0x00,
38210x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x78, 0x82, 0xA1, 0x21, 0xB4, 0x16,
38220xD0, 0x1A, 0x40, 0x73, 0x08, 0xA5, 0x01, 0xB4, 0x04, 0x18, 0x92, 0x40, 0x68,
38230x08, 0x29, 0x01, 0x14, 0x27, 0x52, 0x1E, 0x64, 0x6F, 0x00, 0xA5, 0x29, 0xA4,
38240x06, 0xD0, 0x1E, 0x40, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38250x00, 0x12, 0x10, 0x20, 0x00, 0xC3, 0x08, 0x3C, 0x02, 0xF0, 0x08, 0x42, 0x33,
38260x02, 0x83, 0x00, 0x34, 0x48, 0x30, 0x08, 0x40, 0x20, 0x01, 0x0B, 0x00, 0x3C,
38270x43, 0x70, 0x0C, 0xC0, 0x01, 0x04, 0x87, 0x50, 0x0A, 0x02, 0xF0, 0x0D, 0xC0,
38280x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB8, 0x29,
38290x40, 0xFF, 0x08, 0xFC, 0x12, 0xF0, 0x0B, 0xC0, 0x7D, 0x08, 0xBF, 0x00, 0xFC,
38300x00, 0xD0, 0x0E, 0x52, 0x2B, 0x00, 0x37, 0x00, 0xFC, 0x0B, 0xF0, 0x0F, 0xE0,
38310x3E, 0x10, 0x9B, 0x00, 0xFC, 0x22, 0xF0, 0x1F, 0xC0, 0x0B, 0x60, 0x06, 0x00,
38320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x77, 0x00, 0x93, 0x00, 0x7C,
38330x23, 0x30, 0x09, 0xC0, 0x37, 0x00, 0xDF, 0x80, 0xFC, 0x00, 0xF0, 0x09, 0xC0,
38340x06, 0x10, 0x93, 0x80, 0x3C, 0x08, 0x34, 0x4D, 0xE1, 0x07, 0x08, 0x9F, 0x01,
38350x4C, 0x02, 0xF0, 0x0D, 0xD0, 0x54, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
38360x00, 0x00, 0x12, 0x88, 0x39, 0x00, 0xA1, 0x04, 0xB4, 0x13, 0x10, 0x0A, 0x40,
38370xBB, 0x28, 0xEC, 0x20, 0xB4, 0x82, 0xD0, 0x6E, 0x48, 0x08, 0x00, 0xA1, 0x00,
38380xB4, 0x02, 0x50, 0x0E, 0x4A, 0x3B, 0x00, 0xBD, 0x40, 0xBC, 0x02, 0xD0, 0x4E,
38390x40, 0x48, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
38400xED, 0x00, 0xE9, 0x09, 0x34, 0x0F, 0x10, 0x1A, 0x40, 0x7B, 0x01, 0xAD, 0x01,
38410xB4, 0x04, 0xD0, 0x18, 0x40, 0x48, 0x00, 0xA1, 0x01, 0xB4, 0x07, 0x90, 0x1E,
38420x40, 0x6B, 0x10, 0xED, 0x01, 0xA4, 0x06, 0xD0, 0x9E, 0x50, 0x0C, 0x00, 0x04,
38430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0xE3, 0x00, 0xC9, 0x88,
38440x34, 0x07, 0x10, 0x28, 0x41, 0x33, 0x00, 0x8D, 0x23, 0x34, 0x07, 0xD0, 0x0D,
38450x40, 0x14, 0x02, 0xC1, 0x01, 0x34, 0xCB, 0xD0, 0x0C, 0x40, 0x73, 0x04, 0xCD,
38460x00, 0x34, 0x02, 0xD0, 0x0D, 0x50, 0x48, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00,
38470x00, 0x00, 0x00, 0x17, 0xA8, 0xDD, 0x20, 0x5B, 0x21, 0x7C, 0x05, 0x34, 0x07,
38480xC0, 0x17, 0x00, 0x7F, 0x03, 0xFC, 0x01, 0xF1, 0x07, 0xC0, 0x5C, 0x40, 0x73,
38490x05, 0xBC, 0x1D, 0xB0, 0x05, 0xC4, 0xDF, 0x21, 0x5F, 0x00, 0xEC, 0x01, 0xF0,
38500x05, 0xC0, 0x5C, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
38510x00, 0x87, 0x41, 0x17, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F,
38520x08, 0x6C, 0x30, 0xF0, 0x31, 0xD0, 0x45, 0x00, 0x1F, 0x01, 0x7C, 0x00, 0x70,
38530x21, 0xC0, 0x87, 0x10, 0x1F, 0x00, 0x7E, 0x00, 0xF0, 0x21, 0xC8, 0x4B, 0x00,
38540x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x27, 0x00, 0x8F,
38550x80, 0x4C, 0x02, 0x34, 0x09, 0xC0, 0x24, 0x00, 0x9F, 0x10, 0x4C, 0x02, 0xF0,
38560x09, 0xC0, 0x66, 0x01, 0x9B, 0x01, 0x4C, 0x02, 0xB0, 0x19, 0xC0, 0x27, 0x00,
38570x9F, 0x04, 0x7C, 0x82, 0x30, 0x09, 0xC0, 0x40, 0x20, 0x0C, 0x00, 0x00, 0x00,
38580x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x26, 0x01, 0xBD, 0x00, 0x85, 0x02, 0x10,
38590x08, 0xC0, 0x2C, 0x00, 0x9D, 0x00, 0x54, 0x0A, 0xD2, 0x29, 0x40, 0xE4, 0x20,
38600x81, 0x4F, 0x54, 0x02, 0xB0, 0xD9, 0x46, 0xA7, 0x1E, 0x9D, 0x00, 0x34, 0x02,
38610x10, 0x6B, 0x40, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38620x18, 0xA0, 0x24, 0x80, 0x9D, 0x00, 0x44, 0x62, 0x10, 0x09, 0x40, 0x24, 0x00,
38630x8D, 0x00, 0x40, 0x2A, 0xD0, 0x19, 0x60, 0x26, 0x00, 0xD1, 0x20, 0x44, 0x2A,
38640x80, 0x09, 0x20, 0x37, 0x00, 0x9D, 0x00, 0x74, 0x02, 0x10, 0x09, 0x40, 0x60,
38650x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x20, 0x10,
38660x8D, 0x02, 0x04, 0x02, 0x10, 0x29, 0x40, 0x20, 0x00, 0x8D, 0x02, 0x14, 0x52,
38670xD0, 0x48, 0x41, 0x20, 0x0D, 0x91, 0x20, 0x54, 0x52, 0x98, 0x48, 0x49, 0x23,
38680x00, 0x8D, 0x95, 0x76, 0x0A, 0x10, 0x08, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00,
38690x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0, 0x06, 0x00, 0x1F, 0x01, 0x4C, 0x84,
38700x30, 0x01, 0xD0, 0x44, 0x00, 0x1D, 0x00, 0x4C, 0x10, 0xF0, 0x45, 0xD0, 0x12,
38710x01, 0x13, 0x00, 0x4C, 0x90, 0xB0, 0x41, 0xC0, 0x07, 0x00, 0x1F, 0x24, 0x7C,
38720x00, 0x34, 0x10, 0xD0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
38730x00, 0x19, 0xB8, 0x3B, 0x10, 0xBF, 0x03, 0xFC, 0x0A, 0xC0, 0x1F, 0xC0, 0xA5,
38740x00, 0xFF, 0x01, 0xFC, 0x02, 0xF0, 0x4B, 0xC3, 0x2F, 0x45, 0xBF, 0x00, 0xFC,
38750x52, 0x80, 0x0B, 0xC0, 0x2F, 0x00, 0xBF, 0x14, 0xFC, 0x06, 0xF0, 0x69, 0xC1,
38760x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x2F,
38770x00, 0x9F, 0x07, 0xCC, 0x86, 0x34, 0x29, 0xC0, 0x6C, 0x04, 0x8F, 0x00, 0xFC,
38780x06, 0xF0, 0x5F, 0xC0, 0x6C, 0x05, 0xBB, 0x40, 0xCC, 0x06, 0x30, 0x1B, 0xC2,
38790x2C, 0x08, 0xF3, 0x05, 0x4C, 0x0A, 0xF0, 0x7B, 0xC0, 0x64, 0x00, 0x0E, 0x00,
38800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00, 0x1D, 0x01, 0x44,
38810x80, 0x10, 0x11, 0x50, 0x84, 0x00, 0x1D, 0x21, 0x74, 0x20, 0xD0, 0x50, 0xC1,
38820x42, 0x01, 0x11, 0x00, 0x44, 0x6D, 0x50, 0x01, 0x50, 0x04, 0x00, 0x01, 0x55,
38830x44, 0x05, 0xD0, 0x61, 0x40, 0x70, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
38840x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D, 0x02, 0x05, 0x0A, 0x10, 0x08, 0x40,
38850x22, 0x00, 0x8D, 0x14, 0x34, 0x02, 0xD0, 0xC8, 0x40, 0x20, 0x05, 0x85, 0x00,
38860x05, 0x92, 0x58, 0x88, 0x40, 0x60, 0x40, 0x81, 0x08, 0x04, 0x82, 0xD0, 0x88,
38870x40, 0x42, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA8,
38880x25, 0x80, 0x8D, 0x01, 0x44, 0x12, 0x10, 0x08, 0x40, 0x26, 0x00, 0x9D, 0x80,
38890x74, 0x22, 0xD0, 0x09, 0x50, 0x26, 0x20, 0x95, 0x08, 0x04, 0x02, 0x58, 0x09,
38900x40, 0x34, 0x02, 0x91, 0x00, 0x45, 0x22, 0xD0, 0x09, 0x40, 0x62, 0x20, 0x06,
38910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x67, 0x00, 0xBF, 0x80,
38920x4C, 0x06, 0x30, 0x1B, 0xC0, 0x26, 0x00, 0xBF, 0x00, 0x7C, 0x02, 0xF0, 0x49,
38930xC0, 0x64, 0x00, 0x97, 0x00, 0x4C, 0x86, 0x72, 0x09, 0xCA, 0x64, 0x20, 0x93,
38940x21, 0xCC, 0x0E, 0xF0, 0x09, 0xD0, 0x16, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
38950x00, 0x00, 0x00, 0x14, 0x80, 0x25, 0x02, 0x9F, 0x00, 0x7C, 0x42, 0xF0, 0x49,
38960xC0, 0x25, 0x04, 0x9F, 0x03, 0x7C, 0x06, 0xF0, 0x58, 0xD0, 0x27, 0x02, 0x93,
38970x20, 0x7C, 0x22, 0xF0, 0x08, 0xC0, 0x67, 0x00, 0x8F, 0x09, 0x7C, 0x02, 0xD0,
38980x09, 0xC0, 0x51, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
38990x08, 0x05, 0x00, 0x13, 0x00, 0x7C, 0x00, 0xF0, 0x21, 0xC0, 0x07, 0x40, 0x13,
39000x02, 0x4D, 0x00, 0x32, 0x21, 0xF0, 0x00, 0x00, 0x13, 0x44, 0x4C, 0x20, 0x34,
39010x41, 0xC0, 0x04, 0x0A, 0x13, 0x00, 0x4C, 0x00, 0xF0, 0x81, 0xC6, 0x50, 0x20,
39020x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x5C, 0x00, 0x51,
39030x00, 0xB4, 0x01, 0xD0, 0x05, 0x40, 0x1F, 0x80, 0x51, 0x00, 0xC4, 0x09, 0x50,
39040x27, 0x50, 0x1D, 0x00, 0x61, 0xD2, 0xC4, 0x05, 0x20, 0x07, 0x40, 0x18, 0x00,
39050x75, 0x08, 0x6C, 0x01, 0xD0, 0x17, 0xD0, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
39060x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x62, 0x00, 0xC9, 0x00, 0x34, 0x02, 0xD0,
39070x0C, 0x40, 0x23, 0x08, 0xC1, 0x00, 0x04, 0x4A, 0x10, 0x3C, 0x49, 0x30, 0x00,
39080xC0, 0x01, 0x05, 0x17, 0x19, 0x28, 0x40, 0x30, 0x84, 0xC1, 0x01, 0x04, 0x03,
39090xD0, 0x19, 0x40, 0x50, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39100x05, 0x80, 0xFC, 0x00, 0xE9, 0x04, 0xB4, 0x42, 0xD0, 0x4E, 0x40, 0xFB, 0x00,
39110xF5, 0x25, 0x84, 0x46, 0x50, 0x6E, 0x68, 0x69, 0x21, 0x21, 0x20, 0x84, 0x01,
39120x18, 0x06, 0x41, 0x38, 0x00, 0xE5, 0x10, 0xA6, 0x13, 0xD0, 0x0E, 0x40, 0x12,
39130x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x68, 0x00,
39140xEB, 0x07, 0xBC, 0x06, 0xF0, 0x3E, 0xC0, 0x6B, 0x00, 0xE1, 0x03, 0x8C, 0x06,
39150x32, 0x72, 0x40, 0x28, 0x41, 0x23, 0x01, 0x84, 0x07, 0x32, 0x10, 0xC0, 0x78,
39160x00, 0xE3, 0x01, 0x8C, 0x0F, 0xF0, 0x10, 0xC0, 0x50, 0x40, 0x00, 0x00, 0x00,
39170x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x31, 0x40, 0xD7, 0x00, 0x7C, 0x02,
39180xF0, 0x0D, 0xC0, 0x33, 0x00, 0xDB, 0x00, 0x3C, 0x02, 0xF0, 0x01, 0xD8, 0x27,
39190x02, 0x0F, 0x20, 0x3C, 0x00, 0xF0, 0x01, 0xD2, 0x33, 0x10, 0x5F, 0x12, 0x7C,
39200x03, 0xF0, 0x0D, 0xC0, 0x43, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39210x00, 0x00, 0xA2, 0x6F, 0x00, 0xFF, 0x01, 0xCC, 0x07, 0xF0, 0x1E, 0xC0, 0x6C,
39220x00, 0xEF, 0x01, 0xCC, 0x07, 0x32, 0x1F, 0xC0, 0x78, 0x10, 0x23, 0x01, 0x8C,
39230x05, 0x30, 0x13, 0xC0, 0x7F, 0x08, 0x7F, 0x01, 0xBC, 0x07, 0x30, 0x1F, 0xC0,
39240x0B, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x88, 0x29,
39250x00, 0xED, 0x00, 0x84, 0x03, 0xD2, 0x0E, 0x40, 0xA8, 0x00, 0xED, 0x08, 0x84,
39260x03, 0xB0, 0x2F, 0x40, 0x28, 0x01, 0x21, 0x80, 0x94, 0x00, 0x52, 0x02, 0x40,
39270x3B, 0x0A, 0x6D, 0x04, 0xB4, 0x03, 0x10, 0x0E, 0x40, 0x57, 0x20, 0x06, 0x00,
39280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0xED, 0x01, 0x84,
39290x03, 0xD0, 0x1F, 0x40, 0x28, 0x00, 0xFD, 0x01, 0x84, 0x22, 0x10, 0x8E, 0x40,
39300x2C, 0x10, 0x39, 0x08, 0x84, 0x03, 0x10, 0x02, 0x40, 0x3B, 0x00, 0x2D, 0x00,
39310xF4, 0x07, 0x10, 0x06, 0x40, 0x63, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
39320x00, 0x00, 0x04, 0x28, 0x23, 0x01, 0xCD, 0x00, 0x04, 0x07, 0xD0, 0x0C, 0x41,
39330x20, 0x00, 0xCD, 0x00, 0x06, 0x45, 0x90, 0x1C, 0x40, 0x20, 0x00, 0x09, 0x01,
39340x16, 0x19, 0x50, 0x90, 0x40, 0xB3, 0x00, 0x5D, 0x00, 0x34, 0x6F, 0x10, 0x0C,
39350x40, 0x1B, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA8,
39360xA5, 0x00, 0xDF, 0x04, 0x4C, 0x12, 0xF0, 0x0D, 0xD0, 0x24, 0x00, 0xDF, 0x00,
39370x4D, 0x12, 0x30, 0x1B, 0xC0, 0x3C, 0x41, 0x1B, 0x05, 0x4C, 0x01, 0x34, 0x01,
39380xC0, 0x47, 0x12, 0x9F, 0x00, 0x7C, 0x0F, 0x36, 0x01, 0xC8, 0x57, 0x20, 0x06,
39390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xB7, 0x00, 0xDF, 0x40,
39400x7C, 0x02, 0xF0, 0x8D, 0xC0, 0x33, 0x10, 0xDF, 0x00, 0x7C, 0x02, 0xF0, 0x80,
39410xC0, 0xA7, 0x00, 0x17, 0x40, 0x7C, 0x08, 0xF1, 0x00, 0xC0, 0xD7, 0x00, 0x1F,
39420x40, 0x7C, 0x03, 0xF0, 0x0D, 0xCC, 0x27, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
39430x00, 0x00, 0x00, 0x80, 0x08, 0x6F, 0x00, 0xEF, 0x00, 0x8C, 0x0E, 0x30, 0x0F,
39440xC0, 0x2C, 0x00, 0xF3, 0x00, 0xCC, 0x02, 0xF0, 0x33, 0xC4, 0x0C, 0x00, 0x33,
39450x00, 0xBC, 0x09, 0x30, 0x03, 0xC0, 0x1C, 0x00, 0xBF, 0x00, 0xCC, 0x03, 0x30,
39460x0B, 0xD0, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
39470x20, 0xD6, 0x10, 0xDD, 0x40, 0x44, 0x4A, 0x10, 0x0D, 0x40, 0xF5, 0x50, 0xD1,
39480x00, 0x44, 0x02, 0xD0, 0x31, 0x42, 0x01, 0x08, 0x11, 0x23, 0x74, 0x0D, 0x10,
39490x51, 0xC0, 0xB6, 0x00, 0x1D, 0x61, 0x44, 0x03, 0x11, 0x2D, 0x40, 0x04, 0x02,
39500x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xA4, 0x01, 0xDD,
39510x00, 0x44, 0x02, 0x10, 0x0C, 0x40, 0x24, 0x02, 0xC1, 0x20, 0x44, 0x03, 0xD0,
39520x0D, 0x40, 0xB4, 0x90, 0x19, 0x51, 0x74, 0x09, 0x10, 0x11, 0x00, 0x14, 0x02,
39530x1D, 0x03, 0x05, 0x83, 0x10, 0x24, 0x40, 0x04, 0x00, 0x0A, 0x00, 0x00, 0x00,
39540x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x00, 0xCD, 0x00, 0x04, 0x02, 0x14,
39550x0C, 0x40, 0x11, 0x00, 0xC1, 0x00, 0x04, 0x03, 0xD0, 0x04, 0x40, 0x25, 0x00,
39560x01, 0x00, 0x34, 0x01, 0x14, 0x00, 0x60, 0x32, 0x00, 0x1D, 0x00, 0x04, 0x03,
39570x10, 0x0C, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39580x00, 0xB0, 0x26, 0x00, 0xEF, 0x00, 0x4D, 0x01, 0x30, 0x0F, 0xC0, 0x24, 0x00,
39590xF3, 0x00, 0x45, 0x02, 0xF0, 0x0D, 0xC0, 0x04, 0x00, 0x13, 0x00, 0x7C, 0x01,
39600x30, 0x01, 0xC0, 0x14, 0x00, 0x3F, 0x00, 0xCC, 0x03, 0x34, 0x0D, 0xC8, 0x04,
39610x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xB8, 0x1F, 0x00,
39620xFF, 0x00, 0xFC, 0x81, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, 0xFF, 0x00, 0xBC, 0x01,
39630xE2, 0x07, 0x98, 0x0F, 0x40, 0x3F, 0x40, 0xFC, 0x01, 0xF0, 0x03, 0xC0, 0x3F,
39640x00, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x17, 0x60, 0x0E, 0x00, 0x00,
39650x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x7F, 0x00, 0xFB, 0x10, 0x9C, 0x07,
39660xF0, 0x1F, 0xC0, 0x4F, 0x00, 0xBF, 0x01, 0xFC, 0x05, 0xF0, 0x17, 0xC8, 0x2E,
39670x10, 0xBF, 0x04, 0xFC, 0x03, 0x30, 0x1F, 0xC0, 0x7F, 0x08, 0xB6, 0x00, 0xFC,
39680x27, 0x70, 0x02, 0xC0, 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
39690x00, 0x01, 0x08, 0x77, 0x00, 0xFD, 0x03, 0x44, 0x06, 0x10, 0x1D, 0x40, 0x47,
39700x00, 0xDD, 0x01, 0x74, 0x00, 0x10, 0x1D, 0x40, 0xE4, 0x02, 0x1D, 0x04, 0xF4,
39710x5B, 0x10, 0x01, 0x40, 0x47, 0x08, 0x9D, 0x01, 0x74, 0x03, 0xD0, 0x19, 0x40,
39720x0C, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA0, 0x33,
39730x00, 0xCD, 0x00, 0x14, 0x03, 0xD0, 0x0C, 0x40, 0x03, 0x00, 0x8D, 0x40, 0x74,
39740x51, 0x90, 0x05, 0x48, 0x02, 0x00, 0x0D, 0x12, 0x34, 0x1B, 0x10, 0x4C, 0x49,
39750x33, 0x00, 0x0D, 0x02, 0x34, 0x13, 0xD0, 0x00, 0x40, 0x4E, 0x80, 0x0E, 0x00,
39760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x00, 0xDD, 0x20, 0x40,
39770x07, 0x10, 0x0D, 0x40, 0x67, 0x00, 0xDD, 0x23, 0x74, 0x81, 0x14, 0x1D, 0x41,
39780x44, 0x00, 0x1D, 0x01, 0x74, 0x03, 0x14, 0x01, 0x40, 0x07, 0x08, 0x9D, 0x51,
39790x74, 0x03, 0xD0, 0x19, 0x41, 0x0C, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
39800x00, 0x00, 0x02, 0x88, 0x37, 0x00, 0xDF, 0x00, 0x54, 0x1F, 0xF0, 0x0D, 0xC0,
39810x47, 0x00, 0x9F, 0x01, 0x7C, 0x19, 0xF0, 0x14, 0xC0, 0xC6, 0x00, 0x9F, 0x07,
39820x74, 0x03, 0x30, 0x0D, 0xC0, 0x37, 0x00, 0x17, 0x01, 0x7C, 0x03, 0x79, 0x39,
39830xC0, 0x22, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80,
39840x3C, 0x00, 0xEF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0xFF, 0x40,
39850xFC, 0x00, 0xF0, 0x0F, 0xC0, 0x27, 0x00, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x03,
39860xC4, 0x0F, 0x30, 0x1F, 0x20, 0xFE, 0xA7, 0xF0, 0x0B, 0x40, 0x1F, 0x00, 0x06,
39870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x35, 0x00, 0xDF, 0x00,
39880x7C, 0x03, 0x30, 0x0D, 0xC0, 0x07, 0x00, 0x1F, 0x02, 0x5C, 0x49, 0xB0, 0x25,
39890xC0, 0x06, 0x00, 0x9B, 0x00, 0x4E, 0x03, 0xF0, 0x0D, 0xC0, 0x34, 0x00, 0x17,
39900x02, 0x4C, 0x13, 0xF2, 0x29, 0xC5, 0x29, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00,
39910x00, 0x00, 0x00, 0x13, 0xA0, 0x34, 0x00, 0xFD, 0x00, 0x34, 0x07, 0x10, 0x0D,
39920xC0, 0x07, 0x00, 0xDD, 0x05, 0x04, 0x1D, 0x10, 0x0D, 0x40, 0x64, 0x00, 0x11,
39930x00, 0xEC, 0x63, 0xD0, 0x71, 0x40, 0x84, 0x0B, 0x11, 0x01, 0x44, 0x43, 0xD0,
39940x18, 0xC0, 0x4E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
39950xA0, 0x32, 0x00, 0xCD, 0x00, 0x34, 0x3B, 0x10, 0x0C, 0x40, 0x03, 0x00, 0xCD,
39960x00, 0x14, 0x0B, 0x94, 0x00, 0x42, 0x62, 0x00, 0x89, 0x80, 0x54, 0x07, 0xD0,
39970x4C, 0x40, 0xF1, 0x10, 0x85, 0x00, 0x04, 0x03, 0xD0, 0xB0, 0x40, 0x0D, 0x00,
39980x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80, 0x78, 0x80, 0xED,
39990x41, 0xB4, 0x07, 0x10, 0x1E, 0x40, 0x49, 0x30, 0xED, 0xC9, 0x94, 0x06, 0x10,
40000x17, 0x00, 0x78, 0x00, 0xF0, 0x49, 0xB4, 0x07, 0xD0, 0x13, 0x40, 0x48, 0x00,
40010xE1, 0x11, 0x84, 0x07, 0xD0, 0x16, 0x40, 0x3E, 0x20, 0x08, 0x00, 0x00, 0x00,
40020x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0xCF, 0x00, 0x3C, 0x01, 0x30,
40030x8C, 0x40, 0x03, 0x00, 0xCF, 0x00, 0x5C, 0x33, 0xB0, 0x00, 0xC0, 0x32, 0x04,
40040x5B, 0x80, 0x14, 0x03, 0xF2, 0x0C, 0xD0, 0x30, 0x03, 0x46, 0x08, 0x0D, 0x03,
40050xF0, 0x00, 0xC0, 0x49, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40060x02, 0xB0, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x01, 0xF0, 0x0D, 0xC2, 0x37, 0x00,
40070xCF, 0x00, 0x6C, 0xA3, 0xF0, 0x0C, 0xC0, 0x37, 0x00, 0xDF, 0x20, 0x6C, 0x43,
40080xF0, 0x80, 0xC0, 0x03, 0x0A, 0xDF, 0x08, 0x7C, 0x23, 0xF0, 0x8D, 0xC0, 0x09,
40090x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xA0, 0x37, 0x00,
40100xDF, 0x1E, 0x7C, 0x03, 0x30, 0x0D, 0xC4, 0x07, 0x00, 0xDF, 0x00, 0x5C, 0x01,
40110xF0, 0x15, 0xC0, 0x14, 0x00, 0xDF, 0x00, 0x4C, 0x4F, 0x71, 0x0D, 0xC8, 0x34,
40120x10, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x05, 0xC4, 0x40, 0x00, 0x0E, 0x00, 0x00,
40130x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x03,
40140x10, 0x0E, 0x48, 0x0B, 0x10, 0xED, 0x00, 0x84, 0x02, 0xD0, 0x0E, 0x40, 0x38,
40150x08, 0xFD, 0x80, 0x04, 0x03, 0x12, 0x02, 0x40, 0x08, 0x04, 0xED, 0x00, 0xB4,
40160x03, 0xD0, 0x06, 0x60, 0x4C, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40170x00, 0x03, 0x00, 0x79, 0x00, 0xED, 0x01, 0xF4, 0x07, 0x14, 0x1E, 0x40, 0x4B,
40180x00, 0xED, 0x01, 0x94, 0x07, 0xD0, 0x17, 0x50, 0x58, 0x00, 0xED, 0x01, 0x85,
40190x07, 0x50, 0x1F, 0x40, 0x78, 0x00, 0xED, 0x01, 0xB4, 0x87, 0xD0, 0x1C, 0x40,
40200x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x28, 0x33,
40210x00, 0xCD, 0x00, 0x34, 0x4F, 0x90, 0x0C, 0x48, 0xC3, 0x83, 0xCD, 0x12, 0x04,
40220x4B, 0xD0, 0x7C, 0x40, 0xB0, 0x0C, 0xCD, 0x02, 0x04, 0x03, 0x10, 0x01, 0x40,
40230x00, 0x00, 0xCD, 0x88, 0x30, 0x22, 0xD0, 0x1C, 0x40, 0x58, 0x00, 0x0C, 0x00,
40240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x15, 0x00, 0x5F, 0x00, 0xBC,
40250x49, 0x30, 0x05, 0xC2, 0x9F, 0x00, 0x6F, 0x02, 0x9C, 0x09, 0xF0, 0x27, 0xC8,
40260x1C, 0x00, 0x7F, 0x00, 0x4C, 0x01, 0x70, 0x05, 0xD0, 0x14, 0x00, 0x7D, 0x21,
40270x7C, 0x05, 0xD0, 0x27, 0x40, 0x5C, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
40280x00, 0x00, 0x12, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x70, 0x01, 0xC0,
40290x07, 0x00, 0x1F, 0x00, 0x7C, 0x08, 0xF0, 0x81, 0xC0, 0x07, 0x00, 0x1F, 0x18,
40300x7C, 0x00, 0xF0, 0x23, 0xC0, 0x8F, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0xA1,
40310xD1, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08,
40320x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0x34, 0x09, 0xC0, 0x27, 0x00, 0x9F, 0x08,
40330x6C, 0x26, 0x71, 0x09, 0xC0, 0x27, 0x00, 0x9E, 0x00, 0x4C, 0x16, 0xF0, 0x09,
40340xC0, 0x25, 0x20, 0x93, 0x38, 0x78, 0x0E, 0xF2, 0x18, 0xC0, 0x40, 0x20, 0x04,
40350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26, 0x00, 0x9D, 0x00,
40360x74, 0x02, 0x11, 0x09, 0x40, 0x27, 0x00, 0x9D, 0x40, 0x44, 0x06, 0x11, 0x09,
40370x44, 0x27, 0x00, 0x9D, 0x80, 0x44, 0x8E, 0xD1, 0x29, 0x40, 0x20, 0x04, 0x91,
40380x01, 0x74, 0x06, 0xD0, 0x89, 0x41, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
40390x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x00, 0x74, 0x12, 0x1C, 0x09,
40400x40, 0x27, 0x00, 0x9D, 0x00, 0x64, 0x42, 0x40, 0x09, 0x42, 0x37, 0x80, 0x8D,
40410x00, 0x44, 0x02, 0xD0, 0x19, 0x41, 0x2D, 0x40, 0x91, 0x00, 0x74, 0x42, 0xD0,
40420x09, 0x40, 0x70, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
40430x00, 0x20, 0x00, 0x8D, 0x14, 0x74, 0x02, 0x10, 0x08, 0x40, 0x23, 0x00, 0x8D,
40440x00, 0x44, 0x02, 0x10, 0x08, 0x40, 0x23, 0x05, 0x8D, 0x34, 0x04, 0x52, 0xD0,
40450x0A, 0x40, 0x2C, 0x20, 0x81, 0x14, 0x34, 0x02, 0xD0, 0x48, 0x51, 0x50, 0xA0,
40460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x30, 0x06, 0x00, 0x1F,
40470x04, 0x7C, 0x00, 0x30, 0x01, 0xC8, 0x07, 0x00, 0x1F, 0x00, 0x6C, 0x00, 0x70,
40480x01, 0xC0, 0x07, 0x21, 0x1F, 0x04, 0x4C, 0x11, 0xF0, 0x01, 0xC0, 0x0D, 0x00,
40490x13, 0xC4, 0x7C, 0x00, 0xF0, 0x41, 0xC0, 0x74, 0xC0, 0x0A, 0x00, 0x00, 0x00,
40500x00, 0x00, 0x00, 0x00, 0x19, 0xB0, 0x27, 0x00, 0x9F, 0x00, 0xBC, 0x03, 0xF0,
40510x09, 0xC0, 0x2F, 0x00, 0xEF, 0x80, 0xFC, 0x52, 0xF0, 0x0A, 0xC0, 0x2F, 0x00,
40520xBF, 0x14, 0x7D, 0x52, 0xF0, 0x48, 0xC5, 0x27, 0x00, 0xBF, 0x40, 0xFC, 0x52,
40530xF0, 0x0B, 0xC0, 0x67, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40540x18, 0xA0, 0x27, 0x00, 0x9F, 0x01, 0xFC, 0x02, 0xB0, 0x09, 0xC0, 0x27, 0x60,
40550xB3, 0x00, 0x9C, 0x0A, 0x70, 0x09, 0xC0, 0x3D, 0x00, 0x93, 0x02, 0xCC, 0xC6,
40560xF0, 0x2B, 0xC2, 0x2F, 0x00, 0xBF, 0x80, 0xCC, 0x0A, 0xD0, 0x0B, 0xC0, 0x67,
40570x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x07, 0x00,
40580x1D, 0x0A, 0x74, 0x00, 0x10, 0x01, 0x40, 0x07, 0x00, 0x11, 0x00, 0x44, 0x04,
40590x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x10, 0xD0, 0x01, 0x40, 0x07,
40600x00, 0x1D, 0x00, 0x44, 0x00, 0xD0, 0x01, 0x40, 0x73, 0x60, 0x0C, 0x00, 0x00,
40610x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x8D, 0x00, 0x74, 0x02,
40620x90, 0x08, 0x40, 0x27, 0x00, 0x81, 0x00, 0x54, 0x02, 0x52, 0x09, 0x40, 0xA1,
40630x00, 0x81, 0x22, 0x04, 0x42, 0xD2, 0x08, 0x40, 0x23, 0x00, 0x8D, 0x02, 0x04,
40640x02, 0xD0, 0x08, 0x40, 0x4B, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
40650x00, 0x18, 0xA8, 0x25, 0x00, 0x9D, 0x00, 0x74, 0x06, 0x10, 0x09, 0x40, 0x27,
40660x00, 0x91, 0x00, 0x44, 0x1A, 0x12, 0x29, 0x42, 0x24, 0x40, 0x91, 0x80, 0x45,
40670x82, 0xD0, 0x09, 0x40, 0x27, 0x08, 0x9D, 0x00, 0x44, 0x03, 0xD0, 0x29, 0x40,
40680x63, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xA8, 0x27,
40690x00, 0x9F, 0x00, 0x7C, 0x02, 0xB0, 0x09, 0xC4, 0xE3, 0x04, 0x93, 0x02, 0x5C,
40700x0E, 0x70, 0x08, 0xC0, 0xE5, 0x04, 0x92, 0x1B, 0x48, 0x02, 0xE0, 0x09, 0xC0,
40710x27, 0x00, 0x9F, 0x19, 0x4D, 0x06, 0xF0, 0x09, 0xC0, 0x17, 0x28, 0x0E, 0x00,
40720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x25, 0x00, 0x9F, 0x00, 0x7C,
40730x02, 0xF0, 0x09, 0xC4, 0x67, 0x02, 0x9F, 0x00, 0x7C, 0x06, 0xF0, 0x09, 0xC0,
40740x27, 0x01, 0x8F, 0x21, 0x7C, 0x82, 0xF0, 0x09, 0xC0, 0x27, 0x10, 0x8F, 0x01,
40750x7C, 0x12, 0xF0, 0x09, 0xC0, 0x4B, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
40760x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x1F, 0x00, 0x6C, 0x08, 0xF0, 0x01, 0xC0,
40770x07, 0x00, 0x1F, 0x00, 0x7C, 0x40, 0x31, 0x21, 0xC8, 0x87, 0x00, 0x1E, 0x02,
40780x7C, 0x00, 0x32, 0x81, 0x81, 0x04, 0x04, 0x1F, 0x80, 0x4C, 0x00, 0x34, 0x01,
40790xC0, 0x43, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0,
40800x14, 0x00, 0x5D, 0x00, 0x84, 0x01, 0xD0, 0x05, 0x40, 0x17, 0x10, 0x6D, 0x80,
40810xB4, 0x05, 0x10, 0x05, 0x40, 0x13, 0x00, 0x5D, 0x00, 0xF4, 0x01, 0x10, 0x27,
40820x40, 0xDC, 0x00, 0x5D, 0x05, 0xC4, 0x61, 0x12, 0x07, 0x40, 0x53, 0x00, 0x02,
40830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32, 0x00, 0xCD, 0x00,
40840x24, 0x05, 0xD0, 0x0C, 0x40, 0x33, 0x00, 0x8D, 0x0C, 0x34, 0x0F, 0x14, 0x0C,
40850x40, 0x33, 0x02, 0xCD, 0x00, 0x34, 0x1F, 0x50, 0x2C, 0x44, 0xD0, 0x20, 0x8D,
40860x00, 0x04, 0x0F, 0x10, 0x2C, 0x41, 0x53, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
40870x00, 0x00, 0x00, 0x05, 0x80, 0x38, 0x00, 0xED, 0x01, 0x84, 0x0B, 0xD0, 0x0E,
40880x40, 0x3B, 0x80, 0xAD, 0x00, 0xF4, 0x43, 0x10, 0x0E, 0x40, 0x2B, 0x00, 0xED,
40890x48, 0xB4, 0x47, 0x50, 0x1E, 0x50, 0x38, 0x04, 0xED, 0x00, 0x84, 0x05, 0x10,
40900x2E, 0x40, 0x07, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
40910x10, 0x78, 0x00, 0xCF, 0x01, 0xAC, 0x05, 0xF0, 0x1E, 0xC4, 0x7B, 0x10, 0xAF,
40920x01, 0xBC, 0x07, 0x30, 0x1E, 0xC0, 0x7B, 0x00, 0xEF, 0x8D, 0xFC, 0x07, 0x70,
40930x17, 0xC0, 0x78, 0x08, 0xEE, 0x01, 0xCD, 0x07, 0x30, 0x1E, 0xC0, 0x47, 0x40,
40940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8, 0x35, 0x00, 0xDF,
40950x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC4, 0x37, 0x00, 0x9F, 0x00, 0x7C, 0x03, 0xF0,
40960x0D, 0xC0, 0x27, 0x00, 0xDF, 0x42, 0x7C, 0x03, 0xB4, 0x0D, 0xC0, 0x37, 0x00,
40970xCF, 0x00, 0x7C, 0x01, 0xF0, 0x05, 0xC8, 0x43, 0x20, 0x06, 0x00, 0x00, 0x00,
40980x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x7F, 0x00, 0xFF, 0x01, 0xFC, 0x85, 0xF0,
40990x1F, 0xC0, 0x7F, 0x02, 0x2F, 0x09, 0x8C, 0x05, 0xF0, 0x9F, 0xC2, 0x6D, 0x02,
41000xFB, 0x09, 0xFC, 0x07, 0x30, 0x1F, 0xC0, 0x7F, 0x20, 0xFF, 0x01, 0xFC, 0x07,
41010x30, 0x1F, 0xC0, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41020x15, 0x88, 0x39, 0x00, 0xED, 0x00, 0xB4, 0x03, 0xD0, 0x0E, 0x40, 0x3B, 0x00,
41030x2D, 0x10, 0x84, 0x01, 0x12, 0x0E, 0x40, 0x38, 0x04, 0xE9, 0x00, 0x84, 0x11,
41040x10, 0x06, 0x40, 0x3B, 0x00, 0xED, 0x00, 0xA4, 0x11, 0x18, 0x0A, 0x40, 0x54,
41050x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00,
41060xED, 0x00, 0xB4, 0x01, 0xD0, 0x0E, 0x40, 0x39, 0x20, 0x3D, 0x00, 0xC5, 0x01,
41070xD0, 0x0F, 0x09, 0x29, 0x00, 0xED, 0x40, 0x96, 0x83, 0x14, 0x06, 0x40, 0x3B,
41080x02, 0xED, 0x00, 0xF4, 0x83, 0x10, 0x0E, 0x41, 0x22, 0x00, 0x04, 0x00, 0x00,
41090x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x33, 0x00, 0xCD, 0x40, 0x34, 0x03,
41100xD0, 0x0C, 0x64, 0xB3, 0x04, 0x0D, 0x07, 0x04, 0x0C, 0x90, 0x3C, 0x40, 0x70,
41110x00, 0xCD, 0x03, 0x04, 0x02, 0x10, 0xA1, 0x44, 0x73, 0x00, 0xCD, 0x02, 0x64,
41120x24, 0x10, 0x10, 0x40, 0x18, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41130x00, 0x15, 0xA8, 0x35, 0x00, 0xDF, 0x00, 0x7C, 0x07, 0xF0, 0x0D, 0xC0, 0x77,
41140x14, 0x9F, 0x03, 0x0C, 0x4E, 0xF0, 0x9D, 0xC0, 0xF5, 0x00, 0xFF, 0x12, 0x78,
41150x00, 0x30, 0x39, 0x40, 0x73, 0x01, 0xDD, 0x10, 0x7C, 0x02, 0x14, 0x1D, 0xC0,
41160x56, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x37,
41170x00, 0xDF, 0x00, 0x7C, 0x22, 0xF0, 0x0D, 0xC0, 0x37, 0x08, 0x9F, 0x02, 0x7C,
41180x08, 0x70, 0x0D, 0xC0, 0x27, 0x00, 0xDB, 0x04, 0x7C, 0x0A, 0xF0, 0x09, 0xC4,
41190x37, 0x00, 0xDF, 0x30, 0x6C, 0x82, 0xF0, 0x6D, 0xC0, 0xA7, 0x00, 0x0C, 0x00,
41200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x3F, 0x00, 0xFF, 0x80, 0xFC,
41210x83, 0xF0, 0x0F, 0xC0, 0x3F, 0x08, 0xBF, 0x00, 0xDC, 0x42, 0x70, 0x0F, 0xC0,
41220x3D, 0x04, 0xDF, 0x40, 0x78, 0x00, 0xE0, 0x03, 0x01, 0x3C, 0x24, 0xF2, 0x80,
41230xFC, 0x00, 0x30, 0x09, 0xE0, 0x17, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
41240x00, 0x00, 0x81, 0x00, 0x36, 0x00, 0xDD, 0x00, 0x74, 0x1F, 0xD0, 0x0D, 0xC0,
41250x35, 0x00, 0x8D, 0x41, 0x46, 0x16, 0x10, 0x0C, 0x46, 0x24, 0x20, 0xDD, 0x00,
41260x74, 0x0E, 0xD0, 0x19, 0xC1, 0xF6, 0x01, 0xD1, 0x00, 0x74, 0x04, 0x30, 0x41,
41270x40, 0x17, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0,
41280x34, 0x80, 0xDD, 0x00, 0x74, 0x07, 0xD0, 0x0D, 0x48, 0x35, 0x10, 0x9D, 0x03,
41290x54, 0x06, 0x50, 0x0D, 0x40, 0x25, 0x00, 0xDD, 0x00, 0x54, 0x0C, 0xD0, 0x19,
41300x60, 0x75, 0x10, 0xD5, 0x04, 0x74, 0x06, 0x10, 0x85, 0x40, 0x05, 0x00, 0x02,
41310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30, 0x80, 0xCD, 0x00,
41320x34, 0x03, 0xD0, 0x0C, 0x42, 0x31, 0x00, 0xDD, 0x20, 0x44, 0x00, 0x18, 0x0D,
41330x40, 0x30, 0x00, 0xCD, 0x00, 0x34, 0x00, 0xD0, 0x09, 0x48, 0x27, 0x80, 0xC5,
41340x00, 0x34, 0x02, 0x93, 0x00, 0x40, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00,
41350x00, 0x00, 0x00, 0x00, 0xB0, 0x36, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D,
41360xC0, 0x35, 0x00, 0x9F, 0x00, 0x54, 0x02, 0x70, 0x0D, 0xC0, 0x25, 0x20, 0xFD,
41370x00, 0x5C, 0x00, 0xF0, 0x01, 0xC0, 0x35, 0x80, 0xD7, 0x80, 0x7C, 0x02, 0x24,
41380x01, 0xC0, 0x07, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
41390xB8, 0x3F, 0x10, 0xFF, 0x20, 0xFC, 0x03, 0xF0, 0x0F, 0xC4, 0x3D, 0x00, 0xBF,
41400x80, 0xF4, 0x02, 0xF2, 0x0E, 0xC0, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x02, 0xF0,
41410x0B, 0xC0, 0x2E, 0x40, 0xFB, 0x00, 0xBC, 0x02, 0x70, 0x03, 0xC8, 0x17, 0x00,
41420x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA0, 0x5F, 0x00, 0x7F,
41430x41, 0xFC, 0x85, 0xF0, 0x1B, 0xC0, 0x5C, 0x02, 0xAF, 0x14, 0xCC, 0x04, 0xF0,
41440xC3, 0xC0, 0x0C, 0x04, 0xB3, 0x10, 0xCC, 0x0C, 0x30, 0x8B, 0xC0, 0x3F, 0x00,
41450xB3, 0x14, 0xCC, 0x53, 0x30, 0x0B, 0xC0, 0x0C, 0x00, 0x0E, 0x00, 0x00, 0x00,
41460x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x57, 0x00, 0x9D, 0x01, 0x74, 0x05, 0xD1,
41470x15, 0x44, 0x14, 0x21, 0xFD, 0x03, 0x44, 0x10, 0xD0, 0xE1, 0x00, 0x84, 0x01,
41480xAB, 0x06, 0x44, 0x00, 0x10, 0xE9, 0x40, 0x77, 0x00, 0xB5, 0x06, 0xD4, 0x0F,
41490x10, 0x09, 0x40, 0x04, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41500x11, 0xA0, 0x33, 0x00, 0x8D, 0x00, 0x34, 0x02, 0xD0, 0x09, 0x40, 0x20, 0x20,
41510xCD, 0x00, 0x16, 0x40, 0xD2, 0x01, 0x50, 0x04, 0x44, 0x81, 0x10, 0x05, 0x10,
41520x10, 0x00, 0x40, 0x33, 0x00, 0xC1, 0x10, 0x04, 0x03, 0xD0, 0x48, 0x41, 0x44,
41530x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xA8, 0x35, 0x01,
41540x9D, 0x04, 0x74, 0x02, 0xD0, 0x85, 0x40, 0x24, 0x00, 0xDD, 0x00, 0x55, 0x04,
41550xD0, 0x01, 0x46, 0x64, 0x00, 0x99, 0x48, 0x44, 0x04, 0x10, 0x31, 0x48, 0x37,
41560x00, 0xC5, 0x00, 0x54, 0x03, 0xD0, 0x09, 0x40, 0x0C, 0x20, 0x06, 0x00, 0x00,
41570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xA7, 0x01, 0xDF, 0x01, 0x7C, 0x27,
41580xF0, 0x0D, 0xD0, 0x74, 0x12, 0x8F, 0x00, 0x5C, 0x44, 0xF0, 0x20, 0xC1, 0xC0,
41590x00, 0x93, 0x00, 0x4C, 0x14, 0x34, 0x1D, 0xC0, 0x37, 0x00, 0x93, 0x80, 0x4C,
41600x03, 0xF4, 0x39, 0xD0, 0x08, 0x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41610x00, 0x07, 0x80, 0x6D, 0x00, 0xBF, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xC8, 0x3F,
41620x00, 0xF8, 0x10, 0xEC, 0x00, 0xF0, 0x23, 0xC0, 0x0F, 0x00, 0xBF, 0x00, 0xFC,
41630x40, 0xF0, 0x0F, 0xC0, 0x3B, 0x10, 0x9F, 0x09, 0xB8, 0x83, 0x30, 0x3B, 0xC0,
41640x1F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x25,
41650x00, 0x9F, 0x40, 0x7C, 0x02, 0xF0, 0x0D, 0xC0, 0x27, 0x00, 0xDF, 0x80, 0x4C,
41660x00, 0x32, 0x01, 0xD0, 0x8C, 0x00, 0x93, 0x00, 0x4C, 0x00, 0xF0, 0x25, 0xC0,
41670x34, 0x00, 0xD3, 0x04, 0x4D, 0x03, 0xF0, 0x28, 0xC0, 0x0B, 0x20, 0x04, 0x00,
41680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xA0, 0x24, 0x00, 0x9C, 0x00, 0x70,
41690x02, 0xD0, 0x0C, 0x60, 0x67, 0x00, 0xDD, 0x03, 0x40, 0x2C, 0x10, 0x03, 0x40,
41700x64, 0x00, 0x91, 0x0F, 0x6D, 0x08, 0x91, 0xB5, 0x40, 0xBC, 0x40, 0xD5, 0x13,
41710xC4, 0x03, 0xC0, 0x49, 0x40, 0x4F, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
41720x00, 0x00, 0x07, 0xA0, 0x22, 0x20, 0x4D, 0x80, 0x34, 0x02, 0xC0, 0x04, 0x48,
41730x63, 0x00, 0x8D, 0x01, 0x24, 0x04, 0x10, 0x08, 0x42, 0x40, 0x00, 0x91, 0x01,
41740x44, 0x04, 0xD1, 0x18, 0x40, 0xB0, 0x04, 0xC1, 0x02, 0x04, 0x03, 0xD0, 0x08,
41750x40, 0x1F, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80,
41760x68, 0x00, 0xED, 0x21, 0xB4, 0x06, 0xD0, 0x16, 0x40, 0x6B, 0x06, 0xED, 0x11,
41770xA5, 0x44, 0x14, 0x98, 0x50, 0x6C, 0x04, 0xE1, 0x09, 0xA4, 0x04, 0x90, 0x1E,
41780x40, 0x78, 0x02, 0xE5, 0x21, 0x84, 0x07, 0xD1, 0x16, 0x40, 0x13, 0x00, 0x02,
41790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x10, 0x30, 0x00, 0x8F, 0x00,
41800x3C, 0x02, 0xF0, 0x04, 0x40, 0x23, 0x0A, 0xCF, 0x00, 0x6C, 0x00, 0x32, 0x88,
41810xC8, 0x80, 0x40, 0xC3, 0x08, 0x0C, 0x40, 0xF2, 0x8D, 0xD1, 0x30, 0x02, 0xC3,
41820x00, 0x0D, 0x03, 0xF0, 0x04, 0xC0, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
41830x00, 0x00, 0x00, 0x02, 0xB8, 0x3D, 0x00, 0xBF, 0x80, 0xF0, 0x02, 0xF0, 0x07,
41840xC0, 0x2F, 0x0A, 0xFF, 0x02, 0xDC, 0x00, 0xF0, 0x8B, 0xD0, 0x3B, 0x42, 0xFF,
41850x08, 0xF4, 0x00, 0xB0, 0x8F, 0xC0, 0x3B, 0x02, 0xFF, 0x00, 0xFC, 0x43, 0xF0,
41860x87, 0xC0, 0x0B, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
41870xA0, 0x67, 0x00, 0xD3, 0x20, 0x7C, 0x07, 0x34, 0x05, 0xC0, 0x70, 0x00, 0x93,
41880x06, 0x5C, 0x00, 0xF0, 0x81, 0xD0, 0x00, 0x10, 0x93, 0x86, 0x4D, 0x04, 0x30,
41890x0D, 0xC0, 0x37, 0x00, 0xD3, 0x04, 0x0D, 0x13, 0x31, 0x05, 0xC0, 0x54, 0x00,
41900x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x88, 0x29, 0x00, 0xE1,
41910x00, 0xB4, 0x03, 0x10, 0x06, 0xC0, 0x3A, 0x10, 0xE1, 0x00, 0x84, 0x02, 0xD0,
41920x43, 0x40, 0x29, 0x00, 0xEB, 0x08, 0x84, 0x01, 0x51, 0x0E, 0x40, 0x3B, 0x01,
41930xF1, 0x08, 0x94, 0x43, 0x10, 0x0F, 0xC0, 0x4A, 0x20, 0x06, 0x00, 0x00, 0x00,
41940x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x6D, 0x00, 0xA1, 0x01, 0xF6, 0x06, 0x10,
41950x16, 0x40, 0x6C, 0x10, 0xF0, 0x01, 0xB4, 0x04, 0xD0, 0x3A, 0x40, 0x4C, 0x00,
41960xC1, 0x01, 0xC6, 0x04, 0x10, 0x3E, 0x40, 0x73, 0x02, 0xE9, 0x01, 0x84, 0x03,
41970x10, 0x1E, 0x40, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
41980x12, 0x28, 0x63, 0x00, 0x81, 0x04, 0x36, 0x16, 0x10, 0x14, 0x44, 0x22, 0x02,
41990xC1, 0x00, 0x24, 0x0B, 0xD1, 0x0D, 0x41, 0x30, 0x08, 0xC9, 0x00, 0x04, 0x1F,
42000x50, 0x1D, 0x40, 0x33, 0x10, 0xD9, 0x00, 0x15, 0x03, 0x10, 0xEC, 0x40, 0x4A,
42010x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xA8, 0x1D, 0x01,
42020x73, 0x80, 0xFC, 0x05, 0x33, 0xE7, 0xCC, 0xDC, 0x40, 0x53, 0xC0, 0xBC, 0x15,
42030xF1, 0x27, 0xD0, 0x1C, 0x08, 0x53, 0x00, 0xCD, 0x05, 0x32, 0x17, 0xC0, 0x17,
42040x40, 0x5B, 0x00, 0x4C, 0x01, 0x30, 0x37, 0xC0, 0x5C, 0x20, 0x06, 0x00, 0x00,
42050x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x07, 0x54, 0x1F, 0x00, 0x7C, 0x20,
42060xF0, 0x01, 0xC0, 0x07, 0x24, 0x1F, 0x02, 0x5C, 0x48, 0xF0, 0x01, 0xC0, 0x03,
42070x00, 0x1F, 0x00, 0x7C, 0x20, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x17, 0x20, 0x7C,
42080x80, 0xF0, 0x00, 0xC0, 0x4B, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42090x00, 0x10, 0x08, 0x27, 0x00, 0x9F, 0x00, 0x7C, 0x02, 0xF0, 0x09, 0xC0, 0x24,
42100x00, 0x9F, 0x05, 0x4C, 0x0E, 0x30, 0x09, 0xC0, 0x64, 0x20, 0x8A, 0x01, 0x6C,
42110x02, 0xF0, 0x09, 0xC8, 0x60, 0x00, 0x93, 0x00, 0x4C, 0x22, 0xF0, 0x89, 0xC2,
42120x40, 0x20, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x26,
42130x00, 0x9D, 0x00, 0x70, 0x02, 0xD0, 0x09, 0x40, 0x25, 0x00, 0x8C, 0x00, 0x44,
42140x12, 0x10, 0x09, 0x40, 0x65, 0x08, 0x9B, 0x01, 0x6C, 0x02, 0xD0, 0xA9, 0x41,
42150xE4, 0x01, 0x91, 0x02, 0x45, 0x06, 0xD0, 0x19, 0x40, 0x04, 0x00, 0x08, 0x00,
42160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xA0, 0x24, 0x00, 0x9D, 0x20, 0x70,
42170x03, 0xD0, 0x0C, 0x40, 0x34, 0x00, 0x9C, 0x10, 0x44, 0x02, 0x14, 0x09, 0x40,
42180x24, 0x02, 0x9D, 0x48, 0x65, 0x12, 0xD2, 0x09, 0x40, 0x24, 0x42, 0x91, 0x14,
42190x44, 0x82, 0xD0, 0x0D, 0x44, 0x60, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
42200x00, 0x00, 0x10, 0x20, 0xA0, 0x10, 0x8D, 0x02, 0x34, 0x0A, 0xD0, 0x28, 0x40,
42210x21, 0x10, 0x9D, 0x14, 0x46, 0x02, 0x18, 0x48, 0x45, 0x21, 0x45, 0xCD, 0x14,
42220x24, 0x02, 0xD0, 0x48, 0x71, 0x20, 0x85, 0x81, 0x14, 0x04, 0x52, 0xD0, 0x48,
42230x41, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xB0,
42240x06, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0xD0, 0x00, 0x40, 0x04, 0x10, 0x1F, 0x04,
42250x4C, 0x00, 0x30, 0x41, 0xC4, 0x14, 0x21, 0x1F, 0x44, 0x6C, 0x00, 0xF1, 0x41,
42260xC0, 0x04, 0x01, 0x13, 0xC4, 0x4C, 0x10, 0xF0, 0x41, 0xD0, 0x74, 0xC0, 0x0A,
42270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xB8, 0x7B, 0x00, 0xFF, 0x01,
42280xBC, 0x06, 0xF0, 0x1B, 0xC0, 0x2F, 0x05, 0xAE, 0x00, 0xFD, 0x52, 0xF1, 0x4F,
42290xC1, 0x2F, 0x45, 0xBB, 0x14, 0xBC, 0x52, 0xF0, 0x4B, 0xC1, 0x27, 0x40, 0xBF,
42300x14, 0x7C, 0x02, 0xF2, 0x4B, 0xC1, 0x67, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00,
42310x00, 0x00, 0x00, 0x19, 0xA0, 0xA7, 0x00, 0x93, 0x02, 0x4C, 0x02, 0x30, 0x28,
42320xC0, 0xAF, 0x00, 0xAF, 0x01, 0xDC, 0x0A, 0xF0, 0x39, 0xC0, 0xED, 0x05, 0xB3,
42330x03, 0xDC, 0x02, 0x32, 0x5B, 0xC1, 0x2C, 0x00, 0xB3, 0x01, 0xCC, 0x06, 0x30,
42340x6A, 0xC0, 0x60, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C,
42350x08, 0x47, 0x01, 0x1B, 0x01, 0x6C, 0x14, 0xB0, 0x51, 0x40, 0x47, 0x00, 0x1D,
42360x02, 0x45, 0x04, 0xD1, 0x10, 0x40, 0xC0, 0x00, 0x11, 0x01, 0x45, 0x14, 0x10,
42370x75, 0xC0, 0x07, 0x10, 0x11, 0x05, 0x54, 0x00, 0x10, 0x61, 0x40, 0x70, 0x20,
42380x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA0, 0x23, 0x00, 0x81,
42390x20, 0x04, 0x42, 0x10, 0x08, 0x40, 0x23, 0x08, 0x8D, 0x02, 0x14, 0x12, 0xD0,
42400x28, 0x40, 0x21, 0x00, 0x85, 0x02, 0x14, 0x46, 0x10, 0x08, 0x49, 0x21, 0x00,
42410x81, 0x12, 0x04, 0x0A, 0x10, 0x28, 0x40, 0x40, 0x80, 0x0E, 0x00, 0x00, 0x00,
42420x00, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x21, 0x00, 0x89, 0x00, 0x24, 0x42, 0x90,
42430x09, 0x40, 0x27, 0x00, 0x9D, 0x04, 0x44, 0x12, 0xD0, 0x19, 0x40, 0xA4, 0x00,
42440x95, 0x00, 0x44, 0x02, 0x10, 0x09, 0x40, 0x27, 0x00, 0x90, 0x04, 0x54, 0x02,
42450x10, 0x39, 0x40, 0x60, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42460x05, 0xA8, 0x2F, 0x02, 0xB3, 0x00, 0xCC, 0x0A, 0x30, 0x0B, 0xC0, 0xA7, 0x04,
42470x9F, 0x01, 0x5C, 0x02, 0xF0, 0x29, 0xC8, 0x25, 0x40, 0x97, 0x00, 0x5C, 0x0A,
42480x34, 0x09, 0xC8, 0x25, 0x40, 0x93, 0x00, 0x4D, 0x02, 0x34, 0x29, 0xD0, 0x14,
42490x20, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x80, 0x65, 0x00,
42500x9F, 0x03, 0x7C, 0x0A, 0xE0, 0x09, 0xC0, 0xA7, 0x00, 0x8F, 0x00, 0x7C, 0x02,
42510xF0, 0x08, 0xC4, 0x27, 0x01, 0x8B, 0x45, 0x7C, 0x02, 0xF0, 0x98, 0xE0, 0x21,
42520x00, 0x9F, 0x00, 0x3C, 0x02, 0xF0, 0x09, 0xC0, 0x53, 0x00, 0x06, 0x00, 0x00,
42530x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x05, 0x00, 0x13, 0x00, 0x4D, 0x08,
42540xF0, 0x01, 0xC0, 0x04, 0x00, 0x13, 0x10, 0x6C, 0x00, 0xF0, 0x01, 0xD0, 0x04,
42550x40, 0x13, 0x00, 0x6C, 0x00, 0x30, 0x01, 0xC0, 0x04, 0x04, 0x03, 0x80, 0x7C,
42560x00, 0x34, 0x20, 0xC0, 0x50, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42570x00, 0x14, 0xA0, 0x14, 0x10, 0x51, 0x00, 0x44, 0x01, 0xD0, 0x05, 0x40, 0x54,
42580x01, 0x75, 0x02, 0xC4, 0x05, 0xD0, 0x05, 0x50, 0xD8, 0x40, 0x75, 0x00, 0xC4,
42590x11, 0x10, 0x47, 0x50, 0x1C, 0x00, 0x71, 0x00, 0x74, 0x01, 0x10, 0x15, 0x40,
42600x50, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xA0, 0x32,
42610x00, 0xC1, 0x00, 0x04, 0x03, 0xD0, 0x0C, 0x40, 0x20, 0x00, 0xC1, 0x0A, 0x24,
42620x26, 0xD0, 0x0C, 0x44, 0xF0, 0x86, 0xC4, 0x09, 0x65, 0x07, 0x50, 0x0C, 0x00,
42630xF0, 0x00, 0xC5, 0x20, 0x34, 0x02, 0x10, 0x1C, 0x40, 0x50, 0x00, 0x0A, 0x00,
42640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x80, 0x3C, 0x01, 0xF1, 0x04, 0x84,
42650xA3, 0xD0, 0x1F, 0x40, 0x78, 0x00, 0x25, 0x00, 0x84, 0x00, 0xD0, 0x4E, 0x40,
42660x28, 0x00, 0x65, 0x00, 0x85, 0x13, 0x50, 0x0A, 0x40, 0x90, 0x00, 0xA5, 0x00,
42670xB0, 0x02, 0x10, 0x0F, 0x41, 0x14, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
42680x00, 0x00, 0x15, 0x10, 0x78, 0x00, 0xE3, 0x07, 0x8C, 0x17, 0xF0, 0x7E, 0xD0,
42690x6C, 0x00, 0xA3, 0x01, 0xAC, 0x05, 0xF0, 0x3E, 0xC1, 0x68, 0x00, 0x77, 0x01,
42700xED, 0x0F, 0x74, 0x13, 0x84, 0x48, 0x00, 0xA7, 0x01, 0x3C, 0x06, 0x30, 0x1E,
42710xC0, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xB8,
42720x31, 0x40, 0xCF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC0, 0x3F, 0x00, 0x9F, 0x00,
42730xFD, 0x00, 0xF0, 0x2D, 0xC0, 0x27, 0x02, 0x5D, 0x00, 0x7C, 0x03, 0x90, 0x01,
42740xC0, 0x07, 0x40, 0x1B, 0x00, 0x7C, 0x02, 0xF0, 0x0D, 0xD0, 0x43, 0x60, 0x06,
42750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA0, 0x7F, 0x04, 0xF3, 0x01,
42760xCC, 0x27, 0x3C, 0x1F, 0xC0, 0x7B, 0x00, 0x37, 0x01, 0xDC, 0x06, 0x72, 0x1F,
42770xC0, 0x6D, 0x00, 0xF7, 0x81, 0xCC, 0x06, 0x31, 0x1B, 0xC0, 0x4C, 0x10, 0xE3,
42780x01, 0xCC, 0x06, 0xF0, 0x1F, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00,
42790x00, 0x00, 0x00, 0x15, 0x88, 0x39, 0x00, 0xE1, 0x00, 0xAC, 0x23, 0x18, 0x4E,
42800x40, 0x3B, 0x00, 0x21, 0x04, 0x84, 0x80, 0xD0, 0x4E, 0x40, 0x2C, 0x00, 0x61,
42810x02, 0x8C, 0x02, 0x10, 0x0A, 0x40, 0x09, 0x00, 0xAB, 0x00, 0x94, 0x02, 0xD0,
42820x0E, 0x40, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
42830x00, 0x79, 0x00, 0xE1, 0x11, 0x84, 0x07, 0x12, 0x1E, 0x40, 0x3B, 0x00, 0x05,
42840x00, 0x90, 0x00, 0x50, 0x0E, 0x44, 0x09, 0x04, 0x3D, 0x10, 0x84, 0x03, 0x10,
42850x02, 0x41, 0x0A, 0x00, 0xA1, 0x00, 0x84, 0x02, 0xD0, 0x2E, 0x40, 0x03, 0x00,
42860x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x33, 0x40, 0xC1,
42870x10, 0x24, 0x03, 0x11, 0x8C, 0x40, 0x33, 0x00, 0x01, 0x00, 0x04, 0x0C, 0xD0,
42880x8C, 0x40, 0x80, 0x01, 0x09, 0x40, 0x24, 0x0F, 0x11, 0x11, 0x44, 0x03, 0x00,
42890x09, 0x00, 0x14, 0x02, 0xD0, 0x0C, 0x40, 0x13, 0x20, 0x0C, 0x00, 0x00, 0x00,
42900x00, 0x00, 0x00, 0x00, 0x1D, 0xA8, 0x35, 0x00, 0xD3, 0x00, 0x0C, 0x03, 0x30,
42910x3D, 0xC0, 0x37, 0x00, 0x87, 0x00, 0x5C, 0x1E, 0x70, 0x1F, 0xC0, 0x4D, 0x00,
42920x9F, 0x00, 0xCD, 0x13, 0x34, 0x09, 0xC0, 0x06, 0x08, 0xD3, 0x00, 0x4C, 0x03,
42930xF3, 0x0D, 0xC4, 0x57, 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42940x01, 0x00, 0x37, 0x00, 0xDF, 0x00, 0x7C, 0x03, 0xF0, 0x0D, 0xC1, 0x37, 0x00,
42950x1F, 0x08, 0x7C, 0x40, 0xF0, 0x0D, 0xC4, 0x83, 0x00, 0x47, 0x00, 0x5C, 0x00,
42960xF0, 0x01, 0xC0, 0x85, 0x10, 0xCF, 0x00, 0x3C, 0x03, 0xF0, 0x8D, 0xC4, 0x07,
42970x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x3F, 0x00,
42980xFF, 0x00, 0xCC, 0x03, 0x30, 0x0F, 0xC0, 0x3F, 0x00, 0xB3, 0x40, 0xEC, 0x00,
42990x30, 0x0D, 0xC0, 0x4D, 0x00, 0xB3, 0x02, 0xCC, 0x43, 0x10, 0x01, 0x40, 0x04,
43000x00, 0xBF, 0x01, 0xCC, 0x16, 0x30, 0x0F, 0xC0, 0x03, 0x22, 0x0C, 0x00, 0x00,
43010x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x20, 0x36, 0x00, 0xCD, 0x00, 0x44, 0x03,
43020x14, 0x0D, 0x44, 0x73, 0x02, 0x91, 0x01, 0x04, 0x04, 0x14, 0x0D, 0x50, 0x04,
43030x86, 0x51, 0x02, 0x6C, 0x3C, 0x50, 0x31, 0x40, 0xC5, 0x01, 0x1D, 0x01, 0x44,
43040x02, 0xB0, 0x09, 0x40, 0x07, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43050x00, 0x01, 0xA0, 0x34, 0x00, 0xDD, 0x00, 0x44, 0x03, 0x10, 0x0D, 0x40, 0x37,
43060x00, 0x11, 0x01, 0x64, 0x06, 0x10, 0x0C, 0x4A, 0x04, 0x00, 0x95, 0x00, 0x04,
43070x02, 0x50, 0x39, 0x40, 0x45, 0x10, 0xDD, 0x04, 0x40, 0x03, 0x11, 0x1D, 0x40,
43080x07, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x30,
43090x00, 0xDD, 0x00, 0x45, 0x03, 0x10, 0x0C, 0x40, 0x37, 0x40, 0x01, 0x00, 0x44,
43100x00, 0x10, 0x0C, 0x40, 0x01, 0x80, 0x41, 0x00, 0x24, 0x00, 0x40, 0x00, 0x40,
43110x01, 0x00, 0xCD, 0x00, 0x05, 0x03, 0x80, 0x0C, 0x40, 0x43, 0x80, 0x00, 0x00,
43120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB0, 0x3A, 0x10, 0xEF, 0x00, 0x8C,
43130x03, 0x30, 0x0F, 0x40, 0x37, 0x00, 0x13, 0x00, 0x6C, 0x00, 0x38, 0x0F, 0xD0,
43140x04, 0x00, 0x95, 0x00, 0x0D, 0x03, 0x61, 0x01, 0x80, 0x05, 0x20, 0x9F, 0x00,
43150x4D, 0x02, 0x30, 0x0D, 0xC0, 0x03, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
43160x00, 0x00, 0x05, 0xB8, 0x3F, 0x00, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0,
43170x3F, 0x20, 0x3F, 0x00, 0xFC, 0x00, 0xF1, 0x0F, 0xC0, 0x0E, 0x00, 0x2E, 0x00,
43180xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x02, 0xF1, 0x0F,
43190xC0, 0x17, 0x60, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1,
43200x82, 0xC0, 0x0E, 0x02, 0x3B, 0x08, 0xE0, 0x28, 0xB0, 0x83, 0xE0, 0x0E, 0x82,
43210x38, 0x08, 0xEC, 0x20, 0x90, 0x83, 0xC8, 0x0E, 0x02, 0x1B, 0x08, 0xEC, 0x28,
43220xA8, 0x83, 0xA0, 0x0E, 0x02, 0x3A, 0x08, 0xCC, 0x20, 0x98, 0x03, 0x8C, 0x00,
43230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x22, 0xA0, 0x8E, 0xA0,
43240x3A, 0x02, 0xEA, 0x08, 0xA0, 0x23, 0x20, 0x8E, 0xA0, 0x3B, 0x02, 0xEA, 0x08,
43250xA8, 0x23, 0xA0, 0x8E, 0xA0, 0x32, 0x02, 0x4A, 0x08, 0xA8, 0x23, 0x88, 0x8E,
43260x80, 0x3A, 0x02, 0xCA, 0x08, 0xA8, 0x03, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00,
43270x00, 0x00, 0x00, 0x00, 0x81, 0x40, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x18,
43280x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04,
43290x01, 0x12, 0x04, 0x48, 0x18, 0x20, 0x41, 0xA0, 0x04, 0x01, 0x12, 0x04, 0x48,
43300x10, 0x20, 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43310x21, 0x00, 0x80, 0x02, 0x80, 0x1A, 0x00, 0x68, 0x00, 0xA0, 0x01, 0xA0, 0x0E,
43320x20, 0x1A, 0x00, 0x68, 0x00, 0xA0, 0x01, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x28,
43330x10, 0xA8, 0x01, 0x88, 0x06, 0x80, 0x1A, 0x00, 0x68, 0x00, 0x88, 0x01, 0x04,
43340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x12, 0xA0, 0x4E,
43350x80, 0x3A, 0x01, 0xEA, 0x14, 0xA0, 0x13, 0xA0, 0x4A, 0x80, 0x3A, 0x01, 0xEA,
43360x04, 0xA8, 0x13, 0xA0, 0x4E, 0x82, 0x3A, 0x01, 0xEA, 0x04, 0xA0, 0x13, 0x80,
43370x4A, 0x80, 0x3A, 0x01, 0xEA, 0x0C, 0xA8, 0x03, 0x8C, 0x0A, 0x00, 0x00, 0x00,
43380x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60,
43390x00, 0x88, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00,
43400x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00,
43410x60, 0x00, 0x80, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43420x00, 0xA3, 0x20, 0x20, 0x04, 0x80, 0x10, 0x01, 0x42, 0x00, 0x08, 0x11, 0x20,
43430x04, 0x80, 0x10, 0x01, 0x42, 0x04, 0x08, 0x11, 0x20, 0xC0, 0x80, 0x10, 0x01,
43440x42, 0x00, 0x00, 0x11, 0x00, 0x04, 0x80, 0x10, 0x01, 0x42, 0x04, 0x08, 0x01,
43450x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xD2, 0xA0,
43460x02, 0x01, 0x0A, 0x05, 0x2A, 0x10, 0xA8, 0x50, 0x80, 0x02, 0x01, 0x0A, 0x07,
43470x2A, 0x1C, 0xA8, 0x50, 0xA0, 0x42, 0x83, 0x0A, 0x05, 0x2A, 0x10, 0xA0, 0x50,
43480x88, 0x02, 0x01, 0x0A, 0x05, 0x2A, 0x3C, 0xA0, 0x00, 0x8C, 0x0A, 0x00, 0x00,
43490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x30, 0x80, 0xC8, 0x00, 0xAA, 0x03,
43500xA8, 0x0E, 0x20, 0x38, 0x80, 0xE0, 0x00, 0xAA, 0x07, 0x08, 0x1E, 0xA0, 0x32,
43510x80, 0xCA, 0x00, 0x22, 0x03, 0xA8, 0x0C, 0xA0, 0x3A, 0xA0, 0xCA, 0x00, 0x2A,
43520x03, 0xA8, 0x0C, 0x20, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43530x00, 0x00, 0x21, 0x72, 0x00, 0x48, 0x20, 0x18, 0x80, 0x22, 0x00, 0x00, 0x00,
43540x08, 0x40, 0x20, 0x08, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x82, 0x00, 0x20,
43550x00, 0x20, 0x04, 0x80, 0x00, 0x08, 0x42, 0x00, 0x18, 0x00, 0x20, 0x08, 0x00,
43560x82, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x16,
43570x40, 0x18, 0x00, 0x41, 0x00, 0x04, 0x01, 0x1A, 0x04, 0x40, 0x10, 0x20, 0x41,
43580x80, 0x04, 0x01, 0x10, 0x04, 0x40, 0x10, 0x00, 0x61, 0x00, 0x04, 0x01, 0x10,
43590x04, 0x08, 0x10, 0x00, 0x41, 0x00, 0x04, 0x01, 0x10, 0x82, 0x8C, 0x0A, 0x00,
43600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x02, 0xA0, 0x06, 0x80, 0x9A,
43610x00, 0x6A, 0x02, 0x28, 0x09, 0xA0, 0x24, 0x00, 0x9B, 0x00, 0x48, 0x02, 0xA8,
43620x01, 0xA0, 0x06, 0x00, 0x1A, 0x00, 0x6A, 0x00, 0xB8, 0x09, 0xA0, 0x06, 0xA0,
43630x1B, 0x00, 0x6A, 0x00, 0xA8, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43640x00, 0x00, 0x00, 0xA3, 0x00, 0xC0, 0x46, 0x00, 0x1A, 0x00, 0x6C, 0x00, 0xBC,
43650x01, 0x90, 0x46, 0x00, 0x1B, 0x00, 0x6C, 0x00, 0xA8, 0x01, 0xC0, 0x06, 0x20,
43660x1B, 0x80, 0x6C, 0x04, 0xA0, 0x01, 0xE8, 0x46, 0x00, 0x1A, 0x00, 0x6C, 0x00,
43670x32, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2,
43680x42, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2, 0x10, 0x08, 0x43, 0x20, 0x08, 0x81,
43690x30, 0x04, 0xC2, 0x10, 0x18, 0x43, 0x28, 0x0C, 0x01, 0x30, 0x04, 0xC2, 0x30,
43700x08, 0x43, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2, 0x10, 0x08, 0x03, 0x8C, 0x0A,
43710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x0C, 0x00,
43720x30, 0x00, 0xC0, 0x04, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x80, 0x00,
43730x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x08,
43740x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
43750x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x80, 0x0C, 0x83, 0x32, 0x04, 0xC8, 0x34,
43760x28, 0x43, 0x80, 0x0C, 0x83, 0x32, 0x04, 0xC8, 0x10, 0x20, 0x43, 0x80, 0x0C,
43770x01, 0x32, 0x04, 0xC8, 0x10, 0x28, 0x43, 0x80, 0x0C, 0x83, 0x32, 0x04, 0xC8,
43780x10, 0x20, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43790xA3, 0x42, 0xA0, 0x06, 0x83, 0x1A, 0x04, 0x6A, 0x30, 0xA8, 0x41, 0xA0, 0x06,
43800x83, 0x1A, 0x04, 0x6A, 0x10, 0xA8, 0x41, 0xA0, 0x06, 0x81, 0x1A, 0x04, 0x6A,
43810x30, 0xA8, 0x41, 0x80, 0x0E, 0x83, 0x0A, 0x04, 0x6A, 0x10, 0xA8, 0x01, 0x8C,
43820x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x42, 0x00, 0x04,
43830x01, 0x30, 0x04, 0x40, 0x10, 0x00, 0x41, 0x00, 0x0C, 0x01, 0x30, 0x04, 0xC0,
43840x10, 0x00, 0x41, 0x00, 0x04, 0x01, 0x10, 0x04, 0x40, 0x10, 0x00, 0x43, 0x00,
43850x00, 0x01, 0x30, 0x04, 0x40, 0x10, 0x00, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00,
43860x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x4A, 0x20, 0x06, 0x81, 0x30, 0x04, 0x62,
43870x12, 0x08, 0x4B, 0x20, 0x06, 0x81, 0xB0, 0x04, 0x62, 0x12, 0x88, 0x41, 0x20,
43880x26, 0x81, 0x18, 0x04, 0x62, 0x10, 0x08, 0x43, 0x00, 0x06, 0x81, 0x30, 0x04,
43890x62, 0x12, 0x88, 0x01, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43900x00, 0x23, 0x06, 0xA0, 0x1A, 0x00, 0x62, 0x00, 0xAA, 0x01, 0x20, 0x04, 0xA0,
43910x18, 0x00, 0x62, 0x00, 0x8A, 0x01, 0xA0, 0x06, 0xA0, 0x1A, 0x80, 0x6A, 0x80,
43920xAA, 0x01, 0x20, 0x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0xAA, 0x01, 0xA8, 0x02,
43930x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x60, 0x80,
43940x82, 0x01, 0x2A, 0x06, 0x28, 0x18, 0xA0, 0x60, 0x80, 0x82, 0x01, 0x0A, 0x06,
43950x28, 0x18, 0xA0, 0x60, 0x00, 0x82, 0x01, 0x0A, 0x06, 0x28, 0x18, 0xA0, 0x60,
43960xA0, 0x82, 0x01, 0x0A, 0x06, 0x28, 0x18, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x00,
43970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x48, 0x80, 0x00, 0x01, 0x02, 0x04,
43980x48, 0x12, 0x20, 0x49, 0xA0, 0x00, 0x01, 0x92, 0x04, 0x48, 0x12, 0x28, 0x41,
43990x80, 0x20, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x88, 0x00, 0x01, 0x02,
44000x04, 0x08, 0x12, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44010x00, 0x00, 0xA3, 0x62, 0xC0, 0x8A, 0x01, 0x01, 0x06, 0xAC, 0x18, 0xB0, 0x63,
44020xC0, 0x8A, 0x01, 0x2B, 0x06, 0x8C, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01, 0x2A,
44030x06, 0xAC, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01, 0x2B, 0x06, 0x8C, 0x18, 0xB0,
44040x02, 0x8C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x62,
44050xA0, 0x8E, 0x01, 0x3B, 0x06, 0xEA, 0x18, 0xA8, 0x63, 0xA0, 0x8E, 0x81, 0x3A,
44060x06, 0x68, 0x18, 0x88, 0x63, 0xA0, 0x8E, 0x81, 0x3A, 0x06, 0xEA, 0x18, 0x98,
44070x63, 0x20, 0x8E, 0x81, 0x3B, 0x06, 0xCA, 0x18, 0x88, 0x03, 0x8C, 0x00, 0x00,
44080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x62, 0x80, 0x8E, 0x01, 0x3A,
44090x06, 0xEC, 0x18, 0xA0, 0x61, 0xC0, 0x8E, 0x01, 0x3A, 0x06, 0xE8, 0x18, 0xA0,
44100x63, 0xE0, 0x8E, 0x01, 0x1B, 0x06, 0xE0, 0x18, 0xA0, 0x63, 0xC0, 0x8E, 0x01,
44110x3A, 0x06, 0xEE, 0x18, 0xB0, 0x03, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44120x00, 0x00, 0x00, 0xA2, 0x62, 0xA0, 0x8E, 0x81, 0x32, 0x06, 0xEA, 0x18, 0x08,
44130x63, 0xA0, 0x8E, 0xA1, 0x38, 0x86, 0xEA, 0x18, 0x28, 0x61, 0x20, 0x8E, 0x81,
44140x32, 0x86, 0xE8, 0x18, 0xA8, 0x63, 0xA0, 0x8E, 0xA1, 0x30, 0x06, 0xEA, 0x18,
44150xA8, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44160x40, 0x80, 0x04, 0x01, 0x1A, 0x84, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04, 0x01,
44170x32, 0x04, 0x48, 0x10, 0x22, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x10,
44180x20, 0x41, 0x88, 0x04, 0x01, 0x3A, 0x04, 0x48, 0x10, 0x20, 0x01, 0x00, 0x00,
44190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x80, 0x86, 0x81,
44200x1A, 0x06, 0x68, 0x18, 0xA0, 0x61, 0x80, 0x86, 0x81, 0x18, 0x06, 0x68, 0x18,
44210xA0, 0x61, 0x80, 0x84, 0x01, 0x1A, 0x06, 0x68, 0x18, 0xA8, 0x61, 0x80, 0x86,
44220x81, 0x1A, 0x06, 0x6A, 0x18, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44230x00, 0x00, 0x00, 0x00, 0xA2, 0x02, 0xA0, 0x0E, 0x80, 0x3A, 0x00, 0xCA, 0x00,
44240x22, 0x03, 0xA0, 0x0C, 0x80, 0x32, 0x00, 0xCA, 0x00, 0x28, 0x03, 0x80, 0x0E,
44250x80, 0x2A, 0x00, 0xEA, 0x00, 0xA8, 0x03, 0xA0, 0x0E, 0x80, 0x3A, 0x00, 0xE8,
44260x00, 0xA8, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44270xA2, 0x42, 0x00, 0x06, 0x01, 0x08, 0x04, 0x40, 0x10, 0x08, 0x41, 0x00, 0x04,
44280x01, 0x00, 0x0C, 0x40, 0x10, 0x80, 0x41, 0x00, 0x06, 0x01, 0x18, 0x04, 0x60,
44290x10, 0x80, 0x41, 0x00, 0x04, 0x01, 0x18, 0x04, 0x60, 0x10, 0x80, 0x01, 0x88,
44300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x42, 0x20, 0x04,
44310x81, 0x10, 0x04, 0x22, 0x10, 0x88, 0x51, 0x20, 0x06, 0x81, 0x18, 0x05, 0x62,
44320x10, 0x08, 0x41, 0x00, 0x04, 0x81, 0x10, 0x04, 0x42, 0x10, 0x0A, 0x41, 0x20,
44330x06, 0x81, 0x10, 0x04, 0x40, 0x10, 0x08, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00,
44340x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x42, 0xA0, 0x02, 0x01, 0x0A, 0x0C, 0xAA,
44350x30, 0xA8, 0xC2, 0xA0, 0x0A, 0x03, 0x2A, 0x04, 0xAA, 0x30, 0xA8, 0x42, 0xA0,
44360x02, 0x81, 0x0A, 0x04, 0x2A, 0x10, 0xA0, 0xC0, 0xA0, 0x02, 0x21, 0x0A, 0x04,
44370x28, 0x10, 0xA8, 0x00, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44380x00, 0x00, 0x40, 0x80, 0x0A, 0x03, 0x2A, 0x0C, 0xA8, 0x10, 0xA0, 0x52, 0x80,
44390x0A, 0x03, 0x2A, 0x05, 0xA8, 0x30, 0xA0, 0xC2, 0x80, 0x0A, 0x01, 0x2A, 0x0C,
44400xA8, 0x30, 0xA0, 0xC2, 0x80, 0x0A, 0x03, 0x2A, 0x0C, 0xA8, 0x10, 0xA0, 0x02,
44410x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
44420x42, 0x00, 0x08, 0x00, 0x20, 0x00, 0x88, 0x01, 0x00, 0x02, 0x00, 0x08, 0x80,
44430x20, 0x00, 0x88, 0x10, 0x00, 0x42, 0x20, 0x08, 0x01, 0x20, 0x04, 0x82, 0x00,
44440x00, 0x42, 0x00, 0x08, 0x01, 0x20, 0x04, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
44450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x42, 0x40, 0x00, 0x01, 0x01, 0x04,
44460x04, 0x10, 0x10, 0x41, 0x40, 0x44, 0x01, 0x01, 0x04, 0x04, 0x14, 0x10, 0x40,
44470x40, 0x00, 0x01, 0x01, 0x04, 0x00, 0x10, 0x10, 0x50, 0x40, 0x00, 0x01, 0x01,
44480x04, 0x04, 0x10, 0x10, 0x00, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44490x00, 0x00, 0xA2, 0x02, 0xE0, 0x06, 0x80, 0x1B, 0x00, 0x68, 0x00, 0xA8, 0x01,
44500xA0, 0x06, 0x80, 0x1B, 0x00, 0x6E, 0x00, 0xA8, 0x01, 0x80, 0x06, 0x80, 0x1A,
44510x00, 0x6E, 0x00, 0xB8, 0x01, 0xA0, 0x06, 0x80, 0x1B, 0x00, 0x6A, 0x00, 0xA8,
44520x01, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x02,
44530xC0, 0x06, 0x00, 0x3B, 0x00, 0x6C, 0x00, 0xA0, 0x01, 0xC0, 0x06, 0x00, 0x3A,
44540x00, 0x68, 0x00, 0xB0, 0x01, 0xC0, 0x06, 0x00, 0x1A, 0x00, 0x6C, 0x00, 0xA0,
44550x03, 0xC0, 0x06, 0x00, 0x3A, 0x00, 0x4C, 0x00, 0xB0, 0x01, 0x00, 0x00, 0x00,
44560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x80, 0x18,
44570x00, 0xC2, 0x00, 0x08, 0x01, 0x28, 0x0C, 0x80, 0x18, 0x80, 0xC0, 0x00, 0x08,
44580x03, 0x20, 0x0C, 0x82, 0x38, 0x00, 0xC2, 0x00, 0x88, 0x01, 0x20, 0x0C, 0x80,
44590x18, 0x00, 0xC2, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x10, 0x00, 0xC0, 0x02, 0x00,
44610x63, 0x00, 0x2C, 0x00, 0x10, 0x00, 0xC2, 0x00, 0x00, 0x03, 0x00, 0x0C, 0x00,
44620x10, 0x00, 0xC0, 0x02, 0x00, 0x21, 0x00, 0x2C, 0x00, 0x10, 0x00, 0x40, 0x00,
44630x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44640x20, 0x80, 0x8C, 0x82, 0x32, 0x0A, 0xC8, 0x08, 0x20, 0x21, 0x80, 0x8C, 0x82,
44650x32, 0x02, 0x88, 0x28, 0x20, 0xA3, 0x80, 0x8C, 0x02, 0x22, 0x0A, 0xC8, 0x28,
44660x28, 0xA3, 0x80, 0x8C, 0x82, 0x32, 0x0A, 0xC8, 0x08, 0x20, 0x03, 0x00, 0x00,
44670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xA0, 0x16, 0x83,
44680x5A, 0x0C, 0x6A, 0x31, 0xA0, 0xC4, 0xA0, 0x16, 0x83, 0x5A, 0x0C, 0x6A, 0x31,
44690xA8, 0xC5, 0xA0, 0x16, 0x83, 0x4A, 0x0C, 0x6A, 0x31, 0xA8, 0xE5, 0xA0, 0x16,
44700x83, 0x5A, 0x0C, 0x6A, 0x31, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x10, 0x01, 0x40, 0x02,
44720x08, 0x21, 0x00, 0x64, 0x00, 0x10, 0x00, 0x40, 0x04, 0x00, 0x01, 0x00, 0x04,
44730x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x91, 0x00, 0x24, 0x00, 0x00, 0x00, 0x40,
44740x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44750x00, 0x10, 0x22, 0x46, 0x88, 0x18, 0x21, 0x62, 0x80, 0x8A, 0x01, 0x26, 0x06,
44760x88, 0x18, 0x20, 0x62, 0x80, 0x88, 0x11, 0x22, 0x46, 0x88, 0x18, 0x21, 0x62,
44770x84, 0x88, 0x01, 0x22, 0x46, 0x88, 0x18, 0x21, 0x62, 0x84, 0x88, 0x00, 0x00,
44780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x0A,
44790x08, 0x2A, 0x20, 0xAA, 0x80, 0x88, 0x02, 0xA2, 0x0A, 0x08, 0x2A, 0x20, 0xAA,
44800x00, 0xAA, 0x02, 0xA2, 0x0A, 0x88, 0x28, 0x20, 0xAA, 0x80, 0xA0, 0x02, 0xA6,
44810x0A, 0x08, 0x2A, 0x20, 0xAA, 0x80, 0xA8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
44820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0x42, 0x10, 0x0A, 0x41, 0x28,
44830x44, 0xA1, 0x10, 0x8C, 0x4A, 0x10, 0x2A, 0x41, 0x28, 0x04, 0xA1, 0x10, 0x04,
44840x42, 0x10, 0x0A, 0x41, 0x28, 0x84, 0x81, 0x10, 0x84, 0x4A, 0x10, 0x0A, 0x41,
44850x20, 0x04, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44860x00, 0x00, 0x50, 0x80, 0x40, 0x01, 0x02, 0x05, 0x00, 0x14, 0x00, 0x50, 0x80,
44870x40, 0x01, 0x02, 0x05, 0x00, 0x14, 0x00, 0x50, 0x80, 0x40, 0x01, 0x02, 0x05,
44880x08, 0x14, 0x20, 0x50, 0x80, 0x40, 0x01, 0x02, 0x05, 0x08, 0x14, 0x20, 0x00,
44890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC0,
44900xCA, 0x20, 0x2B, 0x03, 0x8C, 0x0C, 0x30, 0x32, 0x40, 0xC0, 0x00, 0x01, 0x03,
44910x88, 0x0C, 0x30, 0x32, 0xC0, 0xCA, 0x00, 0x2B, 0x03, 0xAC, 0x0C, 0xB0, 0x32,
44920x40, 0xC0, 0x00, 0x2B, 0x03, 0xAC, 0x0C, 0xB0, 0x02, 0x00, 0x00, 0x00, 0x00,
44930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA4, 0x4E, 0x80, 0x3A, 0x01,
44940xEA, 0x04, 0xB8, 0x13, 0xA0, 0x4E, 0x80, 0x3B, 0x41, 0xEA, 0x04, 0xA8, 0x13,
44950xA0, 0x4E, 0x84, 0x3B, 0x01, 0xEA, 0x04, 0xB8, 0x13, 0xA0, 0x4E, 0x80, 0x3B,
44960x01, 0xE2, 0x44, 0xA8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44970x00, 0x00, 0x00, 0xC4, 0x10, 0x12, 0x23, 0x08, 0x8C, 0x21, 0x30, 0x80, 0xC0,
44980x10, 0x02, 0x23, 0x08, 0x0C, 0x21, 0x30, 0x84, 0xC4, 0x18, 0x12, 0x43, 0x48,
44990x8C, 0x21, 0x31, 0x82, 0xC0, 0x18, 0x12, 0xA3, 0x48, 0x8C, 0x21, 0x31, 0x84,
45000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
45010xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB,
45020xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF,
45030xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00,
45040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45080x00, 0x00, 0x00, 0x00, 0xB4, 0xDF, 0xD0, 0x6C, 0x43, 0xB3, 0x0D, 0xCD, 0xBE,
45090x7C, 0xDB, 0xD0, 0x6C, 0x43, 0xFB, 0x0D, 0xED, 0x37, 0x34, 0xDB, 0xD0, 0x7E,
45100x43, 0xB3, 0x0D, 0xCD, 0xBE, 0x7C, 0xDB, 0xD0, 0x6C, 0x43, 0xB3, 0x0D, 0xED,
45110x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45120xCC, 0x3F, 0x32, 0xF3, 0xC8, 0xCC, 0x23, 0x33, 0xBF, 0xFC, 0x3C, 0x32, 0xF3,
45130xC8, 0xFC, 0x23, 0xF3, 0x8F, 0xCC, 0x3C, 0x32, 0xFF, 0xC8, 0xCC, 0x23, 0x33,
45140xBF, 0xFC, 0x3C, 0x32, 0xF3, 0xC8, 0xCC, 0x23, 0xF3, 0x8F, 0x00, 0x00, 0x00,
45150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x78, 0x72, 0x7B,
45160x48, 0xEC, 0x27, 0x31, 0x86, 0xC4, 0x78, 0x12, 0x7B, 0x48, 0x8C, 0x27, 0xB1,
45170x9F, 0xDC, 0x7E, 0x72, 0xE3, 0xC9, 0xED, 0x27, 0xB7, 0x87, 0xC4, 0x7E, 0x72,
45180x7B, 0xC8, 0xED, 0x27, 0x37, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45190x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x8E, 0x02, 0x39, 0x08, 0xE4, 0x20,
45200x80, 0x83, 0x40, 0x0E, 0x02, 0x39, 0x08, 0xE4, 0x20, 0x90, 0x83, 0x40, 0x0E,
45210x02, 0x39, 0x08, 0xE0, 0x20, 0x90, 0x83, 0x40, 0x8E, 0x02, 0x39, 0x0A, 0xE0,
45220x28, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45230x00, 0x20, 0xA0, 0x8E, 0x81, 0x3A, 0x02, 0xEA, 0x08, 0xA8, 0x23, 0xA0, 0x8E,
45240x80, 0x3A, 0x02, 0xEA, 0x08, 0xA8, 0x23, 0xA0, 0x8E, 0x80, 0x3A, 0x02, 0xEA,
45250x08, 0xAA, 0x23, 0xA0, 0x8E, 0x81, 0x3A, 0x06, 0xEA, 0x18, 0xB8, 0x03, 0x00,
45260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x04,
45270x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48,
45280x10, 0x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x10, 0x20, 0x41, 0x80,
45290x84, 0x01, 0x12, 0x06, 0x48, 0x18, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
45300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x18, 0x00, 0x60,
45310x00, 0x88, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x20,
45320x06, 0x00, 0x18, 0x00, 0x62, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00,
45330x62, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45340x00, 0x00, 0x10, 0x20, 0x4E, 0x80, 0x38, 0x01, 0xE2, 0x04, 0x88, 0x93, 0x20,
45350x4E, 0x80, 0x38, 0x01, 0xE2, 0x04, 0x88, 0x13, 0x20, 0x4A, 0x80, 0x38, 0x01,
45360xE2, 0x04, 0x88, 0x13, 0x20, 0x4E, 0x80, 0x38, 0x01, 0xE2, 0x04, 0x88, 0x03,
45370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45380x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00,
45390x60, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x00, 0x80, 0x01,
45400x00, 0x06, 0x00, 0x18, 0x08, 0x60, 0x28, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
45410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x64, 0x80, 0x10, 0x01,
45420x42, 0x0A, 0x08, 0x31, 0x20, 0x44, 0x80, 0x10, 0x01, 0x42, 0x0C, 0x08, 0x09,
45430x20, 0x44, 0x80, 0x90, 0x00, 0x42, 0x04, 0x08, 0x11, 0x20, 0x64, 0x80, 0x90,
45440x00, 0x42, 0x02, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45450x00, 0x00, 0x00, 0xD4, 0x20, 0x52, 0x81, 0x48, 0x05, 0x22, 0x11, 0x80, 0x54,
45460x20, 0x52, 0x81, 0x48, 0x05, 0x22, 0x15, 0x88, 0x44, 0x00, 0x52, 0x81, 0x48,
45470x04, 0x20, 0x15, 0x88, 0x54, 0x20, 0x52, 0x81, 0x48, 0x0C, 0x20, 0x11, 0x80,
45480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x30,
45490x00, 0xC8, 0x00, 0x28, 0x03, 0xA0, 0x3C, 0x20, 0x30, 0x00, 0xCA, 0x00, 0x00,
45500x03, 0xA0, 0x0C, 0x80, 0x32, 0x00, 0xCA, 0x00, 0x28, 0x03, 0xA0, 0x0C, 0x80,
45510x32, 0x00, 0xCA, 0x00, 0x28, 0x03, 0xA0, 0x04, 0x00, 0x02, 0x08, 0x00, 0x00,
45520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x28, 0x00, 0x08,
45530x00, 0x20, 0x0E, 0x80, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x18, 0x80,
45540x18, 0x00, 0x02, 0x00, 0x88, 0x01, 0x60, 0x00, 0x80, 0x00, 0x00, 0x22, 0x00,
45550x88, 0x01, 0x20, 0x0A, 0x08, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45560x00, 0x00, 0x10, 0x03, 0x02, 0x40, 0x08, 0x00, 0x01, 0x00, 0x04, 0x20, 0x10,
45570x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
45580x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
45590x10, 0x02, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03,
45600x02, 0x20, 0x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0x98, 0x01, 0x20, 0x06, 0x80,
45610x10, 0x00, 0x62, 0x00, 0x88, 0x01, 0x20, 0x06, 0x80, 0x18, 0x00, 0x66, 0x00,
45620x88, 0x01, 0x20, 0x06, 0x80, 0x18, 0x00, 0x66, 0x00, 0x88, 0x01, 0x0C, 0x00,
45630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x02, 0x40, 0x06, 0x00,
45640x19, 0x00, 0x64, 0x04, 0x80, 0x01, 0x40, 0x06, 0x00, 0x18, 0x00, 0x64, 0x00,
45650x90, 0x11, 0x00, 0x06, 0x00, 0x19, 0x01, 0x60, 0x00, 0x90, 0x01, 0x40, 0x06,
45660x00, 0x19, 0x01, 0x62, 0x00, 0x80, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45670x00, 0x00, 0x00, 0x02, 0xA2, 0x42, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2, 0x10,
45680x08, 0x43, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2, 0x10, 0x08, 0x43, 0x28, 0x0C,
45690x81, 0x30, 0x04, 0xC2, 0x10, 0x08, 0x43, 0x20, 0x0C, 0x81, 0x30, 0x04, 0xC2,
45700x10, 0x18, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
45710x00, 0x00, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x0C,
45720x00, 0x30, 0x00, 0xC0, 0x00, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0,
45730x00, 0x00, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x04, 0x00, 0x03, 0x00,
45740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0C,
45750x01, 0x30, 0x04, 0xC0, 0x30, 0x08, 0x43, 0x00, 0x0C, 0x01, 0x30, 0x04, 0xC0,
45760x10, 0x00, 0xC3, 0x20, 0x0C, 0x01, 0x30, 0x0C, 0xC2, 0x10, 0x00, 0x43, 0x00,
45770x0C, 0x01, 0x30, 0x0C, 0xC2, 0x34, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
45780x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x42, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62,
45790x30, 0x88, 0x41, 0x20, 0x06, 0x81, 0x18, 0x04, 0x62, 0x10, 0x88, 0xC1, 0x20,
45800x06, 0x81, 0x18, 0x0C, 0x62, 0x10, 0x88, 0x41, 0x20, 0x06, 0x81, 0x18, 0x0C,
45810x60, 0x10, 0x88, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45820x02, 0x80, 0x42, 0x00, 0x04, 0x01, 0x10, 0x04, 0x40, 0x10, 0x00, 0x43, 0x00,
45830x04, 0x01, 0x10, 0x04, 0x40, 0x10, 0x00, 0x41, 0x00, 0x0C, 0x01, 0x10, 0x04,
45840xC0, 0x10, 0x00, 0x41, 0x00, 0x04, 0x01, 0x10, 0x04, 0xC0, 0x10, 0x80, 0x01,
45850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x42, 0x20,
45860x06, 0x81, 0x18, 0x04, 0x62, 0x10, 0x08, 0x43, 0x20, 0x06, 0x81, 0x18, 0x04,
45870x62, 0x10, 0x88, 0x41, 0x20, 0x0C, 0x81, 0x18, 0x04, 0xC2, 0x10, 0x88, 0x41,
45880x20, 0x06, 0x81, 0x18, 0x04, 0xC0, 0x30, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00,
45890x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x02, 0x20, 0x0A, 0x80, 0x28, 0x00,
45900xA2, 0x00, 0x00, 0x02, 0x20, 0x0A, 0x80, 0x28, 0x00, 0xA2, 0x00, 0x88, 0x02,
45910x00, 0x08, 0x80, 0x28, 0x00, 0x80, 0x00, 0x88, 0x02, 0x20, 0x0A, 0x80, 0x28,
45920x80, 0x80, 0x00, 0x00, 0x42, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
45930x00, 0x12, 0x00, 0x60, 0x00, 0x82, 0x01, 0x08, 0x06, 0x20, 0x18, 0x80, 0x60,
45940x00, 0x82, 0x01, 0x08, 0x06, 0x20, 0x18, 0x80, 0x60, 0x00, 0x82, 0x01, 0x08,
45950x06, 0x20, 0x18, 0x80, 0x60, 0x00, 0x82, 0x01, 0x08, 0x06, 0x20, 0x18, 0x80,
45960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x40,
45970x80, 0x00, 0x01, 0x12, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x81, 0x02,
45980x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x48, 0x10, 0x20,
45990x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x28, 0x00, 0x00, 0x00, 0x00,
46000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x62, 0xC0, 0x8A, 0x01, 0x2B,
46010x06, 0xAC, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01, 0x2B, 0x06, 0xAC, 0x18, 0xB0,
46020x62, 0xC0, 0x8A, 0x01, 0x2B, 0x06, 0xAC, 0x18, 0xB0, 0x62, 0xC0, 0x8A, 0x01,
46030x2B, 0x06, 0xAC, 0x18, 0xB0, 0x02, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
46040x00, 0x00, 0x00, 0x80, 0x62, 0x20, 0x8E, 0x81, 0x38, 0x06, 0xE2, 0x18, 0x98,
46050x63, 0x20, 0x8E, 0x81, 0x38, 0x06, 0xE2, 0x18, 0x88, 0x63, 0x40, 0x8E, 0x81,
46060x38, 0x06, 0xE6, 0x18, 0x88, 0x63, 0x20, 0x8E, 0x81, 0x38, 0x86, 0xE6, 0x18,
46070x88, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
46080x62, 0x40, 0x8E, 0x01, 0x39, 0x06, 0xE0, 0x18, 0xA0, 0x63, 0x40, 0x8E, 0x01,
46090x39, 0x06, 0xE4, 0x18, 0x90, 0x63, 0x00, 0x8E, 0x01, 0x39, 0x06, 0xE0, 0x18,
46100x90, 0x63, 0x40, 0x8E, 0x01, 0x39, 0x06, 0xE0, 0x18, 0x80, 0x03, 0x00, 0x00,
46110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA2, 0x62, 0xA0, 0x8E, 0x81,
46120x3A, 0x06, 0xE8, 0x18, 0x88, 0x63, 0xA0, 0x8E, 0xA1, 0x3A, 0x06, 0xEA, 0x18,
46130xA8, 0x63, 0x20, 0x8C, 0x81, 0x3A, 0x06, 0xC2, 0x18, 0xA8, 0x63, 0xA0, 0x8E,
46140x81, 0x3A, 0x06, 0xC2, 0x18, 0x18, 0x43, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00,
46150x00, 0x00, 0x00, 0x02, 0x00, 0x48, 0x80, 0x04, 0x01, 0x12, 0x04, 0x48, 0x12,
46160x20, 0x4B, 0x80, 0x24, 0x01, 0x12, 0x04, 0x48, 0x12, 0x20, 0x41, 0x80, 0x0E,
46170x01, 0x12, 0x04, 0xE8, 0x10, 0x20, 0x41, 0x80, 0x04, 0x01, 0x12, 0x04, 0xE8,
46180x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
46190x00, 0x60, 0x00, 0x86, 0x01, 0x18, 0x06, 0x60, 0x18, 0x88, 0x61, 0x00, 0x86,
46200x01, 0x18, 0x06, 0x60, 0x18, 0x80, 0x61, 0x20, 0x86, 0x01, 0x18, 0x06, 0x62,
46210x18, 0x80, 0x61, 0x00, 0x86, 0x01, 0x18, 0x06, 0x62, 0x18, 0x00, 0x01, 0x00,
46220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x06, 0x20, 0x1E,
46230x80, 0x70, 0x00, 0xE2, 0x01, 0x08, 0x07, 0x20, 0x1E, 0x80, 0x70, 0x00, 0xE2,
46240x01, 0x88, 0x07, 0x20, 0x1E, 0x80, 0x78, 0x00, 0xC2, 0x01, 0x88, 0x07, 0x20,
46250x1E, 0x80, 0x78, 0x00, 0xC2, 0x01, 0x88, 0x03, 0x88, 0x0A, 0x00, 0x00, 0x00,
46260x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x4A, 0x00, 0x06, 0x01, 0x10, 0x04, 0x60,
46270x12, 0x00, 0x49, 0x00, 0x26, 0x01, 0x10, 0x04, 0x60, 0x12, 0x80, 0x41, 0x00,
46280x06, 0x01, 0x18, 0x04, 0x40, 0x10, 0x80, 0x41, 0x00, 0x06, 0x01, 0x18, 0x04,
46290x40, 0x12, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46300x02, 0x80, 0x42, 0x20, 0x04, 0x81, 0x18, 0x04, 0x42, 0x10, 0x88, 0x41, 0x20,
46310x44, 0x81, 0x18, 0x04, 0x42, 0x10, 0x08, 0x41, 0x20, 0x04, 0x81, 0x10, 0x04,
46320x62, 0x10, 0x08, 0x41, 0x20, 0x04, 0x81, 0x10, 0x04, 0x62, 0x10, 0x08, 0x01,
46330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x42, 0x20,
46340x02, 0x83, 0x28, 0x04, 0x22, 0x30, 0x80, 0x42, 0x20, 0x02, 0x83, 0x28, 0x04,
46350x22, 0x10, 0x88, 0x40, 0x00, 0x02, 0x81, 0x08, 0x0C, 0xA0, 0x10, 0x88, 0x40,
46360x20, 0x02, 0x81, 0x08, 0x0C, 0xA0, 0x10, 0x80, 0x00, 0x88, 0x0A, 0x00, 0x00,
46370x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0A, 0x03, 0x28, 0x0C,
46380xA0, 0x30, 0x80, 0xC2, 0x00, 0x4A, 0x01, 0x28, 0x0C, 0xA0, 0x30, 0x80, 0xC2,
46390x00, 0x0A, 0x03, 0x28, 0x0C, 0xA0, 0x30, 0x80, 0xC2, 0x00, 0x0A, 0x03, 0x28,
46400x0C, 0xA0, 0x10, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46410x00, 0x02, 0x00, 0x10, 0x00, 0x06, 0x00, 0x08, 0x01, 0x20, 0x00, 0x80, 0x10,
46420x00, 0x02, 0x00, 0x08, 0x01, 0x20, 0x04, 0x80, 0x10, 0x00, 0x42, 0x00, 0x08,
46430x00, 0x20, 0x04, 0x80, 0x10, 0x00, 0x42, 0x00, 0x08, 0x00, 0x20, 0x04, 0x88,
46440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2, 0x42,
46450x40, 0x40, 0x01, 0x01, 0x04, 0x00, 0x14, 0x10, 0x40, 0x40, 0x00, 0x01, 0x01,
46460x04, 0x04, 0x10, 0x10, 0x40, 0x40, 0x00, 0x01, 0x01, 0x05, 0x04, 0x10, 0x10,
46470x40, 0x40, 0x00, 0x01, 0x01, 0x05, 0x04, 0x10, 0x10, 0x00, 0x88, 0x0A, 0x00,
46480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x02, 0x20, 0x06, 0x80, 0x18,
46490x00, 0x66, 0x00, 0x98, 0x01, 0x20, 0x06, 0x80, 0x18, 0x00, 0x62, 0x00, 0x88,
46500x01, 0x60, 0x06, 0x80, 0x18, 0x00, 0x66, 0x00, 0x88, 0x01, 0x20, 0x06, 0x80,
46510x18, 0x00, 0x66, 0x00, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46520x00, 0x00, 0x02, 0x80, 0x02, 0x40, 0x26, 0x00, 0x99, 0x00, 0x64, 0x02, 0x80,
46530x0B, 0x40, 0x26, 0x00, 0x99, 0x00, 0x64, 0x00, 0x90, 0x01, 0x00, 0x0E, 0x00,
46540x98, 0x00, 0xE0, 0x00, 0x90, 0x01, 0x40, 0x06, 0x80, 0x99, 0x00, 0xE0, 0x00,
46550x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xA2,
46560x06, 0x20, 0x1C, 0x80, 0x70, 0x00, 0xC2, 0x01, 0x88, 0x05, 0x20, 0x1C, 0x82,
46570x70, 0x00, 0xC2, 0x01, 0x08, 0x07, 0x20, 0x16, 0x00, 0x70, 0x00, 0x62, 0x01,
46580x08, 0x07, 0x28, 0x1C, 0x00, 0x70, 0x00, 0x62, 0x01, 0x18, 0x01, 0x88, 0x0A,
46590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x80, 0x00, 0x0C, 0x02,
46600x30, 0x0E, 0xC0, 0x20, 0x00, 0xE1, 0x00, 0x0C, 0x02, 0x30, 0x0A, 0xC0, 0x20,
46610x00, 0x83, 0x00, 0x04, 0x02, 0x30, 0x08, 0x40, 0x20, 0x00, 0x83, 0x00, 0x0C,
46620x02, 0x30, 0x0A, 0x40, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46630x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0xAC, 0x02, 0xB0, 0x0A, 0xC0, 0x2A,
46640x08, 0xAB, 0x00, 0xAC, 0x02, 0xB0, 0x0A, 0xC0, 0x28, 0x00, 0xA3, 0x20, 0x8C,
46650x02, 0xB0, 0x0A, 0xC2, 0x28, 0x00, 0xA3, 0x00, 0x8C, 0x82, 0xB0, 0x1E, 0xC2,
46660x08, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
46670xA2, 0xC2, 0x20, 0x06, 0x83, 0x18, 0x0E, 0x62, 0x30, 0x88, 0xE1, 0x20, 0x06,
46680x83, 0x18, 0x0E, 0x62, 0x30, 0x88, 0xC1, 0x20, 0x06, 0x83, 0x18, 0x0C, 0x62,
46690x30, 0x88, 0xC1, 0x20, 0x06, 0x03, 0x18, 0x1E, 0x62, 0x30, 0x88, 0x01, 0x88,
46700x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x02, 0x00, 0x44,
46710x00, 0x10, 0x00, 0x40, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x08, 0x40,
46720x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00,
46730x04, 0x00, 0x10, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
46740x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x12, 0x22, 0x06, 0x88, 0x18, 0x01, 0x62,
46750x80, 0x88, 0x11, 0x20, 0x06, 0x88, 0x18, 0x01, 0x62, 0x84, 0x88, 0x11, 0x22,
46760x46, 0x88, 0x18, 0x20, 0x62, 0x84, 0x88, 0x11, 0x22, 0x46, 0x08, 0x18, 0x40,
46770x62, 0x84, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46780x02, 0xA2, 0x02, 0x22, 0x0A, 0x88, 0x28, 0x20, 0xA2, 0x00, 0x80, 0x02, 0x20,
46790x0A, 0x88, 0x28, 0x20, 0xA2, 0x00, 0x88, 0x02, 0x02, 0x0A, 0x88, 0x28, 0x20,
46800xA0, 0x80, 0x88, 0x02, 0x22, 0x0A, 0x08, 0x28, 0x20, 0xA0, 0x40, 0x80, 0x02,
46810x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x04,
46820x42, 0x00, 0x28, 0x41, 0x20, 0x04, 0x81, 0x12, 0x04, 0x42, 0x10, 0x0A, 0x41,
46830x20, 0x04, 0x81, 0x10, 0x04, 0x42, 0x10, 0x08, 0x41, 0xA0, 0x04, 0x81, 0x10,
46840x04, 0x42, 0x00, 0x08, 0x00, 0xA0, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
46850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x80, 0x40, 0x01, 0x00, 0x05,
46860x08, 0x14, 0x00, 0x50, 0x80, 0x40, 0x01, 0x00, 0x05, 0x08, 0x14, 0x20, 0x50,
46870x80, 0x40, 0x01, 0x02, 0x05, 0x00, 0x14, 0x20, 0x50, 0x80, 0x40, 0x01, 0x02,
46880x6D, 0x00, 0x94, 0x28, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
46890x00, 0x02, 0xA2, 0xB2, 0xC0, 0xCA, 0x02, 0x21, 0x0B, 0xAC, 0x2C, 0x10, 0xB2,
46900xC0, 0xCA, 0x02, 0x23, 0x0B, 0xAC, 0x2C, 0xB0, 0xB2, 0xC0, 0xCA, 0x02, 0x2A,
46910x0B, 0x84, 0x2C, 0xB0, 0xB2, 0xC0, 0xCA, 0x02, 0x2A, 0x2B, 0x84, 0x6C, 0xB0,
46920x02, 0x88, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x12,
46930x20, 0x4E, 0x80, 0x38, 0x01, 0xE2, 0x04, 0x98, 0x13, 0x20, 0x4E, 0x80, 0x38,
46940x01, 0xE2, 0x04, 0x80, 0x13, 0x60, 0x4E, 0x80, 0x39, 0x01, 0xE6, 0x04, 0x88,
46950x13, 0x20, 0x4E, 0x80, 0x38, 0x09, 0xE6, 0x00, 0x89, 0x03, 0x00, 0x00, 0x00,
46960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x10, 0x02, 0x23, 0x08,
46970x8C, 0x21, 0x30, 0x80, 0xC0, 0x10, 0x02, 0x43, 0x08, 0x8C, 0x21, 0x31, 0x84,
46980xC4, 0x08, 0x12, 0x63, 0x08, 0x8C, 0x20, 0x31, 0x86, 0xC4, 0x18, 0x12, 0x23,
46990x08, 0x8C, 0x20, 0x31, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47000x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF,
47010xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF,
47020xCB, 0xFF, 0x2F, 0xFF, 0xBF, 0xFC, 0xFF, 0xF2, 0xFF, 0xCB, 0xFF, 0x2F, 0xFF,
47030xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xDB, 0xD0, 0xEC,
47080xCB, 0xB7, 0x0D, 0xED, 0x37, 0xFC, 0xDF, 0xD0, 0x6C, 0xC3, 0xB7, 0x0D, 0xED,
47090x37, 0x34, 0xDB, 0xD0, 0x6C, 0x43, 0xB3, 0x0D, 0xCD, 0x36, 0x34, 0xDB, 0xD0,
47100xEC, 0xCB, 0xB7, 0x2F, 0xED, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47110x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x3C, 0x32, 0xF3, 0xCB, 0xCF, 0x23, 0xF3,
47120x8F, 0xFC, 0x3F, 0x32, 0xF3, 0xC8, 0xCF, 0x23, 0xF3, 0x8F, 0xCC, 0x3C, 0x32,
47130xF3, 0xC8, 0xCC, 0x23, 0x33, 0x8F, 0xCC, 0x3C, 0x32, 0xF3, 0xCB, 0xCF, 0x2F,
47140xF3, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47150x00, 0xDC, 0x78, 0x12, 0xFB, 0xC9, 0xED, 0x27, 0xB1, 0x87, 0xDC, 0x7E, 0x12,
47160xE3, 0xC9, 0xED, 0x27, 0xB7, 0x9F, 0xDC, 0x1E, 0x72, 0xFB, 0x49, 0xEC, 0x21,
47170xB7, 0x9F, 0xDC, 0x7E, 0x72, 0xFB, 0x49, 0xEC, 0x21, 0x37, 0x86, 0x00, 0x00,
47180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x21, 0x00,
47190x85, 0x33, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0xCE,
47200x50, 0x30, 0x43, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02, 0x50, 0x38, 0x43, 0xE1,
47210x0C, 0x85, 0x00, 0x14, 0xCE, 0x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02,
47230x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20,
47240x00, 0x80, 0x00, 0x00, 0x02, 0x04, 0x08, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00,
47250x02, 0x00, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47260x00, 0x00, 0x10, 0x21, 0x40, 0x84, 0x00, 0x11, 0x02, 0x44, 0x08, 0x10, 0x21,
47270x40, 0x84, 0x00, 0x11, 0x02, 0x44, 0x08, 0x10, 0x21, 0x40, 0x84, 0x00, 0x11,
47280x02, 0x44, 0x08, 0x10, 0x21, 0x40, 0x84, 0x00, 0x11, 0x02, 0x44, 0x18, 0x02,
47290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
47300x00, 0x80, 0x33, 0x00, 0x02, 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01,
47310xCE, 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x02, 0x00, 0x38, 0x03,
47320xE0, 0x4C, 0x80, 0x00, 0x01, 0xCE, 0x00, 0x38, 0x03, 0x00, 0x00, 0x00, 0x00,
47330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
47340xCC, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x33, 0x10, 0x00, 0x40, 0x30, 0x03,
47350x01, 0x00, 0x04, 0x33, 0x10, 0xCC, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
47360x10, 0xCC, 0x40, 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47370x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40,
47380x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
47390x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
47400x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10,
47410x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00,
47420x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00,
47430x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x00,
47440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
47450x01, 0xCC, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x33, 0x01, 0x00, 0x04, 0x30,
47460x13, 0x00, 0x40, 0x00, 0x33, 0x01, 0xCC, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00,
47470x00, 0x01, 0xCC, 0x04, 0x30, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47480x00, 0x00, 0x10, 0x00, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x38,
47490x53, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21, 0x40, 0x85,
47500x33, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x00, 0x54,
47510x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
47520x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
47530x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04,
47540x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x86, 0x04, 0x08, 0x40, 0x00, 0x00,
47550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x21, 0x00, 0x84,
47560x00, 0x10, 0x02, 0x40, 0x00, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40,
47570x08, 0x00, 0x21, 0x00, 0x04, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00,
47580x84, 0x00, 0x10, 0x86, 0x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47590x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0xE0, 0x0C, 0x80, 0x00, 0x00, 0xCE, 0x00,
47600x08, 0x00, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03, 0xE0, 0x0C,
47610x80, 0x00, 0x00, 0xCE, 0x00, 0x08, 0x00, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE,
47620x00, 0x08, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
47630x00, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00,
47640x84, 0x33, 0x10, 0x02, 0x40, 0x38, 0x03, 0x21, 0x00, 0x84, 0x33, 0x10, 0xCE,
47650x40, 0x38, 0x03, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x40, 0x00,
47660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
47670x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x81, 0x00, 0x04, 0x00,
47680x10, 0x08, 0x40, 0x00, 0x00, 0x81, 0x00, 0x04, 0x02, 0x10, 0x08, 0x40, 0x00,
47690x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
47710x40, 0x00, 0x00, 0x01, 0x00, 0x84, 0x00, 0x10, 0x00, 0x40, 0x08, 0x00, 0x01,
47720x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
47730x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47740x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47750x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x00, 0x33, 0x00,
47760xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47770x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47810x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47840x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47960x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
47970xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
47980x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
47990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48000xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
48010x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
48020x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
48040x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
48050x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
48060xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48070x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
48080x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
48090xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
48100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48110x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
48120xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
48130x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
48150xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
48160x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
48170xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02,
48190x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21,
48200x00, 0x85, 0x00, 0x14, 0x02, 0x50, 0x08, 0x40, 0x21, 0x00, 0x85, 0x00, 0x14,
48210x02, 0x50, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48220x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20,
48230x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x01,
48240x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00,
48250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
48260x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x10, 0x21, 0x40, 0x84, 0x00, 0x11,
48270x02, 0x44, 0x08, 0x10, 0x21, 0x40, 0x84, 0x00, 0x11, 0x02, 0x44, 0x08, 0x10,
48280x21, 0x40, 0x84, 0x00, 0x11, 0x02, 0x44, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
48290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00,
48300x02, 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00,
48310x20, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00,
48320x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48330x00, 0x00, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10,
48340x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x00, 0x04, 0x00,
48350x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00,
48360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40,
48370x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00,
48380x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00,
48390x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x00,
48400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00,
48410x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00,
48420x10, 0x01, 0x40, 0x04, 0x00, 0x11, 0x00, 0x44, 0x00, 0x10, 0x01, 0x40, 0x04,
48430x00, 0x11, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48440x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
48450x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00,
48460x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04,
48470x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
48480x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21, 0x40, 0x85,
48490x00, 0x15, 0x02, 0x54, 0x08, 0x50, 0x21, 0x40, 0x85, 0x33, 0x15, 0x02, 0x54,
48500x08, 0x50, 0x21, 0x40, 0x85, 0x00, 0x15, 0x02, 0x54, 0x08, 0x40, 0x00, 0x00,
48510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x20, 0x40, 0x80,
48520x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04,
48530x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40,
48540x80, 0x00, 0x01, 0x02, 0x04, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48550x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40,
48560x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00,
48570x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02,
48580x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
48590x08, 0x00, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0x02, 0x00, 0x38, 0x03, 0x20, 0x00,
48600x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x03, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE,
48610x00, 0x38, 0x03, 0xE0, 0x0C, 0x80, 0x33, 0x00, 0xCE, 0x00, 0x38, 0x43, 0x20,
48620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x21, 0x00,
48630x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02,
48640x40, 0x08, 0x00, 0x21, 0x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x00, 0x21,
48650x00, 0x84, 0x00, 0x10, 0x02, 0x40, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
48660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
48670x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00,
48680x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04,
48690x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48700x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01,
48710x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10,
48720x00, 0x40, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x00, 0x00,
48730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00,
48740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00,
48770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48810x00, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48840xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48960xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
48970x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
48980x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
48990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
49000x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
49010x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
49020xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49030x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
49040x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
49050xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
49060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49070x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
49080xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
49090x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
49110xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
49120x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
49130xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
49150x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
49160xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
49170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x80,
49220x40, 0x00, 0x00, 0x00, 0x0C, 0x00, 0xC2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
49230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
49990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
50990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x04, 0x80, 0x40,
51630x40, 0x00, 0x00, 0x0C, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
51990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
52990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53000x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53010x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53050x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53060x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53080x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53090x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53100x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53140x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53150x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53160x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53170x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53180x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53190x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53200x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53210x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53220x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53230x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53240x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53250x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53260x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53270x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53280x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53290x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53300x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53310x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53320x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53330x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53340x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53350x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53360x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53370x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53380x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53390x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53400x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53410x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53420x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53430x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53440x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53450x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53460x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53470x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53480x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53490x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53500x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53510x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53520x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53530x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53540x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53550x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53560x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53570x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53580x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53590x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53600x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53610x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53630x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53640x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53650x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53660x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53670x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53680x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53690x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53700x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53710x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53720x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53730x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53740x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53750x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53760x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53770x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53780x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53790x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53800x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53810x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53820x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53830x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53840x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53850x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53860x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53870x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53880x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53890x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53900x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53910x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53920x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53930x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53940x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53950x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53960x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53970x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53980x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53990x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00,
54000x00, 0x80, 0x00, 0x00, 0xA4, 0x07, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
54010xC0, 0x0C, 0x00, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54020x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54030x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54040x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54050x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0xA0, 0x0C, 0x00, 0x05, 0x80,
54060x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x00, 0x00, 0x87, 0x5A, 0x00,
54070x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54080x00, 0x00
5409};
diff --git a/drivers/staging/slicoss/Kconfig b/drivers/staging/slicoss/Kconfig
new file mode 100644
index 00000000000..d2993d339bc
--- /dev/null
+++ b/drivers/staging/slicoss/Kconfig
@@ -0,0 +1,14 @@
1config SLICOSS
2 tristate "Alacritech Gigabit IS-NIC support"
3 depends on PCI && X86 && NETDEV_1000
4 default n
5 help
6 This driver supports Alacritech's IS-NIC gigabit ethernet cards.
7
8 This includes the following devices:
9 Mojave cards (single port PCI Gigabit) both copper and fiber
10 Oasis cards (single and dual port PCI-x Gigabit) copper and fiber
11 Kalahari cards (dual and quad port PCI-e Gigabit) copper and fiber
12
13 To compile this driver as a module, choose M here: the module
14 will be called slicoss.
diff --git a/drivers/staging/slicoss/Makefile b/drivers/staging/slicoss/Makefile
new file mode 100644
index 00000000000..7bc9e9b9d3a
--- /dev/null
+++ b/drivers/staging/slicoss/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_SLICOSS) += slicoss.o
diff --git a/drivers/staging/slicoss/README b/drivers/staging/slicoss/README
new file mode 100644
index 00000000000..2d5b1127ce5
--- /dev/null
+++ b/drivers/staging/slicoss/README
@@ -0,0 +1,19 @@
1This driver is supposed to support:
2
3 Mojave cards (single port PCI Gigabit) both copper and fiber
4 Oasis cards (single and dual port PCI-x Gigabit) copper and fiber
5 Kalahari cards (dual and quad port PCI-e Gigabit) copper and fiber
6
7The driver was actually tested on Oasis and Kalahari cards.
8
9TODO:
10 - move firmware loading to request_firmware()
11 - remove direct memory access of structures
12 - any remaining sparse and checkpatch.pl warnings
13 - any netdev recommended changes
14
15Please send patches to:
16 Greg Kroah-Hartman <gregkh@suse.de>
17and Cc: Lior Dotan <liodot@gmail.com> and Christopher Harrer
18<charrer@alacritech.com> as well as they are also able to test out any
19changes.
diff --git a/drivers/staging/slicoss/gbdownload.h b/drivers/staging/slicoss/gbdownload.h
new file mode 100644
index 00000000000..794432bd1d7
--- /dev/null
+++ b/drivers/staging/slicoss/gbdownload.h
@@ -0,0 +1,8215 @@
1#define MOJAVE_UCODE_VERS_STRING "1.2"
2#define MOJAVE_UCODE_VERS_DATE "2006/03/27 15:12:22"
3#define MOJAVE_UCODE_HOSTIF_ID 3
4
5static s32 MNumSections = 0x2;
6static u32 MSectionSize[] =
7{
8 0x00008000, 0x00010000,
9};
10
11static u32 MSectionStart[] =
12{
13 0x00000000, 0x00008000,
14};
15
16static u8 MojaveUCode[2][65536] =
17{
18 {
19 0x12, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x18, 0x00, 0x00, 0x40,
20 0x81, 0xb2, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
21 0x03, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
22 0x98, 0xb0, 0x01, 0x00, 0x04, 0x80, 0xa2, 0x40, 0xfd, 0x7f, 0x00, 0x00,
23 0x09, 0x00, 0xa2, 0x49, 0xdd, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
24 0x80, 0xb2, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xd1, 0xb1, 0x00, 0x00,
25 0x00, 0x00, 0x00, 0x4c, 0x80, 0xb2, 0x01, 0x00, 0x09, 0x00, 0xa2, 0x40,
26 0x75, 0x7d, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
27 0x0b, 0x00, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0x09, 0x00, 0x00, 0x40,
28 0x81, 0xb2, 0x00, 0x00, 0x11, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
29 0x00, 0x80, 0x1f, 0xe9, 0x18, 0x31, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe9,
30 0x80, 0xb2, 0x01, 0x00, 0x0f, 0x00, 0x40, 0xe9, 0x80, 0xb2, 0x00, 0x00,
31 0x00, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x16, 0x00, 0x29, 0x40,
32 0x81, 0x32, 0x00, 0x00, 0x16, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
33 0x0f, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
34 0x81, 0xb2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
35 0x10, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x1c, 0x00, 0x29, 0x40,
36 0x81, 0x32, 0x00, 0x00, 0x1c, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
37 0x11, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
38 0x81, 0xb2, 0x01, 0x00, 0x01, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
39 0x20, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x22, 0x00, 0x29, 0x40,
40 0x81, 0x32, 0x00, 0x00, 0x22, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
41 0x0e, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
42 0xdd, 0x81, 0x01, 0x00, 0x2b, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
43 0x3c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x27, 0x00, 0x14, 0xbc,
44 0x80, 0x32, 0x00, 0x00, 0x14, 0x01, 0x13, 0xbc, 0x80, 0x32, 0x00, 0x00,
45 0x54, 0x95, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0xff, 0xff, 0x00, 0x40,
46 0xe5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x40, 0x49, 0xb1, 0x01, 0x00,
47 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
48 0xb7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xb5, 0xb3, 0x01, 0x00,
49 0xd9, 0x00, 0x00, 0x40, 0xb3, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
50 0xb6, 0xd3, 0x01, 0x00, 0x32, 0x00, 0x95, 0xe8, 0x80, 0x32, 0x00, 0x00,
51 0xff, 0xff, 0x00, 0xe8, 0x80, 0x88, 0x01, 0x00, 0xb8, 0x00, 0x26, 0x40,
52 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfd, 0xb3, 0x01, 0x00,
53 0x00, 0x00, 0x00, 0x40, 0xff, 0xb3, 0x01, 0x00, 0x3c, 0x00, 0x22, 0x50,
54 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xfd, 0x93, 0x01, 0x00,
55 0xa5, 0xa5, 0x00, 0xa6, 0xb4, 0xa7, 0x01, 0x00, 0x3c, 0x00, 0xa2, 0x50,
56 0xb5, 0x73, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
57 0x3c, 0x00, 0xa2, 0x45, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
58 0xfd, 0x93, 0x01, 0x00, 0x41, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
59 0x7f, 0x00, 0x00, 0x20, 0xf5, 0xcf, 0x01, 0x00, 0x1c, 0x01, 0x00, 0xfa,
60 0xb3, 0x33, 0x01, 0x00, 0xa5, 0xa5, 0x00, 0xda, 0xb5, 0xab, 0x01, 0x00,
61 0x99, 0x00, 0xa2, 0x50, 0xb5, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
62 0xfd, 0x93, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x44, 0xb3, 0x33, 0x01, 0x00,
63 0x00, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
64 0xd7, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0xda, 0xed, 0x8b, 0x01, 0x00,
65 0xd5, 0x00, 0x00, 0x46, 0xb3, 0x33, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40,
66 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xd7, 0xb1, 0x01, 0x00,
67 0xff, 0x00, 0x00, 0xda, 0xef, 0x8b, 0x01, 0x00, 0xff, 0x00, 0x00, 0xda,
68 0xe3, 0x8f, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x48, 0xb3, 0x33, 0x01, 0x00,
69 0x3c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0xff, 0x00, 0x00, 0xda,
70 0xd7, 0x8d, 0x01, 0x00, 0xff, 0xff, 0x00, 0xda, 0xf1, 0xdb, 0x01, 0x00,
71 0xff, 0x00, 0x00, 0xda, 0xe9, 0x8b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
72 0xe9, 0xe3, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x4b, 0xb3, 0x33, 0x01, 0x00,
73 0x2c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
74 0xd7, 0xb1, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x4c, 0xb3, 0x33, 0x01, 0x00,
75 0xff, 0xff, 0x00, 0xda, 0xeb, 0xdb, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x4e,
76 0xb3, 0x33, 0x01, 0x00, 0x03, 0x00, 0x00, 0xda, 0x81, 0x88, 0x01, 0x00,
77 0x00, 0x00, 0x00, 0x5c, 0x81, 0xe0, 0x01, 0x00, 0xff, 0xff, 0x00, 0xda,
78 0xb5, 0xdb, 0x01, 0x00, 0x5c, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
79 0x01, 0x00, 0x00, 0xda, 0xb5, 0xcf, 0x01, 0x00, 0x00, 0xf0, 0x00, 0xa7,
80 0xb4, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0x81, 0x94, 0x01, 0x00,
81 0x00, 0x00, 0x00, 0x40, 0xd8, 0xb1, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x50,
82 0xb3, 0x33, 0x01, 0x00, 0xff, 0xff, 0x00, 0xda, 0xb5, 0x8b, 0x01, 0x00,
83 0x62, 0x00, 0x26, 0x4c, 0xb5, 0x63, 0x00, 0x00, 0x01, 0x00, 0x00, 0xda,
84 0xb5, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xdf, 0xb1, 0x01, 0x00,
85 0xd5, 0x00, 0x00, 0x52, 0xb3, 0x33, 0x01, 0x00, 0xff, 0x00, 0x00, 0xda,
86 0x4b, 0x89, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda, 0xdf, 0xf7, 0x01, 0x00,
87 0xff, 0x00, 0x00, 0xef, 0xdf, 0x8b, 0x01, 0x00, 0x69, 0x00, 0x22, 0x40,
88 0xdf, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xfd, 0x93, 0x01, 0x00,
89 0x20, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x40,
90 0x81, 0x32, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
91 0x08, 0x00, 0x00, 0xda, 0xd7, 0xe5, 0x01, 0x00, 0xf8, 0x00, 0x00, 0xda,
92 0xb3, 0x8b, 0x01, 0x00, 0x34, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
93 0x00, 0x00, 0x00, 0xd9, 0xd7, 0xb1, 0x01, 0x00, 0x02, 0x00, 0x00, 0xd9,
94 0xd5, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xd7, 0xb1, 0x01, 0x00,
95 0x22, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x40,
96 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb5, 0xf3, 0x01, 0x00,
97 0x03, 0x00, 0x00, 0xda, 0x7b, 0x89, 0x01, 0x00, 0x00, 0x01, 0x00, 0x40,
98 0xdd, 0x9b, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x5d, 0xb3, 0x33, 0x01, 0x00,
99 0xff, 0xff, 0x00, 0xda, 0xe7, 0x8b, 0x01, 0x00, 0x8a, 0x00, 0x26, 0x40,
100 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xfd, 0x93, 0x01, 0x00,
101 0x00, 0x00, 0x00, 0x50, 0xe7, 0xe3, 0x01, 0x00, 0x00, 0x01, 0x00, 0x40,
102 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xe7, 0x97, 0x01, 0x00,
103 0x00, 0x00, 0x00, 0xf3, 0xd7, 0xb1, 0x01, 0x00, 0xd5, 0x00, 0x00, 0x5e,
104 0xb3, 0x33, 0x01, 0x00, 0xff, 0x00, 0x00, 0xda, 0xe5, 0x8b, 0x01, 0x00,
105 0x00, 0x00, 0x00, 0x48, 0xe5, 0xe3, 0x01, 0x00, 0x08, 0x01, 0x00, 0x40,
106 0xd5, 0x99, 0x01, 0x00, 0xff, 0x00, 0x00, 0xda, 0xb5, 0x8f, 0x01, 0x00,
107 0x00, 0x00, 0x00, 0xf7, 0xb5, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
108 0xd7, 0xb1, 0x01, 0x00, 0x3c, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
109 0x00, 0x00, 0x00, 0xf8, 0xe5, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
110 0xd7, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40, 0xdd, 0x9b, 0x01, 0x00,
111 0x96, 0x00, 0x22, 0xf5, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
112 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee, 0xd5, 0xb1, 0x01, 0x00,
113 0x00, 0x00, 0x00, 0xf6, 0xeb, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf5,
114 0xd7, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x00, 0xea, 0xd4, 0xc9, 0x01, 0x00,
115 0x00, 0x00, 0x00, 0xf7, 0xe3, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf1,
116 0xd7, 0xb1, 0x01, 0x00, 0x3c, 0x00, 0x00, 0xee, 0xdd, 0xcb, 0x01, 0x00,
117 0x00, 0x00, 0x00, 0xee, 0xd5, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
118 0xe9, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xd7, 0xb1, 0x01, 0x00,
119 0xd5, 0x00, 0x00, 0x4a, 0xb3, 0x33, 0x01, 0x00, 0xff, 0xff, 0x00, 0xda,
120 0xdd, 0x89, 0x01, 0x00, 0xb7, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
121 0x00, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x05, 0x00, 0x00, 0xa6,
122 0xd6, 0xb1, 0x01, 0x00, 0x9a, 0x13, 0x00, 0xeb, 0xd6, 0x99, 0x01, 0x00,
123 0x08, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x02, 0x00, 0xa6,
124 0xd6, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x00, 0xeb, 0xd6, 0x99, 0x01, 0x00,
125 0x2c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x05, 0x00, 0x00, 0xa6,
126 0xd6, 0xb1, 0x01, 0x00, 0x9a, 0x13, 0x00, 0xeb, 0xd6, 0x99, 0x01, 0x00,
127 0x3c, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40,
128 0xd7, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xfd, 0x93, 0x01, 0x00,
129 0x3c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa6,
130 0xd6, 0xb1, 0x01, 0x00, 0x00, 0x01, 0x00, 0xeb, 0xd6, 0x99, 0x01, 0x00,
131 0x00, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x06, 0x00, 0x00, 0xa6,
132 0xd6, 0xb1, 0x01, 0x00, 0x9a, 0x13, 0x00, 0xeb, 0xd6, 0x99, 0x01, 0x00,
133 0x08, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x02, 0x00, 0xa6,
134 0xd6, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x00, 0xeb, 0xd6, 0x99, 0x01, 0x00,
135 0x00, 0x00, 0x00, 0x40, 0xd9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
136 0xdf, 0xb1, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
137 0xa0, 0x00, 0x00, 0xa6, 0xd6, 0xb1, 0x01, 0x00, 0x64, 0x00, 0x00, 0x40,
138 0x4b, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7b, 0x99, 0x01, 0x00,
139 0x02, 0x04, 0x00, 0x40, 0xdd, 0x99, 0x01, 0x00, 0xb7, 0x00, 0x13, 0xbc,
140 0x80, 0x32, 0x00, 0x00, 0x02, 0x08, 0x00, 0x40, 0xdd, 0x99, 0x01, 0x00,
141 0x00, 0x00, 0x00, 0x4c, 0xdd, 0x91, 0x01, 0x00, 0xb8, 0x00, 0x95, 0xe8,
142 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xe9, 0xfa, 0xb3, 0x01, 0x00,
143 0x00, 0x00, 0x00, 0x40, 0xd1, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0x42,
144 0x80, 0x88, 0x01, 0x00, 0x34, 0x00, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
145 0xb8, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x40,
146 0x81, 0x32, 0x01, 0x00, 0x02, 0x80, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00,
147 0xb8, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
148 0x81, 0xb0, 0x01, 0x00, 0xca, 0x00, 0x09, 0xf9, 0x81, 0x32, 0x00, 0x00,
149 0xc8, 0x00, 0x08, 0xf9, 0x81, 0x32, 0x00, 0x00, 0xd4, 0x00, 0x1f, 0xfd,
150 0xf9, 0x33, 0x00, 0x00, 0xc7, 0x00, 0x9e, 0xfd, 0x81, 0x32, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x4a, 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48,
152 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf7, 0xb3, 0x01, 0x00,
153 0x00, 0x00, 0x80, 0x49, 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
154 0x19, 0xb1, 0x01, 0x00, 0xcf, 0x00, 0x0a, 0xf9, 0x81, 0x32, 0x00, 0x00,
155 0x00, 0x00, 0x40, 0xfb, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0xfd,
156 0x81, 0xb2, 0x01, 0x00, 0x00, 0x07, 0x80, 0xf9, 0xf3, 0x8f, 0x01, 0x00,
157 0x00, 0x07, 0x42, 0xf9, 0xf3, 0x8f, 0x01, 0x00, 0xd3, 0x00, 0xa2, 0xff,
158 0xf7, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x43, 0x40, 0x81, 0xb2, 0x01, 0x00,
159 0x00, 0x00, 0xa2, 0xff, 0xfb, 0xef, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc,
160 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb0, 0x01, 0x00,
161 0xd8, 0x00, 0x06, 0xfe, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
162 0xb3, 0xe3, 0x01, 0x00, 0x1c, 0x01, 0x00, 0xfa, 0xb3, 0xc3, 0x00, 0x00,
163 0xda, 0x00, 0x00, 0x42, 0x8d, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
164 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
165 0xeb, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
166 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x84, 0x96, 0x80, 0xb2, 0x00, 0x00,
167 0x26, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x25, 0x01, 0x00, 0x40,
168 0x2d, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2d, 0x81, 0x01, 0x00,
169 0x00, 0x00, 0x00, 0xda, 0xb5, 0xeb, 0x01, 0x00, 0xe4, 0x00, 0x84, 0x96,
170 0x80, 0x32, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x40, 0xb5, 0x93, 0x00, 0x00,
171 0x00, 0x00, 0x00, 0x40, 0xb5, 0x83, 0x01, 0x00, 0xde, 0x00, 0xa2, 0x41,
172 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x2d, 0x81, 0x01, 0x00,
173 0x26, 0x01, 0x00, 0x41, 0x2d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
174 0xb3, 0xc3, 0x01, 0x00, 0xda, 0x00, 0xa2, 0x41, 0x8d, 0x50, 0x00, 0x00,
175 0x00, 0x00, 0x80, 0xda, 0xb5, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
176 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x81, 0xd0, 0x01, 0x00,
177 0x00, 0x00, 0x00, 0xd9, 0xb9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
178 0xb8, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xb9, 0xeb, 0x01, 0x00,
179 0x00, 0x00, 0x00, 0x41, 0xb8, 0x97, 0x01, 0x00, 0x15, 0x00, 0x00, 0xdc,
180 0xb9, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x2d, 0x81, 0x01, 0x00,
181 0x00, 0x00, 0x00, 0xdb, 0x81, 0xb0, 0x01, 0x00, 0x27, 0x01, 0x00, 0x42,
182 0x2d, 0x11, 0x01, 0x00, 0x25, 0x01, 0x00, 0x40, 0x2d, 0x11, 0x01, 0x00,
183 0x28, 0x01, 0x00, 0x40, 0x2d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
184 0x2d, 0x91, 0x01, 0x00, 0x26, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
185 0x25, 0x01, 0x00, 0x40, 0x2d, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
186 0x2d, 0x81, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41, 0x81, 0xd0, 0x00, 0x00,
187 0x00, 0x00, 0x84, 0x96, 0x80, 0x32, 0x01, 0x00, 0xff, 0x00, 0xa0, 0xdc,
188 0xb9, 0x6b, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x41, 0x2d, 0x91, 0x00, 0x00,
189 0xf8, 0x00, 0x00, 0x41, 0x2d, 0x81, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x40,
190 0xb3, 0x33, 0x01, 0x00, 0x00, 0x00, 0x90, 0xda, 0x8b, 0xb0, 0x00, 0x00,
191 0x11, 0x00, 0x00, 0x45, 0x88, 0xf4, 0x01, 0x00, 0x40, 0x00, 0x00, 0x44,
192 0x80, 0xce, 0x01, 0x00, 0x00, 0x00, 0xa4, 0x40, 0x81, 0xb2, 0x00, 0x00,
193 0x00, 0x00, 0xa3, 0x44, 0x89, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
194 0x89, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x87, 0xb0, 0x01, 0x00,
195 0xd9, 0x00, 0x00, 0x43, 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
196 0xb5, 0xf3, 0x01, 0x00, 0x0c, 0x01, 0xa0, 0xda, 0x8b, 0x40, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
198 0x87, 0xc0, 0x01, 0x00, 0x08, 0x01, 0xa2, 0x41, 0x89, 0x50, 0x00, 0x00,
199 0xff, 0xff, 0x00, 0x45, 0x88, 0x88, 0x01, 0x00, 0x10, 0x00, 0x00, 0x45,
200 0x8a, 0xf4, 0x01, 0x00, 0x12, 0x01, 0x90, 0x44, 0x8a, 0x40, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc0, 0x01, 0x00, 0xff, 0xff, 0x00, 0x45,
202 0x8a, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x80, 0x50, 0x8b, 0xe0, 0x01, 0x00,
203 0x00, 0x80, 0x00, 0x40, 0xf9, 0x9b, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x40,
204 0xb3, 0xcf, 0x01, 0x00, 0x1c, 0x01, 0x00, 0xfc, 0x19, 0x31, 0x01, 0x00,
205 0x1c, 0x01, 0x40, 0xda, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x41, 0xda,
206 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf9, 0xc3, 0x01, 0x00,
207 0x16, 0x01, 0x9f, 0xda, 0x81, 0x32, 0x00, 0x00, 0x02, 0x80, 0x00, 0x40,
208 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x91, 0xb0, 0x01, 0x00,
209 0x00, 0x00, 0x00, 0xd9, 0x2b, 0xb1, 0x01, 0x00, 0x1e, 0x01, 0x9f, 0x94,
210 0x80, 0x32, 0x00, 0x00, 0x18, 0x00, 0x00, 0x94, 0x92, 0xe4, 0x01, 0x00,
211 0x00, 0x00, 0x00, 0x48, 0xb5, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
212 0xb4, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xb3, 0xc3, 0x01, 0x00,
213 0x1d, 0x01, 0xa2, 0x41, 0x91, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
214 0x2b, 0xb1, 0x01, 0x00, 0x29, 0x01, 0x00, 0x51, 0x93, 0xb0, 0x00, 0x00,
215 0x29, 0x01, 0x00, 0x4d, 0x93, 0xb0, 0x00, 0x00, 0x29, 0x01, 0x00, 0x49,
216 0x93, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x93, 0xb0, 0x01, 0x00,
217 0x29, 0x01, 0xa2, 0x41, 0x93, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
218 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00,
219 0x00, 0x00, 0x11, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x12, 0x40,
220 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x13, 0x40, 0x81, 0xb2, 0x01, 0x00,
221 0x00, 0x00, 0x14, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x15, 0x40,
222 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x16, 0x40, 0x81, 0xb2, 0x01, 0x00,
223 0x00, 0x00, 0x17, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x18, 0x40,
224 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x19, 0x40, 0x81, 0xb2, 0x01, 0x00,
225 0x00, 0x00, 0x1a, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x40,
226 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x40, 0x81, 0xb2, 0x01, 0x00,
227 0x00, 0x00, 0x1d, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x40,
228 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x40, 0x81, 0xb2, 0x01, 0x00,
229 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40,
230 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xa1, 0xd1, 0x01, 0x00,
231 0x00, 0x00, 0x00, 0x40, 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
232 0x19, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
233 0x00, 0x00, 0x00, 0x40, 0x15, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
234 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00,
235 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
236 0x0d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0b, 0xb0, 0x01, 0x00,
237 0x00, 0x00, 0x00, 0x40, 0x09, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
238 0x07, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
239 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
240 0x01, 0xb0, 0x01, 0x00, 0x44, 0x01, 0x20, 0x48, 0xa1, 0x51, 0x00, 0x00,
241 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x50, 0x01, 0x22, 0x4b,
242 0x74, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
243 0x60, 0x00, 0x00, 0x4b, 0x60, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb1,
244 0x7e, 0xb1, 0x01, 0x00, 0x51, 0x01, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
245 0x4e, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x80, 0x40,
246 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58, 0x07, 0x90, 0x01, 0x00,
247 0xf3, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
248 0xa5, 0xb3, 0x01, 0x00, 0xaf, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
249 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
250 0x07, 0x90, 0x01, 0x00, 0xf3, 0x9f, 0x00, 0x40, 0xbf, 0xb3, 0x00, 0x00,
251 0x5f, 0x01, 0x22, 0xcc, 0x85, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51,
252 0x07, 0x90, 0x01, 0x00, 0xf3, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
253 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb,
254 0xa3, 0xc9, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40, 0xa1, 0x9b, 0x01, 0x00,
255 0x00, 0x00, 0x00, 0x20, 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
256 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf1, 0xb1, 0x01, 0x00,
257 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
258 0xe1, 0xb1, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
259 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00, 0x68, 0x01, 0xa8, 0x40,
260 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x85, 0x93, 0x01, 0x00,
261 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40,
262 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xba, 0xb3, 0x01, 0x00,
263 0x00, 0x00, 0x00, 0xfa, 0xa4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
264 0xbc, 0xb3, 0x01, 0x00, 0x00, 0x14, 0x2f, 0x40, 0x81, 0xb0, 0x01, 0x00,
265 0x00, 0x00, 0x00, 0xe7, 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8,
266 0xa9, 0xb3, 0x01, 0x00, 0xff, 0x00, 0x00, 0xdd, 0x81, 0x88, 0x01, 0x00,
267 0x02, 0x00, 0x00, 0x40, 0x80, 0xf4, 0x01, 0x00, 0x78, 0x01, 0x00, 0x40,
268 0x80, 0xc8, 0x01, 0x00, 0x88, 0x01, 0x00, 0xdd, 0x81, 0x32, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00, 0x89, 0x01, 0x00, 0x40,
270 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
271 0x8b, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x8c, 0x01, 0x00, 0x40,
272 0x81, 0xb2, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
273 0x8f, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x91, 0x01, 0x00, 0x40,
274 0x81, 0xb2, 0x00, 0x00, 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
275 0xd2, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x55, 0x01, 0x00, 0x40,
276 0x81, 0xb2, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
277 0xe1, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x7f, 0x02, 0x00, 0x40,
278 0x81, 0xb2, 0x00, 0x00, 0x80, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
279 0xf1, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf2, 0x9f, 0x00, 0x40,
280 0x81, 0xb2, 0x00, 0x00, 0x77, 0x01, 0x00, 0x41, 0x81, 0xc0, 0x1a, 0x00,
281 0x5a, 0x01, 0x51, 0x40, 0x81, 0xb2, 0x1a, 0x00, 0x5a, 0x01, 0x52, 0x40,
282 0x81, 0xb2, 0x1a, 0x00, 0x5a, 0x01, 0x55, 0x40, 0x81, 0xb2, 0x1a, 0x00,
283 0x5a, 0x01, 0x56, 0x40, 0x81, 0xb2, 0x1a, 0x00, 0x55, 0x01, 0x91, 0x81,
284 0x80, 0x30, 0x1a, 0x00, 0x5a, 0x01, 0x45, 0x40, 0x81, 0xb2, 0x1a, 0x00,
285 0x55, 0x01, 0x91, 0x82, 0x80, 0x30, 0x1a, 0x00, 0x5a, 0x01, 0x46, 0x40,
286 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x89, 0xb0, 0x01, 0x00,
287 0x00, 0x00, 0x2f, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x14, 0x00, 0x40,
288 0x49, 0x99, 0x01, 0x00, 0xb5, 0x01, 0x22, 0xde, 0xe1, 0x6d, 0x00, 0x00,
289 0x00, 0x00, 0x00, 0x4c, 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
290 0x81, 0xc0, 0x01, 0x00, 0x94, 0x01, 0xa2, 0x44, 0x81, 0x6c, 0x00, 0x00,
291 0x00, 0x00, 0x00, 0x4c, 0x49, 0xd1, 0x01, 0x00, 0x9c, 0x01, 0x22, 0x40,
292 0xe1, 0x6d, 0x00, 0x00, 0x98, 0x01, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
293 0x55, 0x01, 0x00, 0x41, 0xbf, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
294 0xbf, 0xb3, 0x01, 0x00, 0x55, 0x01, 0xa0, 0x0f, 0xbd, 0x6f, 0x00, 0x00,
295 0x00, 0x00, 0x00, 0xde, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
296 0x49, 0xc1, 0x01, 0x00, 0xb7, 0x01, 0x00, 0x40, 0x19, 0x99, 0x01, 0x00,
297 0x00, 0x00, 0x42, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff,
298 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde, 0x19, 0xb1, 0x01, 0x00,
299 0x00, 0x00, 0x42, 0xff, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff,
300 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0xc1, 0x01, 0x00,
301 0x00, 0x00, 0x2f, 0xff, 0xe1, 0xb1, 0x01, 0x00, 0x08, 0x14, 0x00, 0xa4,
302 0x80, 0xcc, 0x01, 0x00, 0xac, 0x01, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
303 0x00, 0x00, 0x00, 0x41, 0x85, 0xc0, 0x01, 0x00, 0xaa, 0x01, 0xa2, 0x4c,
304 0x81, 0x50, 0x00, 0x00, 0xb6, 0x01, 0x22, 0xd2, 0x81, 0x32, 0x00, 0x00,
305 0xb1, 0x01, 0x22, 0x41, 0xa5, 0x6f, 0x00, 0x00, 0x55, 0x01, 0xa2, 0xe0,
306 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xc1, 0xb3, 0x01, 0x00,
307 0x00, 0x00, 0x00, 0x5c, 0x89, 0x90, 0x01, 0x00, 0x00, 0x00, 0x40, 0x42,
308 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0x43, 0x80, 0xb2, 0x01, 0x00,
309 0x00, 0x00, 0x00, 0xf0, 0x88, 0x94, 0x01, 0x00, 0x5a, 0x01, 0x00, 0x44,
310 0xe0, 0xb1, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x48, 0x49, 0xc1, 0x00, 0x00,
311 0xb1, 0x01, 0x00, 0x5b, 0x89, 0x90, 0x00, 0x00, 0xb0, 0x9f, 0x00, 0xa0,
312 0x9e, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x81, 0xb0, 0x01, 0x00,
313 0x00, 0x00, 0x00, 0x43, 0xcb, 0x83, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
314 0x81, 0xb2, 0x01, 0x00, 0xba, 0x01, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
315 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
316 0x81, 0xb2, 0x01, 0x00, 0xc4, 0x01, 0x91, 0x82, 0x82, 0x30, 0x00, 0x00,
317 0x00, 0x00, 0x00, 0x8a, 0x80, 0xb0, 0x01, 0x00, 0xb6, 0x9f, 0x00, 0x40,
318 0x80, 0xce, 0x01, 0x00, 0xc3, 0x01, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
319 0xc4, 0x01, 0x56, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53,
320 0x6f, 0x93, 0x01, 0x00, 0xf3, 0x9f, 0x00, 0x52, 0x6f, 0x93, 0x00, 0x00,
321 0x00, 0x00, 0x00, 0x4d, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
322 0xcd, 0x83, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
323 0xc7, 0x01, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0x40,
324 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
325 0xd1, 0x01, 0x91, 0x81, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89,
326 0x80, 0xb0, 0x01, 0x00, 0xb6, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
327 0xd0, 0x01, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xd1, 0x01, 0x55, 0x40,
328 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6f, 0x93, 0x01, 0x00,
329 0xf3, 0x9f, 0x00, 0x53, 0x6f, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
330 0x83, 0xb0, 0x01, 0x00, 0x00, 0x14, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
331 0x00, 0x00, 0x23, 0x40, 0x81, 0xb0, 0x01, 0x00, 0xda, 0x01, 0x22, 0xde,
332 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x49, 0xc1, 0x01, 0x00,
333 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0xd5, 0x01, 0xa2, 0x44,
334 0x81, 0x6c, 0x00, 0x00, 0x55, 0x01, 0x00, 0x43, 0xbf, 0xb3, 0x00, 0x00,
335 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x40, 0xf8,
336 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0xf0, 0x80, 0xb2, 0x01, 0x00,
337 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
338 0xf1, 0xb1, 0x01, 0x00, 0x5a, 0x01, 0x00, 0x40, 0xe1, 0xb1, 0x00, 0x00,
339 0xe2, 0x01, 0x00, 0x40, 0x91, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
340 0x91, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2e, 0x40, 0x49, 0xb1, 0x01, 0x00,
341 0x05, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00, 0x08, 0x00, 0x00, 0xdd,
342 0x81, 0xf4, 0x01, 0x00, 0xe7, 0x01, 0x00, 0x40, 0x80, 0xc8, 0x01, 0x00,
343 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00, 0xed, 0x01, 0x00, 0x40,
344 0x81, 0xb0, 0x00, 0x00, 0x58, 0x01, 0x00, 0xde, 0xa1, 0xb3, 0x00, 0x00,
345 0xff, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x01, 0x02, 0x00, 0x40,
346 0x81, 0xb0, 0x00, 0x00, 0x07, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
347 0x57, 0x01, 0x00, 0xdf, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0,
348 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde, 0xa1, 0xb1, 0x01, 0x00,
349 0x02, 0x00, 0x00, 0xd2, 0xa5, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2,
350 0xc1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00,
351 0xf7, 0x01, 0x22, 0x44, 0xc1, 0x53, 0x00, 0x00, 0xf6, 0x01, 0x84, 0x41,
352 0x81, 0x40, 0x00, 0x00, 0xfa, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
353 0x00, 0x00, 0x00, 0xd0, 0x45, 0xb1, 0x01, 0x00, 0xf1, 0x01, 0x00, 0x41,
354 0xa1, 0xc1, 0x00, 0x00, 0xb1, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
355 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x5a, 0x01, 0x00, 0xdd,
356 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb0, 0x01, 0x00,
357 0x40, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00, 0xb1, 0x02, 0x00, 0x40,
358 0x81, 0x32, 0x01, 0x00, 0x40, 0x00, 0x00, 0xd3, 0xa7, 0xcb, 0x01, 0x00,
359 0xc5, 0x02, 0x00, 0xe0, 0xa5, 0xb3, 0x00, 0x00, 0x03, 0x00, 0x00, 0x40,
360 0xa3, 0x9b, 0x01, 0x00, 0x58, 0x01, 0x00, 0xde, 0xa1, 0xb3, 0x00, 0x00,
361 0x00, 0x00, 0x00, 0x44, 0xbf, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde,
362 0x81, 0x90, 0x01, 0x00, 0x55, 0x01, 0xa2, 0xba, 0x80, 0x04, 0x00, 0x00,
363 0x60, 0x00, 0x00, 0xde, 0x61, 0x99, 0x01, 0x00, 0x04, 0x02, 0xa8, 0xb1,
364 0x80, 0x30, 0x00, 0x00, 0x57, 0x01, 0x00, 0x40, 0xe0, 0xb1, 0x00, 0x00,
365 0x00, 0x00, 0x00, 0xd0, 0xba, 0xb3, 0x01, 0x00, 0x68, 0x02, 0x00, 0x40,
366 0x81, 0x98, 0x01, 0x00, 0x5d, 0x02, 0x00, 0x4d, 0x83, 0x30, 0x01, 0x00,
367 0x00, 0x00, 0x00, 0x44, 0xe1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
368 0xe3, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe5, 0xb3, 0x01, 0x00,
369 0x00, 0x00, 0x00, 0x44, 0xe9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
370 0xeb, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf5, 0xb3, 0x01, 0x00,
371 0x00, 0x00, 0x00, 0x44, 0xf7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
372 0xf9, 0xb3, 0x01, 0x00, 0x15, 0x02, 0x22, 0x40, 0x8f, 0x6f, 0x00, 0x00,
373 0x75, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x5d, 0x02, 0x00, 0xc7,
374 0x83, 0x30, 0x01, 0x00, 0x7d, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
375 0x5d, 0x02, 0x00, 0x42, 0x83, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe8,
376 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xf1, 0xb1, 0x01, 0x00,
377 0x00, 0x00, 0x00, 0xea, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xeb,
378 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x85, 0xf0, 0xb1, 0x01, 0x00,
379 0x00, 0x00, 0x00, 0xec, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xed,
380 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xf0, 0xb1, 0x01, 0x00,
381 0xe0, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
382 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
383 0x00, 0x00, 0x00, 0xab, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb8,
384 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb9, 0xf0, 0xb1, 0x01, 0x00,
385 0x00, 0x00, 0x00, 0xba, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xbb,
386 0xf0, 0xb1, 0x01, 0x00, 0x29, 0x02, 0xb8, 0x40, 0x81, 0x30, 0x00, 0x00,
387 0x00, 0x00, 0x00, 0x40, 0x81, 0x90, 0x01, 0x00, 0x2b, 0x02, 0xb9, 0x40,
388 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0x90, 0x01, 0x00,
389 0x2d, 0x02, 0xba, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
390 0x81, 0x90, 0x01, 0x00, 0x2f, 0x02, 0xbb, 0x40, 0x81, 0x32, 0x00, 0x00,
391 0x00, 0x00, 0x00, 0x43, 0x81, 0x90, 0x01, 0x00, 0x31, 0x02, 0xbc, 0x40,
392 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x81, 0x90, 0x01, 0x00,
393 0x33, 0x02, 0xbd, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
394 0x81, 0x90, 0x01, 0x00, 0x35, 0x02, 0xbe, 0x40, 0x81, 0x32, 0x00, 0x00,
395 0x00, 0x00, 0x00, 0x46, 0x81, 0x90, 0x01, 0x00, 0x37, 0x02, 0xbf, 0x40,
396 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x81, 0x90, 0x01, 0x00,
397 0x39, 0x02, 0xc8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
398 0x81, 0x90, 0x01, 0x00, 0x3b, 0x02, 0xc9, 0x40, 0x81, 0x32, 0x00, 0x00,
399 0x00, 0x00, 0x00, 0x49, 0x81, 0x90, 0x01, 0x00, 0x3d, 0x02, 0xca, 0x40,
400 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x81, 0x90, 0x01, 0x00,
401 0x3f, 0x02, 0xcb, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
402 0x81, 0x90, 0x01, 0x00, 0x41, 0x02, 0xcc, 0x40, 0x81, 0x32, 0x00, 0x00,
403 0x00, 0x00, 0x00, 0x4c, 0x81, 0x90, 0x01, 0x00, 0x43, 0x02, 0xcd, 0x40,
404 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x81, 0x90, 0x01, 0x00,
405 0x45, 0x02, 0xce, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e,
406 0x81, 0x90, 0x01, 0x00, 0x47, 0x02, 0xcf, 0x40, 0x81, 0x32, 0x00, 0x00,
407 0x00, 0x00, 0x00, 0x4f, 0x81, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
408 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00,
409 0xaf, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc5, 0x02, 0x00, 0x40,
410 0x81, 0x32, 0x01, 0x00, 0xd0, 0x14, 0x2e, 0x06, 0xa5, 0xb3, 0x01, 0x00,
411 0x40, 0x00, 0x00, 0xd3, 0xa7, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
412 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xf1, 0xb1, 0x01, 0x00,
413 0x00, 0x00, 0x00, 0xf2, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf4,
414 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xf1, 0xb1, 0x01, 0x00,
415 0x00, 0x00, 0x00, 0xfa, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
416 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf1, 0xb1, 0x01, 0x00,
417 0x00, 0x00, 0x00, 0xeb, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee,
418 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xef, 0xf1, 0xb1, 0x01, 0x00,
419 0x00, 0x00, 0x00, 0xf3, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6,
420 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf1, 0xb1, 0x01, 0x00,
421 0xf7, 0x01, 0x00, 0xc7, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
422 0x81, 0xb2, 0x01, 0x00, 0x63, 0x02, 0x00, 0x48, 0x80, 0x32, 0x00, 0x00,
423 0x00, 0x00, 0x51, 0x40, 0x1a, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x4d, 0x40,
424 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
425 0x60, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x5c, 0x02, 0x49, 0x40,
426 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x52, 0x40, 0x1c, 0xb1, 0x01, 0x00,
427 0x00, 0x00, 0x4e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40,
428 0x81, 0xb2, 0x01, 0x00, 0x65, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
429 0x5c, 0x02, 0x4a, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
430 0x9e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xd8, 0xb3, 0x01, 0x00,
431 0x00, 0x00, 0x00, 0xa1, 0xd0, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2,
432 0xd2, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xd4, 0xb3, 0x01, 0x00,
433 0x00, 0x00, 0x00, 0xd0, 0xd6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1,
434 0xdc, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xde, 0xb3, 0x01, 0x00,
435 0x00, 0x00, 0x00, 0x88, 0xda, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4,
436 0x8e, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xe6, 0xb3, 0x01, 0x00,
437 0x00, 0x00, 0x00, 0xac, 0xec, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x99,
438 0xfa, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe0, 0xb3, 0x01, 0x00,
439 0x00, 0x00, 0x00, 0xd5, 0xe2, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
440 0xe4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe8, 0xb3, 0x01, 0x00,
441 0x00, 0x00, 0x00, 0xd5, 0xea, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
442 0xf4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xf6, 0xb3, 0x01, 0x00,
443 0x00, 0x00, 0x00, 0xd5, 0xf8, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc7,
444 0xa9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0xb1, 0x01, 0x00,
445 0x81, 0x02, 0x00, 0x40, 0x91, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
446 0x91, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00,
447 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0x85, 0x02, 0x00, 0x40,
448 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00,
449 0x8a, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x95, 0x02, 0x00, 0x40,
450 0x81, 0xb2, 0x00, 0x00, 0x95, 0x02, 0x00, 0x46, 0xa3, 0xb3, 0x00, 0x00,
451 0x98, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x9e, 0x02, 0x00, 0x40,
452 0x81, 0xb2, 0x00, 0x00, 0x8c, 0x02, 0x23, 0x50, 0xa5, 0x6f, 0x00, 0x00,
453 0x00, 0x00, 0x00, 0x50, 0xa5, 0xb3, 0x01, 0x00, 0xbc, 0x02, 0x00, 0x42,
454 0xa5, 0x63, 0x01, 0x00, 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
455 0xd0, 0x14, 0x2d, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
456 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde, 0xa1, 0xb1, 0x01, 0x00,
457 0x00, 0x00, 0x00, 0xf8, 0x00, 0xb0, 0x01, 0x00, 0x94, 0x02, 0x22, 0x44,
458 0xa5, 0x53, 0x00, 0x00, 0x91, 0x02, 0x00, 0x41, 0xa1, 0xc1, 0x00, 0x00,
459 0x5a, 0x01, 0x00, 0xdd, 0xa1, 0xb1, 0x00, 0x00, 0xbc, 0x02, 0x00, 0xde,
460 0xa1, 0x33, 0x01, 0x00, 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
461 0x5a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
462 0xbf, 0xb3, 0x01, 0x00, 0x55, 0x01, 0xa2, 0xd2, 0x77, 0x7d, 0x00, 0x00,
463 0x00, 0x00, 0x00, 0xd2, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde,
464 0x63, 0xb1, 0x01, 0x00, 0x9b, 0x02, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
465 0x5a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xbc, 0x02, 0x00, 0x54,
466 0xa5, 0x33, 0x01, 0x00, 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
467 0xd0, 0x14, 0x2d, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
468 0xd0, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd2, 0xb3, 0x01, 0x00,
469 0x00, 0x00, 0x00, 0xf8, 0xd4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
470 0xd6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0xb1, 0x01, 0x00,
471 0xa9, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x5d, 0x02, 0x00, 0x46,
472 0x83, 0x30, 0x01, 0x00, 0x5a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
473 0x00, 0x00, 0x00, 0xa0, 0x9e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe8,
474 0x43, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x45, 0xb1, 0x01, 0x00,
475 0x00, 0x00, 0x00, 0xea, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xeb,
476 0xa1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0xb1, 0x01, 0x00,
477 0x00, 0x00, 0x00, 0xe7, 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8,
478 0xa9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
479 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
480 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xf1, 0xb1, 0x01, 0x00,
481 0x00, 0x00, 0x00, 0xd3, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4,
482 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xe1, 0xb1, 0x01, 0x00,
483 0x00, 0x00, 0x00, 0xd1, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20,
484 0x62, 0xdd, 0x01, 0x00, 0xb9, 0x02, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
485 0x00, 0x00, 0x80, 0xcc, 0x85, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe7,
486 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xa9, 0xb3, 0x01, 0x00,
487 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb,
488 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0xb1, 0x01, 0x00,
489 0x00, 0x00, 0x00, 0xd2, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
490 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf1, 0xb1, 0x01, 0x00,
491 0xb8, 0x02, 0x00, 0xd4, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xcc,
492 0x85, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xb0, 0x01, 0x00,
493 0xc7, 0x02, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0xc6, 0x02, 0xa2, 0xf2,
494 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcc, 0x85, 0x83, 0x01, 0x00,
495 0x00, 0x00, 0x00, 0x40, 0x81, 0xb0, 0x01, 0x00, 0xcb, 0x02, 0x80, 0xa5,
496 0x80, 0x32, 0x00, 0x00, 0xcc, 0x02, 0x00, 0xa5, 0x80, 0x32, 0x00, 0x00,
497 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0xcd, 0x02, 0x80, 0xa5,
498 0x80, 0x32, 0x00, 0x00, 0x80, 0x01, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
499 0xd6, 0x02, 0x20, 0x4f, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40,
500 0x83, 0x98, 0x01, 0x00, 0xd6, 0x02, 0x20, 0x4b, 0x81, 0x6c, 0x00, 0x00,
501 0x80, 0x00, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0xd6, 0x02, 0x20, 0x47,
502 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
503 0x00, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x03, 0x90, 0x00, 0x41,
504 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
505 0x00, 0x14, 0x2f, 0x4c, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
506 0xf1, 0xb1, 0x01, 0x00, 0xda, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
507 0x02, 0x00, 0x00, 0xa5, 0x80, 0xc8, 0x01, 0x00, 0xdd, 0x02, 0xa2, 0xa5,
508 0x80, 0x6c, 0x00, 0x00, 0x20, 0x00, 0x00, 0x90, 0x20, 0x99, 0x01, 0x00,
509 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00, 0xe0, 0x02, 0x1f, 0x91,
510 0x80, 0x32, 0x00, 0x00, 0x30, 0x00, 0x00, 0x90, 0x20, 0x99, 0x01, 0x00,
511 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00, 0xe3, 0x02, 0x1f, 0x91,
512 0x80, 0x32, 0x00, 0x00, 0x70, 0x00, 0x00, 0x90, 0x20, 0xa9, 0x01, 0x00,
513 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00, 0xe6, 0x02, 0x1f, 0x91,
514 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00,
515 0xe8, 0x02, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00, 0x40, 0x68, 0x00, 0x90,
516 0x20, 0xa9, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
517 0x21, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x22, 0x00, 0x00, 0x40,
518 0x61, 0x99, 0x01, 0x00, 0x23, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
519 0x24, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x25, 0x00, 0x00, 0x40,
520 0x61, 0x99, 0x01, 0x00, 0x26, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
521 0x27, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40,
522 0x61, 0x99, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
523 0x02, 0x01, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00, 0x04, 0x03, 0x00, 0x40,
524 0x80, 0x98, 0x01, 0x00, 0x06, 0x05, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
525 0x08, 0x07, 0x00, 0x41, 0x82, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
526 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe0, 0xb1, 0x01, 0x00,
527 0x30, 0x03, 0x00, 0x40, 0x85, 0x30, 0x01, 0x00, 0x39, 0x03, 0x00, 0x40,
528 0x81, 0x32, 0x01, 0x00, 0xd8, 0x14, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
529 0xff, 0x02, 0xa2, 0xf8, 0x80, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x22, 0xf0,
530 0x82, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x21, 0x91, 0x01, 0x00,
531 0xd0, 0x14, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x30, 0x03, 0x00, 0x0c,
532 0x85, 0x30, 0x01, 0x00, 0x30, 0x03, 0x00, 0x4d, 0x85, 0x10, 0x01, 0x00,
533 0x30, 0x03, 0x00, 0x4e, 0x85, 0x10, 0x01, 0x00, 0xd0, 0x14, 0x20, 0x4f,
534 0xe1, 0xb1, 0x01, 0x00, 0x30, 0x03, 0x00, 0x4f, 0x85, 0x10, 0x01, 0x00,
535 0x39, 0x03, 0x00, 0x0c, 0x85, 0x30, 0x01, 0x00, 0xd8, 0x14, 0x20, 0x43,
536 0x81, 0xb0, 0x01, 0x00, 0x0f, 0x03, 0x22, 0xf0, 0x9e, 0x6e, 0x00, 0x00,
537 0x39, 0x03, 0x00, 0x4d, 0x85, 0x10, 0x01, 0x00, 0xd8, 0x14, 0x20, 0x42,
538 0x81, 0xb0, 0x01, 0x00, 0x0f, 0x03, 0x22, 0xf0, 0x9e, 0x6e, 0x00, 0x00,
539 0x39, 0x03, 0x00, 0x4e, 0x85, 0x10, 0x01, 0x00, 0xd8, 0x14, 0x20, 0x41,
540 0x81, 0xb0, 0x01, 0x00, 0x11, 0x03, 0xa2, 0xf0, 0x9e, 0x6e, 0x00, 0x00,
541 0x00, 0x00, 0x00, 0x49, 0x81, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
542 0x20, 0x95, 0x01, 0x00, 0x03, 0x00, 0x00, 0x90, 0x20, 0x8d, 0x01, 0x00,
543 0x00, 0x00, 0x00, 0x43, 0x21, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1b,
544 0x89, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
545 0x30, 0x03, 0x00, 0x17, 0x85, 0x30, 0x01, 0x00, 0x30, 0x03, 0x00, 0x58,
546 0x85, 0x10, 0x01, 0x00, 0x30, 0x03, 0x00, 0x59, 0x85, 0x10, 0x01, 0x00,
547 0xd0, 0x14, 0x20, 0x4f, 0xe1, 0xb1, 0x01, 0x00, 0x30, 0x03, 0x00, 0x5a,
548 0x85, 0x10, 0x01, 0x00, 0x39, 0x03, 0x00, 0x17, 0x85, 0x30, 0x01, 0x00,
549 0xd8, 0x14, 0x20, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x23, 0x03, 0x22, 0xf0,
550 0x9e, 0x6e, 0x00, 0x00, 0x39, 0x03, 0x00, 0x58, 0x85, 0x10, 0x01, 0x00,
551 0xd8, 0x14, 0x20, 0x41, 0x81, 0xb0, 0x01, 0x00, 0x23, 0x03, 0x22, 0xf0,
552 0x9e, 0x6e, 0x00, 0x00, 0x39, 0x03, 0x00, 0x59, 0x85, 0x10, 0x01, 0x00,
553 0xd8, 0x14, 0x20, 0x42, 0x81, 0xb0, 0x01, 0x00, 0x27, 0x03, 0xa2, 0xf0,
554 0x9e, 0x6e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x90, 0x20, 0x8d, 0x01, 0x00,
555 0x00, 0x00, 0x00, 0x40, 0x20, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
556 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x88, 0xe0, 0x01, 0x00,
557 0x2f, 0x03, 0xa2, 0x42, 0x21, 0x7d, 0x00, 0x00, 0xa5, 0xa5, 0x00, 0x40,
558 0x81, 0x98, 0x01, 0x00, 0xd0, 0x14, 0x20, 0x40, 0xe0, 0xb1, 0x01, 0x00,
559 0x30, 0x03, 0x00, 0x44, 0x84, 0x30, 0x01, 0x00, 0x39, 0x03, 0x00, 0x40,
560 0x81, 0x32, 0x01, 0x00, 0xd8, 0x14, 0x20, 0x40, 0x81, 0xb2, 0x01, 0x00,
561 0x2f, 0x03, 0xa2, 0xf0, 0x80, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
562 0x89, 0xe0, 0x01, 0x00, 0xe0, 0x00, 0x80, 0x40, 0x61, 0x99, 0x01, 0x00,
563 0x70, 0x15, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
564 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
565 0xd0, 0x14, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55,
566 0x87, 0xb4, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
567 0x70, 0x15, 0x00, 0x43, 0x62, 0x99, 0x01, 0x00, 0x36, 0x03, 0xa8, 0x40,
568 0x81, 0x32, 0x00, 0x00, 0x41, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
569 0x70, 0x15, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
570 0xf1, 0xb1, 0x01, 0x00, 0xd8, 0x14, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
571 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55,
572 0x87, 0xb4, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
573 0x70, 0x15, 0x00, 0x43, 0x62, 0x99, 0x01, 0x00, 0x3f, 0x03, 0xa8, 0x40,
574 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x87, 0xb0, 0x01, 0x00,
575 0x42, 0x03, 0xa2, 0x41, 0x87, 0x50, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xf2,
576 0x86, 0xb0, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf1, 0x86, 0xf4, 0x01, 0x00,
577 0x41, 0x03, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
578 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x84, 0xb0, 0x01, 0x00,
579 0x00, 0x00, 0xa2, 0x48, 0x84, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f,
580 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x8f, 0x90, 0x01, 0x00,
581 0x00, 0x00, 0x00, 0x47, 0x62, 0xb1, 0x01, 0x00, 0x49, 0x03, 0xa8, 0x40,
582 0x81, 0x32, 0x00, 0x00, 0xf5, 0x9f, 0x00, 0x47, 0x98, 0x30, 0x01, 0x00,
583 0x00, 0x08, 0x00, 0x47, 0x8e, 0xc8, 0x01, 0x00, 0x47, 0x03, 0x00, 0x5c,
584 0x8f, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
585 0x58, 0x15, 0x2d, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2d, 0xf0,
586 0x88, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x8a, 0xb0, 0x01, 0x00,
587 0x00, 0x00, 0x00, 0x45, 0x81, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x45,
588 0x82, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x8b, 0xf0, 0x01, 0x00,
589 0x00, 0x00, 0x00, 0x48, 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
590 0x82, 0x94, 0x01, 0x00, 0x20, 0x00, 0x00, 0x41, 0x60, 0x99, 0x01, 0x00,
591 0x00, 0x00, 0x00, 0x41, 0x8d, 0xc0, 0x01, 0x00, 0x64, 0x03, 0x22, 0x5f,
592 0x8d, 0x6c, 0x00, 0x00, 0x55, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
593 0x53, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40,
594 0x85, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x82, 0xb0, 0x01, 0x00,
595 0x00, 0x00, 0x00, 0x41, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x43,
596 0x86, 0xd8, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x41, 0x85, 0x50, 0x01, 0x00,
597 0x60, 0x03, 0x00, 0x41, 0x83, 0xe0, 0x00, 0x00, 0x5e, 0x03, 0x00, 0x40,
598 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xe0, 0x01, 0x00,
599 0xd0, 0x14, 0x2f, 0x46, 0x84, 0x94, 0x01, 0x00, 0x20, 0x00, 0x00, 0x42,
600 0x60, 0x99, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
601 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x07, 0x00, 0x00, 0x45,
602 0x80, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x8b, 0xf0, 0x01, 0x00,
603 0x00, 0x04, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0x6f, 0x03, 0xa0, 0x41,
604 0x81, 0x50, 0x00, 0x00, 0x6d, 0x03, 0x00, 0x41, 0x82, 0xe8, 0x00, 0x00,
605 0x00, 0x00, 0x80, 0x41, 0x8e, 0xc0, 0x01, 0x00, 0xae, 0x03, 0x00, 0x40,
606 0xa3, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x81, 0xb0, 0x01, 0x00,
607 0x60, 0x15, 0x00, 0x40, 0x85, 0x98, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40,
608 0x40, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x41, 0x94, 0x01, 0x00,
609 0x00, 0x00, 0x00, 0x50, 0x41, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
610 0x40, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
611 0x00, 0x00, 0xa3, 0x55, 0x81, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
612 0xa3, 0xc1, 0x01, 0x00, 0x73, 0x03, 0x00, 0x50, 0x85, 0xc0, 0x00, 0x00,
613 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40,
614 0x83, 0x98, 0x01, 0x00, 0x00, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
615 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x7e, 0x03, 0xa2, 0x41,
616 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00,
617 0x0b, 0x00, 0x00, 0x44, 0x82, 0xf4, 0x01, 0x00, 0x1a, 0x15, 0x00, 0xa6,
618 0x86, 0xb0, 0x01, 0x00, 0x70, 0x15, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
619 0x00, 0x08, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
620 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x16, 0x00, 0x40, 0xe1, 0x99, 0x01, 0x00,
621 0x04, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x70, 0x15, 0x00, 0x43,
622 0x62, 0x99, 0x01, 0x00, 0x88, 0x03, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
623 0x8a, 0x03, 0x22, 0x5a, 0x73, 0x7d, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x40,
624 0x61, 0x99, 0x01, 0x00, 0x8b, 0x03, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00,
625 0x00, 0x08, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00, 0x83, 0x03, 0xa2, 0x41,
626 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
627 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
628 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
629 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
630 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
631 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
632 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
633 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
638 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
639 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
640 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
641 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
642 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
643 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
644 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
645 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
646 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
647 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
648 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
649 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
650 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
651 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
652 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
653 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
654 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
655 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
656 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
657 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
658 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
659 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
660 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
661 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
662 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
663 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
664 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
665 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
666 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
668 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
670 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
744 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
745 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
746 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
747 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
748 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
749 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
750 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
751 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
752 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
753 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
760 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
761 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
762 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
763 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
764 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
765 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
767 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
768 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
769 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
770 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
771 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
772 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
773 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
774 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
775 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
776 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
777 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
778 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
779 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
780 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
787 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
788 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
789 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
790 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
791 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
792 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
793 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
794 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
795 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
796 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
797 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
798 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
799 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
800 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
801 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
802 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
803 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
804 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
805 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
806 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
807 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
808 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
809 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
810 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
811 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
812 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
813 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
814 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
815 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
816 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
817 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
818 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
819 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
820 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
821 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
822 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
823 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
824 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
825 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
826 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
827 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
828 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
829 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
830 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
831 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
832 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
833 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
834 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
840 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
841 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
842 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
843 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
844 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
845 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
846 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
847 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
848 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
849 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
850 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
851 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
852 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
853 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
854 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
855 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
856 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
857 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
858 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
859 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
860 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
861 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
862 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
863 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
864 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
865 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
866 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
867 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
868 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
869 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
870 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
871 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
872 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
873 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
874 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
875 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
876 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
877 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
878 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
879 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
880 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
881 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
882 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
883 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
884 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
885 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
886 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
887 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
888 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
889 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
890 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
891 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
892 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
893 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
894 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
895 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
896 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
897 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
898 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
899 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
900 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
901 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
902 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
903 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
904 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
905 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
906 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
907 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
908 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
909 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
910 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
911 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
912 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
913 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
914 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
915 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
916 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
917 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
918 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
919 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
920 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
921 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
922 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
923 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
924 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
925 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
926 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
927 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
928 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
929 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
930 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
931 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
932 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
933 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
934 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
935 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
936 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
937 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
938 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
939 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
940 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
941 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
942 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
943 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
944 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
945 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
946 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
947 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
948 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
949 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
950 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
951 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
952 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
953 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
954 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
955 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
956 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
957 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
958 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
959 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
960 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
961 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
962 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
963 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
964 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
965 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
966 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
967 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
968 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
969 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
970 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
971 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
972 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
973 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
974 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
975 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
976 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
977 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
978 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
979 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
980 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
981 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
982 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
983 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
984 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
985 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
986 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
987 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
988 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
989 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
990 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
991 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
992 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
993 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
994 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
995 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
996 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
997 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
998 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
999 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1000 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1001 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1002 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1003 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1004 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1005 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1006 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1007 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1008 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1009 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1010 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1011 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1012 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1013 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1014 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1015 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1016 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1017 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1018 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1019 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1020 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1021 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1022 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1023 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1024 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1025 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1026 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1027 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1028 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1029 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1030 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1031 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1032 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1033 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1034 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1035 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1036 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1037 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1038 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1039 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1040 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1041 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1042 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1043 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1044 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1045 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1046 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1047 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1048 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1049 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1050 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1051 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1052 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1053 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1054 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1055 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1056 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1057 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1058 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1059 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1060 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1061 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1062 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1063 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1064 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1065 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1066 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1067 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1068 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1069 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1070 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1071 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1072 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1073 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1074 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1075 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1076 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1077 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1078 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1079 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1080 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1081 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1082 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1083 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1084 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1085 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1086 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1087 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1088 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1089 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1090 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1091 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1092 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1093 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1094 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1095 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1096 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1097 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1098 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1099 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1100 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1101 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1102 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1103 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1104 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1105 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1106 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1107 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1108 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1109 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1110 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1111 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1112 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1113 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1114 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1115 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1116 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1117 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1118 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1119 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1120 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1121 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1122 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1123 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1124 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1125 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1126 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1127 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1128 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1129 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1130 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1131 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1132 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1133 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1134 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1135 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1136 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1137 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1138 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1139 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1140 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1141 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1142 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1143 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1144 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1145 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1146 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1147 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1148 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1149 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1150 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1151 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1152 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1153 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1154 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1155 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1156 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1157 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1158 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1159 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1160 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1161 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1162 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1163 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1164 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1165 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1166 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1167 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1168 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1169 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1170 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1171 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1172 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1173 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1174 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1175 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1176 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1177 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1178 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1179 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1180 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1181 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1182 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1183 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1184 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1185 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1186 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1187 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1188 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1189 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1190 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1191 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1192 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1193 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1194 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1195 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1196 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1197 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1198 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1199 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1200 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1201 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1202 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1203 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1204 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1205 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1206 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1207 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1208 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1209 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1210 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1211 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1212 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1213 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1214 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1215 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1216 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1217 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1218 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1219 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1220 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1221 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1222 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1223 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1224 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1225 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1226 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1227 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1228 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1229 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1230 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1231 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1232 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1233 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1234 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1235 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1236 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1237 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1238 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1239 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1240 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1241 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1242 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1243 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1244 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1245 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1246 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1247 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1248 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1249 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1250 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1251 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1252 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1253 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1254 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1255 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1256 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1257 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1258 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1259 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1260 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1261 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1262 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1263 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1264 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1265 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1266 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1267 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1268 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1269 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1270 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1271 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1272 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1273 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1274 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1275 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1276 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1277 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1278 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1279 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1280 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1281 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1282 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1283 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1284 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1285 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1286 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1287 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1288 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1289 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1290 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1291 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1292 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1293 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1294 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1295 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1296 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1297 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1298 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1299 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1300 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1301 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1302 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1303 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1304 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1305 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1306 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1307 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1308 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1309 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1310 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1311 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1312 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1313 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1314 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1315 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1316 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1317 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1318 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1319 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1320 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1321 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1322 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1323 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1324 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1325 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1326 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1327 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1328 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1329 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1330 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1331 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1332 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1333 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1334 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1335 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1336 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1337 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1338 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1339 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1340 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1341 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1342 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1343 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1344 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1345 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1346 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1347 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1348 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1349 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1350 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1351 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1352 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1353 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1376 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1377 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1378 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1379 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1380 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1381 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1382 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1383 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1384 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1385 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1386 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1387 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1388 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1389 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1390 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1391 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1392 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1393 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1394 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1395 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1396 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1397 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1398 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1399 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1400 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1401 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1402 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1403 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1404 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1405 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1406 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1407 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1408 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1409 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1410 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1411 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1412 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1413 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1414 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1415 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1416 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1417 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1418 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1419 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1420 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1421 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1422 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1423 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1424 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1425 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1426 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1427 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1428 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1429 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1430 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1431 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1432 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1433 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1434 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1435 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1436 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1437 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1438 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1439 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1440 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1441 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1442 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1443 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1444 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1445 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1446 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1447 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1448 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1449 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1450 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1451 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1454 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1455 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1456 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1457 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1458 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1459 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1460 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1461 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1465 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1466 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1467 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1468 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1469 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1470 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1471 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1472 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1473 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1474 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1475 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1476 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1483 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1484 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1485 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1486 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1487 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1488 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1492 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1493 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1494 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1495 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1496 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1497 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1498 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1499 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1500 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1501 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1502 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1503 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1504 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1505 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1506 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1507 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1508 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1509 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1510 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1511 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1512 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1513 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1514 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1515 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1516 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1517 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1518 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1519 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1520 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1524 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1525 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1526 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1527 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1528 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1529 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1530 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1531 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1532 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1533 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1534 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1535 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1536 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1537 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1538 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1539 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1540 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1541 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1542 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1543 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1544 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1545 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1546 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1547 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1548 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1549 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1550 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1551 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1552 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1553 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1554 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1555 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1556 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1557 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1558 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1559 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1560 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1561 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1562 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1563 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1564 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1565 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1566 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1567 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1568 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1569 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1570 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1571 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1572 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1573 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1574 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1575 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1577 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1578 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1579 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1580 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1581 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1582 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1583 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1584 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1585 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1586 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1587 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1588 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1589 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1590 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1591 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1592 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1593 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1594 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1595 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1596 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1597 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1598 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1599 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1600 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1601 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1602 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1603 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1604 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1605 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1606 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1607 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1608 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1609 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1610 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1611 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1612 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1614 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1615 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1616 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1617 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1618 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1619 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1620 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1621 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1622 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1623 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1624 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1625 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1626 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1627 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1628 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1629 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1630 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1631 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1632 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1633 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1638 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1639 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1640 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1641 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1642 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1643 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1644 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1645 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1646 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1647 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1648 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1649 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1650 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1651 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1652 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1653 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1654 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1655 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1656 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1657 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1658 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1659 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1660 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1661 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1662 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1663 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1664 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1665 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1666 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1668 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1670 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1744 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1745 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1746 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1747 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1748 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1749 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1750 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1751 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1752 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1753 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1760 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1761 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1762 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1763 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1764 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1765 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1767 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1768 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1769 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1770 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1771 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1772 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1773 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1774 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1775 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1776 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1777 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1778 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1779 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1780 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1787 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1788 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1789 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1790 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1791 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1792 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1793 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1794 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1795 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1796 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1797 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1798 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1799 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1800 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1801 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1802 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1803 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1804 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1805 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1806 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1807 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1808 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1809 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1810 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1811 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1812 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1813 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1814 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1815 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1816 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1817 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1818 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1819 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1820 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1821 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1822 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1823 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1824 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1825 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1826 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1827 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1828 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1829 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1830 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1831 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1832 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1833 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1834 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1840 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1841 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1842 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1843 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1844 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1845 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1846 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1847 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1848 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1849 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1850 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1851 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1852 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1853 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1854 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1855 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1856 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1857 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1858 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1859 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1860 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1861 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1862 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1863 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1864 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1865 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1866 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1867 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1868 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1869 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1870 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1871 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1872 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1873 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1874 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1875 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1876 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1877 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1878 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1879 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1880 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1881 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1882 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1883 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1884 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1885 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1886 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1887 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1888 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1889 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1890 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1891 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1892 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1893 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1894 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1895 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1896 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1897 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1898 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1899 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1900 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1901 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1902 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1903 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1904 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1905 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1906 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1907 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1908 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1909 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1910 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1911 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1912 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1913 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1914 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1915 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1916 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1917 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1918 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1919 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1920 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1921 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1922 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1923 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1924 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1925 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1926 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1927 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1928 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1929 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1930 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1931 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1932 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1933 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1934 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1935 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1936 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1937 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1938 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1939 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1940 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1941 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1942 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1943 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1944 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1945 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1946 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1947 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1948 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1949 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1950 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1951 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1952 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1953 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1954 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1955 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1956 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1957 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1958 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1959 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1960 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1961 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1962 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1963 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1964 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1965 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1966 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1967 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1968 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1969 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1970 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1971 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1972 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1973 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1974 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1975 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1976 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1977 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1978 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1979 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1980 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1981 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1982 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1983 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1984 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1985 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1986 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1987 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1988 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1989 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1990 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1991 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1992 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1993 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1994 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1995 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1996 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1997 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1998 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1999 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2000 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2001 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2002 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2003 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2004 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2005 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2006 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2007 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2008 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2009 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2010 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2011 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2012 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2013 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2014 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2015 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2016 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2017 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2018 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2019 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2020 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2021 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2022 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2023 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2024 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2025 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2026 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2027 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2028 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2029 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2030 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2031 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2032 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2033 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2034 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2035 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2036 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2037 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2038 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2039 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2040 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2041 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2042 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2043 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2044 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2045 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2046 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2047 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2048 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2049 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2050 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2051 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2052 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2053 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2054 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2055 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2056 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2057 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2058 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2059 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2060 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2061 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2062 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2063 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2064 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2065 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2066 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2067 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2068 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2069 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2070 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2071 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2072 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2073 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2074 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2075 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2076 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2077 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2078 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2079 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2080 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2081 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2082 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2083 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2084 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2085 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2086 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2087 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2088 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2089 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2090 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2091 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2092 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2093 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2094 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2095 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2096 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2097 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2098 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2099 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2100 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2101 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2102 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2103 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2104 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2105 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2106 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2107 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2108 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2109 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2110 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2111 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2112 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2113 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2114 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2115 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2116 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2117 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2118 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2119 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2120 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2121 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2122 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2123 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2124 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2125 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2126 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2127 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2128 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2129 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2130 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2131 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2132 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2133 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2134 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2135 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2136 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2137 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2138 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2139 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2140 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2141 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2142 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2143 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2144 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2145 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2146 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2147 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2148 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2149 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2150 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2151 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2152 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2153 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2154 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2155 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2156 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2157 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2158 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2159 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2160 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2161 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2162 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2163 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2164 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2165 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2166 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2167 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2168 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2169 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2170 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2171 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2172 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2173 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2174 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2175 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2176 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2177 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2178 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2179 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2180 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2181 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2182 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2183 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2184 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2185 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2186 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2187 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2188 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2189 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2190 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2191 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2192 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2193 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2194 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2195 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2196 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2197 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2198 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2199 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2200 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2201 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2202 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2203 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2204 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2205 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2206 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2207 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2208 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2209 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2210 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2211 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2212 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2213 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2214 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2215 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2216 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2217 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2218 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2219 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2220 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2221 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2222 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2223 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2224 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2225 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2226 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2227 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2228 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2229 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2230 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2231 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2232 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2233 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2234 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2235 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2236 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2237 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2238 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2239 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2240 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2241 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2242 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2243 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2244 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2245 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2246 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2247 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2248 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2249 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2250 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2251 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2252 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2253 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2254 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2255 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2256 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2257 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2258 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2259 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2260 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2261 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2262 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2263 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2264 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2265 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2266 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2267 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2268 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2269 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2270 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2271 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2272 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2273 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2274 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2275 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2276 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2277 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2278 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2279 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2280 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2281 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2282 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2283 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2284 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2285 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2286 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2287 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2288 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2289 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2290 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2291 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2292 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2293 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2294 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2295 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2296 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2297 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2298 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2299 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2300 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2301 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2302 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2303 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2304 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2305 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2306 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2307 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2308 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2309 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2310 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2311 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2312 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2313 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2314 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2315 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2316 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2317 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2318 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2319 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2320 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2321 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2322 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2323 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2324 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2325 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2326 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2327 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2328 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2329 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2330 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2331 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2332 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2333 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2334 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2335 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2336 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2337 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2338 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2339 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2340 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2341 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2342 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2343 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2344 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2345 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2346 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2347 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2348 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2349 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2350 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2351 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2352 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2353 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2376 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2377 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2378 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2379 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2380 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2381 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2382 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2383 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2384 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2385 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2386 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2387 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2388 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2389 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2390 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2391 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2392 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2393 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2394 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2395 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2396 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2397 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2398 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2399 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2400 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2401 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2402 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2403 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2404 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2405 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2406 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2407 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2408 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2409 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2410 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2411 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2412 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2413 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2414 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2415 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2416 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2417 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2418 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2419 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2420 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2421 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2422 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2423 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2424 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2425 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2426 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2427 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2428 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2429 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2430 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2431 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2432 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2433 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2434 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2435 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2436 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2437 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2438 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2439 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2440 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2441 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2442 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2443 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2444 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2445 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2446 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2447 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2448 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2449 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2450 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2451 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2454 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2455 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2456 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2457 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2458 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2459 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2460 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2461 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2465 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2466 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2467 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2468 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2469 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2470 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2471 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2472 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2473 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2474 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2475 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2476 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2483 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2484 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2485 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2486 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2487 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2488 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2492 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2493 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2494 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2495 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2496 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2497 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2498 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2499 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2500 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2501 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2502 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2503 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2504 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2505 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2506 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2507 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2508 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2509 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2510 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2511 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2512 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2513 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2514 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2515 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2516 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2517 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2518 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2519 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2520 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2524 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2525 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2526 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2527 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2528 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2529 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2530 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2531 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2532 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2533 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2534 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2535 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2536 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2537 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2538 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2539 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2540 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2541 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2542 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2543 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2544 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2545 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2546 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2547 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2548 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2549 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2550 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2551 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2552 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2553 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2554 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2555 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2556 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2557 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2558 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2559 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2560 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2561 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2562 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2563 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2564 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2565 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2566 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2567 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2568 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2569 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2570 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2571 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2572 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2573 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2574 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2575 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2577 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2578 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2579 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2580 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2581 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2582 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2583 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2584 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2585 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2586 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2587 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2588 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2589 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2590 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2591 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2592 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2593 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2594 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2595 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2596 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2597 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2598 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2599 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2600 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2601 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2602 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2603 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2604 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2605 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2606 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2607 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2608 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2609 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2610 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2611 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2612 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2614 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2615 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2616 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2617 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2618 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2619 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2620 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2621 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2622 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2623 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2624 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2625 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2626 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2627 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2628 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2629 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2630 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2631 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2632 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2633 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2638 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2639 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2640 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2641 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2642 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2643 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2644 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2645 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2646 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2647 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2648 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2649 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2650 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2651 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2652 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2653 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2654 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2655 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2656 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2657 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2658 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2659 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2660 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2661 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2662 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2663 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2664 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2665 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2666 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2668 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2670 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf7, 0x0f, 0x00, 0xbc,
2744 0x80, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2745 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
2746 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2747 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
2748 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2749 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2750 },
2751 {
2752 0x31, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x34, 0x80, 0x00, 0x40,
2753 0x81, 0xb2, 0x00, 0x00, 0x35, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2754 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0x80, 0x81, 0x80,
2755 0x80, 0x32, 0x00, 0x00, 0xe6, 0x89, 0xa2, 0x40, 0x91, 0x6f, 0x00, 0x00,
2756 0x00, 0x00, 0x00, 0x4c, 0x90, 0xb3, 0x01, 0x00, 0x5c, 0x95, 0x2e, 0xa2,
2757 0x80, 0xb0, 0x01, 0x00, 0xff, 0x00, 0x00, 0x80, 0xf4, 0x89, 0x01, 0x00,
2758 0x90, 0x95, 0x2a, 0xc8, 0xe5, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1,
2759 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb1, 0x01, 0x00,
2760 0x00, 0x00, 0x00, 0xa4, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
2761 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf0, 0xb1, 0x01, 0x00,
2762 0x00, 0x00, 0x00, 0xd2, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
2763 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf0, 0xb1, 0x01, 0x00,
2764 0x00, 0x00, 0x00, 0xd3, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee,
2765 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xf0, 0xb1, 0x01, 0x00,
2766 0x00, 0x00, 0x00, 0x40, 0x44, 0xb1, 0x01, 0x00, 0x18, 0x80, 0x11, 0x81,
2767 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0x51, 0x40, 0x81, 0xb2, 0x01, 0x00,
2768 0x1a, 0x80, 0x11, 0x82, 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0x52, 0x40,
2769 0x81, 0xb2, 0x01, 0x00, 0xe6, 0x89, 0x00, 0x48, 0xfd, 0x93, 0x00, 0x00,
2770 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x23, 0x80, 0xa2, 0x42,
2771 0xfd, 0x7f, 0x00, 0x00, 0x20, 0x80, 0x00, 0x80, 0x80, 0x32, 0x00, 0x00,
2772 0x22, 0x80, 0x11, 0x81, 0x82, 0x30, 0x00, 0x00, 0x22, 0x80, 0x51, 0x40,
2773 0x81, 0xb2, 0x00, 0x00, 0x22, 0x80, 0x11, 0x82, 0x82, 0x30, 0x00, 0x00,
2774 0x22, 0x80, 0x52, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x48,
2775 0xfd, 0x93, 0x00, 0x00, 0x27, 0x80, 0x00, 0x80, 0x80, 0x32, 0x00, 0x00,
2776 0x26, 0x80, 0xa2, 0x53, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x51, 0x53,
2777 0x07, 0x90, 0x01, 0x00, 0x2a, 0x80, 0x00, 0x52, 0x07, 0x90, 0x00, 0x00,
2778 0x29, 0x80, 0xa2, 0x52, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52,
2779 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
2780 0x00, 0x00, 0x00, 0x48, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
2781 0xf3, 0x93, 0x01, 0x00, 0x5c, 0x95, 0x2e, 0xa2, 0x52, 0xb3, 0x01, 0x00,
2782 0xff, 0x00, 0x00, 0x80, 0xf4, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
2783 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x45, 0xb1, 0x01, 0x00,
2784 0x30, 0x80, 0x00, 0x4c, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x45, 0x40,
2785 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x55, 0x40, 0x81, 0xb2, 0x01, 0x00,
2786 0x1b, 0x84, 0x05, 0x40, 0x49, 0xb1, 0x00, 0x00, 0x1b, 0x84, 0x05, 0x40,
2787 0x49, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x49, 0xb1, 0x01, 0x00,
2788 0xe1, 0x80, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
2789 0xde, 0xb2, 0x01, 0x00, 0x77, 0x00, 0x00, 0x40, 0x4b, 0x99, 0x01, 0x00,
2790 0x00, 0x00, 0x00, 0x40, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
2791 0xfd, 0x83, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40, 0x9b, 0x9b, 0x01, 0x00,
2792 0x00, 0x00, 0x00, 0xa5, 0x9c, 0xb3, 0x01, 0x00, 0xde, 0x99, 0x00, 0x40,
2793 0x81, 0x32, 0x01, 0x00, 0x58, 0x95, 0x20, 0x44, 0xe0, 0xb1, 0x01, 0x00,
2794 0x00, 0xc0, 0x00, 0xa6, 0x36, 0xb1, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40,
2795 0x47, 0x99, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
2796 0x00, 0x38, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x06, 0x00, 0x40,
2797 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
2798 0x05, 0x18, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x02, 0x09, 0x00, 0x40,
2799 0xf5, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
2800 0x50, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x7b, 0x03, 0x00, 0x40,
2801 0x81, 0x32, 0x01, 0x00, 0xe0, 0x83, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2802 0x10, 0x84, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x08, 0x84, 0x00, 0x40,
2803 0x81, 0x32, 0x01, 0x00, 0x60, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
2804 0x70, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
2805 0xdd, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x91, 0xb3, 0x01, 0x00,
2806 0x00, 0x00, 0x00, 0x40, 0x85, 0xb3, 0x01, 0x00, 0x5c, 0x95, 0x20, 0x40,
2807 0xe1, 0xb1, 0x01, 0x00, 0x1a, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2808 0x71, 0x83, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x02, 0x00, 0x00, 0x97,
2809 0x80, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2e, 0xb1, 0x01, 0x00,
2810 0x02, 0x00, 0x00, 0x40, 0x2e, 0xdd, 0x01, 0x00, 0x90, 0x01, 0x00, 0x40,
2811 0x93, 0x98, 0x01, 0x00, 0x29, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2812 0x5c, 0x81, 0x00, 0x40, 0xaf, 0x33, 0x01, 0x00, 0x61, 0x99, 0x00, 0x40,
2813 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
2814 0x00, 0x00, 0x55, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x49, 0x84, 0x00, 0x40,
2815 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2816 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2817 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2818 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2819 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2820 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
2821 0x81, 0xb2, 0x00, 0x00, 0x77, 0x01, 0x00, 0x41, 0x81, 0xc0, 0x00, 0x00,
2822 0x71, 0x80, 0x51, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x72, 0x80, 0x52, 0x40,
2823 0x81, 0xb2, 0x00, 0x00, 0x73, 0x80, 0x55, 0x40, 0x81, 0xb2, 0x00, 0x00,
2824 0x74, 0x80, 0x56, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x55, 0x01, 0x91, 0x81,
2825 0x80, 0x30, 0x00, 0x00, 0x5a, 0x01, 0x45, 0x40, 0x81, 0xb2, 0x00, 0x00,
2826 0x55, 0x01, 0x91, 0x82, 0x80, 0x30, 0x00, 0x00, 0x5a, 0x01, 0x46, 0x40,
2827 0x81, 0xb2, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x48, 0xfd, 0x93, 0x00, 0x00,
2828 0x5a, 0x01, 0x00, 0x48, 0xfd, 0x93, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x49,
2829 0xfd, 0x83, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x4a, 0xfd, 0x83, 0x00, 0x00,
2830 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb,
2831 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0xb1, 0x01, 0x00,
2832 0x00, 0x00, 0x00, 0xd2, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3,
2833 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
2834 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20,
2835 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0xd0, 0xe1, 0xb1, 0x00, 0x00,
2836 0x7c, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
2837 0x98, 0xb0, 0x01, 0x00, 0x04, 0x80, 0x00, 0x40, 0x8b, 0xb3, 0x00, 0x00,
2838 0xb1, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x84, 0x80, 0xa2, 0x41,
2839 0x97, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xa1, 0xc1, 0x01, 0x00,
2840 0x00, 0x00, 0x00, 0x00, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x04,
2841 0x80, 0x94, 0x00, 0x00, 0x80, 0x15, 0x3f, 0x42, 0x97, 0xe3, 0x01, 0x00,
2842 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x03,
2843 0x02, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0xb0, 0x01, 0x00,
2844 0x04, 0x00, 0x00, 0xcb, 0x99, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0xcc,
2845 0xf3, 0x83, 0x01, 0x00, 0x8e, 0x80, 0xa2, 0x41, 0x97, 0x6f, 0x00, 0x00,
2846 0x00, 0x00, 0x00, 0xcb, 0xf3, 0x93, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb,
2847 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0xb1, 0x01, 0x00,
2848 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
2849 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0xb1, 0x01, 0x00,
2850 0x00, 0x00, 0x00, 0xa1, 0xe0, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
2851 0x61, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00,
2852 0x95, 0x80, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc6, 0x02, 0x00, 0x20,
2853 0x42, 0x31, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41, 0x05, 0x6c, 0x01, 0x00,
2854 0x00, 0x00, 0x80, 0xcb, 0xdb, 0x91, 0x01, 0x00, 0x00, 0x00, 0x19, 0x41,
2855 0x8b, 0xb3, 0x01, 0x00, 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
2856 0x9b, 0x80, 0xa8, 0xb1, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40,
2857 0x61, 0x99, 0x01, 0x00, 0x9d, 0x80, 0xa8, 0xb1, 0x94, 0x33, 0x00, 0x00,
2858 0xa3, 0x80, 0x14, 0xc6, 0x81, 0x32, 0x00, 0x00, 0x18, 0x00, 0x00, 0xc6,
2859 0x83, 0xf4, 0x01, 0x00, 0x6a, 0x84, 0x22, 0x4f, 0x83, 0x04, 0x00, 0x00,
2860 0x7f, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xff, 0x01, 0x00, 0xc6,
2861 0x81, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x97, 0xa3, 0x01, 0x00,
2862 0x7f, 0x80, 0x1f, 0x5c, 0x97, 0x53, 0x00, 0x00, 0x9e, 0x83, 0x1d, 0xc6,
2863 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x43, 0x81, 0xf0, 0x01, 0x00,
2864 0xa9, 0x80, 0x00, 0x40, 0x10, 0xc9, 0x00, 0x00, 0x05, 0x81, 0x00, 0x40,
2865 0x81, 0xb2, 0x00, 0x00, 0x36, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2866 0xda, 0x81, 0x00, 0xca, 0x63, 0xb3, 0x00, 0x00, 0x2d, 0x81, 0x00, 0x40,
2867 0x81, 0xb2, 0x00, 0x00, 0x14, 0x81, 0x00, 0x4d, 0x83, 0xb0, 0x00, 0x00,
2868 0x1e, 0x81, 0x00, 0x4e, 0x61, 0xb1, 0x00, 0x00, 0x0d, 0x81, 0x00, 0x40,
2869 0x85, 0xb0, 0x00, 0x00, 0x14, 0x81, 0x00, 0x4c, 0x83, 0xb0, 0x00, 0x00,
2870 0xf0, 0x80, 0x00, 0x40, 0x85, 0xb0, 0x00, 0x00, 0x91, 0x81, 0x00, 0x40,
2871 0x49, 0xb1, 0x00, 0x00, 0x3d, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
2872 0x8d, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x0d, 0x81, 0x00, 0x40,
2873 0x85, 0xb0, 0x00, 0x00, 0xdd, 0x81, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00,
2874 0x6a, 0x84, 0x00, 0xca, 0x9b, 0xb3, 0x00, 0x00, 0x46, 0x81, 0x00, 0x40,
2875 0xc1, 0xb1, 0x00, 0x00, 0x4e, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
2876 0x55, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0x56, 0x81, 0x00, 0x40,
2877 0xc1, 0xb1, 0x00, 0x00, 0x57, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
2878 0x58, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0x59, 0x81, 0x00, 0x40,
2879 0x81, 0xb0, 0x00, 0x00, 0x59, 0x81, 0x00, 0x41, 0x81, 0xb0, 0x00, 0x00,
2880 0xce, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xdd, 0x83, 0x00, 0xbb,
2881 0xab, 0xb3, 0x00, 0x00, 0xdb, 0x81, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00,
2882 0xd3, 0x80, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0xdf, 0x80, 0x00, 0x40,
2883 0x81, 0xb2, 0x00, 0x00, 0xdc, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2884 0x6a, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xda, 0x80, 0x00, 0x40,
2885 0x81, 0xb2, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xca, 0x77, 0xb3, 0x00, 0x00,
2886 0x15, 0x81, 0x00, 0x4d, 0x83, 0xb0, 0x00, 0x00, 0x1c, 0x81, 0x00, 0x4e,
2887 0x61, 0xb1, 0x00, 0x00, 0x0d, 0x81, 0x00, 0xbb, 0x85, 0xb0, 0x00, 0x00,
2888 0x15, 0x81, 0x00, 0x4c, 0x83, 0xb0, 0x00, 0x00, 0x0d, 0x81, 0x00, 0xbb,
2889 0x85, 0xb0, 0x00, 0x00, 0xf0, 0x80, 0x00, 0xbb, 0x85, 0xb0, 0x00, 0x00,
2890 0xe2, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xca,
2891 0x4d, 0xb3, 0x00, 0x00, 0x64, 0x82, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00,
2892 0x8f, 0x82, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0xc8, 0x14, 0x2e, 0xbb,
2893 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee, 0x82, 0xb0, 0x01, 0x00,
2894 0x00, 0x00, 0x00, 0x41, 0xe0, 0xb1, 0x01, 0x00, 0xff, 0x7f, 0x00, 0xa2,
2895 0xa0, 0x8b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00,
2896 0x75, 0x80, 0x00, 0xca, 0xa7, 0x33, 0x01, 0x00, 0x02, 0x81, 0x00, 0x40,
2897 0x81, 0xb2, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x4d, 0x93, 0x30, 0x01, 0x00,
2898 0x4e, 0x01, 0x00, 0x4e, 0x93, 0x30, 0x01, 0x00, 0x4e, 0x01, 0x00, 0x4c,
2899 0x93, 0x30, 0x01, 0x00, 0x08, 0x84, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2900 0x6a, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x54, 0x95, 0x00, 0x40,
2901 0x45, 0x99, 0x01, 0x00, 0x6a, 0x84, 0x00, 0xca, 0xe5, 0xb1, 0x00, 0x00,
2902 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00, 0xe8, 0x80, 0x22, 0x42,
2903 0x8f, 0x6f, 0x00, 0x00, 0xea, 0x80, 0x22, 0x41, 0x8f, 0x6f, 0x00, 0x00,
2904 0xec, 0x80, 0x1e, 0xca, 0x81, 0x32, 0x00, 0x00, 0xee, 0x80, 0x1f, 0xca,
2905 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xc9, 0xb1, 0x01, 0x00,
2906 0x6a, 0x84, 0x00, 0x42, 0x8f, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
2907 0xcd, 0xb1, 0x01, 0x00, 0x6a, 0x84, 0x00, 0x41, 0x8f, 0xb3, 0x00, 0x00,
2908 0x00, 0x00, 0x00, 0xca, 0xcf, 0xb1, 0x01, 0x00, 0x6a, 0x84, 0x00, 0x40,
2909 0x8f, 0xb3, 0x00, 0x00, 0x00, 0x81, 0x00, 0xa6, 0xc6, 0xb1, 0x01, 0x00,
2910 0x6a, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6,
2911 0xc6, 0xb1, 0x01, 0x00, 0x6a, 0x84, 0x00, 0x40, 0x8f, 0xb3, 0x00, 0x00,
2912 0x78, 0x18, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00, 0x10, 0x00, 0x2f, 0x9c,
2913 0x89, 0xb0, 0x01, 0x00, 0x07, 0x81, 0x00, 0x40, 0x39, 0x33, 0x01, 0x00,
2914 0x18, 0x00, 0x2f, 0x9b, 0x89, 0xb0, 0x01, 0x00, 0x07, 0x81, 0x00, 0x40,
2915 0x37, 0x33, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x9a, 0x89, 0xb0, 0x01, 0x00,
2916 0x07, 0x81, 0x00, 0x40, 0x35, 0x33, 0x01, 0x00, 0x08, 0x00, 0x2f, 0x99,
2917 0x89, 0xb0, 0x01, 0x00, 0x07, 0x81, 0x00, 0x40, 0x33, 0x33, 0x01, 0x00,
2918 0x00, 0x80, 0x00, 0xae, 0x47, 0xc9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40,
2919 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00,
2920 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x18, 0x00, 0x40,
2921 0xe1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
2922 0x20, 0x00, 0x00, 0xae, 0x63, 0xdd, 0x01, 0x00, 0x02, 0x81, 0x28, 0x40,
2923 0x81, 0x32, 0x00, 0x00, 0xff, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2924 0x02, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
2925 0x69, 0x93, 0x01, 0x00, 0x6a, 0x84, 0x1a, 0x44, 0x93, 0x93, 0x00, 0x00,
2926 0x05, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x81, 0x00, 0x58,
2927 0x69, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf0, 0xd1, 0x01, 0x00,
2928 0x00, 0x00, 0xa4, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x0c, 0x81, 0xa2, 0x40,
2929 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xd1, 0x01, 0x00,
2930 0x00, 0x00, 0x80, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x41,
2931 0xe1, 0xd1, 0x01, 0x00, 0x0d, 0x81, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00,
2932 0x00, 0x00, 0x00, 0x42, 0x62, 0xb1, 0x01, 0x00, 0x11, 0x81, 0x28, 0x40,
2933 0x81, 0x32, 0x00, 0x00, 0x0e, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2934 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00, 0x11, 0x81, 0xa8, 0x40,
2935 0x81, 0x32, 0x00, 0x00, 0x6a, 0x84, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00,
2936 0x16, 0x81, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00, 0x16, 0x81, 0x00, 0xbb,
2937 0x81, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0xb1, 0x01, 0x00,
2938 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00, 0x17, 0x81, 0xa8, 0x40,
2939 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00,
2940 0x6a, 0x84, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x19, 0x81, 0x00, 0x40,
2941 0x81, 0xb2, 0x00, 0x00, 0x50, 0x95, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
2942 0x1f, 0x81, 0x00, 0xbb, 0x87, 0xb0, 0x00, 0x00, 0x50, 0x95, 0x2f, 0x40,
2943 0x87, 0xb0, 0x01, 0x00, 0x21, 0x81, 0x22, 0x40, 0x95, 0x7f, 0x00, 0x00,
2944 0x6a, 0x84, 0x60, 0x40, 0x95, 0x83, 0x00, 0x00, 0x02, 0x00, 0x2d, 0xf0,
2945 0x84, 0xb0, 0x01, 0x00, 0x22, 0x81, 0x36, 0x40, 0x81, 0x32, 0x00, 0x00,
2946 0x00, 0x00, 0x00, 0x42, 0x62, 0xb1, 0x01, 0x00, 0x23, 0x81, 0xa8, 0x40,
2947 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x62, 0xb1, 0x01, 0x00,
2948 0x25, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
2949 0x63, 0xb1, 0x01, 0x00, 0x27, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2950 0x00, 0x00, 0x16, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x6a, 0x84, 0x22, 0x41,
2951 0x43, 0x51, 0x00, 0x00, 0x00, 0x08, 0x00, 0xca, 0x95, 0xcb, 0x01, 0x00,
2952 0x22, 0x81, 0x00, 0x41, 0x85, 0xc0, 0x00, 0x00, 0x2f, 0x81, 0xa2, 0x42,
2953 0x67, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x67, 0xb3, 0x01, 0x00,
2954 0x2f, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2955 0x65, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x93, 0x83, 0x01, 0x00,
2956 0x00, 0x00, 0x1a, 0xca, 0x69, 0x97, 0x01, 0x00, 0x6a, 0x84, 0x26, 0x40,
2957 0x81, 0x32, 0x00, 0x00, 0x34, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
2958 0x6a, 0x84, 0x1a, 0x44, 0x93, 0x93, 0x00, 0x00, 0x6a, 0x84, 0x20, 0x43,
2959 0x95, 0x6f, 0x00, 0x00, 0x6a, 0x84, 0x80, 0xca, 0x67, 0x33, 0x00, 0x00,
2960 0x6a, 0x84, 0x22, 0x40, 0x65, 0x6f, 0x00, 0x00, 0x6a, 0x84, 0x00, 0x6f,
2961 0xdb, 0x91, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2962 0x35, 0x80, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00, 0x6a, 0x84, 0x00, 0x40,
2963 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x95, 0x93, 0x01, 0x00,
2964 0x42, 0x81, 0xa2, 0x44, 0x21, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f,
2965 0x95, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x95, 0x93, 0x01, 0x00,
2966 0x00, 0x00, 0x00, 0x57, 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
2967 0xc3, 0xb1, 0x01, 0x00, 0x45, 0x81, 0x22, 0x5b, 0x95, 0x7f, 0x00, 0x00,
2968 0x00, 0x00, 0x00, 0x4b, 0xfd, 0x93, 0x01, 0x00, 0x6a, 0x84, 0x00, 0x40,
2969 0x81, 0xb2, 0x00, 0x00, 0x49, 0x81, 0x22, 0x40, 0xaf, 0x6f, 0x00, 0x00,
2970 0x1b, 0xf5, 0x00, 0xca, 0x95, 0x9b, 0x01, 0x00, 0x4a, 0x81, 0x00, 0x40,
2971 0x81, 0xb2, 0x00, 0x00, 0x1b, 0xfd, 0x00, 0xca, 0x95, 0x9b, 0x01, 0x00,
2972 0x00, 0x00, 0x00, 0xca, 0x7f, 0xb3, 0x01, 0x00, 0x26, 0x01, 0x00, 0xca,
2973 0xc5, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x95, 0x83, 0x01, 0x00,
2974 0x6a, 0x84, 0x00, 0xca, 0xc5, 0xb1, 0x00, 0x00, 0xdf, 0x6f, 0x00, 0xca,
2975 0x95, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55, 0x95, 0x93, 0x01, 0x00,
2976 0x00, 0x00, 0x00, 0xca, 0xc7, 0xb1, 0x01, 0x00, 0x6a, 0x84, 0x22, 0x5f,
2977 0x95, 0x7f, 0x00, 0x00, 0x26, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2978 0x00, 0x00, 0x00, 0x5f, 0x95, 0x83, 0x01, 0x00, 0x6a, 0x84, 0x00, 0xca,
2979 0xc7, 0xb1, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xca, 0xc9, 0xb1, 0x00, 0x00,
2980 0x6a, 0x84, 0x00, 0xca, 0xcb, 0xb1, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xca,
2981 0xcd, 0xb1, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xca, 0xcf, 0xb1, 0x00, 0x00,
2982 0x00, 0x00, 0x2e, 0x42, 0x81, 0xe0, 0x01, 0x00, 0x98, 0x14, 0x00, 0x40,
2983 0x48, 0xc9, 0x01, 0x00, 0x6a, 0x84, 0x00, 0xca, 0xe1, 0xb1, 0x00, 0x00,
2984 0x00, 0x00, 0x00, 0x40, 0x09, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
2985 0x82, 0xb0, 0x01, 0x00, 0x5e, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
2986 0x00, 0x80, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00, 0x60, 0x81, 0xa2, 0x5e,
2987 0x0b, 0x7d, 0x00, 0x00, 0x20, 0x80, 0x00, 0xa6, 0x08, 0xb1, 0x01, 0x00,
2988 0x62, 0x81, 0x9f, 0x85, 0x82, 0x30, 0x00, 0x00, 0x61, 0x81, 0xa2, 0x4f,
2989 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x21, 0xb3, 0x01, 0x00,
2990 0x02, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0xc9, 0x81, 0x00, 0x40,
2991 0x81, 0x32, 0x01, 0x00, 0x10, 0x00, 0x00, 0x41, 0x84, 0xe4, 0x01, 0x00,
2992 0x03, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0xc9, 0x81, 0x00, 0x40,
2993 0x81, 0x32, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x41, 0x86, 0x88, 0x01, 0x00,
2994 0x00, 0x00, 0x00, 0x43, 0x84, 0x94, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xa6,
2995 0x86, 0xb0, 0x01, 0x00, 0x10, 0xc4, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00,
2996 0x75, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
2997 0x21, 0xb3, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
2998 0x1c, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x72, 0x81, 0xa2, 0x5e,
2999 0x0b, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00,
3000 0x7e, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x41, 0x01, 0x00, 0xa6,
3001 0x86, 0xb0, 0x01, 0x00, 0x50, 0x0c, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00,
3002 0x7a, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3003 0x21, 0xb3, 0x01, 0x00, 0x7e, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3004 0x41, 0x01, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00, 0x60, 0x0c, 0x00, 0x43,
3005 0x86, 0x98, 0x01, 0x00, 0x7e, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00,
3006 0x00, 0x00, 0x00, 0x42, 0x21, 0xb3, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
3007 0x82, 0xb0, 0x01, 0x00, 0x7f, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
3008 0x40, 0x13, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00, 0x87, 0x81, 0x22, 0x43,
3009 0x21, 0x6f, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
3010 0x12, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x84, 0x81, 0xa2, 0x5e,
3011 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00,
3012 0x8c, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6,
3013 0x82, 0xb0, 0x01, 0x00, 0x19, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
3014 0x89, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x41,
3015 0x08, 0x99, 0x01, 0x00, 0x8c, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3016 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
3017 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca, 0x81, 0x94, 0x01, 0x00,
3018 0x8f, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x6a, 0x84, 0x00, 0x40,
3019 0x08, 0xb1, 0x00, 0x00, 0xc8, 0x14, 0x2e, 0xbb, 0x85, 0xb0, 0x01, 0x00,
3020 0x92, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3021 0x87, 0xb0, 0x01, 0x00, 0xa1, 0x81, 0x22, 0x43, 0x21, 0x6f, 0x00, 0x00,
3022 0xb0, 0x81, 0x22, 0x44, 0x21, 0x6f, 0x00, 0x00, 0x11, 0x80, 0x00, 0xa6,
3023 0x82, 0xb0, 0x01, 0x00, 0xc9, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3024 0xb8, 0x81, 0x22, 0x4a, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3025 0x87, 0x90, 0x01, 0x00, 0x9c, 0x81, 0x22, 0x4d, 0x83, 0x7c, 0x00, 0x00,
3026 0x00, 0x00, 0x00, 0x41, 0x87, 0x90, 0x01, 0x00, 0x9e, 0x81, 0x22, 0x4f,
3027 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00,
3028 0xa0, 0x81, 0x22, 0x4e, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
3029 0x87, 0x90, 0x01, 0x00, 0xb8, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3030 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0xc9, 0x81, 0x00, 0x40,
3031 0x81, 0x32, 0x01, 0x00, 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
3032 0xc9, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb8, 0x81, 0x22, 0x42,
3033 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00,
3034 0x1c, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0xc9, 0x81, 0x00, 0x40,
3035 0x81, 0x32, 0x01, 0x00, 0xab, 0x81, 0x22, 0x45, 0x83, 0x7c, 0x00, 0x00,
3036 0x00, 0x00, 0x00, 0x41, 0x87, 0x90, 0x01, 0x00, 0xad, 0x81, 0x22, 0x44,
3037 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00,
3038 0xaf, 0x81, 0x22, 0x43, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
3039 0x87, 0x90, 0x01, 0x00, 0xb8, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3040 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0xc9, 0x81, 0x00, 0x40,
3041 0x81, 0x32, 0x01, 0x00, 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
3042 0xc9, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb8, 0x81, 0x22, 0x42,
3043 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00,
3044 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3045 0x87, 0x90, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
3046 0xc9, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xbc, 0x81, 0x22, 0x4b,
3047 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0x80, 0x01, 0x00,
3048 0x00, 0x00, 0x00, 0x43, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3049 0xaf, 0xb3, 0x01, 0x00, 0xc5, 0x81, 0x22, 0x40, 0x87, 0x7c, 0x00, 0x00,
3050 0xc5, 0x81, 0xa2, 0x41, 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3051 0xae, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb3, 0x01, 0x00,
3052 0xc4, 0x81, 0x22, 0x42, 0x87, 0x7c, 0x00, 0x00, 0xc5, 0x81, 0x00, 0x0b,
3053 0x7d, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7d, 0xb3, 0x01, 0x00,
3054 0xff, 0x7f, 0x00, 0xa2, 0xa0, 0x8b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3055 0xa5, 0xb3, 0x01, 0x00, 0x75, 0x80, 0x00, 0xca, 0xa7, 0x33, 0x01, 0x00,
3056 0x02, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x20, 0x00, 0x00, 0x41,
3057 0x82, 0xdc, 0x01, 0x00, 0xca, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
3058 0x00, 0x00, 0x00, 0x41, 0x08, 0xb1, 0x01, 0x00, 0xcc, 0x81, 0x9f, 0x85,
3059 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
3060 0xd1, 0x81, 0x14, 0xf7, 0x81, 0x30, 0x00, 0x00, 0xd1, 0x81, 0xa2, 0x49,
3061 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xfd, 0x93, 0x01, 0x00,
3062 0xd4, 0x81, 0x15, 0xf8, 0x81, 0x14, 0x00, 0x00, 0xd4, 0x81, 0xa2, 0x4a,
3063 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xfd, 0x93, 0x01, 0x00,
3064 0xd6, 0x81, 0xa2, 0xc8, 0x81, 0x32, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,
3065 0x80, 0xdc, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00,
3066 0x00, 0x00, 0x00, 0x40, 0xef, 0xb3, 0x01, 0x00, 0xd8, 0x81, 0x42, 0x40,
3067 0xf1, 0x33, 0x00, 0x00, 0x04, 0x81, 0x00, 0x40, 0x68, 0x97, 0x00, 0x00,
3068 0x6a, 0x84, 0x00, 0xbb, 0x6b, 0xb3, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xbb,
3069 0xb1, 0xb3, 0x00, 0x00, 0x6a, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3070 0xcc, 0x14, 0x2e, 0x40, 0x87, 0xb0, 0x01, 0x00, 0xff, 0x7f, 0x00, 0xa2,
3071 0xa0, 0x8b, 0x01, 0x00, 0xd8, 0x00, 0x00, 0x43, 0xb2, 0x33, 0x01, 0x00,
3072 0x00, 0x00, 0x68, 0xda, 0x89, 0xb0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x40,
3073 0x8b, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x89, 0xf0, 0x01, 0x00,
3074 0x00, 0x00, 0x00, 0x41, 0x89, 0xd0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x44,
3075 0x88, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x87, 0xc0, 0x01, 0x00,
3076 0x00, 0x00, 0x00, 0x41, 0xa5, 0xb3, 0x01, 0x00, 0xd8, 0x00, 0x00, 0x43,
3077 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf1, 0xb1, 0x01, 0x00,
3078 0x00, 0x00, 0x00, 0x42, 0x87, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3079 0xa5, 0xc3, 0x01, 0x00, 0xf8, 0x81, 0x22, 0x44, 0x89, 0x50, 0x00, 0x00,
3080 0xf8, 0x81, 0x22, 0x44, 0x8b, 0x50, 0x00, 0x00, 0xe7, 0x81, 0xa2, 0x50,
3081 0xa5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xa5, 0xe3, 0x01, 0x00,
3082 0x00, 0x00, 0x00, 0xca, 0xa7, 0xb3, 0x01, 0x00, 0x75, 0x80, 0x00, 0xbb,
3083 0x85, 0x30, 0x01, 0x00, 0xcc, 0x14, 0x2e, 0xd2, 0x95, 0xc3, 0x01, 0x00,
3084 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
3085 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xb0, 0x01, 0x00,
3086 0xf5, 0x81, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0xf4, 0x81, 0xa2, 0xf2,
3087 0x80, 0x30, 0x00, 0x00, 0xe7, 0x81, 0x00, 0x40, 0xa5, 0xb3, 0x00, 0x00,
3088 0x00, 0x00, 0x00, 0x42, 0xa5, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
3089 0xa7, 0xb3, 0x01, 0x00, 0x75, 0x80, 0x00, 0xbb, 0x85, 0x30, 0x01, 0x00,
3090 0x02, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x41,
3091 0xb3, 0x73, 0x01, 0x00, 0x00, 0x00, 0x80, 0x50, 0xb5, 0xf3, 0x01, 0x00,
3092 0xd8, 0x00, 0x00, 0x41, 0xb3, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9,
3093 0xb3, 0xfb, 0x01, 0x00, 0x00, 0x30, 0x00, 0xa6, 0xb8, 0xb3, 0x01, 0x00,
3094 0xf2, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x25, 0x01, 0x00, 0x42,
3095 0x2d, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
3096 0xeb, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3097 0x81, 0xb0, 0x01, 0x00, 0x26, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3098 0x09, 0x82, 0x10, 0xda, 0xb5, 0x6b, 0x00, 0x00, 0x0a, 0x82, 0x00, 0x41,
3099 0x2d, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x2d, 0x91, 0x01, 0x00,
3100 0x28, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x25, 0x01, 0x00, 0x40,
3101 0x2d, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2d, 0x81, 0x01, 0x00,
3102 0x06, 0x82, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x26, 0x01, 0x00, 0x42,
3103 0x2d, 0x01, 0x01, 0x00, 0x25, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3104 0x26, 0x01, 0x00, 0x42, 0x2d, 0x11, 0x01, 0x00, 0x25, 0x01, 0x00, 0x40,
3105 0x2d, 0x11, 0x01, 0x00, 0x15, 0x82, 0x04, 0x40, 0x2d, 0x01, 0x00, 0x00,
3106 0x25, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x11, 0x82, 0x00, 0x40,
3107 0x81, 0xb2, 0x00, 0x00, 0x28, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3108 0x25, 0x01, 0x00, 0x42, 0x2d, 0x01, 0x01, 0x00, 0xf2, 0x00, 0x00, 0x40,
3109 0xb9, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x2d, 0x81, 0x01, 0x00,
3110 0x00, 0x00, 0x80, 0x41, 0x2d, 0x81, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
3111 0x81, 0xb2, 0x01, 0x00, 0x00, 0x03, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
3112 0x00, 0x00, 0x00, 0x40, 0x18, 0xb1, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40,
3113 0x83, 0x98, 0x01, 0x00, 0x00, 0x19, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3114 0x00, 0x00, 0x42, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff,
3115 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0xb1, 0x01, 0x00,
3116 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3117 0x18, 0xb1, 0x01, 0x00, 0x1f, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
3118 0x00, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x19, 0x00, 0x40,
3119 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x43, 0xc1, 0x01, 0x00,
3120 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
3121 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xd0, 0x01, 0x00,
3122 0x00, 0x00, 0x00, 0x41, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3123 0xf6, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x43, 0xc1, 0x01, 0x00,
3124 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00, 0x29, 0x82, 0xa2, 0x54,
3125 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf7, 0xb1, 0x01, 0x00,
3126 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00, 0x30, 0x82, 0xa2, 0x06,
3127 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
3128 0x00, 0x00, 0x80, 0x07, 0x91, 0xb0, 0x01, 0x00, 0xe1, 0x80, 0x00, 0x40,
3129 0x81, 0x32, 0x01, 0x00, 0x39, 0x82, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00,
3130 0x28, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0x3a, 0x82, 0x00, 0x40,
3131 0x81, 0xb2, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
3132 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
3133 0xf5, 0xb1, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00,
3134 0x00, 0x00, 0x00, 0xda, 0xf5, 0xb1, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x42,
3135 0xb3, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf5, 0xb1, 0x01, 0x00,
3136 0x4e, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3137 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00,
3138 0x50, 0x00, 0x00, 0x40, 0x91, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
3139 0x8f, 0xb0, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x48, 0xb2, 0x33, 0x01, 0x00,
3140 0x00, 0x00, 0x00, 0xda, 0xf7, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda,
3141 0xf7, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x91, 0xc0, 0x01, 0x00,
3142 0x45, 0x82, 0xa2, 0x41, 0x8f, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3143 0x45, 0xd1, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
3144 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
3145 0xfd, 0xb1, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
3146 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
3147 0xfd, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
3148 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
3149 0xfd, 0xb1, 0x01, 0x00, 0x16, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
3150 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
3151 0xfd, 0xb1, 0x01, 0x00, 0x34, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3152 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3153 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0x91, 0xc0, 0x01, 0x00,
3154 0x00, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3155 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xda, 0x8f, 0xb0, 0x01, 0x00,
3156 0x02, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3157 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00,
3158 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3159 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0xda, 0xfd, 0xb1, 0x01, 0x00,
3160 0x6f, 0x82, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0x6f, 0x82, 0x22, 0x45,
3161 0xfd, 0x7f, 0x00, 0x00, 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3162 0x35, 0x82, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0x08, 0x00, 0x00, 0x48,
3163 0xb2, 0xcb, 0x01, 0x00, 0xfe, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3164 0x6d, 0x82, 0xa2, 0x40, 0x8f, 0x6c, 0x00, 0x00, 0x72, 0x82, 0x22, 0x20,
3165 0xb5, 0x6f, 0x00, 0x00, 0x6f, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3166 0xdb, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x72, 0x82, 0x22, 0x40,
3167 0x97, 0x6c, 0x00, 0x00, 0x6f, 0x82, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
3168 0x00, 0x00, 0x00, 0x4f, 0x69, 0x93, 0x01, 0x00, 0x04, 0x81, 0x00, 0x58,
3169 0x69, 0x93, 0x00, 0x00, 0x54, 0x16, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3170 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3171 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
3172 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3173 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
3174 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3175 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
3176 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3177 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
3178 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x46, 0x00, 0x00, 0x40,
3179 0xb3, 0x9b, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3180 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00, 0x48, 0x00, 0x00, 0x40,
3181 0x95, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x97, 0xb0, 0x01, 0x00,
3182 0xfc, 0x81, 0x00, 0x4a, 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
3183 0xf7, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00,
3184 0x00, 0x00, 0x00, 0x42, 0x95, 0xc0, 0x01, 0x00, 0x85, 0x82, 0xa2, 0x41,
3185 0x97, 0x50, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00,
3186 0x40, 0x16, 0x00, 0x40, 0xa1, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
3187 0xa7, 0xb3, 0x01, 0x00, 0x75, 0x80, 0x00, 0xbb, 0x85, 0x30, 0x01, 0x00,
3188 0x02, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xa7, 0x82, 0x22, 0x45,
3189 0xfd, 0x7f, 0x00, 0x00, 0xe0, 0x15, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3190 0x1a, 0x00, 0x00, 0xa2, 0x80, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3191 0xf1, 0xb1, 0x01, 0x00, 0xf0, 0x15, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
3192 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40,
3193 0x61, 0x99, 0x01, 0x00, 0xa0, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00,
3194 0x96, 0x82, 0xa8, 0xbb, 0xe1, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
3195 0x83, 0xb0, 0x01, 0x00, 0x99, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
3196 0x98, 0x82, 0xa2, 0xf2, 0x82, 0x30, 0x00, 0x00, 0xe1, 0x80, 0x00, 0x40,
3197 0x81, 0x32, 0x01, 0x00, 0x9f, 0x82, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00,
3198 0x28, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0xa0, 0x82, 0x00, 0x40,
3199 0x81, 0xb2, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
3200 0xf0, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3201 0x81, 0x32, 0x01, 0x00, 0xa7, 0x82, 0xa2, 0xfa, 0xb4, 0x6f, 0x00, 0x00,
3202 0xfc, 0x81, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00, 0xa7, 0x82, 0xa2, 0xfa,
3203 0xb4, 0x6f, 0x00, 0x00, 0xfc, 0x81, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00,
3204 0xaa, 0x82, 0x22, 0xfa, 0xb4, 0x6f, 0x00, 0x00, 0xa7, 0x82, 0x42, 0x40,
3205 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x69, 0x93, 0x01, 0x00,
3206 0x04, 0x81, 0x00, 0x58, 0x69, 0x93, 0x00, 0x00, 0x40, 0x16, 0x00, 0x40,
3207 0x45, 0x99, 0x01, 0x00, 0x35, 0x82, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00,
3208 0xf6, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x5c, 0x16, 0x00, 0x40,
3209 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xfa, 0x8e, 0xb0, 0x01, 0x00,
3210 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3211 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
3212 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3213 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb4, 0xb3, 0x01, 0x00,
3214 0xb8, 0x82, 0xa2, 0x40, 0x8f, 0x6c, 0x00, 0x00, 0xfc, 0x15, 0x20, 0x20,
3215 0xe1, 0xb1, 0x01, 0x00, 0xbd, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3216 0xdb, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xbd, 0x82, 0x22, 0x40,
3217 0x97, 0x6c, 0x00, 0x00, 0xba, 0x82, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
3218 0x00, 0x00, 0x00, 0x4f, 0x69, 0x93, 0x01, 0x00, 0x04, 0x81, 0x00, 0x58,
3219 0x69, 0x93, 0x00, 0x00, 0x34, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3220 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40,
3221 0x81, 0x32, 0x01, 0x00, 0xc2, 0x82, 0x22, 0x50, 0xb5, 0x6f, 0x00, 0x00,
3222 0x00, 0x00, 0x00, 0x50, 0x91, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
3223 0xb2, 0xcb, 0x01, 0x00, 0xf6, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3224 0xff, 0x81, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00, 0x02, 0x00, 0x00, 0x48,
3225 0xb2, 0xcb, 0x01, 0x00, 0xf8, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3226 0xff, 0x81, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00, 0x04, 0x00, 0x00, 0x48,
3227 0xb2, 0xcb, 0x01, 0x00, 0xfa, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3228 0xff, 0x81, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00, 0x08, 0x00, 0x00, 0x48,
3229 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3230 0x00, 0x00, 0x00, 0xf0, 0x94, 0xb0, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4a,
3231 0xb4, 0x8b, 0x01, 0x00, 0xff, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3232 0x0a, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4a,
3233 0xb4, 0xf7, 0x01, 0x00, 0xff, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3234 0x34, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48,
3235 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3236 0xd8, 0x82, 0x22, 0x50, 0xb5, 0x6f, 0x00, 0x00, 0xd9, 0x82, 0x00, 0x50,
3237 0xb5, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xb5, 0xb3, 0x01, 0x00,
3238 0xff, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x02, 0x81, 0x00, 0x40,
3239 0x81, 0xb2, 0x00, 0x00, 0x00, 0x16, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3240 0x30, 0x31, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x32, 0x33, 0x00, 0x40,
3241 0xf5, 0x99, 0x01, 0x00, 0x34, 0x35, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
3242 0x36, 0x37, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x38, 0x39, 0x00, 0x40,
3243 0xf5, 0x99, 0x01, 0x00, 0x41, 0x42, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
3244 0x43, 0x44, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x45, 0x46, 0x00, 0x40,
3245 0xf5, 0x99, 0x01, 0x00, 0x47, 0x48, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
3246 0x49, 0x4a, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40,
3247 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf7, 0xb1, 0x01, 0x00,
3248 0xe7, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x80, 0x16, 0x2e, 0x06,
3249 0x83, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
3250 0xea, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x22, 0x00, 0x00, 0x40,
3251 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xf6, 0xb1, 0x01, 0x00,
3252 0xed, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x62, 0x00, 0x00, 0x40,
3253 0x95, 0x98, 0x01, 0x00, 0x00, 0x83, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3254 0x00, 0x16, 0x2d, 0x06, 0x83, 0xb0, 0x01, 0x00, 0x80, 0x16, 0x00, 0x40,
3255 0x45, 0x99, 0x01, 0x00, 0x5c, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
3256 0xf3, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3257 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xf9, 0xb1, 0x01, 0x00,
3258 0x00, 0x00, 0x00, 0x72, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
3259 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf9, 0xb1, 0x01, 0x00,
3260 0x54, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0x00, 0x83, 0x00, 0x40,
3261 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x95, 0xb0, 0x01, 0x00,
3262 0xff, 0x82, 0x22, 0x70, 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
3263 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
3264 0x45, 0x67, 0x00, 0xa6, 0xe0, 0xb2, 0x01, 0x00, 0x01, 0x23, 0x00, 0x70,
3265 0xe1, 0x9a, 0x01, 0x00, 0xcd, 0xef, 0x00, 0xa6, 0xe2, 0xb2, 0x01, 0x00,
3266 0x89, 0xab, 0x00, 0x71, 0xe3, 0x9a, 0x01, 0x00, 0xba, 0x98, 0x00, 0xa6,
3267 0xe4, 0xb2, 0x01, 0x00, 0xfe, 0xdc, 0x00, 0x72, 0xe5, 0x9a, 0x01, 0x00,
3268 0x32, 0x10, 0x00, 0xa6, 0xe6, 0xb2, 0x01, 0x00, 0x76, 0x54, 0x00, 0x73,
3269 0xe7, 0x9a, 0x01, 0x00, 0xd2, 0xc3, 0x00, 0xa6, 0xe8, 0xb2, 0x01, 0x00,
3270 0xf0, 0xe1, 0x00, 0x74, 0xe9, 0x9a, 0x01, 0x00, 0x80, 0x16, 0x00, 0x4a,
3271 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x81, 0xb0, 0x01, 0x00,
3272 0x00, 0x00, 0x00, 0x4a, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3273 0xf7, 0xb1, 0x01, 0x00, 0x0d, 0x83, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
3274 0x80, 0x16, 0x00, 0x4a, 0x44, 0xc9, 0x01, 0x00, 0xfc, 0x16, 0x2a, 0x47,
3275 0xe7, 0xb5, 0x01, 0x00, 0x03, 0x00, 0x00, 0x4a, 0xe8, 0xe5, 0x01, 0x00,
3276 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40,
3277 0xa3, 0x99, 0x01, 0x00, 0x80, 0x16, 0x3d, 0x46, 0x8d, 0xe0, 0x01, 0x00,
3278 0x00, 0x00, 0x00, 0x50, 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
3279 0x40, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
3280 0x16, 0x83, 0xa2, 0x41, 0x89, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3281 0xeb, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xed, 0xb2, 0x01, 0x00,
3282 0x00, 0x00, 0x00, 0x72, 0xef, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
3283 0xf1, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf3, 0xb2, 0x01, 0x00,
3284 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x41,
3285 0x80, 0x88, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40, 0xa2, 0xc9, 0x01, 0x00,
3286 0x33, 0x83, 0xa0, 0x50, 0x83, 0x6c, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x40,
3287 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x99, 0x84, 0x01, 0x00,
3288 0x50, 0x03, 0x00, 0x4c, 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
3289 0x86, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x98, 0xc8, 0x01, 0x00,
3290 0x00, 0x00, 0x00, 0x4f, 0x99, 0x84, 0x01, 0x00, 0x50, 0x03, 0x00, 0x4c,
3291 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x86, 0xa4, 0x01, 0x00,
3292 0x02, 0x00, 0x00, 0x40, 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
3293 0x99, 0x84, 0x01, 0x00, 0x50, 0x03, 0x00, 0x4c, 0xa2, 0xc9, 0x01, 0x00,
3294 0x00, 0x00, 0x00, 0x20, 0x86, 0xa4, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40,
3295 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x40, 0xa4, 0x01, 0x00,
3296 0x01, 0x00, 0x00, 0x20, 0x88, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
3297 0x41, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x94, 0x01, 0x00,
3298 0x05, 0x00, 0x00, 0x75, 0x89, 0xe4, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x75,
3299 0x85, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x84, 0x94, 0x01, 0x00,
3300 0x3d, 0x83, 0xa3, 0x53, 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76,
3301 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77, 0x89, 0x84, 0x01, 0x00,
3302 0x00, 0x00, 0x00, 0x76, 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
3303 0x8b, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
3304 0x4c, 0x83, 0x00, 0x45, 0x88, 0x94, 0x00, 0x00, 0x27, 0x00, 0x00, 0x41,
3305 0x80, 0xce, 0x01, 0x00, 0x42, 0x83, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
3306 0x00, 0x00, 0x00, 0x76, 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
3307 0x89, 0xa4, 0x01, 0x00, 0x4c, 0x83, 0x00, 0x78, 0x89, 0xa4, 0x00, 0x00,
3308 0x3b, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00, 0x3f, 0x83, 0xaa, 0x40,
3309 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x89, 0xb0, 0x01, 0x00,
3310 0x00, 0x00, 0x00, 0x77, 0x89, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x76,
3311 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
3312 0x00, 0x00, 0x00, 0x45, 0x88, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
3313 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
3314 0x4c, 0x83, 0x00, 0x45, 0x88, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3315 0x84, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0x85, 0xc0, 0x01, 0x00,
3316 0x00, 0x00, 0x00, 0x20, 0x84, 0xc0, 0x01, 0x00, 0x53, 0x83, 0xa3, 0x53,
3317 0x83, 0x6c, 0x00, 0x00, 0x82, 0x5a, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00,
3318 0x99, 0x79, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00, 0x60, 0x83, 0x00, 0x40,
3319 0x81, 0xb2, 0x00, 0x00, 0x27, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00,
3320 0x58, 0x83, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00, 0xd9, 0x6e, 0x00, 0xa6,
3321 0x84, 0xc0, 0x01, 0x00, 0xa1, 0xeb, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00,
3322 0x60, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x41,
3323 0x80, 0xce, 0x01, 0x00, 0x5d, 0x83, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
3324 0x1b, 0x8f, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00, 0xdc, 0xbc, 0x00, 0x42,
3325 0x84, 0xc8, 0x01, 0x00, 0x60, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3326 0x62, 0xca, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00, 0xd6, 0xc1, 0x00, 0x42,
3327 0x84, 0xc8, 0x01, 0x00, 0x60, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3328 0x00, 0x00, 0x00, 0x78, 0xf3, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
3329 0xf1, 0xb2, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x76, 0x89, 0xe4, 0x01, 0x00,
3330 0x02, 0x00, 0x00, 0x76, 0xef, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3331 0xee, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x75, 0xed, 0xb2, 0x01, 0x00,
3332 0x00, 0x00, 0x00, 0x42, 0xea, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3333 0x83, 0xc0, 0x01, 0x00, 0x4f, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00,
3334 0x1f, 0x83, 0x2a, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75,
3335 0xe1, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x76, 0xe3, 0xc2, 0x01, 0x00,
3336 0x00, 0x00, 0x00, 0x77, 0xe5, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78,
3337 0xe7, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0xe9, 0xc2, 0x01, 0x00,
3338 0x13, 0x83, 0x81, 0x41, 0x8d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
3339 0x81, 0xb2, 0x01, 0x00, 0x9d, 0x83, 0xa2, 0x4b, 0xb7, 0x6f, 0x00, 0x00,
3340 0x9d, 0x83, 0xa2, 0x41, 0x2f, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
3341 0xfd, 0x93, 0x01, 0x00, 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3342 0x35, 0x82, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0x9c, 0x83, 0x22, 0x40,
3343 0x8f, 0x6c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
3344 0xfe, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xdb, 0x82, 0x00, 0x40,
3345 0x81, 0x32, 0x01, 0x00, 0x9c, 0x83, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00,
3346 0x5e, 0x16, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x7c, 0x16, 0x20, 0xf6,
3347 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x31, 0xb3, 0x01, 0x00,
3348 0x80, 0x83, 0x22, 0x4f, 0x8f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51,
3349 0xfd, 0x93, 0x01, 0x00, 0x82, 0x83, 0x22, 0x40, 0x8f, 0x7c, 0x00, 0x00,
3350 0x86, 0x83, 0x00, 0x54, 0xfd, 0x93, 0x00, 0x00, 0x84, 0x83, 0x22, 0x42,
3351 0x8f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xfd, 0x93, 0x01, 0x00,
3352 0x86, 0x83, 0x22, 0x41, 0x8f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53,
3353 0xfd, 0x93, 0x01, 0x00, 0x9a, 0x83, 0x22, 0x51, 0xfd, 0x7f, 0x00, 0x00,
3354 0x34, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x48,
3355 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3356 0x95, 0x83, 0xa2, 0x40, 0xb5, 0x6f, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x48,
3357 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x48, 0x96, 0x30, 0x01, 0x00,
3358 0x00, 0x00, 0x00, 0xda, 0x97, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x4b,
3359 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3360 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xff, 0x81, 0x00, 0x40,
3361 0x81, 0x32, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
3362 0x00, 0x00, 0x00, 0x30, 0xb5, 0xb3, 0x01, 0x00, 0xff, 0x81, 0x00, 0x40,
3363 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
3364 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x99, 0x83, 0x22, 0x40,
3365 0xb5, 0x6f, 0x00, 0x00, 0x9d, 0x83, 0x00, 0x54, 0xfd, 0x93, 0x00, 0x00,
3366 0x00, 0x00, 0x00, 0x51, 0xfd, 0x83, 0x01, 0x00, 0x1c, 0x00, 0x00, 0xfe,
3367 0x7f, 0xd9, 0x01, 0x00, 0x9d, 0x83, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
3368 0x00, 0x00, 0x00, 0x55, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
3369 0x81, 0xb2, 0x01, 0x00, 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
3370 0x00, 0x00, 0x2f, 0x41, 0x99, 0xb3, 0x01, 0x00, 0xa8, 0x83, 0x22, 0x44,
3371 0x81, 0x6c, 0x00, 0x00, 0xb0, 0x83, 0x22, 0x48, 0x81, 0x6c, 0x00, 0x00,
3372 0xaa, 0x83, 0x22, 0x4c, 0x81, 0x6c, 0x00, 0x00, 0xb4, 0x83, 0x22, 0x50,
3373 0x81, 0x6c, 0x00, 0x00, 0xb5, 0x83, 0x22, 0x54, 0x81, 0x6c, 0x00, 0x00,
3374 0xb7, 0x83, 0x22, 0x58, 0x81, 0x6c, 0x00, 0x00, 0xbc, 0x83, 0x22, 0x5c,
3375 0x81, 0x6c, 0x00, 0x00, 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3376 0x00, 0x00, 0x00, 0xbc, 0x09, 0xb0, 0x01, 0x00, 0x6a, 0x84, 0x00, 0xca,
3377 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00,
3378 0x00, 0x00, 0x00, 0x41, 0xf3, 0x83, 0x01, 0x00, 0xae, 0x83, 0xa2, 0x42,
3379 0x05, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x05, 0xb0, 0x01, 0x00,
3380 0x6a, 0x84, 0x22, 0xca, 0x07, 0x14, 0x00, 0x00, 0x6a, 0x84, 0x00, 0x45,
3381 0xf3, 0x93, 0x00, 0x00, 0x6a, 0x84, 0x20, 0x43, 0x95, 0x6f, 0x00, 0x00,
3382 0x6a, 0x84, 0x80, 0xca, 0x05, 0x30, 0x00, 0x00, 0x6a, 0x84, 0x22, 0x01,
3383 0x80, 0x30, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xcb, 0xdb, 0x91, 0x00, 0x00,
3384 0x5c, 0x01, 0x00, 0xbc, 0xab, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc,
3385 0xb1, 0xb3, 0x01, 0x00, 0x6a, 0x84, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00,
3386 0xff, 0x00, 0x00, 0xca, 0x81, 0x88, 0x01, 0x00, 0x6a, 0x84, 0xa2, 0x40,
3387 0x74, 0x7d, 0x00, 0x00, 0x60, 0x00, 0x20, 0x40, 0x60, 0x99, 0x01, 0x00,
3388 0xb9, 0x83, 0xa8, 0xb1, 0x82, 0x30, 0x00, 0x00, 0xb8, 0x83, 0x00, 0x40,
3389 0x81, 0xb2, 0x00, 0x00, 0x6a, 0x84, 0x00, 0xca, 0x79, 0xb3, 0x00, 0x00,
3390 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
3391 0xcb, 0x83, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
3392 0xbf, 0x83, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x45, 0x40,
3393 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
3394 0xca, 0x83, 0x91, 0x82, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a,
3395 0x80, 0xb0, 0x01, 0x00, 0xb6, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
3396 0xc8, 0x83, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xca, 0x83, 0x56, 0x40,
3397 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
3398 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00, 0xb6, 0x03, 0x00, 0x40,
3399 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x07, 0x90, 0x01, 0x00,
3400 0xf3, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e,
3401 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xcd, 0x83, 0x01, 0x00,
3402 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xcf, 0x83, 0xa2, 0x41,
3403 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
3404 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xda, 0x83, 0x91, 0x81,
3405 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x80, 0xb0, 0x01, 0x00,
3406 0xb6, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00, 0xd8, 0x83, 0xa6, 0x40,
3407 0x81, 0x32, 0x00, 0x00, 0xda, 0x83, 0x55, 0x40, 0x81, 0xb2, 0x00, 0x00,
3408 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52,
3409 0x07, 0x90, 0x01, 0x00, 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
3410 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00, 0xf3, 0x9f, 0x00, 0x41,
3411 0x8b, 0xb3, 0x00, 0x00, 0xb1, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
3412 0xc4, 0x14, 0x2f, 0x40, 0x99, 0xb3, 0x01, 0x00, 0x5c, 0x01, 0x00, 0x40,
3413 0x49, 0xb1, 0x00, 0x00, 0x58, 0x15, 0x2d, 0x40, 0x8d, 0xb0, 0x01, 0x00,
3414 0xd0, 0x14, 0x2d, 0xf0, 0x88, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3415 0x8f, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6, 0x90, 0xb0, 0x01, 0x00,
3416 0x00, 0xf8, 0x00, 0x48, 0x90, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
3417 0x93, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x8a, 0xb0, 0x01, 0x00,
3418 0x6a, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x02, 0x00, 0x00, 0xa6,
3419 0x80, 0xb0, 0x01, 0x00, 0xec, 0x83, 0x22, 0x40, 0x82, 0x6c, 0x00, 0x00,
3420 0xf0, 0x83, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x47, 0x03, 0x00, 0x40,
3421 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8d, 0xc0, 0x01, 0x00,
3422 0xf5, 0x83, 0x22, 0x5f, 0x8d, 0x6c, 0x00, 0x00, 0xe7, 0x83, 0xa2, 0x41,
3423 0x93, 0x50, 0x00, 0x00, 0xe5, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3424 0xff, 0x07, 0x00, 0x47, 0x84, 0x88, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x40,
3425 0x81, 0xb2, 0x00, 0x00, 0xf5, 0x9f, 0x00, 0x47, 0x80, 0x30, 0x01, 0x00,
3426 0x00, 0x02, 0x00, 0x47, 0x8e, 0xc8, 0x01, 0x00, 0xf0, 0x83, 0x00, 0x40,
3427 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x50, 0xb3, 0x01, 0x00,
3428 0xfb, 0x83, 0x20, 0x18, 0x89, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x00, 0xa6,
3429 0x84, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00,
3430 0x00, 0x10, 0x00, 0x40, 0x55, 0x9b, 0x01, 0x00, 0xfe, 0x83, 0x00, 0x40,
3431 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0xa6, 0x84, 0xb0, 0x01, 0x00,
3432 0x20, 0x00, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
3433 0x55, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x50, 0xd3, 0x01, 0x00,
3434 0x00, 0x00, 0x00, 0xa8, 0x4f, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
3435 0x4e, 0xd3, 0x01, 0x00, 0x5e, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3436 0x6c, 0x03, 0x00, 0x42, 0x80, 0x30, 0x01, 0x00, 0xf0, 0x83, 0x00, 0x40,
3437 0x81, 0x32, 0x01, 0x00, 0x07, 0x84, 0x22, 0xa7, 0x8f, 0x6c, 0x00, 0x00,
3438 0x49, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x84, 0x00, 0x40,
3439 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
3440 0xa0, 0x94, 0x2e, 0x43, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3441 0xf1, 0xb1, 0x01, 0x00, 0x09, 0x84, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
3442 0x50, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xac, 0x94, 0x2e, 0x43,
3443 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
3444 0x0d, 0x84, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
3445 0x81, 0xb2, 0x01, 0x00, 0xae, 0x03, 0x00, 0x40, 0xa3, 0x99, 0x01, 0x00,
3446 0x00, 0x00, 0x00, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x60, 0x15, 0x00, 0x40,
3447 0x85, 0x98, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x40, 0xe4, 0x01, 0x00,
3448 0x00, 0x00, 0x00, 0x59, 0x41, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3449 0x41, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x94, 0x01, 0x00,
3450 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x41,
3451 0x81, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
3452 0x13, 0x84, 0x00, 0x50, 0x85, 0xc0, 0x00, 0x00, 0x49, 0x84, 0xa2, 0x41,
3453 0x01, 0x7d, 0x00, 0x00, 0x21, 0x84, 0x22, 0x58, 0x73, 0x7d, 0x00, 0x00,
3454 0x78, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x1c, 0x84, 0xa8, 0xb1,
3455 0x9c, 0x30, 0x00, 0x00, 0x30, 0x00, 0x38, 0x45, 0x9d, 0xe0, 0x01, 0x00,
3456 0x01, 0x00, 0x00, 0x0e, 0x10, 0xc9, 0x00, 0x00, 0x21, 0x84, 0x33, 0xc4,
3457 0x81, 0x30, 0x00, 0x00, 0x24, 0x84, 0xa1, 0xad, 0x9d, 0x20, 0x00, 0x00,
3458 0x1b, 0x84, 0x13, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4e,
3459 0x5a, 0x83, 0x01, 0x00, 0x30, 0x00, 0x38, 0x45, 0x9d, 0xe0, 0x01, 0x00,
3460 0x2c, 0x84, 0x22, 0xab, 0x80, 0x04, 0x00, 0x00, 0x2a, 0x84, 0xa2, 0x40,
3461 0x01, 0x7d, 0x00, 0x00, 0x2c, 0x84, 0x22, 0x5f, 0x57, 0x7d, 0x00, 0x00,
3462 0x21, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2c, 0x84, 0x22, 0x5e,
3463 0x57, 0x7d, 0x00, 0x00, 0x84, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3464 0x31, 0x84, 0x22, 0x54, 0x73, 0x7d, 0x00, 0x00, 0x74, 0x00, 0x00, 0x40,
3465 0x61, 0x99, 0x01, 0x00, 0x2c, 0x84, 0xa8, 0xb1, 0x00, 0x30, 0x00, 0x00,
3466 0xfa, 0x85, 0xa2, 0x5f, 0x01, 0x7c, 0x00, 0x00, 0x5c, 0x89, 0x00, 0x40,
3467 0x81, 0xb2, 0x00, 0x00, 0x33, 0x84, 0xa2, 0x5f, 0x59, 0x27, 0x00, 0x00,
3468 0x35, 0x84, 0xa2, 0x5c, 0x73, 0x7d, 0x00, 0x00, 0x3c, 0x84, 0xa2, 0x5e,
3469 0x73, 0x7d, 0x00, 0x00, 0x46, 0x84, 0x22, 0x5c, 0x73, 0x7d, 0x00, 0x00,
3470 0x47, 0x84, 0x37, 0x40, 0x81, 0x32, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x40,
3471 0x61, 0x99, 0x01, 0x00, 0x36, 0x84, 0xa8, 0xb1, 0x36, 0x30, 0x00, 0x00,
3472 0x7c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x38, 0x84, 0xa8, 0xb1,
3473 0x00, 0x30, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x88, 0x01, 0x00,
3474 0x29, 0x86, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x47, 0x84, 0x34, 0x40,
3475 0x81, 0x32, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
3476 0x3d, 0x84, 0xa8, 0xb1, 0x12, 0x30, 0x00, 0x00, 0x44, 0x84, 0x52, 0x21,
3477 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x41, 0x2f, 0xc3, 0x01, 0x00,
3478 0xff, 0x3f, 0x00, 0x09, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
3479 0x01, 0xf0, 0x01, 0x00, 0x87, 0x84, 0x00, 0x34, 0x13, 0x84, 0x00, 0x00,
3480 0xff, 0x3f, 0x14, 0x09, 0x00, 0x8c, 0x01, 0x00, 0xe5, 0x84, 0x00, 0x43,
3481 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
3482 0x47, 0x84, 0x33, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x13, 0x4e,
3483 0x5a, 0x93, 0x00, 0x00, 0xe6, 0x89, 0xa2, 0x48, 0xfd, 0x7f, 0x00, 0x00,
3484 0x4e, 0x84, 0x22, 0x59, 0x73, 0x7d, 0x00, 0x00, 0x79, 0x00, 0x00, 0x40,
3485 0x61, 0x99, 0x01, 0x00, 0x4a, 0x84, 0x28, 0xb1, 0x7e, 0x31, 0x00, 0x00,
3486 0x4b, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x52, 0x84, 0x21, 0xac,
3487 0x9c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x1f, 0xc3, 0x01, 0x00,
3488 0x04, 0x00, 0xa0, 0x5f, 0x9d, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e,
3489 0x58, 0x91, 0x01, 0x00, 0x56, 0x84, 0x22, 0x5a, 0x73, 0x7d, 0x00, 0x00,
3490 0x7a, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x53, 0x84, 0xa8, 0xb1,
3491 0x7e, 0x31, 0x00, 0x00, 0x01, 0x00, 0x00, 0xcf, 0x11, 0xc9, 0x00, 0x00,
3492 0x5c, 0x84, 0xa2, 0x40, 0x93, 0x7f, 0x00, 0x00, 0x5c, 0x84, 0x22, 0x44,
3493 0x93, 0x7f, 0x00, 0x00, 0x58, 0x84, 0x42, 0xa5, 0x80, 0x30, 0x00, 0x00,
3494 0x5b, 0x84, 0xa2, 0x40, 0x93, 0x7f, 0x00, 0x00, 0x71, 0x84, 0x1a, 0x40,
3495 0x93, 0x93, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x40, 0x81, 0xb2, 0x01, 0x00,
3496 0x9a, 0x80, 0xa2, 0x40, 0x73, 0x7d, 0x00, 0x00, 0x9b, 0x89, 0x22, 0x44,
3497 0x21, 0x6f, 0x00, 0x00, 0x92, 0x89, 0x22, 0x40, 0x65, 0x7d, 0x00, 0x00,
3498 0xa0, 0x89, 0xa2, 0x5b, 0x73, 0x7d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x49,
3499 0x33, 0x7d, 0x00, 0x00, 0x66, 0x84, 0x22, 0x48, 0x33, 0x7d, 0x00, 0x00,
3500 0xff, 0x01, 0x00, 0x99, 0x80, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3501 0x81, 0xe0, 0x01, 0x00, 0xa8, 0x98, 0x2f, 0x40, 0x33, 0xb1, 0x01, 0x00,
3502 0x00, 0x00, 0x00, 0x40, 0xe0, 0xc1, 0x01, 0x00, 0x69, 0x84, 0x22, 0x40,
3503 0xaf, 0x6f, 0x00, 0x00, 0x69, 0x84, 0x22, 0x40, 0x81, 0x6f, 0x00, 0x00,
3504 0xef, 0x89, 0x1f, 0xa5, 0x82, 0x6f, 0x00, 0x00, 0x49, 0x84, 0x00, 0x40,
3505 0x81, 0xb2, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x40, 0x8b, 0xb3, 0x00, 0x00,
3506 0x00, 0x00, 0x00, 0x58, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e,
3507 0x62, 0xb1, 0x01, 0x00, 0x1b, 0x84, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
3508 0x6c, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x6f, 0x84, 0x33, 0x40,
3509 0x1f, 0x30, 0x00, 0x00, 0x1b, 0x84, 0x13, 0x4e, 0x5a, 0x93, 0x00, 0x00,
3510 0x73, 0x84, 0xa0, 0xce, 0x81, 0x50, 0x00, 0x00, 0x85, 0x84, 0xa0, 0xcd,
3511 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x9c, 0xb3, 0x01, 0x00,
3512 0x00, 0x00, 0x00, 0xb1, 0x81, 0xb0, 0x01, 0x00, 0x85, 0x84, 0x22, 0xb5,
3513 0x81, 0x14, 0x00, 0x00, 0x80, 0x15, 0x2f, 0x40, 0x49, 0xb1, 0x01, 0x00,
3514 0x77, 0x84, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x60, 0xb4,
3515 0x65, 0x97, 0x01, 0x00, 0xd0, 0x15, 0x2e, 0x40, 0x69, 0xb3, 0x01, 0x00,
3516 0x00, 0x00, 0x1a, 0x44, 0x93, 0x83, 0x01, 0x00, 0x1a, 0x00, 0x00, 0xa2,
3517 0x80, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00,
3518 0x00, 0x00, 0x00, 0xb1, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb5,
3519 0xf1, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
3520 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00, 0x80, 0x84, 0xa8, 0xa1,
3521 0xe0, 0x31, 0x00, 0x00, 0x5c, 0x84, 0x00, 0x88, 0x9e, 0xb3, 0x00, 0x00,
3522 0x5c, 0x84, 0xa2, 0x41, 0x67, 0x6f, 0x00, 0x00, 0x5c, 0x84, 0x00, 0x6f,
3523 0xdb, 0x91, 0x00, 0x00, 0x85, 0x84, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
3524 0x5c, 0x84, 0x1a, 0x40, 0x93, 0x83, 0x00, 0x00, 0x00, 0x99, 0x00, 0x09,
3525 0x46, 0xc9, 0x01, 0x00, 0x3f, 0x00, 0x00, 0xf3, 0x0c, 0x88, 0x01, 0x00,
3526 0x90, 0x84, 0xa6, 0x42, 0x13, 0x60, 0x00, 0x00, 0x3f, 0x97, 0x00, 0x95,
3527 0x03, 0x30, 0x01, 0x00, 0x8b, 0x84, 0x45, 0x40, 0x81, 0x32, 0x00, 0x00,
3528 0x75, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x8c, 0x84, 0xa8, 0xb1,
3529 0x0c, 0x30, 0x00, 0x00, 0x46, 0x97, 0x1d, 0x10, 0x94, 0x30, 0x01, 0x00,
3530 0x91, 0x84, 0x00, 0x58, 0x1f, 0x90, 0x00, 0x00, 0x38, 0x97, 0x00, 0x95,
3531 0x03, 0x30, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3532 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x2d, 0xf0,
3533 0x2e, 0xb0, 0x01, 0x00, 0xee, 0x07, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
3534 0x98, 0x84, 0x23, 0x4b, 0xe4, 0x6d, 0x00, 0x00, 0x98, 0x84, 0x22, 0x4b,
3535 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x90, 0x01, 0x00,
3536 0x22, 0x00, 0x2f, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x9b, 0x84, 0x83, 0x17,
3537 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3538 0x9d, 0x84, 0x85, 0x17, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
3539 0x47, 0xc1, 0x01, 0x00, 0xa2, 0x84, 0x22, 0x55, 0x2f, 0x7c, 0x00, 0x00,
3540 0x00, 0x00, 0x00, 0x42, 0x43, 0xd1, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xfa,
3541 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x97, 0xe0, 0x01, 0x00,
3542 0xa3, 0x84, 0x00, 0x4b, 0x44, 0xc1, 0x00, 0x00, 0x12, 0x00, 0x00, 0xa2,
3543 0x44, 0xc9, 0x01, 0x00, 0x28, 0x00, 0x00, 0xf6, 0x02, 0xcc, 0x01, 0x00,
3544 0x0a, 0x00, 0x00, 0xa1, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3545 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x28, 0xf0, 0x10, 0xb0, 0x01, 0x00,
3546 0x00, 0x00, 0x00, 0xf0, 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2,
3547 0x2a, 0xb0, 0x01, 0x00, 0xc0, 0x28, 0x3c, 0x46, 0x0d, 0xe0, 0x01, 0x00,
3548 0x00, 0x00, 0x2d, 0x44, 0x95, 0xb0, 0x01, 0x00, 0xaf, 0x84, 0xa2, 0xf8,
3549 0x0e, 0x30, 0x00, 0x00, 0xbf, 0x84, 0x22, 0x41, 0x95, 0x50, 0x00, 0x00,
3550 0x00, 0x00, 0x2d, 0x50, 0x49, 0xc1, 0x01, 0x00, 0xab, 0x84, 0x00, 0x40,
3551 0x81, 0xb2, 0x00, 0x00, 0xac, 0x84, 0xa2, 0xf8, 0x16, 0x6c, 0x00, 0x00,
3552 0xac, 0x84, 0xa2, 0xf8, 0x10, 0x6c, 0x00, 0x00, 0xac, 0x84, 0xa2, 0xf0,
3553 0x1a, 0x6c, 0x00, 0x00, 0xbd, 0x84, 0x22, 0x58, 0x1f, 0x7c, 0x00, 0x00,
3554 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00, 0xb4, 0x84, 0x47, 0x40,
3555 0x81, 0x32, 0x00, 0x00, 0xb8, 0x84, 0xa2, 0xf3, 0x74, 0x06, 0x00, 0x00,
3556 0x00, 0x00, 0x00, 0x06, 0xe6, 0x95, 0x01, 0x00, 0xbd, 0x84, 0x1f, 0x40,
3557 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x96, 0xb0, 0x01, 0x00,
3558 0x3f, 0x00, 0x1f, 0xf3, 0x0c, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55,
3559 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
3560 0xbb, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xbd, 0x84, 0x47, 0x40,
3561 0x81, 0x32, 0x00, 0x00, 0xc5, 0x84, 0x1f, 0x41, 0x2d, 0xc3, 0x00, 0x00,
3562 0xc3, 0x84, 0x22, 0x58, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
3563 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x62, 0xb1, 0x01, 0x00,
3564 0xc1, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc3, 0x84, 0x47, 0x40,
3565 0x81, 0x32, 0x00, 0x00, 0xec, 0x84, 0x1f, 0x41, 0x2d, 0xc3, 0x00, 0x00,
3566 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0x0b, 0x96, 0x00, 0x07,
3567 0x16, 0x30, 0x01, 0x00, 0xd3, 0x84, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00,
3568 0xcb, 0x84, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
3569 0x1c, 0xb0, 0x00, 0x00, 0xd2, 0x84, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00,
3570 0xff, 0x96, 0x00, 0x5f, 0x01, 0x10, 0x01, 0x00, 0xd1, 0x84, 0x22, 0x40,
3571 0x95, 0x6c, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3572 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x74, 0x96, 0x00, 0x52,
3573 0x95, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
3574 0xff, 0x89, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0xdb, 0x84, 0xa2, 0x5a,
3575 0x1f, 0x7c, 0x00, 0x00, 0x86, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3576 0xdb, 0x84, 0x22, 0x20, 0x85, 0x6c, 0x00, 0x00, 0xd8, 0x84, 0x9c, 0x0f,
3577 0x80, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3578 0x66, 0x96, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x85, 0x98, 0x00, 0x42,
3579 0x61, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3580 0xce, 0x99, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
3581 0x48, 0xb1, 0x01, 0x00, 0xde, 0x84, 0x82, 0xf0, 0x18, 0x30, 0x00, 0x00,
3582 0x66, 0x8b, 0x00, 0x45, 0x8f, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x00, 0xa6,
3583 0x96, 0xb0, 0x01, 0x00, 0xe2, 0x84, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00,
3584 0xf5, 0x97, 0x00, 0x4b, 0x95, 0x30, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x4b,
3585 0x8f, 0xb0, 0x00, 0x00, 0x0b, 0x97, 0x00, 0x03, 0x48, 0x31, 0x01, 0x00,
3586 0xe7, 0x94, 0x00, 0x40, 0x81, 0x30, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x40,
3587 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
3588 0x00, 0x00, 0x68, 0x50, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
3589 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
3590 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0xe9, 0x84, 0xa8, 0x00,
3591 0xe0, 0x31, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3592 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3593 0x0f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x2e, 0xb0, 0x01, 0x00,
3594 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3595 0x17, 0xb0, 0x01, 0x00, 0x00, 0x41, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00,
3596 0xee, 0x07, 0x2e, 0x47, 0x97, 0x90, 0x01, 0x00, 0xff, 0x84, 0x22, 0x17,
3597 0x96, 0x04, 0x00, 0x00, 0xfd, 0x84, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00,
3598 0xfd, 0x84, 0x23, 0xa2, 0x02, 0x6c, 0x00, 0x00, 0x74, 0x96, 0x00, 0x52,
3599 0x95, 0x30, 0x01, 0x00, 0x04, 0x00, 0x22, 0x41, 0x97, 0x50, 0x00, 0x00,
3600 0x0c, 0x00, 0x2d, 0x00, 0x12, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3601 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x80, 0x01, 0x00,
3602 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
3603 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x03, 0xb0, 0x01, 0x00,
3604 0x1c, 0x85, 0x00, 0x5c, 0x17, 0x90, 0x00, 0x00, 0x11, 0x85, 0x22, 0x43,
3605 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1f, 0x90, 0x01, 0x00,
3606 0x0a, 0x85, 0x22, 0x5f, 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x10,
3607 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58, 0xf1, 0xb1, 0x01, 0x00,
3608 0x10, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00,
3609 0xe0, 0xc9, 0x01, 0x00, 0x06, 0x85, 0x45, 0x42, 0x61, 0x31, 0x00, 0x00,
3610 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x07, 0x85, 0xa8, 0x40,
3611 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x1d, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3612 0x20, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0xff, 0x0f, 0x00, 0xf6,
3613 0x80, 0x88, 0x01, 0x00, 0x0e, 0x85, 0xa2, 0xa6, 0x81, 0x6c, 0x00, 0x00,
3614 0x11, 0x85, 0x00, 0xf2, 0x3a, 0xb0, 0x00, 0x00, 0xf7, 0x85, 0xa2, 0x4b,
3615 0xfd, 0x7f, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3616 0x15, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1c, 0x85, 0x22, 0x4a,
3617 0x2f, 0x7c, 0x00, 0x00, 0x1c, 0x85, 0x22, 0x48, 0x2f, 0x7c, 0x00, 0x00,
3618 0x0a, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x3f, 0x00, 0x00, 0xf2,
3619 0x86, 0x88, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x43, 0x84, 0x88, 0x01, 0x00,
3620 0x05, 0x00, 0x00, 0x43, 0x80, 0xf4, 0x01, 0x00, 0x98, 0x94, 0x3d, 0x42,
3621 0x81, 0xe0, 0x01, 0x00, 0x1c, 0x85, 0xa2, 0x42, 0xe0, 0x7d, 0x00, 0x00,
3622 0xf7, 0x85, 0xa2, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40,
3623 0x81, 0x32, 0x01, 0x00, 0x15, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3624 0x1c, 0x85, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3,
3625 0x09, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x41, 0x47, 0xc3, 0x01, 0x00,
3626 0x22, 0x85, 0x22, 0xa1, 0x09, 0x6c, 0x00, 0x00, 0x6b, 0x84, 0x00, 0x88,
3627 0x1c, 0xb0, 0x00, 0x00, 0x1f, 0x85, 0x00, 0x03, 0x48, 0xb1, 0x00, 0x00,
3628 0x5b, 0x85, 0xa3, 0x92, 0x03, 0x6c, 0x00, 0x00, 0xf4, 0x98, 0x00, 0x40,
3629 0x95, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00,
3630 0x15, 0x8a, 0x22, 0x08, 0x80, 0x32, 0x00, 0x00, 0x28, 0x85, 0x22, 0x5c,
3631 0x17, 0x7c, 0x00, 0x00, 0x29, 0x85, 0x00, 0x00, 0x2a, 0xb0, 0x00, 0x00,
3632 0x12, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00, 0x02, 0x00, 0x00, 0x08,
3633 0x80, 0xc8, 0x01, 0x00, 0x2d, 0x85, 0xa2, 0x43, 0x2f, 0x7c, 0x00, 0x00,
3634 0xf8, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x49, 0x85, 0x00, 0x5e,
3635 0x17, 0x90, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x8c, 0xcc, 0x01, 0x00,
3636 0xf8, 0x97, 0x00, 0x4c, 0x03, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46,
3637 0x02, 0xb0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00,
3638 0x0c, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40,
3639 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00,
3640 0x10, 0x00, 0x00, 0x15, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
3641 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3642 0x36, 0x85, 0xa8, 0x54, 0x17, 0x10, 0x00, 0x00, 0x49, 0x85, 0x00, 0x5e,
3643 0x17, 0x90, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00,
3644 0x48, 0x85, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01,
3645 0x8c, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x03, 0xb0, 0x01, 0x00,
3646 0x19, 0x98, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46,
3647 0x02, 0xb0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00,
3648 0x0c, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x09,
3649 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00,
3650 0x10, 0x00, 0x00, 0x15, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
3651 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3652 0x49, 0x85, 0x28, 0x54, 0x17, 0x10, 0x00, 0x00, 0x45, 0x85, 0x00, 0x40,
3653 0x81, 0xb2, 0x00, 0x00, 0x19, 0x98, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00,
3654 0x4b, 0x85, 0x22, 0x50, 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56,
3655 0x17, 0x90, 0x01, 0x00, 0x07, 0x00, 0x00, 0x17, 0x98, 0x88, 0x01, 0x00,
3656 0x4e, 0x85, 0xa2, 0x41, 0x99, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
3657 0x17, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
3658 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x4f, 0x85, 0xa8, 0x40,
3659 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3660 0x00, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x56, 0x85, 0x22, 0x43,
3661 0x2f, 0x7c, 0x00, 0x00, 0x16, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
3662 0x00, 0x00, 0x00, 0x1d, 0xe4, 0xb1, 0x01, 0x00, 0xa1, 0x97, 0x00, 0x5e,
3663 0x05, 0x10, 0x01, 0x00, 0x59, 0x85, 0xa2, 0x5f, 0x2f, 0x7c, 0x00, 0x00,
3664 0xb9, 0x94, 0x00, 0x01, 0x38, 0x43, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40,
3665 0x81, 0x32, 0x01, 0x00, 0x15, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3666 0x5d, 0x85, 0xa2, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0xf4, 0x85, 0x00, 0x41,
3667 0x43, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x27, 0xb0, 0x01, 0x00,
3668 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00, 0x5f, 0x85, 0x35, 0x01,
3669 0x86, 0x30, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
3670 0x66, 0x85, 0x28, 0xb1, 0x30, 0x30, 0x00, 0x00, 0x60, 0x85, 0x22, 0x4d,
3671 0x75, 0x7d, 0x00, 0x00, 0xe4, 0x85, 0xa2, 0x40, 0x11, 0x6c, 0x00, 0x00,
3672 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00, 0xf3, 0x85, 0x00, 0x40,
3673 0x81, 0xb2, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
3674 0x66, 0x85, 0xa8, 0xb1, 0x12, 0x30, 0x00, 0x00, 0x6f, 0x85, 0xa2, 0x40,
3675 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00,
3676 0x00, 0x00, 0x00, 0x09, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
3677 0x2c, 0xb0, 0x01, 0x00, 0xde, 0x07, 0x00, 0x43, 0x80, 0xce, 0x01, 0x00,
3678 0x60, 0x85, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00, 0x74, 0x85, 0x00, 0x40,
3679 0x81, 0xb2, 0x00, 0x00, 0x40, 0x00, 0x3e, 0x43, 0x27, 0xe0, 0x01, 0x00,
3680 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
3681 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x27, 0xc0, 0x01, 0x00,
3682 0x60, 0x85, 0xa3, 0x0b, 0x87, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x40,
3683 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
3684 0x12, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00, 0x40, 0x00, 0x2d, 0x40,
3685 0x39, 0xb0, 0x01, 0x00, 0x7c, 0x85, 0xa2, 0x40, 0x27, 0x6c, 0x00, 0x00,
3686 0x22, 0x00, 0x00, 0x08, 0x12, 0xc8, 0x01, 0x00, 0xde, 0x07, 0x00, 0x40,
3687 0x25, 0x98, 0x01, 0x00, 0x7f, 0x85, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3688 0x00, 0x00, 0x00, 0xf8, 0x12, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3689 0x30, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x25, 0xb0, 0x01, 0x00,
3690 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00, 0x14, 0x00, 0x20, 0x01,
3691 0xe0, 0xb1, 0x01, 0x00, 0xee, 0x07, 0x00, 0x40, 0x37, 0x98, 0x01, 0x00,
3692 0x84, 0x85, 0x23, 0x01, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
3693 0x36, 0xb0, 0x01, 0x00, 0x8f, 0x85, 0x82, 0x41, 0x23, 0x40, 0x00, 0x00,
3694 0x20, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x8b, 0x85, 0x22, 0x40,
3695 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
3696 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x88, 0x85, 0xa8, 0x40,
3697 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3698 0xeb, 0x95, 0x00, 0x43, 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
3699 0x32, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x23, 0xb0, 0x01, 0x00,
3700 0x00, 0x00, 0x00, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19,
3701 0x44, 0xc9, 0x01, 0x00, 0x9e, 0x85, 0x22, 0x45, 0x1f, 0x7c, 0x00, 0x00,
3702 0x00, 0x00, 0x00, 0x4c, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09,
3703 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00,
3704 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19,
3705 0x62, 0xdd, 0x01, 0x00, 0x95, 0x85, 0xa8, 0x15, 0xe0, 0x31, 0x00, 0x00,
3706 0x00, 0x00, 0x00, 0x50, 0x03, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3707 0x33, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x25, 0xd0, 0x01, 0x00,
3708 0x0c, 0x00, 0x2d, 0x4c, 0x13, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3709 0x37, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x2b, 0xc0, 0x01, 0x00,
3710 0x84, 0x85, 0x00, 0x45, 0x1f, 0x80, 0x00, 0x00, 0xa0, 0x85, 0xa3, 0x12,
3711 0x36, 0x6c, 0x00, 0x00, 0xa1, 0x85, 0x68, 0x1b, 0x28, 0xb0, 0x00, 0x00,
3712 0x00, 0x00, 0x68, 0x12, 0x28, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09,
3713 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00,
3714 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19,
3715 0x62, 0xdd, 0x01, 0x00, 0xa4, 0x85, 0xa8, 0x15, 0xe0, 0x31, 0x00, 0x00,
3716 0xca, 0x85, 0x22, 0x14, 0x02, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
3717 0x33, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x24, 0xd0, 0x01, 0x00,
3718 0x0c, 0x00, 0x2d, 0x14, 0x12, 0xc0, 0x01, 0x00, 0xc3, 0x85, 0xa2, 0x14,
3719 0x36, 0x50, 0x00, 0x00, 0xb4, 0x85, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
3720 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xb2, 0x85, 0x22, 0x40,
3721 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
3722 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xaf, 0x85, 0xa8, 0x40,
3723 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3724 0x00, 0x00, 0x00, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x5c,
3725 0x1f, 0x80, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0, 0x2a, 0xc8, 0x01, 0x00,
3726 0x00, 0x00, 0x00, 0x5c, 0x2b, 0x80, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
3727 0x37, 0x98, 0x01, 0x00, 0xb9, 0x85, 0x23, 0x01, 0x36, 0x6c, 0x00, 0x00,
3728 0x00, 0x00, 0x00, 0x01, 0x36, 0xb0, 0x01, 0x00, 0xc4, 0x85, 0x22, 0x1b,
3729 0x02, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00,
3730 0x00, 0x00, 0x2e, 0x5c, 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
3731 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
3732 0xff, 0x07, 0x00, 0x15, 0xe0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
3733 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3734 0xc0, 0x85, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc4, 0x85, 0x00, 0x03,
3735 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2a, 0xc0, 0x01, 0x00,
3736 0x84, 0x85, 0xa2, 0x40, 0x25, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3737 0x39, 0xc0, 0x01, 0x00, 0x40, 0x00, 0x3d, 0x43, 0x39, 0xe0, 0x01, 0x00,
3738 0x00, 0x00, 0x00, 0x0b, 0x25, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3739 0x12, 0xb0, 0x01, 0x00, 0x84, 0x85, 0x00, 0xf0, 0x30, 0xb0, 0x00, 0x00,
3740 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00, 0xd0, 0x85, 0x22, 0x40,
3741 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
3742 0x40, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00, 0xcd, 0x85, 0xa8, 0x40,
3743 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3744 0xeb, 0x95, 0x00, 0x40, 0x2b, 0x30, 0x01, 0x00, 0x18, 0x00, 0x2e, 0x03,
3745 0x48, 0xb1, 0x01, 0x00, 0xd4, 0x85, 0x22, 0x50, 0x2f, 0x7c, 0x00, 0x00,
3746 0x00, 0x00, 0x00, 0x56, 0x17, 0x90, 0x01, 0x00, 0x07, 0x00, 0x00, 0x17,
3747 0x98, 0x88, 0x01, 0x00, 0xd7, 0x85, 0xa2, 0x41, 0x99, 0x6c, 0x00, 0x00,
3748 0x00, 0x00, 0x00, 0x55, 0x17, 0x90, 0x01, 0x00, 0xda, 0x85, 0x22, 0x43,
3749 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x17, 0x90, 0x01, 0x00,
3750 0x16, 0x00, 0x20, 0x1d, 0xe4, 0xb1, 0x01, 0x00, 0xdc, 0x85, 0xa3, 0x40,
3751 0x27, 0x6c, 0x00, 0x00, 0xde, 0x85, 0x60, 0x5f, 0x17, 0x90, 0x00, 0x00,
3752 0x00, 0x84, 0x00, 0x0b, 0x16, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x60, 0x13,
3753 0x16, 0x94, 0x01, 0x00, 0xa1, 0x97, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00,
3754 0x15, 0x8a, 0xa2, 0x5f, 0x2f, 0x7c, 0x00, 0x00, 0x14, 0x80, 0x00, 0x03,
3755 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00,
3756 0xb9, 0x94, 0x00, 0x01, 0x38, 0x43, 0x01, 0x00, 0x15, 0x8a, 0x00, 0x40,
3757 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00,
3758 0x00, 0x00, 0x00, 0x4d, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
3759 0x62, 0xb1, 0x01, 0x00, 0xe6, 0x85, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3760 0x00, 0x00, 0x00, 0x08, 0x62, 0xb1, 0x01, 0x00, 0xe8, 0x85, 0xa8, 0x40,
3761 0x81, 0x32, 0x00, 0x00, 0xf3, 0x85, 0x22, 0x13, 0x82, 0x6c, 0x00, 0x00,
3762 0x40, 0x00, 0x3d, 0x43, 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3763 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x2c, 0xb0, 0x01, 0x00,
3764 0x00, 0x00, 0x00, 0x16, 0x62, 0xb1, 0x01, 0x00, 0xee, 0x85, 0xa8, 0x40,
3765 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x62, 0xb1, 0x01, 0x00,
3766 0xf0, 0x85, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xea, 0x85, 0x00, 0x41,
3767 0x83, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x40, 0x81, 0xb2, 0x01, 0x00,
3768 0x00, 0x82, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40,
3769 0x47, 0x99, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
3770 0x74, 0x96, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b,
3771 0x02, 0xb0, 0x00, 0x00, 0x15, 0x8a, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
3772 0x00, 0x00, 0x00, 0x5f, 0x01, 0x80, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00,
3773 0x0e, 0xf4, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00,
3774 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0x0b, 0x96, 0x00, 0x07,
3775 0x16, 0x30, 0x01, 0x00, 0x05, 0x86, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00,
3776 0x03, 0x86, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
3777 0x1c, 0xb0, 0x00, 0x00, 0x04, 0x86, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00,
3778 0xff, 0x89, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0x0d, 0x86, 0xa2, 0x5a,
3779 0x1f, 0x7c, 0x00, 0x00, 0x86, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3780 0x0d, 0x86, 0x22, 0x20, 0x85, 0x6c, 0x00, 0x00, 0x0a, 0x86, 0x9c, 0x0f,
3781 0x80, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3782 0x66, 0x96, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x85, 0x98, 0x00, 0x42,
3783 0x61, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3784 0xce, 0x99, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
3785 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00,
3786 0x13, 0x86, 0x22, 0x3a, 0x01, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3787 0x8e, 0xb0, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x40, 0x01, 0xb0, 0x00, 0x00,
3788 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x2e, 0x00, 0x2d, 0x05,
3789 0x48, 0xb1, 0x01, 0x00, 0x17, 0x86, 0xa2, 0x40, 0xe7, 0x6d, 0x00, 0x00,
3790 0x0a, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x40,
3791 0x01, 0xb0, 0x00, 0x00, 0x51, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3792 0x38, 0x97, 0x00, 0x95, 0x03, 0x30, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88,
3793 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00,
3794 0x22, 0x00, 0x2d, 0xf0, 0x2e, 0xb0, 0x01, 0x00, 0x28, 0x20, 0x00, 0xa6,
3795 0x96, 0xb0, 0x01, 0x00, 0x20, 0x86, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00,
3796 0xf5, 0x97, 0x00, 0x4b, 0x95, 0x30, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x4c,
3797 0x8f, 0xb0, 0x00, 0x00, 0x22, 0x86, 0x83, 0x17, 0x80, 0x32, 0x00, 0x00,
3798 0x00, 0x00, 0x00, 0x44, 0x43, 0xc1, 0x01, 0x00, 0x24, 0x86, 0x85, 0x17,
3799 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x43, 0xc1, 0x01, 0x00,
3800 0x28, 0x00, 0x00, 0xf6, 0x02, 0xcc, 0x01, 0x00, 0x12, 0x00, 0x00, 0xa1,
3801 0x2a, 0xc8, 0x01, 0x00, 0x0b, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3802 0xe7, 0x94, 0x00, 0x41, 0x81, 0x30, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x40,
3803 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x01, 0x00,
3804 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x40,
3805 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
3806 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x2e, 0x86, 0x46, 0x47,
3807 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
3808 0x2f, 0x86, 0xa8, 0x1b, 0xe0, 0x31, 0x00, 0x00, 0x1b, 0x84, 0x1e, 0x88,
3809 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xe0, 0x01, 0x00,
3810 0x08, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x54, 0x86, 0x01, 0xfb,
3811 0x08, 0x30, 0x00, 0x00, 0xa7, 0x86, 0x87, 0xfb, 0x22, 0x30, 0x00, 0x00,
3812 0x00, 0x00, 0x00, 0xfa, 0x0e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3813 0x14, 0xb0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00,
3814 0x0b, 0x96, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00, 0x4a, 0x86, 0x22, 0x41,
3815 0x81, 0x6c, 0x00, 0x00, 0x3e, 0x86, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00,
3816 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x49, 0x86, 0x22, 0x5f,
3817 0x0f, 0x7c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x04, 0x7e, 0x89, 0x01, 0x00,
3818 0x42, 0x86, 0xa6, 0x5f, 0x0f, 0x00, 0x00, 0x00, 0x5f, 0x95, 0x00, 0x40,
3819 0x05, 0x30, 0x01, 0x00, 0x47, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3820 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x03,
3821 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00,
3822 0x00, 0x00, 0x00, 0xf0, 0x84, 0xb0, 0x01, 0x00, 0xea, 0x96, 0x00, 0x40,
3823 0x05, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
3824 0xff, 0x89, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0x52, 0x86, 0xa2, 0x5a,
3825 0x1f, 0x7c, 0x00, 0x00, 0x86, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3826 0x52, 0x86, 0x22, 0x20, 0x85, 0x6c, 0x00, 0x00, 0x4f, 0x86, 0x9c, 0x0f,
3827 0x80, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3828 0x66, 0x96, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x85, 0x98, 0x00, 0x42,
3829 0x61, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3830 0xce, 0x99, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
3831 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00,
3832 0x56, 0x86, 0x21, 0x04, 0x80, 0x20, 0x00, 0x00, 0x57, 0x86, 0x00, 0x40,
3833 0x10, 0xc9, 0x00, 0x00, 0xa8, 0x8a, 0x00, 0x4b, 0x81, 0xb0, 0x00, 0x00,
3834 0x76, 0x86, 0x00, 0x43, 0x81, 0xb0, 0x00, 0x00, 0x7a, 0x86, 0x00, 0xfb,
3835 0x22, 0xb0, 0x00, 0x00, 0xa8, 0x8a, 0x00, 0x41, 0x81, 0xb0, 0x00, 0x00,
3836 0x66, 0x8b, 0x00, 0x4e, 0x8f, 0xb0, 0x00, 0x00, 0x72, 0x86, 0x00, 0x5a,
3837 0x8f, 0xb0, 0x00, 0x00, 0x5f, 0x86, 0x00, 0x47, 0x8f, 0xb0, 0x00, 0x00,
3838 0xa8, 0x8a, 0x00, 0x53, 0x81, 0xb0, 0x00, 0x00, 0xa8, 0x8a, 0x00, 0x56,
3839 0x81, 0xb0, 0x00, 0x00, 0x32, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
3840 0x66, 0x8b, 0xa0, 0x0a, 0xe4, 0x6d, 0x00, 0x00, 0x65, 0x86, 0xa2, 0x41,
3841 0x19, 0x7c, 0x00, 0x00, 0x64, 0x86, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00,
3842 0x66, 0x8b, 0x00, 0x53, 0x8f, 0xb0, 0x00, 0x00, 0x66, 0x8b, 0x00, 0x54,
3843 0x8f, 0xb0, 0x00, 0x00, 0x6e, 0x86, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00,
3844 0x68, 0x86, 0xa2, 0x0a, 0xe4, 0x6d, 0x00, 0x00, 0x66, 0x8b, 0x00, 0x5d,
3845 0x8f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x80, 0xb0, 0x01, 0x00,
3846 0x00, 0x00, 0x00, 0x0a, 0x80, 0xd0, 0x01, 0x00, 0x6c, 0x86, 0xa0, 0x91,
3847 0x81, 0x6c, 0x00, 0x00, 0x66, 0x8b, 0x00, 0x5e, 0x8f, 0xb0, 0x00, 0x00,
3848 0x25, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x40,
3849 0x81, 0xb2, 0x00, 0x00, 0x70, 0x86, 0x20, 0x91, 0xe5, 0x6d, 0x00, 0x00,
3850 0x66, 0x8b, 0x00, 0x54, 0x8f, 0xb0, 0x00, 0x00, 0x21, 0x00, 0x00, 0x40,
3851 0x8f, 0x98, 0x01, 0x00, 0x66, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3852 0x32, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x66, 0x8b, 0xa0, 0x0a,
3853 0xe4, 0x6d, 0x00, 0x00, 0x24, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00,
3854 0x66, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x2d, 0x05,
3855 0x48, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x82, 0xf4, 0x01, 0x00,
3856 0xa8, 0x8a, 0xa0, 0x42, 0x83, 0x6c, 0x00, 0x00, 0xa8, 0x8a, 0x00, 0x54,
3857 0x81, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x0e, 0xb0, 0x01, 0x00,
3858 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d,
3859 0x42, 0xc9, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07, 0x16, 0x88, 0x01, 0x00,
3860 0x83, 0x86, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x40,
3861 0x87, 0x98, 0x01, 0x00, 0x3d, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3862 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0xff, 0x89, 0x00, 0x5c,
3863 0x1f, 0x90, 0x00, 0x00, 0x95, 0x86, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00,
3864 0x90, 0x86, 0xa2, 0x54, 0xfd, 0x7f, 0x00, 0x00, 0x88, 0x86, 0x22, 0x55,
3865 0xfd, 0x7f, 0x00, 0x00, 0x82, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
3866 0x80, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x80, 0x86, 0x22, 0x53,
3867 0xfd, 0x7f, 0x00, 0x00, 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3868 0x00, 0x00, 0x00, 0xf0, 0x96, 0xb0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4b,
3869 0x80, 0xf4, 0x01, 0x00, 0x0c, 0xbc, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
3870 0x90, 0x86, 0x22, 0x43, 0x80, 0x6c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b,
3871 0x80, 0x88, 0x01, 0x00, 0x80, 0x86, 0xa2, 0x43, 0x80, 0x6c, 0x00, 0x00,
3872 0x7c, 0x96, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x91, 0x86, 0x43, 0x40,
3873 0x81, 0x32, 0x00, 0x00, 0x94, 0x86, 0xa0, 0xf0, 0x30, 0x6f, 0x00, 0x00,
3874 0x86, 0x86, 0x1b, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x41,
3875 0x31, 0xc3, 0x01, 0x00, 0x90, 0x95, 0x00, 0x40, 0x25, 0x30, 0x01, 0x00,
3876 0x99, 0x86, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
3877 0x1c, 0xb0, 0x00, 0x00, 0x66, 0x96, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00,
3878 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3879 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00,
3880 0x10, 0x00, 0x00, 0x07, 0x18, 0xe4, 0x01, 0x00, 0x00, 0x08, 0x00, 0x0c,
3881 0xe0, 0x99, 0x01, 0x00, 0xce, 0x99, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00,
3882 0x00, 0xb5, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0xa0, 0x86, 0x30, 0x40,
3883 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00,
3884 0x00, 0x02, 0x00, 0xa1, 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
3885 0xe6, 0x91, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
3886 0x00, 0x00, 0x10, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xa8, 0x8a, 0x00, 0x40,
3887 0x81, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x28, 0xb0, 0x01, 0x00,
3888 0x00, 0x00, 0x00, 0xfb, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3889 0x14, 0xb0, 0x01, 0x00, 0xb1, 0x86, 0x22, 0x46, 0x23, 0x7c, 0x00, 0x00,
3890 0xad, 0x86, 0x22, 0x40, 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
3891 0x1f, 0x90, 0x01, 0x00, 0xaf, 0x86, 0x22, 0x41, 0x87, 0x7c, 0x00, 0x00,
3892 0x00, 0x00, 0x00, 0x47, 0x1f, 0x90, 0x01, 0x00, 0xb1, 0x86, 0x22, 0x42,
3893 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1f, 0x90, 0x01, 0x00,
3894 0xb1, 0x86, 0x47, 0x1b, 0x2c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
3895 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x41, 0x41, 0xc3, 0x01, 0x00,
3896 0xe0, 0x86, 0x23, 0x92, 0x15, 0x6c, 0x00, 0x00, 0xe0, 0x86, 0xa2, 0x45,
3897 0x1f, 0x7c, 0x00, 0x00, 0xe4, 0x86, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00,
3898 0x17, 0x00, 0x00, 0xd0, 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3899 0x27, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x24, 0xc8, 0x01, 0x00,
3900 0xc7, 0x95, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00, 0xde, 0x86, 0x22, 0x08,
3901 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
3902 0xf0, 0x07, 0x00, 0x12, 0x24, 0xcc, 0x01, 0x00, 0xba, 0x86, 0xaa, 0x41,
3903 0x27, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x13, 0x80, 0xcc, 0x01, 0x00,
3904 0xda, 0x86, 0x26, 0x40, 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3905 0x83, 0xb0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x03, 0x84, 0xc8, 0x01, 0x00,
3906 0x10, 0x00, 0x00, 0x10, 0x48, 0xcd, 0x01, 0x00, 0x17, 0x00, 0x00, 0xd0,
3907 0xa2, 0xc9, 0x01, 0x00, 0xc7, 0x86, 0xa2, 0x40, 0x83, 0x6c, 0x00, 0x00,
3908 0xd3, 0x86, 0x00, 0x41, 0x83, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42,
3909 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x68, 0x21, 0x38, 0x96, 0x01, 0x00,
3910 0x00, 0x00, 0x2e, 0x50, 0x49, 0xc1, 0x01, 0x00, 0xcc, 0x86, 0xa2, 0x44,
3911 0x23, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
3912 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x20,
3913 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3914 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0xcf, 0x86, 0xa8, 0x42,
3915 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x85, 0xc0, 0x01, 0x00,
3916 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3917 0xa3, 0xc1, 0x01, 0x00, 0xc5, 0x86, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
3918 0xda, 0x86, 0x22, 0x40, 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3919 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3920 0xd7, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
3921 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x48, 0xb1, 0x01, 0x00,
3922 0xee, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00, 0x17, 0x00, 0x00, 0xd0,
3923 0x2a, 0xc8, 0x01, 0x00, 0xed, 0x86, 0x00, 0x17, 0x10, 0xb0, 0x00, 0x00,
3924 0xaa, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xe4, 0x86, 0x00, 0x40,
3925 0x81, 0xb2, 0x00, 0x00, 0xc7, 0x95, 0x00, 0x92, 0x25, 0x30, 0x01, 0x00,
3926 0x00, 0x00, 0x00, 0x40, 0x31, 0xb0, 0x01, 0x00, 0xe4, 0x86, 0x22, 0x08,
3927 0x2e, 0x30, 0x00, 0x00, 0xed, 0x86, 0x00, 0x41, 0x27, 0xb0, 0x00, 0x00,
3928 0x80, 0x80, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40,
3929 0x87, 0x98, 0x01, 0x00, 0x3d, 0x99, 0x00, 0x0a, 0x8c, 0x30, 0x01, 0x00,
3930 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
3931 0x1f, 0x90, 0x01, 0x00, 0xec, 0x86, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00,
3932 0x02, 0x00, 0x00, 0x88, 0x1c, 0xcc, 0x01, 0x00, 0x6b, 0x84, 0x00, 0x40,
3933 0x81, 0xb2, 0x00, 0x00, 0xff, 0x89, 0x00, 0x41, 0x3f, 0xc3, 0x00, 0x00,
3934 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x01,
3935 0x80, 0xce, 0x01, 0x00, 0x01, 0x87, 0x2a, 0x40, 0x81, 0x30, 0x00, 0x00,
3936 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40,
3937 0x81, 0x98, 0x01, 0x00, 0xf6, 0x86, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00,
3938 0xf6, 0x86, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0xf6, 0x86, 0xa3, 0x07,
3939 0x03, 0x6c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
3940 0xf9, 0x86, 0xa3, 0x40, 0x02, 0x6c, 0x00, 0x00, 0x28, 0x00, 0x00, 0x01,
3941 0xf0, 0xcd, 0x01, 0x00, 0xfb, 0x86, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
3942 0x28, 0x00, 0x00, 0x40, 0xf0, 0xcd, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
3943 0x0e, 0xcc, 0x01, 0x00, 0x28, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00,
3944 0x28, 0x00, 0x00, 0x00, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
3945 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
3946 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xff, 0x86, 0xa8, 0x5c,
3947 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3948 0x00, 0x00, 0x00, 0xf0, 0x08, 0xb0, 0x01, 0x00, 0xa0, 0x01, 0x2d, 0x40,
3949 0x00, 0xc0, 0x01, 0x00, 0xe7, 0x88, 0x22, 0x0f, 0x42, 0x05, 0x00, 0x00,
3950 0x12, 0x87, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
3951 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
3952 0x0d, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
3953 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3954 0x0a, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
3955 0x1c, 0xb0, 0x00, 0x00, 0x12, 0x87, 0x22, 0x07, 0x80, 0x32, 0x00, 0x00,
3956 0x00, 0x00, 0x00, 0x03, 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07,
3957 0x42, 0xc1, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa1, 0x46, 0x99, 0x01, 0x00,
3958 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00, 0xd1, 0x87, 0xa2, 0x45,
3959 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
3960 0x00, 0x00, 0x2d, 0x54, 0x29, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3961 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
3962 0x00, 0x00, 0x00, 0xf8, 0x0e, 0xb0, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03,
3963 0x0a, 0xc8, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4, 0x0c, 0xc8, 0x01, 0x00,
3964 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14,
3965 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x24, 0xd0, 0x01, 0x00,
3966 0x00, 0x00, 0x00, 0x14, 0x10, 0xc0, 0x01, 0x00, 0x12, 0x00, 0x00, 0x08,
3967 0x10, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
3968 0xfe, 0x7f, 0x00, 0x05, 0x44, 0xc9, 0x01, 0x00, 0x23, 0x87, 0x20, 0x94,
3969 0x15, 0x6c, 0x00, 0x00, 0x24, 0x87, 0x00, 0x94, 0xe5, 0xb1, 0x00, 0x00,
3970 0x00, 0x00, 0x00, 0x0a, 0xe4, 0xb1, 0x01, 0x00, 0x3d, 0x87, 0x22, 0x01,
3971 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
3972 0x00, 0x00, 0x2e, 0xa4, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
3973 0x48, 0xc1, 0x01, 0x00, 0x2a, 0x87, 0xa3, 0x07, 0x02, 0x6c, 0x00, 0x00,
3974 0x2b, 0x87, 0x68, 0x01, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x07,
3975 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xd0, 0x01, 0x00,
3976 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c,
3977 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00,
3978 0x00, 0x00, 0x00, 0x0d, 0x0a, 0xc0, 0x01, 0x00, 0x37, 0x87, 0x22, 0x40,
3979 0x03, 0x6c, 0x00, 0x00, 0x37, 0x87, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
3980 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
3981 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3982 0x5f, 0x87, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x34, 0x87, 0x00, 0x40,
3983 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
3984 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3985 0x62, 0xb1, 0x01, 0x00, 0x39, 0x87, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
3986 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x5f, 0x87, 0x00, 0x40,
3987 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
3988 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
3989 0x48, 0xc1, 0x01, 0x00, 0x42, 0x87, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00,
3990 0x43, 0x87, 0x68, 0x07, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12,
3991 0x1a, 0xb0, 0x01, 0x00, 0x46, 0x87, 0x80, 0x08, 0xf0, 0x31, 0x00, 0x00,
3992 0x01, 0x00, 0x00, 0x11, 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
3993 0x1e, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
3994 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
3995 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
3996 0x01, 0x1f, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00, 0x4a, 0x87, 0xa8, 0x5c,
3997 0x1f, 0x10, 0x00, 0x00, 0x7d, 0x87, 0x22, 0x0d, 0x14, 0x6c, 0x00, 0x00,
3998 0x50, 0x87, 0x22, 0x0d, 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
3999 0x10, 0xc0, 0x01, 0x00, 0x54, 0x87, 0x00, 0x0d, 0x24, 0xd0, 0x00, 0x00,
4000 0x00, 0x00, 0x00, 0x41, 0x2b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
4001 0xa2, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x20, 0x10, 0xc8, 0x01, 0x00,
4002 0xf0, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00, 0x56, 0x87, 0x22, 0x42,
4003 0x23, 0x6c, 0x00, 0x00, 0x5f, 0x87, 0x00, 0x41, 0x23, 0xc0, 0x00, 0x00,
4004 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4005 0x62, 0xdd, 0x01, 0x00, 0x57, 0x87, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00,
4006 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
4007 0x48, 0xb1, 0x01, 0x00, 0x5d, 0x87, 0x22, 0x47, 0x1f, 0x7c, 0x00, 0x00,
4008 0xfb, 0x95, 0x00, 0x43, 0x23, 0x30, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0f,
4009 0x1e, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
4010 0x7d, 0x87, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00, 0x7c, 0x87, 0xa2, 0x0d,
4011 0x0e, 0x50, 0x00, 0x00, 0x6b, 0x87, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
4012 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
4013 0x42, 0xc9, 0x01, 0x00, 0x69, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4014 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4015 0x62, 0xdd, 0x01, 0x00, 0x66, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4016 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03,
4017 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
4018 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4019 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
4020 0x70, 0x87, 0x1f, 0xf0, 0x0e, 0x30, 0x00, 0x00, 0x24, 0x87, 0x00, 0x4c,
4021 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x5f, 0x0f, 0x80, 0x01, 0x00,
4022 0x24, 0x87, 0x23, 0x07, 0x14, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10,
4023 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
4024 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4025 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00,
4026 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
4027 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
4028 0x79, 0x87, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00, 0x24, 0x87, 0x00, 0x03,
4029 0x0c, 0xb0, 0x00, 0x00, 0x24, 0x87, 0x00, 0x0d, 0x18, 0xc0, 0x00, 0x00,
4030 0x04, 0x00, 0x2e, 0x14, 0x0a, 0xd0, 0x01, 0x00, 0x12, 0x00, 0x00, 0x05,
4031 0x48, 0xcd, 0x01, 0x00, 0xfe, 0x7f, 0x00, 0x05, 0x42, 0xc9, 0x01, 0x00,
4032 0x0c, 0x00, 0x2a, 0xf2, 0xe0, 0xb1, 0x01, 0x00, 0x83, 0x87, 0x22, 0x40,
4033 0x31, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x38, 0x96, 0x01, 0x00,
4034 0x1e, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x81, 0x00, 0xf6,
4035 0x80, 0xce, 0x01, 0x00, 0x87, 0x87, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
4036 0x00, 0x00, 0x00, 0x44, 0x43, 0xc1, 0x01, 0x00, 0x89, 0x87, 0x22, 0x0b,
4037 0xed, 0x6d, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa1, 0x42, 0xc9, 0x01, 0x00,
4038 0x02, 0x00, 0x00, 0xa1, 0x46, 0xc9, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xfa,
4039 0x94, 0x88, 0x01, 0x00, 0x02, 0x00, 0x00, 0x4a, 0x86, 0xe4, 0x01, 0x00,
4040 0x00, 0x00, 0x00, 0xf6, 0x0e, 0xb0, 0x01, 0x00, 0x91, 0x87, 0x22, 0x47,
4041 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x1f, 0x43, 0x0e, 0x50, 0x00, 0x00,
4042 0x91, 0x87, 0xa0, 0x46, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4043 0x0f, 0xc0, 0x01, 0x00, 0x95, 0x87, 0x22, 0x48, 0x1f, 0x7c, 0x00, 0x00,
4044 0x00, 0x00, 0x00, 0x40, 0x91, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x0f, 0xa2,
4045 0x42, 0x31, 0x00, 0x00, 0x98, 0x87, 0x00, 0x40, 0x89, 0xb0, 0x00, 0x00,
4046 0x0c, 0x00, 0x00, 0xa2, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
4047 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x95, 0xd0, 0x01, 0x00,
4048 0x00, 0x00, 0x00, 0xfc, 0x82, 0xb0, 0x01, 0x00, 0x9b, 0x87, 0xa0, 0x41,
4049 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x91, 0xc0, 0x01, 0x00,
4050 0xa0, 0x87, 0x22, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0xa0, 0x87, 0xa0, 0x43,
4051 0x89, 0x6c, 0x00, 0x00, 0xa0, 0x87, 0x20, 0x45, 0x89, 0x6c, 0x00, 0x00,
4052 0xa0, 0x87, 0xa0, 0x41, 0x0e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4053 0x0f, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x89, 0xc0, 0x01, 0x00,
4054 0x98, 0x87, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00, 0xa9, 0x87, 0x22, 0x48,
4055 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x48, 0x92, 0xf4, 0x01, 0x00,
4056 0xff, 0xff, 0x00, 0x48, 0x90, 0x88, 0x01, 0x00, 0xa7, 0x87, 0x90, 0x48,
4057 0x92, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00,
4058 0x0a, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
4059 0x93, 0xa4, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4060 0x12, 0x00, 0x00, 0x14, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x17,
4061 0xf0, 0xb1, 0x01, 0x00, 0x12, 0x00, 0x00, 0x05, 0xe0, 0xcd, 0x01, 0x00,
4062 0x30, 0x00, 0x00, 0x10, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
4063 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00,
4064 0xaf, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xbc, 0x87, 0x22, 0x5c,
4065 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
4066 0x00, 0x00, 0x2d, 0x10, 0x48, 0xc1, 0x01, 0x00, 0xb9, 0x87, 0x22, 0x40,
4067 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
4068 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xb6, 0x87, 0xa8, 0x40,
4069 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4070 0xbc, 0x87, 0x87, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
4071 0x48, 0xb1, 0x01, 0x00, 0xfb, 0x95, 0x00, 0x41, 0x23, 0x40, 0x01, 0x00,
4072 0xbe, 0x87, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0x52, 0x89, 0x00, 0x17,
4073 0x10, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x03, 0x48, 0xb1, 0x01, 0x00,
4074 0xc1, 0x87, 0xa0, 0x07, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4075 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe4, 0xb1, 0x01, 0x00,
4076 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00, 0xc5, 0x87, 0x90, 0xf2,
4077 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
4078 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x10, 0x00, 0x00, 0x14,
4079 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x2b, 0xe0, 0x01, 0x00,
4080 0x00, 0x00, 0x00, 0xf2, 0x2a, 0x94, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
4081 0x42, 0xc9, 0x01, 0x00, 0xcf, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4082 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4083 0x62, 0xdd, 0x01, 0x00, 0xcc, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4084 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x17,
4085 0x10, 0xdc, 0x01, 0x00, 0x52, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4086 0x90, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd5, 0x87, 0x22, 0x5c,
4087 0x1f, 0x7c, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4088 0x66, 0x96, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05,
4089 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
4090 0x04, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4091 0x3c, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x14, 0x02, 0xc8, 0x01, 0x00,
4092 0x00, 0x00, 0x00, 0x01, 0x34, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
4093 0x32, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05, 0x0a, 0xc8, 0x01, 0x00,
4094 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4095 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
4096 0x00, 0x00, 0x00, 0xf8, 0x0e, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4,
4097 0x0c, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
4098 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x1b, 0x88, 0x22, 0x01,
4099 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
4100 0x00, 0x00, 0x2e, 0xa4, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4101 0x48, 0xc1, 0x01, 0x00, 0xea, 0x87, 0xa3, 0x07, 0x02, 0x6c, 0x00, 0x00,
4102 0xeb, 0x87, 0x68, 0x01, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x07,
4103 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xd0, 0x01, 0x00,
4104 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c,
4105 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00,
4106 0x00, 0x00, 0x00, 0x0d, 0x0a, 0xc0, 0x01, 0x00, 0xfd, 0x87, 0x22, 0x40,
4107 0x03, 0x6c, 0x00, 0x00, 0xf7, 0x87, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
4108 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
4109 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
4110 0x37, 0x88, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0xf4, 0x87, 0x00, 0x40,
4111 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
4112 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4113 0x62, 0xb1, 0x01, 0x00, 0xf9, 0x87, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
4114 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x37, 0x88, 0x00, 0x40,
4115 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
4116 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4117 0x62, 0xb1, 0x01, 0x00, 0xff, 0x87, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
4118 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x22, 0x00, 0x00, 0x19,
4119 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00,
4120 0x0f, 0x00, 0x00, 0xf2, 0x3a, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4121 0x3b, 0xe0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x14, 0x02, 0xc8, 0x01, 0x00,
4122 0x00, 0x00, 0x00, 0x1d, 0x02, 0xc0, 0x01, 0x00, 0x0b, 0x88, 0x23, 0x1a,
4123 0x02, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x03, 0xc0, 0x01, 0x00,
4124 0x37, 0x88, 0x00, 0x01, 0x34, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x2d, 0x1d,
4125 0x48, 0xc1, 0x01, 0x00, 0xf0, 0x00, 0x00, 0xf2, 0x30, 0x88, 0x01, 0x00,
4126 0x00, 0x00, 0x00, 0x42, 0x31, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14,
4127 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x02, 0xc0, 0x01, 0x00,
4128 0x00, 0x00, 0x00, 0x18, 0x02, 0xc0, 0x01, 0x00, 0x13, 0x88, 0x22, 0x1a,
4129 0x02, 0x50, 0x00, 0x00, 0x37, 0x88, 0x00, 0x01, 0x34, 0xc0, 0x00, 0x00,
4130 0x22, 0x00, 0x00, 0x19, 0x48, 0xc9, 0x01, 0x00, 0x02, 0x00, 0x2d, 0x14,
4131 0x48, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x14, 0xb0, 0x01, 0x00,
4132 0x00, 0x00, 0x00, 0x1d, 0x14, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
4133 0x14, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x24, 0xb0, 0x01, 0x00,
4134 0x12, 0x00, 0x00, 0x17, 0x10, 0xc8, 0x01, 0x00, 0x37, 0x88, 0x00, 0x1a,
4135 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
4136 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
4137 0x48, 0xc1, 0x01, 0x00, 0x20, 0x88, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00,
4138 0x21, 0x88, 0x68, 0x07, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12,
4139 0x1a, 0xb0, 0x01, 0x00, 0x24, 0x88, 0x80, 0x08, 0xf0, 0x31, 0x00, 0x00,
4140 0x01, 0x00, 0x00, 0x11, 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
4141 0x1e, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
4142 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4143 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
4144 0x01, 0x1f, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00, 0x28, 0x88, 0xa8, 0x5c,
4145 0x1f, 0x10, 0x00, 0x00, 0x54, 0x88, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00,
4146 0x54, 0x88, 0x22, 0x0d, 0x24, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
4147 0x10, 0xc0, 0x01, 0x00, 0x2f, 0x88, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
4148 0x37, 0x88, 0x00, 0x41, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
4149 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4150 0x30, 0x88, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
4151 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x48, 0xb1, 0x01, 0x00,
4152 0xfb, 0x95, 0x00, 0x43, 0x23, 0x30, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0f,
4153 0x1e, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
4154 0x53, 0x88, 0xa2, 0x0d, 0x0e, 0x50, 0x00, 0x00, 0x42, 0x88, 0x22, 0x46,
4155 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00,
4156 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x40, 0x88, 0x22, 0x40,
4157 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
4158 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x3d, 0x88, 0xa8, 0x40,
4159 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4160 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
4161 0xe1, 0x91, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00,
4162 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4163 0x04, 0xb0, 0x01, 0x00, 0x47, 0x88, 0x1f, 0xf0, 0x0e, 0x30, 0x00, 0x00,
4164 0xe4, 0x87, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x5f,
4165 0x0f, 0x80, 0x01, 0x00, 0xe4, 0x87, 0x23, 0x07, 0x14, 0x6c, 0x00, 0x00,
4166 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40,
4167 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
4168 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
4169 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00,
4170 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
4171 0x62, 0xdd, 0x01, 0x00, 0x50, 0x88, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
4172 0xe4, 0x87, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00, 0xe4, 0x87, 0x00, 0x0d,
4173 0x18, 0xc0, 0x00, 0x00, 0x71, 0x88, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4174 0x00, 0x00, 0x00, 0x19, 0x0a, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05,
4175 0x48, 0xc9, 0x01, 0x00, 0x0a, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00,
4176 0x02, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x20, 0x40,
4177 0xe5, 0xb1, 0x01, 0x00, 0x0d, 0x00, 0x2d, 0x1d, 0x48, 0xc1, 0x01, 0x00,
4178 0x09, 0x00, 0x00, 0xf3, 0x38, 0x88, 0x01, 0x00, 0x0d, 0x00, 0x20, 0x50,
4179 0xe7, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x2d, 0x40, 0x3f, 0xb0, 0x01, 0x00,
4180 0x00, 0x00, 0x00, 0xf4, 0x32, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x20, 0x40,
4181 0xe1, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x01, 0x00,
4182 0x00, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00, 0x02, 0x00, 0x00, 0x1d,
4183 0x94, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x91, 0xb0, 0x01, 0x00,
4184 0x66, 0x88, 0xa0, 0xfc, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4185 0x91, 0xc0, 0x01, 0x00, 0x64, 0x88, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00,
4186 0x04, 0x80, 0x00, 0x05, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
4187 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x48, 0xc1, 0x01, 0x00,
4188 0x02, 0x00, 0x00, 0x18, 0x94, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x18,
4189 0x90, 0xb0, 0x01, 0x00, 0x6e, 0x88, 0xa0, 0xfc, 0x90, 0x40, 0x00, 0x00,
4190 0x00, 0x00, 0x00, 0x41, 0x91, 0xc0, 0x01, 0x00, 0x6c, 0x88, 0xa2, 0x41,
4191 0x95, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xe0, 0xb1, 0x01, 0x00,
4192 0x10, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05,
4193 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x48, 0xc1, 0x01, 0x00,
4194 0x04, 0x80, 0x00, 0x05, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4195 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0xc0, 0x01, 0x00,
4196 0x76, 0x88, 0x42, 0x30, 0x3d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e,
4197 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x41, 0x3d, 0xc3, 0x01, 0x00,
4198 0x04, 0x00, 0x20, 0x42, 0xec, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e,
4199 0x82, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x2e, 0x1d, 0x82, 0xc0, 0x01, 0x00,
4200 0x00, 0x00, 0x66, 0x18, 0x82, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4201 0x80, 0xc0, 0x01, 0x00, 0x80, 0x88, 0xa0, 0x41, 0x80, 0x44, 0x00, 0x00,
4202 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40,
4203 0x92, 0xf4, 0x01, 0x00, 0x0a, 0x00, 0x2e, 0x30, 0x81, 0x84, 0x01, 0x00,
4204 0x84, 0x88, 0x90, 0x40, 0x92, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4205 0x93, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x93, 0xa4, 0x01, 0x00,
4206 0x00, 0x00, 0x00, 0x1d, 0x48, 0xc1, 0x01, 0x00, 0x04, 0x00, 0x20, 0x19,
4207 0xe8, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0xc0, 0x01, 0x00,
4208 0x8a, 0x88, 0xa0, 0x19, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4209 0x17, 0xc0, 0x01, 0x00, 0x0d, 0x00, 0x2f, 0x1e, 0x32, 0xc0, 0x01, 0x00,
4210 0x8f, 0x88, 0xa2, 0x40, 0x15, 0x6c, 0x00, 0x00, 0x8e, 0x88, 0xa0, 0x1c,
4211 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
4212 0x00, 0x00, 0x63, 0xf3, 0x38, 0x94, 0x01, 0x00, 0x10, 0x00, 0x00, 0x05,
4213 0x48, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x1e, 0x98, 0xb0, 0x01, 0x00,
4214 0x00, 0x00, 0x60, 0x1a, 0x98, 0xc0, 0x01, 0x00, 0x0c, 0x00, 0x20, 0x40,
4215 0xe1, 0xb1, 0x01, 0x00, 0x9d, 0x88, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
4216 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
4217 0x42, 0xc9, 0x01, 0x00, 0x9b, 0x88, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4218 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4219 0x62, 0xdd, 0x01, 0x00, 0x98, 0x88, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4220 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03,
4221 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
4222 0x30, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x12, 0x00, 0x00, 0x1a,
4223 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x17, 0xf0, 0xb1, 0x01, 0x00,
4224 0x10, 0x00, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10,
4225 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
4226 0x20, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00, 0xa3, 0x88, 0xa8, 0x40,
4227 0x81, 0x32, 0x00, 0x00, 0xb1, 0x88, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4228 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x10,
4229 0x48, 0xc1, 0x01, 0x00, 0xad, 0x88, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4230 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4231 0x62, 0xdd, 0x01, 0x00, 0xaa, 0x88, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4232 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
4233 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x48, 0xb1, 0x01, 0x00,
4234 0xfb, 0x95, 0x00, 0x41, 0x23, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0f,
4235 0x1e, 0x8c, 0x01, 0x00, 0x20, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00,
4236 0x00, 0x00, 0x00, 0x0b, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
4237 0x17, 0xf0, 0x01, 0x00, 0xb6, 0x88, 0x90, 0xf2, 0x16, 0x40, 0x00, 0x00,
4238 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
4239 0x17, 0xa4, 0x01, 0x00, 0x10, 0x00, 0x00, 0x14, 0x2a, 0xc8, 0x01, 0x00,
4240 0x00, 0x00, 0x00, 0x1d, 0x2a, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
4241 0x2b, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x2a, 0x94, 0x01, 0x00,
4242 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xc1, 0x88, 0x22, 0x40,
4243 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
4244 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xbe, 0x88, 0xa8, 0x40,
4245 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4246 0x00, 0x80, 0x00, 0x17, 0x10, 0xdc, 0x01, 0x00, 0xde, 0x88, 0x22, 0x40,
4247 0x15, 0x6c, 0x00, 0x00, 0xc9, 0x88, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4248 0x00, 0x00, 0x00, 0x44, 0x1f, 0x90, 0x01, 0x00, 0xc8, 0x88, 0x22, 0x9f,
4249 0x13, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x88, 0x1c, 0xcc, 0x01, 0x00,
4250 0x6b, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4251 0x3f, 0xc3, 0x01, 0x00, 0x4e, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4252 0xcc, 0x88, 0xa2, 0x41, 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
4253 0x3e, 0xc0, 0x01, 0x00, 0xde, 0x88, 0x22, 0x40, 0x15, 0x6c, 0x00, 0x00,
4254 0xcf, 0x88, 0x20, 0x1e, 0x14, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
4255 0x3c, 0xb0, 0x01, 0x00, 0xc7, 0x95, 0x00, 0x1e, 0x24, 0x30, 0x01, 0x00,
4256 0xd4, 0x88, 0x22, 0x08, 0x2e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
4257 0x11, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x10, 0xc0, 0x01, 0x00,
4258 0x37, 0x88, 0x00, 0x40, 0x17, 0xb0, 0x00, 0x00, 0x6b, 0x84, 0x00, 0x88,
4259 0x1c, 0xb0, 0x00, 0x00, 0xc7, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4260 0xd1, 0x88, 0xa2, 0x08, 0x2e, 0x30, 0x00, 0x00, 0x80, 0x80, 0x00, 0xa6,
4261 0x04, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
4262 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00, 0x04, 0x00, 0x22, 0x04,
4263 0xe0, 0x31, 0x00, 0x00, 0x3d, 0x99, 0x00, 0x1f, 0x8c, 0x30, 0x01, 0x00,
4264 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0xff, 0x89, 0x00, 0x5c,
4265 0x1f, 0x90, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00,
4266 0x04, 0x00, 0x22, 0x04, 0xe0, 0x31, 0x00, 0x00, 0x4e, 0x99, 0x00, 0x40,
4267 0x81, 0x32, 0x01, 0x00, 0xe3, 0x88, 0xa2, 0x41, 0x87, 0x7c, 0x00, 0x00,
4268 0xe4, 0x88, 0x00, 0x1e, 0x3e, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
4269 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
4270 0x3d, 0x99, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00, 0xff, 0x89, 0x00, 0x5c,
4271 0x1f, 0x90, 0x00, 0x00, 0xef, 0x88, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
4272 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4273 0x42, 0xc9, 0x01, 0x00, 0xef, 0x88, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4274 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4275 0x62, 0xdd, 0x01, 0x00, 0xec, 0x88, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4276 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xf4, 0x88, 0x22, 0x07,
4277 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x42, 0xb1, 0x01, 0x00,
4278 0x00, 0x00, 0x00, 0x07, 0x42, 0xc1, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa1,
4279 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
4280 0x04, 0x00, 0x2e, 0x03, 0x48, 0xb1, 0x01, 0x00, 0xf7, 0x88, 0x20, 0x94,
4281 0x15, 0x6c, 0x00, 0x00, 0xf8, 0x88, 0x00, 0x94, 0xe1, 0xb1, 0x00, 0x00,
4282 0x00, 0x00, 0x00, 0x0a, 0xe0, 0xb1, 0x01, 0x00, 0xfb, 0x88, 0x22, 0x40,
4283 0x31, 0x6c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
4284 0x00, 0x00, 0x60, 0x18, 0x38, 0x96, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
4285 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4286 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4287 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
4288 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x89, 0xa8, 0x40,
4289 0x23, 0x30, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4290 0x00, 0x00, 0x2d, 0x52, 0x11, 0xc0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03,
4291 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00,
4292 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4293 0x0e, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4, 0x0c, 0xc8, 0x01, 0x00,
4294 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4,
4295 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xc1, 0x01, 0x00,
4296 0x0e, 0x89, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00, 0x0f, 0x89, 0x68, 0x07,
4297 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12, 0x1a, 0xb0, 0x01, 0x00,
4298 0x00, 0x00, 0x00, 0x10, 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
4299 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
4300 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
4301 0x61, 0xb1, 0x01, 0x00, 0x01, 0x1f, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00,
4302 0x14, 0x89, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00, 0x45, 0x89, 0x22, 0x0d,
4303 0x14, 0x6c, 0x00, 0x00, 0x1a, 0x89, 0x22, 0x0d, 0x24, 0x6c, 0x00, 0x00,
4304 0x00, 0x00, 0x00, 0x0d, 0x10, 0xc0, 0x01, 0x00, 0x1e, 0x89, 0x00, 0x0d,
4305 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x2b, 0xc0, 0x01, 0x00,
4306 0x00, 0x00, 0x00, 0x15, 0xa2, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x20,
4307 0x10, 0xc8, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00,
4308 0x20, 0x89, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00, 0x27, 0x89, 0x00, 0x41,
4309 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
4310 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x21, 0x89, 0xa8, 0x5c,
4311 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4312 0x00, 0x00, 0x00, 0x10, 0x48, 0xb1, 0x01, 0x00, 0xc2, 0x94, 0x00, 0x43,
4313 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
4314 0x04, 0x00, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00, 0x44, 0x89, 0xa2, 0x0d,
4315 0x0e, 0x50, 0x00, 0x00, 0x33, 0x89, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
4316 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
4317 0x42, 0xc9, 0x01, 0x00, 0x31, 0x89, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4318 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4319 0x62, 0xdd, 0x01, 0x00, 0x2e, 0x89, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4320 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03,
4321 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
4322 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4323 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
4324 0x38, 0x89, 0x1f, 0xf0, 0x0e, 0x30, 0x00, 0x00, 0x09, 0x89, 0x00, 0x4c,
4325 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x5f, 0x0f, 0x80, 0x01, 0x00,
4326 0x09, 0x89, 0x23, 0x07, 0x14, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10,
4327 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
4328 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4329 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00,
4330 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
4331 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
4332 0x41, 0x89, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00, 0x09, 0x89, 0x00, 0x03,
4333 0x0c, 0xb0, 0x00, 0x00, 0x09, 0x89, 0x00, 0x0d, 0x18, 0xc0, 0x00, 0x00,
4334 0x4e, 0x89, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
4335 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
4336 0x00, 0x00, 0x2d, 0x10, 0x48, 0xc1, 0x01, 0x00, 0x4e, 0x89, 0x22, 0x40,
4337 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
4338 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x4b, 0x89, 0xa8, 0x40,
4339 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4340 0x00, 0x00, 0x00, 0x10, 0x48, 0xb1, 0x01, 0x00, 0xc2, 0x94, 0x00, 0x41,
4341 0x23, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x17, 0x10, 0xb0, 0x01, 0x00,
4342 0x52, 0x89, 0x00, 0x40, 0x2b, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
4343 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 0xb1, 0x01, 0x00,
4344 0x57, 0x89, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x88,
4345 0x1c, 0xcc, 0x01, 0x00, 0x6b, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4346 0x4e, 0x99, 0x00, 0x41, 0x3f, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4347 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
4348 0x3d, 0x99, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00, 0x15, 0x8a, 0x00, 0x5c,
4349 0x1f, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0e, 0xf4, 0x01, 0x00,
4350 0x00, 0x00, 0x00, 0x3a, 0x01, 0x84, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
4351 0x1a, 0xf4, 0x01, 0x00, 0x0b, 0x96, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00,
4352 0x66, 0x89, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00, 0x64, 0x89, 0x22, 0x42,
4353 0x81, 0x6c, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4354 0x65, 0x89, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00, 0xff, 0x89, 0x00, 0x40,
4355 0x0f, 0xb0, 0x00, 0x00, 0x6e, 0x89, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
4356 0x86, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x6e, 0x89, 0x22, 0x20,
4357 0x85, 0x6c, 0x00, 0x00, 0x6b, 0x89, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
4358 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x66, 0x96, 0x00, 0x5c,
4359 0x1f, 0x00, 0x01, 0x00, 0x85, 0x98, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
4360 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xce, 0x99, 0x00, 0x07,
4361 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4362 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4363 0x80, 0xb0, 0x01, 0x00, 0xa8, 0x8a, 0xa2, 0x5f, 0x81, 0x6c, 0x00, 0x00,
4364 0xa8, 0x00, 0x2d, 0x43, 0x19, 0x80, 0x01, 0x00, 0x37, 0x00, 0x2d, 0xf0,
4365 0x24, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x8e, 0xf4, 0x01, 0x00,
4366 0x0f, 0x00, 0x00, 0xf3, 0x90, 0x88, 0x01, 0x00, 0x7d, 0x89, 0x22, 0x48,
4367 0x8e, 0x6c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4368 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0x7d, 0x89, 0x1f, 0xf0,
4369 0x24, 0x6c, 0x00, 0x00, 0x7c, 0x89, 0x23, 0x41, 0x8f, 0x6c, 0x00, 0x00,
4370 0xa8, 0x8a, 0x00, 0x47, 0x81, 0xb0, 0x00, 0x00, 0xa8, 0x8a, 0x00, 0x48,
4371 0x81, 0xb0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4372 0xb0, 0x00, 0x2d, 0xf0, 0x14, 0xb0, 0x01, 0x00, 0x82, 0x89, 0x22, 0x0a,
4373 0x90, 0x40, 0x00, 0x00, 0x21, 0x99, 0x00, 0x40, 0x91, 0x30, 0x01, 0x00,
4374 0xa8, 0x8a, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0xb0, 0x00, 0x2d, 0x45,
4375 0x81, 0xb0, 0x01, 0x00, 0x8e, 0x89, 0x22, 0xf0, 0x2c, 0x30, 0x00, 0x00,
4376 0xa3, 0x00, 0x2d, 0x30, 0x83, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x2d, 0xf3,
4377 0x82, 0xe0, 0x01, 0x00, 0x88, 0x89, 0xa3, 0x41, 0x2c, 0x6c, 0x00, 0x00,
4378 0x00, 0x00, 0x00, 0x16, 0x82, 0xb0, 0x01, 0x00, 0x98, 0x00, 0x2d, 0xf0,
4379 0x82, 0xc0, 0x01, 0x00, 0x88, 0x00, 0x2d, 0xf0, 0x82, 0xd0, 0x01, 0x00,
4380 0x00, 0x00, 0x00, 0xf2, 0x98, 0xe8, 0x01, 0x00, 0xa8, 0x8a, 0x20, 0x4c,
4381 0x82, 0x6c, 0x00, 0x00, 0x7c, 0x00, 0x2d, 0x41, 0x98, 0xe8, 0x01, 0x00,
4382 0xa8, 0x8a, 0x20, 0xf0, 0x98, 0x6c, 0x00, 0x00, 0xff, 0x89, 0x22, 0x0a,
4383 0x80, 0x32, 0x00, 0x00, 0x40, 0x02, 0x00, 0x0c, 0x7e, 0x89, 0x01, 0x00,
4384 0xff, 0x89, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xa8, 0x8a, 0x00, 0x49,
4385 0x81, 0xb0, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00,
4386 0x96, 0x89, 0x22, 0x43, 0x21, 0x6f, 0x00, 0x00, 0x13, 0x80, 0x00, 0x40,
4387 0x80, 0xdc, 0x01, 0x00, 0x97, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4388 0x1a, 0x80, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00, 0x97, 0x89, 0xa2, 0x5e,
4389 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0xb1, 0x01, 0x00,
4390 0x99, 0x89, 0x9f, 0x85, 0x80, 0x32, 0x00, 0x00, 0x9d, 0x89, 0x00, 0x40,
4391 0x81, 0xb2, 0x00, 0x00, 0x5f, 0x84, 0x22, 0x40, 0x57, 0x7d, 0x00, 0x00,
4392 0x01, 0x00, 0x00, 0x40, 0x57, 0x99, 0x01, 0x00, 0x9d, 0x89, 0x42, 0x40,
4393 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
4394 0x49, 0x84, 0x1a, 0x5b, 0x69, 0x93, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x40,
4395 0x61, 0x99, 0x01, 0x00, 0xa0, 0x89, 0xa8, 0xb1, 0x80, 0x30, 0x00, 0x00,
4396 0xc9, 0x89, 0x1d, 0x40, 0x80, 0x32, 0x00, 0x00, 0xba, 0x89, 0x22, 0x40,
4397 0xaf, 0x6f, 0x00, 0x00, 0xba, 0x89, 0x22, 0x5b, 0x81, 0x7c, 0x00, 0x00,
4398 0x04, 0x00, 0x22, 0x5d, 0x73, 0x7d, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x40,
4399 0x61, 0x99, 0x01, 0x00, 0xa6, 0x89, 0xa8, 0xb1, 0x94, 0x30, 0x00, 0x00,
4400 0x00, 0x00, 0x00, 0x5f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
4401 0x62, 0xb1, 0x01, 0x00, 0xa9, 0x89, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4402 0xab, 0x89, 0x43, 0x40, 0x81, 0x32, 0x00, 0x00, 0xb9, 0x89, 0x22, 0x57,
4403 0x73, 0x7d, 0x00, 0x00, 0x77, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
4404 0xad, 0x89, 0xa8, 0xb1, 0x94, 0x30, 0x00, 0x00, 0x77, 0x00, 0x00, 0x40,
4405 0x61, 0x99, 0x01, 0x00, 0xaf, 0x89, 0xa8, 0xb1, 0x96, 0x30, 0x00, 0x00,
4406 0x00, 0x00, 0x00, 0x48, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
4407 0x62, 0xb1, 0x01, 0x00, 0xb2, 0x89, 0xa8, 0x4a, 0x80, 0x33, 0x00, 0x00,
4408 0xb7, 0x89, 0x22, 0x5f, 0x95, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
4409 0x62, 0xb1, 0x01, 0x00, 0xb5, 0x89, 0xa8, 0x4b, 0xac, 0x33, 0x00, 0x00,
4410 0x00, 0x00, 0x1b, 0xa5, 0x82, 0xb3, 0x01, 0x00, 0xba, 0x89, 0x00, 0xbe,
4411 0x83, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x40, 0x81, 0xb3, 0x01, 0x00,
4412 0x40, 0x18, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0xa6,
4413 0x86, 0xb0, 0x01, 0x00, 0xc7, 0x89, 0xa2, 0x40, 0x86, 0x04, 0x00, 0x00,
4414 0x1b, 0x84, 0x9c, 0x40, 0x80, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x40,
4415 0x88, 0x88, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x50, 0x47, 0x31, 0x01, 0x00,
4416 0x36, 0x00, 0x00, 0x44, 0x88, 0xcc, 0x01, 0x00, 0xc3, 0x89, 0x52, 0x40,
4417 0x81, 0x32, 0x00, 0x00, 0xe3, 0x89, 0x00, 0x40, 0x47, 0x31, 0x01, 0x00,
4418 0x00, 0x00, 0x00, 0x41, 0x89, 0xb0, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x48,
4419 0x47, 0x31, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x05, 0x47, 0x31, 0x01, 0x00,
4420 0x1b, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40,
4421 0x47, 0x99, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x41, 0xe1, 0xc1, 0x00, 0x00,
4422 0x78, 0x18, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00, 0xd0, 0x89, 0x22, 0x54,
4423 0x81, 0x7c, 0x00, 0x00, 0xcb, 0x89, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
4424 0x00, 0x82, 0x00, 0xb4, 0x69, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x44,
4425 0x93, 0x93, 0x01, 0x00, 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
4426 0xe3, 0x89, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00, 0xde, 0x89, 0x0f, 0x40,
4427 0x80, 0x32, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x40, 0x88, 0x88, 0x01, 0x00,
4428 0xe3, 0x89, 0x00, 0x50, 0x47, 0x31, 0x01, 0x00, 0x36, 0x00, 0x00, 0x44,
4429 0x88, 0xcc, 0x01, 0x00, 0xd6, 0x89, 0x99, 0x40, 0x80, 0x32, 0x00, 0x00,
4430 0x00, 0x00, 0x00, 0x48, 0x89, 0xd0, 0x01, 0x00, 0xd8, 0x89, 0x9b, 0x40,
4431 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xd0, 0x01, 0x00,
4432 0xda, 0x89, 0x1f, 0x44, 0x80, 0x32, 0x00, 0x00, 0xe3, 0x89, 0x00, 0x40,
4433 0x47, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x89, 0xb0, 0x01, 0x00,
4434 0xe3, 0x89, 0x00, 0x48, 0x47, 0x31, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x58,
4435 0x47, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4436 0x10, 0x00, 0x00, 0x40, 0x86, 0xf4, 0x01, 0x00, 0x6f, 0x00, 0x00, 0x43,
4437 0x86, 0x88, 0x01, 0x00, 0x1b, 0x84, 0x26, 0x05, 0x47, 0x31, 0x00, 0x00,
4438 0xe3, 0x89, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x40,
4439 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x44, 0xf0, 0x41, 0x01, 0x00,
4440 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x80, 0x41,
4441 0xe1, 0xc1, 0x01, 0x00, 0x04, 0x00, 0x00, 0xcb, 0x81, 0xc8, 0x01, 0x00,
4442 0xe9, 0x89, 0x22, 0x40, 0xf2, 0x7f, 0x00, 0x00, 0x81, 0x80, 0x00, 0x6f,
4443 0x97, 0x33, 0x01, 0x00, 0xeb, 0x89, 0x22, 0x40, 0x73, 0x7d, 0x00, 0x00,
4444 0x9b, 0x80, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00, 0xe6, 0x89, 0x22, 0x59,
4445 0x73, 0x7d, 0x00, 0x00, 0x79, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
4446 0xe6, 0x89, 0x28, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0xec, 0x89, 0x00, 0x40,
4447 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x22, 0xc0, 0x95, 0x30, 0x00, 0x00,
4448 0x00, 0x00, 0x00, 0xd6, 0x97, 0xb0, 0x01, 0x00, 0xf4, 0x89, 0x22, 0x5d,
4449 0x73, 0x7d, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
4450 0xf2, 0x89, 0xa8, 0xb1, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e,
4451 0x7f, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xc5, 0xb1, 0x01, 0x00,
4452 0x04, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x25, 0x01, 0x00, 0x40,
4453 0x81, 0x32, 0x01, 0x00, 0xf7, 0x89, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
4454 0xf9, 0x89, 0x43, 0x5f, 0x7f, 0x13, 0x00, 0x00, 0x26, 0x01, 0x00, 0xbf,
4455 0xc5, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x7f, 0x83, 0x01, 0x00,
4456 0x00, 0x00, 0x00, 0x5e, 0x7f, 0x93, 0x01, 0x00, 0x75, 0x98, 0x00, 0xbf,
4457 0xc5, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4458 0x06, 0x8a, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
4459 0x42, 0xc9, 0x01, 0x00, 0x06, 0x8a, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4460 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4461 0x62, 0xdd, 0x01, 0x00, 0x03, 0x8a, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4462 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x62, 0x95, 0x22, 0x02,
4463 0x80, 0x32, 0x00, 0x00, 0x07, 0x8a, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
4464 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0x62, 0x95, 0x1a, 0x02,
4465 0x68, 0x97, 0x00, 0x00, 0x11, 0x8a, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
4466 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x11, 0x8a, 0x22, 0x40,
4467 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4468 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x0e, 0x8a, 0xa8, 0x40,
4469 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4470 0x6c, 0x95, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00, 0x12, 0x8a, 0x42, 0x40,
4471 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
4472 0x6c, 0x95, 0x1a, 0x02, 0x68, 0x97, 0x00, 0x00, 0x1c, 0x8a, 0x9c, 0x0f,
4473 0x80, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
4474 0x1c, 0x8a, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
4475 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4476 0x19, 0x8a, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
4477 0x1c, 0xb0, 0x00, 0x00, 0x6f, 0x84, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
4478 0x1d, 0x8a, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
4479 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x68, 0x97, 0x01, 0x00,
4480 0x6f, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6,
4481 0x56, 0xb1, 0x01, 0x00, 0x56, 0x95, 0x2f, 0x40, 0x05, 0xb0, 0x01, 0x00,
4482 0x6d, 0x8a, 0xa2, 0x40, 0xe7, 0x6d, 0x00, 0x00, 0xb8, 0x94, 0x29, 0x41,
4483 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0xef, 0x93, 0x01, 0x00,
4484 0x00, 0x00, 0x00, 0xf2, 0x0e, 0xb0, 0x01, 0x00, 0x29, 0x00, 0x00, 0x40,
4485 0x0d, 0x98, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07, 0x12, 0xe4, 0x01, 0x00,
4486 0x00, 0x00, 0x00, 0xa7, 0x13, 0xc0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
4487 0x1a, 0xf4, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07, 0x16, 0x88, 0x01, 0x00,
4488 0xff, 0xff, 0x00, 0x10, 0x34, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4489 0x34, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
4490 0x20, 0x18, 0x00, 0x40, 0x11, 0x98, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d,
4491 0x42, 0xc9, 0x01, 0x00, 0x51, 0x8a, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
4492 0x32, 0x8a, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x07,
4493 0x84, 0x89, 0x01, 0x00, 0x39, 0x8a, 0x05, 0xc2, 0x24, 0x30, 0x00, 0x00,
4494 0x51, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
4495 0x48, 0xb1, 0x01, 0x00, 0x6e, 0x8a, 0x1c, 0xf0, 0x18, 0x30, 0x01, 0x00,
4496 0x51, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x40,
4497 0x81, 0xb2, 0x01, 0x00, 0x48, 0x8a, 0xa0, 0x48, 0x23, 0x6c, 0x00, 0x00,
4498 0x00, 0x00, 0x00, 0x50, 0x35, 0xd0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x1a,
4499 0x42, 0xc9, 0x01, 0x00, 0x42, 0x8a, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4500 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x1a,
4501 0x62, 0xdd, 0x01, 0x00, 0x3f, 0x8a, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4502 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
4503 0x43, 0x99, 0x01, 0x00, 0x6e, 0x8a, 0x00, 0xf8, 0x18, 0x30, 0x01, 0x00,
4504 0x43, 0x8a, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x10,
4505 0x34, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x34, 0x94, 0x01, 0x00,
4506 0x20, 0x18, 0x00, 0x40, 0x11, 0x98, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x1a,
4507 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00,
4508 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4509 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x1a, 0x62, 0xdd, 0x01, 0x00,
4510 0x4c, 0x8a, 0xa8, 0x09, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4511 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x35, 0xc0, 0x01, 0x00,
4512 0x00, 0x00, 0x00, 0x44, 0x11, 0xc0, 0x01, 0x00, 0x5d, 0x8a, 0x22, 0x41,
4513 0x0d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00,
4514 0x59, 0x8a, 0xa0, 0xaa, 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4515 0x0f, 0xb0, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07, 0x12, 0xe4, 0x01, 0x00,
4516 0x00, 0x00, 0x00, 0xa7, 0x13, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4517 0x1b, 0xb0, 0x01, 0x00, 0x30, 0x8a, 0x00, 0x41, 0x17, 0xb0, 0x00, 0x00,
4518 0x00, 0x02, 0x00, 0x09, 0x12, 0xc8, 0x01, 0x00, 0x30, 0x8a, 0x83, 0x41,
4519 0x17, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
4520 0x30, 0x8a, 0x00, 0x41, 0x1b, 0xc0, 0x00, 0x00, 0x68, 0x8a, 0x23, 0x40,
4521 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x35, 0xd0, 0x01, 0x00,
4522 0x00, 0x80, 0x00, 0x1a, 0x42, 0xc9, 0x01, 0x00, 0x65, 0x8a, 0x22, 0x40,
4523 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4524 0x40, 0x00, 0x00, 0x1a, 0x62, 0xdd, 0x01, 0x00, 0x62, 0x8a, 0xa8, 0x40,
4525 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4526 0x20, 0x98, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x6e, 0x8a, 0x00, 0xf8,
4527 0x18, 0x30, 0x01, 0x00, 0x66, 0x8a, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
4528 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00, 0x6b, 0x8a, 0xa0, 0xaa,
4529 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xb0, 0x01, 0x00,
4530 0xb8, 0x94, 0x20, 0x07, 0xe4, 0xb1, 0x01, 0x00, 0x56, 0x95, 0x20, 0x40,
4531 0xe7, 0xb1, 0x01, 0x00, 0xff, 0x89, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
4532 0xff, 0xff, 0x00, 0x0c, 0x80, 0xd8, 0x01, 0x00, 0xc0, 0x02, 0x00, 0x0c,
4533 0x7e, 0x89, 0x01, 0x00, 0x80, 0x8a, 0x26, 0x54, 0x61, 0x31, 0x00, 0x00,
4534 0x76, 0x8a, 0x87, 0x0c, 0x80, 0x32, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x40,
4535 0x62, 0x99, 0x01, 0x00, 0x76, 0x8a, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
4536 0x76, 0x8a, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00, 0x72, 0x8a, 0x00, 0x40,
4537 0x81, 0xb2, 0x00, 0x00, 0x7b, 0x8a, 0x22, 0x46, 0x19, 0x7c, 0x00, 0x00,
4538 0x0d, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
4539 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x01, 0x00,
4540 0x77, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x80, 0x8a, 0x22, 0x49,
4541 0x19, 0x7c, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00,
4542 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x54,
4543 0x77, 0x7d, 0x01, 0x00, 0x7b, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4544 0x10, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
4545 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x01, 0x00,
4546 0x80, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x30, 0x94, 0x2f, 0x55,
4547 0xf1, 0x93, 0x01, 0x00, 0x00, 0x40, 0x00, 0xa6, 0x56, 0xb1, 0x01, 0x00,
4548 0x6f, 0x84, 0xa2, 0x41, 0xe5, 0x51, 0x00, 0x00, 0x64, 0x00, 0x00, 0x40,
4549 0xe5, 0x99, 0x01, 0x00, 0x88, 0x8a, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
4550 0x8b, 0x8a, 0xa2, 0x93, 0x57, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4551 0x57, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xab, 0x27, 0xb3, 0x01, 0x00,
4552 0x6f, 0x84, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0x6f, 0x84, 0x22, 0x51,
4553 0xfd, 0x7f, 0x00, 0x00, 0x6f, 0x84, 0xa2, 0x41, 0x1d, 0x53, 0x00, 0x00,
4554 0x50, 0x46, 0x00, 0x40, 0x1d, 0x9b, 0x01, 0x00, 0x34, 0x82, 0x00, 0x40,
4555 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
4556 0xfc, 0x81, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0x97, 0x8a, 0x22, 0x40,
4557 0xb5, 0x6f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
4558 0xff, 0x81, 0x00, 0x41, 0xb5, 0x53, 0x01, 0x00, 0x6f, 0x84, 0x00, 0x40,
4559 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfd, 0x83, 0x01, 0x00,
4560 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x35, 0x82, 0x00, 0x40,
4561 0x49, 0x31, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
4562 0xfc, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
4563 0x91, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
4564 0xff, 0x81, 0x00, 0x40, 0xb5, 0x33, 0x01, 0x00, 0x60, 0x16, 0x20, 0x40,
4565 0xe5, 0xb1, 0x01, 0x00, 0xdb, 0x82, 0x00, 0x40, 0xb5, 0x33, 0x01, 0x00,
4566 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4a,
4567 0xb4, 0x8b, 0x01, 0x00, 0xff, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4568 0x0a, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4a,
4569 0xb4, 0xf7, 0x01, 0x00, 0xff, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4570 0x6f, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40,
4571 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x08, 0xb0, 0x01, 0x00,
4572 0x04, 0x00, 0x20, 0x40, 0xe6, 0xb1, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40,
4573 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x96, 0xc0, 0x01, 0x00,
4574 0xae, 0x8a, 0x00, 0x4b, 0x10, 0xc9, 0x00, 0x00, 0xd1, 0x8d, 0x00, 0x41,
4575 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4576 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4577 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4578 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4579 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4580 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x05, 0x8e, 0x00, 0x41,
4581 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4582 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4583 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4584 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4585 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4586 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x37, 0x8e, 0x00, 0x45,
4587 0x09, 0xb0, 0x00, 0x00, 0x37, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4588 0x37, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x37, 0x8e, 0x00, 0x45,
4589 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4590 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4591 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4592 0x76, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x9f, 0x8e, 0x00, 0x43,
4593 0x09, 0xb0, 0x00, 0x00, 0xa3, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4594 0x0b, 0x90, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4595 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4596 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4597 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4598 0xaf, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xae, 0x8e, 0x00, 0x43,
4599 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4600 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4601 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4602 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x6f, 0x8f, 0x00, 0x42,
4603 0x09, 0xb0, 0x00, 0x00, 0x6f, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4604 0x6f, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45,
4605 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4606 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4607 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4608 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x9b, 0x8f, 0x00, 0x43,
4609 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4610 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4611 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4612 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4613 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4614 0xb9, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xb9, 0x8f, 0x00, 0x44,
4615 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4616 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4617 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4618 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4619 0x8f, 0xb0, 0x00, 0x00, 0xb9, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4620 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45,
4621 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4622 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4623 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4624 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xe1, 0x8f, 0x00, 0x44,
4625 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4626 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4627 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4628 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4629 0x8f, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4630 0xf2, 0x8f, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0xf2, 0x8f, 0x00, 0x45,
4631 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4632 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4633 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4634 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xf4, 0x8f, 0x00, 0x42,
4635 0x09, 0xb0, 0x00, 0x00, 0xf4, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4636 0xf4, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xf4, 0x8f, 0x00, 0x45,
4637 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4638 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4639 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4640 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4641 0x8f, 0xb0, 0x00, 0x00, 0xfc, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4642 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4643 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4644 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4645 0x8f, 0xb0, 0x00, 0x00, 0x0d, 0x90, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4646 0xfd, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x0d, 0x90, 0x00, 0x44,
4647 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4648 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4649 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4650 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4651 0x8f, 0xb0, 0x00, 0x00, 0x0e, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4652 0x04, 0x90, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45,
4653 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4654 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4655 0x8f, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
4656 0x6d, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x6d, 0x8f, 0x00, 0x43,
4657 0x09, 0xb0, 0x00, 0x00, 0x6d, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4658 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4659 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4660 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x41,
4661 0x09, 0xb0, 0x00, 0x00, 0x0f, 0x90, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4662 0x0f, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x0f, 0x90, 0x00, 0x44,
4663 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4664 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4665 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4666 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4667 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4668 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x16, 0x90, 0x00, 0x45,
4669 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4670 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4671 0x8f, 0xb0, 0x00, 0x00, 0x18, 0x90, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4672 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4673 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4674 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4675 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4676 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4677 0x8f, 0xb0, 0x00, 0x00, 0x24, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4678 0x8d, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xa3, 0x8e, 0x00, 0x44,
4679 0x09, 0xb0, 0x00, 0x00, 0x0b, 0x90, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4680 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4681 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4682 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4683 0x8f, 0xb0, 0x00, 0x00, 0x95, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4684 0xa3, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x0b, 0x90, 0x00, 0x45,
4685 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4686 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4687 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4688 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xa6, 0x90, 0x00, 0x43,
4689 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4690 0xcf, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4691 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
4692 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4693 0x8f, 0xb0, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4694 0x91, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xa3, 0x8e, 0x00, 0x44,
4695 0x09, 0xb0, 0x00, 0x00, 0x0b, 0x90, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4696 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4697 0x8f, 0xb0, 0x00, 0x00, 0x07, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4698 0x00, 0x00, 0x00, 0xf3, 0x08, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x20, 0x47,
4699 0xe6, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x47, 0x96, 0xe4, 0x01, 0x00,
4700 0x00, 0x00, 0x00, 0x47, 0x96, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
4701 0x96, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x96, 0xc0, 0x01, 0x00,
4702 0x6e, 0x8b, 0x00, 0x4b, 0x10, 0xc9, 0x00, 0x00, 0xbe, 0x90, 0x00, 0x49,
4703 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4704 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4705 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4706 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4707 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4708 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4709 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4710 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4711 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4712 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xf7, 0x90, 0x00, 0x42,
4713 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4714 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4715 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4716 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4717 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4718 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4719 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4720 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4721 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4722 0xfd, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4723 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4724 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4725 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4726 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4727 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4728 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4729 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4730 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4731 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4732 0x0b, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4733 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4734 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4735 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4736 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4737 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4738 0x27, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4739 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4740 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4741 0x85, 0xb0, 0x00, 0x00, 0x2f, 0x91, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4742 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x87, 0x91, 0x00, 0x44,
4743 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4744 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4745 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4746 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4747 0x85, 0xb0, 0x00, 0x00, 0x86, 0x91, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00,
4748 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4749 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4750 0x00, 0x91, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4751 0x85, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
4752 0x00, 0x91, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x45,
4753 0x09, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
4754 0x00, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x48,
4755 0x09, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x49, 0x09, 0xb0, 0x00, 0x00,
4756 0x00, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x4b,
4757 0x09, 0xb0, 0x00, 0x00, 0x00, 0x91, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
4758 0x00, 0x91, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4759 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4760 0xe6, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4761 0x85, 0xb0, 0x00, 0x00, 0xe6, 0x91, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4762 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4763 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4764 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4765 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4766 0xe6, 0x91, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4767 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4768 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4769 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4770 0xfe, 0x91, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4771 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4772 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4773 0x85, 0xb0, 0x00, 0x00, 0x15, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4774 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xf2, 0x91, 0x00, 0x45,
4775 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4776 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x6a, 0x94, 0x00, 0x46,
4777 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4778 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4779 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4780 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x91, 0x00, 0x46,
4781 0x09, 0xb0, 0x00, 0x00, 0x0b, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
4782 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x48,
4783 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4784 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4785 0x85, 0xb0, 0x00, 0x00, 0x27, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
4786 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4787 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4788 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4789 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4790 0x87, 0x91, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x2f, 0x91, 0x00, 0x43,
4791 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4792 0x25, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4793 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4794 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x86, 0x91, 0x00, 0x4c,
4795 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4796 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4797 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4798 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4799 0x85, 0xb0, 0x00, 0x00, 0x1b, 0x92, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4800 0x1b, 0x92, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0xba, 0x8d, 0x00, 0x47,
4801 0x09, 0xb0, 0x00, 0x00, 0xba, 0x8d, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4802 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4803 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4804 0x1b, 0x92, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4805 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4806 0x00, 0x91, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00, 0x3e, 0x92, 0x00, 0x47,
4807 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4808 0x26, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4809 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4810 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4811 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4812 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x26, 0x92, 0x00, 0x47,
4813 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4814 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4815 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4816 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4817 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4818 0x26, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x3e, 0x92, 0x00, 0x47,
4819 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4820 0x25, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4821 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4822 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x26, 0x92, 0x00, 0x47,
4823 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4824 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4825 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4826 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4827 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4828 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x4d, 0x92, 0x00, 0x47,
4829 0x09, 0xb0, 0x00, 0x00, 0x4d, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4830 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4831 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4832 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4833 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4834 0xaf, 0x92, 0x00, 0x40, 0x09, 0xb0, 0x00, 0x00, 0xcc, 0x92, 0x00, 0x47,
4835 0x09, 0xb0, 0x00, 0x00, 0xc0, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4836 0x1e, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x1e, 0x92, 0x00, 0x47,
4837 0x09, 0xb0, 0x00, 0x00, 0xcc, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4838 0xd3, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0xd3, 0x92, 0x00, 0x48,
4839 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4840 0xc0, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x1e, 0x92, 0x00, 0x47,
4841 0x09, 0xb0, 0x00, 0x00, 0x1e, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4842 0xc0, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4843 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4844 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xe6, 0x91, 0x00, 0x43,
4845 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4846 0xe6, 0x91, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0xe6, 0x91, 0x00, 0x46,
4847 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4848 0x25, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4849 0x85, 0xb0, 0x00, 0x00, 0xe6, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
4850 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xe6, 0x91, 0x00, 0x4c,
4851 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4852 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4853 0x85, 0xb0, 0x00, 0x00, 0x3d, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4854 0x31, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x25, 0x92, 0x00, 0x47,
4855 0x09, 0xb0, 0x00, 0x00, 0x25, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4856 0x3d, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0xba, 0x8d, 0x00, 0x47,
4857 0x09, 0xb0, 0x00, 0x00, 0xba, 0x8d, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4858 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x31, 0x92, 0x00, 0x48,
4859 0x09, 0xb0, 0x00, 0x00, 0x25, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4860 0x25, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x31, 0x92, 0x00, 0x48,
4861 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4862 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x42,
4863 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4864 0xd5, 0x92, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4865 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4866 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4867 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4868 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x4b,
4869 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4870 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4871 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4872 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x43,
4873 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4874 0xd5, 0x92, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x46,
4875 0x09, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4876 0xd5, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4877 0x85, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
4878 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x4c,
4879 0x09, 0xb0, 0x00, 0x00, 0xd5, 0x92, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
4880 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4881 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4882 0xef, 0x92, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4883 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4884 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4885 0x85, 0xb0, 0x00, 0x00, 0x15, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
4886 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xef, 0x92, 0x00, 0x46,
4887 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4888 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4889 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4890 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4891 0x85, 0xb0, 0x00, 0x00, 0xf6, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
4892 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4893 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4894 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x15, 0x92, 0x00, 0x47,
4895 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4896 0xf6, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4897 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4898 0xf6, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4899 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4900 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4901 0x85, 0xb0, 0x00, 0x00, 0x19, 0x94, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
4902 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4903 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4904 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4905 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4906 0x18, 0x94, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4907 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4908 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4909 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4910 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4911 0x85, 0xb0, 0x00, 0x00, 0x19, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
4912 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x47,
4913 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4914 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4915 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4916 0x18, 0x94, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4917 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4918 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4919 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4920 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4921 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4922 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4923 0x85, 0xb0, 0x00, 0x00, 0xe0, 0x92, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
4924 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4925 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4926 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4927 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4928 0xec, 0x92, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4929 0x85, 0xb0, 0x00, 0x00, 0xec, 0x92, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4930 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4931 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4932 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4933 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4934 0xec, 0x92, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4935 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4936 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4937 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4938 0xec, 0x92, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4939 0x85, 0xb0, 0x00, 0x00, 0xec, 0x92, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4940 0xec, 0x92, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0xec, 0x92, 0x00, 0x47,
4941 0x09, 0xb0, 0x00, 0x00, 0xec, 0x92, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4942 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4943 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4944 0xec, 0x92, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4945 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4946 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4947 0x85, 0xb0, 0x00, 0x00, 0xfe, 0x91, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
4948 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4949 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4950 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x15, 0x92, 0x00, 0x47,
4951 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4952 0xf2, 0x91, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4953 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4954 0xb8, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4955 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4956 0x5f, 0x94, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4957 0x85, 0xb0, 0x00, 0x00, 0x5f, 0x94, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
4958 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4959 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4960 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4961 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4962 0x5f, 0x94, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4963 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4964 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4965 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4966 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4967 0x85, 0xb0, 0x00, 0x00, 0x5f, 0x94, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
4968 0x5f, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x47,
4969 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
4970 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4971 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4972 0x5f, 0x94, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4973 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4974 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xf2, 0x91, 0x00, 0x42,
4975 0x09, 0xb0, 0x00, 0x00, 0x6a, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
4976 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4977 0x85, 0xb0, 0x00, 0x00, 0xf2, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
4978 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x15, 0x92, 0x00, 0x47,
4979 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4980 0x6a, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4981 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4982 0x6a, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4983 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4984 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x6e, 0x94, 0x00, 0x43,
4985 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4986 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4987 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4988 0x15, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4989 0x85, 0xb0, 0x00, 0x00, 0xb0, 0x94, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
4990 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4991 0x85, 0xb0, 0x00, 0x00, 0x6e, 0x94, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
4992 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4993 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4994 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x7f, 0x94, 0x00, 0x43,
4995 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4996 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4997 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
4998 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
4999 0x85, 0xb0, 0x00, 0x00, 0x5d, 0x94, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
5000 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5001 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5002 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5003 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5004 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x7f, 0x94, 0x00, 0x43,
5005 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5006 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x48,
5007 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5008 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5009 0x85, 0xb0, 0x00, 0x00, 0x5d, 0x94, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
5010 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5011 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5012 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x90, 0x94, 0x00, 0x43,
5013 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5014 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5015 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5016 0x15, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5017 0x85, 0xb0, 0x00, 0x00, 0x90, 0x94, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
5018 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5019 0x85, 0xb0, 0x00, 0x00, 0x90, 0x94, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
5020 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5021 0x85, 0xb0, 0x00, 0x00, 0x0b, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
5022 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x91, 0x00, 0x42,
5023 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5024 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5025 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5026 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5027 0x85, 0xb0, 0x00, 0x00, 0xae, 0x94, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
5028 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5029 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5030 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5031 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5032 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x91, 0x00, 0x46,
5033 0x09, 0xb0, 0x00, 0x00, 0x0b, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
5034 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x48,
5035 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5036 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5037 0x85, 0xb0, 0x00, 0x00, 0xae, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
5038 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5039 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5040 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xb0, 0x94, 0x00, 0x4a,
5041 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5042 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5043 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5044 0x15, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5045 0x85, 0xb0, 0x00, 0x00, 0xb0, 0x94, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
5046 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5047 0x85, 0xb0, 0x00, 0x00, 0x6b, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
5048 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5049 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5050 0x6b, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5051 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5052 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5053 0x85, 0xb0, 0x00, 0x00, 0x15, 0x92, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
5054 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x6b, 0x94, 0x00, 0x46,
5055 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5056 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x6b, 0x94, 0x00, 0x46,
5057 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5058 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5059 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5060 0xb6, 0x94, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5061 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5062 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5063 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5064 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x5d, 0x94, 0x00, 0x4a,
5065 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5066 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5067 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5068 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5069 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5070 0xb6, 0x94, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5071 0x85, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
5072 0x25, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5073 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5074 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x5d, 0x94, 0x00, 0x4a,
5075 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5076 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5077 0x85, 0xb0, 0x00, 0x00, 0x2f, 0x91, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
5078 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5079 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5080 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5081 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5082 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5083 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5084 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5085 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5086 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5087 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5088 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5089 0x85, 0xb0, 0x00, 0x00, 0x2f, 0x91, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
5090 0x25, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x25, 0x91, 0x00, 0x48,
5091 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5092 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
5093 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
5094 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x07, 0x00, 0x2e, 0x4b,
5095 0x19, 0x90, 0x01, 0x00, 0x0a, 0x8a, 0x00, 0x04, 0xe6, 0xb1, 0x00, 0x00,
5096 0xba, 0x8d, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x3a,
5097 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5098 0xba, 0x8d, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x0f,
5099 0x1e, 0x8c, 0x01, 0x00, 0x21, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5100 0xca, 0x8d, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
5101 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
5102 0xca, 0x8d, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
5103 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5104 0xc7, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5105 0x1c, 0xb0, 0x00, 0x00, 0x13, 0x86, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
5106 0xcb, 0x8d, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
5107 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x68, 0x97, 0x01, 0x00,
5108 0x13, 0x86, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x05, 0x00, 0x2e, 0x4b,
5109 0x19, 0x90, 0x01, 0x00, 0x0a, 0x8a, 0x00, 0x04, 0xe6, 0xb1, 0x00, 0x00,
5110 0x00, 0x00, 0x00, 0x40, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5111 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5112 0x40, 0x00, 0x00, 0xa1, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5113 0xe0, 0xb1, 0x01, 0x00, 0x3d, 0x99, 0x00, 0x06, 0x07, 0x40, 0x01, 0x00,
5114 0x00, 0x00, 0x00, 0x06, 0x07, 0xd0, 0x01, 0x00, 0xd4, 0x00, 0x2e, 0x5c,
5115 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0xb1, 0x01, 0x00,
5116 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5117 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
5118 0x00, 0x00, 0x00, 0xfe, 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
5119 0x96, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xb1, 0x01, 0x00,
5120 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
5121 0x96, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x96, 0xc0, 0x01, 0x00,
5122 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5123 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x96, 0xc0, 0x01, 0x00,
5124 0x00, 0x00, 0x00, 0xfe, 0x96, 0xc0, 0x01, 0x00, 0x00, 0x30, 0x00, 0x4b,
5125 0x94, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x95, 0xf0, 0x01, 0x00,
5126 0x00, 0x00, 0x00, 0x4a, 0x96, 0xc0, 0x01, 0x00, 0x5e, 0x01, 0x2e, 0x34,
5127 0x97, 0x84, 0x01, 0x00, 0x02, 0x00, 0x00, 0x4b, 0xe4, 0xe5, 0x01, 0x00,
5128 0x64, 0x01, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
5129 0x86, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x2e, 0xa7, 0x87, 0xc0, 0x01, 0x00,
5130 0x10, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40,
5131 0xf1, 0x99, 0x01, 0x00, 0x58, 0x01, 0x00, 0x43, 0xf0, 0xc9, 0x01, 0x00,
5132 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5133 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
5134 0xf4, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5135 0x48, 0xb1, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
5136 0x08, 0x00, 0x2e, 0x40, 0x95, 0xb0, 0x01, 0x00, 0xfc, 0x8d, 0x20, 0x4b,
5137 0x94, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
5138 0xf9, 0x8d, 0x00, 0x41, 0x95, 0xc0, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10,
5139 0x44, 0xc9, 0x01, 0x00, 0x03, 0x8e, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
5140 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5141 0x62, 0xdd, 0x01, 0x00, 0xff, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5142 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5143 0x48, 0xb1, 0x01, 0x00, 0xaf, 0x97, 0x00, 0x40, 0x81, 0x30, 0x01, 0x00,
5144 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x03,
5145 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x86, 0xb0, 0x01, 0x00,
5146 0x00, 0x00, 0x00, 0xf8, 0x88, 0xb0, 0x01, 0x00, 0x08, 0x8e, 0x42, 0x40,
5147 0x81, 0x32, 0x00, 0x00, 0x0b, 0x8e, 0xa2, 0x4c, 0xfd, 0x7f, 0x00, 0x00,
5148 0x0c, 0x8e, 0x00, 0x4c, 0xfd, 0x93, 0x00, 0x00, 0x0d, 0x8e, 0x20, 0xf0,
5149 0x56, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x56, 0xb3, 0x01, 0x00,
5150 0x00, 0x00, 0x1a, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
5151 0x44, 0xc9, 0x01, 0x00, 0x64, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
5152 0x70, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
5153 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
5154 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x13, 0x8e, 0xa8, 0x44,
5155 0xe0, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x8c, 0xc8, 0x01, 0x00,
5156 0x00, 0x80, 0x00, 0x46, 0x44, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40,
5157 0xf1, 0x99, 0x01, 0x00, 0x68, 0x01, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00,
5158 0x64, 0x00, 0x00, 0x43, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
5159 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x62, 0xb1, 0x01, 0x00,
5160 0x1b, 0x8e, 0xa8, 0x44, 0xe0, 0x31, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5161 0x1c, 0xb0, 0x00, 0x00, 0x09, 0x00, 0x00, 0x07, 0x86, 0xe4, 0x01, 0x00,
5162 0x38, 0x00, 0x2e, 0xa7, 0x87, 0xc0, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x05,
5163 0x48, 0xb1, 0x01, 0x00, 0x23, 0x8e, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00,
5164 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00, 0x26, 0x8e, 0x22, 0x44,
5165 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x45, 0xc1, 0x01, 0x00,
5166 0x00, 0x00, 0x00, 0x4a, 0x19, 0x90, 0x01, 0x00, 0x68, 0x01, 0x20, 0xa2,
5167 0xe4, 0xb1, 0x01, 0x00, 0x88, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5168 0x2a, 0x8e, 0x23, 0x0b, 0xe5, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5169 0x19, 0x90, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
5170 0x50, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x58, 0x01, 0x00, 0x43,
5171 0xf0, 0xc9, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
5172 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
5173 0x62, 0xb1, 0x01, 0x00, 0x2f, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5174 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x5c, 0x00, 0x2e, 0x05,
5175 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5176 0x00, 0x00, 0x60, 0xf0, 0x96, 0xb0, 0x01, 0x00, 0xaf, 0x97, 0x00, 0x41,
5177 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5178 0x3a, 0x8e, 0xa2, 0x49, 0x19, 0x7c, 0x00, 0x00, 0x86, 0x00, 0x00, 0x40,
5179 0x47, 0x99, 0x01, 0x00, 0x3e, 0x8e, 0x00, 0x40, 0xe5, 0xb1, 0x00, 0x00,
5180 0x86, 0x00, 0x2f, 0x49, 0x19, 0x80, 0x01, 0x00, 0x3e, 0x8e, 0xa2, 0xf2,
5181 0x80, 0x32, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5182 0x00, 0x00, 0x00, 0x42, 0xe7, 0x91, 0x01, 0x00, 0x41, 0x8e, 0xa2, 0x46,
5183 0x19, 0x7c, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5184 0x45, 0x8e, 0x00, 0x40, 0xe5, 0xb1, 0x00, 0x00, 0xa0, 0x00, 0x2f, 0x46,
5185 0x19, 0x80, 0x01, 0x00, 0x45, 0x8e, 0xa2, 0xf2, 0x80, 0x32, 0x00, 0x00,
5186 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5187 0xe7, 0x91, 0x01, 0x00, 0xa8, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5188 0x34, 0x00, 0x2d, 0xf0, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
5189 0x0c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x10, 0xb0, 0x01, 0x00,
5190 0x00, 0x00, 0x00, 0xfb, 0x12, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3,
5191 0x16, 0x88, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x14, 0xf4, 0x01, 0x00,
5192 0x70, 0x8e, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x58, 0x8e, 0x22, 0x0a,
5193 0x16, 0x6c, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00,
5194 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0,
5195 0x84, 0x30, 0x00, 0x00, 0xe7, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5196 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5197 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x13, 0xc0, 0x01, 0x00,
5198 0x57, 0x8e, 0xa0, 0x43, 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5199 0x13, 0xb0, 0x01, 0x00, 0x4d, 0x8e, 0x00, 0x41, 0x15, 0xd0, 0x00, 0x00,
5200 0x70, 0x8e, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43,
5201 0x13, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00,
5202 0x04, 0x00, 0x22, 0xf0, 0x84, 0x30, 0x00, 0x00, 0xe7, 0x98, 0x00, 0x40,
5203 0x81, 0x32, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
5204 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5205 0x48, 0xb1, 0x01, 0x00, 0x70, 0x8e, 0x22, 0x41, 0x15, 0x50, 0x00, 0x00,
5206 0x00, 0x00, 0x00, 0x41, 0x11, 0xc0, 0x01, 0x00, 0x64, 0x8e, 0xa0, 0x43,
5207 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00,
5208 0x58, 0x00, 0x3d, 0x43, 0x11, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
5209 0x36, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x00, 0x30, 0x00, 0x00,
5210 0x00, 0x00, 0x00, 0x50, 0x83, 0xb0, 0x01, 0x00, 0xee, 0x97, 0x00, 0x47,
5211 0x61, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5212 0x5f, 0x95, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
5213 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5214 0x6c, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5215 0x1c, 0xb0, 0x00, 0x00, 0x60, 0x8e, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5216 0x37, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x20, 0x98, 0x00, 0x51,
5217 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5218 0x34, 0x00, 0x2e, 0x41, 0xf5, 0xb1, 0x01, 0x00, 0x00, 0x11, 0x00, 0x40,
5219 0xe5, 0x99, 0x01, 0x00, 0x78, 0x8e, 0x00, 0x48, 0x19, 0x90, 0x00, 0x00,
5220 0x34, 0x00, 0x2e, 0x41, 0xf5, 0xb1, 0x01, 0x00, 0x00, 0x11, 0x00, 0x40,
5221 0xe5, 0x99, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5222 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x7d, 0x8e, 0x22, 0x45,
5223 0x23, 0x7c, 0x00, 0x00, 0xb0, 0x00, 0x2f, 0xf0, 0x8c, 0xb0, 0x01, 0x00,
5224 0x00, 0x00, 0x60, 0xf0, 0x8c, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x00, 0x40,
5225 0x43, 0x99, 0x01, 0x00, 0x35, 0x00, 0x2d, 0xf0, 0x8c, 0xb0, 0x01, 0x00,
5226 0x58, 0x00, 0x3e, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0x82, 0x8e, 0x22, 0x48,
5227 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8d, 0xc0, 0x01, 0x00,
5228 0x00, 0x00, 0x68, 0x0a, 0x8c, 0xc0, 0x01, 0x00, 0x38, 0x00, 0x2a, 0x4a,
5229 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
5230 0x3c, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00, 0x10, 0x80, 0x00, 0x03,
5231 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x38, 0xb0, 0x01, 0x00,
5232 0x00, 0x00, 0x00, 0xf8, 0x26, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf8,
5233 0x02, 0x30, 0x00, 0x00, 0x90, 0x8e, 0x23, 0x01, 0x14, 0x6c, 0x00, 0x00,
5234 0x00, 0x00, 0x00, 0xf8, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
5235 0x82, 0xb0, 0x01, 0x00, 0x4c, 0x00, 0x20, 0xf0, 0xe4, 0xb1, 0x01, 0x00,
5236 0x44, 0x00, 0x20, 0x40, 0xe0, 0xb1, 0x01, 0x00, 0x48, 0x00, 0x20, 0x41,
5237 0xe0, 0xb1, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0x10, 0x32, 0xb0, 0x01, 0x00,
5238 0x21, 0x99, 0x00, 0xf0, 0x24, 0x30, 0x01, 0x00, 0x99, 0x8e, 0xa2, 0x44,
5239 0x81, 0x6c, 0x00, 0x00, 0x97, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
5240 0x8a, 0x96, 0x00, 0x40, 0x3b, 0x30, 0x01, 0x00, 0xbd, 0x8e, 0xa2, 0x08,
5241 0x3c, 0x30, 0x00, 0x00, 0x99, 0x8e, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5242 0xc7, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xbd, 0x8e, 0xa2, 0x08,
5243 0x3c, 0x30, 0x00, 0x00, 0x50, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
5244 0x54, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x20, 0x01,
5245 0xe4, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00,
5246 0x20, 0x98, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40,
5247 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5248 0x69, 0x96, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00, 0x78, 0x8e, 0x22, 0x4a,
5249 0x80, 0x32, 0x00, 0x00, 0xa5, 0x8e, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5250 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x69, 0x96, 0x00, 0xf3,
5251 0x94, 0x30, 0x01, 0x00, 0x58, 0x00, 0x3e, 0x43, 0x97, 0xe0, 0x01, 0x00,
5252 0x00, 0x00, 0x00, 0x1b, 0xf0, 0xb1, 0x01, 0x00, 0x1f, 0x00, 0x60, 0x00,
5253 0x00, 0x8c, 0x01, 0x00, 0xcf, 0x8d, 0x85, 0x11, 0x80, 0x32, 0x00, 0x00,
5254 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0xf0,
5255 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x8c, 0xc0, 0x01, 0x00,
5256 0x20, 0x98, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40,
5257 0x81, 0xb2, 0x00, 0x00, 0xaf, 0x8e, 0x00, 0x49, 0x19, 0x80, 0x00, 0x00,
5258 0xb4, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x8a, 0x96, 0x00, 0x40,
5259 0x3b, 0x30, 0x01, 0x00, 0xb8, 0x8e, 0xa2, 0x08, 0x3c, 0x30, 0x00, 0x00,
5260 0x20, 0x98, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40,
5261 0x81, 0xb2, 0x00, 0x00, 0xc7, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5262 0xb8, 0x8e, 0xa2, 0x08, 0x3c, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x5f,
5263 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5264 0x50, 0x00, 0x2d, 0x10, 0x32, 0xb0, 0x01, 0x00, 0x54, 0x00, 0x2d, 0xf0,
5265 0x38, 0xb0, 0x01, 0x00, 0x4e, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
5266 0x40, 0x00, 0x2d, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5267 0x14, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10, 0x8c, 0xc8, 0x01, 0x00,
5268 0x00, 0x80, 0x00, 0x46, 0x44, 0xc9, 0x01, 0x00, 0x68, 0x01, 0x2d, 0x44,
5269 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x68, 0xf2, 0x80, 0xc8, 0x01, 0x00,
5270 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05,
5271 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x37, 0xb0, 0x01, 0x00,
5272 0x00, 0x00, 0x00, 0x40, 0x36, 0xd0, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0x40,
5273 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0xc0, 0x01, 0x00,
5274 0x00, 0x00, 0x00, 0x52, 0x81, 0xd0, 0x01, 0x00, 0xcb, 0x8e, 0x20, 0x94,
5275 0x81, 0x6c, 0x00, 0x00, 0xb5, 0x97, 0x00, 0x94, 0xe5, 0x31, 0x01, 0x00,
5276 0xcc, 0x8e, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb5, 0x97, 0x00, 0x40,
5277 0xe4, 0x31, 0x01, 0x00, 0x20, 0x00, 0x00, 0x46, 0x62, 0xdd, 0x01, 0x00,
5278 0xcc, 0x8e, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0f,
5279 0x1e, 0x8c, 0x01, 0x00, 0xdc, 0x8e, 0x82, 0x41, 0x23, 0x40, 0x00, 0x00,
5280 0x20, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xd6, 0x8e, 0x22, 0x40,
5281 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
5282 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xd3, 0x8e, 0xa8, 0x40,
5283 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5284 0x00, 0x00, 0x00, 0x10, 0x48, 0xb1, 0x01, 0x00, 0xfb, 0x95, 0x00, 0x43,
5285 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5286 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5287 0x23, 0xb0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0f, 0x1e, 0x8c, 0x01, 0x00,
5288 0x00, 0x80, 0x00, 0x19, 0x44, 0xc9, 0x01, 0x00, 0xe4, 0x8e, 0x22, 0x41,
5289 0x19, 0x7c, 0x00, 0x00, 0xe0, 0x8e, 0xa3, 0x01, 0x0c, 0x6c, 0x00, 0x00,
5290 0xe1, 0x8e, 0x00, 0x06, 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
5291 0x04, 0xb0, 0x01, 0x00, 0xe3, 0x8e, 0x20, 0x02, 0x36, 0x6c, 0x00, 0x00,
5292 0x00, 0x00, 0x00, 0x1b, 0x04, 0xb0, 0x01, 0x00, 0xe7, 0x8e, 0x00, 0x02,
5293 0xf0, 0xb1, 0x00, 0x00, 0xe6, 0x8e, 0xa3, 0x01, 0x0c, 0x6c, 0x00, 0x00,
5294 0xe7, 0x8e, 0x68, 0x06, 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x01,
5295 0x04, 0xb0, 0x01, 0x00, 0xe9, 0x8e, 0x80, 0x08, 0xf0, 0x31, 0x00, 0x00,
5296 0x00, 0x00, 0x00, 0x11, 0x1e, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1c,
5297 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
5298 0x01, 0x1f, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00, 0xeb, 0x8e, 0xa8, 0x13,
5299 0xe0, 0x31, 0x00, 0x00, 0x22, 0x8f, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
5300 0x44, 0x00, 0x2d, 0x02, 0x0c, 0xd0, 0x01, 0x00, 0x12, 0x8f, 0xa2, 0x02,
5301 0x02, 0x50, 0x00, 0x00, 0xf9, 0x8e, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
5302 0x20, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0xf8, 0x8e, 0x22, 0x40,
5303 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
5304 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xf4, 0x8e, 0xa8, 0x40,
5305 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5306 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x44, 0x00, 0x2d, 0x5c,
5307 0x1f, 0x80, 0x01, 0x00, 0x48, 0x00, 0x2d, 0xf0, 0x38, 0xb0, 0x01, 0x00,
5308 0x4c, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00, 0x38, 0x00, 0x2f, 0xf2,
5309 0x02, 0xb0, 0x01, 0x00, 0x13, 0x8f, 0x22, 0x01, 0x14, 0x6c, 0x00, 0x00,
5310 0x06, 0x8f, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
5311 0x1f, 0x80, 0x01, 0x00, 0x20, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00,
5312 0x05, 0x8f, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
5313 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5314 0x02, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5315 0x1c, 0xb0, 0x00, 0x00, 0x38, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00,
5316 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x38, 0x00, 0x2d, 0xf0,
5317 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xe1, 0xc1, 0x01, 0x00,
5318 0x20, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x22, 0x4a,
5319 0xf1, 0xb1, 0x01, 0x00, 0x44, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00,
5320 0x00, 0x00, 0x00, 0x4a, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5321 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
5322 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x0f, 0x8f, 0xa8, 0x5c,
5323 0x1f, 0x10, 0x00, 0x00, 0x13, 0x8f, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5324 0x00, 0x00, 0x00, 0x02, 0x38, 0xc0, 0x01, 0x00, 0x1d, 0x8f, 0x22, 0x06,
5325 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
5326 0x1b, 0x8f, 0xa2, 0x02, 0x36, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x8f, 0x0d,
5327 0x42, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf8, 0x10, 0xc8, 0x01, 0x00,
5328 0x00, 0x00, 0x00, 0x5c, 0x11, 0x80, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
5329 0x37, 0x98, 0x01, 0x00, 0xcf, 0x8e, 0x00, 0xa1, 0x1a, 0xb0, 0x00, 0x00,
5330 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00, 0xcf, 0x8e, 0x00, 0x02,
5331 0x36, 0xd0, 0x00, 0x00, 0x50, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
5332 0x54, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x20, 0x01,
5333 0xe4, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00,
5334 0x27, 0x8f, 0x00, 0x5f, 0x01, 0xb0, 0x00, 0x00, 0x37, 0x00, 0x2d, 0x46,
5335 0x01, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x80, 0xf4, 0x01, 0x00,
5336 0x26, 0x8f, 0xa0, 0x43, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
5337 0x01, 0xb0, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
5338 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00, 0x2d, 0x8f, 0x22, 0x40,
5339 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
5340 0x40, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00, 0x2a, 0x8f, 0xa8, 0x40,
5341 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5342 0xfb, 0x95, 0x00, 0x10, 0x48, 0x31, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
5343 0x42, 0xc9, 0x01, 0x00, 0x34, 0x8f, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
5344 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5345 0x62, 0xdd, 0x01, 0x00, 0x31, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5346 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x60, 0x01, 0x2f, 0x05,
5347 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe4, 0xb1, 0x01, 0x00,
5348 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00, 0x39, 0x8f, 0x90, 0xf2,
5349 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
5350 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x32, 0x00, 0x00, 0xa6,
5351 0x2a, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x2a, 0x94, 0x01, 0x00,
5352 0x42, 0x8f, 0x22, 0x49, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
5353 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
5354 0x00, 0xf0, 0x00, 0x0c, 0x18, 0x8c, 0x01, 0x00, 0xf5, 0x97, 0x00, 0x4c,
5355 0x95, 0x30, 0x01, 0x00, 0x52, 0x8f, 0x00, 0x00, 0x92, 0xb0, 0x00, 0x00,
5356 0x49, 0x8f, 0x22, 0x40, 0xaf, 0x6f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x1e,
5357 0x94, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0x96, 0xb0, 0x01, 0x00,
5358 0x72, 0x98, 0x00, 0x40, 0x05, 0x30, 0x01, 0x00, 0x48, 0x8f, 0xa2, 0x40,
5359 0x97, 0x6c, 0x00, 0x00, 0x5b, 0x8f, 0x00, 0x47, 0x19, 0x80, 0x00, 0x00,
5360 0x52, 0x8f, 0x00, 0x00, 0x92, 0xb0, 0x00, 0x00, 0x49, 0x8f, 0x43, 0x48,
5361 0x61, 0x31, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x1e, 0x62, 0xdd, 0x01, 0x00,
5362 0x4e, 0x8f, 0x28, 0x40, 0x05, 0x30, 0x00, 0x00, 0x4a, 0x8f, 0x22, 0x48,
5363 0x77, 0x7d, 0x00, 0x00, 0x51, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5364 0x00, 0x00, 0x00, 0x15, 0x62, 0xb1, 0x01, 0x00, 0x5a, 0x8f, 0x28, 0x40,
5365 0x81, 0x32, 0x00, 0x00, 0x4e, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5366 0x00, 0x00, 0x1b, 0x00, 0x92, 0xb0, 0x01, 0x00, 0x57, 0x8f, 0x22, 0x41,
5367 0x19, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5368 0xcc, 0x95, 0x00, 0xf8, 0x00, 0x30, 0x01, 0x00, 0x54, 0x8f, 0xa2, 0x41,
5369 0x3b, 0x50, 0x00, 0x00, 0x5b, 0x8f, 0x00, 0x49, 0x00, 0xb0, 0x00, 0x00,
5370 0xff, 0x07, 0x00, 0x1e, 0x00, 0x8c, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40,
5371 0x81, 0x32, 0x01, 0x00, 0x5b, 0x8f, 0x00, 0x49, 0x00, 0xb0, 0x00, 0x00,
5372 0x00, 0x00, 0x1b, 0x47, 0x19, 0x80, 0x01, 0x00, 0x5e, 0x8f, 0x22, 0x5f,
5373 0x01, 0x6c, 0x00, 0x00, 0x4b, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5374 0xaa, 0x8a, 0x00, 0x00, 0x80, 0xb0, 0x00, 0x00, 0x65, 0x8f, 0x22, 0x5c,
5375 0x1f, 0x7c, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5376 0x65, 0x8f, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
5377 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5378 0x62, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5379 0x1c, 0xb0, 0x00, 0x00, 0x65, 0x8f, 0x40, 0x05, 0x48, 0x31, 0x00, 0x00,
5380 0xff, 0xff, 0x00, 0x07, 0x94, 0x89, 0x01, 0x00, 0x6b, 0x8f, 0x85, 0xca,
5381 0x94, 0x30, 0x00, 0x00, 0x4b, 0x99, 0x18, 0x5c, 0x1f, 0x00, 0x01, 0x00,
5382 0x0e, 0x00, 0x00, 0x0f, 0x1e, 0x8c, 0x01, 0x00, 0x72, 0x89, 0x00, 0x40,
5383 0x81, 0xb2, 0x00, 0x00, 0x20, 0x98, 0x18, 0x00, 0x80, 0x30, 0x01, 0x00,
5384 0xcf, 0x8d, 0x00, 0x47, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5385 0x19, 0x80, 0x01, 0x00, 0xcf, 0x8d, 0x22, 0x47, 0x19, 0x7c, 0x00, 0x00,
5386 0xc7, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x72, 0x8f, 0xa2, 0x08,
5387 0x80, 0x32, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5388 0xb5, 0x97, 0x00, 0x40, 0x0d, 0x30, 0x01, 0x00, 0x9c, 0x01, 0x00, 0x40,
5389 0x45, 0x99, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x98, 0x88, 0x01, 0x00,
5390 0x8b, 0x00, 0x2d, 0x50, 0x17, 0xf0, 0x01, 0x00, 0x78, 0x8f, 0x90, 0x4c,
5391 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
5392 0x7a, 0x8f, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
5393 0x45, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00,
5394 0x68, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0xf2,
5395 0x80, 0xb0, 0x01, 0x00, 0x3e, 0x00, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
5396 0x81, 0x8f, 0x24, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
5397 0x81, 0xc0, 0x01, 0x00, 0x82, 0x8f, 0x00, 0x94, 0xe5, 0xb1, 0x00, 0x00,
5398 0x02, 0x00, 0x62, 0x40, 0x7e, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57,
5399 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
5400 0x03, 0x00, 0x00, 0x40, 0xf0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
5401 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
5402 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
5403 0x62, 0xb1, 0x01, 0x00, 0x88, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5404 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5405 0x48, 0xb1, 0x01, 0x00, 0x94, 0x8f, 0x22, 0x40, 0xaf, 0x6f, 0x00, 0x00,
5406 0x00, 0x40, 0x00, 0x08, 0x94, 0xdc, 0x01, 0x00, 0x72, 0x98, 0x00, 0x40,
5407 0x81, 0x32, 0x01, 0x00, 0x92, 0x8f, 0x22, 0x40, 0x97, 0x6c, 0x00, 0x00,
5408 0xcc, 0x95, 0x00, 0x08, 0x00, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40,
5409 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
5410 0xcf, 0x8d, 0x00, 0x47, 0x19, 0x80, 0x00, 0x00, 0x94, 0x8f, 0x43, 0x48,
5411 0x61, 0x31, 0x00, 0x00, 0x00, 0x50, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00,
5412 0x9a, 0x8f, 0x28, 0x40, 0x05, 0x30, 0x00, 0x00, 0x95, 0x8f, 0x22, 0x48,
5413 0x77, 0x7d, 0x00, 0x00, 0xcc, 0x95, 0x1b, 0x08, 0x00, 0x30, 0x01, 0x00,
5414 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xcf, 0x8d, 0x1b, 0x47,
5415 0x19, 0x80, 0x00, 0x00, 0x35, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5416 0x01, 0x00, 0x63, 0xf3, 0x84, 0xc8, 0x01, 0x00, 0x9f, 0x8f, 0xa0, 0x43,
5417 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00,
5418 0xa8, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x37, 0x00, 0x2f, 0xf0,
5419 0x24, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00,
5420 0xaa, 0x8f, 0xa2, 0x41, 0x9e, 0x06, 0x00, 0x00, 0xcf, 0x8d, 0x22, 0x44,
5421 0x83, 0x70, 0x00, 0x00, 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5422 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0xcf, 0x8d, 0x1f, 0xf0,
5423 0x24, 0x6c, 0x00, 0x00, 0x4b, 0x99, 0x00, 0x48, 0x81, 0x30, 0x01, 0x00,
5424 0xaa, 0x8a, 0x23, 0x41, 0x83, 0x6c, 0x00, 0x00, 0xaa, 0x8a, 0x00, 0x47,
5425 0x81, 0xb0, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43, 0x85, 0xe0, 0x01, 0x00,
5426 0x00, 0x00, 0x00, 0xf8, 0x36, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5427 0x00, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
5428 0xee, 0x97, 0x00, 0x47, 0x61, 0x31, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88,
5429 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00,
5430 0x08, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
5431 0x8e, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0, 0x14, 0xb0, 0x01, 0x00,
5432 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x7e, 0x8e, 0xa2, 0x40,
5433 0x8f, 0x7c, 0x00, 0x00, 0xb8, 0x8f, 0x22, 0x47, 0x8f, 0x7c, 0x00, 0x00,
5434 0x7e, 0x8e, 0x00, 0x48, 0x19, 0x90, 0x00, 0x00, 0x27, 0x90, 0x00, 0x40,
5435 0x81, 0xb2, 0x00, 0x00, 0x36, 0x00, 0x2d, 0x5d, 0x05, 0xb4, 0x01, 0x00,
5436 0x37, 0x00, 0x2d, 0xf3, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
5437 0x8e, 0xb0, 0x01, 0x00, 0x5c, 0x00, 0x3d, 0x43, 0x81, 0xe0, 0x01, 0x00,
5438 0xa8, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5439 0x24, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x86, 0xdc, 0x01, 0x00,
5440 0x40, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0xce, 0x94, 0x00, 0x4a,
5441 0xf0, 0x31, 0x01, 0x00, 0x36, 0x00, 0x2f, 0x5c, 0x1f, 0x90, 0x01, 0x00,
5442 0xc6, 0x8f, 0xa2, 0x50, 0x8f, 0x50, 0x00, 0x00, 0x34, 0x00, 0x20, 0x40,
5443 0xe1, 0xb1, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5444 0x00, 0x00, 0x63, 0x41, 0x81, 0xc0, 0x01, 0x00, 0xc9, 0x8f, 0xa0, 0x43,
5445 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x63, 0x40, 0x81, 0xb0, 0x01, 0x00,
5446 0x37, 0x00, 0x20, 0x47, 0xe6, 0xb1, 0x01, 0x00, 0xcf, 0x8d, 0x22, 0x47,
5447 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x47, 0x0c, 0xf4, 0x01, 0x00,
5448 0x00, 0x00, 0x00, 0x4f, 0x8f, 0x84, 0x01, 0x00, 0xde, 0x8f, 0x22, 0x47,
5449 0x0c, 0x6c, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43, 0x81, 0xe0, 0x01, 0x00,
5450 0xde, 0x8f, 0x1f, 0xf0, 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
5451 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
5452 0xd7, 0x8f, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
5453 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5454 0xd4, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5455 0x1c, 0xb0, 0x00, 0x00, 0xd7, 0x8f, 0x42, 0x40, 0x05, 0x30, 0x00, 0x00,
5456 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x5d,
5457 0x69, 0x93, 0x01, 0x00, 0xdc, 0x8f, 0x23, 0x41, 0x0d, 0x6c, 0x00, 0x00,
5458 0xb9, 0x8f, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x4b, 0x99, 0x00, 0x05,
5459 0x48, 0x31, 0x01, 0x00, 0xaa, 0x8a, 0x00, 0x48, 0x81, 0xb0, 0x00, 0x00,
5460 0xcf, 0x8d, 0x22, 0x40, 0x8f, 0x6c, 0x00, 0x00, 0x20, 0x98, 0x00, 0x5f,
5461 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5462 0xa2, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
5463 0x84, 0xb0, 0x01, 0x00, 0xa6, 0x00, 0x2d, 0x49, 0x19, 0x90, 0x01, 0x00,
5464 0x02, 0x00, 0x00, 0xf2, 0x80, 0xf4, 0x01, 0x00, 0xb8, 0x00, 0x2d, 0x40,
5465 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x80, 0xc0, 0x01, 0x00,
5466 0x00, 0x00, 0x00, 0x40, 0x82, 0xf8, 0x01, 0x00, 0x19, 0x00, 0x00, 0x40,
5467 0x81, 0x98, 0x01, 0x00, 0xed, 0x8f, 0xa0, 0x40, 0x82, 0x6c, 0x00, 0x00,
5468 0x2c, 0x01, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0xed, 0x8f, 0xa3, 0x40,
5469 0x82, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x80, 0xb0, 0x01, 0x00,
5470 0xef, 0x8f, 0x20, 0x4c, 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5471 0x85, 0xc0, 0x01, 0x00, 0x86, 0x00, 0x20, 0x40, 0xe4, 0xb1, 0x01, 0x00,
5472 0xa2, 0x00, 0x20, 0x42, 0xe6, 0xb1, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40,
5473 0x81, 0xb2, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x50, 0x81, 0x30, 0x01, 0x00,
5474 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03,
5475 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x80, 0x30, 0x00, 0x00,
5476 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x3d, 0x99, 0x00, 0x40,
5477 0x87, 0x30, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0x5c, 0x1f, 0x90, 0x01, 0x00,
5478 0x00, 0x00, 0x60, 0xf0, 0x80, 0xc0, 0x01, 0x00, 0x20, 0x98, 0x00, 0x5f,
5479 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5480 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xcf, 0x8d, 0x22, 0x46,
5481 0x19, 0x7c, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5482 0x01, 0x00, 0x62, 0xf2, 0x96, 0xcc, 0x01, 0x00, 0xcf, 0x8d, 0xa6, 0x40,
5483 0x81, 0x32, 0x00, 0x00, 0x20, 0x98, 0x00, 0x4a, 0x81, 0x30, 0x01, 0x00,
5484 0xf5, 0x97, 0x00, 0x46, 0x95, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40,
5485 0x81, 0xb2, 0x00, 0x00, 0xcf, 0x8d, 0x22, 0x49, 0x19, 0x7c, 0x00, 0x00,
5486 0x86, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0xf2,
5487 0x80, 0xcc, 0x01, 0x00, 0xcf, 0x8d, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
5488 0x20, 0x98, 0x00, 0x4a, 0x81, 0x30, 0x01, 0x00, 0xf5, 0x97, 0x00, 0x47,
5489 0x95, 0x30, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5490 0x5f, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xcf, 0x8d, 0x00, 0x5c,
5491 0x1f, 0x90, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5492 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x00, 0x40,
5493 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0xf2, 0x80, 0xc8, 0x01, 0x00,
5494 0x13, 0x90, 0x90, 0x40, 0x80, 0x32, 0x00, 0x00, 0xff, 0xff, 0x62, 0x40,
5495 0x81, 0x98, 0x01, 0x00, 0xa4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5496 0xcf, 0x8d, 0x22, 0x40, 0xe5, 0x6d, 0x00, 0x00, 0xcf, 0x8d, 0x00, 0x41,
5497 0xe5, 0xc1, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x4d, 0x81, 0x30, 0x01, 0x00,
5498 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x40,
5499 0x47, 0x99, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x96, 0x30, 0x00, 0x00,
5500 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
5501 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
5502 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x3d, 0x99, 0x00, 0x40,
5503 0x87, 0x30, 0x01, 0x00, 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5504 0x23, 0x90, 0x80, 0xf3, 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5505 0xe7, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x19, 0x90, 0x01, 0x00,
5506 0xcf, 0x8d, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x34, 0x00, 0x00, 0x40,
5507 0x45, 0x99, 0x01, 0x00, 0x01, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
5508 0x00, 0x11, 0x00, 0x40, 0xe5, 0x99, 0x01, 0x00, 0xc7, 0x95, 0x00, 0x40,
5509 0x81, 0x32, 0x01, 0x00, 0x38, 0x90, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
5510 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
5511 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x63, 0x51, 0x83, 0xd0, 0x01, 0x00,
5512 0x34, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
5513 0x84, 0xcc, 0x01, 0x00, 0x30, 0x90, 0x9f, 0x42, 0x80, 0x32, 0x00, 0x00,
5514 0x00, 0x00, 0x63, 0x42, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
5515 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00,
5516 0x32, 0x90, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b,
5517 0x62, 0xb1, 0x01, 0x00, 0x33, 0x90, 0xa8, 0x4b, 0x19, 0x10, 0x00, 0x00,
5518 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00, 0x35, 0x90, 0xa8, 0x40,
5519 0x81, 0x32, 0x00, 0x00, 0xff, 0x89, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00,
5520 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0,
5521 0x94, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x2d, 0xf0, 0x30, 0xb0, 0x01, 0x00,
5522 0x35, 0x00, 0x2d, 0xf0, 0x28, 0xb0, 0x01, 0x00, 0x58, 0x00, 0x3e, 0x43,
5523 0xe7, 0xe1, 0x01, 0x00, 0x01, 0x00, 0x00, 0x18, 0xf0, 0xc9, 0x01, 0x00,
5524 0x00, 0x00, 0x00, 0x4a, 0xe0, 0xb1, 0x01, 0x00, 0x38, 0x00, 0x20, 0x00,
5525 0xe0, 0xb1, 0x01, 0x00, 0x3c, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00,
5526 0x40, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5527 0x2b, 0xb0, 0x01, 0x00, 0x04, 0x98, 0x00, 0x40, 0x0d, 0x30, 0x01, 0x00,
5528 0x00, 0x00, 0x00, 0x18, 0x16, 0xc0, 0x01, 0x00, 0x47, 0x90, 0xa0, 0x14,
5529 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
5530 0x0e, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
5531 0xf8, 0xb1, 0x01, 0x00, 0xb0, 0x00, 0x2d, 0x14, 0xf8, 0xb1, 0x01, 0x00,
5532 0x10, 0x50, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x50, 0x90, 0x22, 0x4a,
5533 0x19, 0x7c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x43, 0x86, 0xc8, 0x01, 0x00,
5534 0x00, 0x30, 0x00, 0x0b, 0x16, 0xc8, 0x01, 0x00, 0x50, 0x90, 0xa4, 0x40,
5535 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
5536 0x01, 0x00, 0x6e, 0x43, 0x86, 0x98, 0x01, 0x00, 0x3b, 0x98, 0x00, 0x30,
5537 0x81, 0x30, 0x01, 0x00, 0x54, 0x90, 0xa0, 0x41, 0x17, 0x40, 0x00, 0x00,
5538 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x5b, 0x90, 0x22, 0x4a,
5539 0x19, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
5540 0xcc, 0x00, 0x2d, 0xab, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
5541 0x17, 0xc0, 0x01, 0x00, 0x5a, 0x90, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00,
5542 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x64, 0xf0,
5543 0x82, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
5544 0x00, 0x00, 0x60, 0x41, 0x31, 0xc0, 0x01, 0x00, 0xbc, 0x00, 0x00, 0x40,
5545 0x43, 0x99, 0x01, 0x00, 0x61, 0x90, 0x06, 0x0c, 0x80, 0x32, 0x00, 0x00,
5546 0xa0, 0x00, 0x20, 0xf2, 0xe4, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x09, 0x46,
5547 0x19, 0x10, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
5548 0xff, 0xff, 0x00, 0x0b, 0x98, 0x88, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x50,
5549 0x17, 0xf0, 0x01, 0x00, 0x66, 0x90, 0x90, 0x4c, 0x16, 0x40, 0x00, 0x00,
5550 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x68, 0x90, 0x22, 0x43,
5551 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00,
5552 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x68, 0x01, 0x00, 0x40,
5553 0x43, 0x99, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0xf2, 0x80, 0xb0, 0x01, 0x00,
5554 0x3e, 0x00, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00, 0x6f, 0x90, 0x24, 0x40,
5555 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x81, 0xc0, 0x01, 0x00,
5556 0x70, 0x90, 0x00, 0x94, 0xe5, 0xb1, 0x00, 0x00, 0x02, 0x00, 0x62, 0x40,
5557 0x7e, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xc0, 0x01, 0x00,
5558 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40,
5559 0xf0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00,
5560 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5561 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
5562 0x76, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5563 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5564 0x80, 0x90, 0x22, 0x40, 0xaf, 0x6f, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08,
5565 0x94, 0xdc, 0x01, 0x00, 0x72, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5566 0x7b, 0x90, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00, 0x35, 0x00, 0x00, 0x40,
5567 0x47, 0x99, 0x01, 0x00, 0x84, 0x90, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
5568 0x80, 0x90, 0x43, 0x48, 0x61, 0x31, 0x00, 0x00, 0x00, 0x50, 0x00, 0x08,
5569 0x62, 0xdd, 0x01, 0x00, 0x81, 0x90, 0xa8, 0x40, 0x05, 0x30, 0x00, 0x00,
5570 0x35, 0x00, 0x1b, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
5571 0x84, 0xc8, 0x01, 0x00, 0x87, 0x90, 0xa0, 0x43, 0x85, 0x6c, 0x00, 0x00,
5572 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40,
5573 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00,
5574 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
5575 0xe7, 0x91, 0x01, 0x00, 0x20, 0x98, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00,
5576 0xcf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40,
5577 0x47, 0x99, 0x01, 0x00, 0x69, 0x96, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00,
5578 0x27, 0x90, 0x22, 0x4a, 0x80, 0x32, 0x00, 0x00, 0xa5, 0x8e, 0x00, 0x40,
5579 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5580 0x69, 0x96, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00, 0x75, 0x8e, 0x22, 0x4a,
5581 0x80, 0x32, 0x00, 0x00, 0xa5, 0x8e, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5582 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
5583 0x12, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3, 0x90, 0x88, 0x01, 0x00,
5584 0x04, 0x00, 0x00, 0xf3, 0x0c, 0xf4, 0x01, 0x00, 0x9f, 0x8e, 0x22, 0x06,
5585 0x90, 0x6c, 0x00, 0x00, 0x5c, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00,
5586 0xa8, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00, 0x37, 0x00, 0x2f, 0xf0,
5587 0x24, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x2a, 0x50, 0xe7, 0xd1, 0x01, 0x00,
5588 0x00, 0x00, 0x63, 0x41, 0x13, 0xc0, 0x01, 0x00, 0xa1, 0x90, 0xa0, 0x43,
5589 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5590 0xcc, 0x94, 0x00, 0x10, 0x86, 0x30, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88,
5591 0x1c, 0xb0, 0x00, 0x00, 0xa3, 0x90, 0x42, 0x05, 0x48, 0x31, 0x00, 0x00,
5592 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0x9f, 0x8e, 0x1a, 0x5d,
5593 0x69, 0x93, 0x00, 0x00, 0x36, 0x00, 0x2d, 0x10, 0x86, 0xb0, 0x01, 0x00,
5594 0x5c, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0xf0,
5595 0x94, 0xb0, 0x01, 0x00, 0x35, 0x00, 0x2f, 0xf0, 0x24, 0xb0, 0x01, 0x00,
5596 0x01, 0x00, 0x6b, 0xfb, 0x84, 0xc8, 0x01, 0x00, 0xae, 0x90, 0xa0, 0x43,
5597 0x85, 0x6c, 0x00, 0x00, 0x35, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5598 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
5599 0x12, 0xc8, 0x01, 0x00, 0xb1, 0x90, 0xa0, 0x43, 0x13, 0x6c, 0x00, 0x00,
5600 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x40, 0x80, 0x00, 0x03,
5601 0x44, 0xc9, 0x01, 0x00, 0xce, 0x94, 0x00, 0x4a, 0xf0, 0x31, 0x01, 0x00,
5602 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xb4, 0x90, 0x42, 0x05,
5603 0x48, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
5604 0x00, 0x00, 0x1a, 0x5d, 0x69, 0x93, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40,
5605 0x47, 0x99, 0x01, 0x00, 0x11, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00,
5606 0xa3, 0x8f, 0x22, 0x41, 0x9e, 0x06, 0x00, 0x00, 0x35, 0x00, 0x00, 0x40,
5607 0x43, 0x99, 0x01, 0x00, 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00,
5608 0x00, 0x00, 0x00, 0xf8, 0x36, 0xb0, 0x01, 0x00, 0xad, 0x8f, 0x00, 0xf0,
5609 0x00, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
5610 0xbf, 0x90, 0x47, 0xf2, 0x12, 0x30, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42,
5611 0x13, 0xf0, 0x01, 0x00, 0xc4, 0x90, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
5612 0x6b, 0x84, 0x1f, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xbe, 0x90, 0x00, 0x40,
5613 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe7, 0x91, 0x01, 0x00,
5614 0x00, 0x00, 0x1f, 0x42, 0x19, 0x90, 0x01, 0x00, 0x75, 0x00, 0x00, 0x40,
5615 0x61, 0x99, 0x01, 0x00, 0xc6, 0x90, 0xa8, 0xb1, 0x0c, 0x30, 0x00, 0x00,
5616 0x46, 0x97, 0x00, 0x10, 0x94, 0x30, 0x01, 0x00, 0x1b, 0x84, 0x00, 0x88,
5617 0x1c, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
5618 0xc0, 0xa8, 0x3d, 0x46, 0x0d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5619 0x97, 0xb0, 0x01, 0x00, 0xd0, 0x90, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00,
5620 0x04, 0x00, 0x02, 0x41, 0x97, 0x40, 0x00, 0x00, 0xcd, 0x90, 0x00, 0x50,
5621 0x43, 0xc1, 0x00, 0x00, 0xdc, 0x90, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00,
5622 0x00, 0x00, 0x62, 0x4b, 0x12, 0x94, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
5623 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x97, 0xc0, 0x01, 0x00,
5624 0x30, 0x00, 0x00, 0x10, 0x94, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x4a,
5625 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf1, 0xb1, 0x01, 0x00,
5626 0x5e, 0x01, 0x00, 0x4b, 0xf0, 0xc9, 0x01, 0x00, 0x5e, 0x01, 0x00, 0x05,
5627 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
5628 0x20, 0x00, 0x00, 0x4a, 0x62, 0xdd, 0x01, 0x00, 0xda, 0x90, 0xa8, 0x40,
5629 0x81, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
5630 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x09,
5631 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x97, 0xc0, 0x01, 0x00,
5632 0xd4, 0x00, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5633 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
5634 0xe2, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5635 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00,
5636 0xe6, 0x90, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3,
5637 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5638 0x00, 0x00, 0x1f, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
5639 0x62, 0xb1, 0x01, 0x00, 0xea, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5640 0xef, 0x90, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
5641 0x62, 0xb1, 0x01, 0x00, 0xed, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5642 0x00, 0x00, 0x00, 0x97, 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x96,
5643 0x97, 0xb0, 0x01, 0x00, 0xf5, 0x90, 0x20, 0x09, 0x96, 0x6c, 0x00, 0x00,
5644 0xf5, 0x90, 0x1f, 0x09, 0x96, 0x24, 0x00, 0x00, 0x6b, 0x84, 0x00, 0x88,
5645 0x1c, 0xb0, 0x00, 0x00, 0xf0, 0x90, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5646 0xaf, 0x97, 0x00, 0x57, 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x05,
5647 0x48, 0xb1, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5648 0xfb, 0x90, 0x22, 0xf3, 0x80, 0x32, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x42,
5649 0x81, 0x30, 0x01, 0x00, 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5650 0x20, 0x98, 0x00, 0x52, 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x42,
5651 0x19, 0x80, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
5652 0x20, 0x98, 0x00, 0x52, 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40,
5653 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
5654 0xc9, 0x96, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x22, 0x40,
5655 0x95, 0x6c, 0x00, 0x00, 0x06, 0x91, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00,
5656 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xff, 0x89, 0x00, 0x40,
5657 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5658 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x74, 0x96, 0x00, 0x52,
5659 0x95, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
5660 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf4, 0x98, 0x00, 0x40,
5661 0x95, 0x30, 0x01, 0x00, 0x11, 0x91, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
5662 0xff, 0x89, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
5663 0x19, 0x90, 0x01, 0x00, 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
5664 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x23, 0x00, 0xa6,
5665 0x16, 0xb0, 0x01, 0x00, 0x14, 0x91, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00,
5666 0x00, 0x08, 0x00, 0x0b, 0x16, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
5667 0x2a, 0xc0, 0x01, 0x00, 0xf8, 0x97, 0x00, 0x08, 0x80, 0x30, 0x01, 0x00,
5668 0x18, 0x91, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00, 0x19, 0x98, 0x00, 0x43,
5669 0x61, 0x31, 0x01, 0x00, 0xda, 0x94, 0x00, 0x40, 0x8d, 0x30, 0x01, 0x00,
5670 0x00, 0x98, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
5671 0x42, 0xc9, 0x01, 0x00, 0x20, 0x91, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
5672 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5673 0x62, 0xdd, 0x01, 0x00, 0x1d, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5674 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xa1, 0x97, 0x00, 0x5e,
5675 0x05, 0x10, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5676 0x24, 0x91, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
5677 0x13, 0x30, 0x01, 0x00, 0xbf, 0x8d, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5678 0xf9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40,
5679 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x1f, 0x90, 0x01, 0x00,
5680 0x2b, 0x91, 0x22, 0x43, 0x3d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
5681 0x19, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3d, 0x80, 0x01, 0x00,
5682 0x2c, 0x91, 0x00, 0x42, 0x19, 0x90, 0x00, 0x00, 0x14, 0x00, 0x2d, 0x45,
5683 0x1f, 0x90, 0x01, 0x00, 0x87, 0x91, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00,
5684 0x87, 0x91, 0x00, 0x44, 0x19, 0x90, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40,
5685 0x81, 0x32, 0x01, 0x00, 0x3f, 0x91, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
5686 0x3b, 0x91, 0xa2, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
5687 0x04, 0xdc, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5688 0xe3, 0x89, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00, 0x38, 0x91, 0xa2, 0x41,
5689 0x19, 0x7c, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5690 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x74, 0x96, 0x00, 0x15,
5691 0x94, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
5692 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf9, 0x96, 0x00, 0x40,
5693 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x19, 0x90, 0x01, 0x00,
5694 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0xff, 0x89, 0x00, 0x40,
5695 0x81, 0xb2, 0x00, 0x00, 0x42, 0x91, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
5696 0xf9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x43, 0x91, 0x00, 0x40,
5697 0x81, 0xb2, 0x00, 0x00, 0xc9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5698 0x6f, 0x91, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x15,
5699 0x98, 0xc8, 0x01, 0x00, 0x6f, 0x91, 0xa0, 0x0b, 0x99, 0x6c, 0x00, 0x00,
5700 0x30, 0x00, 0x00, 0x10, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
5701 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
5702 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
5703 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00,
5704 0x4b, 0x91, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5705 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5706 0xc0, 0x00, 0x00, 0x15, 0x98, 0xc8, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x0b,
5707 0x99, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x6a, 0x50, 0x99, 0xc0, 0x01, 0x00,
5708 0xc0, 0x00, 0x62, 0x01, 0x80, 0xcc, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
5709 0x42, 0xc9, 0x01, 0x00, 0x2d, 0x00, 0x2d, 0xf0, 0x22, 0xb0, 0x01, 0x00,
5710 0x00, 0x00, 0x00, 0x4c, 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
5711 0x23, 0x80, 0x01, 0x00, 0xd4, 0x00, 0x3f, 0x41, 0xe7, 0xe1, 0x01, 0x00,
5712 0x0b, 0x00, 0x00, 0x11, 0xe4, 0xf5, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x47,
5713 0xe7, 0xb5, 0x01, 0x00, 0x5c, 0x91, 0x23, 0x0b, 0x81, 0x6c, 0x00, 0x00,
5714 0x00, 0x00, 0x00, 0x4f, 0xe5, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
5715 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x03, 0xb0, 0x01, 0x00,
5716 0x00, 0x00, 0x00, 0x15, 0x02, 0xd0, 0x01, 0x00, 0xf8, 0x97, 0x00, 0x00,
5717 0x2a, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
5718 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x61, 0x91, 0xa8, 0x40,
5719 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5720 0xcc, 0x95, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x01,
5721 0x80, 0xce, 0x01, 0x00, 0x6d, 0x91, 0x26, 0x11, 0x00, 0x30, 0x00, 0x00,
5722 0x10, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
5723 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc0, 0x01, 0x00,
5724 0xc0, 0x00, 0x00, 0x40, 0x99, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
5725 0x98, 0xd0, 0x01, 0x00, 0xf8, 0x97, 0x00, 0x4c, 0x02, 0x30, 0x01, 0x00,
5726 0xc0, 0x00, 0x00, 0x40, 0x03, 0x98, 0x01, 0x00, 0x74, 0x91, 0x00, 0x40,
5727 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x2f, 0x08, 0x80, 0xb0, 0x01, 0x00,
5728 0xc0, 0x00, 0x00, 0x15, 0xf4, 0xc9, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x01,
5729 0xe4, 0xcd, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x03, 0x98, 0x01, 0x00,
5730 0xf8, 0x97, 0x00, 0x00, 0x2a, 0x40, 0x01, 0x00, 0x79, 0x91, 0x22, 0x44,
5731 0x1f, 0x7c, 0x00, 0x00, 0xac, 0x00, 0x2f, 0x40, 0x13, 0xb0, 0x01, 0x00,
5732 0x00, 0x00, 0x00, 0x01, 0xe0, 0xc1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40,
5733 0x47, 0x99, 0x01, 0x00, 0x7a, 0x91, 0x00, 0x01, 0xe0, 0xd1, 0x00, 0x00,
5734 0xda, 0x94, 0x00, 0x40, 0x8d, 0x30, 0x01, 0x00, 0x80, 0x63, 0x00, 0xa6,
5735 0x16, 0xb0, 0x01, 0x00, 0x00, 0x98, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00,
5736 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x82, 0x91, 0x22, 0x40,
5737 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
5738 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x7f, 0x91, 0xa8, 0x40,
5739 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5740 0xa1, 0x97, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x85, 0x91, 0x22, 0x09,
5741 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5742 0xba, 0x8d, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x87, 0x91, 0x00, 0x4a,
5743 0x1f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb0, 0x01, 0x00,
5744 0x24, 0x00, 0x2d, 0x15, 0x10, 0xc0, 0x01, 0x00, 0x28, 0x00, 0x2d, 0xf0,
5745 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
5746 0x14, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
5747 0xe0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
5748 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x15,
5749 0x1a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
5750 0x00, 0x00, 0x00, 0x01, 0x2a, 0xb0, 0x01, 0x00, 0x5b, 0x97, 0x00, 0x40,
5751 0x35, 0xb0, 0x00, 0x00, 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5752 0xcb, 0x91, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0x24, 0x00, 0x20, 0x0b,
5753 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00,
5754 0x22, 0x00, 0x20, 0x06, 0xe4, 0xb1, 0x01, 0x00, 0xa1, 0x91, 0x22, 0x5c,
5755 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
5756 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xa1, 0x91, 0x22, 0x40,
5757 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
5758 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x9d, 0x91, 0xa8, 0x40,
5759 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5760 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19,
5761 0x42, 0xc9, 0x01, 0x00, 0xc4, 0x91, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
5762 0xb2, 0x91, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x21, 0x97, 0x00, 0x40,
5763 0x81, 0x32, 0x01, 0x00, 0x74, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5764 0xbf, 0x91, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
5765 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5766 0xa8, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5767 0x1c, 0xb0, 0x00, 0x00, 0xae, 0x91, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
5768 0xe2, 0x95, 0x00, 0x40, 0x11, 0x30, 0x01, 0x00, 0xaf, 0x91, 0x00, 0x05,
5769 0x48, 0xb1, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5770 0xb1, 0x91, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
5771 0x81, 0x32, 0x01, 0x00, 0x6f, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
5772 0x21, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x70, 0x95, 0x00, 0x40,
5773 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
5774 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xb5, 0x91, 0xa8, 0x40,
5775 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5776 0xbb, 0x91, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xe2, 0x95, 0x00, 0x40,
5777 0x11, 0x30, 0x01, 0x00, 0xbc, 0x91, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5778 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xbe, 0x91, 0x22, 0x09,
5779 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5780 0x6f, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
5781 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5782 0xc0, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
5783 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5784 0xc7, 0x91, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xe2, 0x95, 0x00, 0x40,
5785 0x11, 0x30, 0x01, 0x00, 0xc8, 0x91, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5786 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xca, 0x91, 0x22, 0x09,
5787 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
5788 0xbf, 0x8d, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
5789 0x42, 0xc9, 0x01, 0x00, 0xd2, 0x91, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
5790 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5791 0x62, 0xdd, 0x01, 0x00, 0xce, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5792 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5793 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
5794 0xd6, 0x91, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xe2, 0x95, 0x00, 0x40,
5795 0x11, 0x30, 0x01, 0x00, 0xd7, 0x91, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5796 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x2d, 0x0a,
5797 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00,
5798 0x14, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xdc, 0x91, 0x03, 0x1e,
5799 0x80, 0x32, 0x00, 0x00, 0xdd, 0x91, 0x00, 0x41, 0x87, 0xb0, 0x00, 0x00,
5800 0x21, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0xea, 0x96, 0x00, 0x40,
5801 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
5802 0xe1, 0x91, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
5803 0x13, 0x30, 0x01, 0x00, 0xe4, 0x91, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
5804 0x20, 0x98, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5805 0x19, 0x80, 0x01, 0x00, 0xba, 0x8d, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00,
5806 0xbf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x20, 0x40,
5807 0xe5, 0xb1, 0x01, 0x00, 0xea, 0x91, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00,
5808 0xcc, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xfb, 0x98, 0x00, 0x40,
5809 0x81, 0x32, 0x01, 0x00, 0x8d, 0x98, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
5810 0xc0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xc4, 0x00, 0x2d, 0xf0,
5811 0x82, 0xb0, 0x01, 0x00, 0xd8, 0x98, 0x00, 0xf0, 0x84, 0x30, 0x01, 0x00,
5812 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xbf, 0x8d, 0x22, 0x09,
5813 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
5814 0xbf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x40,
5815 0x43, 0x99, 0x01, 0x00, 0xf6, 0x91, 0x22, 0x40, 0xe7, 0x6d, 0x00, 0x00,
5816 0x32, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xfe, 0x91, 0xa2, 0x40,
5817 0xe5, 0x6d, 0x00, 0x00, 0xb6, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5818 0x24, 0x00, 0x20, 0x0b, 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x20, 0x13,
5819 0xe0, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x20, 0x06, 0xe4, 0xb1, 0x01, 0x00,
5820 0x14, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00, 0xbf, 0x8d, 0x22, 0x09,
5821 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
5822 0xbf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x96, 0x00, 0x40,
5823 0x81, 0x32, 0x01, 0x00, 0x6f, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5824 0x0c, 0x92, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
5825 0x99, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x15, 0x98, 0x50, 0x00, 0x00,
5826 0x0c, 0x92, 0x20, 0x01, 0x98, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03,
5827 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46, 0x1f, 0x90, 0x01, 0x00,
5828 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
5829 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
5830 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x09, 0x92, 0xa8, 0x00,
5831 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5832 0xac, 0x00, 0x2f, 0x00, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
5833 0xe0, 0xc1, 0x01, 0x00, 0x14, 0x00, 0x2f, 0x15, 0x10, 0xc0, 0x01, 0x00,
5834 0x00, 0x00, 0x00, 0x0a, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01,
5835 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x19, 0x90, 0x01, 0x00,
5836 0x8e, 0x91, 0x22, 0x09, 0x80, 0x32, 0x00, 0x00, 0x20, 0x98, 0x00, 0x09,
5837 0x80, 0x30, 0x01, 0x00, 0x8e, 0x91, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
5838 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5839 0x82, 0xb0, 0x01, 0x00, 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
5840 0x00, 0x00, 0x00, 0x4c, 0x43, 0xc1, 0x01, 0x00, 0xea, 0x96, 0x00, 0xf0,
5841 0x84, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
5842 0x2c, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x40,
5843 0xe7, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x42, 0x19, 0x80, 0x00, 0x00,
5844 0xdc, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xf5, 0x97, 0x00, 0x48,
5845 0x95, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
5846 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x21, 0x92, 0xa8, 0x40,
5847 0x13, 0x30, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5848 0x27, 0x92, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x26, 0x92, 0x00, 0x40,
5849 0x13, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xb0, 0x01, 0x00,
5850 0x08, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x14, 0x00, 0x2d, 0xf0,
5851 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x84, 0x30, 0x00, 0x00,
5852 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0xea, 0x96, 0x00, 0x40,
5853 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
5854 0x3f, 0x92, 0x00, 0x09, 0x00, 0xb0, 0x00, 0x00, 0xba, 0x8d, 0x87, 0x42,
5855 0x19, 0x10, 0x00, 0x00, 0x8b, 0x00, 0x2f, 0x47, 0x19, 0x80, 0x01, 0x00,
5856 0xba, 0x8d, 0x00, 0x40, 0xe7, 0x91, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x40,
5857 0x47, 0x99, 0x01, 0x00, 0x3d, 0x92, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
5858 0x51, 0x95, 0x00, 0x40, 0xe7, 0x31, 0x01, 0x00, 0x3d, 0x92, 0x22, 0x00,
5859 0x80, 0x32, 0x00, 0x00, 0x38, 0x92, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00,
5860 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x3d, 0x92, 0x00, 0x40,
5861 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5862 0x32, 0x00, 0x2d, 0xf2, 0x94, 0xb0, 0x01, 0x00, 0x74, 0x96, 0x00, 0xf2,
5863 0x02, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
5864 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x3e, 0x92, 0x00, 0x40,
5865 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
5866 0x44, 0x92, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0x43, 0x92, 0xa2, 0x42,
5867 0x19, 0x7c, 0x00, 0x00, 0xc9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5868 0x44, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf9, 0x96, 0x00, 0x40,
5869 0x81, 0x32, 0x01, 0x00, 0xce, 0x92, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
5870 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
5871 0x42, 0xc9, 0x01, 0x00, 0x4c, 0x92, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
5872 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5873 0x62, 0xdd, 0x01, 0x00, 0x49, 0x92, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5874 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xce, 0x92, 0x00, 0x05,
5875 0x48, 0xb1, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5876 0x52, 0x92, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x4d,
5877 0x81, 0x30, 0x01, 0x00, 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00,
5878 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x74, 0x00, 0x00, 0x40,
5879 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00,
5880 0x00, 0x00, 0x00, 0xf0, 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5881 0x96, 0xb0, 0x01, 0x00, 0x60, 0x92, 0x22, 0x42, 0x96, 0x14, 0x00, 0x00,
5882 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x64, 0x00, 0x68, 0x40,
5883 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00,
5884 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x70, 0x00, 0x00, 0x05,
5885 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
5886 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x5d, 0x92, 0xa8, 0x40,
5887 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
5888 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5889 0x62, 0xdd, 0x01, 0x00, 0x61, 0x92, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00,
5890 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x05,
5891 0x48, 0xb1, 0x01, 0x00, 0x65, 0x92, 0x47, 0xf2, 0x12, 0x30, 0x00, 0x00,
5892 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00, 0x6a, 0x92, 0x22, 0x47,
5893 0xe7, 0x7d, 0x00, 0x00, 0x6b, 0x84, 0x1f, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5894 0x64, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
5895 0xe7, 0x91, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x09, 0x96, 0xe4, 0x01, 0x00,
5896 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5897 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x97, 0xc0, 0x01, 0x00,
5898 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
5899 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
5900 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x72, 0x92, 0xa8, 0x40,
5901 0xe1, 0x31, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5902 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00, 0x76, 0x92, 0x47, 0x05,
5903 0x48, 0x31, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3, 0x96, 0x88, 0x01, 0x00,
5904 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x40,
5905 0x81, 0xb2, 0x01, 0x00, 0x7e, 0x92, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00,
5906 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5907 0x62, 0xb1, 0x01, 0x00, 0x7c, 0x92, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5908 0x00, 0x00, 0x00, 0x07, 0x16, 0xb0, 0x01, 0x00, 0x00, 0x62, 0x00, 0x0b,
5909 0x16, 0xdc, 0x01, 0x00, 0x51, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5910 0x96, 0x92, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0xff, 0x96, 0x00, 0x5f,
5911 0x01, 0x10, 0x01, 0x00, 0x80, 0x92, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00,
5912 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
5913 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
5914 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
5915 0x62, 0xb1, 0x01, 0x00, 0x88, 0x92, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
5916 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
5917 0x48, 0xb1, 0x01, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5918 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x74, 0x96, 0x00, 0x52,
5919 0x95, 0x30, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5920 0x80, 0x92, 0x22, 0x41, 0x97, 0x50, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x03,
5921 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00,
5922 0x00, 0x00, 0x00, 0x5c, 0x01, 0x80, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b,
5923 0x02, 0xb0, 0x00, 0x00, 0x80, 0x92, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
5924 0x00, 0x98, 0x00, 0x40, 0x03, 0x30, 0x01, 0x00, 0x17, 0x80, 0x00, 0x03,
5925 0x44, 0xc9, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x0c, 0x96, 0x88, 0x01, 0x00,
5926 0x00, 0x00, 0x63, 0x4c, 0x97, 0xf0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x03,
5927 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab, 0xe1, 0xb1, 0x01, 0x00,
5928 0xa1, 0x97, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
5929 0x1a, 0xf4, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07, 0x16, 0x88, 0x01, 0x00,
5930 0x00, 0xb5, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0xa0, 0x92, 0x30, 0x40,
5931 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x81, 0x01, 0x00,
5932 0x00, 0xb7, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
5933 0xe6, 0x81, 0x01, 0x00, 0x10, 0x00, 0x10, 0x0f, 0x94, 0xf4, 0x01, 0x00,
5934 0xd1, 0x99, 0x00, 0x5f, 0x95, 0x04, 0x01, 0x00, 0x55, 0x96, 0x00, 0x40,
5935 0x81, 0x32, 0x01, 0x00, 0xaa, 0x92, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00,
5936 0xa8, 0x92, 0x43, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x41,
5937 0x31, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
5938 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5939 0x0f, 0xb0, 0x01, 0x00, 0xb8, 0x95, 0x00, 0x41, 0x81, 0x30, 0x01, 0x00,
5940 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40,
5941 0x81, 0x32, 0x01, 0x00, 0xbb, 0x92, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
5942 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
5943 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00,
5944 0xb4, 0x92, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b,
5945 0x62, 0xb1, 0x01, 0x00, 0xb8, 0x92, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
5946 0xb5, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5947 0x62, 0xb1, 0x01, 0x00, 0xb8, 0x92, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5948 0xff, 0x89, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x74, 0x00, 0x22, 0x40,
5949 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
5950 0xf5, 0x97, 0x00, 0x4a, 0x95, 0x30, 0x01, 0x00, 0xdc, 0x96, 0x00, 0x5c,
5951 0x1f, 0x10, 0x01, 0x00, 0x52, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5952 0x2f, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xcc, 0x92, 0x22, 0x47,
5953 0xe7, 0x7d, 0x00, 0x00, 0x51, 0x95, 0x00, 0x40, 0xe7, 0x31, 0x01, 0x00,
5954 0xcc, 0x92, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0xc7, 0x92, 0xa2, 0x40,
5955 0x1f, 0x7c, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5956 0xcc, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40,
5957 0x43, 0x99, 0x01, 0x00, 0x32, 0x00, 0x2d, 0xf2, 0x94, 0xb0, 0x01, 0x00,
5958 0x74, 0x96, 0x00, 0xf2, 0x02, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b,
5959 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5960 0xf5, 0x97, 0x00, 0x48, 0x95, 0x30, 0x01, 0x00, 0xdc, 0x96, 0x00, 0x5c,
5961 0x1f, 0x10, 0x01, 0x00, 0xd1, 0x92, 0x87, 0x42, 0x19, 0x10, 0x00, 0x00,
5962 0x8b, 0x00, 0x2f, 0x47, 0x19, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5963 0xe7, 0x91, 0x01, 0x00, 0x20, 0x98, 0x00, 0x42, 0x81, 0x30, 0x01, 0x00,
5964 0xba, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xdc, 0x96, 0x00, 0x40,
5965 0x81, 0x32, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
5966 0xba, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0x8d, 0x98, 0x00, 0x40,
5967 0x81, 0x32, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5968 0xc4, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0xd8, 0x98, 0x00, 0xf0,
5969 0x84, 0x30, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5970 0x20, 0x98, 0x00, 0x45, 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x22, 0x42,
5971 0x19, 0x7c, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
5972 0xba, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5973 0x81, 0xb2, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5974 0xe5, 0x92, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0xaf, 0x97, 0x00, 0x47,
5975 0x80, 0x30, 0x01, 0x00, 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00,
5976 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x10, 0x80, 0x00, 0x03,
5977 0x44, 0xc9, 0x01, 0x00, 0x00, 0xe1, 0x00, 0xa6, 0x84, 0xb0, 0x01, 0x00,
5978 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5979 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x07, 0x84, 0x94, 0x01, 0x00,
5980 0xa1, 0x97, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40,
5981 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5982 0xcc, 0x95, 0x00, 0x41, 0xe7, 0x41, 0x01, 0x00, 0xbf, 0x8d, 0x00, 0x40,
5983 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5984 0x6f, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
5985 0x2c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0xb0, 0x01, 0x00,
5986 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x0a,
5987 0x2c, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
5988 0x07, 0x00, 0x00, 0x0b, 0x96, 0x88, 0x01, 0x00, 0x01, 0x93, 0x26, 0x47,
5989 0x97, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00,
5990 0x01, 0x93, 0x23, 0x4b, 0x0c, 0x6c, 0x00, 0x00, 0x33, 0x98, 0x00, 0x4b,
5991 0x04, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
5992 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
5993 0x16, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0xb0, 0x01, 0x00,
5994 0x33, 0x98, 0x00, 0x4b, 0x04, 0x50, 0x01, 0x00, 0x02, 0x93, 0x00, 0x40,
5995 0x81, 0xb2, 0x00, 0x00, 0x33, 0x98, 0x00, 0x06, 0x04, 0x30, 0x01, 0x00,
5996 0x08, 0x93, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00, 0x06, 0x93, 0x84, 0x48,
5997 0x1f, 0x10, 0x00, 0x00, 0xac, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5998 0x08, 0x93, 0x00, 0x0a, 0xe0, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
5999 0x02, 0xb0, 0x01, 0x00, 0xda, 0x94, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00,
6000 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
6001 0x62, 0xdd, 0x01, 0x00, 0x09, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
6002 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
6003 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00,
6004 0x16, 0x93, 0x22, 0x06, 0x14, 0x50, 0x00, 0x00, 0x24, 0x97, 0x00, 0x45,
6005 0x1f, 0x00, 0x01, 0x00, 0xf5, 0x92, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
6006 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
6007 0x62, 0xdd, 0x01, 0x00, 0x12, 0x93, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00,
6008 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xf5, 0x92, 0x00, 0x05,
6009 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
6010 0x08, 0x00, 0x2d, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
6011 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
6012 0xea, 0x96, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
6013 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6014 0x1c, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6015 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6016 0x22, 0x93, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
6017 0x13, 0x30, 0x01, 0x00, 0x26, 0x93, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
6018 0x20, 0x98, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x26, 0x93, 0xa2, 0x47,
6019 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00,
6020 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00, 0x34, 0x93, 0x22, 0x4a,
6021 0x1f, 0x7c, 0x00, 0x00, 0x2c, 0x93, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
6022 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
6023 0xe7, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6024 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0x30, 0x93, 0x22, 0x42,
6025 0x19, 0x7c, 0x00, 0x00, 0xf9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6026 0x31, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc9, 0x96, 0x00, 0x40,
6027 0x81, 0x32, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00,
6028 0x32, 0x00, 0x2a, 0x15, 0xe4, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x16,
6029 0xe4, 0xb1, 0x00, 0x00, 0x46, 0x93, 0x22, 0x16, 0x02, 0x30, 0x00, 0x00,
6030 0x00, 0x00, 0x00, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0xf4, 0x98, 0x00, 0x40,
6031 0x95, 0x30, 0x01, 0x00, 0x47, 0x93, 0x22, 0x40, 0x11, 0x6c, 0x00, 0x00,
6032 0xac, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2b, 0x01,
6033 0xe0, 0xc1, 0x01, 0x00, 0x00, 0x2b, 0x00, 0xa6, 0x16, 0xb0, 0x01, 0x00,
6034 0x00, 0x00, 0x00, 0x01, 0xe0, 0xd1, 0x01, 0x00, 0xf8, 0x97, 0x00, 0x08,
6035 0x80, 0x30, 0x01, 0x00, 0x3f, 0x93, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00,
6036 0x19, 0x98, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
6037 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6038 0x40, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6039 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6040 0x00, 0x98, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0xa1, 0x97, 0x00, 0x5e,
6041 0x05, 0x10, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6042 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xbf, 0x8d, 0x00, 0x40,
6043 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
6044 0x04, 0x00, 0x1f, 0x15, 0x1a, 0x50, 0x00, 0x00, 0x54, 0x93, 0x20, 0x16,
6045 0x1a, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
6046 0x00, 0x00, 0x22, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
6047 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xb1, 0x01, 0x00,
6048 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
6049 0x62, 0xdd, 0x01, 0x00, 0x51, 0x93, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
6050 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
6051 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0xc0, 0x01, 0x00,
6052 0x00, 0x00, 0x00, 0x0a, 0x2a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
6053 0x2c, 0xd0, 0x01, 0x00, 0xac, 0x00, 0x2f, 0x40, 0x23, 0xb0, 0x01, 0x00,
6054 0x5b, 0x93, 0x84, 0x45, 0x1f, 0x10, 0x00, 0x00, 0x5c, 0x93, 0x00, 0x0a,
6055 0xe0, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0xb0, 0x01, 0x00,
6056 0x5b, 0x97, 0x00, 0x40, 0x35, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
6057 0x42, 0xc9, 0x01, 0x00, 0x64, 0x93, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
6058 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
6059 0x62, 0xdd, 0x01, 0x00, 0x60, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
6060 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
6061 0x48, 0xb1, 0x01, 0x00, 0x73, 0x93, 0xa2, 0x02, 0x1a, 0x50, 0x00, 0x00,
6062 0x74, 0x93, 0x22, 0x40, 0x2d, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
6063 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
6064 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08,
6065 0xe0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
6066 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x6b, 0x93, 0xa8, 0x40,
6067 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
6068 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
6069 0x42, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0, 0x10, 0xc8, 0x01, 0x00,
6070 0xf0, 0x07, 0x00, 0x40, 0x1b, 0x98, 0x01, 0x00, 0x74, 0x93, 0x00, 0x5c,
6071 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00,
6072 0xe2, 0x95, 0x00, 0x40, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05,
6073 0x48, 0xb1, 0x01, 0x00, 0x78, 0x93, 0x23, 0x0d, 0x2c, 0x6c, 0x00, 0x00,
6074 0x00, 0x00, 0x00, 0x40, 0x1f, 0x90, 0x01, 0x00, 0x80, 0x93, 0x22, 0x46,
6075 0x1f, 0x7c, 0x00, 0x00, 0x70, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
6076 0x80, 0x93, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
6077 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6078 0x7c, 0x93, 0xa8, 0x46, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6079 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6080 0x08, 0x00, 0x2d, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
6081 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
6082 0xea, 0x96, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
6083 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6084 0x85, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6085 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6086 0x8b, 0x93, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
6087 0x13, 0x30, 0x01, 0x00, 0x8f, 0x93, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
6088 0x20, 0x98, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x8f, 0x93, 0xa2, 0x47,
6089 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00,
6090 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00, 0xa4, 0x93, 0x22, 0x4a,
6091 0x1f, 0x7c, 0x00, 0x00, 0x95, 0x93, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
6092 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
6093 0xe7, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6094 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0xa0, 0x93, 0x22, 0x42,
6095 0x19, 0x7c, 0x00, 0x00, 0x99, 0x93, 0xa2, 0xf3, 0x84, 0x30, 0x00, 0x00,
6096 0x00, 0x00, 0x00, 0xa5, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
6097 0x85, 0xd0, 0x01, 0x00, 0xd4, 0x00, 0x3e, 0x41, 0x85, 0xe0, 0x01, 0x00,
6098 0x9d, 0x93, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
6099 0x11, 0x90, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x08, 0xe4, 0xf5, 0x01, 0x00,
6100 0xf9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xa1, 0x93, 0x00, 0x40,
6101 0x81, 0xb2, 0x00, 0x00, 0xc9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6102 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00, 0x32, 0x00, 0x2a, 0x15,
6103 0xe4, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x16, 0xe4, 0xb1, 0x00, 0x00,
6104 0xa7, 0x93, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40,
6105 0x81, 0x32, 0x01, 0x00, 0xf4, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6106 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0xb4, 0x93, 0x22, 0x47,
6107 0x1f, 0x7c, 0x00, 0x00, 0xb1, 0x93, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
6108 0xac, 0x93, 0xa2, 0xf3, 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5,
6109 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x85, 0xd0, 0x01, 0x00,
6110 0xd4, 0x00, 0x3e, 0x41, 0x85, 0xe0, 0x01, 0x00, 0xb0, 0x93, 0x22, 0x40,
6111 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x11, 0x90, 0x01, 0x00,
6112 0x0b, 0x00, 0x00, 0x08, 0xe4, 0xf5, 0x01, 0x00, 0x58, 0x01, 0x2d, 0x00,
6113 0x2a, 0xd0, 0x01, 0x00, 0x60, 0x01, 0x2d, 0xf0, 0x10, 0xb0, 0x01, 0x00,
6114 0x3f, 0x91, 0x00, 0xf0, 0x2c, 0xb0, 0x00, 0x00, 0xf4, 0x98, 0x00, 0x41,
6115 0x95, 0x30, 0x01, 0x00, 0xbb, 0x93, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
6116 0x00, 0x00, 0x00, 0x41, 0x97, 0xb0, 0x01, 0x00, 0xb9, 0x93, 0x23, 0x0d,
6117 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00,
6118 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0xf4, 0x93, 0x00, 0x05,
6119 0x48, 0xb1, 0x00, 0x00, 0xac, 0x00, 0x2f, 0x01, 0x14, 0xb0, 0x01, 0x00,
6120 0xb0, 0x00, 0x2b, 0x01, 0xe0, 0xc1, 0x01, 0x00, 0x00, 0x2b, 0x00, 0xa6,
6121 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xd1, 0x01, 0x00,
6122 0xcb, 0x93, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
6123 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
6124 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
6125 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
6126 0xc4, 0x93, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6127 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6128 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0,
6129 0x22, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x23, 0x80, 0x01, 0x00,
6130 0x00, 0x00, 0x00, 0x01, 0x84, 0xb0, 0x01, 0x00, 0xce, 0x93, 0x23, 0x0d,
6131 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xb0, 0x01, 0x00,
6132 0x00, 0x00, 0x00, 0x08, 0x80, 0xb0, 0x01, 0x00, 0xd3, 0x93, 0x22, 0x40,
6133 0x1b, 0x6c, 0x00, 0x00, 0xf8, 0x97, 0x00, 0x01, 0x84, 0x50, 0x01, 0x00,
6134 0xdb, 0x93, 0x22, 0x40, 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
6135 0x80, 0xc0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10, 0x46, 0xc9, 0x01, 0x00,
6136 0x00, 0x00, 0x00, 0x4f, 0x43, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
6137 0xf0, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00,
6138 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
6139 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa1, 0x62, 0xdd, 0x01, 0x00,
6140 0xd9, 0x93, 0xa8, 0x11, 0xe0, 0x31, 0x00, 0x00, 0xea, 0x93, 0x00, 0x5e,
6141 0x17, 0x90, 0x00, 0x00, 0xde, 0x93, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00,
6142 0x00, 0x00, 0x00, 0x0d, 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
6143 0x84, 0xd0, 0x01, 0x00, 0xe3, 0x93, 0x22, 0x40, 0x1b, 0x6c, 0x00, 0x00,
6144 0x19, 0x98, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0xea, 0x93, 0x22, 0x40,
6145 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0xc0, 0x01, 0x00,
6146 0x10, 0x80, 0x00, 0x10, 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
6147 0x43, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
6148 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
6149 0xf0, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa1, 0x62, 0xdd, 0x01, 0x00,
6150 0xe8, 0x93, 0xa8, 0x11, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
6151 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6152 0xeb, 0x93, 0xa8, 0x0a, 0x02, 0x30, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6153 0x1c, 0xb0, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00,
6154 0xf2, 0x93, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00, 0xff, 0x07, 0x00, 0x11,
6155 0x00, 0x8c, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6156 0x00, 0x98, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0xa1, 0x97, 0x00, 0x5e,
6157 0x05, 0x10, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
6158 0xbf, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
6159 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00,
6160 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
6161 0x8e, 0xb0, 0x01, 0x00, 0xb3, 0x96, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
6162 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0xea, 0x96, 0x00, 0x41,
6163 0x87, 0x30, 0x01, 0x00, 0x6f, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6164 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x05, 0x94, 0x22, 0x40,
6165 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
6166 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x01, 0x94, 0xa8, 0x40,
6167 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
6168 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x07, 0x94, 0x22, 0x09,
6169 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
6170 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
6171 0x1a, 0xd0, 0x01, 0x00, 0x0d, 0x94, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
6172 0xf4, 0x98, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00, 0x15, 0x94, 0x22, 0x08,
6173 0x80, 0x32, 0x00, 0x00, 0x38, 0x93, 0x00, 0x00, 0x2a, 0xc0, 0x00, 0x00,
6174 0xf4, 0x98, 0x00, 0x41, 0x95, 0x30, 0x01, 0x00, 0x10, 0x94, 0x22, 0x08,
6175 0x80, 0x32, 0x00, 0x00, 0xbb, 0x93, 0x00, 0x00, 0x2a, 0xc0, 0x00, 0x00,
6176 0x00, 0x00, 0x00, 0x41, 0x97, 0xb0, 0x01, 0x00, 0x13, 0x94, 0x23, 0x0d,
6177 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00,
6178 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
6179 0x48, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
6180 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40,
6181 0x81, 0xb2, 0x00, 0x00, 0x19, 0x94, 0x00, 0x4a, 0x1f, 0x90, 0x00, 0x00,
6182 0xf4, 0x95, 0x00, 0x00, 0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
6183 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
6184 0x07, 0x00, 0x00, 0x0b, 0x96, 0x88, 0x01, 0x00, 0x27, 0x94, 0x26, 0x47,
6185 0x97, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00,
6186 0x27, 0x94, 0x23, 0x4b, 0x0c, 0x6c, 0x00, 0x00, 0x33, 0x98, 0x00, 0x4b,
6187 0x04, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
6188 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
6189 0x16, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0xb0, 0x01, 0x00,
6190 0x33, 0x98, 0x00, 0x4b, 0x04, 0x50, 0x01, 0x00, 0x28, 0x94, 0x00, 0x40,
6191 0x81, 0xb2, 0x00, 0x00, 0x33, 0x98, 0x00, 0x06, 0x04, 0x30, 0x01, 0x00,
6192 0x2d, 0x94, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
6193 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2c, 0xd0, 0x01, 0x00,
6194 0x00, 0x00, 0x00, 0x0a, 0x02, 0xb0, 0x01, 0x00, 0xda, 0x94, 0x00, 0x01,
6195 0x8c, 0x30, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00,
6196 0x34, 0x94, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
6197 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6198 0x30, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6199 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6200 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00, 0x3d, 0x94, 0x22, 0x06,
6201 0x14, 0x50, 0x00, 0x00, 0x24, 0x97, 0x00, 0x45, 0x1f, 0x00, 0x01, 0x00,
6202 0x1b, 0x94, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
6203 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6204 0x39, 0x94, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6205 0x1c, 0xb0, 0x00, 0x00, 0x1b, 0x94, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
6206 0x08, 0x00, 0x2d, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
6207 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
6208 0xea, 0x96, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
6209 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6210 0x42, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6211 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6212 0x48, 0x94, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
6213 0x13, 0x30, 0x01, 0x00, 0x4b, 0x94, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
6214 0x20, 0x98, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
6215 0x19, 0x80, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00,
6216 0x59, 0x94, 0x22, 0x4a, 0x1f, 0x7c, 0x00, 0x00, 0x51, 0x94, 0xa2, 0x16,
6217 0x02, 0x30, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6218 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40,
6219 0x81, 0xb2, 0x00, 0x00, 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00,
6220 0x55, 0x94, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0xf9, 0x96, 0x00, 0x40,
6221 0x81, 0x32, 0x01, 0x00, 0x56, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6222 0xc9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x00,
6223 0x2a, 0xd0, 0x01, 0x00, 0x32, 0x00, 0x2a, 0x15, 0xe4, 0xb1, 0x01, 0x00,
6224 0xba, 0x8d, 0x00, 0x16, 0xe4, 0xb1, 0x00, 0x00, 0x35, 0x93, 0xa2, 0x16,
6225 0x02, 0x30, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6226 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xbf, 0x8d, 0x00, 0x40,
6227 0x81, 0xb2, 0x00, 0x00, 0xf4, 0x95, 0x00, 0x4a, 0x1f, 0x10, 0x01, 0x00,
6228 0x49, 0x93, 0x00, 0x10, 0x32, 0xb0, 0x00, 0x00, 0x8a, 0x00, 0x20, 0x40,
6229 0xe7, 0xb1, 0x01, 0x00, 0x63, 0x94, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
6230 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x66, 0x94, 0x00, 0x40,
6231 0x81, 0xb2, 0x00, 0x00, 0x74, 0x96, 0x00, 0x15, 0x94, 0x30, 0x01, 0x00,
6232 0x7b, 0x96, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
6233 0x48, 0xb1, 0x01, 0x00, 0x68, 0x94, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
6234 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0x20, 0x98, 0x00, 0x45,
6235 0x81, 0x30, 0x01, 0x00, 0xba, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6236 0xfe, 0x91, 0x00, 0x45, 0x1f, 0x90, 0x00, 0x00, 0xb6, 0x96, 0x00, 0x40,
6237 0x81, 0x32, 0x01, 0x00, 0x6f, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6238 0x49, 0x93, 0x00, 0x01, 0x2c, 0xb0, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40,
6239 0x81, 0x32, 0x01, 0x00, 0x7a, 0x94, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
6240 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
6241 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00,
6242 0x73, 0x94, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b,
6243 0x62, 0xb1, 0x01, 0x00, 0x77, 0x94, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
6244 0x74, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
6245 0x62, 0xb1, 0x01, 0x00, 0x77, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
6246 0xff, 0x89, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x58, 0x01, 0x20, 0x08,
6247 0xe0, 0xb1, 0x01, 0x00, 0x60, 0x01, 0x20, 0x16, 0xe0, 0xb1, 0x01, 0x00,
6248 0xb6, 0x96, 0x00, 0x47, 0x1f, 0x10, 0x01, 0x00, 0x6f, 0x96, 0x00, 0x40,
6249 0x81, 0x32, 0x01, 0x00, 0x49, 0x93, 0x00, 0x01, 0x2c, 0xb0, 0x00, 0x00,
6250 0xbf, 0x95, 0x00, 0x47, 0x1f, 0x10, 0x01, 0x00, 0x8c, 0x94, 0xa2, 0x08,
6251 0x80, 0x32, 0x00, 0x00, 0x88, 0x94, 0xa2, 0x42, 0x19, 0x7c, 0x00, 0x00,
6252 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40,
6253 0x47, 0x99, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
6254 0x74, 0x96, 0x00, 0x15, 0x94, 0x30, 0x01, 0x00, 0x7b, 0x96, 0x00, 0x4b,
6255 0x02, 0xb0, 0x00, 0x00, 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6256 0xf9, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
6257 0x19, 0x90, 0x01, 0x00, 0xaf, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
6258 0xff, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x58, 0x01, 0x20, 0x08,
6259 0xe0, 0xb1, 0x01, 0x00, 0x60, 0x01, 0x20, 0x16, 0xe0, 0xb1, 0x01, 0x00,
6260 0xf4, 0x95, 0x00, 0x10, 0x32, 0x30, 0x01, 0x00, 0x49, 0x93, 0x00, 0x40,
6261 0x13, 0xb0, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6262 0x9c, 0x94, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
6263 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00,
6264 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x95, 0x94, 0x37, 0x5c,
6265 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00,
6266 0x99, 0x94, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x96, 0x94, 0x00, 0x40,
6267 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00,
6268 0x99, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xff, 0x89, 0x17, 0x40,
6269 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
6270 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
6271 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x8e, 0xb0, 0x01, 0x00,
6272 0xb3, 0x96, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
6273 0x85, 0xb0, 0x01, 0x00, 0xea, 0x96, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00,
6274 0x6f, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
6275 0x42, 0xc9, 0x01, 0x00, 0xab, 0x94, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
6276 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
6277 0x62, 0xdd, 0x01, 0x00, 0xa7, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
6278 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
6279 0x48, 0xb1, 0x01, 0x00, 0x3f, 0x91, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00,
6280 0x20, 0x98, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00, 0x3f, 0x91, 0x00, 0x40,
6281 0x81, 0xb2, 0x00, 0x00, 0x14, 0x00, 0x2d, 0x45, 0x1f, 0x90, 0x01, 0x00,
6282 0x87, 0x91, 0x00, 0x44, 0x19, 0x90, 0x00, 0x00, 0xb3, 0x94, 0xa2, 0x41,
6283 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x1f, 0x90, 0x01, 0x00,
6284 0xef, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x96, 0x00, 0x4a,
6285 0x1f, 0x10, 0x01, 0x00, 0x6f, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6286 0x49, 0x93, 0x00, 0x01, 0x2c, 0xb0, 0x00, 0x00, 0xf4, 0x95, 0x00, 0x40,
6287 0x81, 0x32, 0x01, 0x00, 0x49, 0x93, 0x00, 0x10, 0x32, 0xb0, 0x00, 0x00,
6288 0xfe, 0x91, 0x00, 0x45, 0x1f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6289 0x37, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x33, 0xc3, 0x01, 0x00,
6290 0x36, 0x00, 0x00, 0x01, 0x02, 0xcc, 0x01, 0x00, 0x00, 0x00, 0xd2, 0x40,
6291 0x81, 0xb2, 0x00, 0x00, 0xbf, 0x94, 0x85, 0x17, 0x80, 0x32, 0x00, 0x00,
6292 0x00, 0x00, 0x9f, 0x48, 0x03, 0xd0, 0x00, 0x00, 0xc1, 0x94, 0x9c, 0x17,
6293 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x4c, 0x03, 0xd0, 0x00, 0x00,
6294 0x00, 0x00, 0x80, 0x01, 0x34, 0xc3, 0x01, 0x00, 0x02, 0x00, 0x2d, 0x11,
6295 0x10, 0xc1, 0x00, 0x00, 0xc6, 0x94, 0x00, 0x40, 0x43, 0xc1, 0x00, 0x00,
6296 0xc6, 0x94, 0x00, 0x50, 0x43, 0xc1, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa1,
6297 0x42, 0xc9, 0x01, 0x00, 0xca, 0x94, 0x22, 0x40, 0xe5, 0x6d, 0x00, 0x00,
6298 0x04, 0x00, 0xa2, 0x40, 0xe5, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
6299 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x49, 0x1f, 0x90, 0x01, 0x00,
6300 0x00, 0x00, 0xa2, 0x41, 0x23, 0xd0, 0x00, 0x00, 0xc6, 0x94, 0x00, 0x50,
6301 0x43, 0xd1, 0x00, 0x00, 0x40, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
6302 0x00, 0x00, 0x00, 0x4a, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
6303 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x12, 0xf0, 0xb1, 0x01, 0x00,
6304 0xd0, 0x95, 0x00, 0x41, 0xe1, 0x31, 0x01, 0x00, 0x00, 0x80, 0x00, 0x43,
6305 0x44, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
6306 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
6307 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x03, 0xe0, 0xc9, 0x01, 0x00,
6308 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
6309 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
6310 0xd7, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x20, 0x40,
6311 0xe5, 0xb1, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0x01, 0x8c, 0xd0, 0x01, 0x00,
6312 0x00, 0x00, 0x00, 0x46, 0xe0, 0xc1, 0x01, 0x00, 0xac, 0x00, 0x2f, 0x40,
6313 0x13, 0xb0, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0x01, 0xe0, 0xc1, 0x01, 0x00,
6314 0xe1, 0x94, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00, 0xfb, 0x98, 0x00, 0x40,
6315 0x81, 0x32, 0x01, 0x00, 0xe3, 0x94, 0x22, 0x47, 0x19, 0x7c, 0x00, 0x00,
6316 0x00, 0x00, 0x00, 0x5f, 0x13, 0x90, 0x01, 0x00, 0x8d, 0x98, 0x00, 0x47,
6317 0x19, 0x10, 0x01, 0x00, 0xc0, 0x00, 0x2d, 0x44, 0x1f, 0x90, 0x01, 0x00,
6318 0xc4, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0xd8, 0x98, 0x00, 0xf0,
6319 0x84, 0xb0, 0x00, 0x00, 0x90, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
6320 0xf8, 0x94, 0xa2, 0x4b, 0x1f, 0x7c, 0x00, 0x00, 0x4b, 0x95, 0xa2, 0x4c,
6321 0x1f, 0x7c, 0x00, 0x00, 0xf8, 0x94, 0x1f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
6322 0xfb, 0x94, 0xa2, 0x01, 0x80, 0x32, 0x00, 0x00, 0xa8, 0x00, 0x2d, 0x46,
6323 0x8f, 0xb0, 0x01, 0x00, 0xf1, 0x94, 0x1f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
6324 0xb4, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xf3, 0x94, 0x22, 0xf0,
6325 0x3a, 0x6c, 0x00, 0x00, 0x48, 0x95, 0x1f, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
6326 0x00, 0x00, 0xa2, 0x40, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4f,
6327 0x8f, 0xb0, 0x01, 0x00, 0x8a, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6328 0x49, 0x95, 0x20, 0x42, 0xe7, 0x6d, 0x00, 0x00, 0xf7, 0x94, 0x22, 0x40,
6329 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x8f, 0xb0, 0x01, 0x00,
6330 0x00, 0x00, 0x80, 0x58, 0x8f, 0xb0, 0x01, 0x00, 0xfa, 0x94, 0x22, 0x40,
6331 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x8f, 0xb0, 0x01, 0x00,
6332 0x00, 0x00, 0x80, 0x5b, 0x8f, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x00, 0x40,
6333 0x43, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
6334 0xff, 0x94, 0xa2, 0x42, 0x24, 0x6c, 0x00, 0x00, 0x08, 0x95, 0x23, 0xf0,
6335 0x02, 0x6c, 0x00, 0x00, 0x05, 0x95, 0xa2, 0xf0, 0x80, 0x32, 0x00, 0x00,
6336 0x4a, 0x95, 0xa2, 0x42, 0x24, 0x6c, 0x00, 0x00, 0x4a, 0x95, 0xa2, 0x41,
6337 0x03, 0x6c, 0x00, 0x00, 0x04, 0x95, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
6338 0x00, 0x00, 0x80, 0x51, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x52,
6339 0x8f, 0xb0, 0x01, 0x00, 0x4a, 0x95, 0x1f, 0x12, 0x84, 0x50, 0x00, 0x00,
6340 0x4a, 0x95, 0xa0, 0x01, 0x84, 0x6c, 0x00, 0x00, 0xf8, 0x94, 0x00, 0x40,
6341 0x81, 0xb2, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6342 0x33, 0x95, 0xa2, 0x46, 0xe7, 0x7d, 0x00, 0x00, 0x14, 0x00, 0x00, 0x40,
6343 0x43, 0x99, 0x01, 0x00, 0x25, 0x95, 0x22, 0xf0, 0x14, 0x30, 0x00, 0x00,
6344 0x11, 0x95, 0x20, 0x0a, 0x02, 0x6c, 0x00, 0x00, 0x22, 0x95, 0x03, 0x1e,
6345 0x80, 0x32, 0x00, 0x00, 0x10, 0x95, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
6346 0x00, 0x00, 0x80, 0x44, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x49,
6347 0x8f, 0xb0, 0x01, 0x00, 0x16, 0x95, 0x22, 0x0a, 0x02, 0x6c, 0x00, 0x00,
6348 0x19, 0x95, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x15, 0x95, 0xa2, 0x40,
6349 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x55, 0x8f, 0xb0, 0x01, 0x00,
6350 0x00, 0x00, 0x80, 0x56, 0x8f, 0xb0, 0x01, 0x00, 0x18, 0x95, 0xa2, 0x40,
6351 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43, 0x8f, 0xb0, 0x01, 0x00,
6352 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
6353 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xd0, 0x01, 0x00,
6354 0x1f, 0x95, 0x20, 0x91, 0x83, 0x6c, 0x00, 0x00, 0x1e, 0x95, 0xa2, 0x40,
6355 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
6356 0x27, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x21, 0x95, 0xa2, 0x40,
6357 0x80, 0x32, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
6358 0x20, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x24, 0x95, 0xa2, 0x40,
6359 0x80, 0x32, 0x00, 0x00, 0x22, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
6360 0x23, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x88, 0x00, 0x2d, 0x44,
6361 0x8f, 0xb0, 0x01, 0x00, 0x2e, 0x95, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
6362 0x2b, 0x95, 0xa2, 0x43, 0x3d, 0x7c, 0x00, 0x00, 0x2b, 0x95, 0xa2, 0xf2,
6363 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x80, 0xb2, 0x00, 0x00,
6364 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00, 0x2d, 0x95, 0xa2, 0x40,
6365 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43, 0x8f, 0xb0, 0x01, 0x00,
6366 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00, 0x2b, 0x95, 0xa0, 0x91,
6367 0x03, 0x6c, 0x00, 0x00, 0x29, 0x95, 0x22, 0x43, 0x3d, 0x7c, 0x00, 0x00,
6368 0x32, 0x95, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x28, 0x00, 0x80, 0x40,
6369 0x8f, 0x98, 0x01, 0x00, 0x29, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
6370 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x3c, 0x95, 0xa2, 0xf0,
6371 0x14, 0x30, 0x00, 0x00, 0x88, 0x00, 0x2d, 0x44, 0x8f, 0xb0, 0x01, 0x00,
6372 0x39, 0x95, 0xa2, 0xf2, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40,
6373 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00,
6374 0x2b, 0x95, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x29, 0x95, 0x20, 0x91,
6375 0x03, 0x6c, 0x00, 0x00, 0x2b, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6376 0x40, 0x95, 0x20, 0x0a, 0x02, 0x6c, 0x00, 0x00, 0x3f, 0x95, 0xa2, 0x40,
6377 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x44, 0x8f, 0xb0, 0x01, 0x00,
6378 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00, 0x45, 0x95, 0x22, 0x0a,
6379 0x02, 0x6c, 0x00, 0x00, 0x19, 0x95, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
6380 0x44, 0x95, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x55,
6381 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x56, 0x8f, 0xb0, 0x01, 0x00,
6382 0x47, 0x95, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43,
6383 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00,
6384 0x4d, 0x95, 0x00, 0x43, 0x95, 0xb0, 0x00, 0x00, 0x4d, 0x95, 0x00, 0x41,
6385 0x95, 0xb0, 0x00, 0x00, 0x4d, 0x95, 0x00, 0x42, 0x95, 0xb0, 0x00, 0x00,
6386 0x4d, 0x95, 0x00, 0x44, 0x95, 0xb0, 0x00, 0x00, 0x4d, 0x95, 0x00, 0x4c,
6387 0x95, 0xb0, 0x00, 0x00, 0xf5, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6388 0x50, 0x95, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4b,
6389 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4c, 0x8f, 0xb0, 0x01, 0x00,
6390 0x2d, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3,
6391 0x84, 0xb0, 0x01, 0x00, 0x55, 0x95, 0xa2, 0xf3, 0x96, 0x30, 0x00, 0x00,
6392 0x00, 0x00, 0x80, 0x40, 0x01, 0xb0, 0x01, 0x00, 0x2d, 0x00, 0x2a, 0x41,
6393 0xe7, 0xd1, 0x01, 0x00, 0xd4, 0x00, 0x3d, 0x41, 0x85, 0xe0, 0x01, 0x00,
6394 0x0b, 0x00, 0x00, 0xf2, 0x00, 0xe4, 0x01, 0x00, 0x5b, 0x95, 0x22, 0x5a,
6395 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x90, 0x01, 0x00,
6396 0x5c, 0x95, 0x00, 0x5a, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
6397 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x63, 0x41, 0x85, 0xc0, 0x01, 0x00,
6398 0x00, 0x00, 0xa0, 0xa5, 0x85, 0x6c, 0x01, 0x00, 0x00, 0x00, 0xe3, 0x40,
6399 0x85, 0xb0, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
6400 0x12, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x3d, 0x99, 0x00, 0xf0,
6401 0x8c, 0xb0, 0x00, 0x00, 0x69, 0x95, 0x22, 0x40, 0x0f, 0x6c, 0x00, 0x00,
6402 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x66, 0x95, 0xa2, 0x4b,
6403 0x19, 0x7c, 0x00, 0x00, 0x67, 0x95, 0x22, 0xf0, 0x18, 0x6c, 0x00, 0x00,
6404 0x00, 0x00, 0x60, 0x4b, 0x19, 0x90, 0x01, 0x00, 0x32, 0x96, 0x00, 0x07,
6405 0x10, 0x30, 0x01, 0x00, 0x6f, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
6406 0x6b, 0x95, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0xb8, 0x95, 0x00, 0x40,
6407 0x81, 0x30, 0x01, 0x00, 0x6f, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
6408 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b,
6409 0x19, 0x90, 0x01, 0x00, 0x32, 0x96, 0x00, 0x07, 0x10, 0x30, 0x01, 0x00,
6410 0x6f, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05,
6411 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b, 0x19, 0x90, 0x01, 0x00,
6412 0x32, 0x96, 0x00, 0x07, 0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
6413 0x05, 0xb0, 0x01, 0x00, 0x74, 0x95, 0x33, 0x40, 0x81, 0x32, 0x00, 0x00,
6414 0x77, 0x95, 0xa1, 0xad, 0x95, 0x20, 0x00, 0x00, 0x85, 0x95, 0x13, 0x40,
6415 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4a, 0x5a, 0x83, 0x01, 0x00,
6416 0x30, 0x00, 0x39, 0x45, 0x95, 0xe0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x0f,
6417 0x5e, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x5f, 0x90, 0x01, 0x00,
6418 0x00, 0x00, 0x00, 0x40, 0x45, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04,
6419 0x48, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x4a, 0xb0, 0x01, 0x00,
6420 0x00, 0x00, 0x00, 0x0c, 0x58, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07,
6421 0x4e, 0xb0, 0x01, 0x00, 0x12, 0x86, 0x00, 0x40, 0x5d, 0x98, 0x01, 0x00,
6422 0x00, 0x00, 0x00, 0x58, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
6423 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x41, 0x97, 0xb0, 0x00, 0x00,
6424 0x82, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
6425 0x97, 0xb0, 0x01, 0x00, 0x86, 0x95, 0x44, 0x07, 0x96, 0x30, 0x00, 0x00,
6426 0xff, 0xff, 0x00, 0x4b, 0x84, 0x89, 0x01, 0x00, 0x00, 0x00, 0x1c, 0xc2,
6427 0x24, 0xb0, 0x01, 0x00, 0x90, 0x95, 0xa2, 0x45, 0x25, 0x7c, 0x00, 0x00,
6428 0x8a, 0x95, 0x31, 0x20, 0x85, 0x30, 0x00, 0x00, 0x91, 0x95, 0x22, 0x12,
6429 0x48, 0x7f, 0x00, 0x00, 0x51, 0x98, 0x11, 0x12, 0x48, 0x03, 0x01, 0x00,
6430 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
6431 0x1e, 0x94, 0x01, 0x00, 0x00, 0x00, 0x80, 0x5a, 0x1f, 0x90, 0x01, 0x00,
6432 0x90, 0x95, 0x31, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4,
6433 0x24, 0xb0, 0x01, 0x00, 0x91, 0x95, 0x22, 0x12, 0x48, 0x7f, 0x00, 0x00,
6434 0x51, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x05,
6435 0x48, 0xb1, 0x01, 0x00, 0x9e, 0x95, 0x0b, 0xf0, 0x84, 0x30, 0x00, 0x00,
6436 0x00, 0x00, 0x11, 0x12, 0x48, 0x83, 0x01, 0x00, 0x9b, 0x95, 0x22, 0x50,
6437 0x85, 0x70, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6438 0x51, 0x97, 0x00, 0xf2, 0x96, 0x30, 0x01, 0x00, 0xd1, 0x99, 0x00, 0x12,
6439 0x94, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x1f, 0x90, 0x01, 0x00,
6440 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4b,
6441 0x1e, 0x94, 0x01, 0x00, 0x10, 0x00, 0x00, 0x42, 0x10, 0xf4, 0x01, 0x00,
6442 0x00, 0xb7, 0x3f, 0x43, 0x11, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x08,
6443 0x8a, 0x88, 0x01, 0x00, 0xa1, 0x95, 0x30, 0xa1, 0x0c, 0x30, 0x00, 0x00,
6444 0xa4, 0x95, 0x22, 0x45, 0xe6, 0x7d, 0x00, 0x00, 0x91, 0x95, 0x10, 0x40,
6445 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x45, 0xe6, 0x91, 0x01, 0x00,
6446 0x00, 0x00, 0x10, 0x12, 0x48, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x40,
6447 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b, 0x85, 0x80, 0x01, 0x00,
6448 0x5e, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x51, 0x97, 0x00, 0xf2,
6449 0x96, 0x30, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
6450 0xd8, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x2e, 0x00, 0x2d, 0x05,
6451 0x48, 0xb1, 0x01, 0x00, 0xaf, 0x95, 0x22, 0x40, 0xe7, 0x6d, 0x00, 0x00,
6452 0x80, 0x00, 0x00, 0x40, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
6453 0xf0, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x08, 0x86, 0xe4, 0x01, 0x00,
6454 0x00, 0x00, 0x68, 0xa7, 0x87, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
6455 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
6456 0xb3, 0x95, 0xa8, 0x05, 0xe0, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12,
6457 0x96, 0xe4, 0x01, 0x00, 0x00, 0x14, 0x00, 0x4b, 0x96, 0xdc, 0x01, 0x00,
6458 0x00, 0x00, 0x80, 0x4b, 0x1e, 0x94, 0x01, 0x00, 0x10, 0x00, 0x00, 0x0f,
6459 0x84, 0xf4, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x42, 0x84, 0x88, 0x01, 0x00,
6460 0xbc, 0x95, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00, 0xbd, 0x95, 0x00, 0x42,
6461 0x68, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x6a, 0xb1, 0x01, 0x00,
6462 0xbd, 0x95, 0x31, 0x5a, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x42,
6463 0x48, 0x93, 0x01, 0x00, 0xbf, 0x95, 0x35, 0x40, 0x81, 0x32, 0x00, 0x00,
6464 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xc4, 0x95, 0x28, 0xb1,
6465 0x2c, 0x30, 0x00, 0x00, 0xc0, 0x95, 0x22, 0x4d, 0x75, 0x7d, 0x00, 0x00,
6466 0x00, 0x00, 0x95, 0x40, 0x11, 0xb0, 0x01, 0x00, 0x6d, 0x00, 0x00, 0x40,
6467 0x61, 0x99, 0x01, 0x00, 0xc4, 0x95, 0xa8, 0xb1, 0x10, 0x30, 0x00, 0x00,
6468 0x00, 0x00, 0x95, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x40,
6469 0x61, 0x99, 0x01, 0x00, 0xcb, 0x95, 0x28, 0xb1, 0x10, 0x30, 0x00, 0x00,
6470 0xc7, 0x95, 0x9f, 0xba, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
6471 0x11, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x24, 0x11, 0x84, 0x01, 0x00,
6472 0x00, 0x00, 0x00, 0x5f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
6473 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
6474 0xcd, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xac, 0x94, 0x00, 0x40,
6475 0x47, 0x99, 0x01, 0x00, 0xd1, 0x95, 0x32, 0x40, 0x81, 0x32, 0x00, 0x00,
6476 0xd7, 0x95, 0x22, 0xf8, 0x96, 0x30, 0x00, 0x00, 0x04, 0x00, 0x22, 0xf8,
6477 0x90, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x92, 0xb0, 0x01, 0x00,
6478 0x01, 0x00, 0x00, 0x4b, 0xf0, 0xcd, 0x01, 0x00, 0x20, 0x00, 0x92, 0x48,
6479 0xe0, 0xc9, 0x01, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
6480 0xdb, 0x95, 0x28, 0xb1, 0x92, 0x30, 0x00, 0x00, 0xd7, 0x95, 0x22, 0x4c,
6481 0x75, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x12, 0x40, 0x91, 0xb0, 0x00, 0x00,
6482 0x6c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xdb, 0x95, 0xa8, 0xb1,
6483 0x90, 0x30, 0x00, 0x00, 0xff, 0x00, 0x00, 0x48, 0x96, 0x88, 0x01, 0x00,
6484 0x00, 0x00, 0x00, 0x4b, 0x90, 0xd0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x4b,
6485 0xf0, 0xcd, 0x01, 0x00, 0x20, 0x00, 0x00, 0x48, 0xf0, 0xc9, 0x01, 0x00,
6486 0x00, 0x00, 0x92, 0x49, 0xe0, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x10,
6487 0x48, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0x82, 0x8c, 0x01, 0x00,
6488 0xff, 0x07, 0x00, 0xf0, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41,
6489 0x00, 0xec, 0x00, 0x00, 0xe8, 0x95, 0x22, 0x1a, 0x00, 0x6c, 0x00, 0x00,
6490 0xcc, 0x95, 0x00, 0x00, 0x34, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
6491 0x49, 0xc1, 0x01, 0x00, 0xe4, 0x95, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
6492 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x10,
6493 0x48, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x15, 0x82, 0x8c, 0x01, 0x00,
6494 0xff, 0x07, 0x00, 0xf0, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41,
6495 0x00, 0xec, 0x00, 0x00, 0xf1, 0x95, 0x22, 0x0d, 0x00, 0x6c, 0x00, 0x00,
6496 0xcc, 0x95, 0x00, 0x00, 0x1a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
6497 0x49, 0xc1, 0x01, 0x00, 0xed, 0x95, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
6498 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xf6, 0x95, 0x83, 0x1e,
6499 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x90, 0x01, 0x00,
6500 0x24, 0x00, 0x2d, 0x01, 0x2c, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x2d, 0xf0,
6501 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
6502 0x14, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
6503 0xe1, 0xb1, 0x01, 0x00, 0x02, 0x00, 0x2d, 0x11, 0x10, 0xc1, 0x00, 0x00,
6504 0xff, 0x95, 0x00, 0x40, 0x43, 0xc1, 0x00, 0x00, 0xff, 0x95, 0x00, 0x50,
6505 0x43, 0xc1, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa1, 0x42, 0xc9, 0x01, 0x00,
6506 0x04, 0x96, 0x22, 0x40, 0xf5, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
6507 0x43, 0xd1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40, 0xe5, 0x7d, 0x00, 0x00,
6508 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x49,
6509 0x1f, 0x90, 0x01, 0x00, 0x07, 0x96, 0x22, 0x11, 0x1e, 0x7c, 0x00, 0x00,
6510 0x09, 0x96, 0xa0, 0xf0, 0x16, 0x40, 0x00, 0x00, 0x09, 0x96, 0x00, 0x41,
6511 0x17, 0xc0, 0x00, 0x00, 0x09, 0x96, 0xa0, 0xf4, 0x16, 0x40, 0x00, 0x00,
6512 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41,
6513 0x23, 0xd0, 0x00, 0x00, 0xff, 0x95, 0x00, 0x52, 0x43, 0xd1, 0x00, 0x00,
6514 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00, 0x0c, 0x96, 0x30, 0x47,
6515 0x17, 0x04, 0x00, 0x00, 0x0f, 0x96, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
6516 0x00, 0x00, 0x90, 0x42, 0x81, 0xb0, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x0d,
6517 0x46, 0xc9, 0x01, 0x00, 0x13, 0x96, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
6518 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00, 0x00, 0x00, 0x90, 0x41,
6519 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00,
6520 0x14, 0x96, 0x40, 0x07, 0x96, 0x30, 0x00, 0x00, 0xdb, 0x99, 0x00, 0x40,
6521 0x81, 0x32, 0x01, 0x00, 0x1e, 0x96, 0xa2, 0x45, 0x95, 0x7c, 0x00, 0x00,
6522 0x01, 0x97, 0x3f, 0x41, 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
6523 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xe6, 0xb1, 0x01, 0x00,
6524 0x40, 0x97, 0x3e, 0x40, 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e,
6525 0xe6, 0xb1, 0x01, 0x00, 0x40, 0x97, 0x3e, 0x40, 0x9d, 0xe0, 0x01, 0x00,
6526 0x31, 0x96, 0x00, 0x3b, 0xe7, 0xb1, 0x00, 0x00, 0x1e, 0x96, 0x30, 0x40,
6527 0x81, 0x32, 0x00, 0x00, 0x28, 0x96, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
6528 0x00, 0xb5, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0x24, 0x96, 0xa2, 0x0b,
6529 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00,
6530 0x00, 0x00, 0x98, 0x42, 0x81, 0xb0, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x0d,
6531 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00,
6532 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x98, 0x41,
6533 0x81, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x21, 0xa2, 0x95, 0x20, 0x00, 0x00,
6534 0x00, 0x00, 0x10, 0x4a, 0x44, 0x83, 0x01, 0x00, 0x00, 0x97, 0x3e, 0x41,
6535 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xf6, 0xb1, 0x01, 0x00,
6536 0x00, 0x00, 0x00, 0x4e, 0xe6, 0xb1, 0x01, 0x00, 0x40, 0x97, 0x3e, 0x40,
6537 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xe7, 0xb1, 0x01, 0x00,
6538 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0x07,
6539 0x92, 0x89, 0x01, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb0, 0x01, 0x00,
6540 0x03, 0x00, 0x00, 0x08, 0x86, 0xf4, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x43,
6541 0x46, 0xc9, 0x01, 0x00, 0x07, 0x00, 0x00, 0x08, 0x82, 0x88, 0x01, 0x00,
6542 0x35, 0x96, 0x40, 0x08, 0x96, 0x30, 0x00, 0x00, 0xdb, 0x99, 0x00, 0x40,
6543 0x81, 0x32, 0x01, 0x00, 0x41, 0x96, 0x22, 0x45, 0x95, 0x7c, 0x00, 0x00,
6544 0x3d, 0x96, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0f,
6545 0x96, 0xf4, 0x01, 0x00, 0x3a, 0x96, 0x31, 0x5f, 0x97, 0x04, 0x00, 0x00,
6546 0x00, 0x00, 0x11, 0x4b, 0x48, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
6547 0x6a, 0xb1, 0x01, 0x00, 0x3d, 0x96, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00,
6548 0x00, 0x00, 0x00, 0x41, 0xe6, 0x81, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40,
6549 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00,
6550 0x00, 0x97, 0x3f, 0x41, 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
6551 0x96, 0xb0, 0x01, 0x00, 0x40, 0x97, 0x3d, 0x40, 0x97, 0xe0, 0x01, 0x00,
6552 0x00, 0x00, 0x63, 0xf3, 0x88, 0xb0, 0x01, 0x00, 0x49, 0x96, 0xa2, 0x3b,
6553 0x89, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00,
6554 0x01, 0x00, 0x00, 0xa6, 0x92, 0xb1, 0x01, 0x00, 0x4a, 0x96, 0x18, 0x4a,
6555 0x44, 0x93, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40, 0x81, 0xb2, 0x01, 0x00,
6556 0x30, 0x00, 0x39, 0x45, 0x97, 0xe0, 0x01, 0x00, 0x4f, 0x96, 0x22, 0x5a,
6557 0x1f, 0x7c, 0x00, 0x00, 0x1f, 0x04, 0x00, 0x0f, 0x98, 0xd8, 0x01, 0x00,
6558 0x00, 0x00, 0x00, 0x4c, 0x5e, 0x94, 0x01, 0x00, 0x51, 0x96, 0x00, 0x05,
6559 0x4a, 0xb0, 0x00, 0x00, 0x1f, 0x04, 0x00, 0xa7, 0x5e, 0x84, 0x01, 0x00,
6560 0x00, 0x00, 0x00, 0x40, 0x4b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58,
6561 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
6562 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x52, 0x96, 0x00, 0x40,
6563 0x81, 0xb2, 0x00, 0x00, 0x55, 0x96, 0x40, 0x07, 0x96, 0x30, 0x00, 0x00,
6564 0xdb, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x59, 0x96, 0x22, 0x45,
6565 0x95, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00,
6566 0xd9, 0x99, 0x00, 0x4a, 0x44, 0x13, 0x01, 0x00, 0x00, 0x97, 0x3f, 0x41,
6567 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00,
6568 0x40, 0x97, 0x3d, 0x40, 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x63, 0xf3,
6569 0x88, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x38, 0x45, 0x97, 0xe0, 0x01, 0x00,
6570 0x00, 0x00, 0x00, 0x5f, 0x0f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58,
6571 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
6572 0x61, 0x96, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x5a, 0x96, 0xa2, 0x3b,
6573 0x89, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x38, 0x45, 0x9d, 0xe0, 0x01, 0x00,
6574 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xd1, 0x99, 0x00, 0x12,
6575 0x94, 0x30, 0x01, 0x00, 0x32, 0x96, 0x00, 0x5a, 0x1f, 0x00, 0x01, 0x00,
6576 0x00, 0x00, 0x80, 0x5a, 0x1f, 0x90, 0x01, 0x00, 0x11, 0x00, 0x00, 0x4a,
6577 0xe6, 0xc9, 0x01, 0x00, 0x34, 0x00, 0x2f, 0x4f, 0x95, 0x84, 0x01, 0x00,
6578 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x63, 0x4b,
6579 0x84, 0xc8, 0x01, 0x00, 0x00, 0x00, 0xa0, 0x43, 0x85, 0x6c, 0x01, 0x00,
6580 0x00, 0x00, 0xe3, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x2d, 0x44,
6581 0x1f, 0x90, 0x01, 0x00, 0x32, 0x00, 0x2d, 0xf2, 0x2a, 0xb0, 0x01, 0x00,
6582 0x04, 0x00, 0x22, 0xf2, 0x02, 0x30, 0x00, 0x00, 0x51, 0x95, 0x00, 0x10,
6583 0x32, 0x30, 0x01, 0x00, 0x32, 0x00, 0xa0, 0x40, 0xe5, 0xb1, 0x01, 0x00,
6584 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
6585 0x99, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x02, 0xc0, 0x01, 0x00,
6586 0x00, 0x00, 0x00, 0x50, 0x03, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
6587 0x97, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x4c, 0x02, 0xd0, 0x00, 0x00,
6588 0x78, 0x96, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
6589 0x36, 0xb0, 0x01, 0x00, 0x88, 0x96, 0x22, 0x41, 0x03, 0x50, 0x00, 0x00,
6590 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
6591 0xf1, 0xb1, 0x01, 0x00, 0x70, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00,
6592 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
6593 0x62, 0xb1, 0x01, 0x00, 0x81, 0x96, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
6594 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40,
6595 0x81, 0x32, 0x01, 0x00, 0x7c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
6596 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00, 0x7c, 0x96, 0x00, 0x5c,
6597 0x01, 0x80, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6598 0x00, 0x00, 0x00, 0x1b, 0x10, 0xb1, 0x00, 0x00, 0x68, 0x01, 0x2d, 0x06,
6599 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x82, 0xc0, 0x01, 0x00,
6600 0x00, 0x80, 0x00, 0x03, 0x46, 0xc9, 0x01, 0x00, 0xc7, 0x95, 0x00, 0x40,
6601 0x81, 0x32, 0x01, 0x00, 0xaf, 0x96, 0x22, 0x40, 0x11, 0x6c, 0x00, 0x00,
6602 0x00, 0x00, 0x68, 0x08, 0x38, 0x96, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x41,
6603 0x82, 0xcc, 0x01, 0x00, 0x8d, 0x96, 0xaa, 0x41, 0x3b, 0x40, 0x00, 0x00,
6604 0x00, 0x00, 0x00, 0xf8, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
6605 0x11, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x1d, 0x04, 0xcc, 0x01, 0x00,
6606 0xae, 0x96, 0x26, 0x46, 0x23, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03,
6607 0x12, 0xc8, 0x01, 0x00, 0x64, 0x01, 0x20, 0xf0, 0xe0, 0xb1, 0x01, 0x00,
6608 0xad, 0x96, 0x22, 0x41, 0x05, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03,
6609 0x48, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xf8, 0x86, 0xc8, 0x01, 0x00,
6610 0x00, 0x00, 0x22, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
6611 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0xb1, 0x01, 0x00,
6612 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
6613 0x62, 0xdd, 0x01, 0x00, 0x9f, 0x96, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
6614 0xac, 0x96, 0x22, 0x41, 0x05, 0x50, 0x00, 0x00, 0xaa, 0x96, 0xa2, 0x41,
6615 0x23, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x1a, 0xb0, 0x01, 0x00,
6616 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
6617 0x62, 0xdd, 0x01, 0x00, 0xa5, 0x96, 0xa8, 0x46, 0x23, 0x30, 0x00, 0x00,
6618 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03,
6619 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x42, 0xb1, 0x01, 0x00,
6620 0x00, 0x00, 0x00, 0x44, 0x13, 0xc0, 0x01, 0x00, 0x9a, 0x96, 0x00, 0x50,
6621 0x49, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6622 0x04, 0x80, 0x00, 0x03, 0x1a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
6623 0x81, 0xb2, 0x01, 0x00, 0xae, 0x96, 0x22, 0x40, 0x3b, 0x6c, 0x00, 0x00,
6624 0x00, 0x00, 0x00, 0xf8, 0x00, 0xb0, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x5c,
6625 0x01, 0x00, 0x01, 0x00, 0xaf, 0x96, 0x00, 0x41, 0x3b, 0xd0, 0x00, 0x00,
6626 0x00, 0x00, 0x8d, 0x47, 0x80, 0x32, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0x5f,
6627 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x8c, 0xc0, 0x01, 0x00,
6628 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
6629 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00,
6630 0xbb, 0x96, 0x8c, 0xf8, 0x8e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
6631 0x19, 0x90, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf8, 0x14, 0x30, 0x00, 0x00,
6632 0x00, 0x00, 0x00, 0xf8, 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
6633 0x26, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x2e, 0xf8, 0x0c, 0xb0, 0x01, 0x00,
6634 0x0c, 0x00, 0x2a, 0x4a, 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00,
6635 0xe0, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00,
6636 0xc8, 0x96, 0x20, 0x0a, 0x0c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
6637 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x96, 0xb0, 0x01, 0x00,
6638 0x20, 0x00, 0x20, 0xf0, 0xe4, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x20, 0x4a,
6639 0xe0, 0xb1, 0x01, 0x00, 0x1c, 0x00, 0x20, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
6640 0xb3, 0x96, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00, 0x2c, 0x00, 0x2d, 0x42,
6641 0x19, 0x90, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3, 0x82, 0xb0, 0x01, 0x00,
6642 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00, 0xce, 0x96, 0xa2, 0xa5,
6643 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41, 0x95, 0xb0, 0x01, 0x00,
6644 0xd1, 0x96, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
6645 0x83, 0xb0, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
6646 0x00, 0x00, 0x63, 0x41, 0x97, 0xc0, 0x01, 0x00, 0xd4, 0x00, 0x3e, 0x41,
6647 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00,
6648 0xd6, 0x96, 0xa0, 0xa5, 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
6649 0x83, 0xb0, 0x01, 0x00, 0x2c, 0x00, 0x20, 0x41, 0xe6, 0xb1, 0x01, 0x00,
6650 0xdb, 0x96, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
6651 0x98, 0xdc, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x4c, 0xe4, 0xf5, 0x01, 0x00,
6652 0x00, 0x00, 0x80, 0x40, 0x1f, 0x80, 0x01, 0x00, 0x0b, 0x00, 0x80, 0x00,
6653 0xe4, 0xf5, 0x01, 0x00, 0xd0, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6654 0x04, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
6655 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
6656 0x00, 0x00, 0x60, 0x41, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
6657 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
6658 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
6659 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
6660 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
6661 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00,
6662 0xe7, 0x96, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd0, 0x95, 0x00, 0x40,
6663 0x81, 0x32, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
6664 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
6665 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
6666 0x00, 0x00, 0x00, 0x43, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
6667 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
6668 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
6669 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
6670 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
6671 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00,
6672 0xf6, 0x96, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x40,
6673 0x43, 0x99, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3, 0x84, 0xb0, 0x01, 0x00,
6674 0x01, 0x00, 0x63, 0xf3, 0x96, 0xc8, 0x01, 0x00, 0xfe, 0x96, 0x9f, 0x41,
6675 0x85, 0x50, 0x00, 0x00, 0x01, 0x00, 0x00, 0xa5, 0x85, 0xcc, 0x01, 0x00,
6676 0x2d, 0x00, 0xa0, 0x42, 0xe6, 0xb1, 0x01, 0x00, 0x5e, 0x01, 0x2d, 0x00,
6677 0x80, 0xb0, 0x01, 0x00, 0x03, 0x97, 0x52, 0x43, 0x81, 0x60, 0x00, 0x00,
6678 0x02, 0x00, 0x00, 0xf2, 0x82, 0xf4, 0x01, 0x00, 0x04, 0x97, 0x00, 0x41,
6679 0x80, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x81, 0x90, 0x01, 0x00,
6680 0x00, 0x00, 0x00, 0x5e, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
6681 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x95, 0xb0, 0x00, 0x00,
6682 0x05, 0x97, 0x9e, 0xbb, 0x80, 0x32, 0x00, 0x00, 0x0a, 0x97, 0xa2, 0x40,
6683 0x1f, 0x7c, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6684 0x00, 0x00, 0x80, 0x41, 0x95, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x15,
6685 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x2b, 0xc0, 0x01, 0x00,
6686 0x00, 0x00, 0x00, 0xfc, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
6687 0x38, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3c, 0xb0, 0x01, 0x00,
6688 0x00, 0x00, 0x00, 0xfe, 0x3a, 0xb0, 0x01, 0x00, 0x1f, 0x97, 0x9c, 0x17,
6689 0x80, 0x32, 0x00, 0x00, 0x14, 0x97, 0xa2, 0x4a, 0x19, 0x7c, 0x00, 0x00,
6690 0x00, 0x00, 0x80, 0x4c, 0x1f, 0x90, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x1e,
6691 0x98, 0xf4, 0x01, 0x00, 0x13, 0x97, 0xa2, 0x48, 0x99, 0x6c, 0x00, 0x00,
6692 0x00, 0x00, 0x00, 0x15, 0x42, 0xb1, 0x01, 0x00, 0x13, 0x97, 0xa2, 0x8a,
6693 0xf1, 0x6d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x02, 0xcc, 0x01, 0x00,
6694 0x00, 0x00, 0x00, 0xfc, 0x3e, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x00, 0xf4,
6695 0x28, 0xcc, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
6696 0x1e, 0x97, 0x20, 0xf0, 0x3e, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
6697 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2b, 0xc0, 0x01, 0x00,
6698 0xbf, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0xf3,
6699 0x3a, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x4b, 0x19, 0x90, 0x01, 0x00,
6700 0x07, 0x00, 0x2a, 0x0c, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04,
6701 0xe6, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6702 0x1c, 0x00, 0x2d, 0xf0, 0x16, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x2d, 0xf0,
6703 0x26, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00,
6704 0x00, 0x00, 0xa2, 0x06, 0x14, 0xec, 0x00, 0x00, 0x2b, 0x97, 0x22, 0x45,
6705 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x06, 0x2a, 0xec, 0x00, 0x00,
6706 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
6707 0x96, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x40, 0x81, 0xb2, 0x01, 0x00,
6708 0x00, 0x00, 0x2a, 0x4c, 0xe1, 0xc1, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10,
6709 0x48, 0xc9, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
6710 0x18, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
6711 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
6712 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
6713 0x62, 0xdd, 0x01, 0x00, 0x35, 0x97, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00,
6714 0x00, 0x00, 0x80, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
6715 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x68, 0x01, 0x96, 0xb0, 0x01, 0x00,
6716 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x3b, 0x97, 0x45, 0x42,
6717 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
6718 0x3c, 0x97, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x40,
6719 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
6720 0x00, 0x00, 0x68, 0x01, 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
6721 0xf0, 0xb1, 0x01, 0x00, 0x42, 0x97, 0x45, 0x42, 0x61, 0x31, 0x00, 0x00,
6722 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x43, 0x97, 0xa8, 0x00,
6723 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x40, 0x81, 0xb2, 0x01, 0x00,
6724 0x30, 0x80, 0x00, 0x4a, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
6725 0xf1, 0xb1, 0x01, 0x00, 0xc0, 0xa8, 0x3d, 0x46, 0x0d, 0xe0, 0x01, 0x00,
6726 0xff, 0x7f, 0x00, 0xa1, 0xf0, 0x89, 0x01, 0x00, 0x02, 0x00, 0x00, 0x09,
6727 0x96, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x97, 0xe0, 0x01, 0x00,
6728 0x00, 0x00, 0x60, 0xa8, 0x97, 0xc0, 0x01, 0x00, 0x4d, 0x97, 0x46, 0x42,
6729 0x61, 0x31, 0x00, 0x00, 0x30, 0x00, 0x00, 0x4a, 0x62, 0xc9, 0x01, 0x00,
6730 0x4e, 0x97, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x40,
6731 0x81, 0xb2, 0x01, 0x00, 0x00, 0x99, 0x3f, 0x42, 0x97, 0xf0, 0x01, 0x00,
6732 0x52, 0x97, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00, 0x5a, 0x97, 0x22, 0xf3,
6733 0x74, 0x06, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3, 0x94, 0x88, 0x01, 0x00,
6734 0x00, 0x00, 0x00, 0x07, 0xe7, 0x85, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x55,
6735 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x62, 0xb1, 0x01, 0x00,
6736 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x57, 0x97, 0x00, 0x40,
6737 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x40, 0x81, 0xb2, 0x01, 0x00,
6738 0x00, 0x00, 0x00, 0xa8, 0x36, 0xb0, 0x01, 0x00, 0x6a, 0x97, 0x82, 0x41,
6739 0x23, 0x40, 0x00, 0x00, 0x5f, 0x97, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
6740 0xda, 0x94, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00, 0x20, 0x80, 0x00, 0x10,
6741 0x42, 0xc9, 0x01, 0x00, 0x65, 0x97, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
6742 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
6743 0x62, 0xdd, 0x01, 0x00, 0x62, 0x97, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
6744 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6745 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
6746 0x6a, 0x97, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xe2, 0x95, 0x00, 0x43,
6747 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x23, 0xb0, 0x01, 0x00,
6748 0x6c, 0x97, 0xa3, 0x15, 0x0c, 0x6c, 0x00, 0x00, 0x6d, 0x97, 0x00, 0x06,
6749 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x04, 0xb0, 0x01, 0x00,
6750 0x6f, 0x97, 0x20, 0x02, 0x1a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
6751 0x04, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x0b, 0x96, 0x88, 0x01, 0x00,
6752 0x74, 0x97, 0x26, 0x47, 0x97, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6753 0x97, 0xc0, 0x01, 0x00, 0x74, 0x97, 0x23, 0x4b, 0x04, 0x6c, 0x00, 0x00,
6754 0x00, 0x00, 0x00, 0x4b, 0x04, 0xb0, 0x01, 0x00, 0x33, 0x98, 0x00, 0x05,
6755 0x48, 0x31, 0x01, 0x00, 0x9e, 0x97, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
6756 0x78, 0x97, 0xa2, 0x02, 0x2a, 0x50, 0x00, 0x00, 0x9e, 0x97, 0xa2, 0x45,
6757 0x1f, 0x7c, 0x00, 0x00, 0x7a, 0x97, 0x22, 0x02, 0x0c, 0x50, 0x00, 0x00,
6758 0x83, 0x97, 0x00, 0x02, 0x16, 0xc0, 0x00, 0x00, 0x82, 0x97, 0x22, 0x5c,
6759 0x1f, 0x7c, 0x00, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
6760 0x82, 0x97, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
6761 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6762 0x7e, 0x97, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88,
6763 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
6764 0x24, 0x97, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x9e, 0x97, 0x22, 0x15,
6765 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
6766 0x9d, 0x97, 0xa2, 0x02, 0x1a, 0x50, 0x00, 0x00, 0x8f, 0x97, 0x22, 0x46,
6767 0x1f, 0x7c, 0x00, 0x00, 0x70, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
6768 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x8f, 0x97, 0x22, 0x40,
6769 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
6770 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x8b, 0x97, 0xa8, 0x40,
6771 0x81, 0x32, 0x00, 0x00, 0x1b, 0x84, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
6772 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
6773 0x42, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0, 0x10, 0xc8, 0x01, 0x00,
6774 0x2f, 0x00, 0x2f, 0x5c, 0x11, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
6775 0xe7, 0x91, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40, 0x1b, 0x98, 0x01, 0x00,
6776 0x5c, 0x97, 0x20, 0x15, 0x1a, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03,
6777 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x22, 0x50, 0xf1, 0xb1, 0x01, 0x00,
6778 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08,
6779 0xe0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
6780 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x9a, 0x97, 0xa8, 0x46,
6781 0x1f, 0x10, 0x00, 0x00, 0x5c, 0x97, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
6782 0x5c, 0x97, 0x00, 0x02, 0x10, 0xc0, 0x00, 0x00, 0xa0, 0x97, 0xa2, 0x44,
6783 0x1f, 0x7c, 0x00, 0x00, 0xda, 0x94, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00,
6784 0x00, 0x00, 0x00, 0x1b, 0x10, 0xb1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
6785 0x44, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
6786 0x10, 0x00, 0x00, 0x08, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
6787 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03, 0xe0, 0xc9, 0x01, 0x00,
6788 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
6789 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5c, 0x1f, 0x90, 0x00, 0x00,
6790 0xa7, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x17, 0x00, 0x00, 0xd0,
6791 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x27, 0xec, 0x00, 0x00,
6792 0x00, 0x00, 0x00, 0x20, 0x00, 0xb0, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x41,
6793 0xa3, 0x41, 0x01, 0x00, 0xab, 0x97, 0x00, 0x41, 0x27, 0xd0, 0x00, 0x00,
6794 0x10, 0x00, 0x00, 0x07, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
6795 0x80, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00,
6796 0x00, 0x80, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
6797 0x81, 0xb2, 0x00, 0x00, 0xb2, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6798 0x04, 0x98, 0x00, 0x40, 0x2b, 0x30, 0x01, 0x00, 0xac, 0x00, 0x2d, 0x06,
6799 0x16, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0, 0x16, 0xc4, 0x01, 0x00,
6800 0xba, 0x97, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6801 0x17, 0xc0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
6802 0x00, 0x00, 0x6c, 0xf0, 0x30, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x2d, 0x40,
6803 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xf0, 0x28, 0xb0, 0x01, 0x00,
6804 0xc3, 0x97, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x43,
6805 0x86, 0xc8, 0x01, 0x00, 0x00, 0x30, 0x00, 0x0b, 0x16, 0xc8, 0x01, 0x00,
6806 0xc3, 0x97, 0xa4, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6807 0x17, 0xc0, 0x01, 0x00, 0xe4, 0x97, 0x22, 0x06, 0x80, 0x32, 0x00, 0x00,
6808 0xd0, 0x97, 0xa2, 0x06, 0x14, 0x6c, 0x00, 0x00, 0xcd, 0x97, 0x22, 0x48,
6809 0x19, 0x7c, 0x00, 0x00, 0xc8, 0x97, 0xa0, 0x41, 0x17, 0x40, 0x00, 0x00,
6810 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
6811 0x31, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x20, 0x18, 0xe0, 0xb1, 0x01, 0x00,
6812 0x8b, 0x00, 0x2d, 0x48, 0x19, 0x80, 0x01, 0x00, 0x8b, 0x00, 0x20, 0x45,
6813 0xe7, 0x91, 0x01, 0x00, 0xd0, 0x97, 0x00, 0x40, 0x87, 0x90, 0x00, 0x00,
6814 0x08, 0x00, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00, 0xd0, 0x97, 0xa0, 0x48,
6815 0x17, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
6816 0xb0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x10, 0x50, 0x00, 0x43,
6817 0xfc, 0xc9, 0x01, 0x00, 0x3b, 0x98, 0x00, 0x30, 0x81, 0x30, 0x01, 0x00,
6818 0x00, 0x00, 0x00, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0xdb, 0x97, 0x22, 0x4a,
6819 0x19, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
6820 0xcc, 0x00, 0x2d, 0xab, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
6821 0x17, 0xc0, 0x01, 0x00, 0xda, 0x97, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00,
6822 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0xdf, 0x97, 0x64, 0xf0,
6823 0x82, 0xb0, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
6824 0xdf, 0x97, 0xa2, 0xf2, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6825 0xe5, 0xb1, 0x01, 0x00, 0x8c, 0x00, 0x20, 0x18, 0xe0, 0xb1, 0x01, 0x00,
6826 0x90, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x60, 0x06,
6827 0x30, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x86, 0x0c, 0x80, 0xb2, 0x00, 0x00,
6828 0xbc, 0x00, 0x2d, 0x46, 0x19, 0x90, 0x01, 0x00, 0xa0, 0x00, 0xa0, 0xf2,
6829 0xe4, 0xb1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6830 0x10, 0x50, 0x00, 0x43, 0xfc, 0xc9, 0x01, 0x00, 0x3b, 0x98, 0x00, 0x30,
6831 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x4a, 0x19, 0xfc, 0x00, 0x00,
6832 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0xab,
6833 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab, 0x17, 0xc0, 0x01, 0x00,
6834 0xed, 0x97, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
6835 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xe4, 0xf0, 0x82, 0xb0, 0x01, 0x00,
6836 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
6837 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
6838 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
6839 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x1b, 0xe0, 0xb1, 0x00, 0x00,
6840 0xf2, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0c,
6841 0x7e, 0x89, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x4c, 0x95, 0x60, 0x01, 0x00,
6842 0x00, 0x00, 0x80, 0x4a, 0x18, 0x94, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
6843 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x01, 0xf0, 0x31, 0x00, 0x00,
6844 0x20, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
6845 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
6846 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x15,
6847 0xe0, 0xb1, 0x00, 0x00, 0xfd, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6848 0x10, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
6849 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xb1, 0x01, 0x00,
6850 0x00, 0x00, 0xe8, 0x5f, 0x17, 0x90, 0x01, 0x00, 0x70, 0x00, 0x00, 0x40,
6851 0x43, 0x99, 0x01, 0x00, 0x7a, 0x01, 0x2e, 0xfe, 0x92, 0xb0, 0x01, 0x00,
6852 0x8b, 0x00, 0x2d, 0xf6, 0x16, 0xb0, 0x01, 0x00, 0x0a, 0x98, 0x22, 0x43,
6853 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00,
6854 0x04, 0x00, 0x00, 0xa6, 0x2a, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x6e, 0x06,
6855 0x82, 0xc8, 0x01, 0x00, 0x0e, 0x98, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00,
6856 0x00, 0x00, 0x00, 0x42, 0x45, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x6e, 0x4c,
6857 0x83, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x92, 0xc0, 0x01, 0x00,
6858 0x0f, 0x98, 0x42, 0x30, 0x3d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x66, 0x9e,
6859 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x41, 0x3d, 0xc3, 0x01, 0x00,
6860 0x00, 0x00, 0x00, 0x41, 0x92, 0xc0, 0x01, 0x00, 0x06, 0x00, 0x00, 0xa2,
6861 0x44, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x49, 0x98, 0xf4, 0x01, 0x00,
6862 0x18, 0x98, 0x26, 0x30, 0x93, 0x04, 0x00, 0x00, 0x18, 0x98, 0x90, 0x4c,
6863 0x92, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00,
6864 0xff, 0xff, 0x80, 0x49, 0xec, 0xa9, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
6865 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x01, 0xf0, 0x31, 0x00, 0x00,
6866 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
6867 0xf0, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
6868 0x00, 0x00, 0xa8, 0x15, 0xe0, 0xb1, 0x00, 0x00, 0x1d, 0x98, 0x00, 0x40,
6869 0x81, 0xb2, 0x00, 0x00, 0x2a, 0x98, 0x22, 0x5f, 0x81, 0x7c, 0x00, 0x00,
6870 0x29, 0x98, 0xa2, 0x40, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
6871 0x19, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00,
6872 0x10, 0x00, 0x00, 0x07, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
6873 0x97, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
6874 0x29, 0x98, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x26, 0x98, 0x00, 0x40,
6875 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x21, 0x81, 0x84, 0x00, 0x00,
6876 0x2d, 0x98, 0xa2, 0x5f, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x43,
6877 0x19, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x19, 0x90, 0x01, 0x00,
6878 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
6879 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x96, 0x94, 0x01, 0x00,
6880 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
6881 0x81, 0xb2, 0x00, 0x00, 0x30, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6882 0x00, 0x80, 0x00, 0x19, 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x02,
6883 0xf0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xf0, 0xb1, 0x01, 0x00,
6884 0x00, 0x00, 0x00, 0x13, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
6885 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
6886 0x00, 0x00, 0xa8, 0x08, 0xe0, 0xb1, 0x00, 0x00, 0x38, 0x98, 0x00, 0x40,
6887 0x81, 0xb2, 0x00, 0x00, 0x7c, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
6888 0x02, 0x00, 0x00, 0xf0, 0x98, 0xf4, 0x01, 0x00, 0x41, 0x98, 0x20, 0x4c,
6889 0x84, 0x6c, 0x00, 0x00, 0x88, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6890 0x41, 0x98, 0x20, 0xf2, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
6891 0x85, 0xb0, 0x01, 0x00, 0x98, 0x00, 0x2d, 0x14, 0x82, 0xb0, 0x01, 0x00,
6892 0x00, 0x00, 0x00, 0xf0, 0x98, 0xb0, 0x01, 0x00, 0xa3, 0x00, 0x2d, 0x14,
6893 0x98, 0xd0, 0x01, 0x00, 0x46, 0x98, 0x20, 0x4c, 0x84, 0x6c, 0x00, 0x00,
6894 0x00, 0x00, 0x00, 0x4c, 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
6895 0x80, 0xe0, 0x01, 0x00, 0x49, 0x98, 0x23, 0x40, 0x84, 0x6c, 0x00, 0x00,
6896 0x00, 0x00, 0x00, 0x40, 0x84, 0xb0, 0x01, 0x00, 0xd0, 0x00, 0x20, 0x14,
6897 0xe0, 0xb1, 0x01, 0x00, 0x98, 0x00, 0x25, 0x42, 0x80, 0xb0, 0x01, 0x00,
6898 0x00, 0x00, 0x6e, 0xf3, 0x80, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x42,
6899 0x82, 0xc0, 0x00, 0x00, 0x4f, 0x98, 0xa0, 0x40, 0x16, 0x40, 0x00, 0x00,
6900 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0xf0,
6901 0x82, 0xec, 0x00, 0x00, 0x98, 0x00, 0xa0, 0x41, 0xe0, 0xb1, 0x01, 0x00,
6902 0x52, 0x98, 0x00, 0x12, 0x10, 0xc9, 0x00, 0x00, 0x00, 0x48, 0x80, 0x40,
6903 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x49, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6904 0x80, 0x4b, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x4d, 0x80, 0x40,
6905 0x0b, 0x98, 0x01, 0x00, 0x00, 0x4f, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6906 0xc0, 0x50, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x52, 0x80, 0x40,
6907 0x0b, 0x98, 0x01, 0x00, 0x40, 0x54, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6908 0x00, 0x56, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x57, 0x80, 0x40,
6909 0x0b, 0x98, 0x01, 0x00, 0x80, 0x59, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6910 0x40, 0x5b, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x5d, 0x80, 0x40,
6911 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x5e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6912 0x80, 0x60, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x62, 0x80, 0x40,
6913 0x0b, 0x98, 0x01, 0x00, 0x00, 0x64, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6914 0xc0, 0x65, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x67, 0x80, 0x40,
6915 0x0b, 0x98, 0x01, 0x00, 0x40, 0x69, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6916 0x00, 0x6b, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x6c, 0x80, 0x40,
6917 0x0b, 0x98, 0x01, 0x00, 0x80, 0x6e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6918 0x40, 0x70, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x72, 0x80, 0x40,
6919 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x73, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6920 0x80, 0x75, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x77, 0x80, 0x40,
6921 0x0b, 0x98, 0x01, 0x00, 0x00, 0x79, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6922 0xc0, 0x7a, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x7c, 0x80, 0x40,
6923 0x0b, 0x98, 0x01, 0x00, 0x40, 0x7e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
6924 0x72, 0x98, 0x43, 0x57, 0x61, 0x31, 0x00, 0x00, 0x7e, 0x98, 0xa2, 0x57,
6925 0x73, 0x7d, 0x00, 0x00, 0x7e, 0x98, 0xa2, 0x40, 0x81, 0x6f, 0x00, 0x00,
6926 0x00, 0x00, 0x00, 0x48, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x10, 0x00, 0x4a,
6927 0x62, 0xdd, 0x01, 0x00, 0x76, 0x98, 0xa8, 0x4a, 0x80, 0x33, 0x00, 0x00,
6928 0x7b, 0x98, 0x22, 0x5f, 0x95, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
6929 0x62, 0xb1, 0x01, 0x00, 0x79, 0x98, 0xa8, 0x4b, 0xac, 0x33, 0x00, 0x00,
6930 0x00, 0x00, 0x1b, 0xa5, 0x82, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xbe,
6931 0x83, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
6932 0x00, 0x10, 0x00, 0x4a, 0x62, 0xdd, 0x01, 0x00, 0x82, 0x98, 0x28, 0x40,
6933 0x81, 0x32, 0x00, 0x00, 0x7e, 0x98, 0x22, 0x57, 0x77, 0x7d, 0x00, 0x00,
6934 0x00, 0x00, 0x9b, 0x20, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
6935 0x62, 0xb1, 0x01, 0x00, 0x82, 0x98, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
6936 0x00, 0x00, 0x9b, 0x40, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
6937 0x48, 0xb1, 0x01, 0x00, 0xa8, 0x01, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
6938 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
6939 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x60, 0xa7, 0x97, 0xc0, 0x01, 0x00,
6940 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
6941 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6942 0xa8, 0x00, 0x2d, 0x1c, 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0xf0,
6943 0x8a, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x8b, 0xec, 0x00, 0x00,
6944 0x8a, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x40,
6945 0x47, 0x99, 0x01, 0x00, 0xa4, 0x00, 0x2d, 0x45, 0xe0, 0xd1, 0x01, 0x00,
6946 0x97, 0x98, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00, 0xbe, 0x00, 0x2f, 0xab,
6947 0x83, 0xb0, 0x01, 0x00, 0xff, 0x98, 0x00, 0x14, 0x82, 0x50, 0x01, 0x00,
6948 0x9c, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x9c, 0x98, 0x22, 0xf2,
6949 0x82, 0x30, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
6950 0x9c, 0x98, 0x9f, 0x1c, 0xe0, 0x6d, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x40,
6951 0x47, 0x99, 0x01, 0x00, 0xff, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
6952 0xa8, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00, 0x9c, 0x00, 0x2d, 0x30,
6953 0x81, 0xb0, 0x01, 0x00, 0x88, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
6954 0x94, 0x00, 0x2d, 0xf2, 0x86, 0xb0, 0x01, 0x00, 0xc6, 0x98, 0x23, 0xf0,
6955 0x84, 0x6c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x42, 0x88, 0xf4, 0x01, 0x00,
6956 0xc6, 0x98, 0x20, 0x50, 0x89, 0x6c, 0x00, 0x00, 0xb5, 0x98, 0xa3, 0x92,
6957 0x87, 0x6c, 0x00, 0x00, 0xa5, 0x98, 0x00, 0x44, 0x10, 0xc9, 0x00, 0x00,
6958 0xc6, 0x98, 0x00, 0x0a, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x09,
6959 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x08, 0x87, 0xb0, 0x00, 0x00,
6960 0xc6, 0x98, 0x00, 0x07, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x07,
6961 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x07, 0x87, 0xb0, 0x00, 0x00,
6962 0xc6, 0x98, 0x00, 0x06, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x06,
6963 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x06, 0x87, 0xb0, 0x00, 0x00,
6964 0xc6, 0x98, 0x00, 0x06, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x06,
6965 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x05, 0x87, 0xb0, 0x00, 0x00,
6966 0xc6, 0x98, 0x00, 0x05, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x05,
6967 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x05, 0x87, 0xb0, 0x00, 0x00,
6968 0xc6, 0x98, 0x00, 0x05, 0x87, 0xb0, 0x00, 0x00, 0xb6, 0x98, 0x00, 0x44,
6969 0x10, 0xc9, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0f, 0x87, 0xb0, 0x00, 0x00,
6970 0xc6, 0x98, 0x00, 0x0e, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0d,
6971 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0c, 0x87, 0xb0, 0x00, 0x00,
6972 0xc6, 0x98, 0x00, 0x0c, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0c,
6973 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0c, 0x87, 0xb0, 0x00, 0x00,
6974 0xc6, 0x98, 0x00, 0x0c, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0c,
6975 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0b, 0x87, 0xb0, 0x00, 0x00,
6976 0xc6, 0x98, 0x00, 0x0b, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0b,
6977 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0b, 0x87, 0xb0, 0x00, 0x00,
6978 0xc6, 0x98, 0x00, 0x0b, 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0b,
6979 0x87, 0xb0, 0x00, 0x00, 0xc6, 0x98, 0x00, 0x0b, 0x87, 0xb0, 0x00, 0x00,
6980 0xbf, 0x00, 0x2d, 0x43, 0x84, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf3,
6981 0x80, 0xe0, 0x01, 0x00, 0xcb, 0x98, 0x23, 0x40, 0x84, 0x6c, 0x00, 0x00,
6982 0x94, 0x00, 0x20, 0x9d, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
6983 0x84, 0xb0, 0x01, 0x00, 0xcf, 0x98, 0xa2, 0xf0, 0x38, 0x6c, 0x00, 0x00,
6984 0x9c, 0x00, 0x20, 0x42, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
6985 0x13, 0x94, 0x01, 0x00, 0x00, 0x00, 0x80, 0x46, 0x19, 0x80, 0x01, 0x00,
6986 0x9c, 0x00, 0x20, 0x42, 0xe0, 0xb1, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40,
6987 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x80, 0xf4, 0x01, 0x00,
6988 0x0f, 0x00, 0x00, 0xf3, 0x82, 0x88, 0x01, 0x00, 0xd5, 0x98, 0x23, 0x41,
6989 0x80, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x13, 0x94, 0x01, 0x00,
6990 0x00, 0x00, 0x89, 0x0c, 0x80, 0xb2, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x40,
6991 0x43, 0x99, 0x01, 0x00, 0xa0, 0x00, 0xa0, 0xf2, 0xe4, 0xb1, 0x01, 0x00,
6992 0x00, 0x00, 0x9f, 0x41, 0x24, 0xec, 0x00, 0x00, 0xdf, 0x98, 0xa6, 0x40,
6993 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x42, 0x38, 0xec, 0x00, 0x00,
6994 0xdf, 0x98, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x40,
6995 0x43, 0x99, 0x01, 0x00, 0xe1, 0x98, 0xa3, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
6996 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x40,
6997 0x43, 0x99, 0x01, 0x00, 0xe5, 0x98, 0x22, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
6998 0xb4, 0x00, 0x20, 0x1d, 0xe0, 0xb1, 0x01, 0x00, 0x80, 0x00, 0x2d, 0x5f,
6999 0x13, 0x94, 0x01, 0x00, 0xe5, 0x98, 0x23, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
7000 0x80, 0x00, 0x20, 0x1d, 0xe0, 0xb1, 0x01, 0x00, 0xc0, 0x00, 0x20, 0x12,
7001 0xe0, 0xb1, 0x01, 0x00, 0xc4, 0x00, 0xa0, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
7002 0x00, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
7003 0xe0, 0xb1, 0x01, 0x00, 0x12, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
7004 0xee, 0x98, 0x9f, 0x41, 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
7005 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x12, 0x8c, 0xd0, 0x01, 0x00,
7006 0xef, 0x98, 0x00, 0x41, 0x24, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
7007 0x8d, 0xb0, 0x01, 0x00, 0x3d, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
7008 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
7009 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
7010 0xf1, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xbf, 0x95, 0x00, 0x40,
7011 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x08, 0x80, 0x32, 0x01, 0x00,
7012 0xf8, 0x98, 0xa2, 0x40, 0x95, 0x6c, 0x00, 0x00, 0xcc, 0x95, 0x00, 0x40,
7013 0x81, 0x32, 0x01, 0x00, 0x00, 0x82, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00,
7014 0xa0, 0x98, 0x2f, 0x40, 0x11, 0xb0, 0x01, 0x00, 0xe3, 0x89, 0x00, 0x41,
7015 0x89, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf8, 0x3e, 0xec, 0x00, 0x00,
7016 0x00, 0x00, 0x9f, 0x12, 0xe0, 0xed, 0x00, 0x00, 0xc8, 0x00, 0x20, 0xab,
7017 0xe1, 0xb1, 0x01, 0x00, 0xcc, 0x00, 0xa0, 0x1f, 0xe0, 0xb1, 0x01, 0x00,
7018 0x01, 0x99, 0xa3, 0x5f, 0xe7, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
7019 0xe7, 0xc1, 0x01, 0x00, 0xa6, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
7020 0x15, 0x99, 0x22, 0xf2, 0x86, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x43,
7021 0x84, 0xf4, 0x01, 0x00, 0x01, 0x00, 0x00, 0x41, 0x80, 0xcc, 0x01, 0x00,
7022 0xb8, 0x00, 0x2d, 0x42, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x62, 0x40,
7023 0x86, 0xc0, 0x01, 0x00, 0x09, 0x99, 0x1f, 0x43, 0x80, 0x32, 0x00, 0x00,
7024 0x0a, 0x99, 0xa2, 0x40, 0x87, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x62, 0x41,
7025 0x87, 0xb0, 0x01, 0x00, 0x0e, 0x99, 0x9f, 0x40, 0x80, 0x32, 0x00, 0x00,
7026 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7027 0x84, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x80, 0xb0, 0x01, 0x00,
7028 0x00, 0x00, 0x00, 0xf2, 0x88, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x44,
7029 0x84, 0xf4, 0x01, 0x00, 0xb8, 0x00, 0x2e, 0x42, 0x80, 0xd0, 0x01, 0x00,
7030 0x00, 0x00, 0x62, 0x40, 0x88, 0xc0, 0x01, 0x00, 0x14, 0x99, 0x1f, 0x44,
7031 0x80, 0x32, 0x00, 0x00, 0x18, 0x99, 0xa2, 0x40, 0x89, 0x6c, 0x00, 0x00,
7032 0x18, 0x99, 0x62, 0x41, 0x89, 0xb0, 0x00, 0x00, 0x03, 0x00, 0x62, 0x41,
7033 0x86, 0xe4, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
7034 0x01, 0x00, 0x62, 0x41, 0x88, 0xe4, 0x01, 0x00, 0xa4, 0x00, 0x20, 0x40,
7035 0xe5, 0xb1, 0x01, 0x00, 0xa2, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
7036 0xbc, 0x00, 0x2e, 0x43, 0x87, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
7037 0x86, 0xc0, 0x01, 0x00, 0x1e, 0x99, 0x20, 0x43, 0x87, 0x6c, 0x00, 0x00,
7038 0x00, 0x00, 0x80, 0x43, 0xe5, 0xb1, 0x01, 0x00, 0x40, 0x01, 0x00, 0x43,
7039 0x80, 0xce, 0x01, 0x00, 0x00, 0x00, 0xa4, 0x43, 0xe4, 0x31, 0x01, 0x00,
7040 0x40, 0x01, 0xe2, 0x40, 0x87, 0x98, 0x01, 0x00, 0x88, 0x00, 0x2d, 0x44,
7041 0x81, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf2, 0x2e, 0xb0, 0x01, 0x00,
7042 0x9c, 0x00, 0x2d, 0xf0, 0x86, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0,
7043 0x82, 0xb0, 0x01, 0x00, 0xba, 0x00, 0x2d, 0xf0, 0x98, 0xb0, 0x01, 0x00,
7044 0x2b, 0x99, 0xa2, 0x12, 0x98, 0x6c, 0x00, 0x00, 0xbc, 0x00, 0x2d, 0xf2,
7045 0x98, 0xb0, 0x01, 0x00, 0x2b, 0x99, 0xa0, 0xf2, 0x98, 0x6c, 0x00, 0x00,
7046 0x00, 0x00, 0x00, 0x17, 0x82, 0xb0, 0x01, 0x00, 0x9c, 0x00, 0x20, 0x41,
7047 0xe0, 0xb1, 0x01, 0x00, 0xb4, 0x00, 0x2d, 0x12, 0x86, 0xd0, 0x01, 0x00,
7048 0x2e, 0x99, 0xa3, 0x41, 0xe0, 0x6d, 0x00, 0x00, 0x2f, 0x99, 0x00, 0xf0,
7049 0x84, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0xb0, 0x01, 0x00,
7050 0x80, 0x00, 0x2d, 0x43, 0x84, 0xd0, 0x01, 0x00, 0x32, 0x99, 0x9f, 0x42,
7051 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00,
7052 0x34, 0x99, 0xa3, 0x42, 0x14, 0x6c, 0x00, 0x00, 0x35, 0x99, 0x00, 0x0a,
7053 0x0c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x0c, 0xb0, 0x01, 0x00,
7054 0x37, 0x99, 0xa0, 0x17, 0x0c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x17,
7055 0x0c, 0xb0, 0x01, 0x00, 0x3c, 0x99, 0x22, 0x40, 0x0d, 0x6c, 0x00, 0x00,
7056 0x00, 0x00, 0xa0, 0x0a, 0x0c, 0xec, 0x00, 0x00, 0x01, 0x00, 0x00, 0xf0,
7057 0x82, 0xf4, 0x01, 0x00, 0x3c, 0x99, 0xa0, 0x41, 0x0c, 0x6c, 0x00, 0x00,
7058 0x00, 0x00, 0xa2, 0xf0, 0x80, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
7059 0x81, 0xb0, 0x01, 0x00, 0xd0, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
7060 0x04, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
7061 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
7062 0x00, 0x00, 0x60, 0x41, 0x87, 0x94, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
7063 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
7064 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
7065 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
7066 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
7067 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00,
7068 0x48, 0x99, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x4b,
7069 0x19, 0x90, 0x01, 0x00, 0x05, 0x00, 0x2a, 0x0c, 0xe4, 0xb1, 0x01, 0x00,
7070 0x00, 0x00, 0x80, 0x04, 0xe6, 0xb1, 0x01, 0x00, 0x52, 0x99, 0x22, 0x49,
7071 0x1f, 0x7c, 0x00, 0x00, 0x42, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
7072 0x00, 0x00, 0x00, 0x49, 0x1f, 0x80, 0x01, 0x00, 0xaa, 0x97, 0x00, 0x40,
7073 0x8d, 0xb0, 0x00, 0x00, 0x58, 0x99, 0x22, 0x40, 0xaf, 0x6f, 0x00, 0x00,
7074 0x00, 0x00, 0x00, 0x15, 0x96, 0xb0, 0x01, 0x00, 0x72, 0x98, 0x00, 0x08,
7075 0x94, 0x30, 0x01, 0x00, 0x57, 0x99, 0x22, 0x40, 0x97, 0x6c, 0x00, 0x00,
7076 0xaa, 0x97, 0x00, 0x46, 0x87, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
7077 0x87, 0xb0, 0x01, 0x00, 0x58, 0x99, 0x43, 0x48, 0x61, 0x31, 0x00, 0x00,
7078 0x00, 0x10, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00, 0x5d, 0x99, 0x28, 0x40,
7079 0x87, 0x30, 0x00, 0x00, 0x59, 0x99, 0x22, 0x48, 0x77, 0x7d, 0x00, 0x00,
7080 0xaa, 0x97, 0x1b, 0x46, 0x87, 0xb0, 0x00, 0x00, 0x60, 0x99, 0x22, 0x5f,
7081 0x11, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x15, 0x62, 0x31, 0x00, 0x00,
7082 0x5e, 0x99, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x40,
7083 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
7084 0x30, 0x00, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7085 0x93, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0xb0, 0x01, 0x00,
7086 0xb1, 0x99, 0x00, 0x49, 0x96, 0x30, 0x01, 0x00, 0x07, 0x00, 0x00, 0x49,
7087 0x06, 0xe4, 0x01, 0x00, 0x00, 0x39, 0x00, 0x03, 0x06, 0xc8, 0x01, 0x00,
7088 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xd0,
7089 0xa0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00,
7090 0x65, 0x99, 0xa0, 0x54, 0x93, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x05,
7091 0x97, 0xb0, 0x01, 0x00, 0x00, 0x48, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
7092 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xc0, 0x01, 0x00, 0xa2,
7093 0x44, 0xc9, 0x01, 0x00, 0x6e, 0x99, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
7094 0x00, 0x00, 0x00, 0x20, 0x49, 0xb3, 0x01, 0x00, 0xb6, 0x99, 0x00, 0x40,
7095 0x49, 0x31, 0x01, 0x00, 0x00, 0xb5, 0x2e, 0x08, 0x97, 0xb0, 0x01, 0x00,
7096 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x74, 0x99, 0xa2, 0x41,
7097 0x97, 0x50, 0x00, 0x00, 0x18, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
7098 0x00, 0x97, 0x2e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7099 0xf1, 0xb1, 0x01, 0x00, 0x78, 0x99, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
7100 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x40, 0x18, 0x2e, 0x05,
7101 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
7102 0x7c, 0x99, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x57, 0x95, 0x20, 0x40,
7103 0xe7, 0xb1, 0x01, 0x00, 0x30, 0x94, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
7104 0x64, 0x00, 0x00, 0x40, 0xe5, 0x99, 0x01, 0x00, 0x56, 0x95, 0x20, 0x40,
7105 0xe7, 0xb1, 0x01, 0x00, 0xb8, 0x94, 0x20, 0x41, 0xe5, 0xb1, 0x01, 0x00,
7106 0xba, 0x94, 0x20, 0x41, 0xe5, 0xb1, 0x01, 0x00, 0x98, 0x94, 0x00, 0x40,
7107 0x45, 0x99, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
7108 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x86, 0x99, 0xa2, 0x41,
7109 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00,
7110 0x00, 0x00, 0x00, 0x40, 0x6f, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
7111 0x68, 0xb1, 0x01, 0x00, 0x8a, 0x99, 0x85, 0x41, 0x97, 0x40, 0x00, 0x00,
7112 0xc3, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7113 0x39, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x37, 0xb3, 0x01, 0x00,
7114 0x00, 0x00, 0x00, 0x40, 0x35, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7115 0x33, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x41, 0xb3, 0x01, 0x00,
7116 0x00, 0x00, 0x00, 0x40, 0x3f, 0xb3, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x40,
7117 0x29, 0x9b, 0x01, 0x00, 0xee, 0x05, 0x00, 0x40, 0x25, 0x9b, 0x01, 0x00,
7118 0x42, 0x00, 0x00, 0x40, 0x4b, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7119 0x2f, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2d, 0xb3, 0x01, 0x00,
7120 0x00, 0x00, 0x00, 0x40, 0x47, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7121 0x43, 0xb3, 0x01, 0x00, 0x60, 0x00, 0x00, 0x40, 0x2b, 0x9b, 0x01, 0x00,
7122 0x00, 0x00, 0x00, 0x54, 0xef, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55,
7123 0xf1, 0x93, 0x01, 0x00, 0xff, 0xff, 0x00, 0xa5, 0x3c, 0x8b, 0x01, 0x00,
7124 0x00, 0x00, 0x00, 0x2c, 0x5b, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c,
7125 0x45, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x59, 0xb3, 0x01, 0x00,
7126 0x00, 0x00, 0x00, 0x40, 0x57, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7127 0x27, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x53, 0xb3, 0x01, 0x00,
7128 0xa7, 0x99, 0xa2, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0xa7, 0x99, 0xa2, 0x51,
7129 0xfd, 0x7f, 0x00, 0x00, 0xa8, 0x99, 0x00, 0x40, 0x1d, 0xb3, 0x00, 0x00,
7130 0x50, 0x46, 0x00, 0x40, 0x1d, 0x9b, 0x01, 0x00, 0x00, 0xc0, 0x00, 0xa6,
7131 0x88, 0xb3, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xa6, 0x3a, 0xb3, 0x01, 0x00,
7132 0x00, 0xc0, 0x00, 0x9d, 0x3b, 0x9b, 0x01, 0x00, 0xb4, 0x05, 0x00, 0x40,
7133 0x23, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4d, 0xb3, 0x01, 0x00,
7134 0x08, 0x0a, 0x00, 0xa6, 0x14, 0xb3, 0x01, 0x00, 0x01, 0x01, 0x00, 0x8a,
7135 0x15, 0x9b, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa6, 0x56, 0xb1, 0x01, 0x00,
7136 0x00, 0x00, 0x80, 0x5e, 0x57, 0xb5, 0x01, 0x00, 0x18, 0x00, 0x00, 0x4b,
7137 0x20, 0xe4, 0x01, 0x00, 0x06, 0x00, 0x00, 0x4b, 0x96, 0xe4, 0x01, 0x00,
7138 0x00, 0x43, 0x00, 0x4b, 0x96, 0xc8, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10,
7139 0x20, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4b, 0x20, 0x94, 0x01, 0x00,
7140 0x00, 0x99, 0x2e, 0x0a, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7141 0xf1, 0xb1, 0x01, 0x00, 0xb7, 0x99, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
7142 0x00, 0x03, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x40,
7143 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
7144 0xbb, 0x99, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40,
7145 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00,
7146 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0xbf, 0x99, 0xa8, 0x40,
7147 0x81, 0x32, 0x00, 0x00, 0xbf, 0x99, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
7148 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7149 0x87, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00,
7150 0x00, 0x00, 0x00, 0x4b, 0x80, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6,
7151 0x82, 0xb1, 0x01, 0x00, 0xc5, 0x99, 0x85, 0x41, 0x97, 0x40, 0x00, 0x00,
7152 0x00, 0x00, 0x00, 0x40, 0x97, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7153 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x90, 0xb1, 0x01, 0x00,
7154 0x01, 0x00, 0x00, 0xa6, 0x92, 0xb1, 0x01, 0x00, 0xca, 0x99, 0x85, 0x41,
7155 0x97, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
7156 0xce, 0x99, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
7157 0x80, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x9c, 0x4b, 0x82, 0x89, 0x01, 0x00,
7158 0xd1, 0x99, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a,
7159 0x80, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x9c, 0xa6, 0x82, 0xb1, 0x01, 0x00,
7160 0xd4, 0x99, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b,
7161 0x84, 0x89, 0x01, 0x00, 0x00, 0x00, 0x9c, 0xc2, 0x24, 0xb0, 0x01, 0x00,
7162 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x80, 0x4b,
7163 0x92, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00,
7164 0x01, 0x00, 0x80, 0xa6, 0x92, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4b,
7165 0x94, 0x89, 0x01, 0x00, 0x00, 0x00, 0x80, 0xca, 0x94, 0xb0, 0x01, 0x00,
7166 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7167 0x81, 0xb0, 0x01, 0x00, 0xdf, 0x99, 0x80, 0xa5, 0x80, 0x32, 0x00, 0x00,
7168 0xe0, 0x99, 0x00, 0xa5, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
7169 0x81, 0xc0, 0x01, 0x00, 0xe1, 0x99, 0x80, 0xa5, 0x80, 0x32, 0x00, 0x00,
7170 0x80, 0x01, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0xea, 0x99, 0x20, 0x4f,
7171 0x81, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
7172 0xea, 0x99, 0x20, 0x4b, 0x81, 0x6c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40,
7173 0x83, 0x98, 0x01, 0x00, 0xea, 0x99, 0x20, 0x47, 0x81, 0x6c, 0x00, 0x00,
7174 0x00, 0x00, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
7175 0x82, 0xdc, 0x01, 0x00, 0x03, 0x90, 0x00, 0x41, 0x20, 0x99, 0x01, 0x00,
7176 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x14, 0x2f, 0x4c,
7177 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
7178 0xee, 0x99, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x64, 0x00, 0x00, 0xa5,
7179 0x80, 0xc8, 0x01, 0x00, 0xf1, 0x99, 0xa2, 0xa5, 0x80, 0x6c, 0x00, 0x00,
7180 0x20, 0x00, 0x00, 0x90, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
7181 0x23, 0x91, 0x01, 0x00, 0xf4, 0x99, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
7182 0x30, 0x00, 0x00, 0x90, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
7183 0x23, 0x91, 0x01, 0x00, 0xf7, 0x99, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
7184 0x70, 0x00, 0x00, 0x90, 0x20, 0xa9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
7185 0x23, 0x91, 0x01, 0x00, 0xfa, 0x99, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
7186 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00, 0xfc, 0x99, 0x1f, 0x91,
7187 0x80, 0x32, 0x00, 0x00, 0x40, 0x68, 0x00, 0x90, 0x20, 0xa9, 0x01, 0x00,
7188 0xe0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x21, 0x00, 0x00, 0x40,
7189 0x61, 0x99, 0x01, 0x00, 0x22, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
7190 0x23, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40,
7191 0x61, 0x99, 0x01, 0x00, 0x25, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
7192 0x26, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x27, 0x00, 0x00, 0x40,
7193 0x61, 0x99, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
7194 0xd0, 0x14, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
7195 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
7196 0x30, 0x03, 0x00, 0x40, 0x85, 0x30, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40,
7197 0x45, 0x99, 0x01, 0x00, 0x02, 0x01, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00,
7198 0x04, 0x03, 0x00, 0x40, 0x80, 0x98, 0x01, 0x00, 0x06, 0x05, 0x00, 0xa6,
7199 0x82, 0xb0, 0x01, 0x00, 0x08, 0x07, 0x00, 0x41, 0x82, 0x98, 0x01, 0x00,
7200 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
7201 0xe0, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x85, 0x98, 0x01, 0x00,
7202 0x30, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x39, 0x03, 0x00, 0x40,
7203 0x81, 0x32, 0x01, 0x00, 0xd8, 0x14, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
7204 0xff, 0x02, 0xa2, 0xf8, 0x80, 0x6c, 0x00, 0x00, 0x00, 0x03, 0x22, 0xf0,
7205 0x82, 0x6c, 0x00, 0x00, 0xff, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7206 0xd0, 0x14, 0x2e, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
7207 0xa3, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc1, 0xb3, 0x01, 0x00,
7208 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0x1e, 0x9a, 0x00, 0x40,
7209 0x10, 0xc9, 0x00, 0x00, 0x24, 0x9a, 0x00, 0x05, 0x81, 0xb0, 0x00, 0x00,
7210 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2c, 0x9a, 0x00, 0x05,
7211 0x81, 0xb0, 0x00, 0x00, 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7212 0x31, 0x9a, 0x00, 0x44, 0xa5, 0xb3, 0x00, 0x00, 0x33, 0x9a, 0x00, 0x44,
7213 0xa5, 0xb3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0xa4, 0xe7, 0x01, 0x00,
7214 0x00, 0x00, 0x00, 0xe0, 0x81, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0xc1,
7215 0xf0, 0x89, 0x01, 0x00, 0x29, 0x9a, 0x22, 0x41, 0x81, 0x50, 0x00, 0x00,
7216 0x25, 0x9a, 0x00, 0x41, 0xc1, 0xc3, 0x00, 0x00, 0xb1, 0x02, 0x00, 0x40,
7217 0x81, 0x32, 0x01, 0x00, 0xc5, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
7218 0x5a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40,
7219 0xa4, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x91, 0xb1, 0x01, 0x00,
7220 0xff, 0xff, 0x00, 0xc9, 0xf0, 0x89, 0x01, 0x00, 0x29, 0x9a, 0x22, 0x41,
7221 0x81, 0x50, 0x00, 0x00, 0x2d, 0x9a, 0x00, 0x41, 0xc1, 0xc3, 0x00, 0x00,
7222 0xff, 0xff, 0x00, 0xde, 0x85, 0x89, 0x01, 0x00, 0x29, 0x9a, 0x00, 0xc2,
7223 0xe0, 0xb1, 0x00, 0x00, 0xff, 0xff, 0x00, 0xde, 0x95, 0x89, 0x01, 0x00,
7224 0x29, 0x9a, 0x00, 0xca, 0xe0, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x00, 0xcb,
7225 0x81, 0xc8, 0x01, 0x00, 0x6a, 0x84, 0x00, 0x40, 0xf2, 0x93, 0x00, 0x00,
7226 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7227 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7228 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7229 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7230 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7231 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7232 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7233 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7234 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7235 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7236 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7237 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7238 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7239 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7240 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7241 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7242 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7243 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7244 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7245 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7246 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7247 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7248 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7249 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7250 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7251 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7252 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7253 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7254 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7255 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7256 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7257 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7258 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7259 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7260 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7261 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7262 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7263 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7264 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7265 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7266 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7267 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7268 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7269 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7270 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7271 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7272 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7273 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7274 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7275 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7276 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7277 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7278 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7279 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7280 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7281 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7282 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7283 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7284 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7285 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7286 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7287 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7288 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7289 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7290 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7291 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7292 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7293 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7294 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7295 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7296 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7297 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7298 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7299 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7300 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7301 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7302 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7303 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7304 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7305 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7306 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7307 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7308 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7309 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7310 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7311 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7312 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7313 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7314 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7315 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7316 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7317 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7318 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7319 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7320 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7321 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7322 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7323 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7324 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7325 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7326 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7327 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7328 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7329 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7330 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7331 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7332 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7333 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7334 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7335 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7336 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7337 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7338 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7339 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7340 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7341 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7342 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7343 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7344 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7345 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7346 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7347 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7348 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7349 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7350 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7351 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7352 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7353 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7354 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7355 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7356 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7357 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7358 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7359 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7360 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7361 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7362 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7363 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7364 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7365 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7366 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7367 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7368 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7369 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7370 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7371 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7372 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7373 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7374 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7375 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7376 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7377 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7378 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7379 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7380 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7381 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7382 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7383 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7384 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7385 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7386 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7387 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7388 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7389 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7390 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7391 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7392 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7393 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7394 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7395 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7396 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7397 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7398 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7399 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7400 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7401 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7402 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7403 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7404 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7405 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7406 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7407 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7408 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7409 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7410 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7411 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7412 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7413 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7414 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7415 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7416 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7417 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7418 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7419 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7420 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7421 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7422 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7423 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7424 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7425 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7426 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7427 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7428 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7429 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7430 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7431 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7432 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7433 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7434 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7435 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7436 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7437 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7438 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7439 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7440 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7441 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7442 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7443 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7444 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7445 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7446 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7447 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7448 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7449 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7450 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7451 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7452 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7453 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7454 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7455 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7456 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7457 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7458 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7459 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7460 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7461 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7462 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7463 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7464 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7465 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7466 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7467 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7468 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7469 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7470 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7471 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7472 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7473 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7474 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7475 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7476 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7477 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7478 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7479 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7480 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7481 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7482 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7483 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7484 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7485 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7486 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7487 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7488 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7489 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7490 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7491 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7492 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7493 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7494 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7495 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7496 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7497 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7498 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7499 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7500 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7501 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7502 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7503 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7504 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7505 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7506 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7507 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7508 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7509 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7510 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7511 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7512 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7513 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7514 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7515 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7516 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7517 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7518 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7519 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7520 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7521 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7522 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7523 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7524 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7525 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7526 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7527 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7528 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7529 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7530 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7531 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7532 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7533 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7534 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7535 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7536 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7537 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7538 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7539 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7540 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7541 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7542 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7543 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7544 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7545 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7546 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7547 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7548 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7549 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7550 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7551 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7552 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7553 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7554 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7555 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7556 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7557 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7558 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7559 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7560 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7561 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7562 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7563 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7564 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7565 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7566 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7567 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7568 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7569 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7570 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7571 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7572 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7573 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7574 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7575 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7576 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7577 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7578 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7579 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7580 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7581 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7582 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7583 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7584 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7585 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7586 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7587 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7588 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7589 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7590 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7591 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7592 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7593 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7594 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7595 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7596 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7597 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7598 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7599 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7600 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7601 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7602 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7603 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7604 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7605 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7606 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7607 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7608 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7609 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7610 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7611 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7612 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7613 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7614 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7615 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7616 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7617 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7618 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7619 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7620 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7621 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7622 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7623 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7624 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7625 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7626 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7627 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7628 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7629 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7630 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7631 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7632 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7633 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7634 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7635 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7636 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7637 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7638 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7639 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7640 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7641 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7642 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7643 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7644 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7645 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7646 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7647 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7648 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7649 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7650 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7651 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7652 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7653 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7654 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7655 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7656 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7657 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7658 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7659 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7660 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7661 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7662 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7663 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7664 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7665 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7666 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7667 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7668 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7669 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7670 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7671 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7672 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7673 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7674 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7675 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7676 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7677 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7678 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7679 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7680 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7681 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7682 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7683 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7684 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7685 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7686 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7687 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7688 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7689 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7690 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7691 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7692 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7693 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7694 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7695 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7696 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7697 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7698 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7699 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7700 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7701 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7702 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7703 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7704 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7705 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7706 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7707 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7708 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7709 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7710 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7711 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7712 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7713 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7714 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7715 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7716 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7717 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7718 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7719 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7720 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7721 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7722 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7723 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7724 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7725 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7726 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7727 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7728 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7729 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7730 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7731 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7732 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7733 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7734 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7735 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7736 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7737 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7738 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7739 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7740 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7741 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7742 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7743 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7744 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7745 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7746 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7747 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7748 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7749 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7750 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7751 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7752 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7753 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7754 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7755 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7756 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7757 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7758 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7759 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7760 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7761 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7762 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7763 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7764 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7765 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7766 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7767 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7768 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7769 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7770 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7771 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7772 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7773 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7774 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7775 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7776 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7777 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7778 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7779 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7780 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7781 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7782 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7783 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7784 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7785 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7786 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7787 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7788 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7789 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7790 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7791 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7792 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7793 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7794 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7795 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7796 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7797 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7798 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7799 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7800 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7801 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7802 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7803 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7804 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7805 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7806 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7807 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7808 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7809 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7810 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7811 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7812 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7813 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7814 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7815 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7816 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7817 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7818 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7819 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7820 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7821 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7822 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7823 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7824 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7825 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7826 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7827 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7828 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7829 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7830 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7831 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7832 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7833 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7834 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7835 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7836 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7837 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7838 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7839 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7840 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7841 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7842 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7843 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7844 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7845 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7846 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7847 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7848 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7849 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7850 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7851 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7852 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7853 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7854 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7855 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7856 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7857 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7858 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7859 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7860 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7861 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7862 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7863 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7864 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7865 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7866 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7867 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7868 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7869 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7870 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7871 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7872 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7873 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7874 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7875 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7876 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7877 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7878 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7879 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7880 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7881 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7882 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7883 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7884 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7885 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7886 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7887 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7888 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7889 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7890 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7891 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7892 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7893 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7894 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7895 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7896 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7897 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7898 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7899 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7900 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7901 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7902 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7903 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7904 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7905 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7906 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7907 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7908 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7909 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7910 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7911 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7912 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7913 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7914 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7915 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7916 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7917 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7918 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7919 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7920 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7921 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7922 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7923 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7924 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7925 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7926 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7927 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7928 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7929 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7930 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7931 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7932 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7933 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7934 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7935 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7936 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7937 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7938 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7939 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7940 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7941 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7942 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7943 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7944 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7945 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7946 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7947 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7948 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7949 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7950 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7951 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7952 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7953 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7954 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7955 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7956 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7957 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7958 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7959 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7960 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7961 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7962 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7963 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7964 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7965 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7966 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7967 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7968 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7969 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7970 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7971 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7972 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7973 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7974 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7975 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7976 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7977 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7978 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7979 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7980 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7981 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7982 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7983 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7984 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7985 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7986 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7987 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7988 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7989 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7990 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7991 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7992 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7993 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7994 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7995 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7996 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7997 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
7998 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
7999 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8000 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8001 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8002 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8003 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8004 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8005 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8006 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8007 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8008 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8009 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8010 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8011 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8012 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8013 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8014 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8015 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8016 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8017 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8018 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8019 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8020 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8021 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8022 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8023 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8024 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8025 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8026 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8027 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8028 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8029 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8030 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8031 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8032 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8033 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8034 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8035 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8036 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8037 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8038 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8039 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8040 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8041 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8042 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8043 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8044 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8045 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8046 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8047 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8048 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8049 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8050 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8051 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8052 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8053 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8054 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8055 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8056 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8057 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8058 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8059 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8060 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8061 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8062 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8063 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8064 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8065 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8066 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8067 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8068 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8069 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8070 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8071 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8072 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8073 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8074 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8075 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8076 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8077 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8078 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8079 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8080 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8081 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8082 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8083 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8084 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8085 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8086 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8087 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8088 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8089 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8090 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8091 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8092 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8093 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8094 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8095 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8096 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8097 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8098 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8099 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8100 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8101 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8102 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8103 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8104 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8105 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8106 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8107 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8108 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8109 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8110 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8111 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8112 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8113 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8114 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8115 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8116 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8117 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8118 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8119 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8120 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8121 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8122 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8123 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8124 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8125 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8126 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8127 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8128 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8129 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8130 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8131 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8132 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8133 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8134 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8135 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8136 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8137 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8138 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8139 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8140 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8141 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8142 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8143 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8144 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8145 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8146 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8147 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8148 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8149 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8150 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8151 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8152 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8153 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8154 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8155 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8156 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8157 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8158 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8159 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8160 0xb6, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00, 0xb6, 0x9f, 0x00, 0x88,
8161 0x9a, 0xb0, 0x00, 0x00, 0xb6, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00,
8162 0xb6, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00, 0xb6, 0x9f, 0x00, 0x88,
8163 0x9a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x9a, 0xb0, 0x01, 0x00,
8164 0xb6, 0x9f, 0x41, 0x40, 0x81, 0x32, 0x00, 0x00, 0xb9, 0x9f, 0x22, 0x40,
8165 0x7b, 0x6f, 0x00, 0x00, 0xb6, 0x9f, 0x19, 0x40, 0x81, 0xb2, 0x00, 0x00,
8166 0x00, 0x00, 0x19, 0x41, 0x7b, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4,
8167 0xc4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xc6, 0xb3, 0x01, 0x00,
8168 0x00, 0x00, 0x2f, 0xa2, 0xc8, 0xb3, 0x01, 0x00, 0x08, 0x14, 0x00, 0x40,
8169 0x49, 0x99, 0x01, 0x00, 0xb0, 0x9f, 0x00, 0x4d, 0x9a, 0xcc, 0x01, 0x00,
8170 0xc2, 0x9f, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
8171 0x49, 0xc1, 0x01, 0x00, 0xc0, 0x9f, 0xa2, 0x41, 0x9b, 0x50, 0x00, 0x00,
8172 0xc6, 0x9f, 0x80, 0x80, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x52, 0x49,
8173 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xfd, 0x93, 0x01, 0x00,
8174 0xc9, 0x9f, 0x00, 0x42, 0xcd, 0x93, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4a,
8175 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0xfd, 0x93, 0x01, 0x00,
8176 0xc9, 0x9f, 0x00, 0x43, 0xcb, 0x93, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
8177 0x81, 0xb2, 0x01, 0x00, 0xd9, 0x9f, 0x00, 0x40, 0x19, 0x99, 0x01, 0x00,
8178 0x00, 0x00, 0x00, 0xf0, 0x9a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
8179 0x49, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x40, 0xf0, 0x80, 0xb2, 0x01, 0x00,
8180 0x00, 0x00, 0x41, 0x4d, 0x80, 0xb2, 0x01, 0x00, 0xd1, 0x9f, 0x00, 0x40,
8181 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x40, 0x81, 0xb2, 0x01, 0x00,
8182 0x00, 0x00, 0x00, 0x44, 0x49, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
8183 0x9a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x10, 0xb1, 0x00, 0x00,
8184 0x00, 0x00, 0x00, 0xe2, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe3,
8185 0x43, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x45, 0xb1, 0x01, 0x00,
8186 0x00, 0x00, 0x00, 0x40, 0x7b, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x48, 0x4f,
8187 0x40, 0xb1, 0x01, 0x00, 0xd9, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8188 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8189 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8190 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8191 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8192 0x00, 0x00, 0x80, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
8193 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8194 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8195 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8196 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8197 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8198 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8199 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8200 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8201 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8202 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x6a, 0x84, 0x00, 0x40,
8203 0x81, 0xb2, 0x00, 0x00, 0x19, 0x9a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8204 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x35, 0x9a, 0x00, 0x40,
8205 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8206 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa8,
8207 0x10, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8208 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8209 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8210 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8211 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
8212 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
8213 0x81, 0xb2, 0x00, 0x00,
8214 },
8215};
diff --git a/drivers/staging/slicoss/gbrcvucode.h b/drivers/staging/slicoss/gbrcvucode.h
new file mode 100644
index 00000000000..4fa5a4c23e5
--- /dev/null
+++ b/drivers/staging/slicoss/gbrcvucode.h
@@ -0,0 +1,238 @@
1/*
2 * Copyright (c) 1997-2002 Alacritech, Inc. All rights reserved
3 *
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials provided
14 * with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * The views and conclusions contained in the software and documentation
30 * are those of the authors and should not be interpreted as representing
31 * official policies, either expressed or implied, of Alacritech, Inc.
32 *
33 **************************************************************************/
34#define GB_RCVUCODE_VERS_STRING "1.2"
35#define GB_RCVUCODE_VERS_DATE "2006/03/27 15:12:15"
36
37static u32 GBRcvUCodeLen = 512;
38
39static u8 GBRcvUCode[2560] =
40{
410x47, 0x75, 0x01, 0x00, 0x04, 0xa0, 0x13, 0x01, 0x00, 0x1c, 0xb7, 0x5b, 0x09,
420x30, 0x00, 0xb6, 0x5f, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x18, 0x3b,
430x78, 0x3a, 0x00, 0x1c, 0xa2, 0x77, 0x01, 0x00, 0x1c, 0x07, 0x1d, 0x01, 0x70,
440x18, 0xb3, 0x7b, 0xa9, 0xaa, 0x1e, 0xb4, 0x7b, 0x01, 0x0c, 0x1c, 0xb5, 0x7b,
450x1d, 0x06, 0x1c, 0x00, 0x00, 0x40, 0x64, 0x08, 0x0c, 0x31, 0x56, 0x70, 0x04,
460x0c, 0x31, 0x56, 0x80, 0x04, 0x0c, 0x31, 0x4a, 0x90, 0x04, 0x0c, 0x31, 0x46,
470xa0, 0x00, 0x09, 0x25, 0x51, 0xc0, 0x04, 0x0c, 0x31, 0x4e, 0xb0, 0x00, 0xe9,
480x24, 0x51, 0xc0, 0x04, 0xcc, 0xb3, 0x00, 0x1c, 0x1c, 0xeb, 0x2d, 0x01, 0x00,
490x1c, 0x06, 0x56, 0x42, 0xd4, 0x08, 0x07, 0x9d, 0x00, 0x00, 0x1c, 0x7b, 0xb7,
500x02, 0x00, 0x10, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0x06, 0x56, 0x5a, 0xc0, 0x04,
510xa0, 0x30, 0x6c, 0x03, 0x00, 0xac, 0x30, 0x6d, 0x03, 0x00, 0xcd, 0x03, 0x3a,
520x00, 0x1c, 0x7b, 0xb7, 0x02, 0x00, 0x1c, 0x60, 0x8e, 0x41, 0x54, 0x09, 0x29,
530x25, 0x6d, 0x03, 0x00, 0x80, 0x8e, 0x41, 0x54, 0x09, 0x8c, 0x30, 0x8d, 0x00,
540x04, 0x47, 0x1c, 0x01, 0x00, 0x1c, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0x00, 0x00,
550x60, 0x00, 0x04, 0x47, 0x1c, 0x61, 0xc0, 0x04, 0x47, 0x1c, 0x6d, 0x03, 0x00,
560x6c, 0x30, 0x01, 0x00, 0x1c, 0x4d, 0x34, 0x02, 0x00, 0x1c, 0x7b, 0xb7, 0x02,
570x00, 0x1c, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xc8, 0x83, 0x37, 0x00, 0x1c, 0x80,
580x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x60, 0x00, 0x04, 0xa0, 0x0f, 0x40, 0x54,
590x09, 0x00, 0x00, 0x6c, 0xc3, 0x04, 0x7b, 0xfb, 0xf2, 0x00, 0x1c, 0xcc, 0x33,
600x0d, 0x00, 0x1c, 0xb4, 0x7b, 0xfd, 0x03, 0x1c, 0x80, 0x0e, 0x40, 0x54, 0x09,
610xe0, 0xfb, 0x05, 0x00, 0x1c, 0x00, 0x00, 0xa0, 0x03, 0x00, 0xb3, 0x0f, 0x41,
620x54, 0x09, 0x00, 0x00, 0xe8, 0x70, 0x04, 0x00, 0x00, 0xe8, 0x80, 0x04, 0x00,
630x00, 0xa0, 0x93, 0x00, 0x61, 0x76, 0xa1, 0xc3, 0x04, 0xc0, 0x8d, 0x41, 0x54,
640x09, 0xe0, 0x7b, 0x00, 0xc0, 0x1f, 0xa0, 0xfd, 0xc1, 0x01, 0x00, 0xcc, 0x33,
650x05, 0x00, 0x1c, 0xd4, 0x03, 0x00, 0x3c, 0x1c, 0xd4, 0xd3, 0x1b, 0x00, 0x1c,
660xc0, 0xd3, 0x52, 0x00, 0x1c, 0x00, 0x00, 0x74, 0x13, 0x04, 0x8e, 0x8e, 0x42,
670x54, 0x09, 0x5b, 0x80, 0x76, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
680x00, 0x90, 0x01, 0x00, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xa0, 0x0f, 0x41, 0x54,
690x09, 0xc0, 0x03, 0xfc, 0x7f, 0x1c, 0xa0, 0x01, 0x9c, 0x01, 0x00, 0x00, 0x00,
700xa0, 0x01, 0x00, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xc0, 0x03, 0xfc, 0x03, 0x1c,
710xf5, 0x77, 0x01, 0x00, 0x1c, 0x26, 0x7a, 0xf6, 0x05, 0x1c, 0xa0, 0x0f, 0x41,
720x54, 0x09, 0xb3, 0x0f, 0x41, 0x54, 0x09, 0xb5, 0x02, 0x02, 0x00, 0x1c, 0xa0,
730x0f, 0x41, 0x54, 0x09, 0x7a, 0x06, 0x02, 0x00, 0x1c, 0xb5, 0x02, 0x02, 0x00,
740x1c, 0x53, 0x0f, 0x42, 0x54, 0x09, 0xaf, 0x03, 0x01, 0x00, 0x1c, 0x7a, 0x0e,
750x42, 0x54, 0x09, 0xb5, 0x02, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x02, 0x00, 0x1c,
760xa0, 0x3d, 0xa6, 0x11, 0x04, 0x00, 0x00, 0xa8, 0x11, 0x04, 0xd4, 0xd3, 0x52,
770x00, 0x1c, 0xb5, 0x3e, 0xae, 0x01, 0x00, 0x20, 0xfb, 0xfd, 0xff, 0x1f, 0x80,
780x2c, 0x84, 0x03, 0x00, 0xb9, 0x3a, 0x9a, 0x01, 0x00, 0x75, 0x3b, 0x02, 0x00,
790x1c, 0xa7, 0x1c, 0x01, 0x00, 0x10, 0xdb, 0x83, 0x16, 0x00, 0x1c, 0xc7, 0x1d,
800x1d, 0xc1, 0x04, 0xb9, 0x3b, 0x89, 0xc1, 0x04, 0x8b, 0x2c, 0x01, 0x00, 0x1c,
810x6b, 0x2c, 0x31, 0xc1, 0x04, 0x00, 0x00, 0x74, 0x11, 0x00, 0xcb, 0x2c, 0x75,
820xc1, 0x04, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0x54,
830xd0, 0x02, 0x00, 0x1c, 0x49, 0x25, 0xad, 0x01, 0x00, 0xab, 0x2c, 0x7d, 0xc1,
840x04, 0xa7, 0x1d, 0x6d, 0x03, 0x00, 0xcc, 0x33, 0x09, 0x00, 0x1c, 0xeb, 0x2d,
850x01, 0x00, 0x1c, 0xea, 0x29, 0x01, 0x00, 0x1c, 0xa0, 0x0f, 0x41, 0x54, 0x09,
860xae, 0x0f, 0x41, 0x54, 0x09, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xd4, 0x07, 0xfc,
870x03, 0x1c, 0x99, 0x3a, 0x02, 0x00, 0x1c, 0xbb, 0x38, 0x02, 0x00, 0x1c, 0x00,
880x38, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xf8, 0x01, 0x04, 0xdb, 0x3b, 0x7e, 0x00,
890x1c, 0xc7, 0x1d, 0x01, 0x00, 0x1c, 0x26, 0x7a, 0x0a, 0x06, 0x1c, 0x27, 0x1d,
900x01, 0x00, 0x1c, 0xb3, 0x0f, 0x41, 0x54, 0x09, 0x7a, 0x0e, 0x42, 0x54, 0x09,
910x53, 0x0f, 0x42, 0x54, 0x09, 0x7a, 0x0e, 0x42, 0x54, 0x09, 0x53, 0x0f, 0x42,
920x54, 0x09, 0x7a, 0x0e, 0x42, 0x54, 0x09, 0x53, 0x0f, 0x42, 0x54, 0x09, 0xa0,
930x0f, 0x41, 0x54, 0x09, 0x7a, 0x06, 0x02, 0x00, 0x1c, 0x53, 0x0f, 0x42, 0x54,
940x09, 0xaf, 0x03, 0x01, 0x00, 0x1c, 0x7a, 0x0e, 0x42, 0x54, 0x09, 0x53, 0x0f,
950x42, 0x54, 0x09, 0x7a, 0x0e, 0x42, 0x54, 0x09, 0x53, 0x0f, 0x42, 0x54, 0x09,
960x7a, 0x0e, 0x42, 0x54, 0x09, 0x53, 0x0f, 0x42, 0x54, 0x09, 0x7a, 0x0e, 0x42,
970x54, 0x09, 0x00, 0x3d, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x54, 0x12, 0x00, 0xcb,
980x2c, 0x01, 0x00, 0x1c, 0x75, 0x3b, 0x02, 0x00, 0x1c, 0xa7, 0x1c, 0x01, 0x00,
990x10, 0xa6, 0x7b, 0xf1, 0x05, 0x1c, 0x00, 0x00, 0x88, 0xc2, 0x04, 0xa6, 0x7b,
1000xf1, 0x05, 0x1c, 0x00, 0x00, 0xa0, 0xc2, 0x04, 0xcb, 0x2f, 0x05, 0x00, 0x1c,
1010x60, 0x2c, 0x00, 0x00, 0x1c, 0xc7, 0x1c, 0xe1, 0x02, 0x00, 0x53, 0x0f, 0x42,
1020x54, 0x09, 0xc0, 0x83, 0xf1, 0x32, 0x1c, 0x00, 0x00, 0x5c, 0x02, 0x04, 0x46,
1030x7a, 0xda, 0x05, 0x1c, 0x7a, 0x0e, 0x42, 0x54, 0x09, 0xc0, 0x83, 0xf1, 0x32,
1040x1c, 0x00, 0x00, 0x64, 0x02, 0x04, 0x40, 0xfa, 0x15, 0x00, 0x1c, 0x00, 0x00,
1050xa0, 0x02, 0x04, 0x46, 0x7a, 0xda, 0x05, 0x1c, 0xa0, 0x0f, 0x41, 0x54, 0x09,
1060xa0, 0x0f, 0x41, 0x54, 0x09, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xa0, 0x0f, 0x41,
1070x54, 0x09, 0xb3, 0x7b, 0x01, 0xc0, 0x1f, 0x74, 0x0e, 0x40, 0x54, 0x09, 0xc0,
1080x03, 0x9c, 0x00, 0x1c, 0x80, 0x00, 0xf0, 0x02, 0x00, 0x00, 0x00, 0xf0, 0x02,
1090x04, 0x00, 0x00, 0xc4, 0x12, 0x05, 0x07, 0x1d, 0x01, 0x00, 0x1c, 0xd4, 0xd3,
1100x2b, 0x00, 0x1c, 0xd4, 0xd3, 0x52, 0x00, 0x1c, 0x80, 0x76, 0x95, 0x13, 0x04,
1110x00, 0x00, 0xf8, 0x02, 0x00, 0xa6, 0x7b, 0xa9, 0x03, 0x10, 0xc7, 0x9c, 0x00,
1120x00, 0x1c, 0x80, 0x2c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x78, 0x02, 0x04, 0x00,
1130x00, 0x6c, 0xc3, 0x04, 0xab, 0x2d, 0xf1, 0x12, 0x05, 0x07, 0x1d, 0xcd, 0xc2,
1140x04, 0x8b, 0x2d, 0x01, 0x00, 0x1c, 0x69, 0x25, 0x01, 0x00, 0x1c, 0xa6, 0x7b,
1150xa9, 0x03, 0x10, 0xcb, 0x2f, 0x09, 0x00, 0x1c, 0x60, 0x2c, 0x00, 0x00, 0x1c,
1160x00, 0x00, 0x60, 0x03, 0x00, 0x53, 0x0f, 0x42, 0x54, 0x09, 0x46, 0x7a, 0xda,
1170x05, 0x1c, 0x7a, 0x0e, 0x42, 0x54, 0x09, 0x40, 0xfa, 0x15, 0x00, 0x1c, 0x00,
1180x00, 0x28, 0x03, 0x04, 0x46, 0x7a, 0xda, 0x05, 0x1c, 0xb5, 0x0f, 0x41, 0x54,
1190x09, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0x73, 0xec, 0x42, 0x03, 0x04, 0x60, 0x2c,
1200x00, 0x00, 0x1c, 0x00, 0x00, 0x40, 0x03, 0x00, 0xc7, 0x1c, 0x01, 0x00, 0x1c,
1210x00, 0x00, 0x40, 0x13, 0x05, 0x07, 0x1d, 0x01, 0x00, 0x1c, 0xc0, 0xd7, 0x22,
1220x00, 0x1c, 0x75, 0x56, 0x96, 0x13, 0x04, 0x60, 0x2c, 0x00, 0x00, 0x1c, 0xe7,
1230x1c, 0x5d, 0x03, 0x04, 0xe7, 0x9c, 0x00, 0x00, 0x1c, 0xa6, 0x7b, 0xa9, 0x03,
1240x10, 0x80, 0x2c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, 0x04, 0x00, 0x00,
1250x6c, 0xc3, 0x04, 0xb9, 0x7b, 0x01, 0x00, 0x1c, 0x00, 0x00, 0xa0, 0xc3, 0x04,
1260xcb, 0xaf, 0xfc, 0x07, 0x1c, 0xcb, 0x2f, 0x01, 0x04, 0x1c, 0xc7, 0x9f, 0x80,
1270x03, 0x1c, 0x00, 0x00, 0xa0, 0xc3, 0x04, 0xcb, 0xaf, 0xfc, 0x07, 0x1c, 0xcb,
1280x2f, 0x0d, 0x04, 0x1c, 0xc7, 0x9f, 0x80, 0x03, 0x1c, 0x00, 0x00, 0xa0, 0xc3,
1290x04, 0xcb, 0xaf, 0x00, 0xf8, 0x1d, 0xcb, 0x2f, 0x01, 0x00, 0x1d, 0x00, 0x00,
1300xa0, 0xc3, 0x04, 0x00, 0x00, 0xa0, 0x13, 0x05, 0x07, 0x1d, 0x01, 0x00, 0x1c,
1310xc0, 0x1d, 0xf0, 0xd3, 0x08, 0x27, 0x9d, 0xf8, 0x03, 0x00, 0xa0, 0xee, 0x56,
1320xd4, 0x00, 0xfb, 0x75, 0x19, 0x14, 0x04, 0x20, 0x7b, 0x06, 0x00, 0x1c, 0xc0,
1330x1c, 0x2c, 0x04, 0x00, 0x00, 0x00, 0xc4, 0xd3, 0x08, 0x00, 0x00, 0x10, 0xf4,
1340x00, 0xc0, 0xef, 0xf2, 0x00, 0x1c, 0x20, 0x25, 0x6c, 0x14, 0x04, 0x60, 0xb7,
1350xe6, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x15, 0x00, 0xcc, 0xb3, 0xfc, 0x03, 0x1c,
1360xcc, 0x33, 0x05, 0x02, 0x1c, 0x00, 0x00, 0x1c, 0xc5, 0x04, 0x60, 0xb7, 0x1e,
1370x05, 0x04, 0x00, 0x00, 0x1c, 0x15, 0x04, 0x00, 0x00, 0x6c, 0xc4, 0x04, 0xc0,
1380x1d, 0xac, 0xf3, 0x04, 0x00, 0x00, 0x78, 0xc4, 0x04, 0x07, 0x9d, 0x00, 0x00,
1390x1c, 0x1b, 0x74, 0x0d, 0xf4, 0x04, 0xa0, 0x0f, 0x41, 0x54, 0x09, 0xe0, 0x7b,
1400x00, 0xfc, 0x1f, 0x39, 0x7f, 0x02, 0x00, 0x1c, 0x07, 0x1d, 0xb1, 0xc3, 0x04,
1410xa6, 0x7b, 0xc1, 0x03, 0x1c, 0x00, 0x00, 0x78, 0xc4, 0x04, 0xe0, 0x1c, 0x00,
1420x00, 0x1c, 0x00, 0x00, 0xb8, 0x03, 0x04, 0xcb, 0xaf, 0x00, 0xf8, 0x1d, 0xcb,
1430x2f, 0x01, 0x10, 0x1d, 0x00, 0x00, 0xc0, 0xc3, 0x04, 0x00, 0x00, 0xc0, 0x03,
1440x04, 0xcb, 0xaf, 0x00, 0xf8, 0x1d, 0xcb, 0x2f, 0x01, 0x18, 0x1d, 0xc7, 0x9f,
1450x00, 0x0b, 0x1c, 0x00, 0x00, 0xc0, 0xc3, 0x04, 0xfb, 0x75, 0x01, 0x00, 0x1c,
1460x07, 0x1d, 0x01, 0x00, 0x1c, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x01,
1470x02, 0x1c, 0x00, 0x00, 0xc0, 0xc3, 0x04, 0xa0, 0x1c, 0x00, 0x00, 0x1c, 0xa0,
1480xee, 0xb6, 0x03, 0x04, 0xcb, 0xaf, 0xfc, 0x07, 0x1c, 0xcb, 0x2f, 0x09, 0x04,
1490x1c, 0xfb, 0x75, 0x01, 0x00, 0x1c, 0x00, 0x00, 0xc0, 0xc3, 0x04, 0xcc, 0xb3,
1500xfc, 0x03, 0x1c, 0xcc, 0x33, 0x01, 0x02, 0x1c, 0x00, 0x00, 0x1c, 0xc5, 0x04,
1510x00, 0x00, 0x88, 0x34, 0x05, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x15,
1520x02, 0x1c, 0x47, 0x9d, 0x64, 0xc4, 0x04, 0x00, 0x00, 0x88, 0x44, 0x00, 0x80,
1530x1d, 0x8c, 0x54, 0x04, 0x87, 0x1d, 0x9d, 0x04, 0x00, 0xce, 0x76, 0x01, 0x00,
1540x1c, 0xef, 0x76, 0xad, 0xc4, 0x04, 0xa4, 0x77, 0x9d, 0x24, 0x09, 0xe4, 0x76,
1550x01, 0x00, 0x1c, 0xc4, 0x76, 0x01, 0x00, 0x1c, 0x00, 0x00, 0xa8, 0x54, 0x04,
1560xd7, 0x76, 0x01, 0x50, 0x18, 0xf6, 0x76, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00,
1570x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10, 0xcc, 0x30, 0x51, 0xc5, 0x04, 0xeb,
1580x2d, 0x01, 0x00, 0x1c, 0xea, 0x29, 0x01, 0x00, 0x1c, 0xc0, 0x59, 0x01, 0x00,
1590x1c, 0xf5, 0x77, 0x39, 0xc5, 0x04, 0xe0, 0x30, 0xec, 0x04, 0x00, 0x00, 0x4c,
1600xc0, 0x04, 0x00, 0x20, 0x4c, 0x04, 0x05, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00,
1610xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x09, 0x02, 0x1c, 0xeb, 0x2d, 0xc5,
1620xc4, 0x04, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x19, 0x02, 0x1c, 0xeb,
1630x2d, 0xc5, 0xc4, 0x04, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x0d, 0x02,
1640x1c, 0xeb, 0x2d, 0xc5, 0xc4, 0x04, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33,
1650x11, 0x02, 0x1c, 0xeb, 0x2d, 0xc5, 0xc4, 0x04, 0x00, 0x7b, 0x00, 0x80, 0x1c,
1660xae, 0x77, 0x51, 0x05, 0x00, 0x00, 0x00, 0x04, 0xc0, 0x04, 0xd3, 0x8b, 0x00,
1670xfc, 0x1f, 0x60, 0x7a, 0x3c, 0x00, 0x1c, 0x60, 0x4c, 0xd0, 0x04, 0x00, 0xc0,
1680x2f, 0x20, 0x05, 0x1f, 0xe0, 0x30, 0xc0, 0x04, 0x00, 0x80, 0x25, 0xc0, 0x04,
1690x00, 0xb5, 0x5b, 0xc1, 0x04, 0x04, 0x69, 0x26, 0x01, 0x00, 0x1c, 0x6a, 0x2b,
1700x01, 0x00, 0x1c, 0x80, 0x1d, 0x00, 0x00, 0x1c, 0xa9, 0x25, 0x51, 0x05, 0x00,
1710xee, 0x30, 0x00, 0x00, 0x1c, 0xaf, 0x77, 0x11, 0x05, 0x00, 0xb4, 0x5f, 0x01,
1720x40, 0x18, 0x07, 0x9d, 0x54, 0x55, 0x04, 0xb7, 0x76, 0x01, 0x00, 0x1c, 0x96,
1730x76, 0x01, 0x00, 0x1c, 0x47, 0x1d, 0x01, 0x00, 0x1c, 0xa4, 0x33, 0x01, 0x60,
1740x18, 0xa4, 0x2f, 0x01, 0x60, 0x18, 0x64, 0x77, 0x01, 0x60, 0x18, 0x24, 0x77,
1750x01, 0x60, 0x18, 0x44, 0x77, 0x01, 0x00, 0x1c, 0x64, 0x88, 0x03, 0x00, 0x1c,
1760xa4, 0x3f, 0x01, 0x00, 0x1c, 0xa4, 0x3b, 0x01, 0x00, 0x1c, 0x53, 0x77, 0x01,
1770x00, 0x1c, 0xd3, 0xcf, 0x3b, 0x00, 0x1c, 0x53, 0x4f, 0x02, 0x00, 0x1c, 0xd3,
1780xcf, 0x00, 0x00, 0x1f, 0xda, 0xcf, 0x0b, 0x00, 0x1c, 0xd5, 0x57, 0x0f, 0x00,
1790x1c, 0xd3, 0xd3, 0x37, 0x00, 0x1c, 0xd4, 0x53, 0x0f, 0x00, 0x1c, 0xe0, 0x29,
1800x00, 0x00, 0x1c, 0xf5, 0xd5, 0xc0, 0x05, 0x00, 0x00, 0x00, 0xac, 0x55, 0x04,
1810x77, 0x56, 0x01, 0x00, 0x1c, 0x56, 0x53, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00,
1820x10, 0x18, 0x00, 0x00, 0x04, 0xc0, 0x04, 0xf5, 0x55, 0x01, 0x00, 0x1c, 0x00,
1830x00, 0xc4, 0x55, 0x04, 0x77, 0x56, 0x01, 0x00, 0x1c, 0x56, 0x53, 0x01, 0x00,
1840x1c, 0x00, 0x00, 0x00, 0x10, 0x18, 0x00, 0x00, 0x04, 0xc0, 0x04, 0xcb, 0x2f,
1850x01, 0x18, 0x10, 0xcb, 0x2f, 0x01, 0x10, 0x10, 0xcb, 0x2f, 0x01, 0x08, 0x10,
1860xcb, 0x2f, 0x01, 0x08, 0x10, 0xcb, 0x2f, 0x01, 0x20, 0x10, 0xcb, 0x2f, 0x01,
1870x00, 0x10, 0xcb, 0x2f, 0x01, 0x28, 0x10, 0x89, 0x25, 0x6d, 0xc2, 0x04, 0x00,
1880x00, 0x04, 0xc3, 0x04, 0x00, 0x00, 0x6c, 0xc3, 0x04, 0x00, 0x00, 0x6c, 0xc3,
1890x04, 0x00, 0x00, 0x6c, 0xc3, 0x04, 0x00, 0x00, 0x6c, 0xc2, 0x04, 0x00, 0x00,
1900x04, 0xc3, 0x04, 0x00, 0x00, 0x6c, 0xc3, 0x04, 0x00, 0x00, 0x6c, 0xc3, 0x04,
1910x00, 0x00, 0x6c, 0xc3, 0x04, 0x40, 0x1c, 0x68, 0xc0, 0x04, 0x40, 0x1c, 0x98,
1920xc0, 0x04, 0xa7, 0x77, 0x6d, 0xc3, 0x04, 0x00, 0x00, 0xc0, 0xc0, 0x04, 0x27,
1930x1d, 0xed, 0xc0, 0x04, 0x00, 0x00, 0x6c, 0xc3, 0x04, 0x00, 0x00, 0x6c, 0xc3,
1940x04, 0x00, 0x00, 0x6c, 0xc3, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
1950x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
1960x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
1970xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
1980x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
1990x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2000x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2010x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2020xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2030x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2040x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2050x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2060x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2070xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2080x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2090x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2100x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2110x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2120xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2130x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2140x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2150x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2160x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2170xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2180x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2190x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2200x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2210x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2220xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2230x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2240x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2250x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2260x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2270xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2280x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2290x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2300x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2310x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2320xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00,
2330x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6,
2340x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00,
2350x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
2360x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c,
2370xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04, 0x00, 0x00, 0x3c, 0xc6, 0x04,
238};
diff --git a/drivers/staging/slicoss/oasisdbgdownload.h b/drivers/staging/slicoss/oasisdbgdownload.h
new file mode 100644
index 00000000000..519e00797d4
--- /dev/null
+++ b/drivers/staging/slicoss/oasisdbgdownload.h
@@ -0,0 +1,6850 @@
1#define OASIS_UCODE_VERS_STRING "1.2"
2#define OASIS_UCODE_VERS_DATE "2006/03/27 15:11:22"
3#define OASIS_UCODE_HOSTIF_ID 3
4
5static s32 ONumSections = 0x2;
6static u32 OSectionSize[] =
7{
8 0x00004000, 0x00010000,
9};
10
11static u32 OSectionStart[] =
12{
13 0x00000000, 0x00008000,
14};
15
16static u8 OasisUCode[2][65536] =
17{
18 {
19 0x15, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x40,
20 0x81, 0xb2, 0x00, 0x00, 0x21, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
21 0x03, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
22 0x98, 0xb0, 0x01, 0x00, 0x04, 0x80, 0xa2, 0x40, 0xfd, 0x7f, 0x00, 0x00,
23 0x09, 0x00, 0xa2, 0x49, 0xdd, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
24 0x80, 0xb2, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xd1, 0xb1, 0x00, 0x00,
25 0x00, 0x00, 0x00, 0x4c, 0x80, 0xb2, 0x01, 0x00, 0x09, 0x00, 0xa2, 0x40,
26 0x75, 0x7d, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
27 0x0b, 0x00, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0x09, 0x00, 0x00, 0x40,
28 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x8f, 0x98, 0x18, 0x31, 0x00, 0x00,
29 0x10, 0x00, 0x00, 0x98, 0x80, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x41, 0x98,
30 0x80, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
31 0x10, 0x00, 0x00, 0x98, 0x80, 0xe4, 0x01, 0x00, 0x0e, 0x00, 0x40, 0x98,
32 0x80, 0x94, 0x00, 0x00, 0x11, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
33 0x00, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x19, 0x00, 0x29, 0x40,
34 0x81, 0x32, 0x00, 0x00, 0x19, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
35 0x0e, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
36 0x81, 0xb2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
37 0x10, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x1f, 0x00, 0x29, 0x40,
38 0x81, 0x32, 0x00, 0x00, 0x1f, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
39 0x12, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
40 0x81, 0xb2, 0x01, 0x00, 0x01, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
41 0x20, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x25, 0x00, 0x29, 0x40,
42 0x81, 0x32, 0x00, 0x00, 0x25, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
43 0x14, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
44 0xdd, 0x81, 0x01, 0x00, 0x12, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
45 0x33, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2a, 0x00, 0x14, 0xbc,
46 0x80, 0x32, 0x00, 0x00, 0xfe, 0x00, 0x13, 0xbc, 0x80, 0x32, 0x00, 0x00,
47 0x54, 0x95, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0xff, 0xff, 0x00, 0x40,
48 0xe5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x40, 0x49, 0xb1, 0x01, 0x00,
49 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
50 0xfd, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xb3, 0x01, 0x00,
51 0x33, 0x00, 0x18, 0xee, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
52 0x89, 0xb0, 0x01, 0x00, 0x32, 0x00, 0xa2, 0x41, 0x89, 0x50, 0x00, 0x00,
53 0x99, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x30, 0x94, 0x00, 0x40,
54 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x20, 0xb1, 0x01, 0x00,
55 0x00, 0x00, 0x00, 0xfa, 0xe0, 0xb3, 0x01, 0x00, 0x39, 0x00, 0x98, 0xee,
56 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x80, 0xb0, 0x01, 0x00,
57 0x3b, 0x00, 0x80, 0xf3, 0xde, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
58 0xfd, 0x93, 0x01, 0x00, 0x3e, 0x00, 0x83, 0xf3, 0x80, 0x32, 0x00, 0x00,
59 0xf0, 0x00, 0x00, 0xf3, 0x80, 0x88, 0x01, 0x00, 0x01, 0x80, 0x00, 0x40,
60 0x2e, 0xdd, 0x01, 0x00, 0x00, 0x94, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
61 0x00, 0x00, 0x00, 0x46, 0x43, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa,
62 0x24, 0xb1, 0x01, 0x00, 0x7c, 0x00, 0x18, 0xee, 0x80, 0x32, 0x00, 0x00,
63 0x45, 0x00, 0x95, 0xe8, 0x80, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0xe8,
64 0x80, 0x88, 0x01, 0x00, 0x7c, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
65 0x00, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
66 0xec, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd6, 0xb1, 0x01, 0x00,
67 0x08, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
68 0xd6, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0xf8, 0xee, 0x8b, 0x01, 0x00,
69 0x08, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0xff, 0x00, 0x00, 0xf0,
70 0x80, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x81, 0x94, 0x01, 0x00,
71 0x00, 0x00, 0x00, 0x40, 0xd6, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0xf8,
72 0x80, 0x88, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
73 0xff, 0x00, 0x00, 0xf0, 0xd6, 0x8d, 0x01, 0x00, 0xff, 0xff, 0x00, 0xf0,
74 0xf0, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0x81, 0xe0, 0x01, 0x00,
75 0x00, 0x00, 0x00, 0xf8, 0x81, 0x94, 0x01, 0x00, 0x3c, 0x01, 0x00, 0x40,
76 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xd6, 0xb1, 0x01, 0x00,
77 0xff, 0x00, 0x00, 0xf8, 0x80, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
78 0x81, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x81, 0x94, 0x01, 0x00,
79 0x3c, 0x02, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
80 0xd6, 0xb1, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
81 0x00, 0x00, 0x00, 0xf8, 0xd6, 0xb1, 0x01, 0x00, 0x1e, 0x00, 0x00, 0xf0,
82 0x82, 0xf4, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xf8, 0x80, 0xd8, 0x01, 0x00,
83 0x64, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
84 0x81, 0xd0, 0x01, 0x00, 0xff, 0xff, 0x00, 0x40, 0x80, 0xd8, 0x01, 0x00,
85 0x00, 0x00, 0x00, 0x41, 0x80, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
86 0xd8, 0xb1, 0x01, 0x00, 0x68, 0x00, 0x22, 0xfa, 0x80, 0x30, 0x00, 0x00,
87 0x00, 0x00, 0x00, 0x4c, 0x81, 0xe0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x40,
88 0x80, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xde, 0xb1, 0x01, 0x00,
89 0x00, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0xfa,
90 0x80, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x81, 0x94, 0x01, 0x00,
91 0x00, 0x00, 0x00, 0x40, 0xd6, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40,
92 0xd5, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0xfa, 0x80, 0xe4, 0x01, 0x00,
93 0x00, 0x00, 0x00, 0xf6, 0x81, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
94 0xd6, 0xb1, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
95 0x10, 0x00, 0x00, 0xfb, 0xd6, 0xe5, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40,
96 0xd5, 0x99, 0x01, 0x00, 0x18, 0x00, 0x00, 0xfb, 0xd6, 0xe5, 0x01, 0x00,
97 0x48, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0xfa,
98 0xd6, 0xe5, 0x01, 0x00, 0x50, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
99 0x10, 0x00, 0x00, 0xfb, 0xd6, 0xe5, 0x01, 0x00, 0x03, 0x00, 0x00, 0xfb,
100 0x7a, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xdc, 0xb1, 0x01, 0x00,
101 0x7c, 0x00, 0x00, 0x4c, 0xdd, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x95, 0xe8,
102 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xe9, 0xfa, 0xb3, 0x01, 0x00,
103 0x00, 0x00, 0x00, 0x40, 0xd1, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0x42,
104 0x80, 0x88, 0x01, 0x00, 0x34, 0x00, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
105 0x7c, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x85, 0x00, 0x00, 0x40,
106 0x81, 0x32, 0x01, 0x00, 0x02, 0x80, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00,
107 0x7c, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
108 0x81, 0xb0, 0x01, 0x00, 0x8e, 0x00, 0x09, 0xf9, 0x81, 0x32, 0x00, 0x00,
109 0x8c, 0x00, 0x08, 0xf9, 0x81, 0x32, 0x00, 0x00, 0x98, 0x00, 0x1f, 0xfd,
110 0xf9, 0x33, 0x00, 0x00, 0x8b, 0x00, 0x9e, 0xfd, 0x81, 0x32, 0x00, 0x00,
111 0x00, 0x00, 0x00, 0x4a, 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48,
112 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf7, 0xb3, 0x01, 0x00,
113 0x00, 0x00, 0x80, 0x49, 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
114 0x19, 0xb1, 0x01, 0x00, 0x93, 0x00, 0x0a, 0xf9, 0x81, 0x32, 0x00, 0x00,
115 0x00, 0x00, 0x40, 0xfb, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0xfd,
116 0x81, 0xb2, 0x01, 0x00, 0x00, 0x07, 0x80, 0xf9, 0xf3, 0x8f, 0x01, 0x00,
117 0x00, 0x07, 0x42, 0xf9, 0xf3, 0x8f, 0x01, 0x00, 0x97, 0x00, 0xa2, 0xff,
118 0xf7, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x43, 0x40, 0x81, 0xb2, 0x01, 0x00,
119 0x00, 0x00, 0xa2, 0xff, 0xfb, 0xef, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc,
120 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb0, 0x01, 0x00,
121 0x00, 0x94, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xbb, 0x00, 0x00, 0x40,
122 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x46, 0xfd, 0x7f, 0x01, 0x00,
123 0x00, 0x94, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xce, 0x00, 0x00, 0x40,
124 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x44, 0xfd, 0x7f, 0x01, 0x00,
125 0x00, 0x94, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
126 0xf1, 0xb1, 0x01, 0x00, 0xff, 0x7f, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
127 0xff, 0x7f, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x9a, 0x13, 0x00, 0x40,
128 0xf5, 0x99, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
129 0x01, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40,
130 0xf5, 0x99, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
131 0x00, 0x02, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x03, 0x01, 0x00, 0x40,
132 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
133 0x9a, 0x13, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x40,
134 0xf5, 0x99, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
135 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
136 0xf5, 0x99, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
137 0x08, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x40,
138 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
139 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x02, 0x29, 0x00, 0x40,
140 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
141 0x00, 0x67, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
142 0xf5, 0x99, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
143 0x00, 0x00, 0x80, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
144 0xfd, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0xfd, 0x83, 0x01, 0x00,
145 0xff, 0x7f, 0x00, 0x40, 0x25, 0x99, 0x01, 0x00, 0xc4, 0x00, 0x00, 0x40,
146 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x44, 0x80, 0xb2, 0x00, 0x00,
147 0x00, 0x00, 0x00, 0x45, 0xfd, 0x93, 0x01, 0x00, 0xe2, 0x00, 0x00, 0x40,
148 0x83, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x45, 0x80, 0x32, 0x01, 0x00,
149 0x00, 0x00, 0x80, 0x46, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
150 0x83, 0x98, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x40, 0x2b, 0x31, 0x01, 0x00,
151 0x00, 0x00, 0xa2, 0x46, 0x88, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
152 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8c, 0xb0, 0x01, 0x00,
153 0xff, 0xff, 0x00, 0x46, 0x80, 0x88, 0x01, 0x00, 0xa5, 0xa5, 0xa2, 0x40,
154 0x80, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0xf0, 0x01, 0x00,
155 0xc9, 0x00, 0x82, 0x41, 0x89, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
156 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xfd, 0x83, 0x01, 0x00,
157 0xd4, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x44,
158 0x80, 0xb2, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x08, 0x83, 0x30, 0x01, 0x00,
159 0x00, 0x00, 0xa2, 0x45, 0x80, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x44,
160 0xfd, 0x93, 0x01, 0x00, 0x00, 0x30, 0x00, 0x08, 0x83, 0x98, 0x01, 0x00,
161 0x80, 0x00, 0x00, 0x40, 0x2b, 0x99, 0x01, 0x00, 0xdb, 0x00, 0x00, 0x40,
162 0x89, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x46, 0x80, 0xb2, 0x00, 0x00,
163 0xff, 0xff, 0x00, 0x94, 0x80, 0x88, 0x01, 0x00, 0xa5, 0xa5, 0xa2, 0x40,
164 0x80, 0x4e, 0x01, 0x00, 0x00, 0x00, 0x80, 0x43, 0x89, 0xb0, 0x01, 0x00,
165 0x03, 0x84, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00, 0xde, 0x00, 0x00, 0x40,
166 0x81, 0xb2, 0x00, 0x00, 0x03, 0x88, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00,
167 0x00, 0x00, 0x00, 0x20, 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0x96,
168 0x80, 0xb2, 0x00, 0x00, 0xdf, 0x00, 0xa2, 0x41, 0x8d, 0x50, 0x00, 0x00,
169 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xff, 0x7f, 0x00, 0x40,
170 0x25, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe0, 0x01, 0x00,
171 0xdd, 0x00, 0x00, 0x44, 0x82, 0x14, 0x01, 0x00, 0x00, 0x00, 0x90, 0x94,
172 0x8a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xf0, 0xb1, 0x01, 0x00,
173 0x10, 0x00, 0x00, 0x45, 0x88, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
174 0x89, 0xd0, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x44, 0x2b, 0x41, 0x01, 0x00,
175 0xec, 0x00, 0x08, 0x41, 0x80, 0x32, 0x00, 0x00, 0xed, 0x00, 0x00, 0x94,
176 0x24, 0xb1, 0x00, 0x00, 0x10, 0x00, 0x00, 0x94, 0x24, 0xf5, 0x01, 0x00,
177 0x00, 0x00, 0x00, 0x94, 0xf0, 0xb1, 0x01, 0x00, 0xf2, 0x00, 0xa0, 0x44,
178 0x89, 0x50, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x44, 0x2b, 0x41, 0x01, 0x00,
179 0x00, 0x00, 0x00, 0x94, 0xf0, 0xb1, 0x01, 0x00, 0xef, 0x00, 0x20, 0x44,
180 0x89, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x45, 0x88, 0xf4, 0x01, 0x00,
181 0x00, 0x00, 0x00, 0xfa, 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x42,
182 0x89, 0xd0, 0x00, 0x00, 0xf7, 0x00, 0xa0, 0xfa, 0x8a, 0x40, 0x00, 0x00,
183 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc0, 0x01, 0x00, 0xf5, 0x00, 0xa3, 0x42,
184 0x89, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x45, 0x88, 0x88, 0x01, 0x00,
185 0x10, 0x00, 0x00, 0x45, 0x8a, 0xf4, 0x01, 0x00, 0xfc, 0x00, 0x90, 0x44,
186 0x8a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc0, 0x01, 0x00,
187 0xff, 0xff, 0x00, 0x45, 0x8a, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x80, 0x50,
188 0x8b, 0xe0, 0x01, 0x00, 0xff, 0x7f, 0x00, 0x40, 0x25, 0x99, 0x01, 0x00,
189 0x7c, 0x00, 0x00, 0x40, 0x2b, 0x99, 0x01, 0x00, 0x00, 0x30, 0x00, 0x40,
190 0x83, 0x98, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x08, 0x83, 0x14, 0x01, 0x00,
191 0x00, 0x00, 0x00, 0x94, 0x2a, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
192 0xf9, 0x9b, 0x01, 0x00, 0xdd, 0x00, 0x00, 0xfc, 0x19, 0x31, 0x01, 0x00,
193 0x00, 0x00, 0x40, 0x94, 0x80, 0xb2, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x44,
194 0x2b, 0x41, 0x01, 0x00, 0x00, 0x00, 0x41, 0x94, 0x80, 0xb2, 0x01, 0x00,
195 0x00, 0x00, 0x00, 0x41, 0xf9, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
196 0x2b, 0xc1, 0x01, 0x00, 0x04, 0x01, 0x9f, 0x94, 0x80, 0x32, 0x00, 0x00,
197 0x02, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x10, 0x01, 0x00, 0x51,
198 0x93, 0xb0, 0x00, 0x00, 0x10, 0x01, 0x00, 0x4d, 0x93, 0xb0, 0x00, 0x00,
199 0x10, 0x01, 0x00, 0x49, 0x93, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
200 0x93, 0xb0, 0x01, 0x00, 0x10, 0x01, 0xa2, 0x41, 0x93, 0x50, 0x00, 0x00,
201 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40,
202 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x11, 0x40, 0x81, 0xb2, 0x01, 0x00,
203 0x00, 0x00, 0x12, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x13, 0x40,
204 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0xb2, 0x01, 0x00,
205 0x00, 0x00, 0x15, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x16, 0x40,
206 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x17, 0x40, 0x81, 0xb2, 0x01, 0x00,
207 0x00, 0x00, 0x18, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x19, 0x40,
208 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x40, 0x81, 0xb2, 0x01, 0x00,
209 0x00, 0x00, 0x1b, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x40,
210 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x40, 0x81, 0xb2, 0x01, 0x00,
211 0x00, 0x00, 0x1e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x40,
212 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x70, 0x40, 0x81, 0xb2, 0x01, 0x00,
213 0x00, 0x00, 0x71, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x72, 0x40,
214 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x73, 0x40, 0x81, 0xb2, 0x01, 0x00,
215 0x00, 0x00, 0x74, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x75, 0x40,
216 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x76, 0x40, 0x81, 0xb2, 0x01, 0x00,
217 0x00, 0x00, 0x77, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x78, 0x40,
218 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x79, 0x40, 0x81, 0xb2, 0x01, 0x00,
219 0x00, 0x00, 0x7a, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7b, 0x40,
220 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x40, 0x81, 0xb2, 0x01, 0x00,
221 0x00, 0x00, 0x7d, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7e, 0x40,
222 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x81, 0xb2, 0x01, 0x00,
223 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40,
224 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xa1, 0xd1, 0x01, 0x00,
225 0x00, 0x00, 0x00, 0x40, 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
226 0x19, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
227 0x00, 0x00, 0x00, 0x40, 0x15, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
228 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00,
229 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
230 0x0d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0b, 0xb0, 0x01, 0x00,
231 0x00, 0x00, 0x00, 0x40, 0x09, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
232 0x07, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
233 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
234 0x01, 0xb0, 0x01, 0x00, 0x3b, 0x01, 0x20, 0x48, 0xa1, 0x51, 0x00, 0x00,
235 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x47, 0x01, 0x22, 0x4b,
236 0x74, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
237 0x60, 0x00, 0x00, 0x4b, 0x60, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb1,
238 0x7e, 0xb1, 0x01, 0x00, 0x48, 0x01, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
239 0x45, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x05, 0x00, 0x80, 0x40,
240 0x97, 0x98, 0x01, 0x00, 0x18, 0x00, 0x00, 0xaa, 0x96, 0x88, 0x01, 0x00,
241 0x00, 0x00, 0x80, 0x43, 0x97, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0xaa,
242 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
243 0x00, 0x00, 0x00, 0x58, 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x40,
244 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00,
245 0xd8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40,
246 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x07, 0x90, 0x01, 0x00,
247 0xd8, 0x9f, 0x00, 0x40, 0xbf, 0xb3, 0x00, 0x00, 0x5a, 0x01, 0x22, 0xcc,
248 0x85, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x07, 0x90, 0x01, 0x00,
249 0xd8, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
250 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00,
251 0xd0, 0x14, 0x00, 0x40, 0xa1, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
252 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf1, 0xb1, 0x01, 0x00,
253 0x00, 0x00, 0x00, 0xd0, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
254 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe1, 0xb1, 0x01, 0x00,
255 0x07, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20,
256 0x62, 0xdd, 0x01, 0x00, 0x63, 0x01, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
257 0x00, 0x00, 0x00, 0xcc, 0x85, 0x93, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40,
258 0x81, 0x32, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
259 0x00, 0x00, 0x00, 0xfa, 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa,
260 0xa4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbc, 0xb3, 0x01, 0x00,
261 0x00, 0x14, 0x2f, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe7,
262 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xa9, 0xb3, 0x01, 0x00,
263 0xff, 0x00, 0x00, 0xdd, 0x81, 0x88, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40,
264 0x80, 0xf4, 0x01, 0x00, 0x73, 0x01, 0x00, 0x40, 0x80, 0xc8, 0x01, 0x00,
265 0x86, 0x01, 0x00, 0xdd, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
266 0x10, 0xb1, 0x00, 0x00, 0x87, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
267 0x88, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x89, 0x01, 0x00, 0x40,
268 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
269 0x8b, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x40,
270 0x81, 0xb2, 0x00, 0x00, 0x8f, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
271 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x40,
272 0x81, 0xb2, 0x00, 0x00, 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
273 0xc4, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x40,
274 0x81, 0xb2, 0x00, 0x00, 0x82, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
275 0x83, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00, 0xb8, 0x02, 0x00, 0x40,
276 0x81, 0xb2, 0x28, 0x00, 0xd4, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00,
277 0xd5, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00, 0xd6, 0x9f, 0x00, 0x40,
278 0x81, 0xb2, 0x28, 0x00, 0xd7, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00,
279 0x72, 0x01, 0x00, 0x41, 0x81, 0xc0, 0x28, 0x00, 0x55, 0x01, 0x51, 0x49,
280 0xfd, 0x93, 0x28, 0x00, 0x55, 0x01, 0x52, 0x4a, 0xfd, 0x93, 0x2a, 0x00,
281 0x55, 0x01, 0x55, 0x49, 0xfd, 0x83, 0x2a, 0x00, 0x55, 0x01, 0x56, 0x4a,
282 0xfd, 0x83, 0x2a, 0x00, 0x50, 0x01, 0x91, 0x81, 0x80, 0x30, 0x2a, 0x00,
283 0x55, 0x01, 0x45, 0x40, 0x81, 0xb2, 0x2a, 0x00, 0x50, 0x01, 0x91, 0x82,
284 0x80, 0x30, 0x2a, 0x00, 0x55, 0x01, 0x46, 0x40, 0x81, 0xb2, 0x2a, 0x00,
285 0x00, 0x00, 0x00, 0x40, 0x89, 0xb0, 0x2b, 0x00, 0x00, 0x00, 0x2f, 0x40,
286 0x81, 0xb0, 0x01, 0x00, 0x00, 0x14, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
287 0xb3, 0x01, 0x22, 0xde, 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
288 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
289 0x92, 0x01, 0xa2, 0x44, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
290 0x49, 0xd1, 0x01, 0x00, 0x9a, 0x01, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00,
291 0x96, 0x01, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x50, 0x01, 0x00, 0x41,
292 0xbf, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xbf, 0xb3, 0x01, 0x00,
293 0x50, 0x01, 0xa0, 0x0f, 0xbd, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde,
294 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0xc1, 0x01, 0x00,
295 0xb5, 0x01, 0x00, 0x40, 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x42, 0x40,
296 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff, 0x85, 0xb0, 0x01, 0x00,
297 0x00, 0x00, 0x00, 0xde, 0x19, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x42, 0xff,
298 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff, 0xe1, 0xb1, 0x01, 0x00,
299 0x00, 0x00, 0x00, 0x44, 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x2f, 0xff,
300 0xe1, 0xb1, 0x01, 0x00, 0x08, 0x14, 0x00, 0xa4, 0x80, 0xcc, 0x01, 0x00,
301 0xaa, 0x01, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
302 0x85, 0xc0, 0x01, 0x00, 0xa8, 0x01, 0xa2, 0x4c, 0x81, 0x50, 0x00, 0x00,
303 0xb4, 0x01, 0x22, 0xd2, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x01, 0x22, 0x41,
304 0xa5, 0x6f, 0x00, 0x00, 0x50, 0x01, 0xa2, 0xe0, 0x81, 0x32, 0x00, 0x00,
305 0x00, 0x00, 0x00, 0xd2, 0xc1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
306 0x89, 0x90, 0x01, 0x00, 0x00, 0x00, 0x40, 0x42, 0x80, 0xb2, 0x01, 0x00,
307 0x00, 0x00, 0x41, 0x43, 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
308 0x88, 0x94, 0x01, 0x00, 0x55, 0x01, 0x00, 0x44, 0xe0, 0xb1, 0x00, 0x00,
309 0xb1, 0x01, 0x00, 0x48, 0x49, 0xc1, 0x00, 0x00, 0xaf, 0x01, 0x00, 0x5b,
310 0x89, 0x90, 0x00, 0x00, 0xa8, 0x9f, 0x00, 0xa0, 0x9e, 0xb0, 0x00, 0x00,
311 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x14, 0x00, 0x40,
312 0x49, 0x99, 0x01, 0x00, 0x00, 0x00, 0x23, 0x40, 0x81, 0xb0, 0x01, 0x00,
313 0xbe, 0x01, 0x22, 0xde, 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
314 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
315 0xb9, 0x01, 0xa2, 0x44, 0x81, 0x6c, 0x00, 0x00, 0x50, 0x01, 0x00, 0x43,
316 0xbf, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb1, 0x01, 0x00,
317 0x00, 0x00, 0x40, 0xf8, 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0xf0,
318 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
319 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x55, 0x01, 0x00, 0x40,
320 0xe1, 0xb1, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x40, 0x91, 0xb0, 0x00, 0x00,
321 0x00, 0x00, 0x00, 0x41, 0x91, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2e, 0x40,
322 0x49, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00,
323 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0xcb, 0x01, 0x00, 0x40,
324 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00,
325 0xd1, 0x01, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00, 0x53, 0x01, 0x00, 0xde,
326 0xa1, 0xb3, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
327 0xe5, 0x01, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x40,
328 0x81, 0xb2, 0x00, 0x00, 0x52, 0x01, 0x00, 0xdf, 0xe1, 0xb1, 0x00, 0x00,
329 0x00, 0x00, 0x00, 0xd0, 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde,
330 0xa1, 0xb1, 0x01, 0x00, 0x02, 0x00, 0x00, 0xd2, 0xa5, 0xe7, 0x01, 0x00,
331 0x00, 0x00, 0x00, 0xd2, 0xc1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
332 0xf0, 0xb1, 0x01, 0x00, 0xdb, 0x01, 0x22, 0x44, 0xc1, 0x53, 0x00, 0x00,
333 0xda, 0x01, 0x84, 0x41, 0x81, 0x40, 0x00, 0x00, 0xde, 0x01, 0x00, 0x40,
334 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x45, 0xb1, 0x01, 0x00,
335 0xd5, 0x01, 0x00, 0x41, 0xa1, 0xc1, 0x00, 0x00, 0xda, 0x02, 0x00, 0x40,
336 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
337 0x55, 0x01, 0x00, 0xdd, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
338 0x81, 0xb0, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00,
339 0xda, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x40, 0x00, 0x00, 0xd3,
340 0xa7, 0xcb, 0x01, 0x00, 0xf8, 0x02, 0x00, 0xe0, 0xa5, 0xb3, 0x00, 0x00,
341 0x03, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00, 0x53, 0x01, 0x00, 0xde,
342 0xa1, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xbf, 0xb3, 0x01, 0x00,
343 0x00, 0x00, 0x00, 0xde, 0x81, 0x90, 0x01, 0x00, 0x50, 0x01, 0xa2, 0xba,
344 0x80, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0xde, 0x61, 0x99, 0x01, 0x00,
345 0xe8, 0x01, 0xa8, 0xb1, 0x80, 0x30, 0x00, 0x00, 0x52, 0x01, 0x00, 0x40,
346 0xe0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xba, 0xb3, 0x01, 0x00,
347 0x6b, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x60, 0x02, 0x00, 0x4d,
348 0x83, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe1, 0xb3, 0x01, 0x00,
349 0x00, 0x00, 0x00, 0x44, 0xe3, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
350 0xe5, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe9, 0xb3, 0x01, 0x00,
351 0x00, 0x00, 0x00, 0x44, 0xeb, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
352 0xf5, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf7, 0xb3, 0x01, 0x00,
353 0x00, 0x00, 0x00, 0x44, 0xf9, 0xb3, 0x01, 0x00, 0xf9, 0x01, 0x22, 0x40,
354 0x8f, 0x6f, 0x00, 0x00, 0x78, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
355 0x60, 0x02, 0x00, 0xc7, 0x83, 0x30, 0x01, 0x00, 0x80, 0x02, 0x00, 0x40,
356 0x81, 0x98, 0x01, 0x00, 0x60, 0x02, 0x00, 0x42, 0x83, 0x30, 0x01, 0x00,
357 0x00, 0x00, 0x00, 0xe8, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe9,
358 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xea, 0xf1, 0xb1, 0x01, 0x00,
359 0x00, 0x00, 0x00, 0xeb, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x85,
360 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xec, 0xf1, 0xb1, 0x01, 0x00,
361 0x00, 0x00, 0x00, 0xed, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb2,
362 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xf0, 0xb1, 0x01, 0x00,
363 0x00, 0x00, 0x00, 0xac, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
364 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xf0, 0xb1, 0x01, 0x00,
365 0x00, 0x00, 0x00, 0xb9, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xba,
366 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xbb, 0xf0, 0xb1, 0x01, 0x00,
367 0x0c, 0x02, 0xb8, 0x40, 0x81, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
368 0x81, 0x90, 0x01, 0x00, 0x0e, 0x02, 0xb9, 0x40, 0x81, 0x32, 0x00, 0x00,
369 0x00, 0x00, 0x00, 0x41, 0x81, 0x90, 0x01, 0x00, 0x10, 0x02, 0xba, 0x40,
370 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x81, 0x90, 0x01, 0x00,
371 0x12, 0x02, 0xbb, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
372 0x81, 0x90, 0x01, 0x00, 0x14, 0x02, 0xbc, 0x40, 0x81, 0x32, 0x00, 0x00,
373 0x00, 0x00, 0x00, 0x44, 0x81, 0x90, 0x01, 0x00, 0x16, 0x02, 0xbd, 0x40,
374 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x81, 0x90, 0x01, 0x00,
375 0x18, 0x02, 0xbe, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
376 0x81, 0x90, 0x01, 0x00, 0x1a, 0x02, 0xbf, 0x40, 0x81, 0x32, 0x00, 0x00,
377 0x00, 0x00, 0x00, 0x47, 0x81, 0x90, 0x01, 0x00, 0x1c, 0x02, 0xc8, 0x40,
378 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x81, 0x90, 0x01, 0x00,
379 0x1e, 0x02, 0xc9, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
380 0x81, 0x90, 0x01, 0x00, 0x20, 0x02, 0xca, 0x40, 0x81, 0x32, 0x00, 0x00,
381 0x00, 0x00, 0x00, 0x4a, 0x81, 0x90, 0x01, 0x00, 0x22, 0x02, 0xcb, 0x40,
382 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x81, 0x90, 0x01, 0x00,
383 0x24, 0x02, 0xcc, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
384 0x81, 0x90, 0x01, 0x00, 0x26, 0x02, 0xcd, 0x40, 0x81, 0x32, 0x00, 0x00,
385 0x00, 0x00, 0x00, 0x4d, 0x81, 0x90, 0x01, 0x00, 0x28, 0x02, 0xce, 0x40,
386 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x81, 0x90, 0x01, 0x00,
387 0x2a, 0x02, 0xcf, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
388 0x81, 0x90, 0x01, 0x00, 0x2c, 0x02, 0xf0, 0x40, 0x81, 0x32, 0x00, 0x00,
389 0x00, 0x00, 0x00, 0x50, 0x81, 0x90, 0x01, 0x00, 0x2e, 0x02, 0xf1, 0x40,
390 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x81, 0x90, 0x01, 0x00,
391 0x30, 0x02, 0xf2, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
392 0x81, 0x90, 0x01, 0x00, 0x32, 0x02, 0xf3, 0x40, 0x81, 0x32, 0x00, 0x00,
393 0x00, 0x00, 0x00, 0x53, 0x81, 0x90, 0x01, 0x00, 0x34, 0x02, 0xf4, 0x40,
394 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x81, 0x90, 0x01, 0x00,
395 0x36, 0x02, 0xf5, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
396 0x81, 0x90, 0x01, 0x00, 0x38, 0x02, 0xf6, 0x40, 0x81, 0x32, 0x00, 0x00,
397 0x00, 0x00, 0x00, 0x56, 0x81, 0x90, 0x01, 0x00, 0x3a, 0x02, 0xf7, 0x40,
398 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0x90, 0x01, 0x00,
399 0x3c, 0x02, 0xf8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
400 0x81, 0x90, 0x01, 0x00, 0x3e, 0x02, 0xf9, 0x40, 0x81, 0x32, 0x00, 0x00,
401 0x00, 0x00, 0x00, 0x59, 0x81, 0x90, 0x01, 0x00, 0x40, 0x02, 0xfa, 0x40,
402 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x81, 0x90, 0x01, 0x00,
403 0x42, 0x02, 0xfb, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
404 0x81, 0x90, 0x01, 0x00, 0x44, 0x02, 0xfc, 0x40, 0x81, 0x32, 0x00, 0x00,
405 0x00, 0x00, 0x00, 0x5c, 0x81, 0x90, 0x01, 0x00, 0x46, 0x02, 0xfd, 0x40,
406 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x81, 0x90, 0x01, 0x00,
407 0x48, 0x02, 0xfe, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e,
408 0x81, 0x90, 0x01, 0x00, 0x4a, 0x02, 0xff, 0x40, 0x81, 0x32, 0x00, 0x00,
409 0x00, 0x00, 0x00, 0x5f, 0x81, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
410 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00,
411 0xd8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40,
412 0x81, 0x32, 0x01, 0x00, 0xd0, 0x14, 0x2e, 0x06, 0xa5, 0xb3, 0x01, 0x00,
413 0x40, 0x00, 0x00, 0xd3, 0xa7, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
414 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xf1, 0xb1, 0x01, 0x00,
415 0x00, 0x00, 0x00, 0xf2, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf4,
416 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xf1, 0xb1, 0x01, 0x00,
417 0x00, 0x00, 0x00, 0xfa, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
418 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf1, 0xb1, 0x01, 0x00,
419 0x00, 0x00, 0x00, 0xeb, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee,
420 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xef, 0xf1, 0xb1, 0x01, 0x00,
421 0x00, 0x00, 0x00, 0xf3, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6,
422 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf1, 0xb1, 0x01, 0x00,
423 0xdb, 0x01, 0x00, 0xc7, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
424 0x81, 0xb2, 0x01, 0x00, 0x66, 0x02, 0x00, 0x48, 0x80, 0x32, 0x00, 0x00,
425 0x00, 0x00, 0x51, 0x40, 0x1a, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x4d, 0x40,
426 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
427 0x63, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x5f, 0x02, 0x49, 0x40,
428 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x52, 0x40, 0x1c, 0xb1, 0x01, 0x00,
429 0x00, 0x00, 0x4e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40,
430 0x81, 0xb2, 0x01, 0x00, 0x68, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
431 0x5f, 0x02, 0x4a, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
432 0x9e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xd8, 0xb3, 0x01, 0x00,
433 0x00, 0x00, 0x00, 0xa1, 0xd0, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2,
434 0xd2, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xd4, 0xb3, 0x01, 0x00,
435 0x00, 0x00, 0x00, 0xd0, 0xd6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1,
436 0xdc, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xde, 0xb3, 0x01, 0x00,
437 0x00, 0x00, 0x00, 0x88, 0xda, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4,
438 0x8e, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xe6, 0xb3, 0x01, 0x00,
439 0x00, 0x00, 0x00, 0xac, 0xec, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x99,
440 0xfa, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe0, 0xb3, 0x01, 0x00,
441 0x00, 0x00, 0x00, 0xd5, 0xe2, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
442 0xe4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe8, 0xb3, 0x01, 0x00,
443 0x00, 0x00, 0x00, 0xd5, 0xea, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
444 0xf4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xf6, 0xb3, 0x01, 0x00,
445 0x00, 0x00, 0x00, 0xd5, 0xf8, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc7,
446 0xa9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0xb1, 0x01, 0x00,
447 0x84, 0x02, 0x00, 0x40, 0x91, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
448 0x91, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00,
449 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0x88, 0x02, 0x00, 0x40,
450 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00,
451 0x8d, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x98, 0x02, 0x00, 0x40,
452 0x81, 0xb2, 0x00, 0x00, 0x98, 0x02, 0x00, 0x46, 0xa3, 0xb3, 0x00, 0x00,
453 0x9b, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x40,
454 0x81, 0xb2, 0x00, 0x00, 0x8f, 0x02, 0x23, 0x50, 0xa5, 0x6f, 0x00, 0x00,
455 0x00, 0x00, 0x00, 0x50, 0xa5, 0xb3, 0x01, 0x00, 0xe8, 0x02, 0x00, 0x42,
456 0xa5, 0x63, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
457 0xd0, 0x14, 0x2d, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
458 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde, 0xa1, 0xb1, 0x01, 0x00,
459 0x00, 0x00, 0x00, 0xf8, 0x00, 0xb0, 0x01, 0x00, 0x97, 0x02, 0x22, 0x44,
460 0xa5, 0x53, 0x00, 0x00, 0x94, 0x02, 0x00, 0x41, 0xa1, 0xc1, 0x00, 0x00,
461 0x55, 0x01, 0x00, 0xdd, 0xa1, 0xb1, 0x00, 0x00, 0xe8, 0x02, 0x00, 0xde,
462 0xa1, 0x33, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
463 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
464 0xbf, 0xb3, 0x01, 0x00, 0x50, 0x01, 0xa2, 0xd2, 0x77, 0x7d, 0x00, 0x00,
465 0x00, 0x00, 0x00, 0xd2, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde,
466 0x63, 0xb1, 0x01, 0x00, 0x9e, 0x02, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
467 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xe8, 0x02, 0x00, 0x54,
468 0xa5, 0x33, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
469 0xd0, 0x14, 0x2d, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
470 0xd0, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd2, 0xb3, 0x01, 0x00,
471 0x00, 0x00, 0x00, 0xf8, 0xd4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
472 0xd6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0xb1, 0x01, 0x00,
473 0xac, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x60, 0x02, 0x00, 0x46,
474 0x83, 0x30, 0x01, 0x00, 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
475 0x00, 0x00, 0x00, 0xa0, 0x9e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe8,
476 0x43, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x45, 0xb1, 0x01, 0x00,
477 0x00, 0x00, 0x00, 0xea, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xeb,
478 0xa1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0xb1, 0x01, 0x00,
479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
483 0xd0, 0x14, 0x2e, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
484 0xa3, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc1, 0xb3, 0x01, 0x00,
485 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0xbd, 0x02, 0x00, 0x40,
486 0x10, 0xc9, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x05, 0x81, 0xb0, 0x00, 0x00,
487 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xcb, 0x02, 0x00, 0x05,
488 0x81, 0xb0, 0x00, 0x00, 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
489 0xd0, 0x02, 0x00, 0x44, 0xa5, 0xb3, 0x00, 0x00, 0xd2, 0x02, 0x00, 0x44,
490 0xa5, 0xb3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0xa4, 0xe7, 0x01, 0x00,
491 0x00, 0x00, 0x00, 0xe0, 0x81, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0xc1,
492 0xf0, 0x89, 0x01, 0x00, 0xc8, 0x02, 0x22, 0x41, 0x81, 0x50, 0x00, 0x00,
493 0xc4, 0x02, 0x00, 0x41, 0xc1, 0xc3, 0x00, 0x00, 0xda, 0x02, 0x00, 0x40,
494 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
495 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40,
496 0xa4, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x91, 0xb1, 0x01, 0x00,
497 0xff, 0xff, 0x00, 0xc9, 0xf0, 0x89, 0x01, 0x00, 0xc8, 0x02, 0x22, 0x41,
498 0x81, 0x50, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x41, 0xc1, 0xc3, 0x00, 0x00,
499 0xff, 0xff, 0x00, 0xde, 0x85, 0x89, 0x01, 0x00, 0xc8, 0x02, 0x00, 0xc2,
500 0xe0, 0xb1, 0x00, 0x00, 0xff, 0xff, 0x00, 0xde, 0x95, 0x89, 0x01, 0x00,
501 0xc8, 0x02, 0x00, 0xca, 0xe0, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
502 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
503 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
504 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xa7, 0xb3, 0x01, 0x00,
505 0x00, 0x00, 0x00, 0xd8, 0xa9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
506 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00,
507 0x00, 0x00, 0x00, 0x20, 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2,
508 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf1, 0xb1, 0x01, 0x00,
509 0x00, 0x00, 0x00, 0xd4, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
510 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x61, 0xb1, 0x01, 0x00,
511 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00, 0xe2, 0x02, 0xa8, 0x40,
512 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcc, 0x85, 0x93, 0x01, 0x00,
513 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
514 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
515 0x00, 0x00, 0x00, 0xe7, 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8,
516 0xa9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
517 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
518 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xf1, 0xb1, 0x01, 0x00,
519 0x00, 0x00, 0x00, 0xd0, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3,
520 0xf1, 0xb1, 0x01, 0x00, 0xe1, 0x02, 0x00, 0xd4, 0xe1, 0xb1, 0x00, 0x00,
521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
524 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
525 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xcc,
526 0x85, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xb0, 0x01, 0x00,
527 0xfa, 0x02, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0xf9, 0x02, 0xa2, 0xf2,
528 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcc, 0x85, 0x83, 0x01, 0x00,
529 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
530 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
531 0xb5, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x41,
532 0x99, 0xb3, 0x01, 0x00, 0x0a, 0x03, 0x22, 0x44, 0x81, 0x6c, 0x00, 0x00,
533 0x12, 0x03, 0x22, 0x48, 0x81, 0x6c, 0x00, 0x00, 0x0c, 0x03, 0x22, 0x4c,
534 0x81, 0x6c, 0x00, 0x00, 0x16, 0x03, 0x22, 0x50, 0x81, 0x6c, 0x00, 0x00,
535 0x17, 0x03, 0x22, 0x54, 0x81, 0x6c, 0x00, 0x00, 0x19, 0x03, 0x22, 0x58,
536 0x81, 0x6c, 0x00, 0x00, 0x1e, 0x03, 0x22, 0x5c, 0x81, 0x6c, 0x00, 0x00,
537 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc,
538 0x09, 0xb0, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0xca, 0x01, 0xb0, 0x00, 0x00,
539 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
540 0xf3, 0x83, 0x01, 0x00, 0x10, 0x03, 0xa2, 0x42, 0x05, 0x6c, 0x00, 0x00,
541 0x00, 0x00, 0x00, 0x41, 0x05, 0xb0, 0x01, 0x00, 0xdd, 0x9f, 0x22, 0xca,
542 0x07, 0x14, 0x00, 0x00, 0xdd, 0x9f, 0x00, 0x45, 0xf3, 0x93, 0x00, 0x00,
543 0xdd, 0x9f, 0x20, 0x43, 0x95, 0x6f, 0x00, 0x00, 0xdd, 0x9f, 0x80, 0xca,
544 0x05, 0x30, 0x00, 0x00, 0xdd, 0x9f, 0x22, 0x01, 0x80, 0x30, 0x00, 0x00,
545 0xdd, 0x9f, 0x00, 0xcb, 0xdb, 0x91, 0x00, 0x00, 0x57, 0x01, 0x00, 0xbc,
546 0xab, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xb1, 0xb3, 0x01, 0x00,
547 0xdd, 0x9f, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00, 0xff, 0x00, 0x00, 0xca,
548 0x81, 0x88, 0x01, 0x00, 0xdd, 0x9f, 0xa2, 0x40, 0x74, 0x7d, 0x00, 0x00,
549 0x60, 0x00, 0x20, 0x40, 0x60, 0x99, 0x01, 0x00, 0x1b, 0x03, 0xa8, 0xb1,
550 0x82, 0x30, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
551 0xdd, 0x9f, 0x00, 0xca, 0x79, 0xb3, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
552 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00,
553 0x00, 0x00, 0x00, 0x43, 0xcb, 0x83, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
554 0x81, 0xb2, 0x01, 0x00, 0x22, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
555 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
556 0x81, 0xb2, 0x01, 0x00, 0x2d, 0x03, 0x91, 0x82, 0x82, 0x30, 0x00, 0x00,
557 0x00, 0x00, 0x00, 0x8a, 0x80, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40,
558 0x80, 0xce, 0x01, 0x00, 0x2b, 0x03, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
559 0x2d, 0x03, 0x56, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb5, 0x03, 0x00, 0x40,
560 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
561 0xb5, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52,
562 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00,
563 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
564 0xcd, 0x83, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
565 0x32, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0x40,
566 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
567 0x3d, 0x03, 0x91, 0x81, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89,
568 0x80, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
569 0x3b, 0x03, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x3d, 0x03, 0x55, 0x40,
570 0x81, 0xb2, 0x00, 0x00, 0xb5, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
571 0x00, 0x00, 0x00, 0x52, 0x07, 0x90, 0x01, 0x00, 0xb5, 0x03, 0x00, 0x40,
572 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
573 0xd8, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00, 0xb0, 0x03, 0x00, 0x40,
574 0xa1, 0x99, 0x01, 0x00, 0xc4, 0x14, 0x2f, 0x40, 0x99, 0xb3, 0x01, 0x00,
575 0x57, 0x01, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
577 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
578 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
579 0x30, 0x94, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x90, 0x00, 0xf8,
580 0x80, 0x98, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf2, 0x88, 0xe4, 0x01, 0x00,
581 0x20, 0x00, 0x00, 0x40, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
582 0x23, 0x91, 0x01, 0x00, 0x4d, 0x03, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
583 0x30, 0x00, 0x00, 0x40, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
584 0x23, 0x91, 0x01, 0x00, 0x50, 0x03, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
585 0x40, 0x00, 0x00, 0x40, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
586 0x23, 0x91, 0x01, 0x00, 0x53, 0x03, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
587 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00, 0x55, 0x03, 0x1f, 0x91,
588 0x80, 0x32, 0x00, 0x00, 0x00, 0x08, 0x80, 0x40, 0x20, 0x99, 0x01, 0x00,
589 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
590 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x48, 0x84, 0x84, 0x00, 0x00,
591 0x00, 0x00, 0x00, 0x5f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
592 0x8f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x62, 0xb1, 0x01, 0x00,
593 0x5a, 0x03, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x47,
594 0x8e, 0xc8, 0x01, 0x00, 0x58, 0x03, 0x00, 0x5c, 0x8f, 0x80, 0x00, 0x00,
595 0xe0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x58, 0x15, 0x2d, 0x40,
596 0x8d, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2d, 0xf0, 0x88, 0xb0, 0x01, 0x00,
597 0x00, 0x00, 0x00, 0xfa, 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
598 0x81, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x45, 0x82, 0x88, 0x01, 0x00,
599 0x00, 0x00, 0x00, 0x43, 0x8b, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
600 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x94, 0x01, 0x00,
601 0x20, 0x00, 0x00, 0x41, 0x60, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
602 0x8d, 0xc0, 0x01, 0x00, 0x74, 0x03, 0x22, 0x5f, 0x8d, 0x6c, 0x00, 0x00,
603 0x65, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x63, 0x03, 0x00, 0x40,
604 0x81, 0xb2, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x85, 0x98, 0x01, 0x00,
605 0x00, 0x00, 0x00, 0x44, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
606 0x86, 0xb0, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x43, 0x86, 0xd8, 0x01, 0x00,
607 0x00, 0x00, 0xa6, 0x41, 0x85, 0x50, 0x01, 0x00, 0x70, 0x03, 0x00, 0x41,
608 0x83, 0xe0, 0x00, 0x00, 0x6e, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
609 0x00, 0x00, 0x00, 0x48, 0x85, 0xe0, 0x01, 0x00, 0xd0, 0x14, 0x2f, 0x46,
610 0x84, 0x94, 0x01, 0x00, 0x20, 0x00, 0x00, 0x42, 0x60, 0x99, 0x01, 0x00,
611 0xc0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
612 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
614 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
615 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
616 0x81, 0xb2, 0x00, 0x00, 0x07, 0x00, 0x00, 0x45, 0x80, 0x88, 0x01, 0x00,
617 0x00, 0x00, 0x00, 0x43, 0x8b, 0xf0, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40,
618 0x83, 0x98, 0x01, 0x00, 0x85, 0x03, 0xa0, 0x41, 0x81, 0x50, 0x00, 0x00,
619 0x83, 0x03, 0x00, 0x41, 0x82, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
620 0x8e, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
621 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
622 0x49, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
623 0x00, 0x39, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
624 0xf1, 0xb1, 0x01, 0x00, 0x8b, 0x03, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
625 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x44,
626 0x82, 0xf4, 0x01, 0x00, 0x1a, 0x15, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00,
627 0x70, 0x15, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x08, 0x00, 0x40,
628 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
629 0x00, 0x39, 0x00, 0x40, 0xe1, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
630 0x61, 0x99, 0x01, 0x00, 0x70, 0x15, 0x00, 0x43, 0x62, 0x99, 0x01, 0x00,
631 0x95, 0x03, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x97, 0x03, 0x22, 0x5a,
632 0x73, 0x7d, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
633 0x98, 0x03, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42,
634 0x84, 0xc8, 0x01, 0x00, 0x90, 0x03, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
635 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x58, 0x15, 0x2d, 0x40,
638 0x8d, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2d, 0xf0, 0x88, 0xb0, 0x01, 0x00,
639 0x00, 0x00, 0x00, 0x40, 0x8f, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6,
640 0x90, 0xb0, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x48, 0x90, 0x98, 0x01, 0x00,
641 0x00, 0x00, 0x00, 0x45, 0x93, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa,
642 0x8a, 0xb0, 0x01, 0x00, 0x80, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
643 0x02, 0x00, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00, 0xac, 0x03, 0x22, 0x40,
644 0x82, 0x6c, 0x00, 0x00, 0xb0, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
645 0x58, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
646 0x8d, 0xc0, 0x01, 0x00, 0xb5, 0x03, 0x22, 0x5f, 0x8d, 0x6c, 0x00, 0x00,
647 0xa7, 0x03, 0xa2, 0x41, 0x93, 0x50, 0x00, 0x00, 0xa5, 0x03, 0x00, 0x40,
648 0x81, 0xb2, 0x00, 0x00, 0xff, 0x07, 0x00, 0x47, 0x84, 0x88, 0x01, 0x00,
649 0x00, 0x00, 0xa6, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xed, 0x9f, 0x00, 0x47,
650 0x80, 0x30, 0x01, 0x00, 0x00, 0x02, 0x00, 0x47, 0x8e, 0xc8, 0x01, 0x00,
651 0xb0, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
652 0x50, 0xb3, 0x01, 0x00, 0xbb, 0x03, 0x20, 0x18, 0x89, 0x6c, 0x00, 0x00,
653 0x04, 0x00, 0x00, 0xa6, 0x84, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
654 0x86, 0xb0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40, 0x55, 0x9b, 0x01, 0x00,
655 0xbe, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0xa6,
656 0x84, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00,
657 0x00, 0x10, 0x00, 0x40, 0x55, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
658 0x50, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x4f, 0xb3, 0x01, 0x00,
659 0x00, 0x00, 0x00, 0x43, 0x4e, 0xd3, 0x01, 0x00, 0x6e, 0x03, 0x00, 0x40,
660 0x81, 0x32, 0x01, 0x00, 0x82, 0x03, 0x00, 0x42, 0x80, 0x30, 0x01, 0x00,
661 0xb0, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc7, 0x03, 0x22, 0xa7,
662 0x8f, 0x6c, 0x00, 0x00, 0x5a, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
663 0xc4, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
664 0x81, 0xb2, 0x01, 0x00, 0xc8, 0x14, 0x2e, 0xbb, 0x85, 0xb0, 0x01, 0x00,
665 0x00, 0x00, 0x00, 0xee, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
666 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xa0, 0xb3, 0x01, 0x00,
667 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xca,
668 0xa7, 0x33, 0x01, 0x00, 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd6, 0x03, 0x22, 0x42,
670 0x75, 0x6f, 0x00, 0x00, 0xd8, 0x03, 0x22, 0x41, 0x75, 0x6f, 0x00, 0x00,
671 0xda, 0x03, 0x1e, 0xca, 0x81, 0x32, 0x00, 0x00, 0xdc, 0x03, 0x1f, 0xca,
672 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xc9, 0xb1, 0x01, 0x00,
673 0xdd, 0x9f, 0x00, 0x42, 0x75, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
674 0xcd, 0xb1, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0x41, 0x75, 0xb3, 0x00, 0x00,
675 0x00, 0x00, 0x00, 0xca, 0xcf, 0xb1, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0x40,
676 0x75, 0xb3, 0x00, 0x00, 0x00, 0x81, 0x00, 0xa6, 0xc6, 0xb1, 0x01, 0x00,
677 0xdd, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6,
678 0xc6, 0xb1, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0x40, 0x75, 0xb3, 0x00, 0x00,
679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
680 0x81, 0xb2, 0x00, 0x00, 0x45, 0x01, 0x00, 0x4d, 0x93, 0x30, 0x01, 0x00,
681 0x45, 0x01, 0x00, 0x4e, 0x93, 0x30, 0x01, 0x00, 0x45, 0x01, 0x00, 0x4c,
682 0x93, 0x30, 0x01, 0x00, 0xec, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
683 0xdd, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x54, 0x95, 0x00, 0x40,
686 0x45, 0x99, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0xca, 0xe5, 0xb1, 0x00, 0x00,
687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
691 0xcc, 0x14, 0x2e, 0x40, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2,
692 0xa0, 0xb3, 0x01, 0x00, 0x15, 0x04, 0x00, 0x43, 0xb2, 0x33, 0x01, 0x00,
693 0x00, 0x00, 0x68, 0xda, 0x89, 0xb0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x40,
694 0x8b, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x89, 0xf0, 0x01, 0x00,
695 0x00, 0x00, 0x00, 0x41, 0x89, 0xd0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x44,
696 0x88, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x87, 0xc0, 0x01, 0x00,
697 0x00, 0x00, 0x00, 0x41, 0xa5, 0xb3, 0x01, 0x00, 0x15, 0x04, 0x00, 0x43,
698 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf1, 0xb1, 0x01, 0x00,
699 0x00, 0x00, 0x00, 0x44, 0x87, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
700 0xa5, 0xc3, 0x01, 0x00, 0x0b, 0x04, 0x22, 0x44, 0x89, 0x50, 0x00, 0x00,
701 0x0b, 0x04, 0x22, 0x44, 0x8b, 0x50, 0x00, 0x00, 0xfa, 0x03, 0xa2, 0x50,
702 0xa5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xa5, 0xe3, 0x01, 0x00,
703 0x00, 0x00, 0x00, 0xca, 0xa7, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xbb,
704 0x85, 0x30, 0x01, 0x00, 0xcc, 0x14, 0x2e, 0xd2, 0x95, 0xc3, 0x01, 0x00,
705 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
706 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xb0, 0x01, 0x00,
707 0x08, 0x04, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x07, 0x04, 0xa2, 0xf2,
708 0x80, 0x30, 0x00, 0x00, 0xfa, 0x03, 0x00, 0x40, 0xa5, 0xb3, 0x00, 0x00,
709 0x00, 0x00, 0x00, 0x42, 0xa5, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
710 0xa7, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xbb, 0x85, 0x30, 0x01, 0x00,
711 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
712 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x2b, 0xb1, 0x01, 0x00,
713 0x00, 0x10, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0xdb, 0x00, 0x00, 0x40,
714 0x81, 0x32, 0x01, 0x00, 0xff, 0xff, 0x00, 0x94, 0xb4, 0x8b, 0x01, 0x00,
715 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd9,
716 0x2b, 0xb1, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
717 0xdd, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x94,
718 0xb4, 0xb3, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
723 0x00, 0x00, 0x00, 0xd9, 0x2b, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
724 0x27, 0xb1, 0x01, 0x00, 0x06, 0xc0, 0x00, 0x40, 0x2d, 0x99, 0x01, 0x00,
725 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
726 0x83, 0x98, 0x01, 0x00, 0x02, 0xc4, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00,
727 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x40, 0x00, 0x40,
728 0x83, 0x98, 0x01, 0x00, 0x05, 0x82, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00,
729 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2d, 0x04, 0x80, 0x94,
730 0x80, 0x32, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
731 0x28, 0x04, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x40,
732 0x2d, 0x99, 0x01, 0x00, 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
733 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x31, 0x04, 0x00, 0x12,
734 0x10, 0xc9, 0x00, 0x00, 0x00, 0x48, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
735 0xc0, 0x49, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x4b, 0x80, 0x40,
736 0x0b, 0x98, 0x01, 0x00, 0x40, 0x4d, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
737 0x00, 0x4f, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x50, 0x80, 0x40,
738 0x0b, 0x98, 0x01, 0x00, 0x80, 0x52, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
739 0x40, 0x54, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x56, 0x80, 0x40,
740 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x57, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
741 0x80, 0x59, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x5b, 0x80, 0x40,
742 0x0b, 0x98, 0x01, 0x00, 0x00, 0x5d, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
743 0xc0, 0x5e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x60, 0x80, 0x40,
744 0x0b, 0x98, 0x01, 0x00, 0x40, 0x62, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
745 0x00, 0x64, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x65, 0x80, 0x40,
746 0x0b, 0x98, 0x01, 0x00, 0x80, 0x67, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
747 0x40, 0x69, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x6b, 0x80, 0x40,
748 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x6c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
749 0x80, 0x6e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x70, 0x80, 0x40,
750 0x0b, 0x98, 0x01, 0x00, 0x00, 0x72, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
751 0xc0, 0x73, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x75, 0x80, 0x40,
752 0x0b, 0x98, 0x01, 0x00, 0x40, 0x77, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
753 0x00, 0x79, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x7a, 0x80, 0x40,
754 0x0b, 0x98, 0x01, 0x00, 0x80, 0x7c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
755 0x40, 0x7e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
760 0x81, 0xb2, 0x00, 0x00, 0x59, 0x04, 0x00, 0x12, 0x10, 0xc9, 0x00, 0x00,
761 0x00, 0x80, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x82, 0x80, 0x40,
762 0x0b, 0x98, 0x01, 0x00, 0x00, 0x84, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
763 0x00, 0x86, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x88, 0x80, 0x40,
764 0x0b, 0x98, 0x01, 0x00, 0x00, 0x8a, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
765 0x00, 0x8c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x8e, 0x80, 0x40,
766 0x0b, 0x98, 0x01, 0x00, 0x00, 0x90, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
767 0x00, 0x92, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x94, 0x80, 0x40,
768 0x0b, 0x98, 0x01, 0x00, 0x00, 0x96, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
769 0x00, 0x98, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x9a, 0x80, 0x40,
770 0x0b, 0x98, 0x01, 0x00, 0x00, 0x9c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
771 0x00, 0x9e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa0, 0x80, 0x40,
772 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa2, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
773 0x00, 0xa4, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa6, 0x80, 0x40,
774 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa8, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
775 0x00, 0xaa, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xac, 0x80, 0x40,
776 0x0b, 0x98, 0x01, 0x00, 0x00, 0xae, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
777 0x00, 0xb0, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xb2, 0x80, 0x40,
778 0x0b, 0x98, 0x01, 0x00, 0x00, 0xb4, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
779 0x00, 0xb6, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xb8, 0x80, 0x40,
780 0x0b, 0x98, 0x01, 0x00, 0x00, 0xba, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
781 0x00, 0xbc, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xbe, 0x80, 0x40,
782 0x0b, 0x98, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
787 0x00, 0x00, 0x00, 0x40, 0x87, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
788 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x80, 0xb1, 0x01, 0x00,
789 0x01, 0x00, 0x00, 0xa6, 0x82, 0xb1, 0x01, 0x00, 0x82, 0x04, 0x85, 0x41,
790 0x97, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x97, 0xb1, 0x01, 0x00,
791 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
792 0x90, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6, 0x92, 0xb1, 0x01, 0x00,
793 0x87, 0x04, 0x85, 0x41, 0x97, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
794 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
795 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
796 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
797 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x90, 0x04, 0x60, 0x40,
798 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0xb1, 0x01, 0x00,
799 0xff, 0xff, 0xf0, 0x4b, 0x82, 0x89, 0x01, 0x00, 0x93, 0x04, 0x60, 0x40,
800 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x80, 0xb1, 0x01, 0x00,
801 0x01, 0x00, 0xf0, 0xa6, 0x82, 0xb1, 0x01, 0x00, 0x96, 0x04, 0x60, 0x40,
802 0x81, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b, 0x84, 0x89, 0x01, 0x00,
803 0x00, 0x00, 0xf0, 0xc2, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
804 0x90, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x80, 0x4b, 0x92, 0x89, 0x01, 0x00,
805 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x80, 0xa6,
806 0x92, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4b, 0x94, 0x89, 0x01, 0x00,
807 0x00, 0x00, 0x80, 0xca, 0x94, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
808 0x81, 0xb2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x4e, 0x98, 0xe4, 0x01, 0x00,
809 0x00, 0x00, 0x00, 0x07, 0x98, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
810 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x94, 0x01, 0x00,
811 0x00, 0x00, 0x00, 0x49, 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
812 0x88, 0x94, 0x01, 0x00, 0xa6, 0x04, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00,
813 0xad, 0x04, 0x22, 0x20, 0x87, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x40,
814 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
815 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
816 0x81, 0xb2, 0x01, 0x00, 0xa6, 0x04, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
817 0x00, 0x00, 0x1f, 0x80, 0x86, 0xb3, 0x01, 0x00, 0xb0, 0x04, 0x22, 0x4f,
818 0x77, 0x7d, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
819 0x00, 0x00, 0x00, 0x4f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
820 0x62, 0xb1, 0x01, 0x00, 0xb1, 0x04, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
821 0xb8, 0x04, 0x22, 0x4b, 0x89, 0x7c, 0x00, 0x00, 0xb6, 0x04, 0x22, 0x4f,
822 0x77, 0x7d, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
823 0x00, 0x00, 0x00, 0x45, 0x62, 0xb1, 0x01, 0x00, 0xb6, 0x04, 0xa8, 0x40,
824 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x87, 0xb3, 0x01, 0x00,
825 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
826 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
827 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
828 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
829 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
830 0x99, 0xb0, 0x01, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
831 0xc1, 0x04, 0xa8, 0xb1, 0x52, 0x33, 0x00, 0x00, 0xc6, 0x04, 0x22, 0x4b,
832 0x53, 0x7f, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
833 0xc4, 0x04, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0xc1, 0x04, 0xa2, 0x41,
834 0x99, 0x50, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x4f, 0x77, 0xfd, 0x00, 0x00,
835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
840 0x81, 0xb2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x4e, 0x98, 0xe4, 0x01, 0x00,
841 0x00, 0x00, 0x00, 0x07, 0x98, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
842 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x94, 0x01, 0x00,
843 0x00, 0x00, 0x00, 0x48, 0x99, 0xe0, 0x01, 0x00, 0xd6, 0x04, 0x00, 0x4c,
844 0x88, 0x94, 0x00, 0x00, 0xd6, 0x04, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00,
845 0xdd, 0x04, 0x22, 0x20, 0x87, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x40,
846 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
847 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
848 0x81, 0xb2, 0x01, 0x00, 0xd6, 0x04, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
849 0x00, 0x00, 0x1f, 0x80, 0x86, 0xb3, 0x01, 0x00, 0xe0, 0x04, 0x22, 0x4f,
850 0x77, 0x7d, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
851 0x00, 0x00, 0x00, 0x4f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
852 0x62, 0xb1, 0x01, 0x00, 0xe1, 0x04, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
853 0xe8, 0x04, 0x22, 0x4a, 0x89, 0x7c, 0x00, 0x00, 0xe6, 0x04, 0x22, 0x4f,
854 0x77, 0x7d, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
855 0x00, 0x00, 0x00, 0x45, 0x62, 0xb1, 0x01, 0x00, 0xe6, 0x04, 0xa8, 0x40,
856 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x87, 0xb3, 0x01, 0x00,
857 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
858 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
859 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
860 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
861 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
862 0x99, 0xb0, 0x01, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
863 0xf1, 0x04, 0xa8, 0xb1, 0x52, 0x33, 0x00, 0x00, 0xf6, 0x04, 0x22, 0x4a,
864 0x53, 0x7f, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
865 0xf4, 0x04, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0xf1, 0x04, 0xa2, 0x41,
866 0x99, 0x50, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x4f, 0x77, 0xfd, 0x00, 0x00,
867 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
868 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
869 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
870 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
871 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
872 0x81, 0xb2, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
873 0x00, 0x05, 0xa8, 0xb1, 0x80, 0x30, 0x00, 0x00, 0x12, 0x05, 0x1d, 0x40,
874 0x80, 0x32, 0x00, 0x00, 0x40, 0x18, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
875 0x04, 0x00, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00, 0x10, 0x05, 0xa2, 0x40,
876 0x86, 0x04, 0x00, 0x00, 0xde, 0x9f, 0x9c, 0x40, 0x80, 0x32, 0x00, 0x00,
877 0xff, 0xff, 0x00, 0x40, 0x88, 0x88, 0x01, 0x00, 0x30, 0x05, 0x00, 0x50,
878 0x47, 0x31, 0x01, 0x00, 0x36, 0x00, 0x00, 0x44, 0x88, 0xcc, 0x01, 0x00,
879 0x0c, 0x05, 0x52, 0x40, 0x81, 0x32, 0x00, 0x00, 0x30, 0x05, 0x00, 0x40,
880 0x47, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x89, 0xb0, 0x01, 0x00,
881 0x30, 0x05, 0x00, 0x48, 0x47, 0x31, 0x01, 0x00, 0x30, 0x05, 0x00, 0x05,
882 0x47, 0x31, 0x01, 0x00, 0xde, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
883 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x1b, 0x00, 0xde, 0x9f, 0x00, 0x41,
884 0xe1, 0xc1, 0x1a, 0x00, 0x78, 0x18, 0x00, 0x40, 0x49, 0x99, 0x1b, 0x00,
885 0x19, 0x05, 0x22, 0x54, 0x81, 0x7c, 0x1a, 0x00, 0x14, 0x05, 0x42, 0x40,
886 0x81, 0x32, 0x1a, 0x00, 0x00, 0x82, 0x00, 0xb3, 0x67, 0xdf, 0x1b, 0x00,
887 0x00, 0x00, 0x1a, 0x44, 0x93, 0x93, 0x1b, 0x00, 0x28, 0x00, 0x00, 0x40,
888 0x47, 0x99, 0x1b, 0x00, 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
889 0x27, 0x05, 0x0f, 0x40, 0x80, 0x32, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x40,
890 0x88, 0x88, 0x01, 0x00, 0x30, 0x05, 0x00, 0x50, 0x47, 0x31, 0x01, 0x00,
891 0x36, 0x00, 0x00, 0x44, 0x88, 0xcc, 0x01, 0x00, 0x1f, 0x05, 0x99, 0x40,
892 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0xd0, 0x01, 0x00,
893 0x21, 0x05, 0x9b, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
894 0x89, 0xd0, 0x01, 0x00, 0x23, 0x05, 0x1f, 0x44, 0x80, 0x32, 0x00, 0x00,
895 0x30, 0x05, 0x00, 0x40, 0x47, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
896 0x89, 0xb0, 0x01, 0x00, 0x30, 0x05, 0x00, 0x48, 0x47, 0x31, 0x01, 0x00,
897 0x30, 0x05, 0x00, 0x58, 0x47, 0x31, 0x01, 0x00, 0xde, 0x9f, 0x00, 0x40,
898 0x81, 0xb2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0x86, 0xf4, 0x01, 0x00,
899 0x6f, 0x00, 0x00, 0x43, 0x86, 0x88, 0x01, 0x00, 0xde, 0x9f, 0x26, 0x05,
900 0x47, 0x31, 0x00, 0x00, 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
901 0xde, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
902 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
903 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
904 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x44, 0xf0, 0x41, 0x01, 0x00,
905 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x80, 0x41,
906 0xe1, 0xc1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
907 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
908 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
909 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x07,
910 0x91, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x97, 0xec, 0x00, 0x00,
911 0x00, 0x00, 0x80, 0x05, 0x91, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
912 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
913 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
914 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
915 0x4c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x44, 0x05, 0xa2, 0x40,
916 0x97, 0x6c, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
917 0x45, 0x05, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,
918 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
919 0x00, 0x00, 0x00, 0xda, 0xf5, 0xb1, 0x01, 0x00, 0x10, 0x04, 0x00, 0x42,
920 0xb3, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf5, 0xb1, 0x01, 0x00,
921 0x10, 0x04, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
922 0xf5, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
923 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda,
924 0xf7, 0xf5, 0x01, 0x00, 0x50, 0x00, 0x00, 0x40, 0x91, 0x98, 0x01, 0x00,
925 0x00, 0x00, 0x00, 0x47, 0x8f, 0xb0, 0x01, 0x00, 0x10, 0x04, 0x00, 0x48,
926 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf7, 0xb1, 0x01, 0x00,
927 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
928 0x91, 0xc0, 0x01, 0x00, 0x50, 0x05, 0xa2, 0x41, 0x8f, 0x50, 0x00, 0x00,
929 0x00, 0x00, 0x00, 0x41, 0x45, 0xd1, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40,
930 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
931 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x40,
932 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
933 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x40,
934 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
935 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x00, 0x40,
936 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
937 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x38, 0x05, 0x00, 0x40,
938 0x81, 0x32, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
939 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
940 0x91, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
941 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xda,
942 0x8f, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
943 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
944 0xfd, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
945 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0xda,
946 0xfd, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
947 0x7a, 0x05, 0x22, 0x45, 0xfd, 0x7f, 0x00, 0x00, 0x40, 0x16, 0x00, 0x40,
948 0x45, 0x99, 0x01, 0x00, 0xdb, 0x9f, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00,
949 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x15, 0x04, 0x00, 0x40,
950 0x81, 0x32, 0x01, 0x00, 0x78, 0x05, 0xa2, 0x40, 0x8f, 0x6c, 0x00, 0x00,
951 0x7d, 0x05, 0x22, 0x20, 0xb5, 0x6f, 0x00, 0x00, 0x7a, 0x05, 0x00, 0x40,
952 0x81, 0xb2, 0x00, 0x00, 0xda, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x1f, 0x00,
953 0x7d, 0x05, 0x22, 0x40, 0x97, 0x6c, 0x1e, 0x00, 0x7a, 0x05, 0x42, 0x40,
954 0x81, 0x32, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x67, 0x93, 0x1f, 0x00,
955 0xdf, 0x9f, 0x00, 0x58, 0x67, 0x93, 0x1e, 0x00, 0x54, 0x16, 0x00, 0x40,
956 0x47, 0x99, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x1f, 0x00,
957 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe,
958 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
959 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
960 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
961 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
962 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
963 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
964 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
965 0x46, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
966 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00,
967 0x48, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
968 0x97, 0xb0, 0x01, 0x00, 0x10, 0x04, 0x00, 0x4a, 0xb2, 0x33, 0x01, 0x00,
969 0x00, 0x00, 0x00, 0xda, 0xf7, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda,
970 0xf7, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x95, 0xc0, 0x01, 0x00,
971 0x90, 0x05, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x40,
972 0xa5, 0x9b, 0x01, 0x00, 0x40, 0x16, 0x00, 0x40, 0xa1, 0x9b, 0x01, 0x00,
973 0x00, 0x00, 0x00, 0xca, 0xa7, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xbb,
974 0x85, 0x30, 0x01, 0x00, 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
975 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
976 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
977 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
978 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
979 0xb8, 0x05, 0x22, 0x45, 0xfd, 0x7f, 0x00, 0x00, 0xe0, 0x15, 0x00, 0x40,
980 0x47, 0x99, 0x01, 0x00, 0x1a, 0x00, 0x00, 0xa2, 0x80, 0xdc, 0x01, 0x00,
981 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0xf0, 0x15, 0x00, 0x40,
982 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00,
983 0x07, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40,
984 0x62, 0xdd, 0x01, 0x00, 0xa7, 0x05, 0xa8, 0xbb, 0xe1, 0x31, 0x00, 0x00,
985 0x00, 0x00, 0x00, 0x50, 0x83, 0xb0, 0x01, 0x00, 0xaa, 0x05, 0xa2, 0x41,
986 0x83, 0x50, 0x00, 0x00, 0xa9, 0x05, 0xa2, 0xf2, 0x82, 0x30, 0x00, 0x00,
987 0x4c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb0, 0x05, 0xa2, 0x40,
988 0x97, 0x6c, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
989 0xb1, 0x05, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,
990 0xb3, 0x9b, 0x01, 0x00, 0xf0, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
991 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb8, 0x05, 0xa2, 0xfa,
992 0xb4, 0x6f, 0x00, 0x00, 0x10, 0x04, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00,
993 0xb8, 0x05, 0xa2, 0xfa, 0xb4, 0x6f, 0x00, 0x00, 0x10, 0x04, 0x00, 0x42,
994 0xb3, 0x43, 0x01, 0x00, 0xbb, 0x05, 0x22, 0xfa, 0xb4, 0x6f, 0x00, 0x00,
995 0xb8, 0x05, 0x42, 0x40, 0x81, 0x32, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4e,
996 0x67, 0x93, 0x21, 0x00, 0xdf, 0x9f, 0x00, 0x58, 0x67, 0x93, 0x20, 0x00,
997 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x21, 0x00, 0xdb, 0x9f, 0x00, 0x40,
998 0x49, 0x31, 0x21, 0x00, 0xf6, 0x15, 0x00, 0x40, 0x43, 0x99, 0x21, 0x00,
999 0x5c, 0x16, 0x00, 0x40, 0x45, 0x99, 0x21, 0x00, 0x00, 0x00, 0x6e, 0xfa,
1000 0x8e, 0xb0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
1001 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1002 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
1003 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
1004 0xb4, 0xb3, 0x01, 0x00, 0xc9, 0x05, 0xa2, 0x40, 0x8f, 0x6c, 0x00, 0x00,
1005 0xfc, 0x15, 0x20, 0x20, 0xe1, 0xb1, 0x01, 0x00, 0xce, 0x05, 0x00, 0x40,
1006 0x81, 0xb2, 0x24, 0x00, 0xda, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x25, 0x00,
1007 0xce, 0x05, 0x22, 0x40, 0x97, 0x6c, 0x24, 0x00, 0xcb, 0x05, 0x42, 0x40,
1008 0x81, 0x32, 0x24, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x67, 0x93, 0x25, 0x00,
1009 0xdf, 0x9f, 0x00, 0x58, 0x67, 0x93, 0x24, 0x00, 0x38, 0x05, 0x00, 0x40,
1010 0x81, 0x32, 0x25, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x25, 0x00,
1011 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd3, 0x05, 0x22, 0x50,
1012 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x91, 0xc0, 0x01, 0x00,
1013 0x00, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xf6, 0x15, 0x00, 0x40,
1014 0x43, 0x99, 0x01, 0x00, 0x20, 0x04, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00,
1015 0x02, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xf8, 0x15, 0x00, 0x40,
1016 0x43, 0x99, 0x01, 0x00, 0x20, 0x04, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00,
1017 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfa, 0x15, 0x00, 0x40,
1018 0x43, 0x99, 0x01, 0x00, 0x20, 0x04, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00,
1019 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x15, 0x00, 0x40,
1020 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x94, 0xb0, 0x01, 0x00,
1021 0xff, 0xff, 0x00, 0x4a, 0xb4, 0x8b, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40,
1022 0x81, 0x32, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
1023 0x10, 0x00, 0x00, 0x4a, 0xb4, 0xf7, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40,
1024 0x81, 0x32, 0x01, 0x00, 0x38, 0x05, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1025 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
1026 0x81, 0x32, 0x01, 0x00, 0xe9, 0x05, 0x22, 0x50, 0xb5, 0x6f, 0x00, 0x00,
1027 0xea, 0x05, 0x00, 0x50, 0xb5, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1028 0xb5, 0xb3, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1029 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1030 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1031 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1032 0x81, 0xb2, 0x00, 0x00, 0x00, 0x16, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1033 0x30, 0x31, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x32, 0x33, 0x00, 0x40,
1034 0xf5, 0x99, 0x01, 0x00, 0x34, 0x35, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1035 0x36, 0x37, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x38, 0x39, 0x00, 0x40,
1036 0xf5, 0x99, 0x01, 0x00, 0x41, 0x42, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1037 0x43, 0x44, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x45, 0x46, 0x00, 0x40,
1038 0xf5, 0x99, 0x01, 0x00, 0x47, 0x48, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1039 0x49, 0x4a, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40,
1040 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf7, 0xb1, 0x01, 0x00,
1041 0xfc, 0x05, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x80, 0x16, 0x2e, 0x06,
1042 0x83, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1043 0xff, 0x05, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x22, 0x00, 0x00, 0x40,
1044 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xf6, 0xb1, 0x01, 0x00,
1045 0x02, 0x06, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x62, 0x00, 0x00, 0x40,
1046 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1047 0x00, 0x16, 0x2d, 0x06, 0x83, 0xb0, 0x01, 0x00, 0x80, 0x16, 0x00, 0x40,
1048 0x45, 0x99, 0x01, 0x00, 0x5c, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1049 0x08, 0x06, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
1050 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xf9, 0xb1, 0x01, 0x00,
1051 0x00, 0x00, 0x00, 0x72, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
1052 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf9, 0xb1, 0x01, 0x00,
1053 0x54, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40,
1054 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x95, 0xb0, 0x01, 0x00,
1055 0x14, 0x06, 0x22, 0x70, 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
1056 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
1057 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1058 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1059 0x45, 0x67, 0x00, 0xa6, 0xe0, 0xb2, 0x01, 0x00, 0x01, 0x23, 0x00, 0x70,
1060 0xe1, 0x9a, 0x01, 0x00, 0xcd, 0xef, 0x00, 0xa6, 0xe2, 0xb2, 0x01, 0x00,
1061 0x89, 0xab, 0x00, 0x71, 0xe3, 0x9a, 0x01, 0x00, 0xba, 0x98, 0x00, 0xa6,
1062 0xe4, 0xb2, 0x01, 0x00, 0xfe, 0xdc, 0x00, 0x72, 0xe5, 0x9a, 0x01, 0x00,
1063 0x32, 0x10, 0x00, 0xa6, 0xe6, 0xb2, 0x01, 0x00, 0x76, 0x54, 0x00, 0x73,
1064 0xe7, 0x9a, 0x01, 0x00, 0xd2, 0xc3, 0x00, 0xa6, 0xe8, 0xb2, 0x01, 0x00,
1065 0xf0, 0xe1, 0x00, 0x74, 0xe9, 0x9a, 0x01, 0x00, 0x80, 0x16, 0x00, 0x4a,
1066 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x81, 0xb0, 0x01, 0x00,
1067 0x00, 0x00, 0x00, 0x4a, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1068 0xf7, 0xb1, 0x01, 0x00, 0x25, 0x06, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
1069 0x80, 0x16, 0x00, 0x4a, 0x44, 0xc9, 0x01, 0x00, 0xfc, 0x16, 0x2a, 0x47,
1070 0xe7, 0xb5, 0x01, 0x00, 0x03, 0x00, 0x00, 0x4a, 0xe8, 0xe5, 0x01, 0x00,
1071 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40,
1072 0xa3, 0x99, 0x01, 0x00, 0x80, 0x16, 0x3d, 0x46, 0x8d, 0xe0, 0x01, 0x00,
1073 0x00, 0x00, 0x00, 0x50, 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
1074 0x40, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
1075 0x2e, 0x06, 0xa2, 0x41, 0x89, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
1076 0xeb, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xed, 0xb2, 0x01, 0x00,
1077 0x00, 0x00, 0x00, 0x72, 0xef, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
1078 0xf1, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf3, 0xb2, 0x01, 0x00,
1079 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x41,
1080 0x80, 0x88, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40, 0xa2, 0xc9, 0x01, 0x00,
1081 0x4b, 0x06, 0xa0, 0x50, 0x83, 0x6c, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x40,
1082 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x99, 0x84, 0x01, 0x00,
1083 0x50, 0x03, 0x00, 0x4c, 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
1084 0x86, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x98, 0xc8, 0x01, 0x00,
1085 0x00, 0x00, 0x00, 0x4f, 0x99, 0x84, 0x01, 0x00, 0x50, 0x03, 0x00, 0x4c,
1086 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x86, 0xa4, 0x01, 0x00,
1087 0x02, 0x00, 0x00, 0x40, 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
1088 0x99, 0x84, 0x01, 0x00, 0x50, 0x03, 0x00, 0x4c, 0xa2, 0xc9, 0x01, 0x00,
1089 0x00, 0x00, 0x00, 0x20, 0x86, 0xa4, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40,
1090 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x40, 0xa4, 0x01, 0x00,
1091 0x01, 0x00, 0x00, 0x20, 0x88, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1092 0x41, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x94, 0x01, 0x00,
1093 0x05, 0x00, 0x00, 0x75, 0x89, 0xe4, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x75,
1094 0x85, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x84, 0x94, 0x01, 0x00,
1095 0x55, 0x06, 0xa3, 0x53, 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76,
1096 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77, 0x89, 0x84, 0x01, 0x00,
1097 0x00, 0x00, 0x00, 0x76, 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
1098 0x8b, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
1099 0x64, 0x06, 0x00, 0x45, 0x88, 0x94, 0x00, 0x00, 0x27, 0x00, 0x00, 0x41,
1100 0x80, 0xce, 0x01, 0x00, 0x5a, 0x06, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
1101 0x00, 0x00, 0x00, 0x76, 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
1102 0x89, 0xa4, 0x01, 0x00, 0x64, 0x06, 0x00, 0x78, 0x89, 0xa4, 0x00, 0x00,
1103 0x3b, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00, 0x57, 0x06, 0xaa, 0x40,
1104 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x89, 0xb0, 0x01, 0x00,
1105 0x00, 0x00, 0x00, 0x77, 0x89, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x76,
1106 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
1107 0x00, 0x00, 0x00, 0x45, 0x88, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
1108 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
1109 0x64, 0x06, 0x00, 0x45, 0x88, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
1110 0x84, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0x85, 0xc0, 0x01, 0x00,
1111 0x00, 0x00, 0x00, 0x20, 0x84, 0xc0, 0x01, 0x00, 0x6b, 0x06, 0xa3, 0x53,
1112 0x83, 0x6c, 0x00, 0x00, 0x82, 0x5a, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00,
1113 0x99, 0x79, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00, 0x78, 0x06, 0x00, 0x40,
1114 0x81, 0xb2, 0x00, 0x00, 0x27, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00,
1115 0x70, 0x06, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00, 0xd9, 0x6e, 0x00, 0xa6,
1116 0x84, 0xc0, 0x01, 0x00, 0xa1, 0xeb, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00,
1117 0x78, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x41,
1118 0x80, 0xce, 0x01, 0x00, 0x75, 0x06, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
1119 0x1b, 0x8f, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00, 0xdc, 0xbc, 0x00, 0x42,
1120 0x84, 0xc8, 0x01, 0x00, 0x78, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1121 0x62, 0xca, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00, 0xd6, 0xc1, 0x00, 0x42,
1122 0x84, 0xc8, 0x01, 0x00, 0x78, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1123 0x00, 0x00, 0x00, 0x78, 0xf3, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
1124 0xf1, 0xb2, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x76, 0x89, 0xe4, 0x01, 0x00,
1125 0x02, 0x00, 0x00, 0x76, 0xef, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
1126 0xee, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x75, 0xed, 0xb2, 0x01, 0x00,
1127 0x00, 0x00, 0x00, 0x42, 0xea, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
1128 0x83, 0xc0, 0x01, 0x00, 0x4f, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00,
1129 0x37, 0x06, 0x2a, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75,
1130 0xe1, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x76, 0xe3, 0xc2, 0x01, 0x00,
1131 0x00, 0x00, 0x00, 0x77, 0xe5, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78,
1132 0xe7, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0xe9, 0xc2, 0x01, 0x00,
1133 0x2b, 0x06, 0x81, 0x41, 0x8d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
1134 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1135 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1136 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1137 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1138 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1139 0x00, 0x00, 0x00, 0x50, 0xfd, 0x93, 0x01, 0x00, 0x40, 0x16, 0x00, 0x40,
1140 0x45, 0x99, 0x01, 0x00, 0xdb, 0x9f, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00,
1141 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x15, 0x04, 0x00, 0x40,
1142 0x81, 0x32, 0x01, 0x00, 0xb9, 0x06, 0x22, 0x40, 0x8f, 0x6c, 0x00, 0x00,
1143 0xda, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb9, 0x06, 0xa2, 0x40,
1144 0x97, 0x6c, 0x00, 0x00, 0x5e, 0x16, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
1145 0x7c, 0x16, 0x20, 0xf6, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1146 0x31, 0xb3, 0x01, 0x00, 0x9d, 0x06, 0x22, 0x4f, 0x8f, 0x7c, 0x00, 0x00,
1147 0x00, 0x00, 0x00, 0x51, 0xfd, 0x93, 0x01, 0x00, 0x9f, 0x06, 0x22, 0x40,
1148 0x8f, 0x7c, 0x00, 0x00, 0xa3, 0x06, 0x00, 0x54, 0xfd, 0x93, 0x00, 0x00,
1149 0xa1, 0x06, 0x22, 0x42, 0x8f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
1150 0xfd, 0x93, 0x01, 0x00, 0xa3, 0x06, 0x22, 0x41, 0x8f, 0x7c, 0x00, 0x00,
1151 0x00, 0x00, 0x00, 0x53, 0xfd, 0x93, 0x01, 0x00, 0xb7, 0x06, 0x22, 0x51,
1152 0xfd, 0x7f, 0x00, 0x00, 0x38, 0x05, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1153 0x0c, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
1154 0x81, 0x32, 0x01, 0x00, 0xb2, 0x06, 0xa2, 0x40, 0xb5, 0x6f, 0x00, 0x00,
1155 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x48,
1156 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0x97, 0xc0, 0x01, 0x00,
1157 0x04, 0x00, 0x00, 0x4b, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
1158 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
1159 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x48,
1160 0xb2, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0xb5, 0xb3, 0x01, 0x00,
1161 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48,
1162 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1163 0xb6, 0x06, 0x22, 0x40, 0xb5, 0x6f, 0x00, 0x00, 0xba, 0x06, 0x00, 0x54,
1164 0xfd, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfd, 0x83, 0x01, 0x00,
1165 0x1c, 0x00, 0x00, 0xfe, 0x7f, 0xd9, 0x01, 0x00, 0xba, 0x06, 0xa6, 0x40,
1166 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xfd, 0x93, 0x01, 0x00,
1167 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
1168 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1169 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1170 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1171 0xe7, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc4, 0x06, 0x22, 0x5c,
1172 0x1f, 0x7c, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1173 0xe9, 0x9f, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x05,
1174 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
1175 0x04, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
1176 0x3c, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x14, 0x02, 0xc8, 0x01, 0x00,
1177 0x00, 0x00, 0x00, 0x01, 0x34, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
1178 0x32, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05, 0x0a, 0xc8, 0x01, 0x00,
1179 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
1180 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
1181 0x00, 0x00, 0x00, 0xf8, 0x0e, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4,
1182 0x0c, 0xc8, 0x01, 0x00, 0xea, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1183 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x0a, 0x07, 0x22, 0x01,
1184 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
1185 0x00, 0x00, 0x2e, 0xa4, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
1186 0x48, 0xc1, 0x01, 0x00, 0xd9, 0x06, 0xa3, 0x07, 0x02, 0x6c, 0x00, 0x00,
1187 0xda, 0x06, 0x68, 0x01, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x07,
1188 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xd0, 0x01, 0x00,
1189 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c,
1190 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00,
1191 0x00, 0x00, 0x00, 0x0d, 0x0a, 0xc0, 0x01, 0x00, 0xec, 0x06, 0x22, 0x40,
1192 0x03, 0x6c, 0x00, 0x00, 0xe6, 0x06, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
1193 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
1194 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
1195 0x23, 0x07, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0xe3, 0x06, 0x00, 0x40,
1196 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
1197 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1198 0x62, 0xb1, 0x01, 0x00, 0xe8, 0x06, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
1199 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x23, 0x07, 0x00, 0x40,
1200 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
1201 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1202 0x62, 0xb1, 0x01, 0x00, 0xee, 0x06, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
1203 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x22, 0x00, 0x00, 0x19,
1204 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00,
1205 0x0f, 0x00, 0x00, 0xf2, 0x3a, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
1206 0x3b, 0xe0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x14, 0x02, 0xc8, 0x01, 0x00,
1207 0x00, 0x00, 0x00, 0x1d, 0x02, 0xc0, 0x01, 0x00, 0xfa, 0x06, 0x23, 0x1a,
1208 0x02, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x03, 0xc0, 0x01, 0x00,
1209 0x23, 0x07, 0x00, 0x01, 0x34, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x2d, 0x1d,
1210 0x48, 0xc1, 0x01, 0x00, 0xf0, 0x00, 0x00, 0xf2, 0x30, 0x88, 0x01, 0x00,
1211 0x00, 0x00, 0x00, 0x42, 0x31, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14,
1212 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x02, 0xc0, 0x01, 0x00,
1213 0x00, 0x00, 0x00, 0x18, 0x02, 0xc0, 0x01, 0x00, 0x02, 0x07, 0x22, 0x1a,
1214 0x02, 0x50, 0x00, 0x00, 0x23, 0x07, 0x00, 0x01, 0x34, 0xc0, 0x00, 0x00,
1215 0x22, 0x00, 0x00, 0x19, 0x48, 0xc9, 0x01, 0x00, 0x02, 0x00, 0x2d, 0x14,
1216 0x48, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x14, 0xb0, 0x01, 0x00,
1217 0x00, 0x00, 0x00, 0x1d, 0x14, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
1218 0x14, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x24, 0xb0, 0x01, 0x00,
1219 0x12, 0x00, 0x00, 0x17, 0x10, 0xc8, 0x01, 0x00, 0x23, 0x07, 0x00, 0x1a,
1220 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
1221 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
1222 0x48, 0xc1, 0x01, 0x00, 0x0f, 0x07, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00,
1223 0x10, 0x07, 0x60, 0x07, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x12,
1224 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x0d, 0x16, 0x94, 0x01, 0x00,
1225 0xff, 0xff, 0x00, 0x0b, 0x16, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
1226 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
1227 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
1228 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
1229 0x20, 0x00, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00, 0x17, 0x07, 0xa8, 0x5c,
1230 0x1f, 0x10, 0x00, 0x00, 0x40, 0x07, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00,
1231 0x40, 0x07, 0x22, 0x0d, 0x24, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
1232 0x10, 0xc0, 0x01, 0x00, 0x1e, 0x07, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
1233 0x23, 0x07, 0x00, 0x41, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
1234 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
1235 0x1f, 0x07, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88,
1236 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
1237 0x3f, 0x07, 0xa2, 0x0d, 0x0e, 0x50, 0x00, 0x00, 0x2e, 0x07, 0x22, 0x46,
1238 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00,
1239 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x2c, 0x07, 0x22, 0xf2,
1240 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
1241 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x29, 0x07, 0xa8, 0x40,
1242 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1243 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1244 0xe1, 0x91, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00,
1245 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
1246 0x04, 0xb0, 0x01, 0x00, 0x33, 0x07, 0x1f, 0xf0, 0x0e, 0x30, 0x00, 0x00,
1247 0xd3, 0x06, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x5f,
1248 0x0f, 0x80, 0x01, 0x00, 0xd3, 0x06, 0x23, 0x07, 0x14, 0x6c, 0x00, 0x00,
1249 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40,
1250 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
1251 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
1252 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00,
1253 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa4,
1254 0x62, 0xdd, 0x01, 0x00, 0x3c, 0x07, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
1255 0xd3, 0x06, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00, 0xd3, 0x06, 0x00, 0x0d,
1256 0x18, 0xc0, 0x00, 0x00, 0x5f, 0x07, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
1257 0x00, 0x00, 0x00, 0x19, 0x0a, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05,
1258 0x48, 0xc9, 0x01, 0x00, 0x0a, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00,
1259 0x02, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x20, 0x40,
1260 0xe5, 0xb1, 0x01, 0x00, 0x0d, 0x00, 0x2d, 0x1d, 0x48, 0xc1, 0x01, 0x00,
1261 0x09, 0x00, 0x00, 0xf3, 0x38, 0x88, 0x01, 0x00, 0x0d, 0x00, 0x20, 0x50,
1262 0xe7, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x2d, 0x40, 0x3f, 0xb0, 0x01, 0x00,
1263 0x00, 0x00, 0x00, 0xf4, 0x32, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x20, 0x40,
1264 0xe1, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x01, 0x00,
1265 0x00, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00, 0x02, 0x00, 0x00, 0x1d,
1266 0x94, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x91, 0xb0, 0x01, 0x00,
1267 0x52, 0x07, 0xa0, 0xfc, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1268 0x91, 0xc0, 0x01, 0x00, 0x50, 0x07, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00,
1269 0x00, 0x00, 0x00, 0xa4, 0x96, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x05,
1270 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00,
1271 0x00, 0x00, 0x00, 0x4b, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
1272 0x48, 0xc1, 0x01, 0x00, 0x02, 0x00, 0x00, 0x18, 0x94, 0xf4, 0x01, 0x00,
1273 0x00, 0x00, 0x2d, 0x18, 0x90, 0xb0, 0x01, 0x00, 0x5c, 0x07, 0xa0, 0xfc,
1274 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x91, 0xc0, 0x01, 0x00,
1275 0x5a, 0x07, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
1276 0xe0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00,
1277 0x04, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
1278 0x80, 0xb0, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0xb0, 0x2d, 0x00,
1279 0x22, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x14,
1280 0x48, 0xc1, 0x2d, 0x00, 0x64, 0x07, 0x43, 0x30, 0x3d, 0x07, 0x2c, 0x00,
1281 0x00, 0x00, 0x00, 0x9e, 0x85, 0xb0, 0x2d, 0x00, 0x00, 0x00, 0x1b, 0x41,
1282 0x3d, 0xc3, 0x2d, 0x00, 0x04, 0x00, 0x20, 0x42, 0xec, 0xb1, 0x2d, 0x00,
1283 0x00, 0x00, 0x00, 0x1e, 0x82, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x2e, 0x1d,
1284 0x82, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x18, 0x82, 0xc0, 0x01, 0x00,
1285 0x00, 0x00, 0x00, 0x42, 0x80, 0xc0, 0x01, 0x00, 0x6e, 0x07, 0xa0, 0x41,
1286 0x80, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
1287 0x10, 0x00, 0x00, 0x40, 0x92, 0xf4, 0x01, 0x00, 0x0a, 0x00, 0x2e, 0x30,
1288 0x81, 0x84, 0x01, 0x00, 0x72, 0x07, 0x90, 0x40, 0x92, 0x40, 0x00, 0x00,
1289 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
1290 0x93, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x48, 0xc1, 0x01, 0x00,
1291 0x04, 0x00, 0x20, 0x19, 0xe8, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e,
1292 0x16, 0xc0, 0x01, 0x00, 0x78, 0x07, 0xa0, 0x19, 0x16, 0x44, 0x00, 0x00,
1293 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x0d, 0x00, 0x2f, 0x1e,
1294 0x32, 0xc0, 0x01, 0x00, 0x7d, 0x07, 0xa2, 0x40, 0x15, 0x6c, 0x00, 0x00,
1295 0x7c, 0x07, 0xa0, 0x1c, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1296 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x63, 0xf3, 0x38, 0x94, 0x01, 0x00,
1297 0x10, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x1e,
1298 0x98, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0x1a, 0x98, 0xc0, 0x01, 0x00,
1299 0x0c, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x8b, 0x07, 0x22, 0x46,
1300 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00,
1301 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x89, 0x07, 0x22, 0xf2,
1302 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
1303 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x86, 0x07, 0xa8, 0x40,
1304 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1305 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1306 0xe1, 0x91, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
1307 0x12, 0x00, 0x00, 0x1a, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x17,
1308 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
1309 0x30, 0x00, 0x00, 0x10, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
1310 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00,
1311 0x91, 0x07, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x9b, 0x07, 0x22, 0x5c,
1312 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
1313 0x00, 0x00, 0x2d, 0x10, 0x48, 0xc1, 0x01, 0x00, 0x9b, 0x07, 0x22, 0xf2,
1314 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
1315 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x98, 0x07, 0xa8, 0x40,
1316 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1317 0xeb, 0x9f, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x20, 0x00, 0x2f, 0x05,
1318 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe4, 0xb1, 0x01, 0x00,
1319 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00, 0xa1, 0x07, 0x90, 0xf2,
1320 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
1321 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x10, 0x00, 0x00, 0x14,
1322 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x2a, 0xc0, 0x01, 0x00,
1323 0x00, 0x00, 0x00, 0x50, 0x2b, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
1324 0x2a, 0x94, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
1325 0xac, 0x07, 0x22, 0xf2, 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
1326 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
1327 0xa9, 0x07, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88,
1328 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x17, 0x10, 0xdc, 0x01, 0x00,
1329 0xc9, 0x07, 0x22, 0x40, 0x15, 0x6c, 0x00, 0x00, 0xb4, 0x07, 0xa2, 0x44,
1330 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1f, 0x90, 0x01, 0x00,
1331 0xb3, 0x07, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x88,
1332 0x1c, 0xcc, 0x01, 0x00, 0xe4, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1333 0x00, 0x00, 0x00, 0x41, 0x3f, 0xc3, 0x01, 0x00, 0xe6, 0x9f, 0x00, 0x40,
1334 0x81, 0x32, 0x01, 0x00, 0xb7, 0x07, 0xa2, 0x41, 0x87, 0x7c, 0x00, 0x00,
1335 0x00, 0x00, 0x00, 0x1e, 0x3e, 0xc0, 0x01, 0x00, 0xc9, 0x07, 0x22, 0x40,
1336 0x15, 0x6c, 0x00, 0x00, 0xba, 0x07, 0x20, 0x1e, 0x14, 0x6c, 0x00, 0x00,
1337 0x00, 0x00, 0x00, 0x0a, 0x3c, 0xb0, 0x01, 0x00, 0xe5, 0x9f, 0x00, 0x1e,
1338 0x24, 0x30, 0x01, 0x00, 0xbf, 0x07, 0x22, 0x08, 0x2e, 0x30, 0x00, 0x00,
1339 0x00, 0x00, 0x00, 0x52, 0x11, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1a,
1340 0x10, 0xc0, 0x01, 0x00, 0x23, 0x07, 0x00, 0x40, 0x17, 0xb0, 0x00, 0x00,
1341 0xe4, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xe5, 0x9f, 0x00, 0x40,
1342 0x81, 0x32, 0x01, 0x00, 0xbc, 0x07, 0xa2, 0x08, 0x2e, 0x30, 0x00, 0x00,
1343 0x80, 0x80, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40,
1344 0x87, 0x98, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00,
1345 0x04, 0x00, 0x22, 0x04, 0xe0, 0x31, 0x00, 0x00, 0xe8, 0x9f, 0x00, 0x1f,
1346 0x8c, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
1347 0xe2, 0x9f, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
1348 0x44, 0x99, 0x01, 0x00, 0x04, 0x00, 0x22, 0x04, 0xe0, 0x31, 0x00, 0x00,
1349 0xe6, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xce, 0x07, 0xa2, 0x41,
1350 0x87, 0x7c, 0x00, 0x00, 0xcf, 0x07, 0x00, 0x1e, 0x3e, 0xc0, 0x00, 0x00,
1351 0x00, 0x00, 0x00, 0x1f, 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1352 0x05, 0xb0, 0x01, 0x00, 0xe8, 0x9f, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00,
1353 0xe2, 0x9f, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1376 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1377 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1378 0x81, 0xb2, 0x00, 0x00, 0xf7, 0x07, 0x00, 0xbc, 0x80, 0xb2, 0x00, 0x00,
1379 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
1380 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1381 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
1382 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1383 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
1384 0x81, 0xb2, 0x00, 0x00,
1385 },
1386 {
1387 0x31, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x34, 0x80, 0x00, 0x40,
1388 0x81, 0xb2, 0x00, 0x00, 0x35, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1389 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0x80, 0x81, 0x80,
1390 0x80, 0x32, 0x00, 0x00, 0xe4, 0x87, 0xa2, 0x40, 0x91, 0x6f, 0x00, 0x00,
1391 0x00, 0x00, 0x00, 0x4c, 0x90, 0xb3, 0x01, 0x00, 0x5c, 0x95, 0x2e, 0xa2,
1392 0x80, 0xb0, 0x01, 0x00, 0xff, 0x00, 0x00, 0x80, 0xf4, 0x89, 0x01, 0x00,
1393 0x90, 0x95, 0x2a, 0xc8, 0xe5, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1,
1394 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb1, 0x01, 0x00,
1395 0x00, 0x00, 0x00, 0xa4, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
1396 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf0, 0xb1, 0x01, 0x00,
1397 0x00, 0x00, 0x00, 0xd2, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
1398 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf0, 0xb1, 0x01, 0x00,
1399 0x00, 0x00, 0x00, 0xd3, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee,
1400 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xf0, 0xb1, 0x01, 0x00,
1401 0x00, 0x00, 0x00, 0x40, 0x44, 0xb1, 0x01, 0x00, 0x18, 0x80, 0x11, 0x81,
1402 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0x51, 0x40, 0x81, 0xb2, 0x01, 0x00,
1403 0x1a, 0x80, 0x11, 0x82, 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0x52, 0x40,
1404 0x81, 0xb2, 0x01, 0x00, 0xe4, 0x87, 0x00, 0x48, 0xfd, 0x93, 0x00, 0x00,
1405 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x23, 0x80, 0xa2, 0x42,
1406 0xfd, 0x7f, 0x00, 0x00, 0x20, 0x80, 0x00, 0x80, 0x80, 0x32, 0x00, 0x00,
1407 0x22, 0x80, 0x11, 0x81, 0x82, 0x30, 0x00, 0x00, 0x22, 0x80, 0x51, 0x40,
1408 0x81, 0xb2, 0x00, 0x00, 0x22, 0x80, 0x11, 0x82, 0x82, 0x30, 0x00, 0x00,
1409 0x22, 0x80, 0x52, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x48,
1410 0xfd, 0x93, 0x00, 0x00, 0x27, 0x80, 0x00, 0x80, 0x80, 0x32, 0x00, 0x00,
1411 0x26, 0x80, 0xa2, 0x53, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x51, 0x53,
1412 0x07, 0x90, 0x01, 0x00, 0x2a, 0x80, 0x00, 0x52, 0x07, 0x90, 0x00, 0x00,
1413 0x29, 0x80, 0xa2, 0x52, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52,
1414 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
1415 0x00, 0x00, 0x00, 0x48, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
1416 0xf3, 0x93, 0x01, 0x00, 0x5c, 0x95, 0x2e, 0xa2, 0x52, 0xb3, 0x01, 0x00,
1417 0xff, 0x00, 0x00, 0x80, 0xf4, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
1418 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x45, 0xb1, 0x01, 0x00,
1419 0x30, 0x80, 0x00, 0x4c, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x45, 0x40,
1420 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x55, 0x40, 0x81, 0xb2, 0x01, 0x00,
1421 0xc6, 0x82, 0x05, 0x40, 0x49, 0xb1, 0x00, 0x00, 0xc6, 0x82, 0x05, 0x40,
1422 0x49, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x49, 0xb1, 0x01, 0x00,
1423 0x4c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
1424 0xde, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfd, 0x93, 0x01, 0x00,
1425 0x00, 0x00, 0x00, 0x48, 0xfd, 0x83, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40,
1426 0x9b, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x9c, 0xb3, 0x01, 0x00,
1427 0x48, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x58, 0x95, 0x20, 0x44,
1428 0xe0, 0xb1, 0x01, 0x00, 0x04, 0x94, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
1429 0x00, 0x00, 0x00, 0xf2, 0x24, 0xb1, 0x01, 0x00, 0x00, 0x0c, 0x00, 0xee,
1430 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x97, 0xf0, 0x01, 0x00,
1431 0x44, 0x80, 0xa2, 0x43, 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
1432 0xfd, 0x93, 0x01, 0x00, 0x00, 0xc0, 0x00, 0xa6, 0x36, 0xb1, 0x01, 0x00,
1433 0xd0, 0x14, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
1434 0xf5, 0x99, 0x01, 0x00, 0x00, 0x38, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1435 0x00, 0x06, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40,
1436 0xf5, 0x99, 0x01, 0x00, 0x05, 0x10, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1437 0x02, 0x09, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
1438 0xf5, 0x99, 0x01, 0x00, 0x60, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1439 0x88, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xa0, 0x03, 0x00, 0x40,
1440 0x81, 0x32, 0x01, 0x00, 0xb9, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1441 0xb1, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x60, 0x95, 0x20, 0x40,
1442 0xe1, 0xb1, 0x01, 0x00, 0x70, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
1443 0x00, 0x00, 0x00, 0x49, 0xdd, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1444 0x91, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7b, 0xb3, 0x01, 0x00,
1445 0x99, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1446 0x85, 0xb3, 0x01, 0x00, 0x5c, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
1447 0x3c, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x90, 0x06, 0x00, 0x40,
1448 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x2f, 0x81, 0x01, 0x00,
1449 0xa2, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x9e, 0x98, 0x00, 0x40,
1450 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
1451 0x00, 0x00, 0x55, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x01, 0x83, 0x00, 0x40,
1452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1454 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1455 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1456 0x81, 0xb2, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1457 0xc6, 0x82, 0x00, 0x41, 0xe1, 0xc1, 0x00, 0x00, 0x78, 0x18, 0x00, 0x40,
1458 0x49, 0x99, 0x01, 0x00, 0x19, 0x05, 0x22, 0x54, 0x81, 0x7c, 0x00, 0x00,
1459 0x6c, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0xb4,
1460 0x69, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x44, 0x93, 0x93, 0x01, 0x00,
1461 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x18, 0x05, 0x00, 0x40,
1462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1465 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1466 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1467 0x55, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x7d, 0x80, 0x22, 0x40,
1468 0x97, 0x6c, 0x00, 0x00, 0x7a, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1469 0x00, 0x00, 0x00, 0x4f, 0x69, 0x93, 0x01, 0x00, 0x43, 0x81, 0x00, 0x58,
1470 0x69, 0x93, 0x00, 0x00, 0x54, 0x16, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1471 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x80, 0x05, 0x00, 0x40,
1472 0x81, 0xb2, 0x00, 0x00, 0x80, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1473 0x00, 0x00, 0x00, 0x4e, 0x69, 0x93, 0x01, 0x00, 0x43, 0x81, 0x00, 0x58,
1474 0x69, 0x93, 0x00, 0x00, 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
1475 0x40, 0x05, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0xf6, 0x15, 0x00, 0x40,
1476 0x43, 0x99, 0x01, 0x00, 0x5c, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
1477 0x00, 0x00, 0x6e, 0xfa, 0x8e, 0xb0, 0x01, 0x00, 0xc1, 0x05, 0x00, 0x40,
1478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1483 0x96, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x55, 0x82, 0x00, 0x40,
1484 0x81, 0x32, 0x01, 0x00, 0x96, 0x80, 0x22, 0x40, 0x97, 0x6c, 0x00, 0x00,
1485 0x93, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
1486 0x69, 0x93, 0x01, 0x00, 0x43, 0x81, 0x00, 0x58, 0x69, 0x93, 0x00, 0x00,
1487 0x38, 0x05, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48,
1488 0xb2, 0xcb, 0x01, 0x00, 0xd0, 0x05, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1492 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1493 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x83, 0x02, 0x00, 0x40,
1494 0x81, 0xb2, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1495 0xd4, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd5, 0x9f, 0x00, 0x40,
1496 0x81, 0xb2, 0x00, 0x00, 0xd6, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1497 0xd7, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x72, 0x01, 0x00, 0x41,
1498 0x81, 0xc0, 0x00, 0x00, 0x55, 0x01, 0x51, 0x49, 0xfd, 0x93, 0x00, 0x00,
1499 0x55, 0x01, 0x52, 0x4a, 0xfd, 0x93, 0x00, 0x00, 0x55, 0x01, 0x55, 0x49,
1500 0xfd, 0x83, 0x00, 0x00, 0x55, 0x01, 0x56, 0x4a, 0xfd, 0x83, 0x00, 0x00,
1501 0x50, 0x01, 0x91, 0x81, 0x80, 0x30, 0x00, 0x00, 0x55, 0x01, 0x45, 0x40,
1502 0x81, 0xb2, 0x00, 0x00, 0x50, 0x01, 0x91, 0x82, 0x80, 0x30, 0x00, 0x00,
1503 0x55, 0x01, 0x46, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1504 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x80, 0xb0, 0x01, 0x00,
1505 0x00, 0x00, 0x00, 0xf0, 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05,
1506 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x48, 0xc1, 0x01, 0x00,
1507 0xb4, 0x80, 0x43, 0x30, 0x3d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e,
1508 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x41, 0x3d, 0xc3, 0x01, 0x00,
1509 0x04, 0x00, 0x20, 0x42, 0xec, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x40,
1510 0x91, 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
1511 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
1512 0x46, 0xb1, 0x01, 0x00, 0xc4, 0x80, 0xa2, 0x40, 0xe1, 0x6d, 0x00, 0x00,
1513 0x00, 0x00, 0x00, 0xd2, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3,
1514 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
1515 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20,
1516 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0xd0, 0xe1, 0xb1, 0x00, 0x00,
1517 0xc1, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
1518 0x98, 0xb0, 0x01, 0x00, 0x04, 0x80, 0x00, 0x40, 0x8b, 0xb3, 0x00, 0x00,
1519 0xb1, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0xc9, 0x80, 0xa2, 0x42,
1520 0x97, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xa1, 0xc1, 0x01, 0x00,
1521 0x00, 0x00, 0x00, 0x00, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x04,
1522 0x80, 0x94, 0x00, 0x00, 0x80, 0x15, 0x3f, 0x42, 0x97, 0xe3, 0x01, 0x00,
1523 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x03,
1524 0x02, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07, 0xb0, 0x01, 0x00,
1525 0x04, 0x00, 0x00, 0xcb, 0x99, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0xcc,
1526 0xf3, 0x83, 0x01, 0x00, 0xd3, 0x80, 0xa2, 0x42, 0x97, 0x6f, 0x00, 0x00,
1527 0x00, 0x00, 0x00, 0xcb, 0xf3, 0x93, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb,
1528 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x44, 0xb1, 0x01, 0x00,
1529 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1530 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf0, 0xb1, 0x01, 0x00,
1531 0x00, 0x00, 0x00, 0xa1, 0xe0, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
1532 0x61, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00,
1533 0xda, 0x80, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xf9, 0x02, 0x00, 0x20,
1534 0x42, 0x31, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41, 0x05, 0x6c, 0x01, 0x00,
1535 0x00, 0x00, 0x80, 0xcb, 0xdb, 0x91, 0x01, 0x00, 0x00, 0x00, 0x19, 0x41,
1536 0x8b, 0xb3, 0x01, 0x00, 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1537 0xe0, 0x80, 0xa8, 0xb1, 0x8c, 0x33, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40,
1538 0x61, 0x99, 0x01, 0x00, 0xe2, 0x80, 0xa8, 0xb1, 0x94, 0x33, 0x00, 0x00,
1539 0xe8, 0x80, 0x14, 0xc6, 0x81, 0x32, 0x00, 0x00, 0x18, 0x00, 0x00, 0xc6,
1540 0x83, 0xf4, 0x01, 0x00, 0x22, 0x83, 0x22, 0x4f, 0x83, 0x04, 0x00, 0x00,
1541 0xc4, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xff, 0x01, 0x00, 0xc6,
1542 0x81, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x97, 0xa3, 0x01, 0x00,
1543 0xc4, 0x80, 0x1f, 0x5c, 0x97, 0x53, 0x00, 0x00, 0x6d, 0x82, 0x1e, 0xc6,
1544 0x81, 0x32, 0x00, 0x00, 0xf2, 0x80, 0x22, 0x48, 0xfd, 0x7f, 0x00, 0x00,
1545 0xf2, 0x80, 0x22, 0x58, 0x81, 0x6c, 0x00, 0x00, 0xf2, 0x80, 0x22, 0x48,
1546 0x81, 0x6c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x84, 0xcc, 0x01, 0x00,
1547 0xf2, 0x80, 0x9f, 0x42, 0x80, 0x32, 0x00, 0x00, 0x22, 0x83, 0x00, 0x40,
1548 0x81, 0xb2, 0x00, 0x00, 0xc4, 0x80, 0xa2, 0xc6, 0x8f, 0x06, 0x00, 0x00,
1549 0xc4, 0x80, 0x1e, 0xc6, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x43,
1550 0x81, 0xf0, 0x01, 0x00, 0xf6, 0x80, 0x00, 0x40, 0x10, 0xc9, 0x00, 0x00,
1551 0x44, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x7e, 0x81, 0x00, 0x40,
1552 0x81, 0xb2, 0x00, 0x00, 0x39, 0x82, 0x00, 0xca, 0x63, 0xb3, 0x00, 0x00,
1553 0x75, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x55, 0x81, 0x00, 0x4d,
1554 0x83, 0xb0, 0x00, 0x00, 0x60, 0x81, 0x00, 0x4e, 0x61, 0xb1, 0x00, 0x00,
1555 0x4c, 0x81, 0x00, 0x40, 0x85, 0xb0, 0x00, 0x00, 0x55, 0x81, 0x00, 0x4c,
1556 0x83, 0xb0, 0x00, 0x00, 0x2e, 0x81, 0x00, 0x40, 0x85, 0xb0, 0x00, 0x00,
1557 0xf8, 0x81, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0x86, 0x81, 0x00, 0x40,
1558 0xc1, 0xb1, 0x00, 0x00, 0xf4, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1559 0x4c, 0x81, 0x00, 0x40, 0x85, 0xb0, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x40,
1560 0x49, 0xb1, 0x00, 0x00, 0x22, 0x83, 0x00, 0xca, 0x9b, 0xb3, 0x00, 0x00,
1561 0x90, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0x94, 0x81, 0x00, 0x40,
1562 0xc1, 0xb1, 0x00, 0x00, 0x9b, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
1563 0x9c, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0x9d, 0x81, 0x00, 0x40,
1564 0xc1, 0xb1, 0x00, 0x00, 0x9e, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
1565 0x9f, 0x81, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00, 0x9f, 0x81, 0x00, 0x41,
1566 0x81, 0xb0, 0x00, 0x00, 0x2d, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1567 0xae, 0x82, 0x00, 0xbb, 0xab, 0xb3, 0x00, 0x00, 0x3a, 0x82, 0x00, 0xca,
1568 0xcf, 0xb3, 0x00, 0x00, 0xc8, 0x03, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00,
1569 0xe8, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc4, 0x80, 0x00, 0x40,
1570 0x81, 0xb2, 0x00, 0x00, 0x22, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1571 0xe0, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x22, 0x83, 0x00, 0xca,
1572 0x77, 0xb3, 0x00, 0x00, 0x56, 0x81, 0x00, 0x4d, 0x83, 0xb0, 0x00, 0x00,
1573 0x5e, 0x81, 0x00, 0x4e, 0x61, 0xb1, 0x00, 0x00, 0x4c, 0x81, 0x00, 0xbb,
1574 0x85, 0xb0, 0x00, 0x00, 0x56, 0x81, 0x00, 0x4c, 0x83, 0xb0, 0x00, 0x00,
1575 0x4c, 0x81, 0x00, 0xbb, 0x85, 0xb0, 0x00, 0x00, 0x2e, 0x81, 0x00, 0xbb,
1576 0x85, 0xb0, 0x00, 0x00, 0x20, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1577 0x22, 0x83, 0x00, 0xca, 0x4d, 0xb3, 0x00, 0x00, 0x70, 0x05, 0x00, 0x40,
1578 0x49, 0xb1, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00,
1579 0x26, 0x81, 0x22, 0x42, 0x8f, 0x6f, 0x00, 0x00, 0x28, 0x81, 0x22, 0x41,
1580 0x8f, 0x6f, 0x00, 0x00, 0x2a, 0x81, 0x1e, 0xca, 0x81, 0x32, 0x00, 0x00,
1581 0x2c, 0x81, 0x1f, 0xca, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
1582 0xc9, 0xb1, 0x01, 0x00, 0x22, 0x83, 0x00, 0x42, 0x8f, 0xb3, 0x00, 0x00,
1583 0x00, 0x00, 0x00, 0xca, 0xcd, 0xb1, 0x01, 0x00, 0x22, 0x83, 0x00, 0x41,
1584 0x8f, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcf, 0xb1, 0x01, 0x00,
1585 0x22, 0x83, 0x00, 0x40, 0x8f, 0xb3, 0x00, 0x00, 0x00, 0x81, 0x00, 0xa6,
1586 0xc6, 0xb1, 0x01, 0x00, 0x22, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1587 0x00, 0x80, 0x00, 0xa6, 0xc6, 0xb1, 0x01, 0x00, 0x22, 0x83, 0x00, 0x40,
1588 0x8f, 0xb3, 0x00, 0x00, 0x78, 0x18, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
1589 0x10, 0x00, 0x2f, 0x9c, 0x89, 0xb0, 0x01, 0x00, 0x46, 0x81, 0x00, 0x40,
1590 0x39, 0x33, 0x01, 0x00, 0x18, 0x00, 0x2f, 0x9b, 0x89, 0xb0, 0x01, 0x00,
1591 0x46, 0x81, 0x00, 0x40, 0x37, 0x33, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x9a,
1592 0x89, 0xb0, 0x01, 0x00, 0x46, 0x81, 0x00, 0x40, 0x35, 0x33, 0x01, 0x00,
1593 0x08, 0x00, 0x2f, 0x99, 0x89, 0xb0, 0x01, 0x00, 0x46, 0x81, 0x00, 0x40,
1594 0x33, 0x33, 0x01, 0x00, 0x00, 0x80, 0x00, 0xae, 0x47, 0xc9, 0x01, 0x00,
1595 0xc4, 0x80, 0xa2, 0x40, 0xe1, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40,
1596 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00,
1597 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x18, 0x00, 0x40,
1598 0xe1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
1599 0x20, 0x00, 0x00, 0xae, 0x63, 0xdd, 0x01, 0x00, 0x41, 0x81, 0x28, 0x40,
1600 0x81, 0x32, 0x00, 0x00, 0x3e, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1601 0x41, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
1602 0x69, 0x93, 0x01, 0x00, 0x22, 0x83, 0x1a, 0x44, 0x93, 0x93, 0x00, 0x00,
1603 0x44, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x43, 0x81, 0x00, 0x58,
1604 0x69, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf0, 0xd1, 0x01, 0x00,
1605 0x00, 0x00, 0xa4, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x4b, 0x81, 0xa2, 0x40,
1606 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xd1, 0x01, 0x00,
1607 0x00, 0x00, 0x80, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x41,
1608 0xe1, 0xd1, 0x01, 0x00, 0x4c, 0x81, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00,
1609 0x00, 0x00, 0x00, 0x42, 0x62, 0xb1, 0x01, 0x00, 0x52, 0x81, 0x28, 0x40,
1610 0x81, 0x32, 0x00, 0x00, 0x4d, 0x81, 0x22, 0x5c, 0x77, 0x7d, 0x00, 0x00,
1611 0xc4, 0x80, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x4d, 0x81, 0x00, 0x40,
1612 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00,
1613 0x52, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x22, 0x83, 0x17, 0x40,
1614 0x81, 0xb2, 0x00, 0x00, 0x57, 0x81, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00,
1615 0x57, 0x81, 0x00, 0xbb, 0x81, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1616 0x60, 0xb1, 0x01, 0x00, 0xc4, 0x80, 0xa2, 0x41, 0x76, 0x7d, 0x00, 0x00,
1617 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00, 0x59, 0x81, 0xa8, 0x40,
1618 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00,
1619 0x22, 0x83, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x5b, 0x81, 0x00, 0x40,
1620 0x81, 0xb2, 0x00, 0x00, 0x50, 0x95, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1621 0x61, 0x81, 0x00, 0xbb, 0x87, 0xb0, 0x00, 0x00, 0x50, 0x95, 0x2f, 0x40,
1622 0x87, 0xb0, 0x01, 0x00, 0x65, 0x81, 0x22, 0x40, 0x95, 0x7f, 0x00, 0x00,
1623 0xc4, 0x80, 0xa2, 0x40, 0xe1, 0x6d, 0x00, 0x00, 0xc4, 0x80, 0x22, 0x40,
1624 0x95, 0x6f, 0x00, 0x00, 0x22, 0x83, 0x60, 0x40, 0x95, 0x83, 0x00, 0x00,
1625 0x02, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00, 0xc4, 0x80, 0x22, 0x40,
1626 0x85, 0x6c, 0x00, 0x00, 0xc4, 0x80, 0xa2, 0x40, 0x85, 0x7c, 0x00, 0x00,
1627 0xc4, 0x80, 0xa2, 0x4e, 0x77, 0x7d, 0x00, 0x00, 0x69, 0x81, 0x36, 0x40,
1628 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x62, 0xb1, 0x01, 0x00,
1629 0x6a, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
1630 0x62, 0xb1, 0x01, 0x00, 0x6c, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1631 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00, 0x6e, 0x81, 0xa8, 0x40,
1632 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x16, 0x40, 0x81, 0xb2, 0x01, 0x00,
1633 0x74, 0x81, 0x22, 0x41, 0x43, 0x51, 0x00, 0x00, 0x00, 0x08, 0x00, 0xca,
1634 0x95, 0xcb, 0x01, 0x00, 0x68, 0x81, 0x00, 0x41, 0x85, 0xc0, 0x00, 0x00,
1635 0x22, 0x83, 0x00, 0x40, 0xe1, 0xb1, 0x00, 0x00, 0x77, 0x81, 0xa2, 0x42,
1636 0x67, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x67, 0xb3, 0x01, 0x00,
1637 0x77, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1638 0x65, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x93, 0x83, 0x01, 0x00,
1639 0x00, 0x00, 0x1a, 0xca, 0x69, 0x97, 0x01, 0x00, 0x22, 0x83, 0x26, 0x40,
1640 0x81, 0x32, 0x00, 0x00, 0x7c, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1641 0x22, 0x83, 0x1a, 0x44, 0x93, 0x93, 0x00, 0x00, 0xc4, 0x80, 0x20, 0x43,
1642 0x95, 0x6f, 0x00, 0x00, 0x22, 0x83, 0x80, 0xca, 0x67, 0x33, 0x00, 0x00,
1643 0x22, 0x83, 0x22, 0x40, 0x65, 0x6f, 0x00, 0x00, 0xc4, 0x80, 0xa2, 0x48,
1644 0xdb, 0x7d, 0x00, 0x00, 0x22, 0x83, 0x00, 0x6f, 0xdb, 0x91, 0x00, 0x00,
1645 0x85, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x35, 0x80, 0x22, 0x40,
1646 0x80, 0x32, 0x00, 0x00, 0x22, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1647 0x00, 0x00, 0x00, 0x58, 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1648 0x95, 0x93, 0x01, 0x00, 0x8c, 0x81, 0xa2, 0x44, 0x21, 0x6f, 0x00, 0x00,
1649 0x00, 0x00, 0x00, 0x5f, 0x95, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5e,
1650 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57, 0x95, 0x93, 0x01, 0x00,
1651 0x00, 0x00, 0x00, 0xca, 0xc3, 0xb1, 0x01, 0x00, 0x8f, 0x81, 0x22, 0x5b,
1652 0x95, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xfd, 0x93, 0x01, 0x00,
1653 0x22, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0xfd, 0x00, 0xca,
1654 0x95, 0x9b, 0x01, 0x00, 0x0d, 0x01, 0x00, 0xca, 0xc5, 0x31, 0x01, 0x00,
1655 0x00, 0x00, 0x00, 0x5f, 0x95, 0x83, 0x01, 0x00, 0x22, 0x83, 0x00, 0xca,
1656 0xc5, 0xb1, 0x00, 0x00, 0xdf, 0x6f, 0x00, 0xca, 0x95, 0x9b, 0x01, 0x00,
1657 0x00, 0x00, 0x00, 0x55, 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
1658 0xc7, 0xb1, 0x01, 0x00, 0x22, 0x83, 0x22, 0x5f, 0x95, 0x7f, 0x00, 0x00,
1659 0x0d, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1660 0x95, 0x83, 0x01, 0x00, 0x22, 0x83, 0x00, 0xca, 0xc7, 0xb1, 0x00, 0x00,
1661 0x22, 0x83, 0x00, 0xca, 0xc9, 0xb1, 0x00, 0x00, 0x22, 0x83, 0x00, 0xca,
1662 0xcb, 0xb1, 0x00, 0x00, 0x22, 0x83, 0x00, 0xca, 0xcd, 0xb1, 0x00, 0x00,
1663 0x22, 0x83, 0x00, 0xca, 0xcf, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x42,
1664 0x81, 0xe0, 0x01, 0x00, 0x98, 0x14, 0x00, 0x40, 0x48, 0xc9, 0x01, 0x00,
1665 0x22, 0x83, 0x00, 0xca, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1666 0x09, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1667 0xa4, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x41,
1668 0x08, 0x99, 0x01, 0x00, 0xa6, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
1669 0x20, 0x80, 0x00, 0xa6, 0x08, 0xb1, 0x01, 0x00, 0xa8, 0x81, 0x9f, 0x85,
1670 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x83, 0x84, 0x01, 0x00,
1671 0xdd, 0x81, 0x22, 0x30, 0x83, 0x6c, 0x00, 0x00, 0xa7, 0x81, 0xa2, 0x4f,
1672 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x21, 0xb3, 0x01, 0x00,
1673 0x02, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40,
1674 0x81, 0x32, 0x01, 0x00, 0x10, 0x00, 0x00, 0x41, 0x84, 0xe4, 0x01, 0x00,
1675 0x03, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40,
1676 0x81, 0x32, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x41, 0x86, 0x88, 0x01, 0x00,
1677 0x00, 0x00, 0x00, 0x43, 0x84, 0x94, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xa6,
1678 0x86, 0xb0, 0x01, 0x00, 0x10, 0xc4, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00,
1679 0xbd, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
1680 0x21, 0xb3, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1681 0x1c, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0xba, 0x81, 0xa2, 0x5e,
1682 0x0b, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00,
1683 0xcf, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x41, 0x01, 0x00, 0xa6,
1684 0x86, 0xb0, 0x01, 0x00, 0x50, 0x0c, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00,
1685 0xc2, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1686 0x21, 0xb3, 0x01, 0x00, 0xcf, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1687 0x41, 0x01, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00, 0x60, 0x0c, 0x00, 0x43,
1688 0x86, 0x98, 0x01, 0x00, 0xcf, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00,
1689 0x00, 0x00, 0x00, 0x42, 0x21, 0xb3, 0x01, 0x00, 0x18, 0x80, 0x00, 0xa6,
1690 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1691 0xff, 0xff, 0x00, 0x41, 0x82, 0x88, 0x01, 0x00, 0x00, 0x77, 0x00, 0x41,
1692 0x82, 0x8c, 0x01, 0x00, 0x01, 0x02, 0x00, 0x41, 0x82, 0x98, 0x01, 0x00,
1693 0x20, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x18, 0x00, 0x00, 0x41,
1694 0x82, 0xdc, 0x01, 0x00, 0xcd, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
1695 0x00, 0x00, 0x00, 0x41, 0x08, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
1696 0x82, 0xb0, 0x01, 0x00, 0xd0, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
1697 0x40, 0x13, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00, 0xd8, 0x81, 0x22, 0x43,
1698 0x21, 0x6f, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1699 0x12, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0xd5, 0x81, 0xa2, 0x5e,
1700 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00,
1701 0xf3, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6,
1702 0x82, 0xb0, 0x01, 0x00, 0x19, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
1703 0xda, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x41,
1704 0x08, 0x99, 0x01, 0x00, 0xf3, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1705 0x00, 0x00, 0x00, 0x44, 0x21, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1706 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x83, 0x90, 0x01, 0x00,
1707 0x00, 0x00, 0x00, 0x5e, 0x83, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57,
1708 0x83, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc2, 0xb1, 0x01, 0x00,
1709 0x0c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1710 0x83, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc2, 0xb1, 0x01, 0x00,
1711 0x0c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
1712 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
1713 0x20, 0x00, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
1714 0x82, 0xb0, 0x01, 0x00, 0x11, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
1715 0xec, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x01, 0x00, 0x00, 0x41,
1716 0x08, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1717 0xef, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x40, 0x13, 0x00, 0x41,
1718 0x08, 0x99, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1719 0x40, 0x00, 0x00, 0x41, 0x2e, 0x99, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
1720 0x81, 0xb2, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00,
1721 0x00, 0x00, 0x00, 0xca, 0x81, 0x94, 0x01, 0x00, 0xf6, 0x81, 0xa2, 0x5e,
1722 0x0b, 0x7d, 0x00, 0x00, 0x22, 0x83, 0x00, 0x40, 0x08, 0xb1, 0x00, 0x00,
1723 0xc8, 0x14, 0x2e, 0xbb, 0x85, 0xb0, 0x01, 0x00, 0xf9, 0x81, 0xa2, 0x5e,
1724 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0xb0, 0x01, 0x00,
1725 0x08, 0x82, 0x22, 0x43, 0x21, 0x6f, 0x00, 0x00, 0x17, 0x82, 0x22, 0x44,
1726 0x21, 0x6f, 0x00, 0x00, 0x11, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1727 0x28, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x1f, 0x82, 0x22, 0x4a,
1728 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00,
1729 0x03, 0x82, 0x22, 0x4d, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1730 0x87, 0x90, 0x01, 0x00, 0x05, 0x82, 0x22, 0x4f, 0x83, 0x7c, 0x00, 0x00,
1731 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00, 0x07, 0x82, 0x22, 0x4e,
1732 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x87, 0x90, 0x01, 0x00,
1733 0x1f, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x01, 0x80, 0x00, 0xa6,
1734 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1735 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40,
1736 0x81, 0x32, 0x01, 0x00, 0x1f, 0x82, 0x22, 0x42, 0x83, 0x7c, 0x00, 0x00,
1737 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00, 0x1c, 0x80, 0x00, 0xa6,
1738 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1739 0x12, 0x82, 0x22, 0x45, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1740 0x87, 0x90, 0x01, 0x00, 0x14, 0x82, 0x22, 0x44, 0x83, 0x7c, 0x00, 0x00,
1741 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00, 0x16, 0x82, 0x22, 0x43,
1742 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x87, 0x90, 0x01, 0x00,
1743 0x1f, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x01, 0x80, 0x00, 0xa6,
1744 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1745 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40,
1746 0x81, 0x32, 0x01, 0x00, 0x1f, 0x82, 0x22, 0x42, 0x83, 0x7c, 0x00, 0x00,
1747 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
1748 0x87, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x87, 0x90, 0x01, 0x00,
1749 0x00, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x28, 0x82, 0x00, 0x40,
1750 0x81, 0x32, 0x01, 0x00, 0x23, 0x82, 0x22, 0x4b, 0x83, 0x7c, 0x00, 0x00,
1751 0x00, 0x00, 0x00, 0x40, 0x87, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
1752 0xe0, 0xb1, 0x01, 0x00, 0xff, 0x7f, 0x00, 0xa2, 0xa0, 0x8b, 0x01, 0x00,
1753 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00, 0xb8, 0x80, 0x00, 0xca,
1754 0xa7, 0x33, 0x01, 0x00, 0x41, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1755 0x20, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x29, 0x82, 0xa2, 0x5e,
1756 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xb1, 0x01, 0x00,
1757 0x2b, 0x82, 0x9f, 0x85, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
1758 0x81, 0xb2, 0x01, 0x00, 0x30, 0x82, 0x14, 0xf7, 0x81, 0x30, 0x00, 0x00,
1759 0x30, 0x82, 0xa2, 0x49, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
1760 0xfd, 0x93, 0x01, 0x00, 0x33, 0x82, 0x15, 0xf8, 0x81, 0x14, 0x00, 0x00,
1761 0x33, 0x82, 0xa2, 0x4a, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
1762 0xfd, 0x93, 0x01, 0x00, 0x35, 0x82, 0xa2, 0xc8, 0x81, 0x32, 0x00, 0x00,
1763 0x40, 0x00, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
1764 0x80, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xef, 0xb3, 0x01, 0x00,
1765 0x37, 0x82, 0x42, 0x40, 0xf1, 0x33, 0x00, 0x00, 0x43, 0x81, 0x00, 0x40,
1766 0x68, 0x97, 0x00, 0x00, 0x22, 0x83, 0x00, 0xbb, 0x6b, 0xb3, 0x00, 0x00,
1767 0x22, 0x83, 0x00, 0xbb, 0xb1, 0xb3, 0x00, 0x00, 0x22, 0x83, 0x00, 0x40,
1768 0x81, 0xb2, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
1769 0x00, 0x00, 0x00, 0x40, 0x18, 0xb1, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40,
1770 0x83, 0x98, 0x01, 0x00, 0x00, 0x19, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
1771 0x00, 0x00, 0x42, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff,
1772 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0xb1, 0x01, 0x00,
1773 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1774 0x18, 0xb1, 0x01, 0x00, 0x40, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
1775 0x00, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x19, 0x00, 0x40,
1776 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x43, 0xc1, 0x01, 0x00,
1777 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
1778 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xd0, 0x01, 0x00,
1779 0x00, 0x00, 0x00, 0x41, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1780 0xf6, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x43, 0xc1, 0x01, 0x00,
1781 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00, 0x4a, 0x82, 0xa2, 0x54,
1782 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf7, 0xb1, 0x01, 0x00,
1783 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00, 0x51, 0x82, 0xa2, 0x06,
1784 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
1785 0x00, 0x16, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x80, 0x16, 0x2e, 0x06,
1786 0x83, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1787 0x57, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x22, 0x00, 0x00, 0x40,
1788 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xf6, 0xb1, 0x01, 0x00,
1789 0x5a, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x62, 0x00, 0x00, 0x40,
1790 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1791 0x00, 0x16, 0x2d, 0x06, 0x83, 0xb0, 0x01, 0x00, 0x80, 0x16, 0x00, 0x40,
1792 0x45, 0x99, 0x01, 0x00, 0x5c, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1793 0x60, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
1794 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xf9, 0xb1, 0x01, 0x00,
1795 0x00, 0x00, 0x00, 0x72, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
1796 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf9, 0xb1, 0x01, 0x00,
1797 0x54, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40,
1798 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x95, 0xb0, 0x01, 0x00,
1799 0x6c, 0x82, 0x22, 0x70, 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
1800 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
1801 0xc4, 0x80, 0xa2, 0x42, 0x97, 0x6f, 0x00, 0x00, 0xb6, 0x03, 0x00, 0x40,
1802 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x42, 0x99, 0xb3, 0x01, 0x00,
1803 0x78, 0x82, 0x22, 0x44, 0x81, 0x6c, 0x00, 0x00, 0x80, 0x82, 0x22, 0x48,
1804 0x81, 0x6c, 0x00, 0x00, 0x7a, 0x82, 0x22, 0x4c, 0x81, 0x6c, 0x00, 0x00,
1805 0x85, 0x82, 0x22, 0x50, 0x81, 0x6c, 0x00, 0x00, 0x86, 0x82, 0x22, 0x54,
1806 0x81, 0x6c, 0x00, 0x00, 0x88, 0x82, 0x22, 0x58, 0x81, 0x6c, 0x00, 0x00,
1807 0x8d, 0x82, 0x22, 0x5c, 0x81, 0x6c, 0x00, 0x00, 0x50, 0x01, 0x00, 0x40,
1808 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x09, 0xb0, 0x01, 0x00,
1809 0x22, 0x83, 0x00, 0xca, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1810 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf3, 0x83, 0x01, 0x00,
1811 0x7e, 0x82, 0xa2, 0x42, 0x05, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1812 0x05, 0xb0, 0x01, 0x00, 0x22, 0x83, 0x22, 0xca, 0x07, 0x14, 0x00, 0x00,
1813 0x22, 0x83, 0x00, 0x46, 0xf3, 0x93, 0x00, 0x00, 0x22, 0x83, 0x20, 0x43,
1814 0x95, 0x6f, 0x00, 0x00, 0x22, 0x83, 0x80, 0xca, 0x05, 0x30, 0x00, 0x00,
1815 0x22, 0x83, 0x22, 0x01, 0x80, 0x30, 0x00, 0x00, 0xc4, 0x80, 0xa2, 0x48,
1816 0xdb, 0x7d, 0x00, 0x00, 0x22, 0x83, 0x00, 0xcb, 0xdb, 0x91, 0x00, 0x00,
1817 0x57, 0x01, 0x00, 0xbc, 0xab, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc,
1818 0xb1, 0xb3, 0x01, 0x00, 0x22, 0x83, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00,
1819 0xff, 0x00, 0x00, 0xca, 0x81, 0x88, 0x01, 0x00, 0x22, 0x83, 0xa2, 0x40,
1820 0x74, 0x7d, 0x00, 0x00, 0x60, 0x00, 0x20, 0x40, 0x60, 0x99, 0x01, 0x00,
1821 0x8a, 0x82, 0xa8, 0xb1, 0x82, 0x30, 0x00, 0x00, 0x89, 0x82, 0x00, 0x40,
1822 0x81, 0xb2, 0x00, 0x00, 0x22, 0x83, 0x00, 0xca, 0x79, 0xb3, 0x00, 0x00,
1823 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
1824 0xcb, 0x83, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
1825 0x90, 0x82, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x45, 0x40,
1826 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
1827 0x9b, 0x82, 0x91, 0x82, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a,
1828 0x80, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
1829 0x99, 0x82, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x9b, 0x82, 0x56, 0x40,
1830 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
1831 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00, 0xb6, 0x03, 0x00, 0x40,
1832 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x07, 0x90, 0x01, 0x00,
1833 0xd8, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e,
1834 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xcd, 0x83, 0x01, 0x00,
1835 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xa0, 0x82, 0xa2, 0x41,
1836 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
1837 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xab, 0x82, 0x91, 0x81,
1838 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x80, 0xb0, 0x01, 0x00,
1839 0xae, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00, 0xa9, 0x82, 0xa6, 0x40,
1840 0x81, 0x32, 0x00, 0x00, 0xab, 0x82, 0x55, 0x40, 0x81, 0xb2, 0x00, 0x00,
1841 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52,
1842 0x07, 0x90, 0x01, 0x00, 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
1843 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x41,
1844 0x8b, 0xb3, 0x00, 0x00, 0xb1, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
1845 0xc4, 0x14, 0x2f, 0x40, 0x99, 0xb3, 0x01, 0x00, 0x57, 0x01, 0x00, 0x40,
1846 0x49, 0xb1, 0x00, 0x00, 0xa0, 0x94, 0x2e, 0x43, 0x97, 0xb0, 0x01, 0x00,
1847 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0xb2, 0x82, 0xa2, 0x41,
1848 0x97, 0x50, 0x00, 0x00, 0x50, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
1849 0xac, 0x94, 0x2e, 0x43, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1850 0xf1, 0xb1, 0x01, 0x00, 0xb6, 0x82, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
1851 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xae, 0x03, 0x00, 0x40,
1852 0xa3, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb0, 0x01, 0x00,
1853 0x60, 0x15, 0x00, 0x40, 0x85, 0x98, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40,
1854 0x40, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x59, 0x41, 0x94, 0x01, 0x00,
1855 0x00, 0x00, 0x00, 0x50, 0x41, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
1856 0x40, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57, 0x41, 0x90, 0x01, 0x00,
1857 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x42,
1858 0x81, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
1859 0xbc, 0x82, 0xa0, 0x42, 0x81, 0x6c, 0x00, 0x00, 0xbc, 0x82, 0x00, 0x50,
1860 0x85, 0xc0, 0x00, 0x00, 0x01, 0x83, 0xa2, 0x41, 0x01, 0x7d, 0x00, 0x00,
1861 0xcf, 0x82, 0x22, 0x58, 0x73, 0x7d, 0x00, 0x00, 0x78, 0x00, 0x00, 0x40,
1862 0x61, 0x99, 0x01, 0x00, 0xc7, 0x82, 0xa8, 0xb1, 0x9c, 0x30, 0x00, 0x00,
1863 0x30, 0x00, 0x38, 0x45, 0x9d, 0xe0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5f,
1864 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x5e, 0x1f, 0x7c, 0x00, 0x00,
1865 0x00, 0xc0, 0x00, 0xa6, 0x1e, 0xa4, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e,
1866 0x10, 0xc9, 0x00, 0x00, 0xcf, 0x82, 0x33, 0xc4, 0x81, 0x30, 0x00, 0x00,
1867 0xd2, 0x82, 0xa1, 0xad, 0x9d, 0x20, 0x00, 0x00, 0xc6, 0x82, 0x13, 0x40,
1868 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4e, 0x5a, 0x83, 0x01, 0x00,
1869 0x30, 0x00, 0x38, 0x45, 0x9d, 0xe0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5f,
1870 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5e, 0x1f, 0x7c, 0x00, 0x00,
1871 0x04, 0x00, 0xa2, 0x40, 0x05, 0x6c, 0x00, 0x00, 0xdd, 0x82, 0x22, 0xab,
1872 0x80, 0x04, 0x00, 0x00, 0xdb, 0x82, 0xa2, 0x40, 0x01, 0x7d, 0x00, 0x00,
1873 0xdd, 0x82, 0x22, 0x5f, 0x57, 0x7d, 0x00, 0x00, 0x0f, 0x88, 0x00, 0x5f,
1874 0x1f, 0xb4, 0x00, 0x00, 0xdd, 0x82, 0x22, 0x5e, 0x57, 0x7d, 0x00, 0x00,
1875 0x7d, 0x88, 0x00, 0x5f, 0x1f, 0xb4, 0x00, 0x00, 0xe3, 0x82, 0x22, 0x54,
1876 0x73, 0x7d, 0x00, 0x00, 0x74, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1877 0xdd, 0x82, 0xa8, 0xb1, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f,
1878 0x1f, 0xb4, 0x01, 0x00, 0xf4, 0x84, 0xa2, 0x5f, 0x01, 0x7c, 0x00, 0x00,
1879 0x92, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xe5, 0x82, 0xa2, 0x5f,
1880 0x59, 0x27, 0x00, 0x00, 0xe7, 0x82, 0xa2, 0x5c, 0x73, 0x7d, 0x00, 0x00,
1881 0xee, 0x82, 0xa2, 0x5e, 0x73, 0x7d, 0x00, 0x00, 0xfa, 0x82, 0x22, 0x5c,
1882 0x73, 0x7d, 0x00, 0x00, 0xfb, 0x82, 0x37, 0x40, 0x81, 0x32, 0x00, 0x00,
1883 0x7c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xe8, 0x82, 0xa8, 0xb1,
1884 0x36, 0x30, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1885 0xea, 0x82, 0xa8, 0xb1, 0x00, 0x30, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
1886 0x02, 0x88, 0x01, 0x00, 0x34, 0x85, 0x17, 0x5f, 0x1f, 0xb4, 0x00, 0x00,
1887 0xfb, 0x82, 0x34, 0x40, 0x81, 0x32, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x40,
1888 0x61, 0x99, 0x01, 0x00, 0xef, 0x82, 0xa8, 0xb1, 0x12, 0x30, 0x00, 0x00,
1889 0xf7, 0x82, 0x52, 0x21, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x41,
1890 0x2f, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x1f, 0xb4, 0x01, 0x00,
1891 0xff, 0x3f, 0x00, 0x09, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
1892 0x01, 0xf0, 0x01, 0x00, 0x4f, 0x83, 0x00, 0x34, 0x13, 0x84, 0x00, 0x00,
1893 0xff, 0x3f, 0x14, 0x09, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1894 0x1f, 0xb4, 0x01, 0x00, 0xc2, 0x83, 0x00, 0x43, 0x01, 0xf0, 0x00, 0x00,
1895 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xfb, 0x82, 0x33, 0x40,
1896 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4e, 0x5a, 0x7f, 0x00, 0x00,
1897 0x07, 0x00, 0x00, 0x4e, 0x80, 0xe4, 0x01, 0x00, 0x00, 0x39, 0x00, 0x40,
1898 0x80, 0xc8, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40, 0x06, 0x6c, 0x00, 0x00,
1899 0xc6, 0x82, 0x13, 0x4e, 0x5a, 0x93, 0x00, 0x00, 0xe4, 0x87, 0xa2, 0x48,
1900 0xfd, 0x7f, 0x00, 0x00, 0x05, 0x83, 0x02, 0xe6, 0x81, 0x32, 0x00, 0x00,
1901 0x06, 0x83, 0x83, 0xe5, 0x81, 0x32, 0x00, 0x00, 0x8e, 0x82, 0x00, 0x42,
1902 0x97, 0xb3, 0x00, 0x00, 0x9e, 0x82, 0x00, 0x42, 0x97, 0xb3, 0x00, 0x00,
1903 0x09, 0x83, 0x22, 0x46, 0xf3, 0x7f, 0x00, 0x00, 0x0c, 0x83, 0xa2, 0x41,
1904 0xf3, 0x7f, 0x00, 0x00, 0xc6, 0x80, 0x00, 0x42, 0x97, 0x33, 0x01, 0x00,
1905 0x0c, 0x83, 0x22, 0x44, 0xf3, 0x7f, 0x00, 0x00, 0x0c, 0x83, 0xa2, 0x41,
1906 0xf3, 0x7f, 0x00, 0x00, 0xc6, 0x80, 0x00, 0x6f, 0x97, 0x33, 0x01, 0x00,
1907 0x04, 0x00, 0xa2, 0xac, 0x80, 0x32, 0x00, 0x00, 0x11, 0x83, 0x22, 0x5a,
1908 0x73, 0x7d, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1909 0x0e, 0x83, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0x01, 0x00, 0x00, 0xcf,
1910 0x11, 0xc9, 0x00, 0x00, 0x17, 0x83, 0xa2, 0x40, 0x93, 0x7f, 0x00, 0x00,
1911 0x17, 0x83, 0x22, 0x44, 0x93, 0x7f, 0x00, 0x00, 0x13, 0x83, 0x42, 0xa5,
1912 0x80, 0x30, 0x00, 0x00, 0x16, 0x83, 0xa2, 0x40, 0x93, 0x7f, 0x00, 0x00,
1913 0x38, 0x83, 0x1a, 0x40, 0x93, 0x93, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x40,
1914 0x81, 0xb2, 0x01, 0x00, 0xdf, 0x80, 0xa2, 0x40, 0x73, 0x7d, 0x00, 0x00,
1915 0xdf, 0x87, 0x22, 0x44, 0x21, 0x6f, 0x00, 0x00, 0xd6, 0x87, 0x22, 0x40,
1916 0x65, 0x7d, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x5b, 0x73, 0x7d, 0x00, 0x00,
1917 0x04, 0x00, 0xa2, 0x49, 0x33, 0x7d, 0x00, 0x00, 0x21, 0x83, 0x22, 0x48,
1918 0x33, 0x7d, 0x00, 0x00, 0xff, 0x01, 0x00, 0x99, 0x80, 0xd8, 0x01, 0x00,
1919 0x00, 0x00, 0x00, 0x50, 0x81, 0xe0, 0x01, 0x00, 0xa8, 0x98, 0x2f, 0x40,
1920 0x33, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe0, 0xc1, 0x01, 0x00,
1921 0x01, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc6, 0x82, 0x00, 0x40,
1922 0x8b, 0xb3, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5e, 0x1f, 0x7c, 0x00, 0x00,
1923 0x04, 0x00, 0x22, 0x5f, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e,
1924 0x1f, 0x90, 0x01, 0x00, 0xc6, 0x82, 0x00, 0x5f, 0x1f, 0x80, 0x00, 0x00,
1925 0x04, 0x00, 0xa2, 0x5e, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x5f,
1926 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x1f, 0x90, 0x01, 0x00,
1927 0x00, 0x00, 0x00, 0x5f, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58,
1928 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x62, 0xb1, 0x01, 0x00,
1929 0xc6, 0x82, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x2c, 0x83, 0x00, 0x40,
1930 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
1931 0x04, 0x00, 0xa2, 0x5e, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x5f,
1932 0x1f, 0x7c, 0x00, 0x00, 0x32, 0x83, 0x33, 0x40, 0x1f, 0x30, 0x00, 0x00,
1933 0x04, 0x00, 0xa2, 0x4e, 0x5a, 0x7f, 0x00, 0x00, 0x07, 0x00, 0x00, 0x4e,
1934 0x80, 0xe4, 0x01, 0x00, 0x00, 0x39, 0x00, 0x40, 0x80, 0xc8, 0x01, 0x00,
1935 0x04, 0x00, 0xa2, 0x40, 0x06, 0x6c, 0x00, 0x00, 0xc6, 0x82, 0x13, 0x4e,
1936 0x5a, 0x93, 0x00, 0x00, 0x3a, 0x83, 0xa0, 0xce, 0x81, 0x50, 0x00, 0x00,
1937 0x4d, 0x83, 0xa0, 0xcd, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5,
1938 0x9c, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x81, 0xb0, 0x01, 0x00,
1939 0x4d, 0x83, 0x22, 0xb5, 0x81, 0x14, 0x00, 0x00, 0x80, 0x15, 0x2f, 0x40,
1940 0x49, 0xb1, 0x01, 0x00, 0x3e, 0x83, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1941 0x00, 0x00, 0x60, 0xb4, 0x65, 0x97, 0x01, 0x00, 0xd0, 0x15, 0x2e, 0x40,
1942 0x69, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x44, 0x93, 0x83, 0x01, 0x00,
1943 0x04, 0x00, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00, 0x1a, 0x00, 0x00, 0xa2,
1944 0x80, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00,
1945 0x00, 0x00, 0x00, 0xb1, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb5,
1946 0xf1, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1947 0x80, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00, 0x48, 0x83, 0xa8, 0xa1,
1948 0xe0, 0x31, 0x00, 0x00, 0x17, 0x83, 0x00, 0x88, 0x9e, 0xb3, 0x00, 0x00,
1949 0x17, 0x83, 0xa2, 0x41, 0x67, 0x6f, 0x00, 0x00, 0x17, 0x83, 0x00, 0x6f,
1950 0xdb, 0x91, 0x00, 0x00, 0x4d, 0x83, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1951 0x17, 0x83, 0x1a, 0x40, 0x93, 0x83, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40,
1952 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
1953 0x04, 0x00, 0xa2, 0x5a, 0x01, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
1954 0x01, 0x6c, 0x00, 0x00, 0x00, 0x99, 0x00, 0x09, 0x46, 0xc9, 0x01, 0x00,
1955 0x3f, 0x00, 0x00, 0xf3, 0x0c, 0x88, 0x01, 0x00, 0x5c, 0x83, 0xa6, 0x42,
1956 0x13, 0x60, 0x00, 0x00, 0x95, 0x96, 0x00, 0x95, 0x03, 0x30, 0x01, 0x00,
1957 0x57, 0x83, 0x61, 0x40, 0x81, 0x32, 0x00, 0x00, 0x75, 0x00, 0x00, 0x40,
1958 0x61, 0x99, 0x01, 0x00, 0x58, 0x83, 0xa8, 0xb1, 0x0c, 0x30, 0x00, 0x00,
1959 0xa3, 0x96, 0x71, 0x10, 0x94, 0x30, 0x01, 0x00, 0x5d, 0x83, 0x00, 0x58,
1960 0x1f, 0x90, 0x00, 0x00, 0x87, 0x96, 0x00, 0x95, 0x03, 0x30, 0x01, 0x00,
1961 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03,
1962 0x48, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x2d, 0xf0, 0x2e, 0xb0, 0x01, 0x00,
1963 0x80, 0x04, 0x00, 0x17, 0x96, 0x88, 0x01, 0x00, 0x04, 0x00, 0xa6, 0x40,
1964 0x81, 0x32, 0x00, 0x00, 0x4a, 0xc1, 0x00, 0x17, 0x96, 0xd8, 0x01, 0x00,
1965 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xee, 0x07, 0x00, 0x40,
1966 0x97, 0x98, 0x01, 0x00, 0x68, 0x83, 0x23, 0x4b, 0xe4, 0x6d, 0x00, 0x00,
1967 0x68, 0x83, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1968 0x1f, 0x90, 0x01, 0x00, 0x22, 0x00, 0x2f, 0x40, 0x81, 0xb2, 0x01, 0x00,
1969 0x6b, 0x83, 0x83, 0x17, 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x00, 0x40,
1970 0x47, 0x99, 0x01, 0x00, 0x6d, 0x83, 0x85, 0x17, 0x80, 0x32, 0x00, 0x00,
1971 0x00, 0x00, 0x00, 0x48, 0x47, 0xc1, 0x01, 0x00, 0x72, 0x83, 0x22, 0x55,
1972 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x43, 0xd1, 0x01, 0x00,
1973 0x0f, 0x00, 0x00, 0xfa, 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
1974 0x97, 0xe0, 0x01, 0x00, 0x73, 0x83, 0x00, 0x4b, 0x44, 0xc1, 0x00, 0x00,
1975 0x12, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x28, 0x00, 0x00, 0xf6,
1976 0x02, 0xcc, 0x01, 0x00, 0x0a, 0x00, 0x00, 0xa1, 0x42, 0xc9, 0x01, 0x00,
1977 0x00, 0x00, 0x00, 0xf8, 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x28, 0xf0,
1978 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1a, 0xb0, 0x01, 0x00,
1979 0x00, 0x00, 0x00, 0xa2, 0x2a, 0xb0, 0x01, 0x00, 0xc0, 0x28, 0x3c, 0x46,
1980 0x0d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x44, 0x95, 0xb0, 0x01, 0x00,
1981 0x7f, 0x83, 0xa2, 0xf8, 0x0e, 0x30, 0x00, 0x00, 0x8f, 0x83, 0x22, 0x41,
1982 0x95, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x50, 0x49, 0xc1, 0x01, 0x00,
1983 0x7b, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x7c, 0x83, 0xa2, 0xf8,
1984 0x16, 0x6c, 0x00, 0x00, 0x7c, 0x83, 0xa2, 0xf8, 0x10, 0x6c, 0x00, 0x00,
1985 0x7c, 0x83, 0xa2, 0xf0, 0x1a, 0x6c, 0x00, 0x00, 0x8d, 0x83, 0x22, 0x58,
1986 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00,
1987 0x84, 0x83, 0x65, 0x40, 0x81, 0x32, 0x00, 0x00, 0x88, 0x83, 0xa2, 0xf3,
1988 0x74, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xe6, 0x95, 0x01, 0x00,
1989 0x8d, 0x83, 0x75, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
1990 0x96, 0xb0, 0x01, 0x00, 0x3f, 0x00, 0x75, 0xf3, 0x0c, 0x88, 0x01, 0x00,
1991 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
1992 0x62, 0xb1, 0x01, 0x00, 0x8b, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1993 0x8d, 0x83, 0x67, 0x40, 0x81, 0x32, 0x00, 0x00, 0x95, 0x83, 0x77, 0x41,
1994 0x2d, 0xc3, 0x00, 0x00, 0x93, 0x83, 0x22, 0x58, 0x1f, 0x7c, 0x00, 0x00,
1995 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
1996 0x62, 0xb1, 0x01, 0x00, 0x91, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1997 0x93, 0x83, 0x67, 0x40, 0x81, 0x32, 0x00, 0x00, 0xd3, 0x83, 0x77, 0x41,
1998 0x2d, 0xc3, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00,
1999 0x12, 0x95, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00, 0xa6, 0x83, 0x22, 0x41,
2000 0x81, 0x6c, 0x00, 0x00, 0x9b, 0x83, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00,
2001 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xa5, 0x83, 0x22, 0x5f,
2002 0x0f, 0x7c, 0x00, 0x00, 0x48, 0x96, 0x00, 0x5f, 0x01, 0x10, 0x01, 0x00,
2003 0xa1, 0x83, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03,
2004 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00,
2005 0x9f, 0x95, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b,
2006 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x0f, 0x80, 0x01, 0x00,
2007 0x01, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00,
2008 0x8a, 0x30, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
2009 0xb5, 0x83, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5a,
2010 0x1f, 0x7c, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00,
2011 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x0d,
2012 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
2013 0x6a, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb5, 0x83, 0x22, 0x20,
2014 0x85, 0x6c, 0x00, 0x00, 0xb0, 0x83, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2015 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x87, 0x95, 0x00, 0x5c,
2016 0x1f, 0x00, 0x01, 0x00, 0xc2, 0x97, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
2017 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07,
2018 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2019 0x04, 0x00, 0xa2, 0x4b, 0xe1, 0x7d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5c,
2020 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2021 0xb9, 0x83, 0x82, 0xf0, 0x18, 0x30, 0x00, 0x00, 0x69, 0x89, 0x00, 0x45,
2022 0x8f, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00,
2023 0xbf, 0x83, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00, 0x34, 0x04, 0x00, 0x40,
2024 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2025 0x55, 0x97, 0x00, 0x4b, 0x95, 0x30, 0x01, 0x00, 0x69, 0x89, 0x00, 0x4b,
2026 0x8f, 0xb0, 0x00, 0x00, 0x57, 0x96, 0x00, 0x03, 0x48, 0x31, 0x01, 0x00,
2027 0xa9, 0x93, 0x00, 0x40, 0x81, 0x30, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40,
2028 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
2029 0x00, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00,
2030 0x8a, 0x30, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40, 0x01, 0x6c, 0x00, 0x00,
2031 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x68, 0x50,
2032 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
2033 0x40, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x50,
2034 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
2035 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
2036 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2037 0xce, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10,
2038 0x62, 0xc9, 0x01, 0x00, 0xd0, 0x83, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
2039 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03,
2040 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
2041 0x00, 0x00, 0x00, 0xf8, 0x2e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
2042 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
2043 0x00, 0x41, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00, 0xee, 0x07, 0x2e, 0x47,
2044 0x97, 0x90, 0x01, 0x00, 0xe6, 0x83, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00,
2045 0xe4, 0x83, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0xe4, 0x83, 0x23, 0xa2,
2046 0x02, 0x6c, 0x00, 0x00, 0x9f, 0x95, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00,
2047 0x04, 0x00, 0x22, 0x41, 0x97, 0x50, 0x00, 0x00, 0x0c, 0x00, 0x2d, 0x00,
2048 0x12, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00,
2049 0x00, 0x00, 0x00, 0x5c, 0x01, 0x80, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b,
2050 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xb0, 0x01, 0x00,
2051 0x00, 0x00, 0x00, 0x50, 0x03, 0xb0, 0x01, 0x00, 0x03, 0x84, 0x00, 0x5c,
2052 0x17, 0x90, 0x00, 0x00, 0xf8, 0x83, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00,
2053 0x00, 0x00, 0x00, 0x45, 0x1f, 0x90, 0x01, 0x00, 0xf1, 0x83, 0x22, 0x5f,
2054 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
2055 0x00, 0x00, 0x00, 0x58, 0xf1, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03,
2056 0xf0, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
2057 0xed, 0x83, 0x62, 0x42, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
2058 0x62, 0xb1, 0x01, 0x00, 0xee, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2059 0x23, 0x83, 0x72, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x00, 0x2d, 0x03,
2060 0x48, 0xb1, 0x01, 0x00, 0xff, 0x0f, 0x00, 0xf6, 0x80, 0x88, 0x01, 0x00,
2061 0xf5, 0x83, 0xa2, 0xa6, 0x81, 0x6c, 0x00, 0x00, 0xf8, 0x83, 0x00, 0xf2,
2062 0x3a, 0xb0, 0x00, 0x00, 0xf1, 0x84, 0xa2, 0x4b, 0xfd, 0x7f, 0x00, 0x00,
2063 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x03, 0x88, 0x00, 0x40,
2064 0x81, 0xb2, 0x00, 0x00, 0x03, 0x84, 0x22, 0x4a, 0x2f, 0x7c, 0x00, 0x00,
2065 0x03, 0x84, 0x22, 0x48, 0x2f, 0x7c, 0x00, 0x00, 0x0a, 0x00, 0x2d, 0x03,
2066 0x48, 0xb1, 0x01, 0x00, 0x3f, 0x00, 0x00, 0xf2, 0x86, 0x88, 0x01, 0x00,
2067 0x1f, 0x00, 0x00, 0x43, 0x84, 0x88, 0x01, 0x00, 0x05, 0x00, 0x00, 0x43,
2068 0x80, 0xf4, 0x01, 0x00, 0x98, 0x94, 0x3d, 0x42, 0x81, 0xe0, 0x01, 0x00,
2069 0x03, 0x84, 0xa2, 0x42, 0xe0, 0x7d, 0x00, 0x00, 0xf1, 0x84, 0xa2, 0x4b,
2070 0xfd, 0x7f, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2071 0x03, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x02, 0x04, 0x00, 0x40,
2072 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2073 0x05, 0x84, 0x69, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3,
2074 0x09, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x79, 0x41, 0x47, 0xc3, 0x01, 0x00,
2075 0x04, 0x00, 0xa0, 0xa1, 0x09, 0x6c, 0x00, 0x00, 0x0c, 0x84, 0x22, 0xa1,
2076 0x09, 0x6c, 0x00, 0x00, 0x27, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2077 0x08, 0x84, 0x00, 0x03, 0x48, 0xb1, 0x00, 0x00, 0x46, 0x84, 0xa3, 0x92,
2078 0x03, 0x6c, 0x00, 0x00, 0x25, 0x98, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00,
2079 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
2080 0x80, 0xb2, 0x01, 0x00, 0x03, 0x88, 0x27, 0x08, 0x80, 0x32, 0x00, 0x00,
2081 0x13, 0x84, 0x22, 0x5c, 0x17, 0x7c, 0x00, 0x00, 0x14, 0x84, 0x00, 0x00,
2082 0x2a, 0xb0, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00,
2083 0x02, 0x00, 0x00, 0x08, 0x80, 0xc8, 0x01, 0x00, 0x18, 0x84, 0xa2, 0x43,
2084 0x2f, 0x7c, 0x00, 0x00, 0x58, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2085 0x34, 0x84, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01,
2086 0x8c, 0xcc, 0x01, 0x00, 0x58, 0x97, 0x00, 0x4c, 0x03, 0x30, 0x01, 0x00,
2087 0x00, 0x00, 0x2e, 0x46, 0x02, 0xb0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10,
2088 0x48, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00,
2089 0x2c, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
2090 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x15, 0xe0, 0xc9, 0x01, 0x00,
2091 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2092 0x62, 0xdd, 0x01, 0x00, 0x21, 0x84, 0xa8, 0x54, 0x17, 0x10, 0x00, 0x00,
2093 0x34, 0x84, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
2094 0x2a, 0xc8, 0x01, 0x00, 0x33, 0x84, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00,
2095 0x04, 0x00, 0x00, 0x01, 0x8c, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
2096 0x03, 0xb0, 0x01, 0x00, 0x79, 0x97, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00,
2097 0x00, 0x00, 0x2e, 0x46, 0x02, 0xb0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10,
2098 0x48, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00,
2099 0x0c, 0x00, 0x00, 0x09, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
2100 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x15, 0xe0, 0xc9, 0x01, 0x00,
2101 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2102 0x62, 0xdd, 0x01, 0x00, 0x34, 0x84, 0x28, 0x54, 0x17, 0x10, 0x00, 0x00,
2103 0x30, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x79, 0x97, 0x00, 0x43,
2104 0x61, 0x31, 0x01, 0x00, 0x36, 0x84, 0x22, 0x50, 0x2f, 0x7c, 0x00, 0x00,
2105 0x00, 0x00, 0x00, 0x56, 0x17, 0x90, 0x01, 0x00, 0x07, 0x00, 0x00, 0x17,
2106 0x98, 0x88, 0x01, 0x00, 0x39, 0x84, 0xa2, 0x41, 0x99, 0x6c, 0x00, 0x00,
2107 0x00, 0x00, 0x00, 0x55, 0x17, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
2108 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2109 0x3a, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2110 0x1c, 0xb0, 0x00, 0x00, 0x60, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2111 0x41, 0x84, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00, 0x16, 0x80, 0x00, 0x03,
2112 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xe4, 0xb1, 0x01, 0x00,
2113 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x44, 0x84, 0xa2, 0x5f,
2114 0x2f, 0x7c, 0x00, 0x00, 0x80, 0x93, 0x00, 0x01, 0x38, 0x43, 0x01, 0x00,
2115 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x03, 0x88, 0x00, 0x40,
2116 0x81, 0xb2, 0x00, 0x00, 0x48, 0x84, 0xa2, 0x4b, 0xfd, 0x7f, 0x00, 0x00,
2117 0xee, 0x84, 0x00, 0x41, 0x43, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2118 0x27, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2d, 0xb0, 0x01, 0x00,
2119 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00, 0x4b, 0x84, 0x35, 0x01,
2120 0x86, 0x30, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
2121 0x54, 0x84, 0x28, 0xb1, 0x30, 0x30, 0x00, 0x00, 0x4c, 0x84, 0x22, 0x4d,
2122 0x75, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x80, 0xb2, 0x01, 0x00,
2123 0xdb, 0x84, 0xa7, 0x40, 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2124 0x43, 0xc3, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40, 0x27, 0x6c, 0x00, 0x00,
2125 0xed, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x40,
2126 0x61, 0x99, 0x01, 0x00, 0x54, 0x84, 0xa8, 0xb1, 0x12, 0x30, 0x00, 0x00,
2127 0x00, 0x00, 0x00, 0x16, 0x80, 0xb2, 0x01, 0x00, 0x5e, 0x84, 0xa7, 0x40,
2128 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00,
2129 0x00, 0x00, 0x00, 0x09, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
2130 0x2c, 0xb0, 0x01, 0x00, 0xde, 0x07, 0x00, 0x43, 0x80, 0xce, 0x01, 0x00,
2131 0x4c, 0x84, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00, 0x63, 0x84, 0x00, 0x40,
2132 0x81, 0xb2, 0x00, 0x00, 0x40, 0x00, 0x3e, 0x43, 0x27, 0xe0, 0x01, 0x00,
2133 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
2134 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x27, 0xc0, 0x01, 0x00,
2135 0x4c, 0x84, 0xa3, 0x0b, 0x87, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x40,
2136 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
2137 0x04, 0x00, 0xa2, 0x03, 0x48, 0x6d, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
2138 0x2a, 0xc8, 0x01, 0x00, 0x40, 0x00, 0x2d, 0x40, 0x39, 0xb0, 0x01, 0x00,
2139 0x6d, 0x84, 0xa2, 0x40, 0x27, 0x6c, 0x00, 0x00, 0x22, 0x00, 0x00, 0x08,
2140 0x12, 0xc8, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x16, 0x30, 0x6c, 0x00, 0x00,
2141 0xde, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00, 0x70, 0x84, 0x00, 0x40,
2142 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x12, 0xb0, 0x01, 0x00,
2143 0x00, 0x00, 0x00, 0xf0, 0x30, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
2144 0x25, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
2145 0x14, 0x00, 0x20, 0x01, 0xe0, 0xb1, 0x01, 0x00, 0xee, 0x07, 0x00, 0x40,
2146 0x37, 0x98, 0x01, 0x00, 0x75, 0x84, 0x23, 0x01, 0x36, 0x6c, 0x00, 0x00,
2147 0x00, 0x00, 0x00, 0x01, 0x36, 0xb0, 0x01, 0x00, 0x80, 0x84, 0x82, 0x41,
2148 0x23, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
2149 0x7c, 0x84, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
2150 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2151 0x79, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2152 0x1c, 0xb0, 0x00, 0x00, 0xed, 0x94, 0x00, 0x43, 0x23, 0x30, 0x01, 0x00,
2153 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
2154 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x48, 0xb1, 0x01, 0x00,
2155 0x00, 0x80, 0x00, 0x19, 0x44, 0xc9, 0x01, 0x00, 0x91, 0x84, 0x22, 0x45,
2156 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x41, 0x23, 0x6c, 0x00, 0x00,
2157 0x04, 0x00, 0xa2, 0x0b, 0x25, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
2158 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00,
2159 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
2160 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
2161 0x88, 0x84, 0xa8, 0x15, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
2162 0x03, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
2163 0x00, 0x00, 0x00, 0x4c, 0x25, 0xd0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x4c,
2164 0x13, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x37, 0xd0, 0x01, 0x00,
2165 0x00, 0x00, 0x00, 0x50, 0x2b, 0xc0, 0x01, 0x00, 0x75, 0x84, 0x00, 0x45,
2166 0x1f, 0x80, 0x00, 0x00, 0x93, 0x84, 0xa3, 0x12, 0x36, 0x6c, 0x00, 0x00,
2167 0x94, 0x84, 0x68, 0x1b, 0x28, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12,
2168 0x28, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00,
2169 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
2170 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
2171 0x97, 0x84, 0xa8, 0x15, 0xe0, 0x31, 0x00, 0x00, 0xbf, 0x84, 0x22, 0x14,
2172 0x02, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
2173 0x00, 0x00, 0x00, 0x14, 0x24, 0xd0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x14,
2174 0x12, 0xc0, 0x01, 0x00, 0xb7, 0x84, 0xa2, 0x14, 0x36, 0x50, 0x00, 0x00,
2175 0xa7, 0x84, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x30, 0x80, 0x00, 0x10,
2176 0x42, 0xc9, 0x01, 0x00, 0xa5, 0x84, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2177 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2178 0x62, 0xdd, 0x01, 0x00, 0xa2, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2179 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
2180 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x5c, 0x1f, 0x80, 0x01, 0x00,
2181 0x10, 0x00, 0x00, 0xf0, 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
2182 0x2b, 0x80, 0x01, 0x00, 0x04, 0x00, 0x22, 0x50, 0x2b, 0x6c, 0x00, 0x00,
2183 0xf0, 0x07, 0x00, 0x40, 0x37, 0x98, 0x01, 0x00, 0xad, 0x84, 0x23, 0x01,
2184 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x36, 0xb0, 0x01, 0x00,
2185 0xb8, 0x84, 0x22, 0x1b, 0x02, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10,
2186 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x5c, 0x1f, 0x90, 0x01, 0x00,
2187 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2188 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x15, 0xe0, 0x8d, 0x01, 0x00,
2189 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2190 0x62, 0xdd, 0x01, 0x00, 0xb4, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2191 0xb8, 0x84, 0x00, 0x03, 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
2192 0x2a, 0xc0, 0x01, 0x00, 0x75, 0x84, 0xa2, 0x40, 0x25, 0x6c, 0x00, 0x00,
2193 0x00, 0x00, 0x00, 0x41, 0x39, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x20, 0x13,
2194 0x38, 0x6c, 0x00, 0x00, 0x40, 0x00, 0x3d, 0x43, 0x39, 0xe0, 0x01, 0x00,
2195 0x00, 0x00, 0x00, 0x0b, 0x25, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2196 0x12, 0xb0, 0x01, 0x00, 0x75, 0x84, 0x00, 0xf0, 0x30, 0xb0, 0x00, 0x00,
2197 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
2198 0x42, 0xc9, 0x01, 0x00, 0xc6, 0x84, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2199 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x19,
2200 0x62, 0xdd, 0x01, 0x00, 0xc3, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2201 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xed, 0x94, 0x00, 0x40,
2202 0x2b, 0x30, 0x01, 0x00, 0x18, 0x00, 0x2e, 0x03, 0x48, 0xb1, 0x01, 0x00,
2203 0xca, 0x84, 0x22, 0x50, 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56,
2204 0x17, 0x90, 0x01, 0x00, 0x07, 0x00, 0x00, 0x17, 0x98, 0x88, 0x01, 0x00,
2205 0xcd, 0x84, 0xa2, 0x41, 0x99, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
2206 0x17, 0x90, 0x01, 0x00, 0xd0, 0x84, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00,
2207 0x00, 0x00, 0x00, 0x54, 0x17, 0x90, 0x01, 0x00, 0x16, 0x00, 0x20, 0x1d,
2208 0xe4, 0xb1, 0x01, 0x00, 0xd2, 0x84, 0xa3, 0x40, 0x27, 0x6c, 0x00, 0x00,
2209 0xd4, 0x84, 0x60, 0x5f, 0x17, 0x90, 0x00, 0x00, 0x00, 0x84, 0x00, 0x0b,
2210 0x16, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x60, 0x13, 0x16, 0x94, 0x01, 0x00,
2211 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40,
2212 0x0f, 0x6c, 0x00, 0x00, 0x03, 0x88, 0xa2, 0x5f, 0x2f, 0x7c, 0x00, 0x00,
2213 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
2214 0x02, 0xb0, 0x01, 0x00, 0x80, 0x93, 0x00, 0x01, 0x38, 0x43, 0x01, 0x00,
2215 0x03, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x03,
2216 0x48, 0x6d, 0x00, 0x00, 0x04, 0x00, 0x22, 0x4d, 0x75, 0x7d, 0x00, 0x00,
2217 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d,
2218 0x61, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40, 0x11, 0x6c, 0x00, 0x00,
2219 0x00, 0x00, 0x00, 0x16, 0x62, 0xb1, 0x01, 0x00, 0xe0, 0x84, 0xa8, 0x40,
2220 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x62, 0xb1, 0x01, 0x00,
2221 0xe2, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xed, 0x84, 0x22, 0x13,
2222 0x82, 0x6c, 0x00, 0x00, 0x40, 0x00, 0x3d, 0x43, 0x83, 0xe0, 0x01, 0x00,
2223 0x00, 0x00, 0x00, 0xf8, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
2224 0x2c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0x62, 0xb1, 0x01, 0x00,
2225 0xe8, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
2226 0x62, 0xb1, 0x01, 0x00, 0xea, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2227 0xe4, 0x84, 0x00, 0x41, 0x83, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x40,
2228 0x81, 0xb2, 0x01, 0x00, 0x00, 0x82, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00,
2229 0xa0, 0x98, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x30, 0x05, 0x00, 0x41,
2230 0x89, 0x30, 0x01, 0x00, 0x9f, 0x95, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00,
2231 0xa6, 0x95, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x03, 0x88, 0x00, 0x40,
2232 0x0f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x80, 0x01, 0x00,
2233 0x10, 0x00, 0x00, 0x00, 0x0e, 0xf4, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
2234 0x81, 0x32, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00,
2235 0x05, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00,
2236 0x8a, 0x30, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00,
2237 0x12, 0x95, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00, 0x05, 0x85, 0x22, 0x41,
2238 0x81, 0x6c, 0x00, 0x00, 0x00, 0x85, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00,
2239 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x04, 0x85, 0x22, 0x5f,
2240 0x0f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x0f, 0x80, 0x01, 0x00,
2241 0x06, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00,
2242 0x8a, 0x30, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
2243 0x14, 0x85, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5a,
2244 0x1f, 0x7c, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00,
2245 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x0d,
2246 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
2247 0x6a, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x14, 0x85, 0x22, 0x20,
2248 0x85, 0x6c, 0x00, 0x00, 0x0f, 0x85, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2249 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x87, 0x95, 0x00, 0x5c,
2250 0x1f, 0x00, 0x01, 0x00, 0xc2, 0x97, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
2251 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07,
2252 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2253 0x04, 0x00, 0xa2, 0x4b, 0xe1, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x05,
2254 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00,
2255 0x19, 0x85, 0x22, 0x3a, 0x01, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2256 0x8e, 0xb0, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40, 0x01, 0xb0, 0x00, 0x00,
2257 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x2e, 0x00, 0x2d, 0x05,
2258 0x48, 0xb1, 0x01, 0x00, 0x1e, 0x85, 0xa2, 0x40, 0xe7, 0x6d, 0x00, 0x00,
2259 0x0a, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40,
2260 0x01, 0xb0, 0x00, 0x00, 0x17, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2261 0x04, 0x00, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0x35, 0x04, 0x00, 0x40,
2262 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2263 0x87, 0x96, 0x00, 0x95, 0x03, 0x30, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88,
2264 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00,
2265 0x22, 0x00, 0x2d, 0xf0, 0x2e, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x17,
2266 0x80, 0x32, 0x00, 0x00, 0x28, 0x20, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00,
2267 0x2b, 0x85, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00, 0x55, 0x97, 0x00, 0x4b,
2268 0x95, 0x30, 0x01, 0x00, 0x69, 0x89, 0x00, 0x4c, 0x8f, 0xb0, 0x00, 0x00,
2269 0x2d, 0x85, 0x83, 0x17, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2270 0x43, 0xc1, 0x01, 0x00, 0x2f, 0x85, 0x85, 0x17, 0x80, 0x32, 0x00, 0x00,
2271 0x00, 0x00, 0x00, 0x48, 0x43, 0xc1, 0x01, 0x00, 0x28, 0x00, 0x00, 0xf6,
2272 0x02, 0xcc, 0x01, 0x00, 0x12, 0x00, 0x00, 0xa1, 0x2a, 0xc8, 0x01, 0x00,
2273 0x57, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xa9, 0x93, 0x00, 0x41,
2274 0x81, 0x30, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2275 0x00, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
2276 0x48, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
2277 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
2278 0xf0, 0xb1, 0x01, 0x00, 0x39, 0x85, 0x64, 0x47, 0x61, 0x31, 0x00, 0x00,
2279 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x3a, 0x85, 0xa8, 0x1b,
2280 0xe0, 0x31, 0x00, 0x00, 0x23, 0x83, 0x74, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2281 0x00, 0x00, 0x00, 0x45, 0x03, 0xe0, 0x01, 0x00, 0x04, 0x00, 0xa0, 0x05,
2282 0x03, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa3, 0x09, 0x03, 0x6c, 0x00, 0x00,
2283 0x08, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x6b, 0x85, 0x01, 0xfb,
2284 0x08, 0x30, 0x00, 0x00, 0xd5, 0x85, 0x87, 0xfb, 0x22, 0x30, 0x00, 0x00,
2285 0x00, 0x00, 0x00, 0xfa, 0x0e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2286 0x14, 0xb0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00,
2287 0x12, 0x95, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00, 0x5c, 0x85, 0x22, 0x41,
2288 0x81, 0x6c, 0x00, 0x00, 0x4b, 0x85, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00,
2289 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x5b, 0x85, 0x22, 0x5f,
2290 0x0f, 0x7c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x04, 0x7e, 0x89, 0x01, 0x00,
2291 0x51, 0x85, 0xa6, 0x5f, 0x0f, 0x00, 0x00, 0x00, 0x2b, 0x94, 0x00, 0x40,
2292 0x05, 0x30, 0x01, 0x00, 0x0a, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
2293 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00, 0x58, 0x85, 0x00, 0x40,
2294 0x81, 0xb2, 0x00, 0x00, 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
2295 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0xf0,
2296 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xb0, 0x01, 0x00,
2297 0x26, 0x96, 0x00, 0x40, 0x05, 0x30, 0x01, 0x00, 0x08, 0x04, 0x00, 0x40,
2298 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2299 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
2300 0x1f, 0x90, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
2301 0x69, 0x85, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5a,
2302 0x1f, 0x7c, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00,
2303 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x0d,
2304 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
2305 0x6a, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x69, 0x85, 0x22, 0x20,
2306 0x85, 0x6c, 0x00, 0x00, 0x66, 0x85, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2307 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x87, 0x95, 0x00, 0x5c,
2308 0x1f, 0x00, 0x01, 0x00, 0xc2, 0x97, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
2309 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07,
2310 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2311 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00, 0x6d, 0x85, 0x21, 0x04,
2312 0x80, 0x20, 0x00, 0x00, 0x6e, 0x85, 0x00, 0x40, 0x10, 0xc9, 0x00, 0x00,
2313 0xa1, 0x88, 0x00, 0x4b, 0x81, 0xb0, 0x00, 0x00, 0x9c, 0x85, 0x00, 0x43,
2314 0x81, 0xb0, 0x00, 0x00, 0xa0, 0x85, 0x00, 0xfb, 0x22, 0xb0, 0x00, 0x00,
2315 0xa1, 0x88, 0x00, 0x41, 0x81, 0xb0, 0x00, 0x00, 0x69, 0x89, 0x00, 0x4e,
2316 0x8f, 0xb0, 0x00, 0x00, 0x91, 0x85, 0x00, 0x5a, 0x8f, 0xb0, 0x00, 0x00,
2317 0x76, 0x85, 0x00, 0x47, 0x8f, 0xb0, 0x00, 0x00, 0xa1, 0x88, 0x00, 0x53,
2318 0x81, 0xb0, 0x00, 0x00, 0xa1, 0x88, 0x00, 0x56, 0x81, 0xb0, 0x00, 0x00,
2319 0x32, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x07, 0x04, 0x00, 0x40,
2320 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2321 0x3c, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x0a,
2322 0x8a, 0x30, 0x01, 0x00, 0x3d, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
2323 0x18, 0x00, 0x00, 0x11, 0x8a, 0xe4, 0x01, 0x00, 0x02, 0x99, 0x00, 0xf2,
2324 0x8a, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
2325 0x69, 0x89, 0xa0, 0x0a, 0xe4, 0x6d, 0x00, 0x00, 0x84, 0x85, 0xa2, 0x41,
2326 0x19, 0x7c, 0x00, 0x00, 0x83, 0x85, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00,
2327 0x69, 0x89, 0x00, 0x53, 0x8f, 0xb0, 0x00, 0x00, 0x69, 0x89, 0x00, 0x54,
2328 0x8f, 0xb0, 0x00, 0x00, 0x8d, 0x85, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00,
2329 0x87, 0x85, 0xa2, 0x0a, 0xe4, 0x6d, 0x00, 0x00, 0x69, 0x89, 0x00, 0x5d,
2330 0x8f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x80, 0xb0, 0x01, 0x00,
2331 0x00, 0x00, 0x00, 0x0a, 0x80, 0xd0, 0x01, 0x00, 0x8b, 0x85, 0xa0, 0x91,
2332 0x81, 0x6c, 0x00, 0x00, 0x69, 0x89, 0x00, 0x5e, 0x8f, 0xb0, 0x00, 0x00,
2333 0x25, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40,
2334 0x81, 0xb2, 0x00, 0x00, 0x8f, 0x85, 0x20, 0x91, 0xe5, 0x6d, 0x00, 0x00,
2335 0x69, 0x89, 0x00, 0x54, 0x8f, 0xb0, 0x00, 0x00, 0x21, 0x00, 0x00, 0x40,
2336 0x8f, 0x98, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2337 0x32, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x07, 0x04, 0x00, 0x40,
2338 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2339 0x3c, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x0a,
2340 0x8a, 0x30, 0x01, 0x00, 0x3d, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
2341 0x02, 0x99, 0x00, 0xf2, 0x8a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2342 0x81, 0xb2, 0x01, 0x00, 0x69, 0x89, 0xa0, 0x0a, 0xe4, 0x6d, 0x00, 0x00,
2343 0x24, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x69, 0x89, 0x00, 0x40,
2344 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2345 0x04, 0x00, 0x00, 0xf3, 0x82, 0xf4, 0x01, 0x00, 0xa1, 0x88, 0xa0, 0x42,
2346 0x83, 0x6c, 0x00, 0x00, 0xa1, 0x88, 0x00, 0x54, 0x81, 0xb0, 0x00, 0x00,
2347 0x00, 0x00, 0x00, 0xf2, 0x0e, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x23, 0x40,
2348 0x0f, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x20, 0xaa, 0x0f, 0x6c, 0x00, 0x00,
2349 0x09, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00,
2350 0x8a, 0x30, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00,
2351 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07,
2352 0x16, 0x88, 0x01, 0x00, 0xae, 0x85, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
2353 0x0a, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x78, 0x98, 0x00, 0x40,
2354 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0x1c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2355 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0xed, 0x87, 0x00, 0x5c,
2356 0x1f, 0x90, 0x00, 0x00, 0xc0, 0x85, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00,
2357 0xbb, 0x85, 0xa2, 0x54, 0xfd, 0x7f, 0x00, 0x00, 0xb3, 0x85, 0x22, 0x55,
2358 0xfd, 0x7f, 0x00, 0x00, 0x82, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
2359 0xaa, 0x85, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x22, 0x53,
2360 0xfd, 0x7f, 0x00, 0x00, 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
2361 0x00, 0x00, 0x00, 0xf0, 0x96, 0xb0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4b,
2362 0x80, 0xf4, 0x01, 0x00, 0x0c, 0xbc, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
2363 0xbb, 0x85, 0x22, 0x43, 0x80, 0x6c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b,
2364 0x80, 0x88, 0x01, 0x00, 0xaa, 0x85, 0xa2, 0x43, 0x80, 0x6c, 0x00, 0x00,
2365 0x7c, 0x96, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xbc, 0x85, 0x46, 0x40,
2366 0x81, 0x32, 0x00, 0x00, 0xbf, 0x85, 0xa0, 0xf0, 0x30, 0x6f, 0x00, 0x00,
2367 0xb1, 0x85, 0x1e, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x41,
2368 0x31, 0xc3, 0x01, 0x00, 0x79, 0x94, 0x00, 0x40, 0x25, 0x30, 0x01, 0x00,
2369 0xc4, 0x85, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2370 0x1c, 0xb0, 0x00, 0x00, 0x87, 0x95, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00,
2371 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x5a,
2372 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x96, 0xb0, 0x01, 0x00,
2373 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
2374 0x18, 0xe4, 0x01, 0x00, 0x00, 0x08, 0x00, 0x0c, 0xe0, 0x99, 0x01, 0x00,
2375 0x90, 0x04, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d,
2376 0x46, 0xc9, 0x01, 0x00, 0xcc, 0x85, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00,
2377 0x04, 0x00, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
2378 0xe6, 0x91, 0x01, 0x00, 0x00, 0x02, 0x00, 0xa1, 0x46, 0xc9, 0x01, 0x00,
2379 0x04, 0x00, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
2380 0xe6, 0x91, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
2381 0x00, 0x00, 0x10, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xa1, 0x88, 0x00, 0x40,
2382 0x81, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x28, 0xb0, 0x01, 0x00,
2383 0x00, 0x00, 0x00, 0xfb, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2384 0x14, 0xb0, 0x01, 0x00, 0xe0, 0x85, 0x22, 0x46, 0x23, 0x7c, 0x00, 0x00,
2385 0x04, 0x00, 0x22, 0x40, 0x87, 0x6c, 0x00, 0x00, 0xdc, 0x85, 0x22, 0x40,
2386 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x1f, 0x90, 0x01, 0x00,
2387 0xde, 0x85, 0x22, 0x41, 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
2388 0x1f, 0x90, 0x01, 0x00, 0xe0, 0x85, 0x22, 0x42, 0x87, 0x7c, 0x00, 0x00,
2389 0x00, 0x00, 0x00, 0x45, 0x1f, 0x90, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40,
2390 0x09, 0x7c, 0x00, 0x00, 0xe1, 0x85, 0x66, 0x1b, 0x2c, 0x30, 0x00, 0x00,
2391 0x00, 0x00, 0x00, 0xa0, 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x76, 0x41,
2392 0x41, 0xc3, 0x01, 0x00, 0x13, 0x86, 0x23, 0x92, 0x15, 0x6c, 0x00, 0x00,
2393 0x13, 0x86, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0x19, 0x86, 0x22, 0x4b,
2394 0xfd, 0x7f, 0x00, 0x00, 0x17, 0x00, 0x00, 0xd0, 0xa2, 0xc9, 0x01, 0x00,
2395 0x00, 0x00, 0x00, 0x40, 0x27, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a,
2396 0x24, 0xc8, 0x01, 0x00, 0xb9, 0x94, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00,
2397 0x11, 0x86, 0x22, 0x08, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2398 0xa3, 0xc1, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x12, 0x24, 0xcc, 0x01, 0x00,
2399 0xea, 0x85, 0xaa, 0x41, 0x27, 0x40, 0x00, 0x00, 0x04, 0x00, 0xa3, 0x49,
2400 0x27, 0x6c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x13, 0x80, 0xcc, 0x01, 0x00,
2401 0x0b, 0x86, 0x26, 0x40, 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2402 0x83, 0xb0, 0x01, 0x00, 0x60, 0x00, 0x00, 0x03, 0x84, 0xc8, 0x01, 0x00,
2403 0x10, 0x00, 0x00, 0x10, 0x48, 0xcd, 0x01, 0x00, 0x17, 0x00, 0x00, 0xd0,
2404 0xa2, 0xc9, 0x01, 0x00, 0xf8, 0x85, 0xa2, 0x40, 0x83, 0x6c, 0x00, 0x00,
2405 0x04, 0x86, 0x00, 0x41, 0x83, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42,
2406 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x68, 0x21, 0x38, 0x96, 0x01, 0x00,
2407 0x00, 0x00, 0x2e, 0x50, 0x49, 0xc1, 0x01, 0x00, 0xfd, 0x85, 0xa2, 0x44,
2408 0x23, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
2409 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x20,
2410 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
2411 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x86, 0xa8, 0x42,
2412 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x85, 0xc0, 0x01, 0x00,
2413 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
2414 0xa3, 0xc1, 0x01, 0x00, 0xf6, 0x85, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
2415 0x0b, 0x86, 0x22, 0x40, 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2416 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2417 0x08, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2418 0x1c, 0xb0, 0x00, 0x00, 0x0b, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
2419 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2420 0x48, 0xb1, 0x01, 0x00, 0xee, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00,
2421 0x17, 0x00, 0x00, 0xd0, 0x2a, 0xc8, 0x01, 0x00, 0x24, 0x86, 0x00, 0x17,
2422 0x10, 0xb0, 0x00, 0x00, 0x04, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2423 0x19, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb9, 0x94, 0x00, 0x92,
2424 0x25, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x31, 0xb0, 0x01, 0x00,
2425 0x0b, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00,
2426 0x8a, 0x30, 0x01, 0x00, 0x19, 0x86, 0x22, 0x08, 0x2e, 0x30, 0x00, 0x00,
2427 0x24, 0x86, 0x00, 0x41, 0x27, 0xb0, 0x00, 0x00, 0x80, 0x80, 0x00, 0xa6,
2428 0x04, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
2429 0x78, 0x98, 0x00, 0x0a, 0x8c, 0x30, 0x01, 0x00, 0x04, 0x00, 0x1c, 0x0f,
2430 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
2431 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00, 0x04, 0x00, 0xa0, 0x9f,
2432 0x13, 0x6c, 0x00, 0x00, 0x23, 0x86, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00,
2433 0x02, 0x00, 0x00, 0x88, 0x1c, 0xcc, 0x01, 0x00, 0x27, 0x83, 0x00, 0x40,
2434 0x81, 0xb2, 0x00, 0x00, 0xed, 0x87, 0x00, 0x41, 0x3f, 0xc3, 0x00, 0x00,
2435 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x01,
2436 0x80, 0xce, 0x01, 0x00, 0x38, 0x86, 0x2a, 0x40, 0x81, 0x30, 0x00, 0x00,
2437 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40,
2438 0x81, 0x98, 0x01, 0x00, 0x2d, 0x86, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00,
2439 0x2d, 0x86, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0x2d, 0x86, 0xa3, 0x07,
2440 0x03, 0x6c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
2441 0x30, 0x86, 0xa3, 0x40, 0x02, 0x6c, 0x00, 0x00, 0x28, 0x00, 0x00, 0x01,
2442 0xf0, 0xcd, 0x01, 0x00, 0x32, 0x86, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
2443 0x28, 0x00, 0x00, 0x40, 0xf0, 0xcd, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
2444 0x0e, 0xcc, 0x01, 0x00, 0x28, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00,
2445 0x28, 0x00, 0x00, 0x00, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
2446 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2447 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x36, 0x86, 0xa8, 0x5c,
2448 0x1f, 0x10, 0x00, 0x00, 0x04, 0x00, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00,
2449 0x04, 0x00, 0xa2, 0x03, 0x48, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2450 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x08, 0xb0, 0x01, 0x00,
2451 0xa0, 0x01, 0x2d, 0x40, 0x00, 0xc0, 0x01, 0x00, 0x19, 0x87, 0x22, 0x0f,
2452 0x42, 0x05, 0x00, 0x00, 0x4b, 0x86, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2453 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
2454 0x42, 0xc9, 0x01, 0x00, 0x46, 0x86, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2455 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2456 0x62, 0xdd, 0x01, 0x00, 0x43, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2457 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x4b, 0x86, 0x22, 0x07,
2458 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x42, 0xb1, 0x01, 0x00,
2459 0x00, 0x00, 0x00, 0x07, 0x42, 0xc1, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa1,
2460 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
2461 0xc0, 0x06, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03,
2462 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x54, 0x29, 0xc0, 0x01, 0x00,
2463 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2464 0x04, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0e, 0xb0, 0x01, 0x00,
2465 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5f,
2466 0x0f, 0x7c, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x14, 0x80, 0xce, 0x01, 0x00,
2467 0x04, 0x00, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00, 0x42, 0x00, 0x00, 0x03,
2468 0x0a, 0xc8, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4, 0x0c, 0xc8, 0x01, 0x00,
2469 0x10, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14,
2470 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x24, 0xd0, 0x01, 0x00,
2471 0x00, 0x00, 0x00, 0x14, 0x10, 0xc0, 0x01, 0x00, 0x12, 0x00, 0x00, 0x08,
2472 0x10, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
2473 0xfe, 0x7f, 0x00, 0x05, 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xa2,
2474 0x86, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xe4, 0xb1, 0x01, 0x00,
2475 0x79, 0x86, 0x22, 0x01, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44,
2476 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0xa4, 0x80, 0xb0, 0x01, 0x00,
2477 0x00, 0x00, 0x00, 0x10, 0x48, 0xc1, 0x01, 0x00, 0x66, 0x86, 0xa3, 0x07,
2478 0x02, 0x6c, 0x00, 0x00, 0x67, 0x86, 0x68, 0x01, 0x1a, 0xb0, 0x00, 0x00,
2479 0x00, 0x00, 0x68, 0x07, 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d,
2480 0x02, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00,
2481 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
2482 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0xc0, 0x01, 0x00,
2483 0x73, 0x86, 0x22, 0x40, 0x03, 0x6c, 0x00, 0x00, 0x73, 0x86, 0x22, 0x42,
2484 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00,
2485 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2486 0x62, 0xdd, 0x01, 0x00, 0x99, 0x86, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
2487 0x70, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
2488 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2489 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00, 0x75, 0x86, 0xa8, 0x40,
2490 0x23, 0x30, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2491 0x99, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44,
2492 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00,
2493 0x00, 0x00, 0x2e, 0x10, 0x48, 0xc1, 0x01, 0x00, 0x7e, 0x86, 0xa3, 0x12,
2494 0x0e, 0x6c, 0x00, 0x00, 0x7f, 0x86, 0x60, 0x07, 0x1a, 0xb0, 0x00, 0x00,
2495 0x00, 0x00, 0x60, 0x12, 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x0d,
2496 0x16, 0x94, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x16, 0xd8, 0x01, 0x00,
2497 0x14, 0x99, 0x00, 0x08, 0x98, 0x30, 0x01, 0x00, 0x00, 0x00, 0x68, 0x08,
2498 0x3e, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
2499 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
2500 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
2501 0x20, 0x00, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00, 0x87, 0x86, 0xa8, 0x5c,
2502 0x1f, 0x10, 0x00, 0x00, 0xb9, 0x86, 0x22, 0x0d, 0x14, 0x6c, 0x00, 0x00,
2503 0x8d, 0x86, 0x22, 0x0d, 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
2504 0x10, 0xc0, 0x01, 0x00, 0x92, 0x86, 0x00, 0x0d, 0x24, 0xd0, 0x00, 0x00,
2505 0x04, 0x00, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2506 0x2b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0xa2, 0xb1, 0x01, 0x00,
2507 0x10, 0x00, 0x00, 0x20, 0x10, 0xc8, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
2508 0x25, 0x98, 0x01, 0x00, 0x94, 0x86, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
2509 0x99, 0x86, 0x00, 0x41, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
2510 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2511 0x95, 0x86, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2512 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
2513 0xb9, 0x86, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00, 0xb8, 0x86, 0xa2, 0x0d,
2514 0x0e, 0x50, 0x00, 0x00, 0xa5, 0x86, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
2515 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
2516 0x42, 0xc9, 0x01, 0x00, 0xa3, 0x86, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2517 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2518 0x62, 0xdd, 0x01, 0x00, 0xa0, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2519 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03,
2520 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
2521 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2522 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
2523 0x04, 0x00, 0x22, 0xf0, 0x0e, 0x30, 0x00, 0x00, 0xab, 0x86, 0xa2, 0x5f,
2524 0x0f, 0x7c, 0x00, 0x00, 0x60, 0x86, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00,
2525 0x00, 0x00, 0x2e, 0x5f, 0x0f, 0x80, 0x01, 0x00, 0x60, 0x86, 0x23, 0x07,
2526 0x14, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x46, 0x1f, 0x7c, 0x00, 0x00,
2527 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40,
2528 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
2529 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
2530 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00,
2531 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2532 0x62, 0xdd, 0x01, 0x00, 0xb5, 0x86, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
2533 0x60, 0x86, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00, 0x60, 0x86, 0x00, 0x0d,
2534 0x18, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x2e, 0x14, 0x0a, 0xd0, 0x01, 0x00,
2535 0x12, 0x00, 0x00, 0x05, 0x48, 0xcd, 0x01, 0x00, 0xfe, 0x7f, 0x00, 0x05,
2536 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xa4, 0x86, 0x06, 0x00, 0x00,
2537 0x04, 0x00, 0xa2, 0xa1, 0x86, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x2a, 0xf2,
2538 0xe0, 0xb1, 0x01, 0x00, 0xc1, 0x86, 0x22, 0x40, 0x31, 0x6c, 0x00, 0x00,
2539 0x00, 0x00, 0x60, 0x18, 0x38, 0x96, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x40,
2540 0x43, 0x99, 0x01, 0x00, 0x00, 0x81, 0x00, 0xf6, 0x80, 0xce, 0x01, 0x00,
2541 0xc5, 0x86, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2542 0x43, 0xc1, 0x01, 0x00, 0xc7, 0x86, 0x22, 0x0b, 0xed, 0x6d, 0x00, 0x00,
2543 0x08, 0x00, 0x00, 0xa1, 0x42, 0xc9, 0x01, 0x00, 0x02, 0x00, 0x00, 0xa1,
2544 0x46, 0xc9, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xa1, 0x86, 0x06, 0x00, 0x00,
2545 0x0f, 0x00, 0x00, 0xfa, 0x94, 0x88, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x45,
2546 0x95, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x4a, 0x86, 0xe4, 0x01, 0x00,
2547 0x00, 0x00, 0x00, 0xf6, 0x0e, 0xb0, 0x01, 0x00, 0xd1, 0x86, 0x22, 0x47,
2548 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x1f, 0x43, 0x0e, 0x50, 0x00, 0x00,
2549 0xd1, 0x86, 0xa0, 0x46, 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2550 0x0f, 0xc0, 0x01, 0x00, 0xd5, 0x86, 0x22, 0x48, 0x1f, 0x7c, 0x00, 0x00,
2551 0x00, 0x00, 0x00, 0x40, 0x91, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x0f, 0xa2,
2552 0x42, 0x31, 0x00, 0x00, 0xd8, 0x86, 0x00, 0x40, 0x89, 0xb0, 0x00, 0x00,
2553 0x0c, 0x00, 0x00, 0xa2, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
2554 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x95, 0xd0, 0x01, 0x00,
2555 0x00, 0x00, 0x00, 0xfc, 0x82, 0xb0, 0x01, 0x00, 0xdb, 0x86, 0xa0, 0x41,
2556 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x91, 0xc0, 0x01, 0x00,
2557 0xe0, 0x86, 0x22, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0xe0, 0x86, 0xa0, 0x43,
2558 0x89, 0x6c, 0x00, 0x00, 0xe0, 0x86, 0x20, 0x45, 0x89, 0x6c, 0x00, 0x00,
2559 0xe0, 0x86, 0xa0, 0x41, 0x0e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2560 0x0f, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x89, 0xc0, 0x01, 0x00,
2561 0xd8, 0x86, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00, 0xed, 0x86, 0x22, 0x48,
2562 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x48, 0x92, 0xf4, 0x01, 0x00,
2563 0xff, 0xff, 0x00, 0x48, 0x90, 0x88, 0x01, 0x00, 0xe7, 0x86, 0x90, 0x48,
2564 0x92, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00,
2565 0x0a, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
2566 0x93, 0xa4, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x43, 0x80, 0xcc, 0x01, 0x00,
2567 0x00, 0x00, 0x00, 0xa2, 0x80, 0xc0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40,
2568 0x42, 0x6d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0xa1, 0x86, 0x06, 0x00, 0x00,
2569 0x04, 0x00, 0xa2, 0x46, 0x1f, 0x7c, 0x00, 0x00, 0x14, 0x99, 0x00, 0x17,
2570 0x98, 0x30, 0x01, 0x00, 0xff, 0x07, 0x00, 0x17, 0x7e, 0x89, 0x01, 0x00,
2571 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x30, 0x80, 0x00, 0x10,
2572 0x44, 0xc9, 0x01, 0x00, 0x12, 0x00, 0x00, 0x14, 0xf0, 0xc9, 0x01, 0x00,
2573 0x00, 0x00, 0x00, 0x17, 0xf0, 0xb1, 0x01, 0x00, 0x12, 0x00, 0x00, 0x05,
2574 0xe0, 0xcd, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10, 0x80, 0xc8, 0x01, 0x00,
2575 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40,
2576 0x62, 0xdd, 0x01, 0x00, 0xf7, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2577 0x02, 0x87, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44,
2578 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x10, 0x48, 0xc1, 0x01, 0x00,
2579 0x01, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
2580 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2581 0xfe, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2582 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
2583 0x05, 0x87, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0x06, 0x95, 0x00, 0x40,
2584 0x81, 0x32, 0x01, 0x00, 0x85, 0x87, 0x00, 0x17, 0x10, 0xb0, 0x00, 0x00,
2585 0x0d, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x03,
2586 0x48, 0xb1, 0x01, 0x00, 0x09, 0x87, 0xa0, 0x07, 0x16, 0x40, 0x00, 0x00,
2587 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
2588 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00,
2589 0x0d, 0x87, 0x90, 0xf2, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2590 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00,
2591 0x10, 0x00, 0x00, 0x14, 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
2592 0x2b, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x2a, 0x94, 0x01, 0x00,
2593 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x17, 0x87, 0x22, 0x40,
2594 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
2595 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x14, 0x87, 0xa8, 0x40,
2596 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2597 0x00, 0x80, 0x00, 0x17, 0x10, 0xdc, 0x01, 0x00, 0x85, 0x87, 0x00, 0x40,
2598 0x81, 0xb2, 0x00, 0x00, 0x21, 0x87, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2599 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
2600 0x42, 0xc9, 0x01, 0x00, 0x21, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2601 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2602 0x62, 0xdd, 0x01, 0x00, 0x1e, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2603 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x26, 0x87, 0x22, 0x07,
2604 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x42, 0xb1, 0x01, 0x00,
2605 0x00, 0x00, 0x00, 0x07, 0x42, 0xc1, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa1,
2606 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
2607 0x04, 0x00, 0x2e, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
2608 0xe0, 0xb1, 0x01, 0x00, 0x2b, 0x87, 0x22, 0x40, 0x31, 0x6c, 0x00, 0x00,
2609 0x0c, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x60, 0x18,
2610 0x38, 0x96, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
2611 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
2612 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
2613 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
2614 0x62, 0xb1, 0x01, 0x00, 0x30, 0x87, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
2615 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x52,
2616 0x11, 0xc0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
2617 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2618 0x04, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0e, 0xb0, 0x01, 0x00,
2619 0x0c, 0x00, 0x00, 0xa4, 0x0c, 0xc8, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40,
2620 0x15, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
2621 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
2622 0x48, 0xc1, 0x01, 0x00, 0x3f, 0x87, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00,
2623 0x40, 0x87, 0x68, 0x07, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12,
2624 0x1a, 0xb0, 0x01, 0x00, 0x14, 0x99, 0x00, 0x08, 0x98, 0x30, 0x01, 0x00,
2625 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
2626 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x08, 0x3e, 0x96, 0x01, 0x00,
2627 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
2628 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
2629 0x20, 0x00, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00, 0x47, 0x87, 0xa8, 0x5c,
2630 0x1f, 0x10, 0x00, 0x00, 0x79, 0x87, 0x22, 0x0d, 0x14, 0x6c, 0x00, 0x00,
2631 0x4d, 0x87, 0x22, 0x0d, 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
2632 0x10, 0xc0, 0x01, 0x00, 0x52, 0x87, 0x00, 0x0d, 0x24, 0xd0, 0x00, 0x00,
2633 0x04, 0x00, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2634 0x2b, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0xa2, 0xb1, 0x01, 0x00,
2635 0x10, 0x00, 0x00, 0x20, 0x10, 0xc8, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
2636 0x25, 0x98, 0x01, 0x00, 0x54, 0x87, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
2637 0x59, 0x87, 0x00, 0x41, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
2638 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2639 0x55, 0x87, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2640 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
2641 0x04, 0x00, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00, 0x78, 0x87, 0xa2, 0x0d,
2642 0x0e, 0x50, 0x00, 0x00, 0x65, 0x87, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
2643 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10,
2644 0x42, 0xc9, 0x01, 0x00, 0x63, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2645 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2646 0x62, 0xdd, 0x01, 0x00, 0x60, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2647 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03,
2648 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00,
2649 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2650 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
2651 0x04, 0x00, 0x22, 0xf0, 0x0e, 0x30, 0x00, 0x00, 0x6b, 0x87, 0xa2, 0x5f,
2652 0x0f, 0x7c, 0x00, 0x00, 0x39, 0x87, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00,
2653 0x00, 0x00, 0x2e, 0x5f, 0x0f, 0x80, 0x01, 0x00, 0x39, 0x87, 0x23, 0x07,
2654 0x14, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x46, 0x1f, 0x7c, 0x00, 0x00,
2655 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40,
2656 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
2657 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
2658 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00,
2659 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2660 0x62, 0xdd, 0x01, 0x00, 0x75, 0x87, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
2661 0x39, 0x87, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00, 0x39, 0x87, 0x00, 0x0d,
2662 0x18, 0xc0, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x46, 0x1f, 0x7c, 0x00, 0x00,
2663 0x83, 0x87, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
2664 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
2665 0x00, 0x00, 0x2d, 0x10, 0x48, 0xc1, 0x01, 0x00, 0x83, 0x87, 0x22, 0x40,
2666 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
2667 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x80, 0x87, 0xa8, 0x40,
2668 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2669 0x00, 0x00, 0x00, 0x17, 0x10, 0xb0, 0x01, 0x00, 0x85, 0x87, 0x00, 0x40,
2670 0x2b, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00,
2671 0x00, 0x00, 0x00, 0x04, 0xe0, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
2672 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa0, 0x9f, 0x13, 0x6c, 0x00, 0x00,
2673 0x8c, 0x87, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x88,
2674 0x1c, 0xcc, 0x01, 0x00, 0x27, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2675 0x8d, 0x98, 0x00, 0x41, 0x3f, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2676 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
2677 0x78, 0x98, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
2678 0x1f, 0x7c, 0x00, 0x00, 0x03, 0x88, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
2679 0x10, 0x00, 0x00, 0x00, 0x0e, 0xf4, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
2680 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x84, 0x01, 0x00,
2681 0x98, 0x87, 0x22, 0x50, 0x01, 0x6c, 0x00, 0x00, 0x0d, 0x04, 0x00, 0x40,
2682 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2683 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0x12, 0x95, 0x00, 0x07,
2684 0x16, 0x30, 0x01, 0x00, 0xa3, 0x87, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00,
2685 0x9e, 0x87, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2686 0x1c, 0xb0, 0x00, 0x00, 0xa2, 0x87, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00,
2687 0x00, 0x00, 0x00, 0x5f, 0x0f, 0x80, 0x01, 0x00, 0x0e, 0x04, 0x00, 0x40,
2688 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
2689 0xed, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0xb0, 0x87, 0xa2, 0x5a,
2690 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
2691 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x0b,
2692 0xe6, 0x7d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00,
2693 0x04, 0x00, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x6a, 0x94, 0x00, 0x40,
2694 0x81, 0x32, 0x01, 0x00, 0xb0, 0x87, 0x22, 0x20, 0x85, 0x6c, 0x00, 0x00,
2695 0xad, 0x87, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2696 0x1c, 0xb0, 0x00, 0x00, 0x87, 0x95, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00,
2697 0xc2, 0x97, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88,
2698 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00,
2699 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
2700 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb0, 0x01, 0x00,
2701 0xa1, 0x88, 0xa2, 0x5f, 0x81, 0x6c, 0x00, 0x00, 0xa8, 0x00, 0x2d, 0x43,
2702 0x19, 0x80, 0x01, 0x00, 0x37, 0x00, 0x2d, 0xf0, 0x24, 0xb0, 0x01, 0x00,
2703 0x04, 0x00, 0x00, 0xf3, 0x8e, 0xf4, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3,
2704 0x90, 0x88, 0x01, 0x00, 0x04, 0x00, 0xa3, 0x43, 0x8f, 0x6c, 0x00, 0x00,
2705 0x04, 0x00, 0xa3, 0x43, 0x91, 0x6c, 0x00, 0x00, 0xc1, 0x87, 0x22, 0x48,
2706 0x8e, 0x6c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
2707 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0xc1, 0x87, 0x1f, 0xf0,
2708 0x24, 0x6c, 0x00, 0x00, 0xc0, 0x87, 0x23, 0x41, 0x8f, 0x6c, 0x00, 0x00,
2709 0xa1, 0x88, 0x00, 0x47, 0x81, 0xb0, 0x00, 0x00, 0xa1, 0x88, 0x00, 0x48,
2710 0x81, 0xb0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
2711 0xb0, 0x00, 0x2d, 0xf0, 0x14, 0xb0, 0x01, 0x00, 0xc6, 0x87, 0x22, 0x0a,
2712 0x90, 0x40, 0x00, 0x00, 0x58, 0x98, 0x00, 0x40, 0x91, 0x30, 0x01, 0x00,
2713 0xa1, 0x88, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0xb0, 0x00, 0x2d, 0x45,
2714 0x81, 0xb0, 0x01, 0x00, 0xd2, 0x87, 0x22, 0xf0, 0x2c, 0x30, 0x00, 0x00,
2715 0xa3, 0x00, 0x2d, 0x30, 0x83, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x2d, 0xf3,
2716 0x82, 0xe0, 0x01, 0x00, 0xcc, 0x87, 0xa3, 0x41, 0x2c, 0x6c, 0x00, 0x00,
2717 0x00, 0x00, 0x00, 0x16, 0x82, 0xb0, 0x01, 0x00, 0x98, 0x00, 0x2d, 0xf0,
2718 0x82, 0xc0, 0x01, 0x00, 0x88, 0x00, 0x2d, 0xf0, 0x82, 0xd0, 0x01, 0x00,
2719 0x00, 0x00, 0x00, 0xf2, 0x98, 0xe8, 0x01, 0x00, 0xa1, 0x88, 0x20, 0x4c,
2720 0x82, 0x6c, 0x00, 0x00, 0x7c, 0x00, 0x2d, 0x41, 0x98, 0xe8, 0x01, 0x00,
2721 0xa1, 0x88, 0x20, 0xf0, 0x98, 0x6c, 0x00, 0x00, 0xed, 0x87, 0x22, 0x0a,
2722 0x80, 0x32, 0x00, 0x00, 0x40, 0x02, 0x00, 0x0c, 0x7e, 0x89, 0x01, 0x00,
2723 0xed, 0x87, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xa1, 0x88, 0x00, 0x49,
2724 0x81, 0xb0, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00,
2725 0xda, 0x87, 0x22, 0x43, 0x21, 0x6f, 0x00, 0x00, 0x13, 0x80, 0x00, 0x40,
2726 0x80, 0xdc, 0x01, 0x00, 0xdb, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2727 0x1a, 0x80, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00, 0xdb, 0x87, 0xa2, 0x5e,
2728 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0xb1, 0x01, 0x00,
2729 0xdd, 0x87, 0x9f, 0x85, 0x80, 0x32, 0x00, 0x00, 0xe1, 0x87, 0x00, 0x40,
2730 0x81, 0xb2, 0x00, 0x00, 0x1a, 0x83, 0x22, 0x40, 0x57, 0x7d, 0x00, 0x00,
2731 0x01, 0x00, 0x00, 0x40, 0x57, 0x99, 0x01, 0x00, 0xe1, 0x87, 0x42, 0x40,
2732 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
2733 0x01, 0x83, 0x1a, 0x5b, 0x69, 0x93, 0x00, 0x00, 0xe7, 0x87, 0x22, 0x46,
2734 0xf3, 0x7f, 0x00, 0x00, 0xe7, 0x87, 0xa2, 0x41, 0xf3, 0x7f, 0x00, 0x00,
2735 0xc6, 0x80, 0x00, 0x42, 0x97, 0x33, 0x01, 0x00, 0x04, 0x00, 0x00, 0xcb,
2736 0x81, 0xc8, 0x01, 0x00, 0xea, 0x87, 0x22, 0x40, 0xf2, 0x7f, 0x00, 0x00,
2737 0xc6, 0x80, 0x00, 0x6f, 0x97, 0x33, 0x01, 0x00, 0xec, 0x87, 0x22, 0x40,
2738 0x73, 0x7d, 0x00, 0x00, 0xe0, 0x80, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00,
2739 0xe4, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf4, 0x87, 0x9c, 0x0f,
2740 0x80, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
2741 0xf4, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
2742 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2743 0xf1, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2744 0x1c, 0xb0, 0x00, 0x00, 0x2e, 0x94, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
2745 0xf5, 0x87, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2746 0x93, 0x93, 0x01, 0x00, 0x2e, 0x94, 0x1a, 0x02, 0x68, 0x97, 0x00, 0x00,
2747 0xff, 0x87, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
2748 0x42, 0xc9, 0x01, 0x00, 0xff, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2749 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2750 0x62, 0xdd, 0x01, 0x00, 0xfc, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2751 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x3e, 0x94, 0x22, 0x02,
2752 0x80, 0x32, 0x00, 0x00, 0x00, 0x88, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
2753 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0x3e, 0x94, 0x1a, 0x02,
2754 0x68, 0x97, 0x00, 0x00, 0x0a, 0x88, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2755 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x0a, 0x88, 0x22, 0x40,
2756 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
2757 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x07, 0x88, 0xa8, 0x40,
2758 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2759 0x2f, 0x83, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00, 0x0b, 0x88, 0x42, 0x40,
2760 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
2761 0x00, 0x00, 0x1a, 0x02, 0x68, 0x97, 0x01, 0x00, 0x2f, 0x83, 0x00, 0x40,
2762 0x05, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6, 0x56, 0xb1, 0x01, 0x00,
2763 0x56, 0x95, 0x2f, 0x40, 0x05, 0xb0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40,
2764 0xe7, 0x6d, 0x00, 0x00, 0xb8, 0x94, 0x29, 0x41, 0xe7, 0xb1, 0x01, 0x00,
2765 0x00, 0x00, 0x00, 0x54, 0xef, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
2766 0x0e, 0xb0, 0x01, 0x00, 0x04, 0x00, 0xa3, 0x0c, 0x55, 0x6f, 0x00, 0x00,
2767 0x29, 0x00, 0x00, 0x40, 0x0d, 0x98, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
2768 0x12, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x13, 0xc0, 0x01, 0x00,
2769 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07,
2770 0x16, 0x88, 0x01, 0x00, 0xff, 0xff, 0x00, 0x10, 0x34, 0xd8, 0x01, 0x00,
2771 0x00, 0x00, 0x00, 0x03, 0x34, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2772 0x23, 0xb0, 0x01, 0x00, 0x20, 0x18, 0x00, 0x40, 0x11, 0x98, 0x01, 0x00,
2773 0x04, 0x00, 0x20, 0xaa, 0x0f, 0x6c, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x0d,
2774 0x42, 0xc9, 0x01, 0x00, 0x43, 0x88, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
2775 0x22, 0x88, 0x60, 0x40, 0x81, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x07,
2776 0x84, 0x89, 0x01, 0x00, 0x2b, 0x88, 0x05, 0xc2, 0x24, 0x30, 0x00, 0x00,
2777 0x58, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
2778 0x48, 0xb1, 0x01, 0x00, 0x60, 0x88, 0x70, 0xf0, 0x18, 0x30, 0x01, 0x00,
2779 0x10, 0x00, 0x00, 0x0c, 0x82, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x41,
2780 0x0e, 0x6c, 0x00, 0x00, 0x43, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2781 0x00, 0x00, 0x70, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x3a, 0x88, 0xa0, 0x48,
2782 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x35, 0xd0, 0x01, 0x00,
2783 0x00, 0x80, 0x00, 0x1a, 0x42, 0xc9, 0x01, 0x00, 0x34, 0x88, 0x22, 0x40,
2784 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
2785 0x40, 0x00, 0x00, 0x1a, 0x62, 0xdd, 0x01, 0x00, 0x31, 0x88, 0xa8, 0x40,
2786 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2787 0x20, 0x98, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x60, 0x88, 0x00, 0xf8,
2788 0x18, 0x30, 0x01, 0x00, 0x35, 0x88, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
2789 0xff, 0xff, 0x00, 0x10, 0x34, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2790 0x34, 0x94, 0x01, 0x00, 0x20, 0x18, 0x00, 0x40, 0x11, 0x98, 0x01, 0x00,
2791 0x00, 0x00, 0x2e, 0x1a, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
2792 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00,
2793 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x1a,
2794 0x62, 0xdd, 0x01, 0x00, 0x3e, 0x88, 0xa8, 0x09, 0xe0, 0x31, 0x00, 0x00,
2795 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
2796 0x35, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x11, 0xc0, 0x01, 0x00,
2797 0x4f, 0x88, 0x22, 0x41, 0x0d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2798 0x0f, 0xc0, 0x01, 0x00, 0x4b, 0x88, 0xa0, 0xaa, 0x0f, 0x6c, 0x00, 0x00,
2799 0x00, 0x00, 0x00, 0x41, 0x0f, 0xb0, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
2800 0x12, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x13, 0xc0, 0x01, 0x00,
2801 0x00, 0x00, 0x00, 0x40, 0x1b, 0xb0, 0x01, 0x00, 0x1f, 0x88, 0x00, 0x41,
2802 0x17, 0xb0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, 0x12, 0xc8, 0x01, 0x00,
2803 0x1f, 0x88, 0x83, 0x41, 0x17, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2804 0x17, 0xb0, 0x01, 0x00, 0x1f, 0x88, 0x00, 0x41, 0x1b, 0xc0, 0x00, 0x00,
2805 0x5a, 0x88, 0x23, 0x40, 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
2806 0x35, 0xd0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x1a, 0x42, 0xc9, 0x01, 0x00,
2807 0x57, 0x88, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
2808 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x1a, 0x62, 0xdd, 0x01, 0x00,
2809 0x54, 0x88, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
2810 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
2811 0x60, 0x88, 0x00, 0xf8, 0x18, 0x30, 0x01, 0x00, 0x58, 0x88, 0xa2, 0x41,
2812 0x23, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00,
2813 0x5d, 0x88, 0xa0, 0xaa, 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2814 0x0f, 0xb0, 0x01, 0x00, 0xb8, 0x94, 0x20, 0x07, 0xe4, 0xb1, 0x01, 0x00,
2815 0x56, 0x95, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40,
2816 0x0f, 0xb0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x80, 0xd8, 0x01, 0x00,
2817 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x0c,
2818 0x7e, 0x89, 0x01, 0x00, 0x79, 0x88, 0x26, 0x54, 0x61, 0x31, 0x00, 0x00,
2819 0x6c, 0x88, 0x87, 0x0c, 0x80, 0x32, 0x00, 0x00, 0x1f, 0x04, 0x00, 0x40,
2820 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x0c, 0x8a, 0x30, 0x01, 0x00,
2821 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x40,
2822 0x62, 0x99, 0x01, 0x00, 0x6c, 0x88, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
2823 0x04, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00, 0x68, 0x88, 0x00, 0x40,
2824 0x81, 0xb2, 0x00, 0x00, 0x74, 0x88, 0x22, 0x46, 0x19, 0x7c, 0x00, 0x00,
2825 0x2a, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x0c,
2826 0x8a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00,
2827 0x0d, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
2828 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00,
2829 0x6d, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x79, 0x88, 0x22, 0x49,
2830 0x19, 0x7c, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00,
2831 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x54,
2832 0x77, 0x7d, 0x00, 0x00, 0x74, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2833 0x10, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
2834 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00,
2835 0x79, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x30, 0x94, 0x2f, 0x55,
2836 0xf1, 0x93, 0x01, 0x00, 0x00, 0x40, 0x00, 0xa6, 0x56, 0xb1, 0x01, 0x00,
2837 0x2f, 0x83, 0xa2, 0x41, 0xe5, 0x51, 0x00, 0x00, 0x64, 0x00, 0x00, 0x40,
2838 0xe5, 0x99, 0x01, 0x00, 0x81, 0x88, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00,
2839 0x84, 0x88, 0xa2, 0x93, 0x57, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2840 0x57, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x1c, 0xab, 0x27, 0xb3, 0x01, 0x00,
2841 0x2f, 0x83, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0x2f, 0x83, 0x22, 0x51,
2842 0xfd, 0x7f, 0x00, 0x00, 0x2f, 0x83, 0xa2, 0x41, 0x1d, 0x53, 0x00, 0x00,
2843 0x50, 0x46, 0x00, 0x40, 0x1d, 0x9b, 0x01, 0x00, 0x38, 0x05, 0x00, 0x40,
2844 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2845 0x10, 0x04, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0x90, 0x88, 0x22, 0x40,
2846 0xb5, 0x6f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2847 0x20, 0x04, 0x00, 0x41, 0xb5, 0x53, 0x01, 0x00, 0x2f, 0x83, 0x00, 0x40,
2848 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfd, 0x83, 0x01, 0x00,
2849 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x40, 0x05, 0x00, 0x40,
2850 0x49, 0x31, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2851 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
2852 0x91, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2853 0x20, 0x04, 0x00, 0x40, 0xb5, 0x33, 0x01, 0x00, 0x60, 0x16, 0x20, 0x40,
2854 0xe5, 0xb1, 0x01, 0x00, 0x55, 0x82, 0x00, 0x40, 0xb5, 0x33, 0x01, 0x00,
2855 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4a,
2856 0xb4, 0x8b, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2857 0x0a, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4a,
2858 0xb4, 0xf7, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2859 0x2f, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
2860 0x48, 0x6d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
2861 0x04, 0x00, 0xa2, 0xf2, 0x0e, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x02,
2862 0x80, 0x32, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
2863 0x00, 0x00, 0x00, 0xf3, 0x08, 0xb0, 0x01, 0x00, 0xab, 0x88, 0x22, 0x50,
2864 0x81, 0x6c, 0x00, 0x00, 0x0f, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
2865 0x10, 0x00, 0x00, 0x40, 0x8a, 0xe4, 0x01, 0x00, 0x02, 0x99, 0x00, 0x04,
2866 0x8a, 0x14, 0x01, 0x00, 0x04, 0x00, 0x20, 0x48, 0x09, 0x6c, 0x00, 0x00,
2867 0x04, 0x00, 0x20, 0x57, 0x81, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x20, 0x40,
2868 0xe6, 0xb1, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40, 0x96, 0xe4, 0x01, 0x00,
2869 0x00, 0x00, 0x00, 0x04, 0x96, 0xc0, 0x01, 0x00, 0xb1, 0x88, 0x00, 0x4b,
2870 0x10, 0xc9, 0x00, 0x00, 0xe1, 0x8b, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
2871 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2872 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2873 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2874 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2875 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2876 0x8f, 0xb0, 0x00, 0x00, 0x16, 0x8c, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
2877 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2878 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2879 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2880 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2881 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2882 0x8f, 0xb0, 0x00, 0x00, 0x52, 0x8c, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2883 0x52, 0x8c, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x52, 0x8c, 0x00, 0x45,
2884 0x09, 0xb0, 0x00, 0x00, 0x52, 0x8c, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2885 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2886 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2887 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x99, 0x8c, 0x00, 0x43,
2888 0x09, 0xb0, 0x00, 0x00, 0xc8, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2889 0xcc, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x3b, 0x8e, 0x00, 0x45,
2890 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2891 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2892 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2893 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xdc, 0x8c, 0x00, 0x43,
2894 0x09, 0xb0, 0x00, 0x00, 0xda, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2895 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2896 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2897 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2898 0x8f, 0xb0, 0x00, 0x00, 0x95, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2899 0x95, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x95, 0x8d, 0x00, 0x44,
2900 0x09, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2901 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2902 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2903 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2904 0x8f, 0xb0, 0x00, 0x00, 0xb5, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2905 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45,
2906 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2907 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2908 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2909 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xdd, 0x8d, 0x00, 0x43,
2910 0x09, 0xb0, 0x00, 0x00, 0xdd, 0x8d, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2911 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2912 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2913 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2914 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2915 0xdd, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2916 0x8f, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2917 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2918 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2919 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2920 0x8f, 0xb0, 0x00, 0x00, 0x0c, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2921 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45,
2922 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2923 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2924 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2925 0xdd, 0x8b, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x1f, 0x8e, 0x00, 0x45,
2926 0x09, 0xb0, 0x00, 0x00, 0x1f, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2927 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2928 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2929 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2930 0x8f, 0xb0, 0x00, 0x00, 0x21, 0x8e, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2931 0x21, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x21, 0x8e, 0x00, 0x44,
2932 0x09, 0xb0, 0x00, 0x00, 0x21, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2933 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2934 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2935 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2936 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2937 0x2c, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45,
2938 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2939 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2940 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2941 0x3e, 0x8e, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x2d, 0x8e, 0x00, 0x43,
2942 0x09, 0xb0, 0x00, 0x00, 0x3e, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2943 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2944 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2945 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2946 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2947 0x40, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x34, 0x8e, 0x00, 0x44,
2948 0x09, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2949 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2950 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2951 0xdd, 0x8b, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00, 0x93, 0x8d, 0x00, 0x42,
2952 0x09, 0xb0, 0x00, 0x00, 0x93, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2953 0x93, 0x8d, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45,
2954 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2955 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2956 0x8f, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
2957 0x42, 0x8e, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x42, 0x8e, 0x00, 0x43,
2958 0x09, 0xb0, 0x00, 0x00, 0x42, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2959 0xdd, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2960 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2961 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2962 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2963 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2964 0x8f, 0xb0, 0x00, 0x00, 0x49, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2965 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2966 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2967 0x4b, 0x8e, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2968 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2969 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2970 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2971 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2972 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2973 0x58, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xbe, 0x8e, 0x00, 0x43,
2974 0x09, 0xb0, 0x00, 0x00, 0xcc, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2975 0x3b, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2976 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2977 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2978 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2979 0xc6, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xcc, 0x8c, 0x00, 0x44,
2980 0x09, 0xb0, 0x00, 0x00, 0x3b, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2981 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2982 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2983 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2984 0x8f, 0xb0, 0x00, 0x00, 0xda, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2985 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x45,
2986 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2987 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2988 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2989 0x93, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xc2, 0x8e, 0x00, 0x43,
2990 0x09, 0xb0, 0x00, 0x00, 0xcc, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2991 0x3b, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2992 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2993 0x02, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf2,
2994 0x0e, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x02, 0x80, 0x32, 0x00, 0x00,
2995 0x07, 0x00, 0x2d, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
2996 0x08, 0xb0, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
2997 0x10, 0x00, 0x00, 0x47, 0x8a, 0xe4, 0x01, 0x00, 0x02, 0x99, 0x00, 0x04,
2998 0x8a, 0x14, 0x01, 0x00, 0x04, 0x00, 0x20, 0x4e, 0x09, 0x6c, 0x00, 0x00,
2999 0x2a, 0x00, 0x00, 0x47, 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0x24, 0x40,
3000 0x81, 0x32, 0x00, 0x00, 0x06, 0x00, 0x20, 0x47, 0xe6, 0xb1, 0x01, 0x00,
3001 0x04, 0x00, 0x00, 0x47, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
3002 0x96, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x96, 0xd0, 0x01, 0x00,
3003 0x00, 0x00, 0x00, 0x04, 0x96, 0xc0, 0x01, 0x00, 0x7a, 0x89, 0x00, 0x4b,
3004 0x10, 0xc9, 0x00, 0x00, 0xf6, 0x8e, 0x00, 0x49, 0x09, 0xb0, 0x00, 0x00,
3005 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3006 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3007 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3008 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3009 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3010 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3011 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3012 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3013 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3014 0x85, 0xb0, 0x00, 0x00, 0x2f, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3015 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3016 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3017 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3018 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3019 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3020 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3021 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3022 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3023 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x36, 0x8f, 0x00, 0x46,
3024 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3025 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3026 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3027 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3028 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3029 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3030 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3031 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3032 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3033 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x47, 0x8f, 0x00, 0x42,
3034 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3035 0x6a, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3036 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3037 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3038 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3039 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x64, 0x8f, 0x00, 0x4a,
3040 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3041 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3042 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3043 0x71, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3044 0x85, 0xb0, 0x00, 0x00, 0xdc, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
3045 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3046 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3047 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3048 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3049 0xda, 0x8f, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3050 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3051 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x41,
3052 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3053 0x3a, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x44,
3054 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
3055 0x3a, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x47,
3056 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3057 0x3a, 0x8f, 0x00, 0x49, 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x4a,
3058 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00,
3059 0x3a, 0x8f, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x4d,
3060 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3061 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x45, 0x90, 0x00, 0x42,
3062 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3063 0x45, 0x90, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3064 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3065 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3066 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3067 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x45, 0x90, 0x00, 0x4b,
3068 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3069 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3070 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3071 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x62, 0x90, 0x00, 0x45,
3072 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3073 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3074 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3075 0x7a, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3076 0x85, 0xb0, 0x00, 0x00, 0x53, 0x90, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
3077 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3078 0x85, 0xb0, 0x00, 0x00, 0x0f, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3079 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3080 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3081 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3082 0x85, 0xb0, 0x00, 0x00, 0x6a, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3083 0x47, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x47,
3084 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3085 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3086 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3087 0x64, 0x8f, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3088 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3089 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3090 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3091 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xdc, 0x8f, 0x00, 0x45,
3092 0x09, 0xb0, 0x00, 0x00, 0x71, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3093 0x62, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48,
3094 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3095 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3096 0x85, 0xb0, 0x00, 0x00, 0xda, 0x8f, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
3097 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3098 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3099 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3100 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3101 0x81, 0x90, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x81, 0x90, 0x00, 0x42,
3102 0x09, 0xb0, 0x00, 0x00, 0xc6, 0x8b, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3103 0xc6, 0x8b, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3104 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3105 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x81, 0x90, 0x00, 0x4b,
3106 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3107 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x3a, 0x8f, 0x00, 0x41,
3108 0x09, 0xb0, 0x00, 0x00, 0xac, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3109 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x8f, 0x90, 0x00, 0x47,
3110 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3111 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3112 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3113 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3114 0x85, 0xb0, 0x00, 0x00, 0x8f, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3115 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3116 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3117 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3118 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3119 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x8f, 0x90, 0x00, 0x47,
3120 0x09, 0xb0, 0x00, 0x00, 0xac, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3121 0x62, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48,
3122 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3123 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3124 0x85, 0xb0, 0x00, 0x00, 0x8f, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3125 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3126 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3127 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3128 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3129 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3130 0x85, 0xb0, 0x00, 0x00, 0xbb, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3131 0xbb, 0x90, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3132 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3133 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3134 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3135 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x91, 0x00, 0x40,
3136 0x09, 0xb0, 0x00, 0x00, 0x4e, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3137 0x40, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x87, 0x90, 0x00, 0x47,
3138 0x09, 0xb0, 0x00, 0x00, 0x87, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3139 0x4e, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x57, 0x91, 0x00, 0x47,
3140 0x09, 0xb0, 0x00, 0x00, 0x57, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3141 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x40, 0x91, 0x00, 0x48,
3142 0x09, 0xb0, 0x00, 0x00, 0x87, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3143 0x87, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x40, 0x91, 0x00, 0x48,
3144 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3145 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3146 0x85, 0xb0, 0x00, 0x00, 0x45, 0x90, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3147 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x45, 0x90, 0x00, 0x45,
3148 0x09, 0xb0, 0x00, 0x00, 0x45, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3149 0x62, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48,
3150 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3151 0x45, 0x90, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3152 0x85, 0xb0, 0x00, 0x00, 0x45, 0x90, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
3153 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3154 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3155 0xab, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x9d, 0x90, 0x00, 0x48,
3156 0x09, 0xb0, 0x00, 0x00, 0x8e, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3157 0x8e, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0xab, 0x90, 0x00, 0x47,
3158 0x09, 0xb0, 0x00, 0x00, 0xc6, 0x8b, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3159 0xc6, 0x8b, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3160 0x85, 0xb0, 0x00, 0x00, 0x9d, 0x90, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3161 0x8e, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x8e, 0x90, 0x00, 0x47,
3162 0x09, 0xb0, 0x00, 0x00, 0x9d, 0x90, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3163 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3164 0x85, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3165 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x44,
3166 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3167 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3168 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3169 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3170 0x85, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00,
3171 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3172 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3173 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3174 0x85, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3175 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x45,
3176 0x09, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3177 0x5a, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x48,
3178 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3179 0x5a, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3180 0x85, 0xb0, 0x00, 0x00, 0x5a, 0x91, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
3181 0x5a, 0x91, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3182 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3183 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x77, 0x91, 0x00, 0x46,
3184 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3185 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3186 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3187 0x7a, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3188 0x85, 0xb0, 0x00, 0x00, 0x77, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3189 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3190 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3191 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3192 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3193 0x96, 0x92, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3194 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3195 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3196 0x85, 0xb0, 0x00, 0x00, 0x7a, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3197 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x96, 0x92, 0x00, 0x46,
3198 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3199 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x96, 0x92, 0x00, 0x46,
3200 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3201 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3202 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3203 0xbf, 0x92, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3204 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3205 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3206 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3207 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xbd, 0x92, 0x00, 0x4a,
3208 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3209 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3210 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3211 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3212 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3213 0xbf, 0x92, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3214 0x85, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3215 0x62, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3216 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3217 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xbd, 0x92, 0x00, 0x4a,
3218 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3219 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3220 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3221 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3222 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3223 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3224 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3225 0x67, 0x91, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3226 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3227 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3228 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3229 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x74, 0x91, 0x00, 0x42,
3230 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3231 0x74, 0x91, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3232 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3233 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3234 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3235 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x74, 0x91, 0x00, 0x4b,
3236 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3237 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3238 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3239 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x74, 0x91, 0x00, 0x43,
3240 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3241 0x74, 0x91, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x74, 0x91, 0x00, 0x46,
3242 0x09, 0xb0, 0x00, 0x00, 0x74, 0x91, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3243 0x74, 0x91, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3244 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3245 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x74, 0x91, 0x00, 0x4c,
3246 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3247 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3248 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3249 0x62, 0x90, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3250 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3251 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3252 0x85, 0xb0, 0x00, 0x00, 0x7a, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3253 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x53, 0x90, 0x00, 0x4c,
3254 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3255 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x7d, 0x93, 0x00, 0x46,
3256 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3257 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x93, 0x00, 0x42,
3258 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3259 0x04, 0x93, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3260 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3261 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3262 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3263 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x93, 0x00, 0x4b,
3264 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3265 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3266 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3267 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3268 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3269 0x04, 0x93, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x93, 0x00, 0x46,
3270 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3271 0x62, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3272 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3273 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x93, 0x00, 0x4c,
3274 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3275 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3276 0x85, 0xb0, 0x00, 0x00, 0x53, 0x90, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3277 0x0f, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3278 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3279 0x53, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3280 0x85, 0xb0, 0x00, 0x00, 0x7a, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3281 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x0f, 0x93, 0x00, 0x46,
3282 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3283 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x0f, 0x93, 0x00, 0x46,
3284 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3285 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3286 0x85, 0xb0, 0x00, 0x00, 0x16, 0x93, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3287 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3288 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3289 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x7a, 0x90, 0x00, 0x47,
3290 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3291 0x6e, 0x93, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3292 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3293 0x16, 0x93, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3294 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3295 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3296 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x93, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3297 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3298 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3299 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3300 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3301 0xfd, 0x92, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3302 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3303 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3304 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3305 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3306 0x85, 0xb0, 0x00, 0x00, 0x2c, 0x93, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3307 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x47,
3308 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3309 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3310 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3311 0xfd, 0x92, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3312 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3313 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3314 0x85, 0xb0, 0x00, 0x00, 0x44, 0x93, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3315 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3316 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3317 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x7a, 0x90, 0x00, 0x47,
3318 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3319 0x44, 0x93, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3320 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3321 0x44, 0x93, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3322 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3323 0x47, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3324 0x85, 0xb0, 0x00, 0x00, 0x6a, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3325 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3326 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3327 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3328 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3329 0x67, 0x93, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3330 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3331 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3332 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3333 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3334 0x85, 0xb0, 0x00, 0x00, 0x6a, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3335 0x47, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x47,
3336 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3337 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3338 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3339 0x67, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3340 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3341 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3342 0x85, 0xb0, 0x00, 0x00, 0x6e, 0x93, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3343 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3344 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3345 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x7a, 0x90, 0x00, 0x47,
3346 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3347 0x6e, 0x93, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3348 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3349 0x10, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3350 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3351 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x10, 0x93, 0x00, 0x46,
3352 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3353 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3354 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3355 0x7a, 0x90, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3356 0x85, 0xb0, 0x00, 0x00, 0x10, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3357 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3358 0x85, 0xb0, 0x00, 0x00, 0x10, 0x93, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3359 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3360 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3361 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x77, 0x93, 0x00, 0x42,
3362 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3363 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3364 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3365 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3366 0x85, 0xb0, 0x00, 0x00, 0xfd, 0x92, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3367 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3368 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3369 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3370 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3371 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x77, 0x93, 0x00, 0x46,
3372 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3373 0x62, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48,
3374 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3375 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3376 0x85, 0xb0, 0x00, 0x00, 0xfd, 0x92, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3377 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3378 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3379 0x71, 0x8f, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3380 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3381 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3382 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3383 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3384 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3385 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3386 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3387 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3388 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3389 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3390 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3391 0x71, 0x8f, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x47,
3392 0x09, 0xb0, 0x00, 0x00, 0x62, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3393 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3394 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3395 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3396 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
3397 0x04, 0x00, 0x22, 0x07, 0x80, 0x32, 0x00, 0x00, 0x07, 0x00, 0x2e, 0x4b,
3398 0x19, 0x90, 0x01, 0x00, 0xf8, 0x87, 0x00, 0x04, 0xe6, 0xb1, 0x00, 0x00,
3399 0xc6, 0x8b, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x09, 0x97, 0x00, 0x3a,
3400 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3401 0xc6, 0x8b, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x0f,
3402 0x1e, 0x8c, 0x01, 0x00, 0x6d, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3403 0xd8, 0x8b, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
3404 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
3405 0xd8, 0x8b, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
3406 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3407 0xd5, 0x8b, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
3408 0x1c, 0xb0, 0x00, 0x00, 0x1a, 0x85, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
3409 0xd9, 0x8b, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3410 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x68, 0x97, 0x01, 0x00,
3411 0x1a, 0x85, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
3412 0x48, 0x6d, 0x00, 0x00, 0x04, 0x00, 0x22, 0x07, 0x80, 0x32, 0x00, 0x00,
3413 0x05, 0x00, 0x2e, 0x4b, 0x19, 0x90, 0x01, 0x00, 0xf8, 0x87, 0x00, 0x04,
3414 0xe6, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0xb0, 0x01, 0x00,
3415 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
3416 0x42, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0xa1, 0x44, 0xc9, 0x01, 0x00,
3417 0x00, 0x00, 0x00, 0xf0, 0xe0, 0xb1, 0x01, 0x00, 0x78, 0x98, 0x00, 0x06,
3418 0x07, 0x40, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
3419 0x00, 0x00, 0x00, 0x06, 0x07, 0xd0, 0x01, 0x00, 0xd4, 0x00, 0x2e, 0x5c,
3420 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0xb1, 0x01, 0x00,
3421 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3422 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
3423 0x00, 0x00, 0x00, 0xfe, 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3424 0x96, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xb1, 0x01, 0x00,
3425 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3426 0x96, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x96, 0xc0, 0x01, 0x00,
3427 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3428 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x96, 0xc0, 0x01, 0x00,
3429 0x00, 0x00, 0x00, 0xfe, 0x96, 0xc0, 0x01, 0x00, 0x00, 0x30, 0x00, 0x4b,
3430 0x94, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x95, 0xf0, 0x01, 0x00,
3431 0x00, 0x00, 0x00, 0x4a, 0x96, 0xc0, 0x01, 0x00, 0x5e, 0x01, 0x2e, 0x34,
3432 0x97, 0x84, 0x01, 0x00, 0x02, 0x00, 0x00, 0x4b, 0xe4, 0xe5, 0x01, 0x00,
3433 0x64, 0x01, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
3434 0x86, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x2e, 0xa7, 0x87, 0xc0, 0x01, 0x00,
3435 0x10, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40,
3436 0xf1, 0x99, 0x01, 0x00, 0x58, 0x01, 0x00, 0x43, 0xf0, 0xc9, 0x01, 0x00,
3437 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3438 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3439 0x05, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3440 0x48, 0xb1, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
3441 0x08, 0x00, 0x2e, 0x40, 0x95, 0xb0, 0x01, 0x00, 0x0d, 0x8c, 0x20, 0x4b,
3442 0x94, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
3443 0x0a, 0x8c, 0x00, 0x41, 0x95, 0xc0, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10,
3444 0x44, 0xc9, 0x01, 0x00, 0x14, 0x8c, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3445 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3446 0x62, 0xdd, 0x01, 0x00, 0x10, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3447 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3448 0x48, 0xb1, 0x01, 0x00, 0x09, 0x97, 0x00, 0x40, 0x81, 0x30, 0x01, 0x00,
3449 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x03,
3450 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x86, 0xb0, 0x01, 0x00,
3451 0x00, 0x00, 0x00, 0xf8, 0x88, 0xb0, 0x01, 0x00, 0x14, 0x80, 0x00, 0x03,
3452 0x98, 0xc8, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xa1, 0x98, 0x6c, 0x00, 0x00,
3453 0x1b, 0x8c, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00, 0x1e, 0x8c, 0xa2, 0x4c,
3454 0xfd, 0x7f, 0x00, 0x00, 0x1f, 0x8c, 0x00, 0x4c, 0xfd, 0x93, 0x00, 0x00,
3455 0x20, 0x8c, 0x20, 0xf0, 0x56, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
3456 0x56, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x40, 0x81, 0xb2, 0x01, 0x00,
3457 0x64, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x64, 0x00, 0x00, 0x40,
3458 0x80, 0xcc, 0x01, 0x00, 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
3459 0xd8, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x43,
3460 0x81, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
3461 0x64, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x70, 0x00, 0x00, 0x05,
3462 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0xf0, 0xb1, 0x01, 0x00,
3463 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
3464 0x62, 0xdd, 0x01, 0x00, 0x2b, 0x8c, 0xa8, 0x44, 0xe0, 0x31, 0x00, 0x00,
3465 0x10, 0x00, 0x00, 0x10, 0x8c, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x46,
3466 0x44, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
3467 0x68, 0x01, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x64, 0x00, 0x00, 0x43,
3468 0xf0, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x24, 0x40, 0x81, 0x32, 0x00, 0x00,
3469 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
3470 0x62, 0xb1, 0x01, 0x00, 0x34, 0x8c, 0xa8, 0x44, 0xe0, 0x31, 0x00, 0x00,
3471 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x09, 0x00, 0x00, 0x07,
3472 0x86, 0xe4, 0x01, 0x00, 0x38, 0x00, 0x2e, 0xa7, 0x87, 0xc0, 0x01, 0x00,
3473 0x8b, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x3c, 0x8c, 0x22, 0x43,
3474 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00,
3475 0x3f, 0x8c, 0x22, 0x44, 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
3476 0x45, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x19, 0x90, 0x01, 0x00,
3477 0x68, 0x01, 0x20, 0xa2, 0xe4, 0xb1, 0x01, 0x00, 0x88, 0x00, 0x00, 0x40,
3478 0x43, 0x99, 0x01, 0x00, 0x43, 0x8c, 0x23, 0x0b, 0xe5, 0x6d, 0x00, 0x00,
3479 0x00, 0x00, 0x00, 0x41, 0x19, 0x90, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
3480 0x44, 0xc9, 0x01, 0x00, 0x50, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
3481 0x58, 0x01, 0x00, 0x43, 0xf0, 0xc9, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05,
3482 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3483 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x48, 0x8c, 0xa8, 0x40,
3484 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3485 0x5c, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
3486 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x96, 0xb0, 0x01, 0x00,
3487 0xa0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf2,
3488 0x80, 0x32, 0x00, 0x00, 0x09, 0x97, 0x00, 0x41, 0x81, 0x30, 0x01, 0x00,
3489 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x55, 0x8c, 0xa2, 0x49,
3490 0x19, 0x7c, 0x00, 0x00, 0x86, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3491 0x59, 0x8c, 0x00, 0x40, 0xe5, 0xb1, 0x00, 0x00, 0x86, 0x00, 0x2f, 0x49,
3492 0x19, 0x80, 0x01, 0x00, 0x59, 0x8c, 0xa2, 0xf2, 0x80, 0x32, 0x00, 0x00,
3493 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
3494 0xe7, 0x91, 0x01, 0x00, 0x5c, 0x8c, 0xa2, 0x46, 0x19, 0x7c, 0x00, 0x00,
3495 0xa0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x60, 0x8c, 0x00, 0x40,
3496 0xe5, 0xb1, 0x00, 0x00, 0xa0, 0x00, 0x2f, 0x46, 0x19, 0x80, 0x01, 0x00,
3497 0x60, 0x8c, 0xa2, 0xf2, 0x80, 0x32, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40,
3498 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe7, 0x91, 0x01, 0x00,
3499 0x07, 0x00, 0x00, 0x4e, 0x80, 0xe4, 0x01, 0x00, 0x00, 0x39, 0x00, 0x40,
3500 0x80, 0xc8, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x40, 0x06, 0x6c, 0x00, 0x00,
3501 0xa8, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x34, 0x00, 0x2d, 0xf0,
3502 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x0c, 0xb0, 0x01, 0x00,
3503 0x00, 0x00, 0x00, 0xfb, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
3504 0x12, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3, 0x16, 0x88, 0x01, 0x00,
3505 0x04, 0x00, 0x00, 0xf3, 0x14, 0xf4, 0x01, 0x00, 0x90, 0x8c, 0x26, 0x40,
3506 0x81, 0x32, 0x00, 0x00, 0x76, 0x8c, 0x22, 0x0a, 0x16, 0x6c, 0x00, 0x00,
3507 0x58, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3508 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x84, 0x30, 0x00, 0x00,
3509 0x15, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88,
3510 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3511 0x00, 0x00, 0x00, 0x41, 0x13, 0xc0, 0x01, 0x00, 0x75, 0x8c, 0xa0, 0x43,
3512 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x13, 0xb0, 0x01, 0x00,
3513 0x6b, 0x8c, 0x00, 0x41, 0x15, 0xd0, 0x00, 0x00, 0x90, 0x8c, 0x22, 0x0a,
3514 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x08, 0x12, 0x6c, 0x00, 0x00,
3515 0x58, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3516 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x84, 0x30, 0x00, 0x00,
3517 0x15, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40,
3518 0xe1, 0xb1, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3519 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x90, 0x8c, 0x22, 0x41,
3520 0x15, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x11, 0xc0, 0x01, 0x00,
3521 0x83, 0x8c, 0xa0, 0x43, 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3522 0x11, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x06, 0x10, 0x6c, 0x00, 0x00,
3523 0x58, 0x00, 0x3d, 0x43, 0x11, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3524 0x36, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x00, 0x30, 0x00, 0x00,
3525 0x00, 0x00, 0x00, 0x50, 0x83, 0xb0, 0x01, 0x00, 0x4e, 0x97, 0x00, 0x47,
3526 0x61, 0x31, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3527 0x2b, 0x94, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
3528 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3529 0x8c, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
3530 0x1c, 0xb0, 0x00, 0x00, 0x7f, 0x8c, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3531 0x37, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x80, 0x97, 0x00, 0x51,
3532 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3533 0x37, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf3,
3534 0x80, 0x32, 0x00, 0x00, 0x34, 0x00, 0x2e, 0x41, 0xf5, 0xb1, 0x01, 0x00,
3535 0x00, 0x11, 0x00, 0x40, 0xe5, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x48,
3536 0x19, 0x7c, 0x00, 0x00, 0x9d, 0x8c, 0x00, 0x48, 0x19, 0x90, 0x00, 0x00,
3537 0x37, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf3,
3538 0x80, 0x32, 0x00, 0x00, 0x34, 0x00, 0x2e, 0x41, 0xf5, 0xb1, 0x01, 0x00,
3539 0x00, 0x11, 0x00, 0x40, 0xe5, 0x99, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
3540 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00,
3541 0xa4, 0x8c, 0x22, 0x45, 0x23, 0x7c, 0x00, 0x00, 0xb0, 0x00, 0x2f, 0xf0,
3542 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x8c, 0xc0, 0x01, 0x00,
3543 0x7c, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa3, 0xf0,
3544 0x8c, 0x6c, 0x00, 0x00, 0x90, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3545 0x35, 0x00, 0x2d, 0xf0, 0x8c, 0xb0, 0x01, 0x00, 0x34, 0x00, 0x2d, 0xf3,
3546 0x84, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf3, 0x84, 0x6c, 0x00, 0x00,
3547 0x58, 0x00, 0x3e, 0x43, 0x85, 0xe0, 0x01, 0x00, 0xab, 0x8c, 0x22, 0x48,
3548 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8d, 0xc0, 0x01, 0x00,
3549 0x00, 0x00, 0x68, 0x0a, 0x8c, 0xc0, 0x01, 0x00, 0x38, 0x00, 0x2a, 0x4a,
3550 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
3551 0x3c, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00, 0x10, 0x80, 0x00, 0x03,
3552 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x38, 0xb0, 0x01, 0x00,
3553 0x00, 0x00, 0x00, 0xf8, 0x26, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf8,
3554 0x02, 0x30, 0x00, 0x00, 0xb9, 0x8c, 0x23, 0x01, 0x14, 0x6c, 0x00, 0x00,
3555 0x00, 0x00, 0x00, 0xf8, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3556 0x82, 0xb0, 0x01, 0x00, 0x4c, 0x00, 0x20, 0xf0, 0xe4, 0xb1, 0x01, 0x00,
3557 0x44, 0x00, 0x20, 0x40, 0xe0, 0xb1, 0x01, 0x00, 0x48, 0x00, 0x20, 0x41,
3558 0xe0, 0xb1, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0x10, 0x32, 0xb0, 0x01, 0x00,
3559 0x58, 0x98, 0x00, 0xf0, 0x24, 0x30, 0x01, 0x00, 0xc2, 0x8c, 0xa2, 0x44,
3560 0x81, 0x6c, 0x00, 0x00, 0xc0, 0x8c, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
3561 0xb6, 0x95, 0x00, 0x40, 0x3b, 0x30, 0x01, 0x00, 0xea, 0x8c, 0xa2, 0x08,
3562 0x3c, 0x30, 0x00, 0x00, 0xc2, 0x8c, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3563 0xb9, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xea, 0x8c, 0xa2, 0x08,
3564 0x3c, 0x30, 0x00, 0x00, 0x50, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
3565 0x54, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x20, 0x01,
3566 0xe4, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00,
3567 0x80, 0x97, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40,
3568 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3569 0x8f, 0x95, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00, 0x9d, 0x8c, 0x22, 0x4a,
3570 0x80, 0x32, 0x00, 0x00, 0xce, 0x8c, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3571 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x8f, 0x95, 0x00, 0xf3,
3572 0x94, 0x30, 0x01, 0x00, 0x04, 0x00, 0x20, 0x43, 0x97, 0x6c, 0x00, 0x00,
3573 0x58, 0x00, 0x3e, 0x43, 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1b,
3574 0xf0, 0xb1, 0x01, 0x00, 0x1f, 0x00, 0x60, 0x00, 0x00, 0x8c, 0x01, 0x00,
3575 0xdd, 0x8b, 0x85, 0x11, 0x80, 0x32, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03,
3576 0x42, 0xc9, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0xf0, 0x8c, 0xb0, 0x01, 0x00,
3577 0x00, 0x00, 0x60, 0xf0, 0x8c, 0xc0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x40,
3578 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa3, 0xf0, 0x8c, 0x6c, 0x00, 0x00,
3579 0x80, 0x97, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40,
3580 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x22, 0x49, 0x19, 0x7c, 0x00, 0x00,
3581 0xdc, 0x8c, 0x00, 0x49, 0x19, 0x80, 0x00, 0x00, 0xe1, 0x8c, 0x22, 0x41,
3582 0x19, 0x7c, 0x00, 0x00, 0xb6, 0x95, 0x00, 0x40, 0x3b, 0x30, 0x01, 0x00,
3583 0xe5, 0x8c, 0xa2, 0x08, 0x3c, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x5f,
3584 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3585 0xb9, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xe5, 0x8c, 0xa2, 0x08,
3586 0x3c, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00,
3587 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x50, 0x00, 0x2d, 0x10,
3588 0x32, 0xb0, 0x01, 0x00, 0x54, 0x00, 0x2d, 0xf0, 0x38, 0xb0, 0x01, 0x00,
3589 0x4e, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00, 0x40, 0x00, 0x2d, 0xf2,
3590 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x14, 0xb0, 0x01, 0x00,
3591 0x30, 0x00, 0x00, 0x10, 0x8c, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x46,
3592 0x44, 0xc9, 0x01, 0x00, 0x68, 0x01, 0x2d, 0x44, 0x61, 0xb1, 0x01, 0x00,
3593 0x10, 0x00, 0x68, 0xf2, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
3594 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
3595 0x00, 0x00, 0x00, 0x0b, 0x37, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3596 0x36, 0xd0, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0x40, 0x10, 0xc0, 0x01, 0x00,
3597 0x00, 0x00, 0x00, 0x06, 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52,
3598 0x81, 0xd0, 0x01, 0x00, 0x12, 0x97, 0x00, 0x40, 0xe4, 0x31, 0x01, 0x00,
3599 0x20, 0x00, 0x00, 0x46, 0x62, 0xdd, 0x01, 0x00, 0xf6, 0x8c, 0xa8, 0x40,
3600 0x23, 0x30, 0x00, 0x00, 0x08, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3601 0x10, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x8d, 0x82, 0x41,
3602 0x23, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
3603 0x01, 0x8d, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
3604 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3605 0xfe, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
3606 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3607 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3608 0x23, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19, 0x44, 0xc9, 0x01, 0x00,
3609 0x0c, 0x8d, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x08, 0x8d, 0xa3, 0x01,
3610 0x0c, 0x6c, 0x00, 0x00, 0x09, 0x8d, 0x00, 0x06, 0x04, 0xb0, 0x00, 0x00,
3611 0x00, 0x00, 0x00, 0x01, 0x04, 0xb0, 0x01, 0x00, 0x0b, 0x8d, 0x20, 0x02,
3612 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x04, 0xb0, 0x01, 0x00,
3613 0x0f, 0x8d, 0x00, 0x02, 0xe0, 0xb1, 0x00, 0x00, 0x0e, 0x8d, 0xa3, 0x01,
3614 0x0c, 0x6c, 0x00, 0x00, 0x0f, 0x8d, 0x00, 0x06, 0x04, 0xb0, 0x00, 0x00,
3615 0x00, 0x00, 0x00, 0x01, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x02,
3616 0x16, 0x94, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x16, 0xd8, 0x01, 0x00,
3617 0x00, 0x00, 0x68, 0x08, 0x3e, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1c,
3618 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
3619 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00, 0x14, 0x8d, 0xa8, 0x13,
3620 0xe0, 0x31, 0x00, 0x00, 0x51, 0x8d, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
3621 0x44, 0x00, 0x2d, 0x02, 0x0c, 0xd0, 0x01, 0x00, 0x3c, 0x8d, 0xa2, 0x02,
3622 0x02, 0x50, 0x00, 0x00, 0x22, 0x8d, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
3623 0x20, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x21, 0x8d, 0x22, 0x40,
3624 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
3625 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x1d, 0x8d, 0xa8, 0x40,
3626 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3627 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x44, 0x00, 0x2d, 0x5c,
3628 0x1f, 0x80, 0x01, 0x00, 0x48, 0x00, 0x2d, 0xf0, 0x38, 0xb0, 0x01, 0x00,
3629 0x4c, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00, 0x38, 0x00, 0x2f, 0xf2,
3630 0x02, 0xb0, 0x01, 0x00, 0x3e, 0x8d, 0x22, 0x01, 0x14, 0x6c, 0x00, 0x00,
3631 0x04, 0x00, 0xa4, 0x40, 0x81, 0x32, 0x00, 0x00, 0x30, 0x8d, 0x22, 0x46,
3632 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00,
3633 0x20, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x2f, 0x8d, 0x22, 0x40,
3634 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3635 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x2c, 0x8d, 0xa8, 0x40,
3636 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3637 0x38, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3638 0x94, 0xb0, 0x01, 0x00, 0x38, 0x00, 0x2d, 0xf0, 0x96, 0xb0, 0x01, 0x00,
3639 0x00, 0x00, 0x00, 0x4c, 0xe1, 0xc1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x03,
3640 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x22, 0x4a, 0xf1, 0xb1, 0x01, 0x00,
3641 0x44, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
3642 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
3643 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
3644 0x62, 0xdd, 0x01, 0x00, 0x39, 0x8d, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00,
3645 0x3e, 0x8d, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
3646 0x38, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x24, 0x40, 0x81, 0x32, 0x00, 0x00,
3647 0x4c, 0x8d, 0x22, 0x06, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
3648 0x33, 0xc0, 0x01, 0x00, 0x4a, 0x8d, 0xa2, 0x02, 0x36, 0x6c, 0x00, 0x00,
3649 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x8f, 0x0d,
3650 0x42, 0x31, 0x00, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x80, 0x32, 0x00, 0x00,
3651 0x04, 0x00, 0x22, 0x5c, 0xe1, 0x7d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0xf0,
3652 0x6a, 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf8, 0x10, 0xc8, 0x01, 0x00,
3653 0x00, 0x00, 0x00, 0x5c, 0x11, 0x80, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
3654 0x37, 0x98, 0x01, 0x00, 0xfa, 0x8c, 0x00, 0xa1, 0x1a, 0xb0, 0x00, 0x00,
3655 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00, 0xfa, 0x8c, 0x00, 0x02,
3656 0x36, 0xd0, 0x00, 0x00, 0x50, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
3657 0x54, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x20, 0x01,
3658 0xe4, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00,
3659 0x58, 0x8d, 0x00, 0x5f, 0x01, 0xb0, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x02,
3660 0x02, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x02, 0x0c, 0x6c, 0x00, 0x00,
3661 0x37, 0x00, 0x2d, 0x46, 0x01, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3,
3662 0x80, 0xf4, 0x01, 0x00, 0x57, 0x8d, 0xa0, 0x43, 0x81, 0x6c, 0x00, 0x00,
3663 0x00, 0x00, 0x00, 0x55, 0x01, 0xb0, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40,
3664 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00,
3665 0x5e, 0x8d, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
3666 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
3667 0x5b, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
3668 0x1c, 0xb0, 0x00, 0x00, 0x0d, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3669 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x65, 0x8d, 0x22, 0x40,
3670 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3671 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x62, 0x8d, 0xa8, 0x40,
3672 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3673 0x60, 0x01, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
3674 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00,
3675 0x6a, 0x8d, 0x90, 0xf2, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3676 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00,
3677 0x32, 0x00, 0x00, 0xa6, 0x2a, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
3678 0x2a, 0x94, 0x01, 0x00, 0x6d, 0x8d, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00,
3679 0x00, 0xd0, 0x00, 0x1e, 0x62, 0xdd, 0x01, 0x00, 0x72, 0x8d, 0x28, 0x40,
3680 0x05, 0x30, 0x00, 0x00, 0x6e, 0x8d, 0x22, 0x48, 0x77, 0x7d, 0x00, 0x00,
3681 0x75, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
3682 0x62, 0xb1, 0x01, 0x00, 0x80, 0x8d, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
3683 0x72, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00,
3684 0x92, 0xb0, 0x01, 0x00, 0x7d, 0x8d, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
3685 0x04, 0x00, 0x22, 0x40, 0x3b, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa3, 0x48,
3686 0x3b, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3687 0xc3, 0x94, 0x00, 0xf8, 0x00, 0x30, 0x01, 0x00, 0x7a, 0x8d, 0xa2, 0x41,
3688 0x3b, 0x50, 0x00, 0x00, 0x81, 0x8d, 0x00, 0x49, 0x00, 0xb0, 0x00, 0x00,
3689 0xff, 0x07, 0x00, 0x1e, 0x00, 0x8c, 0x01, 0x00, 0xc3, 0x94, 0x00, 0x40,
3690 0x81, 0x32, 0x01, 0x00, 0x81, 0x8d, 0x00, 0x49, 0x00, 0xb0, 0x00, 0x00,
3691 0x00, 0x00, 0x1d, 0x47, 0x19, 0x80, 0x01, 0x00, 0x84, 0x8d, 0x22, 0x5f,
3692 0x01, 0x6c, 0x00, 0x00, 0x87, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3693 0xa7, 0x88, 0x00, 0x00, 0x80, 0xb0, 0x00, 0x00, 0x8b, 0x8d, 0x22, 0x5c,
3694 0x1f, 0x7c, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3695 0x8b, 0x8d, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
3696 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3697 0x88, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
3698 0x1c, 0xb0, 0x00, 0x00, 0x8b, 0x8d, 0x40, 0x05, 0x48, 0x31, 0x00, 0x00,
3699 0xff, 0xff, 0x00, 0x07, 0x94, 0x89, 0x01, 0x00, 0x91, 0x8d, 0x85, 0xca,
3700 0x94, 0x30, 0x00, 0x00, 0x87, 0x98, 0x18, 0x5c, 0x1f, 0x00, 0x01, 0x00,
3701 0x0e, 0x00, 0x00, 0x0f, 0x1e, 0x8c, 0x01, 0x00, 0xb4, 0x87, 0x00, 0x40,
3702 0x81, 0xb2, 0x00, 0x00, 0x80, 0x97, 0x18, 0x00, 0x80, 0x30, 0x01, 0x00,
3703 0xdd, 0x8b, 0x00, 0x47, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3704 0x19, 0x80, 0x01, 0x00, 0xdd, 0x8b, 0x22, 0x47, 0x19, 0x7c, 0x00, 0x00,
3705 0xb9, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x98, 0x8d, 0xa2, 0x08,
3706 0x80, 0x32, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3707 0x12, 0x97, 0x00, 0x40, 0x0d, 0x30, 0x01, 0x00, 0x9c, 0x01, 0x00, 0x40,
3708 0x45, 0x99, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x98, 0x88, 0x01, 0x00,
3709 0x8b, 0x00, 0x2d, 0x50, 0x17, 0xf0, 0x01, 0x00, 0x9e, 0x8d, 0x90, 0x4c,
3710 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
3711 0xa0, 0x8d, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3712 0x45, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00,
3713 0x68, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0xf2,
3714 0x80, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x62, 0x40, 0x7e, 0xcd, 0x01, 0x00,
3715 0x00, 0x00, 0x00, 0x57, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
3716 0x48, 0xb1, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40, 0xf0, 0x8d, 0x01, 0x00,
3717 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05,
3718 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3719 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0xaa, 0x8d, 0xa8, 0x40,
3720 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3721 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0xae, 0x8d, 0x45, 0x48,
3722 0x61, 0x31, 0x00, 0x00, 0x00, 0x50, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00,
3723 0xb4, 0x8d, 0x28, 0x40, 0x05, 0x30, 0x00, 0x00, 0xaf, 0x8d, 0x22, 0x48,
3724 0x77, 0x7d, 0x00, 0x00, 0xc3, 0x94, 0x1d, 0x08, 0x00, 0x30, 0x01, 0x00,
3725 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xdd, 0x8b, 0x1d, 0x47,
3726 0x19, 0x80, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
3727 0x35, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
3728 0x84, 0xc8, 0x01, 0x00, 0xba, 0x8d, 0xa0, 0x43, 0x85, 0x6c, 0x00, 0x00,
3729 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00, 0xa8, 0x00, 0x00, 0x40,
3730 0x43, 0x99, 0x01, 0x00, 0x37, 0x00, 0x2f, 0xf0, 0x24, 0xb0, 0x01, 0x00,
3731 0x04, 0x00, 0x22, 0xf3, 0x9e, 0x06, 0x00, 0x00, 0x01, 0x00, 0x63, 0xf3,
3732 0x82, 0xcc, 0x01, 0x00, 0xc8, 0x8d, 0xa2, 0x41, 0x9e, 0x06, 0x00, 0x00,
3733 0xdd, 0x8b, 0x22, 0x44, 0x83, 0x70, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x40,
3734 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0, 0x24, 0x6c, 0x00, 0x00,
3735 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x58, 0x00, 0x3d, 0x43,
3736 0xe7, 0xe1, 0x01, 0x00, 0xdd, 0x8b, 0x1f, 0xf0, 0x24, 0x6c, 0x00, 0x00,
3737 0x87, 0x98, 0x00, 0x48, 0x81, 0x30, 0x01, 0x00, 0xa7, 0x88, 0x23, 0x41,
3738 0x83, 0x6c, 0x00, 0x00, 0xa7, 0x88, 0x00, 0x47, 0x81, 0xb0, 0x00, 0x00,
3739 0x34, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0x22, 0x42,
3740 0xe6, 0x6d, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43, 0x85, 0xe0, 0x01, 0x00,
3741 0x00, 0x00, 0x00, 0xf8, 0x36, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3742 0x00, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00,
3743 0x04, 0x00, 0xa2, 0x00, 0xbe, 0x06, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40,
3744 0x83, 0x98, 0x01, 0x00, 0x4e, 0x97, 0x00, 0x47, 0x61, 0x31, 0x01, 0x00,
3745 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03,
3746 0x48, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00,
3747 0x00, 0x00, 0x00, 0xf8, 0x8e, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0,
3748 0x14, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3749 0xa5, 0x8c, 0xa2, 0x40, 0x8f, 0x7c, 0x00, 0x00, 0xdb, 0x8d, 0x22, 0x47,
3750 0x8f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x48, 0x19, 0x7c, 0x00, 0x00,
3751 0xa5, 0x8c, 0x00, 0x48, 0x19, 0x90, 0x00, 0x00, 0x04, 0x00, 0x22, 0x46,
3752 0x8f, 0x7c, 0x00, 0x00, 0x5d, 0x8e, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3753 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00, 0x36, 0x00, 0x2d, 0x5d,
3754 0x05, 0xb4, 0x01, 0x00, 0x37, 0x00, 0x2d, 0xf3, 0x80, 0xb0, 0x01, 0x00,
3755 0x00, 0x00, 0x00, 0xf3, 0x8e, 0xb0, 0x01, 0x00, 0xf0, 0x00, 0x00, 0x47,
3756 0x7e, 0x89, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
3757 0x5c, 0x00, 0x3d, 0x43, 0x81, 0xe0, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0xf0,
3758 0x94, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x4a, 0x80, 0x32, 0x00, 0x00,
3759 0x00, 0x00, 0x00, 0xf0, 0x24, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
3760 0x86, 0xdc, 0x01, 0x00, 0x40, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
3761 0x8c, 0x93, 0x00, 0x4a, 0xf0, 0x31, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
3762 0x1f, 0x7c, 0x00, 0x00, 0x36, 0x00, 0x2f, 0x5c, 0x1f, 0x90, 0x01, 0x00,
3763 0xef, 0x8d, 0xa2, 0x50, 0x8f, 0x50, 0x00, 0x00, 0x34, 0x00, 0x20, 0x40,
3764 0xe1, 0xb1, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3765 0xf0, 0x00, 0x00, 0x47, 0x7e, 0x89, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
3766 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x63, 0x41, 0x81, 0xc0, 0x01, 0x00,
3767 0xf4, 0x8d, 0xa0, 0x43, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x63, 0x40,
3768 0x81, 0xb0, 0x01, 0x00, 0x37, 0x00, 0x20, 0x47, 0xe6, 0xb1, 0x01, 0x00,
3769 0xdd, 0x8b, 0x22, 0x47, 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x00, 0x47,
3770 0x0c, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x8f, 0x84, 0x01, 0x00,
3771 0x09, 0x8e, 0x22, 0x47, 0x0c, 0x6c, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43,
3772 0x81, 0xe0, 0x01, 0x00, 0x09, 0x8e, 0x1f, 0xf0, 0x24, 0x6c, 0x00, 0x00,
3773 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
3774 0x42, 0xc9, 0x01, 0x00, 0x02, 0x8e, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3775 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3776 0x62, 0xdd, 0x01, 0x00, 0xff, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3777 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x02, 0x8e, 0x42, 0x40,
3778 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
3779 0x00, 0x00, 0x1a, 0x5d, 0x69, 0x93, 0x01, 0x00, 0x07, 0x8e, 0x23, 0x41,
3780 0x0d, 0x6c, 0x00, 0x00, 0xdd, 0x8d, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3781 0x87, 0x98, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00, 0xa7, 0x88, 0x00, 0x48,
3782 0x81, 0xb0, 0x00, 0x00, 0xdd, 0x8b, 0x22, 0x40, 0x8f, 0x6c, 0x00, 0x00,
3783 0x80, 0x97, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40,
3784 0x81, 0xb2, 0x00, 0x00, 0x40, 0x02, 0x00, 0x0c, 0x7e, 0x89, 0x01, 0x00,
3785 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x40,
3786 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x84, 0xb0, 0x01, 0x00,
3787 0xa6, 0x00, 0x2d, 0x49, 0x19, 0x90, 0x01, 0x00, 0x02, 0x00, 0x00, 0xf2,
3788 0x80, 0xf4, 0x01, 0x00, 0xb8, 0x00, 0x2d, 0x40, 0x81, 0xb2, 0x01, 0x00,
3789 0x00, 0x00, 0x00, 0xf2, 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3790 0x82, 0xf8, 0x01, 0x00, 0x19, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
3791 0x1a, 0x8e, 0xa0, 0x40, 0x82, 0x6c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x40,
3792 0x81, 0x98, 0x01, 0x00, 0x1a, 0x8e, 0xa3, 0x40, 0x82, 0x6c, 0x00, 0x00,
3793 0x00, 0x00, 0x00, 0x41, 0x80, 0xb0, 0x01, 0x00, 0x1c, 0x8e, 0x20, 0x4c,
3794 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x85, 0xc0, 0x01, 0x00,
3795 0x86, 0x00, 0x20, 0x40, 0xe4, 0xb1, 0x01, 0x00, 0xa2, 0x00, 0x20, 0x42,
3796 0xe6, 0xb1, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3797 0x09, 0x97, 0x00, 0x50, 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40,
3798 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3799 0x04, 0x00, 0x22, 0xf0, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3800 0x8d, 0xb0, 0x01, 0x00, 0x78, 0x98, 0x00, 0x40, 0x87, 0x30, 0x01, 0x00,
3801 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0xb0, 0x00, 0x2f, 0x5c,
3802 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x80, 0xc0, 0x01, 0x00,
3803 0x7c, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa3, 0xf0,
3804 0x80, 0x6c, 0x00, 0x00, 0x80, 0x97, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00,
3805 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
3806 0x81, 0xb2, 0x00, 0x00, 0xdd, 0x8b, 0x22, 0x46, 0x19, 0x7c, 0x00, 0x00,
3807 0xa0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0xf2,
3808 0x96, 0xcc, 0x01, 0x00, 0xdd, 0x8b, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
3809 0x80, 0x97, 0x00, 0x4a, 0x81, 0x30, 0x01, 0x00, 0x55, 0x97, 0x00, 0x46,
3810 0x95, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3811 0xdd, 0x8b, 0x22, 0x49, 0x19, 0x7c, 0x00, 0x00, 0x86, 0x00, 0x00, 0x40,
3812 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0xf2, 0x80, 0xcc, 0x01, 0x00,
3813 0xdd, 0x8b, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x80, 0x97, 0x00, 0x4a,
3814 0x81, 0x30, 0x01, 0x00, 0x55, 0x97, 0x00, 0x47, 0x95, 0x30, 0x01, 0x00,
3815 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2b, 0x94, 0x00, 0x40,
3816 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
3817 0xdd, 0x8b, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x46,
3818 0x19, 0x7c, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3819 0x04, 0x00, 0xa2, 0x49, 0x19, 0x7c, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x40,
3820 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3821 0x01, 0x00, 0x62, 0xf2, 0x80, 0xc8, 0x01, 0x00, 0x46, 0x8e, 0x90, 0x40,
3822 0x80, 0x32, 0x00, 0x00, 0xff, 0xff, 0x62, 0x40, 0x81, 0x98, 0x01, 0x00,
3823 0xa4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xdd, 0x8b, 0x22, 0x40,
3824 0xe5, 0x6d, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x41, 0xe5, 0xc1, 0x00, 0x00,
3825 0x09, 0x97, 0x00, 0x4d, 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40,
3826 0x81, 0xb2, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3827 0x04, 0x00, 0x22, 0xf0, 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3828 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
3829 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3830 0x8d, 0xb0, 0x01, 0x00, 0x78, 0x98, 0x00, 0x40, 0x87, 0x30, 0x01, 0x00,
3831 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x56, 0x8e, 0x80, 0xf3,
3832 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0x81, 0x01, 0x00,
3833 0x00, 0x00, 0x00, 0x47, 0x19, 0x90, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
3834 0x1f, 0x7c, 0x00, 0x00, 0xdd, 0x8b, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
3835 0x37, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf3,
3836 0x80, 0x32, 0x00, 0x00, 0x34, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3837 0x01, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x11, 0x00, 0x40,
3838 0xe5, 0x99, 0x01, 0x00, 0xb9, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3839 0x6e, 0x8e, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40,
3840 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x82, 0xb0, 0x01, 0x00,
3841 0x00, 0x00, 0x63, 0x51, 0x83, 0xd0, 0x01, 0x00, 0x34, 0x00, 0x00, 0x40,
3842 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x84, 0xcc, 0x01, 0x00,
3843 0x66, 0x8e, 0x9f, 0x42, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x63, 0x42,
3844 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00,
3845 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x68, 0x8e, 0x37, 0x5c,
3846 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00,
3847 0x69, 0x8e, 0xa8, 0x4b, 0x19, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3848 0x62, 0xb1, 0x01, 0x00, 0x6b, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3849 0xed, 0x87, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
3850 0x42, 0xc9, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00,
3851 0xac, 0x00, 0x2d, 0xf0, 0x30, 0xb0, 0x01, 0x00, 0x35, 0x00, 0x2d, 0xf0,
3852 0x28, 0xb0, 0x01, 0x00, 0x34, 0x00, 0x2d, 0xf3, 0x84, 0xb0, 0x01, 0x00,
3853 0x04, 0x00, 0x22, 0xf3, 0x84, 0x6c, 0x00, 0x00, 0x58, 0x00, 0x3e, 0x43,
3854 0x85, 0xe0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x18, 0xf0, 0xc9, 0x01, 0x00,
3855 0x00, 0x00, 0x00, 0x4a, 0xe0, 0xb1, 0x01, 0x00, 0x38, 0x00, 0x20, 0x00,
3856 0xe0, 0xb1, 0x01, 0x00, 0x3c, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00,
3857 0x40, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3858 0x2b, 0xb0, 0x01, 0x00, 0x64, 0x97, 0x00, 0x40, 0x0d, 0x30, 0x01, 0x00,
3859 0x00, 0x00, 0x00, 0x18, 0x16, 0xc0, 0x01, 0x00, 0x7f, 0x8e, 0xa0, 0x14,
3860 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
3861 0x0e, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
3862 0xf8, 0xb1, 0x01, 0x00, 0xb0, 0x00, 0x2d, 0x14, 0xf8, 0xb1, 0x01, 0x00,
3863 0x10, 0x50, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x88, 0x8e, 0x22, 0x4a,
3864 0x19, 0x7c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x43, 0x86, 0xc8, 0x01, 0x00,
3865 0x00, 0x30, 0x00, 0x0b, 0x16, 0xc8, 0x01, 0x00, 0x88, 0x8e, 0xa4, 0x40,
3866 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
3867 0x01, 0x00, 0x6e, 0x43, 0x86, 0x98, 0x01, 0x00, 0xa8, 0x97, 0x00, 0x30,
3868 0x81, 0x30, 0x01, 0x00, 0x8c, 0x8e, 0xa0, 0x41, 0x17, 0x40, 0x00, 0x00,
3869 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x93, 0x8e, 0x22, 0x4a,
3870 0x19, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
3871 0xcc, 0x00, 0x2d, 0xab, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
3872 0x17, 0xc0, 0x01, 0x00, 0x92, 0x8e, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00,
3873 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x64, 0xf0,
3874 0x82, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3875 0x00, 0x00, 0x60, 0x41, 0x31, 0xc0, 0x01, 0x00, 0xbc, 0x00, 0x00, 0x40,
3876 0x43, 0x99, 0x01, 0x00, 0x99, 0x8e, 0x06, 0x0c, 0x80, 0x32, 0x00, 0x00,
3877 0xa0, 0x00, 0x20, 0xf2, 0xe4, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x09, 0x46,
3878 0x19, 0x10, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3879 0xff, 0xff, 0x00, 0x0b, 0x98, 0x88, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x50,
3880 0x17, 0xf0, 0x01, 0x00, 0x9e, 0x8e, 0x90, 0x4c, 0x16, 0x40, 0x00, 0x00,
3881 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0xa0, 0x8e, 0x22, 0x43,
3882 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00,
3883 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x68, 0x01, 0x00, 0x40,
3884 0x43, 0x99, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0xf2, 0x80, 0xb0, 0x01, 0x00,
3885 0x02, 0x00, 0x62, 0x40, 0x7e, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57,
3886 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
3887 0x03, 0x00, 0x00, 0x40, 0xf0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
3888 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
3889 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
3890 0x62, 0xb1, 0x01, 0x00, 0xaa, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3891 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3892 0x48, 0xb1, 0x01, 0x00, 0xae, 0x8e, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00,
3893 0x00, 0x50, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00, 0xaf, 0x8e, 0xa8, 0x40,
3894 0x05, 0x30, 0x00, 0x00, 0x35, 0x00, 0x1d, 0x40, 0x47, 0x99, 0x01, 0x00,
3895 0x01, 0x00, 0x63, 0xf3, 0x84, 0xc8, 0x01, 0x00, 0xb5, 0x8e, 0xa0, 0x43,
3896 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00,
3897 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf3,
3898 0x9e, 0x06, 0x00, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00,
3899 0x04, 0x00, 0xa2, 0x41, 0x9e, 0x06, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40,
3900 0x47, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x45, 0xe7, 0x7d, 0x00, 0x00,
3901 0x00, 0x00, 0x00, 0x45, 0xe7, 0x91, 0x01, 0x00, 0x80, 0x97, 0x00, 0x5f,
3902 0x81, 0x30, 0x01, 0x00, 0xdd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3903 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x8f, 0x95, 0x00, 0xf3,
3904 0x94, 0x30, 0x01, 0x00, 0x5d, 0x8e, 0x22, 0x4a, 0x80, 0x32, 0x00, 0x00,
3905 0xce, 0x8c, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40,
3906 0x47, 0x99, 0x01, 0x00, 0x8f, 0x95, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00,
3907 0x97, 0x8c, 0x22, 0x4a, 0x80, 0x32, 0x00, 0x00, 0xce, 0x8c, 0x00, 0x40,
3908 0x81, 0xb2, 0x00, 0x00, 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3909 0x00, 0x00, 0x00, 0xfb, 0x12, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3,
3910 0x90, 0x88, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x0c, 0xf4, 0x01, 0x00,
3911 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc8, 0x8c, 0x22, 0x06,
3912 0x90, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
3913 0x5c, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0xf0,
3914 0x94, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00,
3915 0x37, 0x00, 0x2f, 0xf0, 0x24, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x2a, 0x50,
3916 0xe7, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x63, 0x41, 0x13, 0xc0, 0x01, 0x00,
3917 0xd5, 0x8e, 0xa0, 0x43, 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3918 0xe7, 0xb1, 0x01, 0x00, 0x89, 0x93, 0x00, 0x10, 0x86, 0x30, 0x01, 0x00,
3919 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xd7, 0x8e, 0x42, 0x05,
3920 0x48, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
3921 0xc8, 0x8c, 0x1a, 0x5d, 0x69, 0x93, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
3922 0x48, 0x6d, 0x00, 0x00, 0x36, 0x00, 0x2d, 0x10, 0x86, 0xb0, 0x01, 0x00,
3923 0x5c, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0xf0,
3924 0x94, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x4a, 0x80, 0x32, 0x00, 0x00,
3925 0x35, 0x00, 0x2f, 0xf0, 0x24, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x6b, 0xfb,
3926 0x84, 0xc8, 0x01, 0x00, 0xe4, 0x8e, 0xa0, 0x43, 0x85, 0x6c, 0x00, 0x00,
3927 0x35, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3928 0x81, 0xb2, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x12, 0xc8, 0x01, 0x00,
3929 0xe7, 0x8e, 0xa0, 0x43, 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3930 0xe7, 0xb1, 0x01, 0x00, 0x40, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
3931 0x8c, 0x93, 0x00, 0x4a, 0xf0, 0x31, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88,
3932 0x1c, 0xb0, 0x00, 0x00, 0xea, 0x8e, 0x42, 0x05, 0x48, 0x31, 0x00, 0x00,
3933 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x5d,
3934 0x69, 0x93, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3935 0x04, 0x00, 0x22, 0xf3, 0x9e, 0x06, 0x00, 0x00, 0x11, 0x00, 0x63, 0xf3,
3936 0x82, 0xcc, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x41, 0x80, 0x32, 0x00, 0x00,
3937 0xbf, 0x8d, 0x22, 0x41, 0x9e, 0x06, 0x00, 0x00, 0x35, 0x00, 0x00, 0x40,
3938 0x43, 0x99, 0x01, 0x00, 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00,
3939 0x00, 0x00, 0x00, 0xf8, 0x36, 0xb0, 0x01, 0x00, 0xcd, 0x8d, 0x00, 0xf0,
3940 0x00, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
3941 0xf7, 0x8e, 0x65, 0xf2, 0x12, 0x30, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42,
3942 0x13, 0xf0, 0x01, 0x00, 0xfc, 0x8e, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
3943 0x27, 0x83, 0x75, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xf6, 0x8e, 0x00, 0x40,
3944 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe7, 0x91, 0x01, 0x00,
3945 0x00, 0x00, 0x75, 0x42, 0x19, 0x90, 0x01, 0x00, 0x75, 0x00, 0x00, 0x40,
3946 0x61, 0x99, 0x01, 0x00, 0xfe, 0x8e, 0xa8, 0xb1, 0x0c, 0x30, 0x00, 0x00,
3947 0xa3, 0x96, 0x00, 0x10, 0x94, 0x30, 0x01, 0x00, 0x23, 0x83, 0x00, 0x88,
3948 0x1c, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
3949 0xc0, 0xa8, 0x3d, 0x46, 0x0d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3950 0x97, 0xb0, 0x01, 0x00, 0x08, 0x8f, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00,
3951 0x04, 0x00, 0x02, 0x41, 0x97, 0x40, 0x00, 0x00, 0x05, 0x8f, 0x00, 0x50,
3952 0x43, 0xc1, 0x00, 0x00, 0x14, 0x8f, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00,
3953 0x00, 0x00, 0x62, 0x4b, 0x12, 0x94, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
3954 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x97, 0xc0, 0x01, 0x00,
3955 0x30, 0x00, 0x00, 0x10, 0x94, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x4a,
3956 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf1, 0xb1, 0x01, 0x00,
3957 0x5e, 0x01, 0x00, 0x4b, 0xf0, 0xc9, 0x01, 0x00, 0x5e, 0x01, 0x00, 0x05,
3958 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3959 0x20, 0x00, 0x00, 0x4a, 0x62, 0xdd, 0x01, 0x00, 0x12, 0x8f, 0xa8, 0x40,
3960 0x81, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
3961 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x09,
3962 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x97, 0xc0, 0x01, 0x00,
3963 0xd4, 0x00, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3964 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
3965 0x1a, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
3966 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00,
3967 0x1e, 0x8f, 0x65, 0x40, 0x81, 0x32, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3,
3968 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00,
3969 0x00, 0x00, 0x75, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
3970 0x62, 0xb1, 0x01, 0x00, 0x22, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3971 0x27, 0x8f, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
3972 0x62, 0xb1, 0x01, 0x00, 0x25, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3973 0x00, 0x00, 0x00, 0x97, 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x96,
3974 0x97, 0xb0, 0x01, 0x00, 0x2d, 0x8f, 0x20, 0x09, 0x96, 0x6c, 0x00, 0x00,
3975 0x2d, 0x8f, 0x1f, 0x09, 0x96, 0x24, 0x00, 0x00, 0x27, 0x83, 0x00, 0x88,
3976 0x1c, 0xb0, 0x00, 0x00, 0x28, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3977 0x09, 0x97, 0x00, 0x57, 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x05,
3978 0x48, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
3979 0x2e, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x34, 0x8f, 0x22, 0xf3,
3980 0x80, 0x32, 0x00, 0x00, 0x09, 0x97, 0x00, 0x42, 0x81, 0x30, 0x01, 0x00,
3981 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x80, 0x97, 0x00, 0x52,
3982 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x42, 0x19, 0x80, 0x00, 0x00,
3983 0x04, 0x00, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x09, 0x97, 0x00, 0x3a,
3984 0x81, 0x30, 0x01, 0x00, 0x80, 0x97, 0x00, 0x52, 0x81, 0x30, 0x01, 0x00,
3985 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3986 0x05, 0xb0, 0x01, 0x00, 0xff, 0x95, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00,
3987 0xc6, 0x8b, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00, 0x24, 0x04, 0x00, 0x40,
3988 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
3989 0x42, 0x8f, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
3990 0x81, 0x32, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3991 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
3992 0x02, 0xb0, 0x01, 0x00, 0x9f, 0x95, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00,
3993 0xa6, 0x95, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0xed, 0x87, 0x00, 0x40,
3994 0x81, 0xb2, 0x00, 0x00, 0x25, 0x98, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00,
3995 0x4e, 0x8f, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x4e, 0x8f, 0xa2, 0x16,
3996 0x80, 0x32, 0x00, 0x00, 0xed, 0x87, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
3997 0x00, 0x00, 0x00, 0x4b, 0x19, 0x90, 0x01, 0x00, 0x09, 0x97, 0x00, 0x3a,
3998 0x81, 0x30, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3999 0x00, 0x23, 0x00, 0xa6, 0x16, 0xb0, 0x01, 0x00, 0x51, 0x8f, 0x83, 0x1e,
4000 0x80, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0b, 0x16, 0xdc, 0x01, 0x00,
4001 0x00, 0x00, 0x00, 0x00, 0x2a, 0xc0, 0x01, 0x00, 0x58, 0x97, 0x00, 0x08,
4002 0x80, 0x30, 0x01, 0x00, 0x55, 0x8f, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00,
4003 0x79, 0x97, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0x98, 0x93, 0x00, 0x40,
4004 0x8d, 0x30, 0x01, 0x00, 0x60, 0x97, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00,
4005 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x5d, 0x8f, 0x22, 0x40,
4006 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4007 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x5a, 0x8f, 0xa8, 0x40,
4008 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4009 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0xc3, 0x94, 0x00, 0x40,
4010 0x81, 0x32, 0x01, 0x00, 0x61, 0x8f, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00,
4011 0x80, 0x97, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00, 0xcd, 0x8b, 0x00, 0x05,
4012 0x48, 0xb1, 0x00, 0x00, 0x36, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4013 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4a,
4014 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x1f, 0x90, 0x01, 0x00,
4015 0x69, 0x8f, 0x22, 0x43, 0x3d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
4016 0x19, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3d, 0x80, 0x01, 0x00,
4017 0x6a, 0x8f, 0x00, 0x42, 0x19, 0x90, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4f,
4018 0x2b, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00,
4019 0x14, 0x00, 0x2d, 0x45, 0x1f, 0x90, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0,
4020 0x14, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa0, 0x01, 0x14, 0x6c, 0x00, 0x00,
4021 0xdc, 0x8f, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00, 0xdc, 0x8f, 0x00, 0x44,
4022 0x19, 0x90, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4023 0x04, 0x00, 0xa2, 0x47, 0xe7, 0x7d, 0x00, 0x00, 0xae, 0x94, 0x00, 0x40,
4024 0x81, 0x32, 0x01, 0x00, 0x84, 0x8f, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4025 0x84, 0x8f, 0xa2, 0x16, 0x80, 0x32, 0x00, 0x00, 0x80, 0x8f, 0xa2, 0x42,
4026 0x19, 0x7c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00,
4027 0xa0, 0x98, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x30, 0x05, 0x00, 0x41,
4028 0x89, 0x30, 0x01, 0x00, 0x7d, 0x8f, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4029 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40,
4030 0x81, 0xb2, 0x00, 0x00, 0x9f, 0x95, 0x00, 0x15, 0x94, 0x30, 0x01, 0x00,
4031 0xa6, 0x95, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0xed, 0x87, 0x00, 0x40,
4032 0x81, 0xb2, 0x00, 0x00, 0x36, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4033 0x00, 0x00, 0x00, 0x4b, 0x19, 0x90, 0x01, 0x00, 0x09, 0x97, 0x00, 0x3a,
4034 0x81, 0x30, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4035 0x87, 0x8f, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x36, 0x96, 0x00, 0x40,
4036 0x81, 0x32, 0x01, 0x00, 0x88, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4037 0xff, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc0, 0x8f, 0x22, 0x41,
4038 0x19, 0x7c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x15, 0x98, 0xc8, 0x01, 0x00,
4039 0xc0, 0x8f, 0xa0, 0x0b, 0x99, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x44,
4040 0x1f, 0x7c, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x7e, 0x89, 0x01, 0x00,
4041 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10,
4042 0x80, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x44, 0x99, 0x01, 0x00,
4043 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4044 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4045 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00, 0x93, 0x8f, 0xa8, 0x00,
4046 0xe0, 0x31, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4047 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x15,
4048 0x98, 0xc8, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x0b, 0x99, 0xd0, 0x01, 0x00,
4049 0x00, 0x00, 0x6a, 0x50, 0x99, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x20, 0x0b,
4050 0x99, 0x6c, 0x00, 0x00, 0xc0, 0x00, 0x62, 0x01, 0x80, 0xcc, 0x01, 0x00,
4051 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x2d, 0x00, 0x2d, 0xf0,
4052 0x22, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x80, 0xc0, 0x01, 0x00,
4053 0x00, 0x00, 0x00, 0x5c, 0x23, 0x80, 0x01, 0x00, 0xd4, 0x00, 0x3f, 0x41,
4054 0xe7, 0xe1, 0x01, 0x00, 0x04, 0x00, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4055 0x0b, 0x00, 0x00, 0xf2, 0x98, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a,
4056 0x99, 0x80, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x00, 0x98, 0x6c, 0x00, 0x00,
4057 0x20, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x11,
4058 0x8a, 0x30, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x11, 0xe4, 0xf5, 0x01, 0x00,
4059 0x2f, 0x00, 0x20, 0x47, 0xe7, 0xb5, 0x01, 0x00, 0xab, 0x8f, 0x23, 0x0b,
4060 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xe5, 0x91, 0x01, 0x00,
4061 0x00, 0x00, 0x00, 0x08, 0x80, 0xb0, 0x01, 0x00, 0xc1, 0x00, 0x00, 0x01,
4062 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0xa4, 0x40, 0x81, 0x32, 0x00, 0x00,
4063 0x00, 0x00, 0x00, 0x0b, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
4064 0x02, 0xd0, 0x01, 0x00, 0x58, 0x97, 0x00, 0x00, 0x2a, 0x40, 0x01, 0x00,
4065 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4066 0x62, 0xdd, 0x01, 0x00, 0xb2, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4067 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x05,
4068 0x48, 0x31, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x01, 0x80, 0xce, 0x01, 0x00,
4069 0xbe, 0x8f, 0x26, 0x11, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
4070 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0xb0, 0x01, 0x00,
4071 0x00, 0x00, 0x00, 0x01, 0x80, 0xc0, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40,
4072 0x99, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0xd0, 0x01, 0x00,
4073 0x58, 0x97, 0x00, 0x4c, 0x02, 0x30, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40,
4074 0x03, 0x98, 0x01, 0x00, 0xc8, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4075 0x30, 0x00, 0x2f, 0x08, 0x80, 0xb0, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x15,
4076 0xf4, 0xc9, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xe4, 0xcd, 0x01, 0x00,
4077 0xc1, 0x00, 0x00, 0x01, 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0xa4, 0x40,
4078 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0x20, 0x0b, 0xe5, 0x6d, 0x00, 0x00,
4079 0xc0, 0x00, 0x00, 0x40, 0x03, 0x98, 0x01, 0x00, 0x58, 0x97, 0x00, 0x00,
4080 0x2a, 0x40, 0x01, 0x00, 0xcd, 0x8f, 0x22, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4081 0xac, 0x00, 0x2f, 0x40, 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4082 0xe0, 0xc1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
4083 0xce, 0x8f, 0x00, 0x01, 0xe0, 0xd1, 0x00, 0x00, 0x98, 0x93, 0x00, 0x40,
4084 0x8d, 0x30, 0x01, 0x00, 0x80, 0x63, 0x00, 0xa6, 0x16, 0xb0, 0x01, 0x00,
4085 0x60, 0x97, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4086 0x42, 0xc9, 0x01, 0x00, 0xd6, 0x8f, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4087 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4088 0x62, 0xdd, 0x01, 0x00, 0xd3, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4089 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xfa, 0x96, 0x00, 0x5e,
4090 0x05, 0x10, 0x01, 0x00, 0xd9, 0x8f, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00,
4091 0x80, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x05,
4092 0x48, 0xb1, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00,
4093 0xdc, 0x8f, 0x00, 0x4a, 0x1f, 0x90, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4f,
4094 0x2b, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4095 0x04, 0x00, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4096 0x10, 0xb0, 0x01, 0x00, 0x24, 0x00, 0x2d, 0x15, 0x10, 0xc0, 0x01, 0x00,
4097 0x28, 0x00, 0x2d, 0xf0, 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x2d, 0xf0,
4098 0x26, 0xb0, 0x01, 0x00, 0x14, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00,
4099 0x00, 0x00, 0x00, 0x01, 0xe0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4100 0x32, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
4101 0x04, 0x00, 0x1f, 0x15, 0x1a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4102 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2a, 0xb0, 0x01, 0x00,
4103 0xb8, 0x96, 0x00, 0x40, 0x35, 0xb0, 0x00, 0x00, 0x2f, 0x00, 0x20, 0x40,
4104 0xe7, 0xb1, 0x01, 0x00, 0x26, 0x90, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00,
4105 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00, 0x24, 0x00, 0x20, 0x0b,
4106 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00,
4107 0x22, 0x00, 0x20, 0x06, 0xe4, 0xb1, 0x01, 0x00, 0xfa, 0x8f, 0x22, 0x5c,
4108 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
4109 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xfa, 0x8f, 0x22, 0x40,
4110 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
4111 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xf6, 0x8f, 0xa8, 0x40,
4112 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4113 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x14, 0x00, 0x00, 0x40,
4114 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0, 0x14, 0x6c, 0x00, 0x00,
4115 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00, 0x1f, 0x90, 0x22, 0x40,
4116 0xe3, 0x6d, 0x00, 0x00, 0x0d, 0x90, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4117 0x6d, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x54, 0x94, 0x00, 0x40,
4118 0x81, 0x32, 0x01, 0x00, 0x1a, 0x90, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00,
4119 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4120 0x62, 0xdd, 0x01, 0x00, 0x03, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4121 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x09, 0x90, 0x22, 0x41,
4122 0x19, 0x7c, 0x00, 0x00, 0xe1, 0x94, 0x00, 0x40, 0x11, 0x30, 0x01, 0x00,
4123 0x0a, 0x90, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
4124 0x81, 0x32, 0x01, 0x00, 0x0c, 0x90, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00,
4125 0x80, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x83, 0x00, 0x40,
4126 0x05, 0xb0, 0x00, 0x00, 0x6d, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4127 0x49, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
4128 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4129 0x10, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
4130 0x1c, 0xb0, 0x00, 0x00, 0x16, 0x90, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4131 0xe1, 0x94, 0x00, 0x40, 0x11, 0x30, 0x01, 0x00, 0x17, 0x90, 0x00, 0x05,
4132 0x48, 0xb1, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4133 0x19, 0x90, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40,
4134 0x81, 0x32, 0x01, 0x00, 0x2f, 0x83, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
4135 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4136 0x62, 0xdd, 0x01, 0x00, 0x1b, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4137 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4138 0x48, 0xb1, 0x01, 0x00, 0x22, 0x90, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4139 0xe1, 0x94, 0x00, 0x40, 0x11, 0x30, 0x01, 0x00, 0x23, 0x90, 0x00, 0x05,
4140 0x48, 0xb1, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4141 0x25, 0x90, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40,
4142 0x13, 0x30, 0x01, 0x00, 0xcd, 0x8b, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
4143 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0,
4144 0x14, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00,
4145 0x2f, 0x90, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
4146 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4147 0x2b, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
4148 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4149 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00, 0x33, 0x90, 0x22, 0x41,
4150 0x19, 0x7c, 0x00, 0x00, 0xe1, 0x94, 0x00, 0x40, 0x11, 0x30, 0x01, 0x00,
4151 0x34, 0x90, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
4152 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x2d, 0x0a, 0x84, 0xb0, 0x01, 0x00,
4153 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
4154 0x81, 0x32, 0x00, 0x00, 0x14, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
4155 0x3a, 0x90, 0x03, 0x1e, 0x80, 0x32, 0x00, 0x00, 0x3b, 0x90, 0x00, 0x41,
4156 0x87, 0xb0, 0x00, 0x00, 0x21, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
4157 0x26, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
4158 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
4159 0x40, 0x90, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40,
4160 0x13, 0x30, 0x01, 0x00, 0x43, 0x90, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
4161 0x80, 0x97, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
4162 0x19, 0x80, 0x01, 0x00, 0xc6, 0x8b, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00,
4163 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
4164 0x48, 0x6d, 0x00, 0x00, 0xba, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00,
4165 0x4b, 0x90, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x4a,
4166 0x19, 0x7c, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4167 0x2f, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xce, 0x97, 0x00, 0x40,
4168 0x13, 0x30, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4169 0xc4, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x05, 0x98, 0x00, 0xf0,
4170 0x84, 0x30, 0x01, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4171 0xcd, 0x8b, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40,
4172 0x13, 0x30, 0x01, 0x00, 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4173 0x2e, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x57, 0x90, 0x22, 0x40,
4174 0xe7, 0x6d, 0x00, 0x00, 0x32, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4175 0x62, 0x90, 0xa2, 0x40, 0xe5, 0x6d, 0x00, 0x00, 0xec, 0x95, 0x00, 0x40,
4176 0x81, 0x32, 0x01, 0x00, 0x24, 0x00, 0x20, 0x0b, 0xe0, 0xb1, 0x01, 0x00,
4177 0x28, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x20, 0x06,
4178 0xe4, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4179 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0,
4180 0x80, 0x32, 0x00, 0x00, 0x14, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00,
4181 0xcd, 0x8b, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40,
4182 0x13, 0x30, 0x01, 0x00, 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4183 0xec, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x97, 0x95, 0x00, 0x40,
4184 0x81, 0x32, 0x01, 0x00, 0x70, 0x90, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4185 0x00, 0x00, 0x00, 0x0b, 0x99, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x15,
4186 0x98, 0x50, 0x00, 0x00, 0x70, 0x90, 0x20, 0x01, 0x98, 0x6c, 0x00, 0x00,
4187 0x70, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46,
4188 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4189 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4190 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
4191 0x6d, 0x90, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4192 0x48, 0xb1, 0x01, 0x00, 0xac, 0x00, 0x2f, 0x00, 0x10, 0xb0, 0x01, 0x00,
4193 0x00, 0x00, 0x00, 0x01, 0xe0, 0xc1, 0x01, 0x00, 0x14, 0x00, 0x2f, 0x15,
4194 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0, 0x80, 0x32, 0x00, 0x00,
4195 0x00, 0x00, 0x00, 0x0a, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01,
4196 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x19, 0x90, 0x01, 0x00,
4197 0xe6, 0x8f, 0x22, 0x09, 0x80, 0x32, 0x00, 0x00, 0x80, 0x97, 0x00, 0x09,
4198 0x80, 0x30, 0x01, 0x00, 0xe6, 0x8f, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
4199 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4200 0x82, 0xb0, 0x01, 0x00, 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
4201 0x00, 0x00, 0x00, 0x4c, 0x43, 0xc1, 0x01, 0x00, 0x26, 0x96, 0x00, 0xf0,
4202 0x84, 0x30, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4203 0xc6, 0x8b, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x2c, 0x00, 0x20, 0x40,
4204 0xe7, 0xb1, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4205 0x2e, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf3,
4206 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4207 0xc6, 0x8b, 0x00, 0x42, 0x19, 0x80, 0x00, 0x00, 0x16, 0x96, 0x00, 0x40,
4208 0x81, 0x32, 0x01, 0x00, 0x55, 0x97, 0x00, 0x48, 0x95, 0x30, 0x01, 0x00,
4209 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4210 0x62, 0xdd, 0x01, 0x00, 0x8a, 0x90, 0xa8, 0x40, 0x13, 0x30, 0x00, 0x00,
4211 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x90, 0x00, 0x05,
4212 0x48, 0xb1, 0x00, 0x00, 0x8f, 0x90, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
4213 0x00, 0x00, 0x00, 0x00, 0x12, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40,
4214 0x43, 0x99, 0x01, 0x00, 0x14, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00,
4215 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0xf0,
4216 0x84, 0x30, 0x00, 0x00, 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
4217 0x26, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
4218 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
4219 0xad, 0x90, 0x00, 0x09, 0x00, 0xb0, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
4220 0x48, 0x6d, 0x00, 0x00, 0xc6, 0x8b, 0x87, 0x42, 0x19, 0x10, 0x00, 0x00,
4221 0x8b, 0x00, 0x2f, 0x47, 0x19, 0x80, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40,
4222 0xe7, 0x91, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00,
4223 0x2f, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xab, 0x90, 0x22, 0x47,
4224 0xe7, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4225 0x17, 0x94, 0x00, 0x40, 0xe7, 0x31, 0x01, 0x00, 0xab, 0x90, 0x22, 0x00,
4226 0x80, 0x32, 0x00, 0x00, 0xa6, 0x90, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00,
4227 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xab, 0x90, 0x00, 0x40,
4228 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4229 0x32, 0x00, 0x2d, 0xf2, 0x94, 0xb0, 0x01, 0x00, 0x9f, 0x95, 0x00, 0xf2,
4230 0x02, 0x30, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
4231 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0xac, 0x90, 0x00, 0x40,
4232 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
4233 0xb2, 0x90, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0xb1, 0x90, 0xa2, 0x42,
4234 0x19, 0x7c, 0x00, 0x00, 0xff, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4235 0xb2, 0x90, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x36, 0x96, 0x00, 0x40,
4236 0x81, 0x32, 0x01, 0x00, 0x51, 0x91, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4237 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4238 0x42, 0xc9, 0x01, 0x00, 0xba, 0x90, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4239 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4240 0x62, 0xdd, 0x01, 0x00, 0xb7, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4241 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x51, 0x91, 0x00, 0x05,
4242 0x48, 0xb1, 0x00, 0x00, 0xae, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4243 0xc1, 0x90, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0xc1, 0x90, 0xa2, 0x16,
4244 0x80, 0x32, 0x00, 0x00, 0x09, 0x97, 0x00, 0x4d, 0x81, 0x30, 0x01, 0x00,
4245 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40,
4246 0x81, 0xb2, 0x00, 0x00, 0x74, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4247 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4248 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x96, 0xb0, 0x01, 0x00,
4249 0xd2, 0x90, 0x22, 0x42, 0x96, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
4250 0x44, 0xc9, 0x01, 0x00, 0x64, 0x00, 0x68, 0x40, 0x97, 0x98, 0x01, 0x00,
4251 0x64, 0x00, 0x00, 0x4b, 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0xa6, 0x40,
4252 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00,
4253 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x70, 0x00, 0x00, 0x05,
4254 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4255 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xce, 0x90, 0xa8, 0x40,
4256 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4257 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
4258 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4259 0xd3, 0x90, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
4260 0x1c, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4261 0xd7, 0x90, 0x65, 0xf2, 0x12, 0x30, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42,
4262 0x13, 0xf0, 0x01, 0x00, 0xdc, 0x90, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
4263 0x27, 0x83, 0x75, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xd6, 0x90, 0x00, 0x40,
4264 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe7, 0x91, 0x01, 0x00,
4265 0x04, 0x00, 0x75, 0x09, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4266 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00,
4267 0x00, 0x00, 0x68, 0xa8, 0x97, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4268 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00,
4269 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4270 0x62, 0xb1, 0x01, 0x00, 0xe4, 0x90, 0xa8, 0x40, 0xe1, 0x31, 0x00, 0x00,
4271 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42,
4272 0x13, 0xf0, 0x01, 0x00, 0xe8, 0x90, 0x65, 0x05, 0x48, 0x31, 0x00, 0x00,
4273 0x3f, 0x00, 0x00, 0xf3, 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4274 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x75, 0x40, 0x81, 0xb2, 0x01, 0x00,
4275 0xf0, 0x90, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
4276 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
4277 0xee, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
4278 0x16, 0xb0, 0x01, 0x00, 0x00, 0x62, 0x00, 0x0b, 0x16, 0xdc, 0x01, 0x00,
4279 0x2f, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x47,
4280 0xe7, 0x7d, 0x00, 0x00, 0x17, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4281 0x0d, 0x91, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0x48, 0x96, 0x00, 0x5f,
4282 0x01, 0x10, 0x01, 0x00, 0xf4, 0x90, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00,
4283 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
4284 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4285 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4286 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4287 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0xfe, 0x90, 0xa8, 0x00,
4288 0xe0, 0x31, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4289 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x04, 0x80, 0x00, 0x03,
4290 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00,
4291 0x04, 0x00, 0x20, 0x31, 0x03, 0x6c, 0x00, 0x00, 0x9f, 0x95, 0x00, 0x52,
4292 0x95, 0x30, 0x01, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4293 0xf4, 0x90, 0x22, 0x41, 0x97, 0x50, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x03,
4294 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00,
4295 0x00, 0x00, 0x00, 0x5c, 0x01, 0x80, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b,
4296 0x02, 0xb0, 0x00, 0x00, 0xf4, 0x90, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
4297 0x60, 0x97, 0x00, 0x40, 0x03, 0x30, 0x01, 0x00, 0x17, 0x80, 0x00, 0x03,
4298 0x44, 0xc9, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x0c, 0x96, 0x88, 0x01, 0x00,
4299 0x00, 0x00, 0x63, 0x4c, 0x97, 0xf0, 0x01, 0x00, 0x04, 0x00, 0x20, 0x4d,
4300 0x97, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40, 0x97, 0x6c, 0x00, 0x00,
4301 0x10, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
4302 0xe1, 0xb1, 0x01, 0x00, 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00,
4303 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07,
4304 0x16, 0x88, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00,
4305 0x19, 0x91, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x0b,
4306 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x81, 0x01, 0x00,
4307 0x00, 0xb7, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x0b,
4308 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x81, 0x01, 0x00,
4309 0x10, 0x00, 0x10, 0x0f, 0x94, 0xf4, 0x01, 0x00, 0x93, 0x04, 0x00, 0x5f,
4310 0x95, 0x04, 0x01, 0x00, 0x70, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4311 0x27, 0x91, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0x23, 0x91, 0x46, 0x40,
4312 0x81, 0x32, 0x00, 0x00, 0x26, 0x91, 0xa2, 0x40, 0x31, 0x6f, 0x00, 0x00,
4313 0x04, 0x00, 0x1e, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x41,
4314 0x31, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
4315 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4316 0x0f, 0xb0, 0x01, 0x00, 0xa5, 0x94, 0x00, 0x41, 0x81, 0x30, 0x01, 0x00,
4317 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xae, 0x94, 0x00, 0x40,
4318 0x81, 0x32, 0x01, 0x00, 0x3a, 0x91, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4319 0x3a, 0x91, 0xa2, 0x16, 0x80, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
4320 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00,
4321 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x32, 0x91, 0x37, 0x5c,
4322 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00,
4323 0x37, 0x91, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5c,
4324 0x77, 0x7d, 0x00, 0x00, 0x33, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4325 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00, 0x37, 0x91, 0xa8, 0x40,
4326 0x81, 0x32, 0x00, 0x00, 0xed, 0x87, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00,
4327 0x74, 0x00, 0x22, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4328 0xe1, 0xb1, 0x01, 0x00, 0x55, 0x97, 0x00, 0x4a, 0x95, 0x30, 0x01, 0x00,
4329 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x16, 0x96, 0x00, 0x5c,
4330 0x1f, 0x10, 0x01, 0x00, 0xc1, 0x90, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4331 0x04, 0x00, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x40,
4332 0x47, 0x99, 0x01, 0x00, 0x4e, 0x91, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
4333 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x17, 0x94, 0x00, 0x40,
4334 0xe7, 0x31, 0x01, 0x00, 0x4e, 0x91, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00,
4335 0x49, 0x91, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
4336 0x81, 0x32, 0x01, 0x00, 0x4e, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4337 0x30, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x32, 0x00, 0x2d, 0xf2,
4338 0x94, 0xb0, 0x01, 0x00, 0x9f, 0x95, 0x00, 0xf2, 0x02, 0x30, 0x01, 0x00,
4339 0xa6, 0x95, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4340 0x48, 0xb1, 0x01, 0x00, 0x55, 0x97, 0x00, 0x48, 0x95, 0x30, 0x01, 0x00,
4341 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x16, 0x96, 0x00, 0x5c,
4342 0x1f, 0x10, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
4343 0x55, 0x91, 0x87, 0x42, 0x19, 0x10, 0x00, 0x00, 0x8b, 0x00, 0x2f, 0x47,
4344 0x19, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0x91, 0x01, 0x00,
4345 0x80, 0x97, 0x00, 0x42, 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40,
4346 0x81, 0xb2, 0x00, 0x00, 0x16, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4347 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0xc6, 0x8b, 0x00, 0x5c,
4348 0x1f, 0x90, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4349 0x04, 0x00, 0xa2, 0xf0, 0x80, 0x32, 0x00, 0x00, 0xba, 0x00, 0x20, 0x40,
4350 0xe5, 0xb1, 0x01, 0x00, 0xce, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4351 0xc0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xc4, 0x00, 0x2d, 0xf0,
4352 0x82, 0xb0, 0x01, 0x00, 0x05, 0x98, 0x00, 0xf0, 0x84, 0x30, 0x01, 0x00,
4353 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x80, 0x97, 0x00, 0x45,
4354 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4355 0x09, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40,
4356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4357 0xae, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x6d, 0x91, 0xa2, 0x08,
4358 0x80, 0x32, 0x00, 0x00, 0x6d, 0x91, 0xa2, 0x16, 0x80, 0x32, 0x00, 0x00,
4359 0x09, 0x97, 0x00, 0x47, 0x80, 0x30, 0x01, 0x00, 0x00, 0x82, 0x00, 0x02,
4360 0x04, 0xdc, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4361 0x10, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0xe1, 0x00, 0xa6,
4362 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
4363 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x07,
4364 0x84, 0x94, 0x01, 0x00, 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00,
4365 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x40,
4366 0x47, 0x99, 0x01, 0x00, 0xc3, 0x94, 0x00, 0x41, 0xe7, 0x41, 0x01, 0x00,
4367 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
4368 0x48, 0x6d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4369 0x04, 0x00, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00, 0xec, 0x95, 0x00, 0x40,
4370 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0xa3, 0x0a, 0x0c, 0x6c, 0x00, 0x00,
4371 0x97, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4372 0x2c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0xb0, 0x01, 0x00,
4373 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x0a,
4374 0x2c, 0x50, 0x00, 0x00, 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4375 0x04, 0x00, 0xa2, 0xf0, 0x80, 0x32, 0x00, 0x00, 0x9b, 0x97, 0x00, 0x06,
4376 0x04, 0x30, 0x01, 0x00, 0x8a, 0x91, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00,
4377 0x88, 0x91, 0x84, 0x48, 0x1f, 0x10, 0x00, 0x00, 0xac, 0x00, 0x00, 0x40,
4378 0x47, 0x99, 0x01, 0x00, 0x8a, 0x91, 0x00, 0x0a, 0xe0, 0xc1, 0x00, 0x00,
4379 0x00, 0x00, 0x00, 0x0a, 0x02, 0xb0, 0x01, 0x00, 0x98, 0x93, 0x00, 0x01,
4380 0x8c, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4381 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x8b, 0x91, 0xa8, 0x40,
4382 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4383 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
4384 0x10, 0xc0, 0x01, 0x00, 0x98, 0x91, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
4385 0x73, 0x96, 0x00, 0x45, 0x1f, 0x00, 0x01, 0x00, 0x83, 0x91, 0x22, 0x5c,
4386 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
4387 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x94, 0x91, 0xa8, 0x5c,
4388 0x1f, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4389 0x83, 0x91, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
4390 0x1b, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x2d, 0x40, 0x85, 0xb0, 0x01, 0x00,
4391 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4392 0x05, 0xb0, 0x01, 0x00, 0x26, 0x96, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00,
4393 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4394 0x62, 0xdd, 0x01, 0x00, 0x9e, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4395 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4396 0x48, 0xb1, 0x01, 0x00, 0xa4, 0x91, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00,
4397 0x80, 0x97, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00, 0xa8, 0x91, 0x22, 0x44,
4398 0x19, 0x7c, 0x00, 0x00, 0x80, 0x97, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00,
4399 0xa8, 0x91, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
4400 0x19, 0x80, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00,
4401 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0xb7, 0x91, 0x22, 0x4a,
4402 0x1f, 0x7c, 0x00, 0x00, 0xaf, 0x91, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
4403 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4404 0xe7, 0xb1, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4405 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0xb3, 0x91, 0x22, 0x42,
4406 0x19, 0x7c, 0x00, 0x00, 0x36, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4407 0xb4, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xff, 0x95, 0x00, 0x40,
4408 0x81, 0x32, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00,
4409 0x32, 0x00, 0x2a, 0x15, 0xe4, 0xb1, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x16,
4410 0xe4, 0xb1, 0x00, 0x00, 0xcd, 0x91, 0x22, 0x16, 0x02, 0x30, 0x00, 0x00,
4411 0x04, 0x00, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
4412 0x2a, 0xb0, 0x01, 0x00, 0x25, 0x98, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00,
4413 0xbd, 0x91, 0xa2, 0x40, 0x11, 0x6c, 0x00, 0x00, 0xce, 0x91, 0x22, 0x40,
4414 0x2d, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
4415 0x04, 0x00, 0x22, 0x44, 0x1f, 0x7c, 0x00, 0x00, 0xac, 0x00, 0x00, 0x40,
4416 0x47, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2b, 0x01, 0xe0, 0xc1, 0x01, 0x00,
4417 0x00, 0x2b, 0x00, 0xa6, 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4418 0xe0, 0xd1, 0x01, 0x00, 0x58, 0x97, 0x00, 0x08, 0x80, 0x30, 0x01, 0x00,
4419 0xc6, 0x91, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00, 0x79, 0x97, 0x00, 0x43,
4420 0x61, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4421 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xc7, 0x91, 0xa8, 0x40,
4422 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4423 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x60, 0x97, 0x00, 0x07,
4424 0x16, 0x14, 0x01, 0x00, 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00,
4425 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4426 0xe7, 0xb1, 0x01, 0x00, 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4427 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x15,
4428 0x1a, 0x50, 0x00, 0x00, 0xdc, 0x91, 0x20, 0x16, 0x1a, 0x6c, 0x00, 0x00,
4429 0x04, 0x00, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03,
4430 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x22, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4431 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4432 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4433 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0xd9, 0x91, 0xa8, 0x46,
4434 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4435 0x00, 0x00, 0x00, 0x00, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
4436 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x2a, 0xb0, 0x01, 0x00,
4437 0x00, 0x00, 0x00, 0x0a, 0x2c, 0xd0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x16,
4438 0x80, 0x32, 0x00, 0x00, 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4439 0x04, 0x00, 0xa2, 0xf0, 0x80, 0x32, 0x00, 0x00, 0xac, 0x00, 0x2f, 0x40,
4440 0x23, 0xb0, 0x01, 0x00, 0xe6, 0x91, 0x84, 0x45, 0x1f, 0x10, 0x00, 0x00,
4441 0xe7, 0x91, 0x00, 0x0a, 0xe0, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
4442 0x02, 0xb0, 0x01, 0x00, 0xb8, 0x96, 0x00, 0x40, 0x35, 0xb0, 0x00, 0x00,
4443 0x04, 0x00, 0xa2, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
4444 0x42, 0xc9, 0x01, 0x00, 0xf0, 0x91, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4445 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4446 0x62, 0xdd, 0x01, 0x00, 0xec, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4447 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4448 0x48, 0xb1, 0x01, 0x00, 0x00, 0x92, 0xa2, 0x02, 0x1a, 0x50, 0x00, 0x00,
4449 0x05, 0x92, 0x22, 0x40, 0x2d, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
4450 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4451 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4452 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0xe0, 0x8d, 0x01, 0x00,
4453 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4454 0x62, 0xb1, 0x01, 0x00, 0xf8, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4455 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4456 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4457 0x10, 0x00, 0x00, 0xf0, 0x10, 0xc8, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
4458 0x1b, 0x98, 0x01, 0x00, 0x05, 0x92, 0x00, 0x5c, 0x11, 0x80, 0x00, 0x00,
4459 0x04, 0x00, 0xa2, 0x5f, 0x1b, 0x7c, 0x00, 0x00, 0xff, 0x07, 0x00, 0x08,
4460 0x98, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x98, 0xc0, 0x01, 0x00,
4461 0x04, 0x00, 0x20, 0x0b, 0x99, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
4462 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40, 0x23, 0x6c, 0x00, 0x00,
4463 0x04, 0x00, 0xa3, 0x43, 0x23, 0x6c, 0x00, 0x00, 0xe1, 0x94, 0x00, 0x40,
4464 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4465 0x0b, 0x92, 0x23, 0x0d, 0x2c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4466 0x1f, 0x90, 0x01, 0x00, 0x13, 0x92, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
4467 0x70, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x13, 0x92, 0x22, 0x40,
4468 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4469 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x0f, 0x92, 0xa8, 0x46,
4470 0x1f, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4471 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x2d, 0x40,
4472 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00,
4473 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00, 0x26, 0x96, 0x00, 0x41,
4474 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4475 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x18, 0x92, 0xa8, 0x40,
4476 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4477 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x1e, 0x92, 0x22, 0x09,
4478 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
4479 0x22, 0x92, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00, 0x80, 0x97, 0x00, 0x4f,
4480 0x81, 0x30, 0x01, 0x00, 0x22, 0x92, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00,
4481 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08,
4482 0x00, 0x8c, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
4483 0x38, 0x92, 0x22, 0x4a, 0x1f, 0x7c, 0x00, 0x00, 0x29, 0x92, 0xa2, 0x16,
4484 0x02, 0x30, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4485 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40,
4486 0x81, 0xb2, 0x00, 0x00, 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00,
4487 0x34, 0x92, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x2d, 0x92, 0xa2, 0xf3,
4488 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x85, 0xb0, 0x01, 0x00,
4489 0x00, 0x00, 0x00, 0x41, 0x85, 0xd0, 0x01, 0x00, 0xd4, 0x00, 0x3e, 0x41,
4490 0x85, 0xe0, 0x01, 0x00, 0x31, 0x92, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00,
4491 0x00, 0x00, 0x00, 0x5a, 0x11, 0x90, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x08,
4492 0xe4, 0xf5, 0x01, 0x00, 0x36, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4493 0x35, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xff, 0x95, 0x00, 0x40,
4494 0x81, 0x32, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00,
4495 0x32, 0x00, 0x2a, 0x15, 0xe4, 0xb1, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x16,
4496 0xe4, 0xb1, 0x00, 0x00, 0x3b, 0x92, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
4497 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x94, 0x92, 0x00, 0x40,
4498 0x81, 0xb2, 0x00, 0x00, 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00,
4499 0x4e, 0x92, 0x22, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa0, 0x91,
4500 0x03, 0x6c, 0x00, 0x00, 0x48, 0x92, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4501 0x41, 0x92, 0xa2, 0xf3, 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5,
4502 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x85, 0xd0, 0x01, 0x00,
4503 0xd4, 0x00, 0x3e, 0x41, 0x85, 0xe0, 0x01, 0x00, 0x45, 0x92, 0x22, 0x40,
4504 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x11, 0x90, 0x01, 0x00,
4505 0x0b, 0x00, 0x00, 0x08, 0xe4, 0xf5, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40,
4506 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x08, 0x8a, 0x30, 0x01, 0x00,
4507 0x58, 0x01, 0x2d, 0x00, 0x2a, 0xd0, 0x01, 0x00, 0x60, 0x01, 0x2d, 0xf0,
4508 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x2c, 0xb0, 0x01, 0x00,
4509 0x00, 0x00, 0x00, 0x16, 0x80, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x27, 0x40,
4510 0x11, 0x6c, 0x00, 0x00, 0x84, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4511 0x04, 0x00, 0xa3, 0x91, 0x03, 0x6c, 0x00, 0x00, 0x25, 0x98, 0x00, 0x41,
4512 0x95, 0x30, 0x01, 0x00, 0x57, 0x92, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4513 0x57, 0x92, 0xa2, 0x16, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4514 0x97, 0xb0, 0x01, 0x00, 0x55, 0x92, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00,
4515 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b,
4516 0x02, 0xb0, 0x00, 0x00, 0x94, 0x92, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
4517 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00, 0x04, 0x00, 0x22, 0x44,
4518 0x1f, 0x7c, 0x00, 0x00, 0xac, 0x00, 0x2f, 0x01, 0x14, 0xb0, 0x01, 0x00,
4519 0xb0, 0x00, 0x2b, 0x01, 0xe0, 0xc1, 0x01, 0x00, 0x00, 0x2b, 0x00, 0xa6,
4520 0x16, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4521 0x00, 0x00, 0x00, 0x01, 0xe0, 0xd1, 0x01, 0x00, 0x6a, 0x92, 0x23, 0x0d,
4522 0x02, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4523 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4524 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4525 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x63, 0x92, 0xa8, 0x00,
4526 0xe0, 0x31, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4527 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
4528 0x42, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0, 0x22, 0xc8, 0x01, 0x00,
4529 0x00, 0x00, 0x00, 0x5c, 0x23, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4530 0x84, 0xb0, 0x01, 0x00, 0x6d, 0x92, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00,
4531 0x00, 0x00, 0x00, 0x0d, 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
4532 0x80, 0xb0, 0x01, 0x00, 0x72, 0x92, 0x22, 0x40, 0x1b, 0x6c, 0x00, 0x00,
4533 0x58, 0x97, 0x00, 0x01, 0x84, 0x50, 0x01, 0x00, 0x7b, 0x92, 0x22, 0x40,
4534 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc0, 0x01, 0x00,
4535 0x10, 0x80, 0x00, 0x10, 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
4536 0x43, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
4537 0x20, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
4538 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4539 0xa0, 0x00, 0x00, 0xa1, 0x62, 0xdd, 0x01, 0x00, 0x78, 0x92, 0xa8, 0x11,
4540 0xe0, 0x31, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40, 0x23, 0x6c, 0x00, 0x00,
4541 0x8a, 0x92, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00, 0x7e, 0x92, 0x23, 0x0d,
4542 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xb0, 0x01, 0x00,
4543 0x00, 0x00, 0x00, 0x01, 0x84, 0xd0, 0x01, 0x00, 0x83, 0x92, 0x22, 0x40,
4544 0x1b, 0x6c, 0x00, 0x00, 0x79, 0x97, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00,
4545 0x8a, 0x92, 0x22, 0x40, 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
4546 0x12, 0xc0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10, 0x46, 0xc9, 0x01, 0x00,
4547 0x00, 0x00, 0x00, 0x4f, 0x43, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4548 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00,
4549 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa1,
4550 0x62, 0xdd, 0x01, 0x00, 0x88, 0x92, 0xa8, 0x11, 0xe0, 0x31, 0x00, 0x00,
4551 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4552 0x62, 0xdd, 0x01, 0x00, 0x8b, 0x92, 0xa8, 0x0a, 0x02, 0x30, 0x00, 0x00,
4553 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x05,
4554 0x48, 0x31, 0x01, 0x00, 0x92, 0x92, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00,
4555 0xff, 0x07, 0x00, 0x11, 0x00, 0x8c, 0x01, 0x00, 0xc3, 0x94, 0x00, 0x40,
4556 0x81, 0x32, 0x01, 0x00, 0x60, 0x97, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00,
4557 0xfa, 0x96, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4558 0xe7, 0xb1, 0x01, 0x00, 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4559 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4560 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
4561 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4562 0x8e, 0xb0, 0x01, 0x00, 0xe6, 0x95, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
4563 0x04, 0x00, 0x0c, 0x47, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4564 0x85, 0xb0, 0x01, 0x00, 0x26, 0x96, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00,
4565 0x97, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0x20, 0x91,
4566 0x03, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
4567 0xa8, 0x92, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
4568 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4569 0xa4, 0x92, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
4570 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4571 0xaa, 0x92, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40,
4572 0x13, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
4573 0x00, 0x00, 0x00, 0x15, 0x1a, 0xd0, 0x01, 0x00, 0xb1, 0x92, 0xa2, 0x41,
4574 0x19, 0x7c, 0x00, 0x00, 0x25, 0x98, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00,
4575 0x00, 0x00, 0x00, 0x16, 0x80, 0xb2, 0x01, 0x00, 0xba, 0x92, 0x27, 0x08,
4576 0x80, 0x32, 0x00, 0x00, 0xbd, 0x91, 0x00, 0x00, 0x2a, 0xc0, 0x00, 0x00,
4577 0x25, 0x98, 0x00, 0x41, 0x95, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
4578 0x80, 0xb2, 0x01, 0x00, 0xb5, 0x92, 0x27, 0x08, 0x80, 0x32, 0x00, 0x00,
4579 0x57, 0x92, 0x00, 0x00, 0x2a, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4580 0x97, 0xb0, 0x01, 0x00, 0xb8, 0x92, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00,
4581 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b,
4582 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4583 0xc6, 0x8b, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x09, 0x97, 0x00, 0x3a,
4584 0x81, 0x30, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4585 0x04, 0x00, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00, 0xbf, 0x92, 0x00, 0x4a,
4586 0x1f, 0x90, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4587 0x04, 0x00, 0xa2, 0x4f, 0x2b, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x44,
4588 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00,
4589 0xf9, 0x94, 0x00, 0x00, 0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
4590 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
4591 0x9b, 0x97, 0x00, 0x06, 0x04, 0x30, 0x01, 0x00, 0xcc, 0x92, 0xa2, 0x44,
4592 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
4593 0x00, 0x00, 0x00, 0x0a, 0x2c, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
4594 0x02, 0xb0, 0x01, 0x00, 0x98, 0x93, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00,
4595 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00, 0xd3, 0x92, 0x22, 0x40,
4596 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4597 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xcf, 0x92, 0xa8, 0x40,
4598 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4599 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
4600 0x10, 0xc0, 0x01, 0x00, 0xdc, 0x92, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
4601 0x73, 0x96, 0x00, 0x45, 0x1f, 0x00, 0x01, 0x00, 0xc5, 0x92, 0x22, 0x5c,
4602 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
4603 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xd8, 0x92, 0xa8, 0x5c,
4604 0x1f, 0x00, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4605 0xc5, 0x92, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x08, 0x00, 0x2d, 0x40,
4606 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00,
4607 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00, 0x26, 0x96, 0x00, 0x41,
4608 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4609 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xe1, 0x92, 0xa8, 0x40,
4610 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4611 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0xe7, 0x92, 0x22, 0x09,
4612 0x80, 0x30, 0x00, 0x00, 0x80, 0x97, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
4613 0xea, 0x92, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00, 0x80, 0x97, 0x00, 0x4f,
4614 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00,
4615 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
4616 0x81, 0x32, 0x00, 0x00, 0xf9, 0x92, 0x22, 0x4a, 0x1f, 0x7c, 0x00, 0x00,
4617 0xf1, 0x92, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
4618 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4619 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2d, 0x00, 0x2d, 0x08,
4620 0x2a, 0xb0, 0x01, 0x00, 0xf5, 0x92, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4621 0x36, 0x96, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xf6, 0x92, 0x00, 0x40,
4622 0x81, 0xb2, 0x00, 0x00, 0xff, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4623 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00, 0x32, 0x00, 0x2a, 0x15,
4624 0xe4, 0xb1, 0x01, 0x00, 0xc6, 0x8b, 0x00, 0x16, 0xe4, 0xb1, 0x00, 0x00,
4625 0xb8, 0x91, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
4626 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4627 0xcd, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x22, 0x41,
4628 0x19, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4f, 0x2b, 0x7c, 0x00, 0x00,
4629 0x04, 0x00, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x45,
4630 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00,
4631 0xf9, 0x94, 0x00, 0x4a, 0x1f, 0x10, 0x01, 0x00, 0xd0, 0x91, 0x00, 0x10,
4632 0x32, 0xb0, 0x00, 0x00, 0x8a, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4633 0x08, 0x93, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
4634 0x81, 0x32, 0x01, 0x00, 0x0b, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4635 0x9f, 0x95, 0x00, 0x15, 0x94, 0x30, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b,
4636 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4637 0x0d, 0x93, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x09, 0x97, 0x00, 0x3a,
4638 0x81, 0x30, 0x01, 0x00, 0x80, 0x97, 0x00, 0x45, 0x81, 0x30, 0x01, 0x00,
4639 0xc6, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x62, 0x90, 0x00, 0x45,
4640 0x1f, 0x90, 0x00, 0x00, 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4641 0x04, 0x00, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00, 0xec, 0x95, 0x00, 0x40,
4642 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0xa3, 0x0a, 0x0c, 0x6c, 0x00, 0x00,
4643 0x97, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd0, 0x91, 0x00, 0x01,
4644 0x2c, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4645 0x04, 0x00, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00, 0xae, 0x94, 0x00, 0x40,
4646 0x81, 0x32, 0x01, 0x00, 0x26, 0x93, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4647 0x26, 0x93, 0xa2, 0x16, 0x80, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
4648 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00,
4649 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x1e, 0x93, 0x37, 0x5c,
4650 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00,
4651 0x23, 0x93, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5c,
4652 0x77, 0x7d, 0x00, 0x00, 0x1f, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4653 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00, 0x23, 0x93, 0xa8, 0x40,
4654 0x81, 0x32, 0x00, 0x00, 0xed, 0x87, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00,
4655 0x58, 0x01, 0x20, 0x08, 0xe0, 0xb1, 0x01, 0x00, 0x60, 0x01, 0x20, 0x16,
4656 0xe0, 0xb1, 0x01, 0x00, 0xec, 0x95, 0x00, 0x47, 0x1f, 0x10, 0x01, 0x00,
4657 0x04, 0x00, 0xa3, 0x0a, 0x0c, 0x6c, 0x00, 0x00, 0x97, 0x95, 0x00, 0x40,
4658 0x81, 0x32, 0x01, 0x00, 0xd0, 0x91, 0x00, 0x01, 0x2c, 0xb0, 0x00, 0x00,
4659 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x47,
4660 0x1f, 0x7c, 0x00, 0x00, 0xae, 0x94, 0x00, 0x47, 0x1f, 0x10, 0x01, 0x00,
4661 0x3d, 0x93, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x3d, 0x93, 0xa2, 0x16,
4662 0x80, 0x32, 0x00, 0x00, 0x39, 0x93, 0xa2, 0x42, 0x19, 0x7c, 0x00, 0x00,
4663 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40,
4664 0x47, 0x99, 0x01, 0x00, 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
4665 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x9f, 0x95, 0x00, 0x15,
4666 0x94, 0x30, 0x01, 0x00, 0xa6, 0x95, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
4667 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x36, 0x96, 0x00, 0x40,
4668 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x19, 0x90, 0x01, 0x00,
4669 0x09, 0x97, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0xed, 0x87, 0x00, 0x40,
4670 0x81, 0xb2, 0x00, 0x00, 0x58, 0x01, 0x20, 0x08, 0xe0, 0xb1, 0x01, 0x00,
4671 0x60, 0x01, 0x20, 0x16, 0xe0, 0xb1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x4f,
4672 0x2b, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4673 0x04, 0x00, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0xf9, 0x94, 0x00, 0x10,
4674 0x32, 0x30, 0x01, 0x00, 0xd0, 0x91, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
4675 0xae, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x52, 0x93, 0xa2, 0x08,
4676 0x80, 0x32, 0x00, 0x00, 0x52, 0x93, 0xa2, 0x16, 0x80, 0x32, 0x00, 0x00,
4677 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
4678 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00,
4679 0x4a, 0x93, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b,
4680 0x62, 0xb1, 0x01, 0x00, 0x4f, 0x93, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
4681 0x04, 0x00, 0xa2, 0x5c, 0x77, 0x7d, 0x00, 0x00, 0x4b, 0x93, 0x00, 0x40,
4682 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00,
4683 0x4f, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xed, 0x87, 0x17, 0x40,
4684 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4685 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40,
4686 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00,
4687 0x00, 0x00, 0x00, 0xf0, 0x8e, 0xb0, 0x01, 0x00, 0xe6, 0x95, 0x00, 0x40,
4688 0x13, 0x30, 0x01, 0x00, 0x04, 0x00, 0x0c, 0x47, 0x80, 0x32, 0x00, 0x00,
4689 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x26, 0x96, 0x00, 0x41,
4690 0x87, 0x30, 0x01, 0x00, 0x97, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4691 0x04, 0x00, 0xa0, 0x91, 0x03, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
4692 0x42, 0xc9, 0x01, 0x00, 0x64, 0x93, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4693 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4694 0x62, 0xdd, 0x01, 0x00, 0x60, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4695 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4696 0x48, 0xb1, 0x01, 0x00, 0x84, 0x8f, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00,
4697 0x80, 0x97, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00, 0x84, 0x8f, 0x00, 0x40,
4698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00,
4699 0x04, 0x00, 0xa2, 0x4f, 0x2b, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x45,
4700 0x1f, 0x7c, 0x00, 0x00, 0x14, 0x00, 0x2d, 0x45, 0x1f, 0x90, 0x01, 0x00,
4701 0x04, 0x00, 0xa2, 0xf0, 0x14, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa0, 0x01,
4702 0x14, 0x6c, 0x00, 0x00, 0xdc, 0x8f, 0x00, 0x44, 0x19, 0x90, 0x00, 0x00,
4703 0x04, 0x00, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00, 0x72, 0x93, 0xa2, 0x41,
4704 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x1f, 0x90, 0x01, 0x00,
4705 0x77, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x48,
4706 0x1f, 0x7c, 0x00, 0x00, 0xec, 0x95, 0x00, 0x4a, 0x1f, 0x10, 0x01, 0x00,
4707 0x04, 0x00, 0xa3, 0x0a, 0x0c, 0x6c, 0x00, 0x00, 0x97, 0x95, 0x00, 0x40,
4708 0x81, 0x32, 0x01, 0x00, 0xd0, 0x91, 0x00, 0x01, 0x2c, 0xb0, 0x00, 0x00,
4709 0x04, 0x00, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4f,
4710 0x2b, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4711 0x04, 0x00, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0xf9, 0x94, 0x00, 0x40,
4712 0x81, 0x32, 0x01, 0x00, 0xd0, 0x91, 0x00, 0x10, 0x32, 0xb0, 0x00, 0x00,
4713 0x8b, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x46,
4714 0xe7, 0x7d, 0x00, 0x00, 0x62, 0x90, 0x00, 0x45, 0x1f, 0x90, 0x00, 0x00,
4715 0x00, 0x00, 0x00, 0x41, 0x37, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
4716 0x33, 0xc3, 0x01, 0x00, 0x36, 0x00, 0x00, 0x01, 0x02, 0xcc, 0x01, 0x00,
4717 0x00, 0x00, 0xd2, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x86, 0x93, 0x85, 0x17,
4718 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x48, 0x03, 0xd0, 0x00, 0x00,
4719 0x88, 0x93, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x4c,
4720 0x03, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x34, 0xc3, 0x01, 0x00,
4721 0x40, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
4722 0xf0, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
4723 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x12,
4724 0xf0, 0xb1, 0x01, 0x00, 0xcb, 0x94, 0x00, 0x41, 0xe1, 0x31, 0x01, 0x00,
4725 0x00, 0x80, 0x00, 0x43, 0x44, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40,
4726 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00,
4727 0x00, 0x00, 0x00, 0x49, 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x03,
4728 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4729 0x00, 0x00, 0x00, 0x43, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
4730 0x81, 0xb2, 0x00, 0x00, 0x95, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4731 0x2d, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0xa5,
4732 0x8a, 0x30, 0x01, 0x00, 0xba, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00,
4733 0xb0, 0x00, 0x2f, 0x01, 0x8c, 0xd0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0xf0,
4734 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xe0, 0xc1, 0x01, 0x00,
4735 0xac, 0x00, 0x2f, 0x40, 0x13, 0xb0, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0x01,
4736 0xe0, 0xc1, 0x01, 0x00, 0xa3, 0x93, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00,
4737 0x04, 0x00, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00, 0x2f, 0x98, 0x00, 0x40,
4738 0x81, 0x32, 0x01, 0x00, 0xa5, 0x93, 0x22, 0x47, 0x19, 0x7c, 0x00, 0x00,
4739 0x00, 0x00, 0x00, 0x5f, 0x13, 0x90, 0x01, 0x00, 0xce, 0x97, 0x00, 0x47,
4740 0x19, 0x10, 0x01, 0x00, 0xc0, 0x00, 0x2d, 0x44, 0x1f, 0x90, 0x01, 0x00,
4741 0xc4, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x05, 0x98, 0x00, 0xf0,
4742 0x84, 0xb0, 0x00, 0x00, 0x90, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4743 0xba, 0x93, 0xa2, 0x4b, 0x1f, 0x7c, 0x00, 0x00, 0x0f, 0x94, 0xa2, 0x4c,
4744 0x1f, 0x7c, 0x00, 0x00, 0xba, 0x93, 0x1f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
4745 0xbd, 0x93, 0xa2, 0x01, 0x80, 0x32, 0x00, 0x00, 0xa8, 0x00, 0x2d, 0x46,
4746 0x8f, 0xb0, 0x01, 0x00, 0xb3, 0x93, 0x1f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
4747 0xb4, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xb5, 0x93, 0x22, 0xf0,
4748 0x3a, 0x6c, 0x00, 0x00, 0x0c, 0x94, 0x1f, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
4749 0x00, 0x00, 0xa2, 0x40, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4f,
4750 0x8f, 0xb0, 0x01, 0x00, 0x8a, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4751 0x0d, 0x94, 0x20, 0x42, 0xe7, 0x6d, 0x00, 0x00, 0xb9, 0x93, 0x22, 0x40,
4752 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x8f, 0xb0, 0x01, 0x00,
4753 0x00, 0x00, 0x80, 0x58, 0x8f, 0xb0, 0x01, 0x00, 0xbc, 0x93, 0x22, 0x40,
4754 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x8f, 0xb0, 0x01, 0x00,
4755 0x00, 0x00, 0x80, 0x5b, 0x8f, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x00, 0x40,
4756 0x43, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
4757 0xc1, 0x93, 0xa2, 0x42, 0x24, 0x6c, 0x00, 0x00, 0xcc, 0x93, 0x23, 0xf0,
4758 0x02, 0x6c, 0x00, 0x00, 0xb0, 0x00, 0x00, 0xa1, 0x80, 0xce, 0x01, 0x00,
4759 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xc9, 0x93, 0xa2, 0xf0,
4760 0x80, 0x32, 0x00, 0x00, 0x0e, 0x94, 0xa2, 0x42, 0x24, 0x6c, 0x00, 0x00,
4761 0x0e, 0x94, 0xa2, 0x41, 0x03, 0x6c, 0x00, 0x00, 0xc8, 0x93, 0xa2, 0x40,
4762 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x51, 0x8f, 0xb0, 0x01, 0x00,
4763 0x00, 0x00, 0x80, 0x52, 0x8f, 0xb0, 0x01, 0x00, 0x0e, 0x94, 0x1f, 0x12,
4764 0x84, 0x50, 0x00, 0x00, 0x0e, 0x94, 0xa0, 0x01, 0x84, 0x6c, 0x00, 0x00,
4765 0xba, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40,
4766 0x43, 0x99, 0x01, 0x00, 0xf7, 0x93, 0xa2, 0x46, 0xe7, 0x7d, 0x00, 0x00,
4767 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xe9, 0x93, 0x22, 0xf0,
4768 0x14, 0x30, 0x00, 0x00, 0xd5, 0x93, 0x20, 0x0a, 0x02, 0x6c, 0x00, 0x00,
4769 0xe6, 0x93, 0x03, 0x1e, 0x80, 0x32, 0x00, 0x00, 0xd4, 0x93, 0xa2, 0x40,
4770 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x44, 0x8f, 0xb0, 0x01, 0x00,
4771 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00, 0xda, 0x93, 0x22, 0x0a,
4772 0x02, 0x6c, 0x00, 0x00, 0xdd, 0x93, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4773 0xd9, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x55,
4774 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x56, 0x8f, 0xb0, 0x01, 0x00,
4775 0xdc, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43,
4776 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00,
4777 0x00, 0x00, 0x00, 0x01, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
4778 0x82, 0xd0, 0x01, 0x00, 0xe3, 0x93, 0x20, 0x91, 0x83, 0x6c, 0x00, 0x00,
4779 0xe2, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x80, 0x40,
4780 0x8f, 0x98, 0x01, 0x00, 0x27, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4781 0xe5, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x40,
4782 0x8f, 0x98, 0x01, 0x00, 0x20, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4783 0xe8, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x22, 0x00, 0x80, 0x40,
4784 0x8f, 0x98, 0x01, 0x00, 0x23, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4785 0x88, 0x00, 0x2d, 0x44, 0x8f, 0xb0, 0x01, 0x00, 0xf2, 0x93, 0xa2, 0x41,
4786 0x19, 0x7c, 0x00, 0x00, 0xef, 0x93, 0xa2, 0x43, 0x3d, 0x7c, 0x00, 0x00,
4787 0xef, 0x93, 0xa2, 0xf2, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40,
4788 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00,
4789 0xf1, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43,
4790 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00,
4791 0xef, 0x93, 0xa0, 0x91, 0x03, 0x6c, 0x00, 0x00, 0xed, 0x93, 0x22, 0x43,
4792 0x3d, 0x7c, 0x00, 0x00, 0xf6, 0x93, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
4793 0x28, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x29, 0x00, 0x80, 0x40,
4794 0x8f, 0x98, 0x01, 0x00, 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4795 0x00, 0x94, 0xa2, 0xf0, 0x14, 0x30, 0x00, 0x00, 0x88, 0x00, 0x2d, 0x44,
4796 0x8f, 0xb0, 0x01, 0x00, 0xfd, 0x93, 0xa2, 0xf2, 0x02, 0x6c, 0x00, 0x00,
4797 0x00, 0x00, 0xa2, 0x40, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x49,
4798 0x8f, 0xb0, 0x01, 0x00, 0xef, 0x93, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
4799 0xed, 0x93, 0x20, 0x91, 0x03, 0x6c, 0x00, 0x00, 0xef, 0x93, 0x00, 0x40,
4800 0x81, 0xb2, 0x00, 0x00, 0x04, 0x94, 0x20, 0x0a, 0x02, 0x6c, 0x00, 0x00,
4801 0x03, 0x94, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x44,
4802 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00,
4803 0x09, 0x94, 0x22, 0x0a, 0x02, 0x6c, 0x00, 0x00, 0xdd, 0x93, 0xa2, 0x41,
4804 0x19, 0x7c, 0x00, 0x00, 0x08, 0x94, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
4805 0x00, 0x00, 0x80, 0x55, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x56,
4806 0x8f, 0xb0, 0x01, 0x00, 0x0b, 0x94, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
4807 0x00, 0x00, 0x80, 0x43, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48,
4808 0x8f, 0xb0, 0x01, 0x00, 0x11, 0x94, 0x00, 0x43, 0x95, 0xb0, 0x00, 0x00,
4809 0x11, 0x94, 0x00, 0x41, 0x95, 0xb0, 0x00, 0x00, 0x11, 0x94, 0x00, 0x42,
4810 0x95, 0xb0, 0x00, 0x00, 0x11, 0x94, 0x00, 0x44, 0x95, 0xb0, 0x00, 0x00,
4811 0x11, 0x94, 0x00, 0x4c, 0x95, 0xb0, 0x00, 0x00, 0x30, 0x04, 0x00, 0x40,
4812 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x4a, 0x8a, 0x30, 0x01, 0x00,
4813 0x55, 0x97, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x16, 0x94, 0xa2, 0x40,
4814 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4b, 0x8f, 0xb0, 0x01, 0x00,
4815 0x00, 0x00, 0x80, 0x4c, 0x8f, 0xb0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05,
4816 0x48, 0x6d, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4817 0x2e, 0x00, 0x2f, 0xf3, 0x84, 0xb0, 0x01, 0x00, 0x1c, 0x94, 0xa2, 0xf3,
4818 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x01, 0xb0, 0x01, 0x00,
4819 0x2d, 0x00, 0x2a, 0x41, 0xe7, 0xd1, 0x01, 0x00, 0xd4, 0x00, 0x3d, 0x41,
4820 0x85, 0xe0, 0x01, 0x00, 0x0b, 0x00, 0x00, 0xf2, 0x00, 0xe4, 0x01, 0x00,
4821 0x22, 0x94, 0x22, 0x5a, 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4822 0x1f, 0x90, 0x01, 0x00, 0x23, 0x94, 0x00, 0x5a, 0x01, 0x80, 0x00, 0x00,
4823 0x00, 0x00, 0x00, 0x40, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x63, 0x41,
4824 0x85, 0xc0, 0x01, 0x00, 0x26, 0x94, 0xa0, 0xa5, 0x85, 0x6c, 0x00, 0x00,
4825 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x12, 0x04, 0x00, 0x40,
4826 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
4827 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0xa0, 0xa5,
4828 0x85, 0x6c, 0x01, 0x00, 0x00, 0x00, 0xe3, 0x40, 0x85, 0xb0, 0x01, 0x00,
4829 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x12, 0x00, 0x00, 0x40,
4830 0x87, 0x98, 0x01, 0x00, 0x78, 0x98, 0x00, 0xf0, 0x8c, 0xb0, 0x00, 0x00,
4831 0x04, 0x00, 0x22, 0x5f, 0x1f, 0x7c, 0x00, 0x00, 0x3b, 0x94, 0x22, 0x40,
4832 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00,
4833 0x04, 0x00, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf0,
4834 0x98, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x07, 0x98, 0x6c, 0x00, 0x00,
4835 0x10, 0x00, 0x00, 0x0c, 0x98, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x07,
4836 0x98, 0x6c, 0x00, 0x00, 0x38, 0x94, 0xa2, 0x4b, 0x19, 0x7c, 0x00, 0x00,
4837 0x39, 0x94, 0x22, 0xf0, 0x18, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4b,
4838 0x19, 0x90, 0x01, 0x00, 0x3d, 0x95, 0x00, 0x07, 0x10, 0x30, 0x01, 0x00,
4839 0x2f, 0x83, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x3d, 0x94, 0x22, 0x5a,
4840 0x1f, 0x7c, 0x00, 0x00, 0xa5, 0x94, 0x00, 0x40, 0x81, 0x30, 0x01, 0x00,
4841 0x2f, 0x83, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x22, 0x5f,
4842 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00,
4843 0x00, 0x00, 0x60, 0x4b, 0x19, 0x90, 0x01, 0x00, 0x04, 0x00, 0x22, 0x5a,
4844 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40, 0x0f, 0x6c, 0x00, 0x00,
4845 0x10, 0x00, 0x00, 0xf0, 0x96, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x07,
4846 0x96, 0x6c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0c, 0x96, 0xf4, 0x01, 0x00,
4847 0x04, 0x00, 0xa2, 0x07, 0x96, 0x6c, 0x00, 0x00, 0x3d, 0x95, 0x00, 0x07,
4848 0x10, 0x30, 0x01, 0x00, 0x2f, 0x83, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
4849 0x04, 0x00, 0x22, 0x5f, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05,
4850 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b, 0x19, 0x90, 0x01, 0x00,
4851 0x04, 0x00, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
4852 0x0f, 0x6c, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf0, 0x96, 0xf4, 0x01, 0x00,
4853 0x04, 0x00, 0xa2, 0x07, 0x96, 0x6c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0c,
4854 0x96, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x07, 0x96, 0x6c, 0x00, 0x00,
4855 0x3d, 0x95, 0x00, 0x07, 0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
4856 0x05, 0xb0, 0x01, 0x00, 0x54, 0x94, 0x33, 0x40, 0x81, 0x32, 0x00, 0x00,
4857 0x57, 0x94, 0xa1, 0xad, 0x95, 0x20, 0x00, 0x00, 0x69, 0x94, 0x13, 0x40,
4858 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4a, 0x5a, 0x83, 0x01, 0x00,
4859 0x30, 0x00, 0x39, 0x45, 0x95, 0xe0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5f,
4860 0x5f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5e, 0x5f, 0x7c, 0x00, 0x00,
4861 0x1f, 0x00, 0x00, 0x0f, 0x5e, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a,
4862 0x5f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x5f, 0x90, 0x01, 0x00,
4863 0x00, 0x00, 0x00, 0x40, 0x45, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04,
4864 0x48, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x4a, 0xb0, 0x01, 0x00,
4865 0x00, 0x00, 0x00, 0x0c, 0x58, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07,
4866 0x4e, 0xb0, 0x01, 0x00, 0x19, 0x85, 0x00, 0x40, 0x5d, 0x98, 0x01, 0x00,
4867 0x04, 0x00, 0xa2, 0x44, 0x5f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
4868 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x62, 0xb1, 0x01, 0x00,
4869 0x00, 0x00, 0xa8, 0x41, 0x97, 0xb0, 0x00, 0x00, 0x66, 0x94, 0x00, 0x40,
4870 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
4871 0x04, 0x00, 0xa2, 0x40, 0x05, 0x6c, 0x00, 0x00, 0x15, 0x99, 0x00, 0x40,
4872 0x81, 0x32, 0x01, 0x00, 0x6c, 0x94, 0x60, 0x07, 0x96, 0x30, 0x00, 0x00,
4873 0xff, 0xff, 0x00, 0x4b, 0x84, 0x89, 0x01, 0x00, 0x00, 0x00, 0x70, 0xc2,
4874 0x24, 0xb0, 0x01, 0x00, 0x79, 0x94, 0xa2, 0x45, 0x25, 0x7c, 0x00, 0x00,
4875 0x70, 0x94, 0x31, 0x20, 0x85, 0x30, 0x00, 0x00, 0x7a, 0x94, 0x22, 0x12,
4876 0x48, 0x7f, 0x00, 0x00, 0x58, 0x04, 0x11, 0x12, 0x48, 0x03, 0x01, 0x00,
4877 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
4878 0x1e, 0x94, 0x01, 0x00, 0x17, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
4879 0x00, 0x00, 0x00, 0x12, 0x8a, 0xb0, 0x01, 0x00, 0x02, 0x99, 0x00, 0x5f,
4880 0x8b, 0x10, 0x01, 0x00, 0x00, 0x00, 0x80, 0x5a, 0x1f, 0x90, 0x01, 0x00,
4881 0x79, 0x94, 0x31, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4,
4882 0x24, 0xb0, 0x01, 0x00, 0x7a, 0x94, 0x22, 0x12, 0x48, 0x7f, 0x00, 0x00,
4883 0x58, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x17, 0x04, 0x00, 0x40,
4884 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x12, 0x8a, 0x30, 0x01, 0x00,
4885 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x89, 0x94, 0x0b, 0xf0,
4886 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x11, 0x12, 0x48, 0x83, 0x01, 0x00,
4887 0x86, 0x94, 0x22, 0x50, 0x85, 0x70, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x40,
4888 0x43, 0x99, 0x01, 0x00, 0xae, 0x96, 0x00, 0xf2, 0x96, 0x30, 0x01, 0x00,
4889 0x93, 0x04, 0x00, 0x12, 0x94, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a,
4890 0x1f, 0x90, 0x01, 0x00, 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00,
4891 0x00, 0x00, 0x80, 0x4b, 0x1e, 0x94, 0x01, 0x00, 0x10, 0x00, 0x00, 0x42,
4892 0x10, 0xf4, 0x01, 0x00, 0x04, 0x00, 0x22, 0x08, 0x80, 0x32, 0x00, 0x00,
4893 0x00, 0xb7, 0x3f, 0x43, 0x11, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x08,
4894 0x8a, 0x88, 0x01, 0x00, 0x8d, 0x94, 0x30, 0xa1, 0x0c, 0x30, 0x00, 0x00,
4895 0x90, 0x94, 0x22, 0x45, 0xe6, 0x7d, 0x00, 0x00, 0x7a, 0x94, 0x10, 0x40,
4896 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x45, 0xe6, 0x91, 0x01, 0x00,
4897 0x00, 0x00, 0x10, 0x12, 0x48, 0x83, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05,
4898 0x48, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x11, 0x40, 0x81, 0xb2, 0x01, 0x00,
4899 0x00, 0x00, 0x60, 0x4b, 0x85, 0x80, 0x01, 0x00, 0x5e, 0x01, 0x00, 0x40,
4900 0x43, 0x99, 0x01, 0x00, 0xae, 0x96, 0x00, 0xf2, 0x96, 0x30, 0x01, 0x00,
4901 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0xd8, 0x00, 0x00, 0x40,
4902 0x81, 0x98, 0x01, 0x00, 0x2e, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4903 0x9c, 0x94, 0x22, 0x40, 0xe7, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40,
4904 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb1, 0x01, 0x00,
4905 0x09, 0x00, 0x00, 0x08, 0x86, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x68, 0xa7,
4906 0x87, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
4907 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0xa0, 0x94, 0xa8, 0x05,
4908 0xe0, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00,
4909 0x00, 0x14, 0x00, 0x4b, 0x96, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4b,
4910 0x1e, 0x94, 0x01, 0x00, 0x04, 0x00, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
4911 0x10, 0x00, 0x00, 0x0f, 0x84, 0xf4, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x42,
4912 0x84, 0x88, 0x01, 0x00, 0xaa, 0x94, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00,
4913 0xab, 0x94, 0x00, 0x42, 0x68, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
4914 0x6a, 0xb1, 0x01, 0x00, 0xab, 0x94, 0x31, 0x5a, 0x1f, 0x00, 0x00, 0x00,
4915 0x04, 0x00, 0xa2, 0x42, 0x48, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x91, 0x42,
4916 0x48, 0x93, 0x01, 0x00, 0xae, 0x94, 0x35, 0x40, 0x81, 0x32, 0x00, 0x00,
4917 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xb4, 0x94, 0x28, 0xb1,
4918 0x2c, 0x30, 0x00, 0x00, 0xaf, 0x94, 0x22, 0x4d, 0x75, 0x7d, 0x00, 0x00,
4919 0x00, 0x00, 0x00, 0x40, 0x2d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x95, 0x40,
4920 0x11, 0xb0, 0x01, 0x00, 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
4921 0xb4, 0x94, 0xa8, 0xb1, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16,
4922 0x80, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x27, 0x08, 0x80, 0x32, 0x00, 0x00,
4923 0x00, 0x00, 0x95, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x40,
4924 0x61, 0x99, 0x01, 0x00, 0xbf, 0x94, 0x28, 0xb1, 0x10, 0x30, 0x00, 0x00,
4925 0xb9, 0x94, 0x9f, 0xba, 0x80, 0x32, 0x00, 0x00, 0x15, 0x00, 0x00, 0x40,
4926 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4927 0x00, 0x00, 0x80, 0x40, 0x11, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x5c,
4928 0x11, 0x7c, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x5a, 0x11, 0x7c, 0x00, 0x00,
4929 0x04, 0x00, 0x22, 0x08, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x24,
4930 0x11, 0x84, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c, 0x01, 0x7c, 0x00, 0x00,
4931 0x04, 0x00, 0xa2, 0x5a, 0x01, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x00,
4932 0x48, 0x06, 0x00, 0x00, 0x04, 0x00, 0x1f, 0xbb, 0x80, 0x32, 0x00, 0x00,
4933 0x00, 0x00, 0x00, 0x5f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
4934 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
4935 0xc8, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xac, 0x94, 0x00, 0x40,
4936 0x47, 0x99, 0x01, 0x00, 0xcc, 0x94, 0x32, 0x40, 0x81, 0x32, 0x00, 0x00,
4937 0xd4, 0x94, 0x22, 0xf8, 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
4938 0x90, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x92, 0xb0, 0x01, 0x00,
4939 0x00, 0x00, 0x00, 0x48, 0x80, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x27, 0x49,
4940 0x80, 0x32, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4b, 0xf0, 0xcd, 0x01, 0x00,
4941 0x20, 0x00, 0x92, 0x48, 0xe0, 0xc9, 0x01, 0x00, 0x6c, 0x00, 0x00, 0x40,
4942 0x61, 0x99, 0x01, 0x00, 0xd8, 0x94, 0x28, 0xb1, 0x92, 0x30, 0x00, 0x00,
4943 0xd4, 0x94, 0x22, 0x4c, 0x75, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x12, 0x40,
4944 0x91, 0xb0, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
4945 0xd8, 0x94, 0xa8, 0xb1, 0x90, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
4946 0x80, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x27, 0x48, 0x80, 0x32, 0x00, 0x00,
4947 0xff, 0x00, 0x00, 0x48, 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
4948 0x90, 0xd0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x4b, 0xf0, 0xcd, 0x01, 0x00,
4949 0x20, 0x00, 0x00, 0x48, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x92, 0x49,
4950 0xe0, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x10, 0x48, 0xb1, 0x01, 0x00,
4951 0xff, 0x07, 0x00, 0x08, 0x82, 0x8c, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
4952 0x83, 0x7c, 0x00, 0x00, 0xff, 0x07, 0x00, 0xf0, 0x00, 0x8c, 0x01, 0x00,
4953 0x04, 0x00, 0xa2, 0x5c, 0x01, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
4954 0x01, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x41, 0x00, 0xec, 0x00, 0x00,
4955 0xea, 0x94, 0x22, 0x1a, 0x00, 0x6c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x00,
4956 0x34, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x49, 0xc1, 0x01, 0x00,
4957 0xe4, 0x94, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
4958 0x81, 0xb2, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x10, 0x48, 0xb1, 0x01, 0x00,
4959 0xff, 0x07, 0x00, 0x15, 0x82, 0x8c, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
4960 0x83, 0x7c, 0x00, 0x00, 0xff, 0x07, 0x00, 0xf0, 0x00, 0x8c, 0x01, 0x00,
4961 0x04, 0x00, 0xa2, 0x5c, 0x01, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
4962 0x01, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x41, 0x00, 0xec, 0x00, 0x00,
4963 0xf6, 0x94, 0x22, 0x0d, 0x00, 0x6c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x00,
4964 0x1a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x49, 0xc1, 0x01, 0x00,
4965 0xf0, 0x94, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
4966 0x81, 0xb2, 0x01, 0x00, 0xfb, 0x94, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00,
4967 0x00, 0x00, 0x00, 0x44, 0x19, 0x90, 0x01, 0x00, 0x24, 0x00, 0x2d, 0x01,
4968 0x2c, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x2d, 0xf0, 0x16, 0xb0, 0x01, 0x00,
4969 0x22, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00, 0x14, 0x00, 0x2f, 0xf2,
4970 0x0c, 0xb0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0xf0, 0x14, 0x6c, 0x00, 0x00,
4971 0x04, 0x00, 0x20, 0x01, 0x14, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
4972 0xe1, 0xb1, 0x01, 0x00, 0x30, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
4973 0x60, 0x97, 0x2e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4974 0xf1, 0xb1, 0x01, 0x00, 0x04, 0x95, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
4975 0x64, 0x97, 0x3e, 0x43, 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
4976 0xe1, 0xb1, 0x01, 0x00, 0x64, 0x97, 0x3e, 0x43, 0x9d, 0xe0, 0x01, 0x00,
4977 0x00, 0x00, 0x80, 0x0b, 0xe8, 0xb1, 0x01, 0x00, 0x64, 0x97, 0x3f, 0x43,
4978 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0xc0, 0x01, 0x00,
4979 0x00, 0x00, 0x80, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x64, 0x97, 0x3f, 0x43,
4980 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x16, 0xb0, 0x01, 0x00,
4981 0x00, 0x00, 0x80, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x60, 0x17, 0x3d, 0x43,
4982 0x9d, 0xe0, 0x01, 0x00, 0x10, 0x00, 0x80, 0xa1, 0x16, 0xe4, 0x01, 0x00,
4983 0x04, 0x00, 0xa2, 0x07, 0x16, 0x6c, 0x00, 0x00, 0x1a, 0x04, 0x00, 0x40,
4984 0x89, 0x98, 0x01, 0x00, 0x10, 0x00, 0x00, 0x0b, 0x8a, 0xe4, 0x01, 0x00,
4985 0x02, 0x99, 0x00, 0x0d, 0x8a, 0x14, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d,
4986 0x42, 0xc9, 0x01, 0x00, 0x17, 0x95, 0x30, 0x47, 0x17, 0x04, 0x00, 0x00,
4987 0x1a, 0x95, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x90, 0x42,
4988 0x81, 0xb0, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00,
4989 0x1e, 0x95, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
4990 0xe6, 0x91, 0x01, 0x00, 0x00, 0x00, 0x90, 0x41, 0x81, 0xb0, 0x01, 0x00,
4991 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x1f, 0x95, 0x40, 0x07,
4992 0x96, 0x30, 0x00, 0x00, 0x9d, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4993 0x29, 0x95, 0xa2, 0x45, 0x95, 0x7c, 0x00, 0x00, 0x01, 0x97, 0x3f, 0x41,
4994 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00,
4995 0x00, 0x00, 0x00, 0x4e, 0xe6, 0xb1, 0x01, 0x00, 0x40, 0x97, 0x3e, 0x40,
4996 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xe6, 0xb1, 0x01, 0x00,
4997 0x40, 0x97, 0x3e, 0x40, 0x9d, 0xe0, 0x01, 0x00, 0x3c, 0x95, 0x00, 0x3b,
4998 0xe7, 0xb1, 0x00, 0x00, 0x29, 0x95, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00,
4999 0x33, 0x95, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x0d,
5000 0x46, 0xc9, 0x01, 0x00, 0x2f, 0x95, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
5001 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x98, 0x42,
5002 0x81, 0xb0, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00,
5003 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40,
5004 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x98, 0x41, 0x81, 0xb0, 0x01, 0x00,
5005 0x04, 0x00, 0x21, 0xa2, 0x95, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10, 0x4a,
5006 0x44, 0x83, 0x01, 0x00, 0x00, 0x97, 0x3e, 0x41, 0x95, 0xe0, 0x01, 0x00,
5007 0x00, 0x00, 0x00, 0x4e, 0xf6, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e,
5008 0xe6, 0xb1, 0x01, 0x00, 0x40, 0x97, 0x3e, 0x40, 0x9d, 0xe0, 0x01, 0x00,
5009 0x00, 0x00, 0x00, 0x3b, 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
5010 0x90, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0x07, 0x92, 0x89, 0x01, 0x00,
5011 0x00, 0x00, 0x98, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x11, 0x04, 0x00, 0x40,
5012 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x08, 0x8a, 0x30, 0x01, 0x00,
5013 0x03, 0x00, 0x00, 0x08, 0x86, 0xf4, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x43,
5014 0x46, 0xc9, 0x01, 0x00, 0x07, 0x00, 0x00, 0x08, 0x82, 0x88, 0x01, 0x00,
5015 0x04, 0x00, 0x22, 0x08, 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x41,
5016 0xe6, 0x7d, 0x00, 0x00, 0x44, 0x95, 0x40, 0x08, 0x96, 0x30, 0x00, 0x00,
5017 0x9d, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x52, 0x95, 0x22, 0x45,
5018 0x95, 0x7c, 0x00, 0x00, 0x4d, 0x95, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
5019 0x10, 0x00, 0x00, 0x0f, 0x96, 0xf4, 0x01, 0x00, 0x49, 0x95, 0x31, 0x5f,
5020 0x97, 0x04, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x4b, 0x48, 0x7f, 0x00, 0x00,
5021 0x00, 0x00, 0x11, 0x4b, 0x48, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5022 0x6a, 0xb1, 0x01, 0x00, 0x4d, 0x95, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00,
5023 0x04, 0x00, 0x22, 0x41, 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5024 0xe6, 0x81, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00,
5025 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x97, 0x3f, 0x41,
5026 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00,
5027 0x40, 0x97, 0x3d, 0x40, 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x63, 0xf3,
5028 0x88, 0xb0, 0x01, 0x00, 0x5b, 0x95, 0xa2, 0x3b, 0x89, 0x6c, 0x00, 0x00,
5029 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6,
5030 0x92, 0xb1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x4a, 0x44, 0x7f, 0x00, 0x00,
5031 0x5c, 0x95, 0x18, 0x4a, 0x44, 0x93, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40,
5032 0x81, 0xb2, 0x01, 0x00, 0x3f, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
5033 0x16, 0x00, 0x00, 0x12, 0x8a, 0xe4, 0x01, 0x00, 0x02, 0x99, 0x00, 0x4b,
5034 0x8a, 0x14, 0x01, 0x00, 0x30, 0x00, 0x39, 0x45, 0x97, 0xe0, 0x01, 0x00,
5035 0x04, 0x00, 0xa2, 0x5f, 0x5f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x5e,
5036 0x5f, 0x7c, 0x00, 0x00, 0x1f, 0x04, 0x00, 0x2f, 0x7e, 0xd9, 0x01, 0x00,
5037 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x68, 0x95, 0x22, 0x5a,
5038 0x1f, 0x7c, 0x00, 0x00, 0x1f, 0x04, 0x00, 0x0f, 0x98, 0xd8, 0x01, 0x00,
5039 0x00, 0x00, 0x00, 0x4c, 0x5e, 0x94, 0x01, 0x00, 0x6a, 0x95, 0x00, 0x05,
5040 0x4a, 0xb0, 0x00, 0x00, 0x1f, 0x04, 0x00, 0xa7, 0x5e, 0x84, 0x01, 0x00,
5041 0x00, 0x00, 0x00, 0x40, 0x4b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5e,
5042 0x5f, 0x90, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x08, 0x4e, 0x6c, 0x00, 0x00,
5043 0x00, 0x00, 0x00, 0x58, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5044 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
5045 0x6d, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x33, 0x04, 0x00, 0x40,
5046 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x07, 0x8a, 0x30, 0x01, 0x00,
5047 0x72, 0x95, 0x40, 0x07, 0x96, 0x30, 0x00, 0x00, 0x9d, 0x04, 0x00, 0x40,
5048 0x81, 0x32, 0x01, 0x00, 0x76, 0x95, 0x22, 0x45, 0x95, 0x7c, 0x00, 0x00,
5049 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x4a,
5050 0x44, 0x7f, 0x00, 0x00, 0x9b, 0x04, 0x00, 0x4a, 0x44, 0x13, 0x01, 0x00,
5051 0x00, 0x97, 0x3f, 0x41, 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
5052 0x96, 0xb0, 0x01, 0x00, 0x40, 0x97, 0x3d, 0x40, 0x97, 0xe0, 0x01, 0x00,
5053 0x00, 0x00, 0x63, 0xf3, 0x88, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x38, 0x45,
5054 0x97, 0xe0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5f, 0x1f, 0x7c, 0x00, 0x00,
5055 0x04, 0x00, 0x22, 0x5e, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x20, 0xaa,
5056 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x0f, 0x90, 0x01, 0x00,
5057 0x00, 0x00, 0x00, 0x58, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5058 0x62, 0xb1, 0x01, 0x00, 0x82, 0x95, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5059 0x78, 0x95, 0xa2, 0x3b, 0x89, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x38, 0x45,
5060 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00,
5061 0x04, 0x00, 0x22, 0x08, 0x80, 0x32, 0x00, 0x00, 0x03, 0x00, 0x00, 0x08,
5062 0x94, 0xf4, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x4a, 0x46, 0xc9, 0x01, 0x00,
5063 0x07, 0x00, 0x00, 0x08, 0x96, 0x88, 0x01, 0x00, 0x04, 0x00, 0x22, 0x4b,
5064 0xe6, 0x7d, 0x00, 0x00, 0x93, 0x04, 0x00, 0x12, 0x94, 0x30, 0x01, 0x00,
5065 0x3d, 0x95, 0x00, 0x5a, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x5a,
5066 0x1f, 0x90, 0x01, 0x00, 0x11, 0x00, 0x00, 0x4a, 0xe6, 0xc9, 0x01, 0x00,
5067 0x30, 0x00, 0x00, 0x4a, 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0x24, 0x40,
5068 0x81, 0x32, 0x00, 0x00, 0x34, 0x00, 0x2f, 0x4f, 0x95, 0x84, 0x01, 0x00,
5069 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x63, 0x4b,
5070 0x84, 0xc8, 0x01, 0x00, 0x00, 0x00, 0xa0, 0x43, 0x85, 0x6c, 0x01, 0x00,
5071 0x00, 0x00, 0xe3, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x2d, 0x44,
5072 0x1f, 0x90, 0x01, 0x00, 0x32, 0x00, 0x2d, 0xf2, 0x2a, 0xb0, 0x01, 0x00,
5073 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0xf2,
5074 0x02, 0x30, 0x00, 0x00, 0x17, 0x94, 0x00, 0x10, 0x32, 0x30, 0x01, 0x00,
5075 0x04, 0x00, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x42,
5076 0x19, 0x7c, 0x00, 0x00, 0x32, 0x00, 0xa0, 0x40, 0xe5, 0xb1, 0x01, 0x00,
5077 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
5078 0x99, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x02, 0xc0, 0x01, 0x00,
5079 0x00, 0x00, 0x00, 0x50, 0x03, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5080 0x97, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x4c, 0x02, 0xd0, 0x00, 0x00,
5081 0xa3, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
5082 0x36, 0xb0, 0x01, 0x00, 0xb4, 0x95, 0x22, 0x41, 0x03, 0x50, 0x00, 0x00,
5083 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
5084 0xf1, 0xb1, 0x01, 0x00, 0x70, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00,
5085 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
5086 0x62, 0xb1, 0x01, 0x00, 0xac, 0x95, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
5087 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
5088 0x81, 0x32, 0x01, 0x00, 0x7c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5089 0x04, 0x00, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
5090 0x00, 0xb0, 0x01, 0x00, 0xa7, 0x95, 0x00, 0x5c, 0x01, 0x80, 0x00, 0x00,
5091 0xc3, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1b,
5092 0x10, 0xb1, 0x00, 0x00, 0x68, 0x01, 0x2d, 0x06, 0x82, 0xb0, 0x01, 0x00,
5093 0x00, 0x00, 0x00, 0xf2, 0x82, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
5094 0x46, 0xc9, 0x01, 0x00, 0xb9, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5095 0xe2, 0x95, 0x22, 0x40, 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x68, 0x08,
5096 0x38, 0x96, 0x01, 0x00, 0x3a, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
5097 0x02, 0x99, 0x00, 0x08, 0x8a, 0x30, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x41,
5098 0x82, 0xcc, 0x01, 0x00, 0xb9, 0x95, 0xaa, 0x41, 0x3b, 0x40, 0x00, 0x00,
5099 0x00, 0x00, 0x00, 0xf8, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
5100 0x11, 0x80, 0x01, 0x00, 0x04, 0x00, 0xa3, 0x48, 0x3b, 0x6c, 0x00, 0x00,
5101 0x01, 0x00, 0x00, 0x1d, 0x04, 0xcc, 0x01, 0x00, 0xe0, 0x95, 0x26, 0x46,
5102 0x23, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03, 0x12, 0xc8, 0x01, 0x00,
5103 0x04, 0x80, 0x00, 0x03, 0x98, 0xc8, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x4c,
5104 0x42, 0x6d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5105 0x64, 0x01, 0x20, 0xf0, 0xe0, 0xb1, 0x01, 0x00, 0xdf, 0x95, 0x22, 0x41,
5106 0x05, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
5107 0x0c, 0x00, 0x00, 0xf8, 0x86, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x22, 0x44,
5108 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0xf0, 0xb1, 0x01, 0x00,
5109 0x00, 0x00, 0x00, 0x09, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5110 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
5111 0xd1, 0x95, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00, 0xde, 0x95, 0x22, 0x41,
5112 0x05, 0x50, 0x00, 0x00, 0xdc, 0x95, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
5113 0x00, 0x00, 0x00, 0xa1, 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5114 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5115 0xd7, 0x95, 0xa8, 0x46, 0x23, 0x30, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
5116 0x1c, 0xb0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
5117 0x00, 0x00, 0x00, 0x0d, 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5118 0x13, 0xc0, 0x01, 0x00, 0xcc, 0x95, 0x00, 0x50, 0x49, 0xc1, 0x00, 0x00,
5119 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x04, 0x80, 0x00, 0x03,
5120 0x1a, 0xc8, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5121 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xe0, 0x95, 0x22, 0x40,
5122 0x3b, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xb0, 0x01, 0x00,
5123 0xc3, 0x94, 0x00, 0x5c, 0x01, 0x00, 0x01, 0x00, 0xe2, 0x95, 0x00, 0x41,
5124 0x3b, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x47, 0x80, 0x32, 0x01, 0x00,
5125 0xb0, 0x00, 0x2f, 0x5f, 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0,
5126 0x8c, 0xc0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5127 0x04, 0x00, 0xa3, 0xf0, 0x8c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
5128 0x81, 0xb2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5129 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
5130 0x8c, 0xb0, 0x01, 0x00, 0xf1, 0x95, 0x8c, 0xf8, 0x8e, 0x30, 0x00, 0x00,
5131 0x00, 0x00, 0x00, 0x44, 0x19, 0x90, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf8,
5132 0x14, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x16, 0xb0, 0x01, 0x00,
5133 0x00, 0x00, 0x00, 0xf8, 0x26, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x2e, 0xf8,
5134 0x0c, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2a, 0x4a, 0xe0, 0xb1, 0x01, 0x00,
5135 0x28, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x20, 0x1b,
5136 0xe0, 0xb1, 0x01, 0x00, 0xfe, 0x95, 0x20, 0x0a, 0x0c, 0x6c, 0x00, 0x00,
5137 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
5138 0x96, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x20, 0xf0, 0xe4, 0xb1, 0x01, 0x00,
5139 0x18, 0x00, 0x20, 0x4a, 0xe0, 0xb1, 0x01, 0x00, 0x1c, 0x00, 0x20, 0x4b,
5140 0xe0, 0xb1, 0x01, 0x00, 0xe6, 0x95, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
5141 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00, 0x2c, 0x00, 0x2d, 0x42,
5142 0x19, 0x90, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3, 0x82, 0xb0, 0x01, 0x00,
5143 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00, 0x05, 0x96, 0xa2, 0xa5,
5144 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41, 0x95, 0xb0, 0x01, 0x00,
5145 0x08, 0x96, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5146 0x83, 0xb0, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5147 0x00, 0x00, 0x63, 0x41, 0x97, 0xc0, 0x01, 0x00, 0xd4, 0x00, 0x3e, 0x41,
5148 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00,
5149 0x0d, 0x96, 0xa0, 0xa5, 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5150 0x83, 0xb0, 0x01, 0x00, 0x2c, 0x00, 0x20, 0x41, 0xe6, 0xb1, 0x01, 0x00,
5151 0x12, 0x96, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
5152 0x98, 0xdc, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x4c, 0xe4, 0xf5, 0x01, 0x00,
5153 0x13, 0x96, 0x00, 0x40, 0x1f, 0x80, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
5154 0xe4, 0xf5, 0x01, 0x00, 0x1e, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
5155 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
5156 0x81, 0xb2, 0x01, 0x00, 0xcb, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5157 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x40,
5158 0xe1, 0x6d, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
5159 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5160 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x41, 0x87, 0xb0, 0x01, 0x00,
5161 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
5162 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00,
5163 0x00, 0x00, 0x00, 0x49, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
5164 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
5165 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d,
5166 0x05, 0x90, 0x00, 0x00, 0x23, 0x96, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5167 0xcb, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
5168 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00,
5169 0x04, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
5170 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
5171 0x00, 0x00, 0x00, 0x43, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
5172 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
5173 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
5174 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
5175 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
5176 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00,
5177 0x33, 0x96, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05,
5178 0x48, 0x6d, 0x00, 0x00, 0x04, 0x00, 0x82, 0x0c, 0x80, 0x32, 0x00, 0x00,
5179 0x2d, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3,
5180 0x84, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x96, 0xc8, 0x01, 0x00,
5181 0x3d, 0x96, 0x9f, 0x41, 0x85, 0x50, 0x00, 0x00, 0x01, 0x00, 0x00, 0xa5,
5182 0x85, 0xcc, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x42, 0xe6, 0xb1, 0x01, 0x00,
5183 0x04, 0x00, 0xa3, 0xa5, 0x97, 0x6c, 0x00, 0x00, 0xd4, 0x00, 0x3d, 0x41,
5184 0x85, 0xe0, 0x01, 0x00, 0x0b, 0x00, 0x00, 0xf2, 0x98, 0xe4, 0x01, 0x00,
5185 0x44, 0x96, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x5a,
5186 0x99, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x99, 0x80, 0x01, 0x00,
5187 0x04, 0x00, 0xa2, 0x00, 0x98, 0x6c, 0x00, 0x00, 0x20, 0x04, 0x00, 0x40,
5188 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
5189 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x21, 0x04, 0x00, 0x40,
5190 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x00, 0x8a, 0x30, 0x01, 0x00,
5191 0x04, 0x00, 0xa2, 0x00, 0x6a, 0x06, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x00,
5192 0x80, 0xb0, 0x01, 0x00, 0x4f, 0x96, 0x52, 0x43, 0x81, 0x60, 0x00, 0x00,
5193 0x02, 0x00, 0x00, 0xf2, 0x82, 0xf4, 0x01, 0x00, 0x50, 0x96, 0x00, 0x41,
5194 0x80, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x81, 0x90, 0x01, 0x00,
5195 0x00, 0x00, 0x00, 0x5e, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5196 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x95, 0xb0, 0x00, 0x00,
5197 0x51, 0x96, 0x9e, 0xbb, 0x80, 0x32, 0x00, 0x00, 0x56, 0x96, 0xa2, 0x40,
5198 0x1f, 0x7c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5199 0x00, 0x00, 0x80, 0x41, 0x95, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x15,
5200 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x2b, 0xc0, 0x01, 0x00,
5201 0x00, 0x00, 0x00, 0xfc, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
5202 0x38, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3c, 0xb0, 0x01, 0x00,
5203 0x00, 0x00, 0x00, 0xfe, 0x3a, 0xb0, 0x01, 0x00, 0x6b, 0x96, 0x9c, 0x17,
5204 0x80, 0x32, 0x00, 0x00, 0x60, 0x96, 0xa2, 0x4a, 0x19, 0x7c, 0x00, 0x00,
5205 0x00, 0x00, 0x80, 0x4c, 0x1f, 0x90, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x1e,
5206 0x98, 0xf4, 0x01, 0x00, 0x5f, 0x96, 0xa2, 0x48, 0x99, 0x6c, 0x00, 0x00,
5207 0x00, 0x00, 0x00, 0x15, 0x42, 0xb1, 0x01, 0x00, 0x5f, 0x96, 0xa2, 0x8a,
5208 0xf1, 0x6d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x02, 0xcc, 0x01, 0x00,
5209 0x00, 0x00, 0x00, 0xfc, 0x3e, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x00, 0xf4,
5210 0x28, 0xcc, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
5211 0x6a, 0x96, 0x20, 0xf0, 0x3e, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
5212 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2b, 0xc0, 0x01, 0x00,
5213 0xbf, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0xf3,
5214 0x3a, 0xe0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5215 0x10, 0x00, 0x00, 0x0c, 0x96, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x07,
5216 0x96, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x4b, 0x19, 0x90, 0x01, 0x00,
5217 0x07, 0x00, 0x2a, 0x0c, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04,
5218 0xe6, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5219 0x1c, 0x00, 0x2d, 0xf0, 0x16, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x2d, 0xf0,
5220 0x26, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00,
5221 0x00, 0x00, 0xa2, 0x06, 0x14, 0xec, 0x00, 0x00, 0x7a, 0x96, 0x22, 0x45,
5222 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x06, 0x2a, 0xec, 0x00, 0x00,
5223 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
5224 0x96, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x40, 0x81, 0xb2, 0x01, 0x00,
5225 0x00, 0x00, 0x2a, 0x4c, 0xe1, 0xc1, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10,
5226 0x48, 0xc9, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
5227 0x18, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
5228 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
5229 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
5230 0x62, 0xdd, 0x01, 0x00, 0x84, 0x96, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00,
5231 0x00, 0x00, 0x80, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x95,
5232 0x03, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
5233 0x40, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00, 0x40, 0x00, 0x00, 0x03,
5234 0xf0, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
5235 0x00, 0x00, 0x2e, 0x50, 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
5236 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
5237 0x8f, 0x96, 0x62, 0x42, 0x61, 0x31, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10,
5238 0x62, 0xdd, 0x01, 0x00, 0x90, 0x96, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5239 0x10, 0x00, 0x00, 0x10, 0x62, 0xc9, 0x01, 0x00, 0x92, 0x96, 0xa8, 0x00,
5240 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x40, 0x81, 0xb2, 0x01, 0x00,
5241 0x04, 0x00, 0xa2, 0x95, 0x03, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x10,
5242 0x48, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00,
5243 0x40, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00,
5244 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x50, 0x49, 0xc1, 0x01, 0x00,
5245 0x00, 0x00, 0x00, 0x06, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
5246 0xf0, 0xb1, 0x01, 0x00, 0x9d, 0x96, 0x62, 0x42, 0x61, 0x31, 0x00, 0x00,
5247 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x9e, 0x96, 0xa8, 0x40,
5248 0x81, 0x32, 0x00, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
5249 0xa0, 0x96, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x40,
5250 0x81, 0xb2, 0x01, 0x00, 0x30, 0x80, 0x00, 0x4a, 0x44, 0xc9, 0x01, 0x00,
5251 0x00, 0x00, 0x00, 0x06, 0xf1, 0xb1, 0x01, 0x00, 0xc0, 0xa8, 0x3d, 0x46,
5252 0x0d, 0xe0, 0x01, 0x00, 0xff, 0x7f, 0x00, 0xa1, 0xf0, 0x89, 0x01, 0x00,
5253 0x02, 0x00, 0x00, 0x09, 0x96, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
5254 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x60, 0xa8, 0x97, 0xc0, 0x01, 0x00,
5255 0xaa, 0x96, 0x63, 0x42, 0x61, 0x31, 0x00, 0x00, 0x30, 0x00, 0x00, 0x4a,
5256 0x62, 0xc9, 0x01, 0x00, 0xab, 0x96, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5257 0x00, 0x00, 0xf3, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x99, 0x3f, 0x42,
5258 0x97, 0xf0, 0x01, 0x00, 0xaf, 0x96, 0x65, 0x40, 0x81, 0x32, 0x00, 0x00,
5259 0xb7, 0x96, 0x22, 0xf3, 0x74, 0x06, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3,
5260 0x94, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe7, 0x85, 0x01, 0x00,
5261 0x00, 0x00, 0x75, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
5262 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
5263 0xb4, 0x96, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x40,
5264 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x36, 0xb0, 0x01, 0x00,
5265 0xc7, 0x96, 0x82, 0x41, 0x23, 0x40, 0x00, 0x00, 0xbc, 0x96, 0xa2, 0x44,
5266 0x1f, 0x7c, 0x00, 0x00, 0x98, 0x93, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00,
5267 0x20, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xc2, 0x96, 0x22, 0x40,
5268 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
5269 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xbf, 0x96, 0xa8, 0x40,
5270 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5271 0x00, 0x00, 0x00, 0x41, 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
5272 0x32, 0xb0, 0x01, 0x00, 0xc7, 0x96, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
5273 0xe1, 0x94, 0x00, 0x43, 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5274 0x23, 0xb0, 0x01, 0x00, 0xc9, 0x96, 0xa3, 0x15, 0x0c, 0x6c, 0x00, 0x00,
5275 0xca, 0x96, 0x00, 0x06, 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
5276 0x04, 0xb0, 0x01, 0x00, 0xcc, 0x96, 0x20, 0x02, 0x1a, 0x6c, 0x00, 0x00,
5277 0x00, 0x00, 0x00, 0x0d, 0x04, 0xb0, 0x01, 0x00, 0x9b, 0x97, 0x00, 0x05,
5278 0x48, 0x31, 0x01, 0x00, 0xf7, 0x96, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
5279 0xd0, 0x96, 0xa2, 0x02, 0x2a, 0x50, 0x00, 0x00, 0xf7, 0x96, 0xa2, 0x45,
5280 0x1f, 0x7c, 0x00, 0x00, 0xd2, 0x96, 0x22, 0x02, 0x0c, 0x50, 0x00, 0x00,
5281 0xdb, 0x96, 0x00, 0x02, 0x16, 0xc0, 0x00, 0x00, 0xda, 0x96, 0x22, 0x5c,
5282 0x1f, 0x7c, 0x00, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
5283 0xda, 0x96, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
5284 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5285 0xd6, 0x96, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88,
5286 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
5287 0x73, 0x96, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0xf7, 0x96, 0x22, 0x15,
5288 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
5289 0xf6, 0x96, 0xa2, 0x02, 0x1a, 0x50, 0x00, 0x00, 0xe7, 0x96, 0x22, 0x46,
5290 0x1f, 0x7c, 0x00, 0x00, 0x70, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
5291 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0xe7, 0x96, 0x22, 0x40,
5292 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
5293 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xe3, 0x96, 0xa8, 0x40,
5294 0x81, 0x32, 0x00, 0x00, 0x23, 0x83, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
5295 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
5296 0x42, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x80, 0x32, 0x00, 0x00,
5297 0x10, 0x00, 0x00, 0xf0, 0x10, 0xc8, 0x01, 0x00, 0x2f, 0x00, 0x2f, 0x5c,
5298 0x11, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe7, 0x91, 0x01, 0x00,
5299 0xf0, 0x07, 0x00, 0x40, 0x1b, 0x98, 0x01, 0x00, 0xb9, 0x96, 0x20, 0x15,
5300 0x1a, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
5301 0x00, 0x00, 0x22, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
5302 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0xe0, 0x8d, 0x01, 0x00,
5303 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
5304 0x62, 0xdd, 0x01, 0x00, 0xf3, 0x96, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
5305 0xb9, 0x96, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0xb9, 0x96, 0x00, 0x02,
5306 0x10, 0xc0, 0x00, 0x00, 0xf9, 0x96, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
5307 0x98, 0x93, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1b,
5308 0x10, 0xb1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
5309 0x10, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0x08,
5310 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00,
5311 0x10, 0x00, 0x00, 0x03, 0xe0, 0xc9, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
5312 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
5313 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5c,
5314 0x1f, 0x90, 0x00, 0x00, 0x01, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5315 0x17, 0x00, 0x00, 0xd0, 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x40,
5316 0x27, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xb0, 0x01, 0x00,
5317 0xc3, 0x94, 0x00, 0x41, 0xa3, 0x41, 0x01, 0x00, 0x05, 0x97, 0x00, 0x41,
5318 0x27, 0xd0, 0x00, 0x00, 0x36, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
5319 0x02, 0x99, 0x00, 0x40, 0x8a, 0x30, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
5320 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x80, 0x94, 0x01, 0x00,
5321 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
5322 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
5323 0x04, 0x00, 0x14, 0xbb, 0x80, 0x32, 0x00, 0x00, 0x0e, 0x97, 0x00, 0x40,
5324 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5325 0x64, 0x97, 0x00, 0x40, 0x2b, 0x30, 0x01, 0x00, 0xac, 0x00, 0x2d, 0x06,
5326 0x16, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0, 0x16, 0xc4, 0x01, 0x00,
5327 0x18, 0x97, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5328 0x17, 0xc0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
5329 0x00, 0x00, 0x6c, 0xf0, 0x30, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x2d, 0x40,
5330 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xf0, 0x28, 0xb0, 0x01, 0x00,
5331 0x21, 0x97, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x43,
5332 0x86, 0xc8, 0x01, 0x00, 0x00, 0x30, 0x00, 0x0b, 0x16, 0xc8, 0x01, 0x00,
5333 0x21, 0x97, 0xa4, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5334 0x17, 0xc0, 0x01, 0x00, 0x44, 0x97, 0x22, 0x06, 0x80, 0x32, 0x00, 0x00,
5335 0x2f, 0x97, 0xa2, 0x06, 0x14, 0x6c, 0x00, 0x00, 0x2c, 0x97, 0x22, 0x48,
5336 0x19, 0x7c, 0x00, 0x00, 0x26, 0x97, 0xa0, 0x41, 0x17, 0x40, 0x00, 0x00,
5337 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5338 0x31, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x20, 0x18, 0xe0, 0xb1, 0x01, 0x00,
5339 0x8b, 0x00, 0x2d, 0x48, 0x19, 0x80, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x45,
5340 0xe7, 0x7d, 0x00, 0x00, 0x8b, 0x00, 0x20, 0x45, 0xe7, 0x91, 0x01, 0x00,
5341 0x2f, 0x97, 0x00, 0x40, 0x87, 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x43,
5342 0x86, 0x98, 0x01, 0x00, 0x2f, 0x97, 0xa0, 0x48, 0x17, 0x40, 0x00, 0x00,
5343 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40,
5344 0x43, 0x99, 0x01, 0x00, 0x10, 0x50, 0x00, 0x43, 0xfc, 0xc9, 0x01, 0x00,
5345 0xa8, 0x97, 0x00, 0x30, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5346 0xe5, 0xb1, 0x01, 0x00, 0x3a, 0x97, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00,
5347 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0xab,
5348 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab, 0x17, 0xc0, 0x01, 0x00,
5349 0x39, 0x97, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5350 0x17, 0xc0, 0x01, 0x00, 0x3e, 0x97, 0x64, 0xf0, 0x82, 0xb0, 0x00, 0x00,
5351 0xa4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x3e, 0x97, 0xa2, 0xf2,
5352 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe5, 0xb1, 0x01, 0x00,
5353 0x8c, 0x00, 0x20, 0x18, 0xe0, 0xb1, 0x01, 0x00, 0x90, 0x00, 0x00, 0x40,
5354 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x60, 0x06, 0x30, 0xc0, 0x01, 0x00,
5355 0x00, 0x00, 0x86, 0x0c, 0x80, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x49,
5356 0x19, 0x7c, 0x00, 0x00, 0xbc, 0x00, 0x2d, 0x46, 0x19, 0x90, 0x01, 0x00,
5357 0xa0, 0x00, 0xa0, 0xf2, 0xe4, 0xb1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40,
5358 0x43, 0x99, 0x01, 0x00, 0x10, 0x50, 0x00, 0x43, 0xfc, 0xc9, 0x01, 0x00,
5359 0xa8, 0x97, 0x00, 0x30, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x4a,
5360 0x19, 0xfc, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
5361 0xcc, 0x00, 0x2d, 0xab, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
5362 0x17, 0xc0, 0x01, 0x00, 0x4d, 0x97, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00,
5363 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xe4, 0xf0,
5364 0x82, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
5365 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
5366 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00,
5367 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x1b,
5368 0xe0, 0xb1, 0x00, 0x00, 0x52, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5369 0x00, 0xf0, 0x00, 0x0c, 0x7e, 0x89, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x4c,
5370 0x95, 0x60, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4a, 0x18, 0x94, 0x01, 0x00,
5371 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x01,
5372 0xf0, 0x31, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00,
5373 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
5374 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5375 0x00, 0x00, 0xa8, 0x15, 0xe0, 0xb1, 0x00, 0x00, 0x5d, 0x97, 0x00, 0x40,
5376 0x81, 0xb2, 0x00, 0x00, 0x10, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
5377 0x00, 0x00, 0x00, 0x06, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
5378 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xe8, 0x5f, 0x17, 0x90, 0x01, 0x00,
5379 0x70, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x7a, 0x01, 0x2e, 0xfe,
5380 0x92, 0xb0, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0xf6, 0x16, 0xb0, 0x01, 0x00,
5381 0x6a, 0x97, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
5382 0x45, 0xc1, 0x01, 0x00, 0x04, 0x00, 0x00, 0xa6, 0x2a, 0xb0, 0x01, 0x00,
5383 0x28, 0x00, 0x6e, 0x06, 0x82, 0xc8, 0x01, 0x00, 0x6e, 0x97, 0x22, 0x4a,
5384 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x45, 0xd1, 0x01, 0x00,
5385 0x00, 0x00, 0x6e, 0x4c, 0x83, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5386 0x92, 0xc0, 0x01, 0x00, 0x6f, 0x97, 0x43, 0x30, 0x3d, 0x07, 0x00, 0x00,
5387 0x00, 0x00, 0x66, 0x9e, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x41,
5388 0x3d, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x92, 0xc0, 0x01, 0x00,
5389 0x06, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x49,
5390 0x98, 0xf4, 0x01, 0x00, 0x78, 0x97, 0x26, 0x30, 0x93, 0x04, 0x00, 0x00,
5391 0x78, 0x97, 0x90, 0x4c, 0x92, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5392 0x93, 0xc0, 0x01, 0x00, 0xff, 0xff, 0x80, 0x49, 0xec, 0xa9, 0x01, 0x00,
5393 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x01,
5394 0xf0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00,
5395 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
5396 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x15, 0xe0, 0xb1, 0x00, 0x00,
5397 0x7d, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x22, 0x20,
5398 0x81, 0x6c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40, 0x81, 0x6c, 0x00, 0x00,
5399 0x8f, 0x97, 0x22, 0x5f, 0x81, 0x7c, 0x00, 0x00, 0x8c, 0x97, 0xa2, 0x40,
5400 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19, 0x90, 0x01, 0x00,
5401 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
5402 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x97, 0x94, 0x01, 0x00,
5403 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0x8c, 0x97, 0x28, 0x40,
5404 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00,
5405 0x88, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x25, 0x04, 0x00, 0x40,
5406 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x40, 0x8a, 0x30, 0x01, 0x00,
5407 0x00, 0x00, 0xa2, 0x21, 0x81, 0x84, 0x00, 0x00, 0x92, 0x97, 0xa2, 0x5f,
5408 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x43, 0x19, 0x7c, 0x01, 0x00,
5409 0x00, 0x00, 0x00, 0x43, 0x19, 0x90, 0x01, 0x00, 0x25, 0x04, 0x00, 0x40,
5410 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x40, 0x8a, 0x30, 0x01, 0x00,
5411 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
5412 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x96, 0x94, 0x01, 0x00,
5413 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
5414 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00,
5415 0x97, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x22, 0x08,
5416 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
5417 0xa0, 0x97, 0xa2, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0xb4, 0x05, 0x00, 0x02,
5418 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
5419 0x00, 0x80, 0x00, 0x19, 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x02,
5420 0xf0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xf0, 0xb1, 0x01, 0x00,
5421 0x00, 0x00, 0x00, 0x13, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
5422 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
5423 0x00, 0x00, 0xa8, 0x08, 0xe0, 0xb1, 0x00, 0x00, 0xa5, 0x97, 0x00, 0x40,
5424 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5425 0xb0, 0x00, 0x00, 0xa1, 0x80, 0xce, 0x01, 0x00, 0x04, 0x00, 0xa6, 0x40,
5426 0x81, 0x32, 0x00, 0x00, 0x7c, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
5427 0x02, 0x00, 0x00, 0xf0, 0x98, 0xf4, 0x01, 0x00, 0xb1, 0x97, 0x20, 0x4c,
5428 0x84, 0x6c, 0x00, 0x00, 0x88, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5429 0xb1, 0x97, 0x20, 0xf2, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5430 0x85, 0xb0, 0x01, 0x00, 0x98, 0x00, 0x2d, 0x14, 0x82, 0xb0, 0x01, 0x00,
5431 0x00, 0x00, 0x00, 0xf0, 0x98, 0xb0, 0x01, 0x00, 0xa3, 0x00, 0x2d, 0x14,
5432 0x98, 0xd0, 0x01, 0x00, 0xb6, 0x97, 0x20, 0x4c, 0x84, 0x6c, 0x00, 0x00,
5433 0x00, 0x00, 0x00, 0x4c, 0x84, 0xb0, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x30,
5434 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x80, 0xe0, 0x01, 0x00,
5435 0xba, 0x97, 0x23, 0x40, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5436 0x84, 0xb0, 0x01, 0x00, 0xd0, 0x00, 0x20, 0x14, 0xe0, 0xb1, 0x01, 0x00,
5437 0x98, 0x00, 0x25, 0x42, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xf3,
5438 0x80, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x42, 0x82, 0xc0, 0x00, 0x00,
5439 0xc0, 0x97, 0xa0, 0x40, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5440 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x82, 0xec, 0x00, 0x00,
5441 0x98, 0x00, 0xa0, 0x41, 0xe0, 0xb1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5c,
5442 0x1f, 0x7c, 0x00, 0x00, 0x37, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00,
5443 0x02, 0x99, 0x00, 0x05, 0x8a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
5444 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
5445 0xa8, 0x01, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05,
5446 0xf0, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07, 0x96, 0xe4, 0x01, 0x00,
5447 0x00, 0x00, 0x60, 0xa7, 0x97, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
5448 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
5449 0xcb, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xa8, 0x00, 0x2d, 0x1c,
5450 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x8a, 0xd0, 0x00, 0x00,
5451 0x00, 0x00, 0xa2, 0x40, 0x8b, 0xec, 0x00, 0x00, 0x8a, 0x00, 0x20, 0x40,
5452 0xe7, 0xb1, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5453 0xa4, 0x00, 0x2d, 0x45, 0xe0, 0xd1, 0x01, 0x00, 0xd9, 0x97, 0x9c, 0x17,
5454 0x80, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00,
5455 0xbe, 0x00, 0x2f, 0xab, 0x83, 0xb0, 0x01, 0x00, 0x35, 0x98, 0x00, 0x14,
5456 0x82, 0x50, 0x01, 0x00, 0xde, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5457 0xde, 0x97, 0x22, 0xf2, 0x82, 0x30, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x40,
5458 0x43, 0x99, 0x01, 0x00, 0xde, 0x97, 0x9f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
5459 0xbe, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x35, 0x98, 0x00, 0x40,
5460 0x81, 0x32, 0x01, 0x00, 0xa8, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
5461 0x9c, 0x00, 0x2d, 0x30, 0x81, 0xb0, 0x01, 0x00, 0x88, 0x00, 0x2d, 0xf0,
5462 0x84, 0xb0, 0x01, 0x00, 0x94, 0x00, 0x2d, 0xf2, 0x86, 0xb0, 0x01, 0x00,
5463 0xf2, 0x97, 0x23, 0xf0, 0x84, 0x6c, 0x00, 0x00, 0xe6, 0x97, 0x23, 0x92,
5464 0x87, 0x6c, 0x00, 0x00, 0xc9, 0x04, 0x00, 0xa6, 0x94, 0xb0, 0x01, 0x00,
5465 0xe8, 0x97, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6,
5466 0x94, 0xb0, 0x01, 0x00, 0x60, 0x89, 0x00, 0x4a, 0x94, 0x98, 0x01, 0x00,
5467 0xe8, 0x97, 0x68, 0x40, 0x81, 0x32, 0x00, 0x00, 0x04, 0x00, 0x22, 0x40,
5468 0xbd, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xb0, 0xb1, 0x01, 0x00,
5469 0xbf, 0x00, 0x2d, 0x42, 0xb2, 0xb1, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf3,
5470 0x80, 0xe0, 0x01, 0x00, 0xed, 0x97, 0xd4, 0x40, 0x81, 0x32, 0x00, 0x00,
5471 0x00, 0x00, 0x78, 0xda, 0x84, 0xc0, 0x01, 0x00, 0xf7, 0x97, 0x23, 0x40,
5472 0x84, 0x6c, 0x00, 0x00, 0x94, 0x00, 0x20, 0x9d, 0xe1, 0xb1, 0x01, 0x00,
5473 0xf7, 0x97, 0x00, 0x40, 0x84, 0xb0, 0x00, 0x00, 0xbf, 0x00, 0x2d, 0x43,
5474 0x84, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf3, 0x80, 0xe0, 0x01, 0x00,
5475 0xf7, 0x97, 0x23, 0x40, 0x84, 0x6c, 0x00, 0x00, 0x94, 0x00, 0x20, 0x9d,
5476 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x84, 0xb0, 0x01, 0x00,
5477 0xfb, 0x97, 0xa2, 0xf0, 0x38, 0x6c, 0x00, 0x00, 0x9c, 0x00, 0x20, 0x42,
5478 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x13, 0x94, 0x01, 0x00,
5479 0x00, 0x00, 0x80, 0x46, 0x19, 0x80, 0x01, 0x00, 0x9c, 0x00, 0x20, 0x42,
5480 0xe0, 0xb1, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5481 0x04, 0x00, 0x00, 0xf3, 0x80, 0xf4, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3,
5482 0x82, 0x88, 0x01, 0x00, 0x01, 0x98, 0x23, 0x41, 0x80, 0x6c, 0x00, 0x00,
5483 0x00, 0x00, 0x00, 0x5f, 0x13, 0x94, 0x01, 0x00, 0x00, 0x00, 0x89, 0x0c,
5484 0x80, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x86, 0x0c, 0x80, 0x32, 0x00, 0x00,
5485 0xbc, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xa0, 0x00, 0xa0, 0xf2,
5486 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x9f, 0x41, 0x24, 0xec, 0x00, 0x00,
5487 0x0d, 0x98, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x42,
5488 0x38, 0xec, 0x00, 0x00, 0x0d, 0x98, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
5489 0xb4, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x0f, 0x98, 0xa3, 0xf0,
5490 0x3a, 0x6c, 0x00, 0x00, 0x04, 0x00, 0xa4, 0x40, 0x81, 0x32, 0x00, 0x00,
5491 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x40,
5492 0x43, 0x99, 0x01, 0x00, 0x13, 0x98, 0x22, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
5493 0xb4, 0x00, 0x20, 0x1d, 0xe0, 0xb1, 0x01, 0x00, 0x80, 0x00, 0x2d, 0x5f,
5494 0x13, 0x94, 0x01, 0x00, 0x13, 0x98, 0x23, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
5495 0x80, 0x00, 0x20, 0x1d, 0xe0, 0xb1, 0x01, 0x00, 0xc0, 0x00, 0x20, 0x12,
5496 0xe0, 0xb1, 0x01, 0x00, 0xc4, 0x00, 0xa0, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
5497 0x27, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x42,
5498 0x8a, 0x30, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5499 0x00, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
5500 0xe0, 0xb1, 0x01, 0x00, 0x12, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
5501 0x1f, 0x98, 0x9f, 0x41, 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5502 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x12, 0x8c, 0xd0, 0x01, 0x00,
5503 0x20, 0x98, 0x00, 0x41, 0x24, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5504 0x8d, 0xb0, 0x01, 0x00, 0x78, 0x98, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5505 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
5506 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
5507 0x22, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xae, 0x94, 0x00, 0x40,
5508 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0x80, 0xb2, 0x01, 0x00,
5509 0x00, 0x00, 0xa7, 0x08, 0x80, 0x32, 0x01, 0x00, 0x32, 0x04, 0x00, 0x40,
5510 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x08, 0x8a, 0x30, 0x01, 0x00,
5511 0x2c, 0x98, 0xa2, 0x40, 0x95, 0x6c, 0x00, 0x00, 0xc3, 0x94, 0x00, 0x40,
5512 0x81, 0x32, 0x01, 0x00, 0x00, 0x82, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00,
5513 0xa0, 0x98, 0x2f, 0x40, 0x11, 0xb0, 0x01, 0x00, 0x30, 0x05, 0x00, 0x41,
5514 0x89, 0xb0, 0x00, 0x00, 0xcc, 0x00, 0x00, 0xa1, 0x80, 0xce, 0x01, 0x00,
5515 0x04, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xf8,
5516 0x3e, 0xec, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x12, 0xe0, 0xed, 0x00, 0x00,
5517 0xc8, 0x00, 0x20, 0xab, 0xe1, 0xb1, 0x01, 0x00, 0xcc, 0x00, 0xa0, 0x1f,
5518 0xe0, 0xb1, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00,
5519 0x38, 0x98, 0xa3, 0x5f, 0xe7, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5520 0xe7, 0xc1, 0x01, 0x00, 0xa6, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
5521 0x4c, 0x98, 0x22, 0xf2, 0x86, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x43,
5522 0x84, 0xf4, 0x01, 0x00, 0x01, 0x00, 0x00, 0x41, 0x80, 0xcc, 0x01, 0x00,
5523 0xb8, 0x00, 0x2d, 0x42, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x62, 0x40,
5524 0x86, 0xc0, 0x01, 0x00, 0x40, 0x98, 0x1f, 0x43, 0x80, 0x32, 0x00, 0x00,
5525 0x41, 0x98, 0xa2, 0x40, 0x87, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x62, 0x41,
5526 0x87, 0xb0, 0x01, 0x00, 0x45, 0x98, 0x9f, 0x40, 0x80, 0x32, 0x00, 0x00,
5527 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5528 0x84, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x80, 0xb0, 0x01, 0x00,
5529 0x00, 0x00, 0x00, 0xf2, 0x88, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x44,
5530 0x84, 0xf4, 0x01, 0x00, 0xb8, 0x00, 0x2e, 0x42, 0x80, 0xd0, 0x01, 0x00,
5531 0x00, 0x00, 0x62, 0x40, 0x88, 0xc0, 0x01, 0x00, 0x4b, 0x98, 0x1f, 0x44,
5532 0x80, 0x32, 0x00, 0x00, 0x4f, 0x98, 0xa2, 0x40, 0x89, 0x6c, 0x00, 0x00,
5533 0x4f, 0x98, 0x62, 0x41, 0x89, 0xb0, 0x00, 0x00, 0x03, 0x00, 0x62, 0x41,
5534 0x86, 0xe4, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
5535 0x01, 0x00, 0x62, 0x41, 0x88, 0xe4, 0x01, 0x00, 0xa4, 0x00, 0x20, 0x40,
5536 0xe5, 0xb1, 0x01, 0x00, 0xa2, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5537 0xbc, 0x00, 0x2e, 0x43, 0x87, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5538 0x86, 0xc0, 0x01, 0x00, 0x55, 0x98, 0x20, 0x43, 0x87, 0x6c, 0x00, 0x00,
5539 0x00, 0x00, 0x80, 0x43, 0xe5, 0xb1, 0x01, 0x00, 0x40, 0x01, 0x00, 0x43,
5540 0x80, 0xce, 0x01, 0x00, 0x00, 0x00, 0xa4, 0x43, 0xe4, 0x31, 0x01, 0x00,
5541 0x40, 0x01, 0xe2, 0x40, 0x87, 0x98, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x05,
5542 0x48, 0x6d, 0x00, 0x00, 0x04, 0x00, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00,
5543 0x88, 0x00, 0x2d, 0x44, 0x81, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf2,
5544 0x2e, 0xb0, 0x01, 0x00, 0x9c, 0x00, 0x2d, 0xf0, 0x86, 0xb0, 0x01, 0x00,
5545 0x90, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0xba, 0x00, 0x2d, 0xf0,
5546 0x98, 0xb0, 0x01, 0x00, 0x64, 0x98, 0xa2, 0x12, 0x98, 0x6c, 0x00, 0x00,
5547 0xbc, 0x00, 0x2d, 0xf2, 0x98, 0xb0, 0x01, 0x00, 0x64, 0x98, 0xa0, 0xf2,
5548 0x98, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x82, 0xb0, 0x01, 0x00,
5549 0x9c, 0x00, 0x20, 0x41, 0xe0, 0xb1, 0x01, 0x00, 0xb4, 0x00, 0x2d, 0x12,
5550 0x86, 0xd0, 0x01, 0x00, 0x67, 0x98, 0xa3, 0x41, 0xe0, 0x6d, 0x00, 0x00,
5551 0x68, 0x98, 0x00, 0xf0, 0x84, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
5552 0x84, 0xb0, 0x01, 0x00, 0x80, 0x00, 0x2d, 0x43, 0x84, 0xd0, 0x01, 0x00,
5553 0x6b, 0x98, 0x9f, 0x42, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5554 0x85, 0xb0, 0x01, 0x00, 0x6d, 0x98, 0xa3, 0x42, 0x14, 0x6c, 0x00, 0x00,
5555 0x6e, 0x98, 0x00, 0x0a, 0x0c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
5556 0x0c, 0xb0, 0x01, 0x00, 0x70, 0x98, 0xa0, 0x17, 0x0c, 0x6c, 0x00, 0x00,
5557 0x00, 0x00, 0x80, 0x17, 0x0c, 0xb0, 0x01, 0x00, 0x75, 0x98, 0x22, 0x40,
5558 0x0d, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x0c, 0xec, 0x00, 0x00,
5559 0x01, 0x00, 0x00, 0xf0, 0x82, 0xf4, 0x01, 0x00, 0x75, 0x98, 0xa0, 0x41,
5560 0x0c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xf0, 0x80, 0x32, 0x01, 0x00,
5561 0x29, 0x00, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x40,
5562 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb0, 0x01, 0x00,
5563 0xcb, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x00, 0x22, 0x03,
5564 0x80, 0x32, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
5565 0x00, 0x00, 0x00, 0x46, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5566 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x41, 0x87, 0x94, 0x01, 0x00,
5567 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
5568 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00,
5569 0x00, 0x00, 0x00, 0x49, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
5570 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
5571 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d,
5572 0x05, 0x90, 0x00, 0x00, 0x84, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5573 0x04, 0x00, 0xa2, 0x05, 0x48, 0x6d, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0c,
5574 0x96, 0xf4, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x07, 0x96, 0x6c, 0x00, 0x00,
5575 0x00, 0x00, 0x2e, 0x4b, 0x19, 0x90, 0x01, 0x00, 0x05, 0x00, 0x2a, 0x0c,
5576 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04, 0xe6, 0xb1, 0x01, 0x00,
5577 0x3e, 0x04, 0x00, 0x40, 0x89, 0x98, 0x01, 0x00, 0x02, 0x99, 0x00, 0x08,
5578 0x8a, 0x30, 0x01, 0x00, 0x8f, 0x98, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00,
5579 0x00, 0x10, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00, 0x95, 0x98, 0x28, 0x40,
5580 0x87, 0x30, 0x00, 0x00, 0x90, 0x98, 0x22, 0x48, 0x77, 0x7d, 0x00, 0x00,
5581 0x04, 0x00, 0x22, 0x40, 0x27, 0x6c, 0x00, 0x00, 0x04, 0x97, 0x1d, 0x46,
5582 0x87, 0xb0, 0x00, 0x00, 0x98, 0x98, 0x22, 0x5f, 0x11, 0x7c, 0x00, 0x00,
5583 0x04, 0x00, 0x22, 0x15, 0x62, 0x31, 0x00, 0x00, 0x96, 0x98, 0xa8, 0x40,
5584 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x40, 0x81, 0xb2, 0x01, 0x00,
5585 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x14, 0x2f, 0x4c,
5586 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
5587 0x9b, 0x98, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
5588 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
5589 0x30, 0x00, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5590 0x93, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0xb0, 0x01, 0x00,
5591 0xef, 0x98, 0x00, 0x49, 0x96, 0x30, 0x01, 0x00, 0x07, 0x00, 0x00, 0x49,
5592 0x06, 0xe4, 0x01, 0x00, 0x00, 0x39, 0x00, 0x03, 0x06, 0xc8, 0x01, 0x00,
5593 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xd0,
5594 0xa0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00,
5595 0xa2, 0x98, 0xa0, 0x54, 0x93, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x05,
5596 0x97, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
5597 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0xa2,
5598 0x44, 0xc9, 0x01, 0x00, 0xab, 0x98, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5599 0x00, 0x00, 0x00, 0x20, 0x49, 0xb3, 0x01, 0x00, 0xf5, 0x98, 0x00, 0x40,
5600 0x49, 0x31, 0x01, 0x00, 0x02, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5601 0x00, 0xb5, 0x2e, 0x08, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5602 0xf1, 0xb1, 0x01, 0x00, 0xb2, 0x98, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5603 0x18, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00, 0x00, 0x97, 0x2e, 0x40,
5604 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
5605 0xb6, 0x98, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5606 0x49, 0xb1, 0x01, 0x00, 0x40, 0x18, 0x2e, 0x05, 0x97, 0xb0, 0x01, 0x00,
5607 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0xba, 0x98, 0xa2, 0x41,
5608 0x97, 0x50, 0x00, 0x00, 0x57, 0x95, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5609 0x30, 0x94, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x64, 0x00, 0x00, 0x40,
5610 0xe5, 0x99, 0x01, 0x00, 0x56, 0x95, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
5611 0xb8, 0x94, 0x20, 0x41, 0xe5, 0xb1, 0x01, 0x00, 0xba, 0x94, 0x20, 0x41,
5612 0xe5, 0xb1, 0x01, 0x00, 0x98, 0x94, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
5613 0x02, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5614 0xf1, 0xb1, 0x01, 0x00, 0xc4, 0x98, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5615 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5616 0x6f, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x68, 0xb1, 0x01, 0x00,
5617 0xc8, 0x98, 0x85, 0x41, 0x97, 0x40, 0x00, 0x00, 0x80, 0x04, 0x00, 0x40,
5618 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x39, 0xb3, 0x01, 0x00,
5619 0x00, 0x00, 0x00, 0x40, 0x37, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5620 0x35, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x33, 0xb3, 0x01, 0x00,
5621 0x00, 0x00, 0x00, 0x40, 0x41, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5622 0x3f, 0xb3, 0x01, 0x00, 0xee, 0x05, 0x00, 0x40, 0x25, 0x9b, 0x01, 0x00,
5623 0x42, 0x00, 0x00, 0x40, 0x4b, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5624 0x2f, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2d, 0xb3, 0x01, 0x00,
5625 0x00, 0x00, 0x00, 0x40, 0x47, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5626 0x43, 0xb3, 0x01, 0x00, 0x60, 0x00, 0x00, 0x40, 0x2b, 0x9b, 0x01, 0x00,
5627 0x00, 0x00, 0x00, 0x54, 0xef, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55,
5628 0xf1, 0x93, 0x01, 0x00, 0xff, 0xff, 0x00, 0xa5, 0x3c, 0x8b, 0x01, 0x00,
5629 0x00, 0x00, 0x00, 0x2c, 0x5b, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c,
5630 0x45, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x59, 0xb3, 0x01, 0x00,
5631 0x00, 0x00, 0x00, 0x40, 0x57, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5632 0x27, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x53, 0xb3, 0x01, 0x00,
5633 0xe4, 0x98, 0xa2, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0xe4, 0x98, 0xa2, 0x51,
5634 0xfd, 0x7f, 0x00, 0x00, 0xe5, 0x98, 0x00, 0x40, 0x1d, 0xb3, 0x00, 0x00,
5635 0x50, 0x46, 0x00, 0x40, 0x1d, 0x9b, 0x01, 0x00, 0x00, 0xc0, 0x00, 0xa6,
5636 0x88, 0xb3, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xa6, 0x3a, 0xb3, 0x01, 0x00,
5637 0x00, 0xc0, 0x00, 0x9d, 0x3b, 0x9b, 0x01, 0x00, 0xb4, 0x05, 0x00, 0x40,
5638 0x23, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4d, 0xb3, 0x01, 0x00,
5639 0x08, 0x0a, 0x00, 0xa6, 0x14, 0xb3, 0x01, 0x00, 0x01, 0x01, 0x00, 0x8a,
5640 0x15, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x87, 0xb3, 0x01, 0x00,
5641 0x00, 0x80, 0x00, 0xa6, 0x56, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x5e,
5642 0x57, 0xb5, 0x01, 0x00, 0x18, 0x00, 0x00, 0x4b, 0x20, 0xe4, 0x01, 0x00,
5643 0x06, 0x00, 0x00, 0x4b, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x43, 0x00, 0x4b,
5644 0x96, 0xc8, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, 0x20, 0xdc, 0x01, 0x00,
5645 0x00, 0x00, 0x00, 0x4b, 0x20, 0x94, 0x01, 0x00, 0x00, 0x00, 0x80, 0x57,
5646 0x21, 0x90, 0x01, 0x00, 0x00, 0x99, 0x2e, 0x0a, 0x97, 0xb0, 0x01, 0x00,
5647 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0xf6, 0x98, 0xa2, 0x41,
5648 0x97, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
5649 0x00, 0xa9, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5650 0xf1, 0xb1, 0x01, 0x00, 0xfa, 0x98, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5651 0x30, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55,
5652 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
5653 0xfe, 0x98, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xfe, 0x98, 0xa2, 0x41,
5654 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
5655 0x10, 0x00, 0x00, 0x4e, 0x98, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07,
5656 0x98, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x99, 0xe0, 0x01, 0x00,
5657 0x00, 0x00, 0x00, 0x80, 0x98, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
5658 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x88, 0x94, 0x01, 0x00,
5659 0x08, 0x99, 0x6a, 0x40, 0x81, 0x32, 0x00, 0x00, 0x0b, 0x99, 0x22, 0x4f,
5660 0x77, 0x7d, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5661 0x00, 0x00, 0x00, 0x4f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
5662 0x62, 0xb1, 0x01, 0x00, 0x0c, 0x99, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
5663 0x13, 0x99, 0x22, 0x4a, 0x89, 0x7c, 0x00, 0x00, 0x11, 0x99, 0x22, 0x4f,
5664 0x77, 0x7d, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5665 0x00, 0x00, 0x00, 0x45, 0x62, 0xb1, 0x01, 0x00, 0x11, 0x99, 0xa8, 0x40,
5666 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x40, 0x81, 0xb2, 0x01, 0x00,
5667 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0xa2, 0x5a,
5668 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0f, 0x98, 0xf4, 0x01, 0x00,
5669 0x04, 0x00, 0xa2, 0x5f, 0x99, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
5670 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
5671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5744 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5745 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5746 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5747 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5748 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5749 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5750 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5751 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5752 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5753 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5760 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5761 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5762 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5763 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5764 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5765 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5767 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5768 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5769 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5770 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5771 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5772 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5773 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5774 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5775 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5776 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5777 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5778 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5779 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5780 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5787 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5788 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5789 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5790 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5791 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5792 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5793 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5794 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5795 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5796 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5797 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5798 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5799 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5800 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5801 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5802 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5803 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5804 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5805 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5806 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5807 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5808 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5809 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5810 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5811 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5812 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5813 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5814 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5815 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5816 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5817 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5818 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5819 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5820 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5821 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5822 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5823 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5824 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5825 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5826 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5827 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5828 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5829 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5830 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5831 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5832 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5833 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5834 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5840 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5841 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5842 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5843 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5844 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5845 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5846 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5847 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5848 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5849 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5850 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5851 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5852 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5853 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5854 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5855 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5856 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5857 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5858 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5859 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5860 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5861 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5862 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5863 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5864 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5865 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5866 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5867 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5868 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5869 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5870 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5871 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5872 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5873 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5874 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5875 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5876 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5877 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5878 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5879 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5880 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5881 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5882 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5883 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5884 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5885 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5886 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5887 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5888 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5889 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5890 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5891 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5892 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5893 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5894 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5895 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5896 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5897 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5898 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5899 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5900 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5901 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5902 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5903 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5904 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5905 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5906 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5907 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5908 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5909 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5910 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5911 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5912 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5913 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5914 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5915 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5916 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5917 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5918 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5919 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5920 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5921 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5922 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5923 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5924 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5925 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5926 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5927 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5928 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5929 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5930 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5931 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5932 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5933 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5934 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5935 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5936 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5937 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5938 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5939 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5940 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5941 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5942 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5943 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5944 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5945 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5946 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5947 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5948 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5949 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5950 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5951 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5952 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5953 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5954 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5955 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5956 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5957 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5958 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5959 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5960 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5961 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5962 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5963 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5964 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5965 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5966 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5967 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5968 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5969 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5970 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5971 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5972 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5973 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5974 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5975 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5976 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5977 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5978 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5979 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5980 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5981 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5982 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5983 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5984 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5985 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5986 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5987 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5988 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5989 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5990 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5991 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5992 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5993 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5994 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5995 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5996 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5997 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5998 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5999 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6000 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6001 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6002 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6003 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6004 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6005 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6006 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6007 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6008 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6009 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6010 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6011 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6012 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6013 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6014 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6015 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6016 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6017 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6018 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6019 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6020 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6021 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6022 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6023 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6024 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6025 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6026 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6027 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6028 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6029 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6030 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6031 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6032 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6033 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6034 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6035 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6036 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6037 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6038 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6039 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6040 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6041 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6042 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6043 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6044 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6045 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6046 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6047 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6048 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6049 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6050 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6051 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6052 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6053 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6054 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6055 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6056 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6057 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6058 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6059 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6060 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6061 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6062 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6063 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6064 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6065 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6066 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6067 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6068 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6069 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6070 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6071 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6072 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6073 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6074 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6075 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6076 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6077 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6078 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6079 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6080 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6081 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6082 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6083 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6084 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6085 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6086 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6087 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6088 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6089 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6090 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6091 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6092 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6093 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6094 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6095 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6096 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6097 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6098 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6099 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6100 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6101 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6102 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6103 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6104 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6105 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6106 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6107 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6108 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6109 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6110 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6111 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6112 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6113 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6114 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6115 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6116 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6117 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6118 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6119 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6120 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6121 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6122 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6123 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6124 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6125 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6126 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6127 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6128 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6129 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6130 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6131 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6132 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6133 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6134 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6135 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6136 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6137 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6138 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6139 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6140 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6141 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6142 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6143 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6144 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6145 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6146 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6147 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6148 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6149 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6150 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6151 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6152 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6153 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6154 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6155 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6156 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6157 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6158 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6159 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6160 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6161 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6162 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6163 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6164 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6165 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6166 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6167 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6168 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6169 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6170 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6171 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6172 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6173 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6174 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6175 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6176 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6177 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6178 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6179 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6180 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6181 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6182 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6183 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6184 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6185 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6186 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6187 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6188 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6189 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6190 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6191 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6192 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6193 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6194 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6195 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6196 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6197 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6198 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6199 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6200 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6201 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6202 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6203 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6204 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6205 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6206 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6207 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6208 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6209 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6210 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6211 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6212 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6213 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6214 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6215 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6216 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6217 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6218 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6219 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6220 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6221 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6222 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6223 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6224 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6225 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6226 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6227 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6228 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6229 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6230 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6231 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6232 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6233 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6234 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6235 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6236 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6237 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6238 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6239 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6240 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6241 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6242 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6243 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6244 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6245 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6246 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6247 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6248 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6249 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6250 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6251 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6252 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6253 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6254 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6255 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6256 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6257 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6258 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6259 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6260 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6261 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6262 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6263 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6264 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6265 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6266 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6267 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6268 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6269 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6270 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6271 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6272 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6273 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6274 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6275 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6276 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6277 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6278 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6279 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6280 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6281 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6282 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6283 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6284 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6285 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6286 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6287 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6288 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6289 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6290 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6291 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6292 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6293 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6294 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6295 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6296 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6297 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6298 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6299 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6300 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6301 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6302 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6303 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6304 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6305 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6306 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6307 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6308 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6309 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6310 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6311 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6312 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6313 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6314 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6315 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6316 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6317 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6318 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6319 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6320 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6321 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6322 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6323 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6324 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6325 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6326 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6327 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6328 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6329 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6330 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6331 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6332 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6333 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6334 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6335 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6336 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6337 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6338 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6339 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6340 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6341 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6342 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6343 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6344 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6345 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6346 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6347 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6348 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6349 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6350 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6351 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6352 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6353 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6376 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6377 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6378 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6379 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6380 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6381 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6382 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6383 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6384 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6385 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6386 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6387 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6388 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6389 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6390 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6391 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6392 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6393 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6394 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6395 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6396 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6397 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6398 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6399 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6400 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6401 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6402 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6403 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6404 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6405 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6406 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6407 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6408 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6409 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6410 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6411 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6412 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6413 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6414 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6415 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6416 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6417 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6418 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6419 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6420 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6421 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6422 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6423 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6424 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6425 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6426 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6427 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6428 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6429 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6430 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6431 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6432 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6433 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6434 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6435 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6436 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6437 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6438 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6439 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6440 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6441 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6442 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6443 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6444 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6445 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6446 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6447 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6448 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6449 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6450 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6451 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6454 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6455 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6456 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6457 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6458 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6459 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6460 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6461 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6465 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6466 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6467 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6468 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6469 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6470 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6471 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6472 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6473 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6474 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6475 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6476 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6483 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6484 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6485 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6486 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6487 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6488 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6492 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6493 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6494 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6495 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6496 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6497 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6498 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6499 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6500 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6501 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6502 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6503 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6504 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6505 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6506 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6507 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6508 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6509 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6510 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6511 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6512 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6513 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6514 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6515 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6516 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6517 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6518 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6519 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6520 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6524 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6525 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6526 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6527 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6528 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6529 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6530 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6531 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6532 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6533 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6534 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6535 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6536 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6537 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6538 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6539 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6540 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6541 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6542 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6543 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6544 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6545 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6546 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6547 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6548 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6549 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6550 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6551 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6552 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6553 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6554 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6555 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6556 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6557 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6558 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6559 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6560 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6561 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6562 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6563 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6564 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6565 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6566 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6567 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6568 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6569 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6570 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6571 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6572 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6573 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6574 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6575 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6577 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6578 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6579 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6580 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6581 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6582 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6583 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6584 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6585 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6586 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6587 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6588 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6589 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6590 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6591 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6592 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6593 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6594 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6595 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6596 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6597 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6598 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6599 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6600 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6601 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6602 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6603 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6604 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6605 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6606 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6607 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6608 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6609 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6610 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6611 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6612 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6614 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6615 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6616 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6617 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6618 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6619 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6620 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6621 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6622 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6623 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6624 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6625 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6626 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6627 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6628 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6629 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6630 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6631 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6632 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6633 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6638 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6639 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6640 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6641 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6642 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6643 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6644 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6645 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6646 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6647 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6648 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6649 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6650 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6651 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6652 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6653 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6654 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6655 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6656 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6657 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6658 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6659 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6660 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6661 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6662 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6663 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6664 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6665 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6666 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6668 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6670 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6744 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6745 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6746 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6747 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6748 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6749 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6750 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6751 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6752 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6753 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6760 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6761 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6762 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6763 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6764 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6765 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6767 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6768 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6769 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6770 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6771 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6772 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6773 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6774 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6775 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6776 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6777 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6778 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6779 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6780 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6787 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6788 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6789 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88,
6790 0x9a, 0xb0, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00,
6791 0xae, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88,
6792 0x9a, 0xb0, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00,
6793 0x00, 0x00, 0x00, 0x88, 0x9a, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x41, 0x40,
6794 0x81, 0x32, 0x00, 0x00, 0xb2, 0x9f, 0x22, 0x40, 0x7b, 0x6f, 0x00, 0x00,
6795 0x00, 0x00, 0x19, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40,
6796 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x19, 0x41, 0x7b, 0xb3, 0x01, 0x00,
6797 0x00, 0x00, 0x00, 0xa4, 0xc4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1,
6798 0xc6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x2f, 0xa2, 0xc8, 0xb3, 0x01, 0x00,
6799 0x08, 0x14, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00, 0xa8, 0x9f, 0x00, 0x4d,
6800 0x9a, 0xcc, 0x01, 0x00, 0xbb, 0x9f, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
6801 0x00, 0x00, 0x00, 0x4c, 0x49, 0xc1, 0x01, 0x00, 0xb9, 0x9f, 0xa2, 0x41,
6802 0x9b, 0x50, 0x00, 0x00, 0xbf, 0x9f, 0x80, 0x80, 0x80, 0x32, 0x00, 0x00,
6803 0x00, 0x00, 0x52, 0x49, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
6804 0xfd, 0x93, 0x01, 0x00, 0xc2, 0x9f, 0x00, 0x42, 0xcd, 0x93, 0x00, 0x00,
6805 0x00, 0x00, 0x51, 0x4a, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
6806 0xfd, 0x93, 0x01, 0x00, 0xc2, 0x9f, 0x00, 0x43, 0xcb, 0x93, 0x00, 0x00,
6807 0x00, 0x00, 0x50, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xd2, 0x9f, 0x00, 0x40,
6808 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x9a, 0xb0, 0x01, 0x00,
6809 0x00, 0x00, 0x00, 0x44, 0x49, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x40, 0xf0,
6810 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0x4d, 0x80, 0xb2, 0x01, 0x00,
6811 0xca, 0x9f, 0x00, 0x40, 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x40,
6812 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0xd1, 0x01, 0x00,
6813 0x00, 0x00, 0x00, 0xf0, 0x9a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d,
6814 0x10, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x49, 0xb1, 0x01, 0x00,
6815 0x00, 0x00, 0x00, 0xe3, 0x43, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe4,
6816 0x45, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7b, 0xb3, 0x01, 0x00,
6817 0x00, 0x00, 0x48, 0x4f, 0x40, 0xb1, 0x01, 0x00, 0xd2, 0x9f, 0x00, 0x40,
6818 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6819 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6820 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6821 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0xcb,
6822 0x81, 0xc8, 0x01, 0x00, 0x22, 0x83, 0x00, 0x40, 0xf2, 0x93, 0x00, 0x00,
6823 0x55, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x05, 0x00, 0x40,
6824 0x81, 0xb2, 0x00, 0x00, 0x18, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6825 0x22, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc6, 0x82, 0x00, 0x40,
6826 0x81, 0xb2, 0x00, 0x00, 0x43, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6827 0x41, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb8, 0x80, 0x00, 0x40,
6828 0x81, 0xb2, 0x00, 0x00, 0xed, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6829 0x23, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x27, 0x83, 0x00, 0x40,
6830 0x81, 0xb2, 0x00, 0x00, 0xb9, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6831 0x8d, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x79, 0x94, 0x00, 0x40,
6832 0x81, 0xb2, 0x00, 0x00, 0x78, 0x98, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6833 0x87, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x10, 0x95, 0x00, 0x40,
6834 0x81, 0xb2, 0x00, 0x00, 0x0a, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6835 0xb1, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x19, 0x99, 0x00, 0x40,
6836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6840 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6841 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6842 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6843 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6844 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6845 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6846 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6847 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6848 0x81, 0xb2, 0x00, 0x00,
6849 },
6850};
diff --git a/drivers/staging/slicoss/oasisdownload.h b/drivers/staging/slicoss/oasisdownload.h
new file mode 100644
index 00000000000..6438c23d754
--- /dev/null
+++ b/drivers/staging/slicoss/oasisdownload.h
@@ -0,0 +1,6848 @@
1#define OASIS_UCODE_VERS_STRING "1.2"
2#define OASIS_UCODE_VERS_DATE "2006/03/27 15:10:37"
3#define OASIS_UCODE_HOSTIF_ID 3
4
5static s32 ONumSections = 0x2;
6static u32 OSectionSize[] = {
7 0x00004000, 0x00010000,
8};
9
10static u32 OSectionStart[] = {
11 0x00000000, 0x00008000,
12};
13
14static u8 OasisUCode[2][65536] =
15{
16 {
17 0x15, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x40,
18 0x81, 0xb2, 0x00, 0x00, 0x21, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
19 0x03, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
20 0x98, 0xb0, 0x01, 0x00, 0x04, 0x80, 0xa2, 0x40, 0xfd, 0x7f, 0x00, 0x00,
21 0x09, 0x00, 0xa2, 0x49, 0xdd, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
22 0x80, 0xb2, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xd1, 0xb1, 0x00, 0x00,
23 0x00, 0x00, 0x00, 0x4c, 0x80, 0xb2, 0x01, 0x00, 0x09, 0x00, 0xa2, 0x40,
24 0x75, 0x7d, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
25 0x0b, 0x00, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0x09, 0x00, 0x00, 0x40,
26 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x8f, 0x98, 0x18, 0x31, 0x00, 0x00,
27 0x10, 0x00, 0x00, 0x98, 0x80, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x41, 0x98,
28 0x80, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
29 0x10, 0x00, 0x00, 0x98, 0x80, 0xe4, 0x01, 0x00, 0x0e, 0x00, 0x40, 0x98,
30 0x80, 0x94, 0x00, 0x00, 0x11, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
31 0x00, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x19, 0x00, 0x29, 0x40,
32 0x81, 0x32, 0x00, 0x00, 0x19, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
33 0x0e, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
34 0x81, 0xb2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
35 0x10, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x1f, 0x00, 0x29, 0x40,
36 0x81, 0x32, 0x00, 0x00, 0x1f, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
37 0x12, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40,
38 0x81, 0xb2, 0x01, 0x00, 0x01, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
39 0x20, 0x00, 0x00, 0x40, 0xa5, 0x99, 0x01, 0x00, 0x25, 0x00, 0x29, 0x40,
40 0x81, 0x32, 0x00, 0x00, 0x25, 0x00, 0x14, 0xbc, 0x80, 0x32, 0x00, 0x00,
41 0x14, 0x00, 0x93, 0xbc, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
42 0xdd, 0x81, 0x01, 0x00, 0x12, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
43 0x33, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2a, 0x00, 0x14, 0xbc,
44 0x80, 0x32, 0x00, 0x00, 0xfe, 0x00, 0x13, 0xbc, 0x80, 0x32, 0x00, 0x00,
45 0x54, 0x95, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0xff, 0xff, 0x00, 0x40,
46 0xe5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x40, 0x49, 0xb1, 0x01, 0x00,
47 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
48 0xfd, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xb3, 0x01, 0x00,
49 0x33, 0x00, 0x18, 0xee, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
50 0x89, 0xb0, 0x01, 0x00, 0x32, 0x00, 0xa2, 0x41, 0x89, 0x50, 0x00, 0x00,
51 0x99, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x30, 0x94, 0x00, 0x40,
52 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x20, 0xb1, 0x01, 0x00,
53 0x00, 0x00, 0x00, 0xfa, 0xe0, 0xb3, 0x01, 0x00, 0x39, 0x00, 0x98, 0xee,
54 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x80, 0xb0, 0x01, 0x00,
55 0x3b, 0x00, 0x80, 0xf3, 0xde, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
56 0xfd, 0x93, 0x01, 0x00, 0x3e, 0x00, 0x83, 0xf3, 0x80, 0x32, 0x00, 0x00,
57 0xf0, 0x00, 0x00, 0xf3, 0x80, 0x88, 0x01, 0x00, 0x01, 0x80, 0x00, 0x40,
58 0x2e, 0xdd, 0x01, 0x00, 0x00, 0x94, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
59 0x00, 0x00, 0x00, 0x46, 0x43, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa,
60 0x24, 0xb1, 0x01, 0x00, 0x7c, 0x00, 0x18, 0xee, 0x80, 0x32, 0x00, 0x00,
61 0x45, 0x00, 0x95, 0xe8, 0x80, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0xe8,
62 0x80, 0x88, 0x01, 0x00, 0x7c, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
63 0x00, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
64 0xec, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd6, 0xb1, 0x01, 0x00,
65 0x08, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
66 0xd6, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0xf8, 0xee, 0x8b, 0x01, 0x00,
67 0x08, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0xff, 0x00, 0x00, 0xf0,
68 0x80, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x81, 0x94, 0x01, 0x00,
69 0x00, 0x00, 0x00, 0x40, 0xd6, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0xf8,
70 0x80, 0x88, 0x01, 0x00, 0x3c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
71 0xff, 0x00, 0x00, 0xf0, 0xd6, 0x8d, 0x01, 0x00, 0xff, 0xff, 0x00, 0xf0,
72 0xf0, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0x81, 0xe0, 0x01, 0x00,
73 0x00, 0x00, 0x00, 0xf8, 0x81, 0x94, 0x01, 0x00, 0x3c, 0x01, 0x00, 0x40,
74 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xd6, 0xb1, 0x01, 0x00,
75 0xff, 0x00, 0x00, 0xf8, 0x80, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
76 0x81, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x81, 0x94, 0x01, 0x00,
77 0x3c, 0x02, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
78 0xd6, 0xb1, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
79 0x00, 0x00, 0x00, 0xf8, 0xd6, 0xb1, 0x01, 0x00, 0x1e, 0x00, 0x00, 0xf0,
80 0x82, 0xf4, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xf8, 0x80, 0xd8, 0x01, 0x00,
81 0x64, 0x00, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
82 0x81, 0xd0, 0x01, 0x00, 0xff, 0xff, 0x00, 0x40, 0x80, 0xd8, 0x01, 0x00,
83 0x00, 0x00, 0x00, 0x41, 0x80, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
84 0xd8, 0xb1, 0x01, 0x00, 0x68, 0x00, 0x22, 0xfa, 0x80, 0x30, 0x00, 0x00,
85 0x00, 0x00, 0x00, 0x4c, 0x81, 0xe0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x40,
86 0x80, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xde, 0xb1, 0x01, 0x00,
87 0x00, 0x01, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0xfa,
88 0x80, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x81, 0x94, 0x01, 0x00,
89 0x00, 0x00, 0x00, 0x40, 0xd6, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40,
90 0xd5, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0xfa, 0x80, 0xe4, 0x01, 0x00,
91 0x00, 0x00, 0x00, 0xf6, 0x81, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
92 0xd6, 0xb1, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
93 0x10, 0x00, 0x00, 0xfb, 0xd6, 0xe5, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40,
94 0xd5, 0x99, 0x01, 0x00, 0x18, 0x00, 0x00, 0xfb, 0xd6, 0xe5, 0x01, 0x00,
95 0x48, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0xfa,
96 0xd6, 0xe5, 0x01, 0x00, 0x50, 0x00, 0x00, 0x40, 0xd5, 0x99, 0x01, 0x00,
97 0x10, 0x00, 0x00, 0xfb, 0xd6, 0xe5, 0x01, 0x00, 0x03, 0x00, 0x00, 0xfb,
98 0x7a, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xdc, 0xb1, 0x01, 0x00,
99 0x7c, 0x00, 0x00, 0x4c, 0xdd, 0x91, 0x00, 0x00, 0x7c, 0x00, 0x95, 0xe8,
100 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xe9, 0xfa, 0xb3, 0x01, 0x00,
101 0x00, 0x00, 0x00, 0x40, 0xd1, 0xb1, 0x01, 0x00, 0xff, 0x00, 0x00, 0x42,
102 0x80, 0x88, 0x01, 0x00, 0x34, 0x00, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
103 0x7c, 0x00, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x85, 0x00, 0x00, 0x40,
104 0x81, 0x32, 0x01, 0x00, 0x02, 0x80, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00,
105 0x7c, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
106 0x81, 0xb0, 0x01, 0x00, 0x8e, 0x00, 0x09, 0xf9, 0x81, 0x32, 0x00, 0x00,
107 0x8c, 0x00, 0x08, 0xf9, 0x81, 0x32, 0x00, 0x00, 0x98, 0x00, 0x1f, 0xfd,
108 0xf9, 0x33, 0x00, 0x00, 0x8b, 0x00, 0x9e, 0xfd, 0x81, 0x32, 0x00, 0x00,
109 0x00, 0x00, 0x00, 0x4a, 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48,
110 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf7, 0xb3, 0x01, 0x00,
111 0x00, 0x00, 0x80, 0x49, 0xf3, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
112 0x19, 0xb1, 0x01, 0x00, 0x93, 0x00, 0x0a, 0xf9, 0x81, 0x32, 0x00, 0x00,
113 0x00, 0x00, 0x40, 0xfb, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0xfd,
114 0x81, 0xb2, 0x01, 0x00, 0x00, 0x07, 0x80, 0xf9, 0xf3, 0x8f, 0x01, 0x00,
115 0x00, 0x07, 0x42, 0xf9, 0xf3, 0x8f, 0x01, 0x00, 0x97, 0x00, 0xa2, 0xff,
116 0xf7, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x43, 0x40, 0x81, 0xb2, 0x01, 0x00,
117 0x00, 0x00, 0xa2, 0xff, 0xfb, 0xef, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc,
118 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb0, 0x01, 0x00,
119 0x00, 0x94, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xbb, 0x00, 0x00, 0x40,
120 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x46, 0xfd, 0x7f, 0x01, 0x00,
121 0x00, 0x94, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xce, 0x00, 0x00, 0x40,
122 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x44, 0xfd, 0x7f, 0x01, 0x00,
123 0x00, 0x94, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
124 0xf1, 0xb1, 0x01, 0x00, 0xff, 0x7f, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
125 0xff, 0x7f, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x9a, 0x13, 0x00, 0x40,
126 0xf5, 0x99, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
127 0x01, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40,
128 0xf5, 0x99, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
129 0x00, 0x02, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x03, 0x01, 0x00, 0x40,
130 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
131 0x9a, 0x13, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x40,
132 0xf5, 0x99, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
133 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
134 0xf5, 0x99, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
135 0x08, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x40,
136 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
137 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x02, 0x29, 0x00, 0x40,
138 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
139 0x00, 0x67, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
140 0xf5, 0x99, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
141 0x00, 0x00, 0x80, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
142 0xfd, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0xfd, 0x83, 0x01, 0x00,
143 0xff, 0x7f, 0x00, 0x40, 0x25, 0x99, 0x01, 0x00, 0xc4, 0x00, 0x00, 0x40,
144 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x44, 0x80, 0xb2, 0x00, 0x00,
145 0x00, 0x00, 0x00, 0x45, 0xfd, 0x93, 0x01, 0x00, 0xe2, 0x00, 0x00, 0x40,
146 0x83, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x45, 0x80, 0x32, 0x01, 0x00,
147 0x00, 0x00, 0x80, 0x46, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
148 0x83, 0x98, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x40, 0x2b, 0x31, 0x01, 0x00,
149 0x00, 0x00, 0xa2, 0x46, 0x88, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
150 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x94, 0x8c, 0xb0, 0x01, 0x00,
151 0xff, 0xff, 0x00, 0x46, 0x80, 0x88, 0x01, 0x00, 0xa5, 0xa5, 0xa2, 0x40,
152 0x80, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0xf0, 0x01, 0x00,
153 0xc9, 0x00, 0x82, 0x41, 0x89, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
154 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xfd, 0x83, 0x01, 0x00,
155 0xd4, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x44,
156 0x80, 0xb2, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x08, 0x83, 0x30, 0x01, 0x00,
157 0x00, 0x00, 0xa2, 0x45, 0x80, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x44,
158 0xfd, 0x93, 0x01, 0x00, 0x00, 0x30, 0x00, 0x08, 0x83, 0x98, 0x01, 0x00,
159 0x80, 0x00, 0x00, 0x40, 0x2b, 0x99, 0x01, 0x00, 0xdb, 0x00, 0x00, 0x40,
160 0x89, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x46, 0x80, 0xb2, 0x00, 0x00,
161 0xff, 0xff, 0x00, 0x94, 0x80, 0x88, 0x01, 0x00, 0xa5, 0xa5, 0xa2, 0x40,
162 0x80, 0x4e, 0x01, 0x00, 0x00, 0x00, 0x80, 0x43, 0x89, 0xb0, 0x01, 0x00,
163 0x03, 0x84, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00, 0xde, 0x00, 0x00, 0x40,
164 0x81, 0xb2, 0x00, 0x00, 0x03, 0x88, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00,
165 0x00, 0x00, 0x00, 0x20, 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0x96,
166 0x80, 0xb2, 0x00, 0x00, 0xdf, 0x00, 0xa2, 0x41, 0x8d, 0x50, 0x00, 0x00,
167 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xff, 0x7f, 0x00, 0x40,
168 0x25, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xe0, 0x01, 0x00,
169 0xdd, 0x00, 0x00, 0x44, 0x82, 0x14, 0x01, 0x00, 0x00, 0x00, 0x90, 0x94,
170 0x8a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xf0, 0xb1, 0x01, 0x00,
171 0x10, 0x00, 0x00, 0x45, 0x88, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
172 0x89, 0xd0, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x44, 0x2b, 0x41, 0x01, 0x00,
173 0xec, 0x00, 0x08, 0x41, 0x80, 0x32, 0x00, 0x00, 0xed, 0x00, 0x00, 0x94,
174 0x24, 0xb1, 0x00, 0x00, 0x10, 0x00, 0x00, 0x94, 0x24, 0xf5, 0x01, 0x00,
175 0x00, 0x00, 0x00, 0x94, 0xf0, 0xb1, 0x01, 0x00, 0xf2, 0x00, 0xa0, 0x44,
176 0x89, 0x50, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x44, 0x2b, 0x41, 0x01, 0x00,
177 0x00, 0x00, 0x00, 0x94, 0xf0, 0xb1, 0x01, 0x00, 0xef, 0x00, 0x20, 0x44,
178 0x89, 0x50, 0x00, 0x00, 0x10, 0x00, 0x00, 0x45, 0x88, 0xf4, 0x01, 0x00,
179 0x00, 0x00, 0x00, 0xfa, 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x42,
180 0x89, 0xd0, 0x00, 0x00, 0xf7, 0x00, 0xa0, 0xfa, 0x8a, 0x40, 0x00, 0x00,
181 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc0, 0x01, 0x00, 0xf5, 0x00, 0xa3, 0x42,
182 0x89, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x45, 0x88, 0x88, 0x01, 0x00,
183 0x10, 0x00, 0x00, 0x45, 0x8a, 0xf4, 0x01, 0x00, 0xfc, 0x00, 0x90, 0x44,
184 0x8a, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8b, 0xc0, 0x01, 0x00,
185 0xff, 0xff, 0x00, 0x45, 0x8a, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x80, 0x50,
186 0x8b, 0xe0, 0x01, 0x00, 0xff, 0x7f, 0x00, 0x40, 0x25, 0x99, 0x01, 0x00,
187 0x7c, 0x00, 0x00, 0x40, 0x2b, 0x99, 0x01, 0x00, 0x00, 0x30, 0x00, 0x40,
188 0x83, 0x98, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x08, 0x83, 0x14, 0x01, 0x00,
189 0x00, 0x00, 0x00, 0x94, 0x2a, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
190 0xf9, 0x9b, 0x01, 0x00, 0xdd, 0x00, 0x00, 0xfc, 0x19, 0x31, 0x01, 0x00,
191 0x00, 0x00, 0x40, 0x94, 0x80, 0xb2, 0x01, 0x00, 0xdd, 0x00, 0x00, 0x44,
192 0x2b, 0x41, 0x01, 0x00, 0x00, 0x00, 0x41, 0x94, 0x80, 0xb2, 0x01, 0x00,
193 0x00, 0x00, 0x00, 0x41, 0xf9, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
194 0x2b, 0xc1, 0x01, 0x00, 0x04, 0x01, 0x9f, 0x94, 0x80, 0x32, 0x00, 0x00,
195 0x02, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x10, 0x01, 0x00, 0x51,
196 0x93, 0xb0, 0x00, 0x00, 0x10, 0x01, 0x00, 0x4d, 0x93, 0xb0, 0x00, 0x00,
197 0x10, 0x01, 0x00, 0x49, 0x93, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
198 0x93, 0xb0, 0x01, 0x00, 0x10, 0x01, 0xa2, 0x41, 0x93, 0x50, 0x00, 0x00,
199 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40,
200 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x11, 0x40, 0x81, 0xb2, 0x01, 0x00,
201 0x00, 0x00, 0x12, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x13, 0x40,
202 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x14, 0x40, 0x81, 0xb2, 0x01, 0x00,
203 0x00, 0x00, 0x15, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x16, 0x40,
204 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x17, 0x40, 0x81, 0xb2, 0x01, 0x00,
205 0x00, 0x00, 0x18, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x19, 0x40,
206 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x40, 0x81, 0xb2, 0x01, 0x00,
207 0x00, 0x00, 0x1b, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x40,
208 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x40, 0x81, 0xb2, 0x01, 0x00,
209 0x00, 0x00, 0x1e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x40,
210 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x70, 0x40, 0x81, 0xb2, 0x01, 0x00,
211 0x00, 0x00, 0x71, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x72, 0x40,
212 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x73, 0x40, 0x81, 0xb2, 0x01, 0x00,
213 0x00, 0x00, 0x74, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x75, 0x40,
214 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x76, 0x40, 0x81, 0xb2, 0x01, 0x00,
215 0x00, 0x00, 0x77, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x78, 0x40,
216 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x79, 0x40, 0x81, 0xb2, 0x01, 0x00,
217 0x00, 0x00, 0x7a, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7b, 0x40,
218 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x40, 0x81, 0xb2, 0x01, 0x00,
219 0x00, 0x00, 0x7d, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7e, 0x40,
220 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x81, 0xb2, 0x01, 0x00,
221 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40,
222 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xa1, 0xd1, 0x01, 0x00,
223 0x00, 0x00, 0x00, 0x40, 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
224 0x19, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
225 0x00, 0x00, 0x00, 0x40, 0x15, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
226 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00,
227 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
228 0x0d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0b, 0xb0, 0x01, 0x00,
229 0x00, 0x00, 0x00, 0x40, 0x09, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
230 0x07, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
231 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
232 0x01, 0xb0, 0x01, 0x00, 0x3b, 0x01, 0x20, 0x48, 0xa1, 0x51, 0x00, 0x00,
233 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x47, 0x01, 0x22, 0x4b,
234 0x74, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
235 0x60, 0x00, 0x00, 0x4b, 0x60, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb1,
236 0x7e, 0xb1, 0x01, 0x00, 0x48, 0x01, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
237 0x45, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x05, 0x00, 0x80, 0x40,
238 0x97, 0x98, 0x01, 0x00, 0x18, 0x00, 0x00, 0xaa, 0x96, 0x88, 0x01, 0x00,
239 0x00, 0x00, 0x80, 0x43, 0x97, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0xaa,
240 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
241 0x00, 0x00, 0x00, 0x58, 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x40,
242 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00,
243 0xd8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40,
244 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x07, 0x90, 0x01, 0x00,
245 0xd8, 0x9f, 0x00, 0x40, 0xbf, 0xb3, 0x00, 0x00, 0x5a, 0x01, 0x22, 0xcc,
246 0x85, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x07, 0x90, 0x01, 0x00,
247 0xd8, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
248 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00,
249 0xd0, 0x14, 0x00, 0x40, 0xa1, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
250 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf1, 0xb1, 0x01, 0x00,
251 0x00, 0x00, 0x00, 0xd0, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
252 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe1, 0xb1, 0x01, 0x00,
253 0x07, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20,
254 0x62, 0xdd, 0x01, 0x00, 0x63, 0x01, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
255 0x00, 0x00, 0x00, 0xcc, 0x85, 0x93, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40,
256 0x81, 0x32, 0x01, 0x00, 0xd0, 0x14, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
257 0x00, 0x00, 0x00, 0xfa, 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa,
258 0xa4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbc, 0xb3, 0x01, 0x00,
259 0x00, 0x14, 0x2f, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe7,
260 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xa9, 0xb3, 0x01, 0x00,
261 0xff, 0x00, 0x00, 0xdd, 0x81, 0x88, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40,
262 0x80, 0xf4, 0x01, 0x00, 0x73, 0x01, 0x00, 0x40, 0x80, 0xc8, 0x01, 0x00,
263 0x86, 0x01, 0x00, 0xdd, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
264 0x10, 0xb1, 0x00, 0x00, 0x87, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
265 0x88, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x89, 0x01, 0x00, 0x40,
266 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
267 0x8b, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x40,
268 0x81, 0xb2, 0x00, 0x00, 0x8f, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
269 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x40,
270 0x81, 0xb2, 0x00, 0x00, 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
271 0xc4, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x40,
272 0x81, 0xb2, 0x00, 0x00, 0x82, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
273 0x83, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00, 0xb8, 0x02, 0x00, 0x40,
274 0x81, 0xb2, 0x28, 0x00, 0xd4, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00,
275 0xd5, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00, 0xd6, 0x9f, 0x00, 0x40,
276 0x81, 0xb2, 0x28, 0x00, 0xd7, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x28, 0x00,
277 0x72, 0x01, 0x00, 0x41, 0x81, 0xc0, 0x28, 0x00, 0x55, 0x01, 0x51, 0x49,
278 0xfd, 0x93, 0x28, 0x00, 0x55, 0x01, 0x52, 0x4a, 0xfd, 0x93, 0x2a, 0x00,
279 0x55, 0x01, 0x55, 0x49, 0xfd, 0x83, 0x2a, 0x00, 0x55, 0x01, 0x56, 0x4a,
280 0xfd, 0x83, 0x2a, 0x00, 0x50, 0x01, 0x91, 0x81, 0x80, 0x30, 0x2a, 0x00,
281 0x55, 0x01, 0x45, 0x40, 0x81, 0xb2, 0x2a, 0x00, 0x50, 0x01, 0x91, 0x82,
282 0x80, 0x30, 0x2a, 0x00, 0x55, 0x01, 0x46, 0x40, 0x81, 0xb2, 0x2a, 0x00,
283 0x00, 0x00, 0x00, 0x40, 0x89, 0xb0, 0x2b, 0x00, 0x00, 0x00, 0x2f, 0x40,
284 0x81, 0xb0, 0x01, 0x00, 0x00, 0x14, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
285 0xb3, 0x01, 0x22, 0xde, 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
286 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
287 0x92, 0x01, 0xa2, 0x44, 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
288 0x49, 0xd1, 0x01, 0x00, 0x9a, 0x01, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00,
289 0x96, 0x01, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x50, 0x01, 0x00, 0x41,
290 0xbf, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xbf, 0xb3, 0x01, 0x00,
291 0x50, 0x01, 0xa0, 0x0f, 0xbd, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde,
292 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0xc1, 0x01, 0x00,
293 0xb5, 0x01, 0x00, 0x40, 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x42, 0x40,
294 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff, 0x85, 0xb0, 0x01, 0x00,
295 0x00, 0x00, 0x00, 0xde, 0x19, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x42, 0xff,
296 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff, 0xe1, 0xb1, 0x01, 0x00,
297 0x00, 0x00, 0x00, 0x44, 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x2f, 0xff,
298 0xe1, 0xb1, 0x01, 0x00, 0x08, 0x14, 0x00, 0xa4, 0x80, 0xcc, 0x01, 0x00,
299 0xaa, 0x01, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
300 0x85, 0xc0, 0x01, 0x00, 0xa8, 0x01, 0xa2, 0x4c, 0x81, 0x50, 0x00, 0x00,
301 0xb4, 0x01, 0x22, 0xd2, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x01, 0x22, 0x41,
302 0xa5, 0x6f, 0x00, 0x00, 0x50, 0x01, 0xa2, 0xe0, 0x81, 0x32, 0x00, 0x00,
303 0x00, 0x00, 0x00, 0xd2, 0xc1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
304 0x89, 0x90, 0x01, 0x00, 0x00, 0x00, 0x40, 0x42, 0x80, 0xb2, 0x01, 0x00,
305 0x00, 0x00, 0x41, 0x43, 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
306 0x88, 0x94, 0x01, 0x00, 0x55, 0x01, 0x00, 0x44, 0xe0, 0xb1, 0x00, 0x00,
307 0xb1, 0x01, 0x00, 0x48, 0x49, 0xc1, 0x00, 0x00, 0xaf, 0x01, 0x00, 0x5b,
308 0x89, 0x90, 0x00, 0x00, 0xa8, 0x9f, 0x00, 0xa0, 0x9e, 0xb0, 0x00, 0x00,
309 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x14, 0x00, 0x40,
310 0x49, 0x99, 0x01, 0x00, 0x00, 0x00, 0x23, 0x40, 0x81, 0xb0, 0x01, 0x00,
311 0xbe, 0x01, 0x22, 0xde, 0xe1, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
312 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
313 0xb9, 0x01, 0xa2, 0x44, 0x81, 0x6c, 0x00, 0x00, 0x50, 0x01, 0x00, 0x43,
314 0xbf, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb1, 0x01, 0x00,
315 0x00, 0x00, 0x40, 0xf8, 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0xf0,
316 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
317 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x55, 0x01, 0x00, 0x40,
318 0xe1, 0xb1, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x40, 0x91, 0xb0, 0x00, 0x00,
319 0x00, 0x00, 0x00, 0x41, 0x91, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2e, 0x40,
320 0x49, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00,
321 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0xcb, 0x01, 0x00, 0x40,
322 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00,
323 0xd1, 0x01, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00, 0x53, 0x01, 0x00, 0xde,
324 0xa1, 0xb3, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
325 0xe5, 0x01, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00, 0xeb, 0x01, 0x00, 0x40,
326 0x81, 0xb2, 0x00, 0x00, 0x52, 0x01, 0x00, 0xdf, 0xe1, 0xb1, 0x00, 0x00,
327 0x00, 0x00, 0x00, 0xd0, 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde,
328 0xa1, 0xb1, 0x01, 0x00, 0x02, 0x00, 0x00, 0xd2, 0xa5, 0xe7, 0x01, 0x00,
329 0x00, 0x00, 0x00, 0xd2, 0xc1, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
330 0xf0, 0xb1, 0x01, 0x00, 0xdb, 0x01, 0x22, 0x44, 0xc1, 0x53, 0x00, 0x00,
331 0xda, 0x01, 0x84, 0x41, 0x81, 0x40, 0x00, 0x00, 0xde, 0x01, 0x00, 0x40,
332 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x45, 0xb1, 0x01, 0x00,
333 0xd5, 0x01, 0x00, 0x41, 0xa1, 0xc1, 0x00, 0x00, 0xda, 0x02, 0x00, 0x40,
334 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
335 0x55, 0x01, 0x00, 0xdd, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
336 0x81, 0xb0, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00,
337 0xda, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x40, 0x00, 0x00, 0xd3,
338 0xa7, 0xcb, 0x01, 0x00, 0xf8, 0x02, 0x00, 0xe0, 0xa5, 0xb3, 0x00, 0x00,
339 0x03, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00, 0x53, 0x01, 0x00, 0xde,
340 0xa1, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xbf, 0xb3, 0x01, 0x00,
341 0x00, 0x00, 0x00, 0xde, 0x81, 0x90, 0x01, 0x00, 0x50, 0x01, 0xa2, 0xba,
342 0x80, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0xde, 0x61, 0x99, 0x01, 0x00,
343 0xe8, 0x01, 0xa8, 0xb1, 0x80, 0x30, 0x00, 0x00, 0x52, 0x01, 0x00, 0x40,
344 0xe0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xba, 0xb3, 0x01, 0x00,
345 0x6b, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x60, 0x02, 0x00, 0x4d,
346 0x83, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe1, 0xb3, 0x01, 0x00,
347 0x00, 0x00, 0x00, 0x44, 0xe3, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
348 0xe5, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xe9, 0xb3, 0x01, 0x00,
349 0x00, 0x00, 0x00, 0x44, 0xeb, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
350 0xf5, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf7, 0xb3, 0x01, 0x00,
351 0x00, 0x00, 0x00, 0x44, 0xf9, 0xb3, 0x01, 0x00, 0xf9, 0x01, 0x22, 0x40,
352 0x8f, 0x6f, 0x00, 0x00, 0x78, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
353 0x60, 0x02, 0x00, 0xc7, 0x83, 0x30, 0x01, 0x00, 0x80, 0x02, 0x00, 0x40,
354 0x81, 0x98, 0x01, 0x00, 0x60, 0x02, 0x00, 0x42, 0x83, 0x30, 0x01, 0x00,
355 0x00, 0x00, 0x00, 0xe8, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe9,
356 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xea, 0xf1, 0xb1, 0x01, 0x00,
357 0x00, 0x00, 0x00, 0xeb, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x85,
358 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xec, 0xf1, 0xb1, 0x01, 0x00,
359 0x00, 0x00, 0x00, 0xed, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb2,
360 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa9, 0xf0, 0xb1, 0x01, 0x00,
361 0x00, 0x00, 0x00, 0xac, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab,
362 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xf0, 0xb1, 0x01, 0x00,
363 0x00, 0x00, 0x00, 0xb9, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xba,
364 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xbb, 0xf0, 0xb1, 0x01, 0x00,
365 0x0c, 0x02, 0xb8, 0x40, 0x81, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
366 0x81, 0x90, 0x01, 0x00, 0x0e, 0x02, 0xb9, 0x40, 0x81, 0x32, 0x00, 0x00,
367 0x00, 0x00, 0x00, 0x41, 0x81, 0x90, 0x01, 0x00, 0x10, 0x02, 0xba, 0x40,
368 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x81, 0x90, 0x01, 0x00,
369 0x12, 0x02, 0xbb, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
370 0x81, 0x90, 0x01, 0x00, 0x14, 0x02, 0xbc, 0x40, 0x81, 0x32, 0x00, 0x00,
371 0x00, 0x00, 0x00, 0x44, 0x81, 0x90, 0x01, 0x00, 0x16, 0x02, 0xbd, 0x40,
372 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x81, 0x90, 0x01, 0x00,
373 0x18, 0x02, 0xbe, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
374 0x81, 0x90, 0x01, 0x00, 0x1a, 0x02, 0xbf, 0x40, 0x81, 0x32, 0x00, 0x00,
375 0x00, 0x00, 0x00, 0x47, 0x81, 0x90, 0x01, 0x00, 0x1c, 0x02, 0xc8, 0x40,
376 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x81, 0x90, 0x01, 0x00,
377 0x1e, 0x02, 0xc9, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49,
378 0x81, 0x90, 0x01, 0x00, 0x20, 0x02, 0xca, 0x40, 0x81, 0x32, 0x00, 0x00,
379 0x00, 0x00, 0x00, 0x4a, 0x81, 0x90, 0x01, 0x00, 0x22, 0x02, 0xcb, 0x40,
380 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x81, 0x90, 0x01, 0x00,
381 0x24, 0x02, 0xcc, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
382 0x81, 0x90, 0x01, 0x00, 0x26, 0x02, 0xcd, 0x40, 0x81, 0x32, 0x00, 0x00,
383 0x00, 0x00, 0x00, 0x4d, 0x81, 0x90, 0x01, 0x00, 0x28, 0x02, 0xce, 0x40,
384 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x81, 0x90, 0x01, 0x00,
385 0x2a, 0x02, 0xcf, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
386 0x81, 0x90, 0x01, 0x00, 0x2c, 0x02, 0xf0, 0x40, 0x81, 0x32, 0x00, 0x00,
387 0x00, 0x00, 0x00, 0x50, 0x81, 0x90, 0x01, 0x00, 0x2e, 0x02, 0xf1, 0x40,
388 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x81, 0x90, 0x01, 0x00,
389 0x30, 0x02, 0xf2, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
390 0x81, 0x90, 0x01, 0x00, 0x32, 0x02, 0xf3, 0x40, 0x81, 0x32, 0x00, 0x00,
391 0x00, 0x00, 0x00, 0x53, 0x81, 0x90, 0x01, 0x00, 0x34, 0x02, 0xf4, 0x40,
392 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x81, 0x90, 0x01, 0x00,
393 0x36, 0x02, 0xf5, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
394 0x81, 0x90, 0x01, 0x00, 0x38, 0x02, 0xf6, 0x40, 0x81, 0x32, 0x00, 0x00,
395 0x00, 0x00, 0x00, 0x56, 0x81, 0x90, 0x01, 0x00, 0x3a, 0x02, 0xf7, 0x40,
396 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0x90, 0x01, 0x00,
397 0x3c, 0x02, 0xf8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
398 0x81, 0x90, 0x01, 0x00, 0x3e, 0x02, 0xf9, 0x40, 0x81, 0x32, 0x00, 0x00,
399 0x00, 0x00, 0x00, 0x59, 0x81, 0x90, 0x01, 0x00, 0x40, 0x02, 0xfa, 0x40,
400 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x81, 0x90, 0x01, 0x00,
401 0x42, 0x02, 0xfb, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b,
402 0x81, 0x90, 0x01, 0x00, 0x44, 0x02, 0xfc, 0x40, 0x81, 0x32, 0x00, 0x00,
403 0x00, 0x00, 0x00, 0x5c, 0x81, 0x90, 0x01, 0x00, 0x46, 0x02, 0xfd, 0x40,
404 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x81, 0x90, 0x01, 0x00,
405 0x48, 0x02, 0xfe, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e,
406 0x81, 0x90, 0x01, 0x00, 0x4a, 0x02, 0xff, 0x40, 0x81, 0x32, 0x00, 0x00,
407 0x00, 0x00, 0x00, 0x5f, 0x81, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
408 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0xa5, 0x9b, 0x01, 0x00,
409 0xd8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40,
410 0x81, 0x32, 0x01, 0x00, 0xd0, 0x14, 0x2e, 0x06, 0xa5, 0xb3, 0x01, 0x00,
411 0x40, 0x00, 0x00, 0xd3, 0xa7, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
412 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xf1, 0xb1, 0x01, 0x00,
413 0x00, 0x00, 0x00, 0xf2, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf4,
414 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xf1, 0xb1, 0x01, 0x00,
415 0x00, 0x00, 0x00, 0xfa, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
416 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf1, 0xb1, 0x01, 0x00,
417 0x00, 0x00, 0x00, 0xeb, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee,
418 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xef, 0xf1, 0xb1, 0x01, 0x00,
419 0x00, 0x00, 0x00, 0xf3, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6,
420 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xf1, 0xb1, 0x01, 0x00,
421 0xdb, 0x01, 0x00, 0xc7, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
422 0x81, 0xb2, 0x01, 0x00, 0x66, 0x02, 0x00, 0x48, 0x80, 0x32, 0x00, 0x00,
423 0x00, 0x00, 0x51, 0x40, 0x1a, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x4d, 0x40,
424 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
425 0x63, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x5f, 0x02, 0x49, 0x40,
426 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x52, 0x40, 0x1c, 0xb1, 0x01, 0x00,
427 0x00, 0x00, 0x4e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40,
428 0x81, 0xb2, 0x01, 0x00, 0x68, 0x02, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
429 0x5f, 0x02, 0x4a, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
430 0x9e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xd8, 0xb3, 0x01, 0x00,
431 0x00, 0x00, 0x00, 0xa1, 0xd0, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2,
432 0xd2, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xd4, 0xb3, 0x01, 0x00,
433 0x00, 0x00, 0x00, 0xd0, 0xd6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1,
434 0xdc, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xde, 0xb3, 0x01, 0x00,
435 0x00, 0x00, 0x00, 0x88, 0xda, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4,
436 0x8e, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xe6, 0xb3, 0x01, 0x00,
437 0x00, 0x00, 0x00, 0xac, 0xec, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x99,
438 0xfa, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe0, 0xb3, 0x01, 0x00,
439 0x00, 0x00, 0x00, 0xd5, 0xe2, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
440 0xe4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe8, 0xb3, 0x01, 0x00,
441 0x00, 0x00, 0x00, 0xd5, 0xea, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5,
442 0xf4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd5, 0xf6, 0xb3, 0x01, 0x00,
443 0x00, 0x00, 0x00, 0xd5, 0xf8, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc7,
444 0xa9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0xb1, 0x01, 0x00,
445 0x84, 0x02, 0x00, 0x40, 0x91, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
446 0x91, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x40, 0xa3, 0x9b, 0x01, 0x00,
447 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0x88, 0x02, 0x00, 0x40,
448 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xb1, 0x00, 0x00,
449 0x8d, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x98, 0x02, 0x00, 0x40,
450 0x81, 0xb2, 0x00, 0x00, 0x98, 0x02, 0x00, 0x46, 0xa3, 0xb3, 0x00, 0x00,
451 0x9b, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x40,
452 0x81, 0xb2, 0x00, 0x00, 0x8f, 0x02, 0x23, 0x50, 0xa5, 0x6f, 0x00, 0x00,
453 0x00, 0x00, 0x00, 0x50, 0xa5, 0xb3, 0x01, 0x00, 0xe8, 0x02, 0x00, 0x42,
454 0xa5, 0x63, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
455 0xd0, 0x14, 0x2d, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
456 0xba, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde, 0xa1, 0xb1, 0x01, 0x00,
457 0x00, 0x00, 0x00, 0xf8, 0x00, 0xb0, 0x01, 0x00, 0x97, 0x02, 0x22, 0x44,
458 0xa5, 0x53, 0x00, 0x00, 0x94, 0x02, 0x00, 0x41, 0xa1, 0xc1, 0x00, 0x00,
459 0x55, 0x01, 0x00, 0xdd, 0xa1, 0xb1, 0x00, 0x00, 0xe8, 0x02, 0x00, 0xde,
460 0xa1, 0x33, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
461 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
462 0xbf, 0xb3, 0x01, 0x00, 0x50, 0x01, 0xa2, 0xd2, 0x77, 0x7d, 0x00, 0x00,
463 0x00, 0x00, 0x00, 0xd2, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xde,
464 0x63, 0xb1, 0x01, 0x00, 0x9e, 0x02, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
465 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xe8, 0x02, 0x00, 0x54,
466 0xa5, 0x33, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
467 0xd0, 0x14, 0x2d, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
468 0xd0, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd2, 0xb3, 0x01, 0x00,
469 0x00, 0x00, 0x00, 0xf8, 0xd4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
470 0xd6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0xb1, 0x01, 0x00,
471 0xac, 0x02, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x60, 0x02, 0x00, 0x46,
472 0x83, 0x30, 0x01, 0x00, 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
473 0x00, 0x00, 0x00, 0xa0, 0x9e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe8,
474 0x43, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x45, 0xb1, 0x01, 0x00,
475 0x00, 0x00, 0x00, 0xea, 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xeb,
476 0xa1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x40, 0xb1, 0x01, 0x00,
477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
481 0xd0, 0x14, 0x2e, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
482 0xa3, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc1, 0xb3, 0x01, 0x00,
483 0x08, 0x00, 0x00, 0xdd, 0x81, 0xf4, 0x01, 0x00, 0xbd, 0x02, 0x00, 0x40,
484 0x10, 0xc9, 0x00, 0x00, 0xc3, 0x02, 0x00, 0x05, 0x81, 0xb0, 0x00, 0x00,
485 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xcb, 0x02, 0x00, 0x05,
486 0x81, 0xb0, 0x00, 0x00, 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
487 0xd0, 0x02, 0x00, 0x44, 0xa5, 0xb3, 0x00, 0x00, 0xd2, 0x02, 0x00, 0x44,
488 0xa5, 0xb3, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0xa4, 0xe7, 0x01, 0x00,
489 0x00, 0x00, 0x00, 0xe0, 0x81, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0xc1,
490 0xf0, 0x89, 0x01, 0x00, 0xc8, 0x02, 0x22, 0x41, 0x81, 0x50, 0x00, 0x00,
491 0xc4, 0x02, 0x00, 0x41, 0xc1, 0xc3, 0x00, 0x00, 0xda, 0x02, 0x00, 0x40,
492 0x81, 0x32, 0x01, 0x00, 0xf8, 0x02, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
493 0x55, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40,
494 0xa4, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x91, 0xb1, 0x01, 0x00,
495 0xff, 0xff, 0x00, 0xc9, 0xf0, 0x89, 0x01, 0x00, 0xc8, 0x02, 0x22, 0x41,
496 0x81, 0x50, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x41, 0xc1, 0xc3, 0x00, 0x00,
497 0xff, 0xff, 0x00, 0xde, 0x85, 0x89, 0x01, 0x00, 0xc8, 0x02, 0x00, 0xc2,
498 0xe0, 0xb1, 0x00, 0x00, 0xff, 0xff, 0x00, 0xde, 0x95, 0x89, 0x01, 0x00,
499 0xc8, 0x02, 0x00, 0xca, 0xe0, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
500 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
501 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
502 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xa7, 0xb3, 0x01, 0x00,
503 0x00, 0x00, 0x00, 0xd8, 0xa9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
504 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00,
505 0x00, 0x00, 0x00, 0x20, 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2,
506 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf1, 0xb1, 0x01, 0x00,
507 0x00, 0x00, 0x00, 0xd4, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
508 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x61, 0xb1, 0x01, 0x00,
509 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00, 0xe2, 0x02, 0xa8, 0x40,
510 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcc, 0x85, 0x93, 0x01, 0x00,
511 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
512 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
513 0x00, 0x00, 0x00, 0xe7, 0xa7, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd8,
514 0xa9, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
515 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
516 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xf1, 0xb1, 0x01, 0x00,
517 0x00, 0x00, 0x00, 0xd0, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3,
518 0xf1, 0xb1, 0x01, 0x00, 0xe1, 0x02, 0x00, 0xd4, 0xe1, 0xb1, 0x00, 0x00,
519 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
520 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xcc,
524 0x85, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xb0, 0x01, 0x00,
525 0xfa, 0x02, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0xf9, 0x02, 0xa2, 0xf2,
526 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xcc, 0x85, 0x83, 0x01, 0x00,
527 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
528 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
529 0xb5, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x41,
530 0x99, 0xb3, 0x01, 0x00, 0x0a, 0x03, 0x22, 0x44, 0x81, 0x6c, 0x00, 0x00,
531 0x12, 0x03, 0x22, 0x48, 0x81, 0x6c, 0x00, 0x00, 0x0c, 0x03, 0x22, 0x4c,
532 0x81, 0x6c, 0x00, 0x00, 0x16, 0x03, 0x22, 0x50, 0x81, 0x6c, 0x00, 0x00,
533 0x17, 0x03, 0x22, 0x54, 0x81, 0x6c, 0x00, 0x00, 0x19, 0x03, 0x22, 0x58,
534 0x81, 0x6c, 0x00, 0x00, 0x1e, 0x03, 0x22, 0x5c, 0x81, 0x6c, 0x00, 0x00,
535 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc,
536 0x09, 0xb0, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0xca, 0x01, 0xb0, 0x00, 0x00,
537 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
538 0xf3, 0x83, 0x01, 0x00, 0x10, 0x03, 0xa2, 0x42, 0x05, 0x6c, 0x00, 0x00,
539 0x00, 0x00, 0x00, 0x41, 0x05, 0xb0, 0x01, 0x00, 0xdd, 0x9f, 0x22, 0xca,
540 0x07, 0x14, 0x00, 0x00, 0xdd, 0x9f, 0x00, 0x45, 0xf3, 0x93, 0x00, 0x00,
541 0xdd, 0x9f, 0x20, 0x43, 0x95, 0x6f, 0x00, 0x00, 0xdd, 0x9f, 0x80, 0xca,
542 0x05, 0x30, 0x00, 0x00, 0xdd, 0x9f, 0x22, 0x01, 0x80, 0x30, 0x00, 0x00,
543 0xdd, 0x9f, 0x00, 0xcb, 0xdb, 0x91, 0x00, 0x00, 0x57, 0x01, 0x00, 0xbc,
544 0xab, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xb1, 0xb3, 0x01, 0x00,
545 0xdd, 0x9f, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00, 0xff, 0x00, 0x00, 0xca,
546 0x81, 0x88, 0x01, 0x00, 0xdd, 0x9f, 0xa2, 0x40, 0x74, 0x7d, 0x00, 0x00,
547 0x60, 0x00, 0x20, 0x40, 0x60, 0x99, 0x01, 0x00, 0x1b, 0x03, 0xa8, 0xb1,
548 0x82, 0x30, 0x00, 0x00, 0x1a, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
549 0xdd, 0x9f, 0x00, 0xca, 0x79, 0xb3, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
550 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00,
551 0x00, 0x00, 0x00, 0x43, 0xcb, 0x83, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
552 0x81, 0xb2, 0x01, 0x00, 0x22, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
553 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
554 0x81, 0xb2, 0x01, 0x00, 0x2d, 0x03, 0x91, 0x82, 0x82, 0x30, 0x00, 0x00,
555 0x00, 0x00, 0x00, 0x8a, 0x80, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40,
556 0x80, 0xce, 0x01, 0x00, 0x2b, 0x03, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
557 0x2d, 0x03, 0x56, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb5, 0x03, 0x00, 0x40,
558 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
559 0xb5, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52,
560 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00,
561 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
562 0xcd, 0x83, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
563 0x32, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0x40,
564 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00,
565 0x3d, 0x03, 0x91, 0x81, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89,
566 0x80, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00,
567 0x3b, 0x03, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x3d, 0x03, 0x55, 0x40,
568 0x81, 0xb2, 0x00, 0x00, 0xb5, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
569 0x00, 0x00, 0x00, 0x52, 0x07, 0x90, 0x01, 0x00, 0xb5, 0x03, 0x00, 0x40,
570 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
571 0xd8, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00, 0xb0, 0x03, 0x00, 0x40,
572 0xa1, 0x99, 0x01, 0x00, 0xc4, 0x14, 0x2f, 0x40, 0x99, 0xb3, 0x01, 0x00,
573 0x57, 0x01, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
574 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
575 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
577 0x30, 0x94, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x90, 0x00, 0xf8,
578 0x80, 0x98, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf2, 0x88, 0xe4, 0x01, 0x00,
579 0x20, 0x00, 0x00, 0x40, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
580 0x23, 0x91, 0x01, 0x00, 0x4d, 0x03, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
581 0x30, 0x00, 0x00, 0x40, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
582 0x23, 0x91, 0x01, 0x00, 0x50, 0x03, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
583 0x40, 0x00, 0x00, 0x40, 0x20, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
584 0x23, 0x91, 0x01, 0x00, 0x53, 0x03, 0x1f, 0x91, 0x80, 0x32, 0x00, 0x00,
585 0x00, 0x00, 0x00, 0x5f, 0x23, 0x91, 0x01, 0x00, 0x55, 0x03, 0x1f, 0x91,
586 0x80, 0x32, 0x00, 0x00, 0x00, 0x08, 0x80, 0x40, 0x20, 0x99, 0x01, 0x00,
587 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
588 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x48, 0x84, 0x84, 0x00, 0x00,
589 0x00, 0x00, 0x00, 0x5f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
590 0x8f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x62, 0xb1, 0x01, 0x00,
591 0x5a, 0x03, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x08, 0x00, 0x47,
592 0x8e, 0xc8, 0x01, 0x00, 0x58, 0x03, 0x00, 0x5c, 0x8f, 0x80, 0x00, 0x00,
593 0xe0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x58, 0x15, 0x2d, 0x40,
594 0x8d, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2d, 0xf0, 0x88, 0xb0, 0x01, 0x00,
595 0x00, 0x00, 0x00, 0xfa, 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
596 0x81, 0xb0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x45, 0x82, 0x88, 0x01, 0x00,
597 0x00, 0x00, 0x00, 0x43, 0x8b, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
598 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x82, 0x94, 0x01, 0x00,
599 0x20, 0x00, 0x00, 0x41, 0x60, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
600 0x8d, 0xc0, 0x01, 0x00, 0x74, 0x03, 0x22, 0x5f, 0x8d, 0x6c, 0x00, 0x00,
601 0x65, 0x03, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x63, 0x03, 0x00, 0x40,
602 0x81, 0xb2, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x85, 0x98, 0x01, 0x00,
603 0x00, 0x00, 0x00, 0x44, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
604 0x86, 0xb0, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x43, 0x86, 0xd8, 0x01, 0x00,
605 0x00, 0x00, 0xa6, 0x41, 0x85, 0x50, 0x01, 0x00, 0x70, 0x03, 0x00, 0x41,
606 0x83, 0xe0, 0x00, 0x00, 0x6e, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
607 0x00, 0x00, 0x00, 0x48, 0x85, 0xe0, 0x01, 0x00, 0xd0, 0x14, 0x2f, 0x46,
608 0x84, 0x94, 0x01, 0x00, 0x20, 0x00, 0x00, 0x42, 0x60, 0x99, 0x01, 0x00,
609 0xc0, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
610 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
611 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
612 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
614 0x81, 0xb2, 0x00, 0x00, 0x07, 0x00, 0x00, 0x45, 0x80, 0x88, 0x01, 0x00,
615 0x00, 0x00, 0x00, 0x43, 0x8b, 0xf0, 0x01, 0x00, 0x00, 0x04, 0x00, 0x40,
616 0x83, 0x98, 0x01, 0x00, 0x85, 0x03, 0xa0, 0x41, 0x81, 0x50, 0x00, 0x00,
617 0x83, 0x03, 0x00, 0x41, 0x82, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
618 0x8e, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
619 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
620 0x49, 0xb1, 0x01, 0x00, 0x00, 0x02, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
621 0x00, 0x39, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
622 0xf1, 0xb1, 0x01, 0x00, 0x8b, 0x03, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
623 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x44,
624 0x82, 0xf4, 0x01, 0x00, 0x1a, 0x15, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00,
625 0x70, 0x15, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x08, 0x00, 0x40,
626 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
627 0x00, 0x39, 0x00, 0x40, 0xe1, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
628 0x61, 0x99, 0x01, 0x00, 0x70, 0x15, 0x00, 0x43, 0x62, 0x99, 0x01, 0x00,
629 0x95, 0x03, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x97, 0x03, 0x22, 0x5a,
630 0x73, 0x7d, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
631 0x98, 0x03, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0x00, 0x08, 0x00, 0x42,
632 0x84, 0xc8, 0x01, 0x00, 0x90, 0x03, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
633 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x58, 0x15, 0x2d, 0x40,
636 0x8d, 0xb0, 0x01, 0x00, 0xd0, 0x14, 0x2d, 0xf0, 0x88, 0xb0, 0x01, 0x00,
637 0x00, 0x00, 0x00, 0x40, 0x8f, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6,
638 0x90, 0xb0, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x48, 0x90, 0x98, 0x01, 0x00,
639 0x00, 0x00, 0x00, 0x45, 0x93, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa,
640 0x8a, 0xb0, 0x01, 0x00, 0x80, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
641 0x02, 0x00, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00, 0xac, 0x03, 0x22, 0x40,
642 0x82, 0x6c, 0x00, 0x00, 0xb0, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
643 0x58, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
644 0x8d, 0xc0, 0x01, 0x00, 0xb5, 0x03, 0x22, 0x5f, 0x8d, 0x6c, 0x00, 0x00,
645 0xa7, 0x03, 0xa2, 0x41, 0x93, 0x50, 0x00, 0x00, 0xa5, 0x03, 0x00, 0x40,
646 0x81, 0xb2, 0x00, 0x00, 0xff, 0x07, 0x00, 0x47, 0x84, 0x88, 0x01, 0x00,
647 0x00, 0x00, 0xa6, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xed, 0x9f, 0x00, 0x47,
648 0x80, 0x30, 0x01, 0x00, 0x00, 0x02, 0x00, 0x47, 0x8e, 0xc8, 0x01, 0x00,
649 0xb0, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
650 0x50, 0xb3, 0x01, 0x00, 0xbb, 0x03, 0x20, 0x18, 0x89, 0x6c, 0x00, 0x00,
651 0x04, 0x00, 0x00, 0xa6, 0x84, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
652 0x86, 0xb0, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40, 0x55, 0x9b, 0x01, 0x00,
653 0xbe, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0xa6,
654 0x84, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00,
655 0x00, 0x10, 0x00, 0x40, 0x55, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
656 0x50, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x4f, 0xb3, 0x01, 0x00,
657 0x00, 0x00, 0x00, 0x43, 0x4e, 0xd3, 0x01, 0x00, 0x6e, 0x03, 0x00, 0x40,
658 0x81, 0x32, 0x01, 0x00, 0x82, 0x03, 0x00, 0x42, 0x80, 0x30, 0x01, 0x00,
659 0xb0, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc7, 0x03, 0x22, 0xa7,
660 0x8f, 0x6c, 0x00, 0x00, 0x5a, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
661 0xc4, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
662 0x81, 0xb2, 0x01, 0x00, 0xc8, 0x14, 0x2e, 0xbb, 0x85, 0xb0, 0x01, 0x00,
663 0x00, 0x00, 0x00, 0xee, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
664 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xa0, 0xb3, 0x01, 0x00,
665 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xca,
666 0xa7, 0x33, 0x01, 0x00, 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd6, 0x03, 0x22, 0x42,
668 0x75, 0x6f, 0x00, 0x00, 0xd8, 0x03, 0x22, 0x41, 0x75, 0x6f, 0x00, 0x00,
669 0xda, 0x03, 0x1e, 0xca, 0x81, 0x32, 0x00, 0x00, 0xdc, 0x03, 0x1f, 0xca,
670 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xc9, 0xb1, 0x01, 0x00,
671 0xdd, 0x9f, 0x00, 0x42, 0x75, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
672 0xcd, 0xb1, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0x41, 0x75, 0xb3, 0x00, 0x00,
673 0x00, 0x00, 0x00, 0xca, 0xcf, 0xb1, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0x40,
674 0x75, 0xb3, 0x00, 0x00, 0x00, 0x81, 0x00, 0xa6, 0xc6, 0xb1, 0x01, 0x00,
675 0xdd, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6,
676 0xc6, 0xb1, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0x40, 0x75, 0xb3, 0x00, 0x00,
677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
678 0x81, 0xb2, 0x00, 0x00, 0x45, 0x01, 0x00, 0x4d, 0x93, 0x30, 0x01, 0x00,
679 0x45, 0x01, 0x00, 0x4e, 0x93, 0x30, 0x01, 0x00, 0x45, 0x01, 0x00, 0x4c,
680 0x93, 0x30, 0x01, 0x00, 0xec, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
681 0xdd, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x54, 0x95, 0x00, 0x40,
684 0x45, 0x99, 0x01, 0x00, 0xdd, 0x9f, 0x00, 0xca, 0xe5, 0xb1, 0x00, 0x00,
685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
689 0xcc, 0x14, 0x2e, 0x40, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2,
690 0xa0, 0xb3, 0x01, 0x00, 0x15, 0x04, 0x00, 0x43, 0xb2, 0x33, 0x01, 0x00,
691 0x00, 0x00, 0x68, 0xda, 0x89, 0xb0, 0x01, 0x00, 0x7c, 0x00, 0x00, 0x40,
692 0x8b, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x89, 0xf0, 0x01, 0x00,
693 0x00, 0x00, 0x00, 0x41, 0x89, 0xd0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x44,
694 0x88, 0x8c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x87, 0xc0, 0x01, 0x00,
695 0x00, 0x00, 0x00, 0x41, 0xa5, 0xb3, 0x01, 0x00, 0x15, 0x04, 0x00, 0x43,
696 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf1, 0xb1, 0x01, 0x00,
697 0x00, 0x00, 0x00, 0x44, 0x87, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
698 0xa5, 0xc3, 0x01, 0x00, 0x0b, 0x04, 0x22, 0x44, 0x89, 0x50, 0x00, 0x00,
699 0x0b, 0x04, 0x22, 0x44, 0x8b, 0x50, 0x00, 0x00, 0xfa, 0x03, 0xa2, 0x50,
700 0xa5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xa5, 0xe3, 0x01, 0x00,
701 0x00, 0x00, 0x00, 0xca, 0xa7, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xbb,
702 0x85, 0x30, 0x01, 0x00, 0xcc, 0x14, 0x2e, 0xd2, 0x95, 0xc3, 0x01, 0x00,
703 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
704 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xb0, 0x01, 0x00,
705 0x08, 0x04, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x07, 0x04, 0xa2, 0xf2,
706 0x80, 0x30, 0x00, 0x00, 0xfa, 0x03, 0x00, 0x40, 0xa5, 0xb3, 0x00, 0x00,
707 0x00, 0x00, 0x00, 0x42, 0xa5, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
708 0xa7, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xbb, 0x85, 0x30, 0x01, 0x00,
709 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
710 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x2b, 0xb1, 0x01, 0x00,
711 0x00, 0x10, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0xdb, 0x00, 0x00, 0x40,
712 0x81, 0x32, 0x01, 0x00, 0xff, 0xff, 0x00, 0x94, 0xb4, 0x8b, 0x01, 0x00,
713 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd9,
714 0x2b, 0xb1, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00,
715 0xdd, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x94,
716 0xb4, 0xb3, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
721 0x00, 0x00, 0x00, 0xd9, 0x2b, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
722 0x27, 0xb1, 0x01, 0x00, 0x06, 0xc0, 0x00, 0x40, 0x2d, 0x99, 0x01, 0x00,
723 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
724 0x83, 0x98, 0x01, 0x00, 0x02, 0xc4, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00,
725 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x40, 0x00, 0x40,
726 0x83, 0x98, 0x01, 0x00, 0x05, 0x82, 0x00, 0x41, 0x2c, 0x99, 0x01, 0x00,
727 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2d, 0x04, 0x80, 0x94,
728 0x80, 0x32, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
729 0x28, 0x04, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x40,
730 0x2d, 0x99, 0x01, 0x00, 0xde, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
731 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x31, 0x04, 0x00, 0x12,
732 0x10, 0xc9, 0x00, 0x00, 0x00, 0x48, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
733 0xc0, 0x49, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x4b, 0x80, 0x40,
734 0x0b, 0x98, 0x01, 0x00, 0x40, 0x4d, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
735 0x00, 0x4f, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x50, 0x80, 0x40,
736 0x0b, 0x98, 0x01, 0x00, 0x80, 0x52, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
737 0x40, 0x54, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x56, 0x80, 0x40,
738 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x57, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
739 0x80, 0x59, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x5b, 0x80, 0x40,
740 0x0b, 0x98, 0x01, 0x00, 0x00, 0x5d, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
741 0xc0, 0x5e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x60, 0x80, 0x40,
742 0x0b, 0x98, 0x01, 0x00, 0x40, 0x62, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
743 0x00, 0x64, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x65, 0x80, 0x40,
744 0x0b, 0x98, 0x01, 0x00, 0x80, 0x67, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
745 0x40, 0x69, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x6b, 0x80, 0x40,
746 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x6c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
747 0x80, 0x6e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x40, 0x70, 0x80, 0x40,
748 0x0b, 0x98, 0x01, 0x00, 0x00, 0x72, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
749 0xc0, 0x73, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x80, 0x75, 0x80, 0x40,
750 0x0b, 0x98, 0x01, 0x00, 0x40, 0x77, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
751 0x00, 0x79, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0xc0, 0x7a, 0x80, 0x40,
752 0x0b, 0x98, 0x01, 0x00, 0x80, 0x7c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
753 0x40, 0x7e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
758 0x81, 0xb2, 0x00, 0x00, 0x59, 0x04, 0x00, 0x12, 0x10, 0xc9, 0x00, 0x00,
759 0x00, 0x80, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x82, 0x80, 0x40,
760 0x0b, 0x98, 0x01, 0x00, 0x00, 0x84, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
761 0x00, 0x86, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x88, 0x80, 0x40,
762 0x0b, 0x98, 0x01, 0x00, 0x00, 0x8a, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
763 0x00, 0x8c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x8e, 0x80, 0x40,
764 0x0b, 0x98, 0x01, 0x00, 0x00, 0x90, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
765 0x00, 0x92, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x94, 0x80, 0x40,
766 0x0b, 0x98, 0x01, 0x00, 0x00, 0x96, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
767 0x00, 0x98, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0x9a, 0x80, 0x40,
768 0x0b, 0x98, 0x01, 0x00, 0x00, 0x9c, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
769 0x00, 0x9e, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa0, 0x80, 0x40,
770 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa2, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
771 0x00, 0xa4, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa6, 0x80, 0x40,
772 0x0b, 0x98, 0x01, 0x00, 0x00, 0xa8, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
773 0x00, 0xaa, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xac, 0x80, 0x40,
774 0x0b, 0x98, 0x01, 0x00, 0x00, 0xae, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
775 0x00, 0xb0, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xb2, 0x80, 0x40,
776 0x0b, 0x98, 0x01, 0x00, 0x00, 0xb4, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
777 0x00, 0xb6, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xb8, 0x80, 0x40,
778 0x0b, 0x98, 0x01, 0x00, 0x00, 0xba, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00,
779 0x00, 0xbc, 0x80, 0x40, 0x0b, 0x98, 0x01, 0x00, 0x00, 0xbe, 0x80, 0x40,
780 0x0b, 0x98, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
785 0x00, 0x00, 0x00, 0x40, 0x87, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
786 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x80, 0xb1, 0x01, 0x00,
787 0x01, 0x00, 0x00, 0xa6, 0x82, 0xb1, 0x01, 0x00, 0x82, 0x04, 0x85, 0x41,
788 0x97, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x97, 0xb1, 0x01, 0x00,
789 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
790 0x90, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6, 0x92, 0xb1, 0x01, 0x00,
791 0x87, 0x04, 0x85, 0x41, 0x97, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
792 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
793 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
794 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
795 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x90, 0x04, 0x60, 0x40,
796 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x80, 0xb1, 0x01, 0x00,
797 0xff, 0xff, 0xf0, 0x4b, 0x82, 0x89, 0x01, 0x00, 0x93, 0x04, 0x60, 0x40,
798 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x80, 0xb1, 0x01, 0x00,
799 0x01, 0x00, 0xf0, 0xa6, 0x82, 0xb1, 0x01, 0x00, 0x96, 0x04, 0x60, 0x40,
800 0x81, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b, 0x84, 0x89, 0x01, 0x00,
801 0x00, 0x00, 0xf0, 0xc2, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
802 0x90, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x80, 0x4b, 0x92, 0x89, 0x01, 0x00,
803 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00, 0x01, 0x00, 0x80, 0xa6,
804 0x92, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4b, 0x94, 0x89, 0x01, 0x00,
805 0x00, 0x00, 0x80, 0xca, 0x94, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
806 0x81, 0xb2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x4e, 0x98, 0xe4, 0x01, 0x00,
807 0x00, 0x00, 0x00, 0x07, 0x98, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
808 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x94, 0x01, 0x00,
809 0x00, 0x00, 0x00, 0x49, 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
810 0x88, 0x94, 0x01, 0x00, 0xa6, 0x04, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00,
811 0xad, 0x04, 0x22, 0x20, 0x87, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x40,
812 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
813 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
814 0x81, 0xb2, 0x01, 0x00, 0xa6, 0x04, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
815 0x00, 0x00, 0x1f, 0x80, 0x86, 0xb3, 0x01, 0x00, 0xb0, 0x04, 0x22, 0x4f,
816 0x77, 0x7d, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
817 0x00, 0x00, 0x00, 0x4f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
818 0x62, 0xb1, 0x01, 0x00, 0xb1, 0x04, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
819 0xb8, 0x04, 0x22, 0x4b, 0x89, 0x7c, 0x00, 0x00, 0xb6, 0x04, 0x22, 0x4f,
820 0x77, 0x7d, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
821 0x00, 0x00, 0x00, 0x45, 0x62, 0xb1, 0x01, 0x00, 0xb6, 0x04, 0xa8, 0x40,
822 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x87, 0xb3, 0x01, 0x00,
823 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
824 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
825 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
826 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
827 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
828 0x99, 0xb0, 0x01, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
829 0xc1, 0x04, 0xa8, 0xb1, 0x52, 0x33, 0x00, 0x00, 0xc6, 0x04, 0x22, 0x4b,
830 0x53, 0x7f, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
831 0xc4, 0x04, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0xc1, 0x04, 0xa2, 0x41,
832 0x99, 0x50, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x4f, 0x77, 0xfd, 0x00, 0x00,
833 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
834 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
838 0x81, 0xb2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x4e, 0x98, 0xe4, 0x01, 0x00,
839 0x00, 0x00, 0x00, 0x07, 0x98, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
840 0x99, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x94, 0x01, 0x00,
841 0x00, 0x00, 0x00, 0x48, 0x99, 0xe0, 0x01, 0x00, 0xd6, 0x04, 0x00, 0x4c,
842 0x88, 0x94, 0x00, 0x00, 0xd6, 0x04, 0x47, 0x40, 0x81, 0x32, 0x00, 0x00,
843 0xdd, 0x04, 0x22, 0x20, 0x87, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x40,
844 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
845 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
846 0x81, 0xb2, 0x01, 0x00, 0xd6, 0x04, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
847 0x00, 0x00, 0x1f, 0x80, 0x86, 0xb3, 0x01, 0x00, 0xe0, 0x04, 0x22, 0x4f,
848 0x77, 0x7d, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
849 0x00, 0x00, 0x00, 0x4f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
850 0x62, 0xb1, 0x01, 0x00, 0xe1, 0x04, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
851 0xe8, 0x04, 0x22, 0x4a, 0x89, 0x7c, 0x00, 0x00, 0xe6, 0x04, 0x22, 0x4f,
852 0x77, 0x7d, 0x00, 0x00, 0xf0, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
853 0x00, 0x00, 0x00, 0x45, 0x62, 0xb1, 0x01, 0x00, 0xe6, 0x04, 0xa8, 0x40,
854 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x87, 0xb3, 0x01, 0x00,
855 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
856 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
857 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
858 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
859 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
860 0x99, 0xb0, 0x01, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
861 0xf1, 0x04, 0xa8, 0xb1, 0x52, 0x33, 0x00, 0x00, 0xf6, 0x04, 0x22, 0x4a,
862 0x53, 0x7f, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
863 0xf4, 0x04, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00, 0xf1, 0x04, 0xa2, 0x41,
864 0x99, 0x50, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x4f, 0x77, 0xfd, 0x00, 0x00,
865 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
866 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
867 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
868 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
869 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
870 0x81, 0xb2, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
871 0x00, 0x05, 0xa8, 0xb1, 0x80, 0x30, 0x00, 0x00, 0x12, 0x05, 0x1d, 0x40,
872 0x80, 0x32, 0x00, 0x00, 0x40, 0x18, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00,
873 0x04, 0x00, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00, 0x10, 0x05, 0xa2, 0x40,
874 0x86, 0x04, 0x00, 0x00, 0xde, 0x9f, 0x9c, 0x40, 0x80, 0x32, 0x00, 0x00,
875 0xff, 0xff, 0x00, 0x40, 0x88, 0x88, 0x01, 0x00, 0x30, 0x05, 0x00, 0x50,
876 0x47, 0x31, 0x01, 0x00, 0x36, 0x00, 0x00, 0x44, 0x88, 0xcc, 0x01, 0x00,
877 0x0c, 0x05, 0x52, 0x40, 0x81, 0x32, 0x00, 0x00, 0x30, 0x05, 0x00, 0x40,
878 0x47, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x89, 0xb0, 0x01, 0x00,
879 0x30, 0x05, 0x00, 0x48, 0x47, 0x31, 0x01, 0x00, 0x30, 0x05, 0x00, 0x05,
880 0x47, 0x31, 0x01, 0x00, 0xde, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
881 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x1b, 0x00, 0xde, 0x9f, 0x00, 0x41,
882 0xe1, 0xc1, 0x1a, 0x00, 0x78, 0x18, 0x00, 0x40, 0x49, 0x99, 0x1b, 0x00,
883 0x19, 0x05, 0x22, 0x54, 0x81, 0x7c, 0x1a, 0x00, 0x14, 0x05, 0x42, 0x40,
884 0x81, 0x32, 0x1a, 0x00, 0x00, 0x82, 0x00, 0xb3, 0x67, 0xdf, 0x1b, 0x00,
885 0x00, 0x00, 0x1a, 0x44, 0x93, 0x93, 0x1b, 0x00, 0x28, 0x00, 0x00, 0x40,
886 0x47, 0x99, 0x1b, 0x00, 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
887 0x27, 0x05, 0x0f, 0x40, 0x80, 0x32, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x40,
888 0x88, 0x88, 0x01, 0x00, 0x30, 0x05, 0x00, 0x50, 0x47, 0x31, 0x01, 0x00,
889 0x36, 0x00, 0x00, 0x44, 0x88, 0xcc, 0x01, 0x00, 0x1f, 0x05, 0x99, 0x40,
890 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0xd0, 0x01, 0x00,
891 0x21, 0x05, 0x9b, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
892 0x89, 0xd0, 0x01, 0x00, 0x23, 0x05, 0x1f, 0x44, 0x80, 0x32, 0x00, 0x00,
893 0x30, 0x05, 0x00, 0x40, 0x47, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
894 0x89, 0xb0, 0x01, 0x00, 0x30, 0x05, 0x00, 0x48, 0x47, 0x31, 0x01, 0x00,
895 0x30, 0x05, 0x00, 0x58, 0x47, 0x31, 0x01, 0x00, 0xde, 0x9f, 0x00, 0x40,
896 0x81, 0xb2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x40, 0x86, 0xf4, 0x01, 0x00,
897 0x6f, 0x00, 0x00, 0x43, 0x86, 0x88, 0x01, 0x00, 0xde, 0x9f, 0x26, 0x05,
898 0x47, 0x31, 0x00, 0x00, 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00,
899 0xde, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
900 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
901 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
902 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x44, 0xf0, 0x41, 0x01, 0x00,
903 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x80, 0x41,
904 0xe1, 0xc1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
905 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
906 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
907 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x07,
908 0x91, 0x30, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x97, 0xec, 0x00, 0x00,
909 0x00, 0x00, 0x80, 0x05, 0x91, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
910 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
911 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
912 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
913 0x4c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x44, 0x05, 0xa2, 0x40,
914 0x97, 0x6c, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
915 0x45, 0x05, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,
916 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
917 0x00, 0x00, 0x00, 0xda, 0xf5, 0xb1, 0x01, 0x00, 0x10, 0x04, 0x00, 0x42,
918 0xb3, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf5, 0xb1, 0x01, 0x00,
919 0x10, 0x04, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
920 0xf5, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
921 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda,
922 0xf7, 0xf5, 0x01, 0x00, 0x50, 0x00, 0x00, 0x40, 0x91, 0x98, 0x01, 0x00,
923 0x00, 0x00, 0x00, 0x47, 0x8f, 0xb0, 0x01, 0x00, 0x10, 0x04, 0x00, 0x48,
924 0xb2, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0xf7, 0xb1, 0x01, 0x00,
925 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
926 0x91, 0xc0, 0x01, 0x00, 0x50, 0x05, 0xa2, 0x41, 0x8f, 0x50, 0x00, 0x00,
927 0x00, 0x00, 0x00, 0x41, 0x45, 0xd1, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40,
928 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
929 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x40,
930 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
931 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x40,
932 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
933 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x00, 0x40,
934 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
935 0x00, 0x00, 0x00, 0xda, 0xfd, 0xb1, 0x01, 0x00, 0x38, 0x05, 0x00, 0x40,
936 0x81, 0x32, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
937 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
938 0x91, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
939 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xda,
940 0x8f, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
941 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
942 0xfd, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
943 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0xda,
944 0xfd, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
945 0x7a, 0x05, 0x22, 0x45, 0xfd, 0x7f, 0x00, 0x00, 0x40, 0x16, 0x00, 0x40,
946 0x45, 0x99, 0x01, 0x00, 0xdb, 0x9f, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00,
947 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x15, 0x04, 0x00, 0x40,
948 0x81, 0x32, 0x01, 0x00, 0x78, 0x05, 0xa2, 0x40, 0x8f, 0x6c, 0x00, 0x00,
949 0x7d, 0x05, 0x22, 0x20, 0xb5, 0x6f, 0x00, 0x00, 0x7a, 0x05, 0x00, 0x40,
950 0x81, 0xb2, 0x00, 0x00, 0xda, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x1f, 0x00,
951 0x7d, 0x05, 0x22, 0x40, 0x97, 0x6c, 0x1e, 0x00, 0x7a, 0x05, 0x42, 0x40,
952 0x81, 0x32, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x67, 0x93, 0x1f, 0x00,
953 0xdf, 0x9f, 0x00, 0x58, 0x67, 0x93, 0x1e, 0x00, 0x54, 0x16, 0x00, 0x40,
954 0x47, 0x99, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x1f, 0x00,
955 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe,
956 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
957 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
958 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
959 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
960 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
961 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
962 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
963 0x46, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
964 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda, 0xf7, 0xf5, 0x01, 0x00,
965 0x48, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
966 0x97, 0xb0, 0x01, 0x00, 0x10, 0x04, 0x00, 0x4a, 0xb2, 0x33, 0x01, 0x00,
967 0x00, 0x00, 0x00, 0xda, 0xf7, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x00, 0xda,
968 0xf7, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x95, 0xc0, 0x01, 0x00,
969 0x90, 0x05, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x40,
970 0xa5, 0x9b, 0x01, 0x00, 0x40, 0x16, 0x00, 0x40, 0xa1, 0x9b, 0x01, 0x00,
971 0x00, 0x00, 0x00, 0xca, 0xa7, 0xb3, 0x01, 0x00, 0xe1, 0x9f, 0x00, 0xbb,
972 0x85, 0x30, 0x01, 0x00, 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
973 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
974 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
975 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
976 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
977 0xb8, 0x05, 0x22, 0x45, 0xfd, 0x7f, 0x00, 0x00, 0xe0, 0x15, 0x00, 0x40,
978 0x47, 0x99, 0x01, 0x00, 0x1a, 0x00, 0x00, 0xa2, 0x80, 0xdc, 0x01, 0x00,
979 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0xf0, 0x15, 0x00, 0x40,
980 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00,
981 0x07, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40,
982 0x62, 0xdd, 0x01, 0x00, 0xa7, 0x05, 0xa8, 0xbb, 0xe1, 0x31, 0x00, 0x00,
983 0x00, 0x00, 0x00, 0x50, 0x83, 0xb0, 0x01, 0x00, 0xaa, 0x05, 0xa2, 0x41,
984 0x83, 0x50, 0x00, 0x00, 0xa9, 0x05, 0xa2, 0xf2, 0x82, 0x30, 0x00, 0x00,
985 0x4c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb0, 0x05, 0xa2, 0x40,
986 0x97, 0x6c, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x40, 0xb3, 0x9b, 0x01, 0x00,
987 0xb1, 0x05, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,
988 0xb3, 0x9b, 0x01, 0x00, 0xf0, 0x15, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
989 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb8, 0x05, 0xa2, 0xfa,
990 0xb4, 0x6f, 0x00, 0x00, 0x10, 0x04, 0x00, 0x42, 0xb3, 0x43, 0x01, 0x00,
991 0xb8, 0x05, 0xa2, 0xfa, 0xb4, 0x6f, 0x00, 0x00, 0x10, 0x04, 0x00, 0x42,
992 0xb3, 0x43, 0x01, 0x00, 0xbb, 0x05, 0x22, 0xfa, 0xb4, 0x6f, 0x00, 0x00,
993 0xb8, 0x05, 0x42, 0x40, 0x81, 0x32, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4e,
994 0x67, 0x93, 0x21, 0x00, 0xdf, 0x9f, 0x00, 0x58, 0x67, 0x93, 0x20, 0x00,
995 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x21, 0x00, 0xdb, 0x9f, 0x00, 0x40,
996 0x49, 0x31, 0x21, 0x00, 0xf6, 0x15, 0x00, 0x40, 0x43, 0x99, 0x21, 0x00,
997 0x5c, 0x16, 0x00, 0x40, 0x45, 0x99, 0x21, 0x00, 0x00, 0x00, 0x6e, 0xfa,
998 0x8e, 0xb0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
999 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1000 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00,
1001 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
1002 0xb4, 0xb3, 0x01, 0x00, 0xc9, 0x05, 0xa2, 0x40, 0x8f, 0x6c, 0x00, 0x00,
1003 0xfc, 0x15, 0x20, 0x20, 0xe1, 0xb1, 0x01, 0x00, 0xce, 0x05, 0x00, 0x40,
1004 0x81, 0xb2, 0x24, 0x00, 0xda, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x25, 0x00,
1005 0xce, 0x05, 0x22, 0x40, 0x97, 0x6c, 0x24, 0x00, 0xcb, 0x05, 0x42, 0x40,
1006 0x81, 0x32, 0x24, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x67, 0x93, 0x25, 0x00,
1007 0xdf, 0x9f, 0x00, 0x58, 0x67, 0x93, 0x24, 0x00, 0x38, 0x05, 0x00, 0x40,
1008 0x81, 0x32, 0x25, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x25, 0x00,
1009 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd3, 0x05, 0x22, 0x50,
1010 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x91, 0xc0, 0x01, 0x00,
1011 0x00, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xf6, 0x15, 0x00, 0x40,
1012 0x43, 0x99, 0x01, 0x00, 0x20, 0x04, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00,
1013 0x02, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xf8, 0x15, 0x00, 0x40,
1014 0x43, 0x99, 0x01, 0x00, 0x20, 0x04, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00,
1015 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfa, 0x15, 0x00, 0x40,
1016 0x43, 0x99, 0x01, 0x00, 0x20, 0x04, 0x00, 0xf2, 0xb4, 0x33, 0x01, 0x00,
1017 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xfc, 0x15, 0x00, 0x40,
1018 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x94, 0xb0, 0x01, 0x00,
1019 0xff, 0xff, 0x00, 0x4a, 0xb4, 0x8b, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40,
1020 0x81, 0x32, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
1021 0x10, 0x00, 0x00, 0x4a, 0xb4, 0xf7, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40,
1022 0x81, 0x32, 0x01, 0x00, 0x38, 0x05, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1023 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
1024 0x81, 0x32, 0x01, 0x00, 0xe9, 0x05, 0x22, 0x50, 0xb5, 0x6f, 0x00, 0x00,
1025 0xea, 0x05, 0x00, 0x50, 0xb5, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1026 0xb5, 0xb3, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1027 0xe0, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1028 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1029 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1030 0x81, 0xb2, 0x00, 0x00, 0x00, 0x16, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1031 0x30, 0x31, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x32, 0x33, 0x00, 0x40,
1032 0xf5, 0x99, 0x01, 0x00, 0x34, 0x35, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1033 0x36, 0x37, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x38, 0x39, 0x00, 0x40,
1034 0xf5, 0x99, 0x01, 0x00, 0x41, 0x42, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1035 0x43, 0x44, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x45, 0x46, 0x00, 0x40,
1036 0xf5, 0x99, 0x01, 0x00, 0x47, 0x48, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1037 0x49, 0x4a, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40,
1038 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf7, 0xb1, 0x01, 0x00,
1039 0xfc, 0x05, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x80, 0x16, 0x2e, 0x06,
1040 0x83, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1041 0xff, 0x05, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x22, 0x00, 0x00, 0x40,
1042 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xf6, 0xb1, 0x01, 0x00,
1043 0x02, 0x06, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x62, 0x00, 0x00, 0x40,
1044 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1045 0x00, 0x16, 0x2d, 0x06, 0x83, 0xb0, 0x01, 0x00, 0x80, 0x16, 0x00, 0x40,
1046 0x45, 0x99, 0x01, 0x00, 0x5c, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1047 0x08, 0x06, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
1048 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xf9, 0xb1, 0x01, 0x00,
1049 0x00, 0x00, 0x00, 0x72, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
1050 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf9, 0xb1, 0x01, 0x00,
1051 0x54, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40,
1052 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x95, 0xb0, 0x01, 0x00,
1053 0x14, 0x06, 0x22, 0x70, 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
1054 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
1055 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1056 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1057 0x45, 0x67, 0x00, 0xa6, 0xe0, 0xb2, 0x01, 0x00, 0x01, 0x23, 0x00, 0x70,
1058 0xe1, 0x9a, 0x01, 0x00, 0xcd, 0xef, 0x00, 0xa6, 0xe2, 0xb2, 0x01, 0x00,
1059 0x89, 0xab, 0x00, 0x71, 0xe3, 0x9a, 0x01, 0x00, 0xba, 0x98, 0x00, 0xa6,
1060 0xe4, 0xb2, 0x01, 0x00, 0xfe, 0xdc, 0x00, 0x72, 0xe5, 0x9a, 0x01, 0x00,
1061 0x32, 0x10, 0x00, 0xa6, 0xe6, 0xb2, 0x01, 0x00, 0x76, 0x54, 0x00, 0x73,
1062 0xe7, 0x9a, 0x01, 0x00, 0xd2, 0xc3, 0x00, 0xa6, 0xe8, 0xb2, 0x01, 0x00,
1063 0xf0, 0xe1, 0x00, 0x74, 0xe9, 0x9a, 0x01, 0x00, 0x80, 0x16, 0x00, 0x4a,
1064 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x81, 0xb0, 0x01, 0x00,
1065 0x00, 0x00, 0x00, 0x4a, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1066 0xf7, 0xb1, 0x01, 0x00, 0x25, 0x06, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
1067 0x80, 0x16, 0x00, 0x4a, 0x44, 0xc9, 0x01, 0x00, 0xfc, 0x16, 0x2a, 0x47,
1068 0xe7, 0xb5, 0x01, 0x00, 0x03, 0x00, 0x00, 0x4a, 0xe8, 0xe5, 0x01, 0x00,
1069 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40,
1070 0xa3, 0x99, 0x01, 0x00, 0x80, 0x16, 0x3d, 0x46, 0x8d, 0xe0, 0x01, 0x00,
1071 0x00, 0x00, 0x00, 0x50, 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
1072 0x40, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
1073 0x2e, 0x06, 0xa2, 0x41, 0x89, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
1074 0xeb, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xed, 0xb2, 0x01, 0x00,
1075 0x00, 0x00, 0x00, 0x72, 0xef, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
1076 0xf1, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf3, 0xb2, 0x01, 0x00,
1077 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x41,
1078 0x80, 0x88, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40, 0xa2, 0xc9, 0x01, 0x00,
1079 0x4b, 0x06, 0xa0, 0x50, 0x83, 0x6c, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x40,
1080 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x99, 0x84, 0x01, 0x00,
1081 0x50, 0x03, 0x00, 0x4c, 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
1082 0x86, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x98, 0xc8, 0x01, 0x00,
1083 0x00, 0x00, 0x00, 0x4f, 0x99, 0x84, 0x01, 0x00, 0x50, 0x03, 0x00, 0x4c,
1084 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x86, 0xa4, 0x01, 0x00,
1085 0x02, 0x00, 0x00, 0x40, 0x98, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
1086 0x99, 0x84, 0x01, 0x00, 0x50, 0x03, 0x00, 0x4c, 0xa2, 0xc9, 0x01, 0x00,
1087 0x00, 0x00, 0x00, 0x20, 0x86, 0xa4, 0x01, 0x00, 0x50, 0x03, 0x00, 0x40,
1088 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x40, 0xa4, 0x01, 0x00,
1089 0x01, 0x00, 0x00, 0x20, 0x88, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1090 0x41, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x94, 0x01, 0x00,
1091 0x05, 0x00, 0x00, 0x75, 0x89, 0xe4, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x75,
1092 0x85, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x84, 0x94, 0x01, 0x00,
1093 0x55, 0x06, 0xa3, 0x53, 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76,
1094 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77, 0x89, 0x84, 0x01, 0x00,
1095 0x00, 0x00, 0x00, 0x76, 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
1096 0x8b, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
1097 0x64, 0x06, 0x00, 0x45, 0x88, 0x94, 0x00, 0x00, 0x27, 0x00, 0x00, 0x41,
1098 0x80, 0xce, 0x01, 0x00, 0x5a, 0x06, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
1099 0x00, 0x00, 0x00, 0x76, 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
1100 0x89, 0xa4, 0x01, 0x00, 0x64, 0x06, 0x00, 0x78, 0x89, 0xa4, 0x00, 0x00,
1101 0x3b, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00, 0x57, 0x06, 0xaa, 0x40,
1102 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x89, 0xb0, 0x01, 0x00,
1103 0x00, 0x00, 0x00, 0x77, 0x89, 0x84, 0x01, 0x00, 0x00, 0x00, 0x00, 0x76,
1104 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
1105 0x00, 0x00, 0x00, 0x45, 0x88, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
1106 0x8b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x8b, 0x84, 0x01, 0x00,
1107 0x64, 0x06, 0x00, 0x45, 0x88, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
1108 0x84, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0x85, 0xc0, 0x01, 0x00,
1109 0x00, 0x00, 0x00, 0x20, 0x84, 0xc0, 0x01, 0x00, 0x6b, 0x06, 0xa3, 0x53,
1110 0x83, 0x6c, 0x00, 0x00, 0x82, 0x5a, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00,
1111 0x99, 0x79, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00, 0x78, 0x06, 0x00, 0x40,
1112 0x81, 0xb2, 0x00, 0x00, 0x27, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00,
1113 0x70, 0x06, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00, 0xd9, 0x6e, 0x00, 0xa6,
1114 0x84, 0xc0, 0x01, 0x00, 0xa1, 0xeb, 0x00, 0x42, 0x84, 0xc8, 0x01, 0x00,
1115 0x78, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x41,
1116 0x80, 0xce, 0x01, 0x00, 0x75, 0x06, 0xaa, 0x40, 0x81, 0x32, 0x00, 0x00,
1117 0x1b, 0x8f, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00, 0xdc, 0xbc, 0x00, 0x42,
1118 0x84, 0xc8, 0x01, 0x00, 0x78, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1119 0x62, 0xca, 0x00, 0xa6, 0x84, 0xc0, 0x01, 0x00, 0xd6, 0xc1, 0x00, 0x42,
1120 0x84, 0xc8, 0x01, 0x00, 0x78, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1121 0x00, 0x00, 0x00, 0x78, 0xf3, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x77,
1122 0xf1, 0xb2, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x76, 0x89, 0xe4, 0x01, 0x00,
1123 0x02, 0x00, 0x00, 0x76, 0xef, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
1124 0xee, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x75, 0xed, 0xb2, 0x01, 0x00,
1125 0x00, 0x00, 0x00, 0x42, 0xea, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
1126 0x83, 0xc0, 0x01, 0x00, 0x4f, 0x00, 0x00, 0x41, 0x80, 0xce, 0x01, 0x00,
1127 0x37, 0x06, 0x2a, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75,
1128 0xe1, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x76, 0xe3, 0xc2, 0x01, 0x00,
1129 0x00, 0x00, 0x00, 0x77, 0xe5, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78,
1130 0xe7, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x79, 0xe9, 0xc2, 0x01, 0x00,
1131 0x2b, 0x06, 0x81, 0x41, 0x8d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
1132 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1133 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1134 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1135 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1136 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1137 0x00, 0x00, 0x00, 0x50, 0xfd, 0x93, 0x01, 0x00, 0x40, 0x16, 0x00, 0x40,
1138 0x45, 0x99, 0x01, 0x00, 0xdb, 0x9f, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00,
1139 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x15, 0x04, 0x00, 0x40,
1140 0x81, 0x32, 0x01, 0x00, 0xb9, 0x06, 0x22, 0x40, 0x8f, 0x6c, 0x00, 0x00,
1141 0xda, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb9, 0x06, 0xa2, 0x40,
1142 0x97, 0x6c, 0x00, 0x00, 0x5e, 0x16, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
1143 0x7c, 0x16, 0x20, 0xf6, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1144 0x31, 0xb3, 0x01, 0x00, 0x9d, 0x06, 0x22, 0x4f, 0x8f, 0x7c, 0x00, 0x00,
1145 0x00, 0x00, 0x00, 0x51, 0xfd, 0x93, 0x01, 0x00, 0x9f, 0x06, 0x22, 0x40,
1146 0x8f, 0x7c, 0x00, 0x00, 0xa3, 0x06, 0x00, 0x54, 0xfd, 0x93, 0x00, 0x00,
1147 0xa1, 0x06, 0x22, 0x42, 0x8f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
1148 0xfd, 0x93, 0x01, 0x00, 0xa3, 0x06, 0x22, 0x41, 0x8f, 0x7c, 0x00, 0x00,
1149 0x00, 0x00, 0x00, 0x53, 0xfd, 0x93, 0x01, 0x00, 0xb7, 0x06, 0x22, 0x51,
1150 0xfd, 0x7f, 0x00, 0x00, 0x38, 0x05, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1151 0x0c, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
1152 0x81, 0x32, 0x01, 0x00, 0xb2, 0x06, 0xa2, 0x40, 0xb5, 0x6f, 0x00, 0x00,
1153 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x48,
1154 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda, 0x97, 0xc0, 0x01, 0x00,
1155 0x04, 0x00, 0x00, 0x4b, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40,
1156 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
1157 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x48,
1158 0xb2, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0xb5, 0xb3, 0x01, 0x00,
1159 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48,
1160 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1161 0xb6, 0x06, 0x22, 0x40, 0xb5, 0x6f, 0x00, 0x00, 0xba, 0x06, 0x00, 0x54,
1162 0xfd, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfd, 0x83, 0x01, 0x00,
1163 0x1c, 0x00, 0x00, 0xfe, 0x7f, 0xd9, 0x01, 0x00, 0xba, 0x06, 0xa6, 0x40,
1164 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xfd, 0x93, 0x01, 0x00,
1165 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
1166 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1167 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1168 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1169 0xe7, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc4, 0x06, 0x22, 0x5c,
1170 0x1f, 0x7c, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1171 0xe9, 0x9f, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x05,
1172 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
1173 0x04, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
1174 0x3c, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x14, 0x02, 0xc8, 0x01, 0x00,
1175 0x00, 0x00, 0x00, 0x01, 0x34, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
1176 0x32, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05, 0x0a, 0xc8, 0x01, 0x00,
1177 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
1178 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00,
1179 0x00, 0x00, 0x00, 0xf8, 0x0e, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4,
1180 0x0c, 0xc8, 0x01, 0x00, 0xea, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1181 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x0a, 0x07, 0x22, 0x01,
1182 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
1183 0x00, 0x00, 0x2e, 0xa4, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
1184 0x48, 0xc1, 0x01, 0x00, 0xd9, 0x06, 0xa3, 0x07, 0x02, 0x6c, 0x00, 0x00,
1185 0xda, 0x06, 0x68, 0x01, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x07,
1186 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xd0, 0x01, 0x00,
1187 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c,
1188 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00,
1189 0x00, 0x00, 0x00, 0x0d, 0x0a, 0xc0, 0x01, 0x00, 0xec, 0x06, 0x22, 0x40,
1190 0x03, 0x6c, 0x00, 0x00, 0xe6, 0x06, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
1191 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
1192 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
1193 0x23, 0x07, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0xe3, 0x06, 0x00, 0x40,
1194 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
1195 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1196 0x62, 0xb1, 0x01, 0x00, 0xe8, 0x06, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
1197 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x23, 0x07, 0x00, 0x40,
1198 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xc0, 0x01, 0x00,
1199 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1200 0x62, 0xb1, 0x01, 0x00, 0xee, 0x06, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00,
1201 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x22, 0x00, 0x00, 0x19,
1202 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00,
1203 0x0f, 0x00, 0x00, 0xf2, 0x3a, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
1204 0x3b, 0xe0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x14, 0x02, 0xc8, 0x01, 0x00,
1205 0x00, 0x00, 0x00, 0x1d, 0x02, 0xc0, 0x01, 0x00, 0xfa, 0x06, 0x23, 0x1a,
1206 0x02, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x03, 0xc0, 0x01, 0x00,
1207 0x23, 0x07, 0x00, 0x01, 0x34, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x2d, 0x1d,
1208 0x48, 0xc1, 0x01, 0x00, 0xf0, 0x00, 0x00, 0xf2, 0x30, 0x88, 0x01, 0x00,
1209 0x00, 0x00, 0x00, 0x42, 0x31, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14,
1210 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x02, 0xc0, 0x01, 0x00,
1211 0x00, 0x00, 0x00, 0x18, 0x02, 0xc0, 0x01, 0x00, 0x02, 0x07, 0x22, 0x1a,
1212 0x02, 0x50, 0x00, 0x00, 0x23, 0x07, 0x00, 0x01, 0x34, 0xc0, 0x00, 0x00,
1213 0x22, 0x00, 0x00, 0x19, 0x48, 0xc9, 0x01, 0x00, 0x02, 0x00, 0x2d, 0x14,
1214 0x48, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x14, 0xb0, 0x01, 0x00,
1215 0x00, 0x00, 0x00, 0x1d, 0x14, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
1216 0x14, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x24, 0xb0, 0x01, 0x00,
1217 0x12, 0x00, 0x00, 0x17, 0x10, 0xc8, 0x01, 0x00, 0x23, 0x07, 0x00, 0x1a,
1218 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
1219 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
1220 0x48, 0xc1, 0x01, 0x00, 0x0f, 0x07, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00,
1221 0x10, 0x07, 0x60, 0x07, 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x12,
1222 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x0d, 0x16, 0x94, 0x01, 0x00,
1223 0xff, 0xff, 0x00, 0x0b, 0x16, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
1224 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
1225 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
1226 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
1227 0x20, 0x00, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00, 0x17, 0x07, 0xa8, 0x5c,
1228 0x1f, 0x10, 0x00, 0x00, 0x40, 0x07, 0x22, 0x0d, 0x14, 0x50, 0x00, 0x00,
1229 0x40, 0x07, 0x22, 0x0d, 0x24, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
1230 0x10, 0xc0, 0x01, 0x00, 0x1e, 0x07, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00,
1231 0x23, 0x07, 0x00, 0x41, 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
1232 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
1233 0x1f, 0x07, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88,
1234 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
1235 0x3f, 0x07, 0xa2, 0x0d, 0x0e, 0x50, 0x00, 0x00, 0x2e, 0x07, 0x22, 0x46,
1236 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00,
1237 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x2c, 0x07, 0x22, 0xf2,
1238 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
1239 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x29, 0x07, 0xa8, 0x40,
1240 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1241 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1242 0xe1, 0x91, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x06, 0x48, 0xb1, 0x01, 0x00,
1243 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
1244 0x04, 0xb0, 0x01, 0x00, 0x33, 0x07, 0x1f, 0xf0, 0x0e, 0x30, 0x00, 0x00,
1245 0xd3, 0x06, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x5f,
1246 0x0f, 0x80, 0x01, 0x00, 0xd3, 0x06, 0x23, 0x07, 0x14, 0x6c, 0x00, 0x00,
1247 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x24, 0x00, 0x00, 0x40,
1248 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
1249 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
1250 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00,
1251 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa4,
1252 0x62, 0xdd, 0x01, 0x00, 0x3c, 0x07, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
1253 0xd3, 0x06, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00, 0xd3, 0x06, 0x00, 0x0d,
1254 0x18, 0xc0, 0x00, 0x00, 0x5f, 0x07, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
1255 0x00, 0x00, 0x00, 0x19, 0x0a, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05,
1256 0x48, 0xc9, 0x01, 0x00, 0x0a, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00,
1257 0x02, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x20, 0x40,
1258 0xe5, 0xb1, 0x01, 0x00, 0x0d, 0x00, 0x2d, 0x1d, 0x48, 0xc1, 0x01, 0x00,
1259 0x09, 0x00, 0x00, 0xf3, 0x38, 0x88, 0x01, 0x00, 0x0d, 0x00, 0x20, 0x50,
1260 0xe7, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x2d, 0x40, 0x3f, 0xb0, 0x01, 0x00,
1261 0x00, 0x00, 0x00, 0xf4, 0x32, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x20, 0x40,
1262 0xe1, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x01, 0x00,
1263 0x00, 0x00, 0x2d, 0x14, 0x48, 0xc1, 0x01, 0x00, 0x02, 0x00, 0x00, 0x1d,
1264 0x94, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x91, 0xb0, 0x01, 0x00,
1265 0x52, 0x07, 0xa0, 0xfc, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1266 0x91, 0xc0, 0x01, 0x00, 0x50, 0x07, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00,
1267 0x00, 0x00, 0x00, 0xa4, 0x96, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x05,
1268 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00,
1269 0x00, 0x00, 0x00, 0x4b, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
1270 0x48, 0xc1, 0x01, 0x00, 0x02, 0x00, 0x00, 0x18, 0x94, 0xf4, 0x01, 0x00,
1271 0x00, 0x00, 0x2d, 0x18, 0x90, 0xb0, 0x01, 0x00, 0x5c, 0x07, 0xa0, 0xfc,
1272 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x91, 0xc0, 0x01, 0x00,
1273 0x5a, 0x07, 0xa2, 0x41, 0x95, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
1274 0xe0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00,
1275 0x04, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
1276 0x80, 0xb0, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0xb0, 0x2d, 0x00,
1277 0x22, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x14,
1278 0x48, 0xc1, 0x2d, 0x00, 0x64, 0x07, 0x43, 0x30, 0x3d, 0x07, 0x2c, 0x00,
1279 0x00, 0x00, 0x00, 0x9e, 0x85, 0xb0, 0x2d, 0x00, 0x00, 0x00, 0x1b, 0x41,
1280 0x3d, 0xc3, 0x2d, 0x00, 0x04, 0x00, 0x20, 0x42, 0xec, 0xb1, 0x2d, 0x00,
1281 0x00, 0x00, 0x00, 0x1e, 0x82, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x2e, 0x1d,
1282 0x82, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x18, 0x82, 0xc0, 0x01, 0x00,
1283 0x00, 0x00, 0x00, 0x42, 0x80, 0xc0, 0x01, 0x00, 0x6e, 0x07, 0xa0, 0x41,
1284 0x80, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00,
1285 0x10, 0x00, 0x00, 0x40, 0x92, 0xf4, 0x01, 0x00, 0x0a, 0x00, 0x2e, 0x30,
1286 0x81, 0x84, 0x01, 0x00, 0x72, 0x07, 0x90, 0x40, 0x92, 0x40, 0x00, 0x00,
1287 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
1288 0x93, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x48, 0xc1, 0x01, 0x00,
1289 0x04, 0x00, 0x20, 0x19, 0xe8, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1e,
1290 0x16, 0xc0, 0x01, 0x00, 0x78, 0x07, 0xa0, 0x19, 0x16, 0x44, 0x00, 0x00,
1291 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x0d, 0x00, 0x2f, 0x1e,
1292 0x32, 0xc0, 0x01, 0x00, 0x7d, 0x07, 0xa2, 0x40, 0x15, 0x6c, 0x00, 0x00,
1293 0x7c, 0x07, 0xa0, 0x1c, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1294 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x63, 0xf3, 0x38, 0x94, 0x01, 0x00,
1295 0x10, 0x00, 0x00, 0x05, 0x48, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x1e,
1296 0x98, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0x1a, 0x98, 0xc0, 0x01, 0x00,
1297 0x0c, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x8b, 0x07, 0x22, 0x46,
1298 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00,
1299 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x89, 0x07, 0x22, 0xf2,
1300 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
1301 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x86, 0x07, 0xa8, 0x40,
1302 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1303 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1304 0xe1, 0x91, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
1305 0x12, 0x00, 0x00, 0x1a, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x17,
1306 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
1307 0x30, 0x00, 0x00, 0x10, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
1308 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00,
1309 0x91, 0x07, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x9b, 0x07, 0x22, 0x5c,
1310 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00,
1311 0x00, 0x00, 0x2d, 0x10, 0x48, 0xc1, 0x01, 0x00, 0x9b, 0x07, 0x22, 0xf2,
1312 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
1313 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x98, 0x07, 0xa8, 0x40,
1314 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1315 0xeb, 0x9f, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x20, 0x00, 0x2f, 0x05,
1316 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe4, 0xb1, 0x01, 0x00,
1317 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00, 0xa1, 0x07, 0x90, 0xf2,
1318 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
1319 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x10, 0x00, 0x00, 0x14,
1320 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x2a, 0xc0, 0x01, 0x00,
1321 0x00, 0x00, 0x00, 0x50, 0x2b, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
1322 0x2a, 0x94, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
1323 0xac, 0x07, 0x22, 0xf2, 0x64, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
1324 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
1325 0xa9, 0x07, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xe3, 0x9f, 0x00, 0x88,
1326 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x17, 0x10, 0xdc, 0x01, 0x00,
1327 0xc9, 0x07, 0x22, 0x40, 0x15, 0x6c, 0x00, 0x00, 0xb4, 0x07, 0xa2, 0x44,
1328 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1f, 0x90, 0x01, 0x00,
1329 0xb3, 0x07, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x88,
1330 0x1c, 0xcc, 0x01, 0x00, 0xe4, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1331 0x00, 0x00, 0x00, 0x41, 0x3f, 0xc3, 0x01, 0x00, 0xe6, 0x9f, 0x00, 0x40,
1332 0x81, 0x32, 0x01, 0x00, 0xb7, 0x07, 0xa2, 0x41, 0x87, 0x7c, 0x00, 0x00,
1333 0x00, 0x00, 0x00, 0x1e, 0x3e, 0xc0, 0x01, 0x00, 0xc9, 0x07, 0x22, 0x40,
1334 0x15, 0x6c, 0x00, 0x00, 0xba, 0x07, 0x20, 0x1e, 0x14, 0x6c, 0x00, 0x00,
1335 0x00, 0x00, 0x00, 0x0a, 0x3c, 0xb0, 0x01, 0x00, 0xe5, 0x9f, 0x00, 0x1e,
1336 0x24, 0x30, 0x01, 0x00, 0xbf, 0x07, 0x22, 0x08, 0x2e, 0x30, 0x00, 0x00,
1337 0x00, 0x00, 0x00, 0x52, 0x11, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1a,
1338 0x10, 0xc0, 0x01, 0x00, 0x23, 0x07, 0x00, 0x40, 0x17, 0xb0, 0x00, 0x00,
1339 0xe4, 0x9f, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xe5, 0x9f, 0x00, 0x40,
1340 0x81, 0x32, 0x01, 0x00, 0xbc, 0x07, 0xa2, 0x08, 0x2e, 0x30, 0x00, 0x00,
1341 0x80, 0x80, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40,
1342 0x87, 0x98, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00,
1343 0x04, 0x00, 0x22, 0x04, 0xe0, 0x31, 0x00, 0x00, 0xe8, 0x9f, 0x00, 0x1f,
1344 0x8c, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
1345 0xe2, 0x9f, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
1346 0x44, 0x99, 0x01, 0x00, 0x04, 0x00, 0x22, 0x04, 0xe0, 0x31, 0x00, 0x00,
1347 0xe6, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xce, 0x07, 0xa2, 0x41,
1348 0x87, 0x7c, 0x00, 0x00, 0xcf, 0x07, 0x00, 0x1e, 0x3e, 0xc0, 0x00, 0x00,
1349 0x00, 0x00, 0x00, 0x1f, 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1350 0x05, 0xb0, 0x01, 0x00, 0xe8, 0x9f, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00,
1351 0xe2, 0x9f, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1352 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1353 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1376 0x81, 0xb2, 0x00, 0x00, 0xf7, 0x07, 0x00, 0xbc, 0x80, 0xb2, 0x00, 0x00,
1377 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
1378 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1379 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
1380 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1381 0x03, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40,
1382 0x81, 0xb2, 0x00, 0x00,
1383 },
1384 {
1385 0x31, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x34, 0x80, 0x00, 0x40,
1386 0x81, 0xb2, 0x00, 0x00, 0x35, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1387 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0x80, 0x81, 0x80,
1388 0x80, 0x32, 0x00, 0x00, 0x0e, 0x87, 0xa2, 0x40, 0x91, 0x6f, 0x00, 0x00,
1389 0x00, 0x00, 0x00, 0x4c, 0x90, 0xb3, 0x01, 0x00, 0x5c, 0x95, 0x2e, 0xa2,
1390 0x80, 0xb0, 0x01, 0x00, 0xff, 0x00, 0x00, 0x80, 0xf4, 0x89, 0x01, 0x00,
1391 0x90, 0x95, 0x2a, 0xc8, 0xe5, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1,
1392 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb1, 0x01, 0x00,
1393 0x00, 0x00, 0x00, 0xa4, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd0,
1394 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf0, 0xb1, 0x01, 0x00,
1395 0x00, 0x00, 0x00, 0xd2, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
1396 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf0, 0xb1, 0x01, 0x00,
1397 0x00, 0x00, 0x00, 0xd3, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xee,
1398 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xf0, 0xb1, 0x01, 0x00,
1399 0x00, 0x00, 0x00, 0x40, 0x44, 0xb1, 0x01, 0x00, 0x18, 0x80, 0x11, 0x81,
1400 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0x51, 0x40, 0x81, 0xb2, 0x01, 0x00,
1401 0x1a, 0x80, 0x11, 0x82, 0x98, 0x30, 0x00, 0x00, 0x00, 0x00, 0x52, 0x40,
1402 0x81, 0xb2, 0x01, 0x00, 0x0e, 0x87, 0x00, 0x48, 0xfd, 0x93, 0x00, 0x00,
1403 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x23, 0x80, 0xa2, 0x42,
1404 0xfd, 0x7f, 0x00, 0x00, 0x20, 0x80, 0x00, 0x80, 0x80, 0x32, 0x00, 0x00,
1405 0x22, 0x80, 0x11, 0x81, 0x82, 0x30, 0x00, 0x00, 0x22, 0x80, 0x51, 0x40,
1406 0x81, 0xb2, 0x00, 0x00, 0x22, 0x80, 0x11, 0x82, 0x82, 0x30, 0x00, 0x00,
1407 0x22, 0x80, 0x52, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x48,
1408 0xfd, 0x93, 0x00, 0x00, 0x27, 0x80, 0x00, 0x80, 0x80, 0x32, 0x00, 0x00,
1409 0x26, 0x80, 0xa2, 0x53, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x51, 0x53,
1410 0x07, 0x90, 0x01, 0x00, 0x2a, 0x80, 0x00, 0x52, 0x07, 0x90, 0x00, 0x00,
1411 0x29, 0x80, 0xa2, 0x52, 0x07, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52,
1412 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53, 0x07, 0x90, 0x01, 0x00,
1413 0x00, 0x00, 0x00, 0x48, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
1414 0xf3, 0x93, 0x01, 0x00, 0x5c, 0x95, 0x2e, 0xa2, 0x52, 0xb3, 0x01, 0x00,
1415 0xff, 0x00, 0x00, 0x80, 0xf4, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
1416 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x45, 0xb1, 0x01, 0x00,
1417 0x30, 0x80, 0x00, 0x4c, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x45, 0x40,
1418 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x55, 0x40, 0x81, 0xb2, 0x01, 0x00,
1419 0xaf, 0x82, 0x05, 0x40, 0x49, 0xb1, 0x00, 0x00, 0xaf, 0x82, 0x05, 0x40,
1420 0x49, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x49, 0xb1, 0x01, 0x00,
1421 0x4c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
1422 0xde, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfd, 0x93, 0x01, 0x00,
1423 0x00, 0x00, 0x00, 0x48, 0xfd, 0x83, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40,
1424 0x9b, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x9c, 0xb3, 0x01, 0x00,
1425 0x48, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x58, 0x95, 0x20, 0x44,
1426 0xe0, 0xb1, 0x01, 0x00, 0x04, 0x94, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
1427 0x00, 0x00, 0x00, 0xf2, 0x24, 0xb1, 0x01, 0x00, 0x00, 0x0c, 0x00, 0xee,
1428 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x97, 0xf0, 0x01, 0x00,
1429 0x44, 0x80, 0xa2, 0x43, 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
1430 0xfd, 0x93, 0x01, 0x00, 0x00, 0xc0, 0x00, 0xa6, 0x36, 0xb1, 0x01, 0x00,
1431 0xd0, 0x14, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40,
1432 0xf5, 0x99, 0x01, 0x00, 0x00, 0x38, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1433 0x00, 0x06, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1434 0xf5, 0x99, 0x01, 0x00, 0x05, 0x10, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00,
1435 0x02, 0x09, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40,
1436 0xf5, 0x99, 0x01, 0x00, 0x60, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1437 0x88, 0x03, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xa0, 0x03, 0x00, 0x40,
1438 0x81, 0x32, 0x01, 0x00, 0xa2, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1439 0x9a, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x60, 0x95, 0x20, 0x40,
1440 0xe1, 0xb1, 0x01, 0x00, 0x70, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
1441 0x00, 0x00, 0x00, 0x49, 0xdd, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1442 0x91, 0xb3, 0x01, 0x00, 0xe0, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1443 0x00, 0x00, 0x00, 0x40, 0x85, 0xb3, 0x01, 0x00, 0x5c, 0x95, 0x20, 0x40,
1444 0xe1, 0xb1, 0x01, 0x00, 0x27, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1445 0x90, 0x06, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1446 0x2f, 0x81, 0x01, 0x00, 0x8d, 0x81, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1447 0xe5, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x45, 0x40,
1448 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x55, 0x40, 0x81, 0xb2, 0x01, 0x00,
1449 0xdd, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1450 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1451 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1454 0x81, 0xb2, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1455 0xaf, 0x82, 0x00, 0x41, 0xe1, 0xc1, 0x00, 0x00, 0x78, 0x18, 0x00, 0x40,
1456 0x49, 0x99, 0x01, 0x00, 0x19, 0x05, 0x22, 0x54, 0x81, 0x7c, 0x00, 0x00,
1457 0x6c, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0xb4,
1458 0x69, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x44, 0x93, 0x93, 0x01, 0x00,
1459 0x28, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x18, 0x05, 0x00, 0x40,
1460 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1461 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1465 0x40, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x7d, 0x80, 0x22, 0x40,
1466 0x97, 0x6c, 0x00, 0x00, 0x7a, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1467 0x00, 0x00, 0x00, 0x4f, 0x69, 0x93, 0x01, 0x00, 0x38, 0x81, 0x00, 0x58,
1468 0x69, 0x93, 0x00, 0x00, 0x54, 0x16, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
1469 0x00, 0x00, 0x00, 0xfe, 0xf4, 0xb1, 0x01, 0x00, 0x80, 0x05, 0x00, 0x40,
1470 0x81, 0xb2, 0x00, 0x00, 0x80, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
1471 0x00, 0x00, 0x00, 0x4e, 0x69, 0x93, 0x01, 0x00, 0x38, 0x81, 0x00, 0x58,
1472 0x69, 0x93, 0x00, 0x00, 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
1473 0x40, 0x05, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0xf6, 0x15, 0x00, 0x40,
1474 0x43, 0x99, 0x01, 0x00, 0x5c, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
1475 0x00, 0x00, 0x6e, 0xfa, 0x8e, 0xb0, 0x01, 0x00, 0xc1, 0x05, 0x00, 0x40,
1476 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1481 0x96, 0x80, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x82, 0x00, 0x40,
1482 0x81, 0x32, 0x01, 0x00, 0x96, 0x80, 0x22, 0x40, 0x97, 0x6c, 0x00, 0x00,
1483 0x93, 0x80, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f,
1484 0x69, 0x93, 0x01, 0x00, 0x38, 0x81, 0x00, 0x58, 0x69, 0x93, 0x00, 0x00,
1485 0x38, 0x05, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48,
1486 0xb2, 0xcb, 0x01, 0x00, 0xd0, 0x05, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1487 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1488 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
1490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x83, 0x02, 0x00, 0x40,
1492 0x81, 0xb2, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1493 0xd4, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd5, 0x9f, 0x00, 0x40,
1494 0x81, 0xb2, 0x00, 0x00, 0xd6, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1495 0xd7, 0x9f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x72, 0x01, 0x00, 0x41,
1496 0x81, 0xc0, 0x00, 0x00, 0x55, 0x01, 0x51, 0x48, 0xfd, 0x93, 0x00, 0x00,
1497 0x55, 0x01, 0x52, 0x48, 0xfd, 0x93, 0x00, 0x00, 0x55, 0x01, 0x55, 0x49,
1498 0xfd, 0x83, 0x00, 0x00, 0x55, 0x01, 0x56, 0x4a, 0xfd, 0x83, 0x00, 0x00,
1499 0x50, 0x01, 0x91, 0x81, 0x80, 0x30, 0x00, 0x00, 0x55, 0x01, 0x45, 0x40,
1500 0x81, 0xb2, 0x00, 0x00, 0x50, 0x01, 0x91, 0x82, 0x80, 0x30, 0x00, 0x00,
1501 0x55, 0x01, 0x46, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1502 0x89, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x80, 0xb0, 0x01, 0x00,
1503 0x00, 0x00, 0x00, 0xf0, 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x00, 0x05,
1504 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x48, 0xc1, 0x01, 0x00,
1505 0xb4, 0x80, 0x43, 0x30, 0x3d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e,
1506 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x41, 0x3d, 0xc3, 0x01, 0x00,
1507 0x04, 0x00, 0x20, 0x42, 0xec, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1508 0x49, 0xb1, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00,
1509 0x00, 0x00, 0x00, 0x20, 0x46, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd2,
1510 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf1, 0xb1, 0x01, 0x00,
1511 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
1512 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00,
1513 0x00, 0x00, 0xa8, 0xd0, 0xe1, 0xb1, 0x00, 0x00, 0xbf, 0x80, 0x00, 0x40,
1514 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x98, 0xb0, 0x01, 0x00,
1515 0x04, 0x80, 0x00, 0x40, 0x8b, 0xb3, 0x00, 0x00, 0xb1, 0x03, 0x00, 0x40,
1516 0xa1, 0x99, 0x01, 0x00, 0xc7, 0x80, 0xa2, 0x42, 0x97, 0x6f, 0x00, 0x00,
1517 0x00, 0x00, 0x00, 0x45, 0xa1, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
1518 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x04, 0x80, 0x94, 0x00, 0x00,
1519 0x80, 0x15, 0x3f, 0x42, 0x97, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1520 0x49, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x03, 0x02, 0x94, 0x01, 0x00,
1521 0x00, 0x00, 0x00, 0x40, 0x07, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xcb,
1522 0x99, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xf3, 0x83, 0x01, 0x00,
1523 0xd1, 0x80, 0xa2, 0x42, 0x97, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb,
1524 0xf3, 0x93, 0x01, 0x00, 0xae, 0x03, 0x00, 0xcb, 0xa3, 0xc9, 0x01, 0x00,
1525 0x00, 0x00, 0x00, 0x20, 0x44, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
1526 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00,
1527 0x00, 0x00, 0x00, 0x04, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1,
1528 0xe0, 0xb1, 0x01, 0x00, 0x05, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1529 0x20, 0x00, 0x00, 0x20, 0x62, 0xdd, 0x01, 0x00, 0xd8, 0x80, 0xa8, 0x40,
1530 0x81, 0x32, 0x00, 0x00, 0xf9, 0x02, 0x00, 0x20, 0x42, 0x31, 0x01, 0x00,
1531 0x00, 0x00, 0xa2, 0x41, 0x05, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x80, 0xcb,
1532 0xdb, 0x91, 0x01, 0x00, 0x00, 0x00, 0x19, 0x41, 0x8b, 0xb3, 0x01, 0x00,
1533 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xde, 0x80, 0xa8, 0xb1,
1534 0x8c, 0x33, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1535 0xe0, 0x80, 0xa8, 0xb1, 0x94, 0x33, 0x00, 0x00, 0xe6, 0x80, 0x14, 0xc6,
1536 0x81, 0x32, 0x00, 0x00, 0x18, 0x00, 0x00, 0xc6, 0x83, 0xf4, 0x01, 0x00,
1537 0xf4, 0x82, 0x22, 0x4f, 0x83, 0x04, 0x00, 0x00, 0xc2, 0x80, 0x00, 0x40,
1538 0x81, 0xb2, 0x00, 0x00, 0xff, 0x01, 0x00, 0xc6, 0x81, 0x88, 0x01, 0x00,
1539 0x00, 0x00, 0x00, 0xc6, 0x97, 0xa3, 0x01, 0x00, 0xc2, 0x80, 0x1f, 0x5c,
1540 0x97, 0x53, 0x00, 0x00, 0x58, 0x82, 0x1e, 0xc6, 0x81, 0x32, 0x00, 0x00,
1541 0x00, 0x00, 0x2f, 0x43, 0x81, 0xf0, 0x01, 0x00, 0xec, 0x80, 0x00, 0x40,
1542 0x10, 0xc9, 0x00, 0x00, 0x39, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1543 0x6a, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x24, 0x82, 0x00, 0xca,
1544 0x63, 0xb3, 0x00, 0x00, 0x61, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1545 0x48, 0x81, 0x00, 0x4d, 0x83, 0xb0, 0x00, 0x00, 0x52, 0x81, 0x00, 0x4e,
1546 0x61, 0xb1, 0x00, 0x00, 0x41, 0x81, 0x00, 0x40, 0x85, 0xb0, 0x00, 0x00,
1547 0x48, 0x81, 0x00, 0x4c, 0x83, 0xb0, 0x00, 0x00, 0x24, 0x81, 0x00, 0x40,
1548 0x85, 0xb0, 0x00, 0x00, 0xe3, 0x81, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00,
1549 0x71, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0xdf, 0x81, 0x00, 0x40,
1550 0x81, 0xb2, 0x00, 0x00, 0x41, 0x81, 0x00, 0x40, 0x85, 0xb0, 0x00, 0x00,
1551 0xf0, 0x03, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0xf4, 0x82, 0x00, 0xca,
1552 0x9b, 0xb3, 0x00, 0x00, 0x7b, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
1553 0x7f, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0x86, 0x81, 0x00, 0x40,
1554 0xc1, 0xb1, 0x00, 0x00, 0x87, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00,
1555 0x88, 0x81, 0x00, 0x40, 0xc1, 0xb1, 0x00, 0x00, 0x89, 0x81, 0x00, 0x40,
1556 0xc1, 0xb1, 0x00, 0x00, 0x8a, 0x81, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00,
1557 0x8a, 0x81, 0x00, 0x41, 0x81, 0xb0, 0x00, 0x00, 0x18, 0x82, 0x00, 0x40,
1558 0x81, 0xb2, 0x00, 0x00, 0x97, 0x82, 0x00, 0xbb, 0xab, 0xb3, 0x00, 0x00,
1559 0x25, 0x82, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00, 0xc8, 0x03, 0x00, 0x40,
1560 0x49, 0xb1, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1561 0x26, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf4, 0x82, 0x00, 0x40,
1562 0x81, 0xb2, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1563 0xf4, 0x82, 0x00, 0xca, 0x77, 0xb3, 0x00, 0x00, 0x49, 0x81, 0x00, 0x4d,
1564 0x83, 0xb0, 0x00, 0x00, 0x50, 0x81, 0x00, 0x4e, 0x61, 0xb1, 0x00, 0x00,
1565 0x41, 0x81, 0x00, 0xbb, 0x85, 0xb0, 0x00, 0x00, 0x49, 0x81, 0x00, 0x4c,
1566 0x83, 0xb0, 0x00, 0x00, 0x41, 0x81, 0x00, 0xbb, 0x85, 0xb0, 0x00, 0x00,
1567 0x24, 0x81, 0x00, 0xbb, 0x85, 0xb0, 0x00, 0x00, 0x16, 0x81, 0x00, 0x40,
1568 0x81, 0xb2, 0x00, 0x00, 0xf4, 0x82, 0x00, 0xca, 0x4d, 0xb3, 0x00, 0x00,
1569 0x70, 0x05, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x40,
1570 0x49, 0xb1, 0x00, 0x00, 0x1c, 0x81, 0x22, 0x42, 0x8f, 0x6f, 0x00, 0x00,
1571 0x1e, 0x81, 0x22, 0x41, 0x8f, 0x6f, 0x00, 0x00, 0x20, 0x81, 0x1e, 0xca,
1572 0x81, 0x32, 0x00, 0x00, 0x22, 0x81, 0x1f, 0xca, 0x81, 0x32, 0x00, 0x00,
1573 0x00, 0x00, 0x00, 0xca, 0xc9, 0xb1, 0x01, 0x00, 0xf4, 0x82, 0x00, 0x42,
1574 0x8f, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xcd, 0xb1, 0x01, 0x00,
1575 0xf4, 0x82, 0x00, 0x41, 0x8f, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
1576 0xcf, 0xb1, 0x01, 0x00, 0xf4, 0x82, 0x00, 0x40, 0x8f, 0xb3, 0x00, 0x00,
1577 0x00, 0x81, 0x00, 0xa6, 0xc6, 0xb1, 0x01, 0x00, 0xf4, 0x82, 0x00, 0x40,
1578 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6, 0xc6, 0xb1, 0x01, 0x00,
1579 0xf4, 0x82, 0x00, 0x40, 0x8f, 0xb3, 0x00, 0x00, 0x78, 0x18, 0x00, 0x40,
1580 0x49, 0x99, 0x01, 0x00, 0x10, 0x00, 0x2f, 0x9c, 0x89, 0xb0, 0x01, 0x00,
1581 0x3b, 0x81, 0x00, 0x40, 0x39, 0x33, 0x01, 0x00, 0x18, 0x00, 0x2f, 0x9b,
1582 0x89, 0xb0, 0x01, 0x00, 0x3b, 0x81, 0x00, 0x40, 0x37, 0x33, 0x01, 0x00,
1583 0x00, 0x00, 0x2f, 0x9a, 0x89, 0xb0, 0x01, 0x00, 0x3b, 0x81, 0x00, 0x40,
1584 0x35, 0x33, 0x01, 0x00, 0x08, 0x00, 0x2f, 0x99, 0x89, 0xb0, 0x01, 0x00,
1585 0x3b, 0x81, 0x00, 0x40, 0x33, 0x33, 0x01, 0x00, 0x00, 0x80, 0x00, 0xae,
1586 0x47, 0xc9, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
1587 0x00, 0x00, 0x00, 0xca, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
1588 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x18, 0x00, 0x40, 0xe1, 0x99, 0x01, 0x00,
1589 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xae,
1590 0x63, 0xdd, 0x01, 0x00, 0x36, 0x81, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
1591 0x33, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x36, 0x81, 0x42, 0x40,
1592 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x69, 0x93, 0x01, 0x00,
1593 0xf4, 0x82, 0x1a, 0x44, 0x93, 0x93, 0x00, 0x00, 0x39, 0x81, 0x42, 0x40,
1594 0x81, 0x32, 0x00, 0x00, 0x38, 0x81, 0x00, 0x58, 0x69, 0x93, 0x00, 0x00,
1595 0x00, 0x00, 0x00, 0x44, 0xf0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0xa4, 0x40,
1596 0x81, 0xb2, 0x00, 0x00, 0x40, 0x81, 0xa2, 0x40, 0xe1, 0x6d, 0x00, 0x00,
1597 0x00, 0x00, 0x00, 0x44, 0x45, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
1598 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x41, 0xe1, 0xd1, 0x01, 0x00,
1599 0x41, 0x81, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
1600 0x62, 0xb1, 0x01, 0x00, 0x45, 0x81, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
1601 0x42, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
1602 0x63, 0xb1, 0x01, 0x00, 0x45, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1603 0xf4, 0x82, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x4a, 0x81, 0x00, 0x40,
1604 0x81, 0xb0, 0x00, 0x00, 0x4a, 0x81, 0x00, 0xbb, 0x81, 0xb0, 0x00, 0x00,
1605 0x00, 0x00, 0x00, 0x41, 0x60, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1606 0x62, 0xb1, 0x01, 0x00, 0x4b, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1607 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00, 0xf4, 0x82, 0x28, 0x40,
1608 0x81, 0x32, 0x00, 0x00, 0x4d, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1609 0x50, 0x95, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x53, 0x81, 0x00, 0xbb,
1610 0x87, 0xb0, 0x00, 0x00, 0x50, 0x95, 0x2f, 0x40, 0x87, 0xb0, 0x01, 0x00,
1611 0x55, 0x81, 0x22, 0x40, 0x95, 0x7f, 0x00, 0x00, 0xf4, 0x82, 0x60, 0x40,
1612 0x95, 0x83, 0x00, 0x00, 0x02, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
1613 0x56, 0x81, 0x36, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
1614 0x62, 0xb1, 0x01, 0x00, 0x57, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1615 0x00, 0x00, 0x00, 0x43, 0x62, 0xb1, 0x01, 0x00, 0x59, 0x81, 0xa8, 0x40,
1616 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x63, 0xb1, 0x01, 0x00,
1617 0x5b, 0x81, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x16, 0x40,
1618 0x81, 0xb2, 0x01, 0x00, 0xf4, 0x82, 0x22, 0x41, 0x43, 0x51, 0x00, 0x00,
1619 0x00, 0x08, 0x00, 0xca, 0x95, 0xcb, 0x01, 0x00, 0x56, 0x81, 0x00, 0x41,
1620 0x85, 0xc0, 0x00, 0x00, 0x63, 0x81, 0xa2, 0x42, 0x67, 0x6f, 0x00, 0x00,
1621 0x00, 0x00, 0x00, 0x41, 0x67, 0xb3, 0x01, 0x00, 0x63, 0x81, 0x42, 0x40,
1622 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x65, 0xb3, 0x01, 0x00,
1623 0x00, 0x00, 0x00, 0x40, 0x93, 0x83, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xca,
1624 0x69, 0x97, 0x01, 0x00, 0xf4, 0x82, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
1625 0x68, 0x81, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0xf4, 0x82, 0x1a, 0x44,
1626 0x93, 0x93, 0x00, 0x00, 0xf4, 0x82, 0x20, 0x43, 0x95, 0x6f, 0x00, 0x00,
1627 0xf4, 0x82, 0x80, 0xca, 0x67, 0x33, 0x00, 0x00, 0xf4, 0x82, 0x22, 0x40,
1628 0x65, 0x6f, 0x00, 0x00, 0xf4, 0x82, 0x00, 0x6f, 0xdb, 0x91, 0x00, 0x00,
1629 0x85, 0x00, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x35, 0x80, 0x22, 0x40,
1630 0x80, 0x32, 0x00, 0x00, 0xf4, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1631 0x00, 0x00, 0x00, 0x58, 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1632 0x95, 0x93, 0x01, 0x00, 0x77, 0x81, 0xa2, 0x44, 0x21, 0x6f, 0x00, 0x00,
1633 0x00, 0x00, 0x00, 0x5f, 0x95, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5e,
1634 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57, 0x95, 0x93, 0x01, 0x00,
1635 0x00, 0x00, 0x00, 0xca, 0xc3, 0xb1, 0x01, 0x00, 0x7a, 0x81, 0x22, 0x5b,
1636 0x95, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xfd, 0x93, 0x01, 0x00,
1637 0xf4, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1b, 0xfd, 0x00, 0xca,
1638 0x95, 0x9b, 0x01, 0x00, 0x0d, 0x01, 0x00, 0xca, 0xc5, 0x31, 0x01, 0x00,
1639 0x00, 0x00, 0x00, 0x5f, 0x95, 0x83, 0x01, 0x00, 0xf4, 0x82, 0x00, 0xca,
1640 0xc5, 0xb1, 0x00, 0x00, 0xdf, 0x6f, 0x00, 0xca, 0x95, 0x9b, 0x01, 0x00,
1641 0x00, 0x00, 0x00, 0x55, 0x95, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0xca,
1642 0xc7, 0xb1, 0x01, 0x00, 0xf4, 0x82, 0x22, 0x5f, 0x95, 0x7f, 0x00, 0x00,
1643 0x0d, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1644 0x95, 0x83, 0x01, 0x00, 0xf4, 0x82, 0x00, 0xca, 0xc7, 0xb1, 0x00, 0x00,
1645 0xf4, 0x82, 0x00, 0xca, 0xc9, 0xb1, 0x00, 0x00, 0xf4, 0x82, 0x00, 0xca,
1646 0xcb, 0xb1, 0x00, 0x00, 0xf4, 0x82, 0x00, 0xca, 0xcd, 0xb1, 0x00, 0x00,
1647 0xf4, 0x82, 0x00, 0xca, 0xcf, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x42,
1648 0x81, 0xe0, 0x01, 0x00, 0x98, 0x14, 0x00, 0x40, 0x48, 0xc9, 0x01, 0x00,
1649 0xf4, 0x82, 0x00, 0xca, 0xe1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1650 0x09, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1651 0x8f, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x41,
1652 0x08, 0x99, 0x01, 0x00, 0x91, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
1653 0x20, 0x80, 0x00, 0xa6, 0x08, 0xb1, 0x01, 0x00, 0x93, 0x81, 0x9f, 0x85,
1654 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x83, 0x84, 0x01, 0x00,
1655 0xc8, 0x81, 0x22, 0x30, 0x83, 0x6c, 0x00, 0x00, 0x92, 0x81, 0xa2, 0x4f,
1656 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x21, 0xb3, 0x01, 0x00,
1657 0x02, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40,
1658 0x81, 0x32, 0x01, 0x00, 0x10, 0x00, 0x00, 0x41, 0x84, 0xe4, 0x01, 0x00,
1659 0x03, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40,
1660 0x81, 0x32, 0x01, 0x00, 0xf0, 0xff, 0x00, 0x41, 0x86, 0x88, 0x01, 0x00,
1661 0x00, 0x00, 0x00, 0x43, 0x84, 0x94, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xa6,
1662 0x86, 0xb0, 0x01, 0x00, 0x10, 0xc4, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00,
1663 0xa8, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
1664 0x21, 0xb3, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1665 0x1c, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0xa5, 0x81, 0xa2, 0x5e,
1666 0x0b, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00,
1667 0xba, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x41, 0x01, 0x00, 0xa6,
1668 0x86, 0xb0, 0x01, 0x00, 0x50, 0x0c, 0x00, 0x43, 0x86, 0x98, 0x01, 0x00,
1669 0xad, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1670 0x21, 0xb3, 0x01, 0x00, 0xba, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1671 0x41, 0x01, 0x00, 0xa6, 0x86, 0xb0, 0x01, 0x00, 0x60, 0x0c, 0x00, 0x43,
1672 0x86, 0x98, 0x01, 0x00, 0xba, 0x81, 0xa2, 0x43, 0x84, 0x6c, 0x00, 0x00,
1673 0x00, 0x00, 0x00, 0x42, 0x21, 0xb3, 0x01, 0x00, 0x18, 0x80, 0x00, 0xa6,
1674 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1675 0xff, 0xff, 0x00, 0x41, 0x82, 0x88, 0x01, 0x00, 0x00, 0x77, 0x00, 0x41,
1676 0x82, 0x8c, 0x01, 0x00, 0x01, 0x02, 0x00, 0x41, 0x82, 0x98, 0x01, 0x00,
1677 0x20, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x18, 0x00, 0x00, 0x41,
1678 0x82, 0xdc, 0x01, 0x00, 0xb8, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
1679 0x00, 0x00, 0x00, 0x41, 0x08, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
1680 0x82, 0xb0, 0x01, 0x00, 0xbb, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00,
1681 0x40, 0x13, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00, 0xc3, 0x81, 0x22, 0x43,
1682 0x21, 0x6f, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1683 0x12, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0xc0, 0x81, 0xa2, 0x5e,
1684 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00,
1685 0xde, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6,
1686 0x82, 0xb0, 0x01, 0x00, 0x19, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
1687 0xc5, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x41,
1688 0x08, 0x99, 0x01, 0x00, 0xde, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1689 0x00, 0x00, 0x00, 0x44, 0x21, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1690 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x83, 0x90, 0x01, 0x00,
1691 0x00, 0x00, 0x00, 0x5e, 0x83, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57,
1692 0x83, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc2, 0xb1, 0x01, 0x00,
1693 0x0c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
1694 0x83, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xc2, 0xb1, 0x01, 0x00,
1695 0x0c, 0x01, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
1696 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
1697 0x20, 0x00, 0x00, 0x41, 0x08, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6,
1698 0x82, 0xb0, 0x01, 0x00, 0x11, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00,
1699 0xd7, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x01, 0x00, 0x00, 0x41,
1700 0x08, 0x99, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1701 0xda, 0x81, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x40, 0x13, 0x00, 0x41,
1702 0x08, 0x99, 0x01, 0x00, 0x01, 0x00, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1703 0x40, 0x00, 0x00, 0x41, 0x2e, 0x99, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
1704 0x81, 0xb2, 0x01, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x80, 0xb0, 0x01, 0x00,
1705 0x00, 0x00, 0x00, 0xca, 0x81, 0x94, 0x01, 0x00, 0xe1, 0x81, 0xa2, 0x5e,
1706 0x0b, 0x7d, 0x00, 0x00, 0xf4, 0x82, 0x00, 0x40, 0x08, 0xb1, 0x00, 0x00,
1707 0xc8, 0x14, 0x2e, 0xbb, 0x85, 0xb0, 0x01, 0x00, 0xe4, 0x81, 0xa2, 0x5e,
1708 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0xb0, 0x01, 0x00,
1709 0xf3, 0x81, 0x22, 0x43, 0x21, 0x6f, 0x00, 0x00, 0x02, 0x82, 0x22, 0x44,
1710 0x21, 0x6f, 0x00, 0x00, 0x11, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00,
1711 0x13, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x0a, 0x82, 0x22, 0x4a,
1712 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00,
1713 0xee, 0x81, 0x22, 0x4d, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1714 0x87, 0x90, 0x01, 0x00, 0xf0, 0x81, 0x22, 0x4f, 0x83, 0x7c, 0x00, 0x00,
1715 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00, 0xf2, 0x81, 0x22, 0x4e,
1716 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x87, 0x90, 0x01, 0x00,
1717 0x0a, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x01, 0x80, 0x00, 0xa6,
1718 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1719 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40,
1720 0x81, 0x32, 0x01, 0x00, 0x0a, 0x82, 0x22, 0x42, 0x83, 0x7c, 0x00, 0x00,
1721 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00, 0x1c, 0x80, 0x00, 0xa6,
1722 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1723 0xfd, 0x81, 0x22, 0x45, 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
1724 0x87, 0x90, 0x01, 0x00, 0xff, 0x81, 0x22, 0x44, 0x83, 0x7c, 0x00, 0x00,
1725 0x00, 0x00, 0x00, 0x43, 0x87, 0x90, 0x01, 0x00, 0x01, 0x82, 0x22, 0x43,
1726 0x83, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x87, 0x90, 0x01, 0x00,
1727 0x0a, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x01, 0x80, 0x00, 0xa6,
1728 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1729 0x01, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40,
1730 0x81, 0x32, 0x01, 0x00, 0x0a, 0x82, 0x22, 0x42, 0x83, 0x7c, 0x00, 0x00,
1731 0x00, 0x00, 0x00, 0x40, 0x87, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
1732 0x87, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x87, 0x90, 0x01, 0x00,
1733 0x00, 0x80, 0x00, 0xa6, 0x82, 0xb0, 0x01, 0x00, 0x13, 0x82, 0x00, 0x40,
1734 0x81, 0x32, 0x01, 0x00, 0x0e, 0x82, 0x22, 0x4b, 0x83, 0x7c, 0x00, 0x00,
1735 0x00, 0x00, 0x00, 0x40, 0x87, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
1736 0xe0, 0xb1, 0x01, 0x00, 0xff, 0x7f, 0x00, 0xa2, 0xa0, 0x8b, 0x01, 0x00,
1737 0x00, 0x00, 0x00, 0x44, 0xa5, 0xb3, 0x01, 0x00, 0xb8, 0x80, 0x00, 0xca,
1738 0xa7, 0x33, 0x01, 0x00, 0x36, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1739 0x20, 0x00, 0x00, 0x41, 0x82, 0xdc, 0x01, 0x00, 0x14, 0x82, 0xa2, 0x5e,
1740 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xb1, 0x01, 0x00,
1741 0x16, 0x82, 0x9f, 0x85, 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
1742 0x81, 0xb2, 0x01, 0x00, 0x1b, 0x82, 0x14, 0xf7, 0x81, 0x30, 0x00, 0x00,
1743 0x1b, 0x82, 0xa2, 0x49, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
1744 0xfd, 0x93, 0x01, 0x00, 0x1e, 0x82, 0x15, 0xf8, 0x81, 0x14, 0x00, 0x00,
1745 0x1e, 0x82, 0xa2, 0x4a, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48,
1746 0xfd, 0x93, 0x01, 0x00, 0x20, 0x82, 0xa2, 0xc8, 0x81, 0x32, 0x00, 0x00,
1747 0x40, 0x00, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00, 0x00, 0x10, 0x00, 0x40,
1748 0x80, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xef, 0xb3, 0x01, 0x00,
1749 0x22, 0x82, 0x42, 0x40, 0xf1, 0x33, 0x00, 0x00, 0x38, 0x81, 0x00, 0x40,
1750 0x68, 0x97, 0x00, 0x00, 0xf4, 0x82, 0x00, 0xbb, 0x6b, 0xb3, 0x00, 0x00,
1751 0xf4, 0x82, 0x00, 0xbb, 0xb1, 0xb3, 0x00, 0x00, 0xf4, 0x82, 0x00, 0x40,
1752 0x81, 0xb2, 0x00, 0x00, 0x00, 0x03, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
1753 0x00, 0x00, 0x00, 0x40, 0x18, 0xb1, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40,
1754 0x83, 0x98, 0x01, 0x00, 0x00, 0x19, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
1755 0x00, 0x00, 0x42, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x43, 0xff,
1756 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf1, 0xb1, 0x01, 0x00,
1757 0x00, 0x00, 0x00, 0x41, 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1758 0x18, 0xb1, 0x01, 0x00, 0x2b, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
1759 0x00, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x19, 0x00, 0x40,
1760 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x43, 0xc1, 0x01, 0x00,
1761 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
1762 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x81, 0xd0, 0x01, 0x00,
1763 0x00, 0x00, 0x00, 0x41, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1764 0xf6, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x43, 0xc1, 0x01, 0x00,
1765 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00, 0x35, 0x82, 0xa2, 0x54,
1766 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf7, 0xb1, 0x01, 0x00,
1767 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00, 0x3c, 0x82, 0xa2, 0x06,
1768 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00,
1769 0x00, 0x16, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x80, 0x16, 0x2e, 0x06,
1770 0x83, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1771 0x42, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x22, 0x00, 0x00, 0x40,
1772 0x83, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xf6, 0xb1, 0x01, 0x00,
1773 0x45, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x62, 0x00, 0x00, 0x40,
1774 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
1775 0x00, 0x16, 0x2d, 0x06, 0x83, 0xb0, 0x01, 0x00, 0x80, 0x16, 0x00, 0x40,
1776 0x45, 0x99, 0x01, 0x00, 0x5c, 0x00, 0x00, 0xfb, 0xf6, 0xa9, 0x01, 0x00,
1777 0x4b, 0x82, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
1778 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x71, 0xf9, 0xb1, 0x01, 0x00,
1779 0x00, 0x00, 0x00, 0x72, 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x73,
1780 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x74, 0xf9, 0xb1, 0x01, 0x00,
1781 0x54, 0x00, 0x00, 0x40, 0x95, 0x98, 0x01, 0x00, 0xdc, 0x9f, 0x00, 0x40,
1782 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x95, 0xb0, 0x01, 0x00,
1783 0x57, 0x82, 0x22, 0x70, 0xb5, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41,
1784 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x97, 0xb0, 0x01, 0x00,
1785 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x42,
1786 0x99, 0xb3, 0x01, 0x00, 0x62, 0x82, 0x22, 0x44, 0x81, 0x6c, 0x00, 0x00,
1787 0x6a, 0x82, 0x22, 0x48, 0x81, 0x6c, 0x00, 0x00, 0x64, 0x82, 0x22, 0x4c,
1788 0x81, 0x6c, 0x00, 0x00, 0x6e, 0x82, 0x22, 0x50, 0x81, 0x6c, 0x00, 0x00,
1789 0x6f, 0x82, 0x22, 0x54, 0x81, 0x6c, 0x00, 0x00, 0x71, 0x82, 0x22, 0x58,
1790 0x81, 0x6c, 0x00, 0x00, 0x76, 0x82, 0x22, 0x5c, 0x81, 0x6c, 0x00, 0x00,
1791 0x50, 0x01, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc,
1792 0x09, 0xb0, 0x01, 0x00, 0xf4, 0x82, 0x00, 0xca, 0x01, 0xb0, 0x00, 0x00,
1793 0x00, 0x00, 0x00, 0x40, 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
1794 0xf3, 0x83, 0x01, 0x00, 0x68, 0x82, 0xa2, 0x42, 0x05, 0x6c, 0x00, 0x00,
1795 0x00, 0x00, 0x00, 0x41, 0x05, 0xb0, 0x01, 0x00, 0xf4, 0x82, 0x22, 0xca,
1796 0x07, 0x14, 0x00, 0x00, 0xf4, 0x82, 0x00, 0x46, 0xf3, 0x93, 0x00, 0x00,
1797 0xf4, 0x82, 0x20, 0x43, 0x95, 0x6f, 0x00, 0x00, 0xf4, 0x82, 0x80, 0xca,
1798 0x05, 0x30, 0x00, 0x00, 0xf4, 0x82, 0x22, 0x01, 0x80, 0x30, 0x00, 0x00,
1799 0xf4, 0x82, 0x00, 0xcb, 0xdb, 0x91, 0x00, 0x00, 0x57, 0x01, 0x00, 0xbc,
1800 0xab, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0xb1, 0xb3, 0x01, 0x00,
1801 0xf4, 0x82, 0x00, 0xca, 0xcf, 0xb3, 0x00, 0x00, 0xff, 0x00, 0x00, 0xca,
1802 0x81, 0x88, 0x01, 0x00, 0xf4, 0x82, 0xa2, 0x40, 0x74, 0x7d, 0x00, 0x00,
1803 0x60, 0x00, 0x20, 0x40, 0x60, 0x99, 0x01, 0x00, 0x73, 0x82, 0xa8, 0xb1,
1804 0x82, 0x30, 0x00, 0x00, 0x72, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1805 0xf4, 0x82, 0x00, 0xca, 0x79, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e,
1806 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0xcb, 0x83, 0x01, 0x00,
1807 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x79, 0x82, 0xa2, 0x41,
1808 0x81, 0x50, 0x00, 0x00, 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00,
1809 0x00, 0x00, 0x45, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x84, 0x82, 0x91, 0x82,
1810 0x82, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x80, 0xb0, 0x01, 0x00,
1811 0xae, 0x9f, 0x00, 0x40, 0x80, 0xce, 0x01, 0x00, 0x82, 0x82, 0xa6, 0x40,
1812 0x81, 0x32, 0x00, 0x00, 0x84, 0x82, 0x56, 0x40, 0x81, 0xb2, 0x00, 0x00,
1813 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53,
1814 0x07, 0x90, 0x01, 0x00, 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
1815 0x00, 0x00, 0x00, 0x52, 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x41,
1816 0x8b, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x81, 0xb0, 0x01, 0x00,
1817 0x00, 0x00, 0x00, 0x42, 0xcd, 0x83, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40,
1818 0x81, 0xb2, 0x01, 0x00, 0x89, 0x82, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00,
1819 0x00, 0x00, 0x46, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x46, 0x40,
1820 0x81, 0xb2, 0x01, 0x00, 0x94, 0x82, 0x91, 0x81, 0x82, 0x30, 0x00, 0x00,
1821 0x00, 0x00, 0x00, 0x89, 0x80, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40,
1822 0x80, 0xce, 0x01, 0x00, 0x92, 0x82, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
1823 0x94, 0x82, 0x55, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb6, 0x03, 0x00, 0x40,
1824 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x52, 0x07, 0x90, 0x01, 0x00,
1825 0xb6, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x53,
1826 0x07, 0x90, 0x01, 0x00, 0xd8, 0x9f, 0x00, 0x41, 0x8b, 0xb3, 0x00, 0x00,
1827 0xb1, 0x03, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00, 0xc4, 0x14, 0x2f, 0x40,
1828 0x99, 0xb3, 0x01, 0x00, 0x57, 0x01, 0x00, 0x40, 0x49, 0xb1, 0x00, 0x00,
1829 0xa0, 0x94, 0x2e, 0x43, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1830 0xf1, 0xb1, 0x01, 0x00, 0x9b, 0x82, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
1831 0x50, 0x95, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xac, 0x94, 0x2e, 0x43,
1832 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
1833 0x9f, 0x82, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
1834 0x81, 0xb2, 0x01, 0x00, 0xae, 0x03, 0x00, 0x40, 0xa3, 0x99, 0x01, 0x00,
1835 0x00, 0x00, 0x00, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x60, 0x15, 0x00, 0x40,
1836 0x85, 0x98, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x40, 0xe4, 0x01, 0x00,
1837 0x00, 0x00, 0x00, 0x59, 0x41, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
1838 0x41, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x94, 0x01, 0x00,
1839 0x00, 0x00, 0x00, 0x57, 0x41, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
1840 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x42, 0x81, 0x6c, 0x01, 0x00,
1841 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00, 0xa5, 0x82, 0xa0, 0x42,
1842 0x81, 0x6c, 0x00, 0x00, 0xa5, 0x82, 0x00, 0x50, 0x85, 0xc0, 0x00, 0x00,
1843 0xdd, 0x82, 0xa2, 0x41, 0x01, 0x7d, 0x00, 0x00, 0xb5, 0x82, 0x22, 0x58,
1844 0x73, 0x7d, 0x00, 0x00, 0x78, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1845 0xb0, 0x82, 0xa8, 0xb1, 0x9c, 0x30, 0x00, 0x00, 0x30, 0x00, 0x38, 0x45,
1846 0x9d, 0xe0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0e, 0x10, 0xc9, 0x00, 0x00,
1847 0xb5, 0x82, 0x33, 0xc4, 0x81, 0x30, 0x00, 0x00, 0xb8, 0x82, 0xa1, 0xad,
1848 0x9d, 0x20, 0x00, 0x00, 0xaf, 0x82, 0x13, 0x40, 0x81, 0xb2, 0x00, 0x00,
1849 0x00, 0x00, 0x13, 0x4e, 0x5a, 0x83, 0x01, 0x00, 0x30, 0x00, 0x38, 0x45,
1850 0x9d, 0xe0, 0x01, 0x00, 0xc0, 0x82, 0x22, 0xab, 0x80, 0x04, 0x00, 0x00,
1851 0xbe, 0x82, 0xa2, 0x40, 0x01, 0x7d, 0x00, 0x00, 0xc0, 0x82, 0x22, 0x5f,
1852 0x57, 0x7d, 0x00, 0x00, 0x36, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1853 0xc0, 0x82, 0x22, 0x5e, 0x57, 0x7d, 0x00, 0x00, 0x99, 0x87, 0x00, 0x40,
1854 0x81, 0xb2, 0x00, 0x00, 0xc5, 0x82, 0x22, 0x54, 0x73, 0x7d, 0x00, 0x00,
1855 0x74, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xc0, 0x82, 0xa8, 0xb1,
1856 0x00, 0x30, 0x00, 0x00, 0x8a, 0x84, 0xa2, 0x5f, 0x01, 0x7c, 0x00, 0x00,
1857 0xca, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc7, 0x82, 0xa2, 0x5f,
1858 0x59, 0x27, 0x00, 0x00, 0xc9, 0x82, 0xa2, 0x5c, 0x73, 0x7d, 0x00, 0x00,
1859 0xd0, 0x82, 0xa2, 0x5e, 0x73, 0x7d, 0x00, 0x00, 0xda, 0x82, 0x22, 0x5c,
1860 0x73, 0x7d, 0x00, 0x00, 0xdb, 0x82, 0x37, 0x40, 0x81, 0x32, 0x00, 0x00,
1861 0x7c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xca, 0x82, 0xa8, 0xb1,
1862 0x36, 0x30, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
1863 0xcc, 0x82, 0xa8, 0xb1, 0x00, 0x30, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
1864 0x02, 0x88, 0x01, 0x00, 0xb9, 0x84, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00,
1865 0xdb, 0x82, 0x34, 0x40, 0x81, 0x32, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x40,
1866 0x61, 0x99, 0x01, 0x00, 0xd1, 0x82, 0xa8, 0xb1, 0x12, 0x30, 0x00, 0x00,
1867 0xd8, 0x82, 0x52, 0x21, 0x13, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x41,
1868 0x2f, 0xc3, 0x01, 0x00, 0xff, 0x3f, 0x00, 0x09, 0x00, 0x8c, 0x01, 0x00,
1869 0x00, 0x00, 0x00, 0x43, 0x01, 0xf0, 0x01, 0x00, 0x11, 0x83, 0x00, 0x34,
1870 0x13, 0x84, 0x00, 0x00, 0xff, 0x3f, 0x14, 0x09, 0x00, 0x8c, 0x01, 0x00,
1871 0x6f, 0x83, 0x00, 0x43, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
1872 0x81, 0xb2, 0x01, 0x00, 0xdb, 0x82, 0x33, 0x40, 0x81, 0x32, 0x00, 0x00,
1873 0xaf, 0x82, 0x13, 0x4e, 0x5a, 0x93, 0x00, 0x00, 0x0e, 0x87, 0xa2, 0x48,
1874 0xfd, 0x7f, 0x00, 0x00, 0x04, 0x00, 0xa2, 0xac, 0x80, 0x32, 0x00, 0x00,
1875 0xe3, 0x82, 0x22, 0x5a, 0x73, 0x7d, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x40,
1876 0x61, 0x99, 0x01, 0x00, 0xe0, 0x82, 0xa8, 0xb1, 0x7e, 0x31, 0x00, 0x00,
1877 0x01, 0x00, 0x00, 0xcf, 0x11, 0xc9, 0x00, 0x00, 0xe9, 0x82, 0xa2, 0x40,
1878 0x93, 0x7f, 0x00, 0x00, 0xe9, 0x82, 0x22, 0x44, 0x93, 0x7f, 0x00, 0x00,
1879 0xe5, 0x82, 0x42, 0xa5, 0x80, 0x30, 0x00, 0x00, 0xe8, 0x82, 0xa2, 0x40,
1880 0x93, 0x7f, 0x00, 0x00, 0xfb, 0x82, 0x1a, 0x40, 0x93, 0x93, 0x00, 0x00,
1881 0x00, 0x00, 0x1a, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xdd, 0x80, 0xa2, 0x40,
1882 0x73, 0x7d, 0x00, 0x00, 0x09, 0x87, 0x22, 0x44, 0x21, 0x6f, 0x00, 0x00,
1883 0x00, 0x87, 0x22, 0x40, 0x65, 0x7d, 0x00, 0x00, 0x00, 0x05, 0xa2, 0x5b,
1884 0x73, 0x7d, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x49, 0x33, 0x7d, 0x00, 0x00,
1885 0xf3, 0x82, 0x22, 0x48, 0x33, 0x7d, 0x00, 0x00, 0xff, 0x01, 0x00, 0x99,
1886 0x80, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x81, 0xe0, 0x01, 0x00,
1887 0xa8, 0x98, 0x2f, 0x40, 0x33, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
1888 0xe0, 0xc1, 0x01, 0x00, 0xdd, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1889 0xaf, 0x82, 0x00, 0x40, 0x8b, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
1890 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x62, 0xb1, 0x01, 0x00,
1891 0xaf, 0x82, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0xf6, 0x82, 0x00, 0x40,
1892 0x81, 0xb2, 0x00, 0x00, 0xf9, 0x82, 0x33, 0x40, 0x1f, 0x30, 0x00, 0x00,
1893 0xaf, 0x82, 0x13, 0x4e, 0x5a, 0x93, 0x00, 0x00, 0xfd, 0x82, 0xa0, 0xce,
1894 0x81, 0x50, 0x00, 0x00, 0x0f, 0x83, 0xa0, 0xcd, 0x81, 0x6c, 0x00, 0x00,
1895 0x00, 0x00, 0x00, 0xa5, 0x9c, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb1,
1896 0x81, 0xb0, 0x01, 0x00, 0x0f, 0x83, 0x22, 0xb5, 0x81, 0x14, 0x00, 0x00,
1897 0x80, 0x15, 0x2f, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x01, 0x83, 0x42, 0x40,
1898 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x60, 0xb4, 0x65, 0x97, 0x01, 0x00,
1899 0xd0, 0x15, 0x2e, 0x40, 0x69, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x44,
1900 0x93, 0x83, 0x01, 0x00, 0x1a, 0x00, 0x00, 0xa2, 0x80, 0xdc, 0x01, 0x00,
1901 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb1,
1902 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xf1, 0xb1, 0x01, 0x00,
1903 0x05, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x80, 0x00, 0x00, 0x40,
1904 0x62, 0xdd, 0x01, 0x00, 0x0a, 0x83, 0xa8, 0xa1, 0xe0, 0x31, 0x00, 0x00,
1905 0xe9, 0x82, 0x00, 0x88, 0x9e, 0xb3, 0x00, 0x00, 0xe9, 0x82, 0xa2, 0x41,
1906 0x67, 0x6f, 0x00, 0x00, 0xe9, 0x82, 0x00, 0x6f, 0xdb, 0x91, 0x00, 0x00,
1907 0x0f, 0x83, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0xe9, 0x82, 0x1a, 0x40,
1908 0x93, 0x83, 0x00, 0x00, 0x00, 0x99, 0x00, 0x09, 0x46, 0xc9, 0x01, 0x00,
1909 0x3f, 0x00, 0x00, 0xf3, 0x0c, 0x88, 0x01, 0x00, 0x1a, 0x83, 0xa6, 0x42,
1910 0x13, 0x60, 0x00, 0x00, 0x12, 0x94, 0x00, 0x95, 0x03, 0x30, 0x01, 0x00,
1911 0x15, 0x83, 0x61, 0x40, 0x81, 0x32, 0x00, 0x00, 0x75, 0x00, 0x00, 0x40,
1912 0x61, 0x99, 0x01, 0x00, 0x16, 0x83, 0xa8, 0xb1, 0x0c, 0x30, 0x00, 0x00,
1913 0x1f, 0x94, 0x71, 0x10, 0x94, 0x30, 0x01, 0x00, 0x1b, 0x83, 0x00, 0x58,
1914 0x1f, 0x90, 0x00, 0x00, 0x05, 0x94, 0x00, 0x95, 0x03, 0x30, 0x01, 0x00,
1915 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03,
1916 0x48, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x2d, 0xf0, 0x2e, 0xb0, 0x01, 0x00,
1917 0xee, 0x07, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00, 0x22, 0x83, 0x23, 0x4b,
1918 0xe4, 0x6d, 0x00, 0x00, 0x22, 0x83, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00,
1919 0x00, 0x00, 0x00, 0x40, 0x1f, 0x90, 0x01, 0x00, 0x22, 0x00, 0x2f, 0x40,
1920 0x81, 0xb2, 0x01, 0x00, 0x25, 0x83, 0x83, 0x17, 0x80, 0x32, 0x00, 0x00,
1921 0x26, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x27, 0x83, 0x85, 0x17,
1922 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x47, 0xc1, 0x01, 0x00,
1923 0x2c, 0x83, 0x22, 0x55, 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
1924 0x43, 0xd1, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xfa, 0x96, 0x88, 0x01, 0x00,
1925 0x00, 0x00, 0x00, 0x42, 0x97, 0xe0, 0x01, 0x00, 0x2d, 0x83, 0x00, 0x4b,
1926 0x44, 0xc1, 0x00, 0x00, 0x12, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
1927 0x28, 0x00, 0x00, 0xf6, 0x02, 0xcc, 0x01, 0x00, 0x0a, 0x00, 0x00, 0xa1,
1928 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x16, 0xb0, 0x01, 0x00,
1929 0x00, 0x00, 0x28, 0xf0, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
1930 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x2a, 0xb0, 0x01, 0x00,
1931 0xc0, 0x28, 0x3c, 0x46, 0x0d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x44,
1932 0x95, 0xb0, 0x01, 0x00, 0x39, 0x83, 0xa2, 0xf8, 0x0e, 0x30, 0x00, 0x00,
1933 0x49, 0x83, 0x22, 0x41, 0x95, 0x50, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x50,
1934 0x49, 0xc1, 0x01, 0x00, 0x35, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1935 0x36, 0x83, 0xa2, 0xf8, 0x16, 0x6c, 0x00, 0x00, 0x36, 0x83, 0xa2, 0xf8,
1936 0x10, 0x6c, 0x00, 0x00, 0x36, 0x83, 0xa2, 0xf0, 0x1a, 0x6c, 0x00, 0x00,
1937 0x47, 0x83, 0x22, 0x58, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42,
1938 0x13, 0xf0, 0x01, 0x00, 0x3e, 0x83, 0x65, 0x40, 0x81, 0x32, 0x00, 0x00,
1939 0x42, 0x83, 0xa2, 0xf3, 0x74, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
1940 0xe6, 0x95, 0x01, 0x00, 0x47, 0x83, 0x75, 0x40, 0x81, 0xb2, 0x00, 0x00,
1941 0x00, 0x00, 0x00, 0x06, 0x96, 0xb0, 0x01, 0x00, 0x3f, 0x00, 0x75, 0xf3,
1942 0x0c, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00,
1943 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0x45, 0x83, 0xa8, 0x40,
1944 0x81, 0x32, 0x00, 0x00, 0x47, 0x83, 0x67, 0x40, 0x81, 0x32, 0x00, 0x00,
1945 0x4f, 0x83, 0x77, 0x41, 0x2d, 0xc3, 0x00, 0x00, 0x4d, 0x83, 0x22, 0x58,
1946 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00,
1947 0x00, 0x00, 0x00, 0x06, 0x62, 0xb1, 0x01, 0x00, 0x4b, 0x83, 0xa8, 0x40,
1948 0x81, 0x32, 0x00, 0x00, 0x4d, 0x83, 0x67, 0x40, 0x81, 0x32, 0x00, 0x00,
1949 0x7c, 0x83, 0x77, 0x41, 0x2d, 0xc3, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07,
1950 0x1a, 0xf4, 0x01, 0x00, 0xd8, 0x92, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00,
1951 0x5d, 0x83, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00, 0x55, 0x83, 0x22, 0x42,
1952 0x81, 0x6c, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
1953 0x5c, 0x83, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00, 0xcc, 0x93, 0x00, 0x5f,
1954 0x01, 0x10, 0x01, 0x00, 0x5b, 0x83, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00,
1955 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
1956 0x02, 0xb0, 0x01, 0x00, 0x41, 0x93, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00,
1957 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x14, 0x87, 0x00, 0x40,
1958 0x0f, 0xb0, 0x00, 0x00, 0x65, 0x83, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
1959 0x53, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x65, 0x83, 0x22, 0x20,
1960 0x85, 0x6c, 0x00, 0x00, 0x62, 0x83, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
1961 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x33, 0x93, 0x00, 0x5c,
1962 0x1f, 0x00, 0x01, 0x00, 0x25, 0x95, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
1963 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07,
1964 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
1965 0x68, 0x83, 0x82, 0xf0, 0x18, 0x30, 0x00, 0x00, 0x7b, 0x88, 0x00, 0x45,
1966 0x8f, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00,
1967 0x6c, 0x83, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00, 0xc9, 0x94, 0x00, 0x4b,
1968 0x95, 0x30, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x4b, 0x8f, 0xb0, 0x00, 0x00,
1969 0xd8, 0x93, 0x00, 0x03, 0x48, 0x31, 0x01, 0x00, 0xb4, 0x91, 0x00, 0x40,
1970 0x81, 0x30, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
1971 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x68, 0x50,
1972 0x03, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
1973 0x40, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x50,
1974 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
1975 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
1976 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
1977 0x77, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10,
1978 0x62, 0xc9, 0x01, 0x00, 0x79, 0x83, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
1979 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x03,
1980 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0f, 0xb0, 0x01, 0x00,
1981 0x00, 0x00, 0x00, 0xf8, 0x2e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
1982 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
1983 0x00, 0x41, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00, 0xee, 0x07, 0x2e, 0x47,
1984 0x97, 0x90, 0x01, 0x00, 0x8f, 0x83, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00,
1985 0x8d, 0x83, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0x8d, 0x83, 0x23, 0xa2,
1986 0x02, 0x6c, 0x00, 0x00, 0x41, 0x93, 0x00, 0x52, 0x95, 0x30, 0x01, 0x00,
1987 0x04, 0x00, 0x22, 0x41, 0x97, 0x50, 0x00, 0x00, 0x0c, 0x00, 0x2d, 0x00,
1988 0x12, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00,
1989 0x00, 0x00, 0x00, 0x5c, 0x01, 0x80, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b,
1990 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xb0, 0x01, 0x00,
1991 0x00, 0x00, 0x00, 0x50, 0x03, 0xb0, 0x01, 0x00, 0xac, 0x83, 0x00, 0x5c,
1992 0x17, 0x90, 0x00, 0x00, 0xa1, 0x83, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00,
1993 0x00, 0x00, 0x00, 0x45, 0x1f, 0x90, 0x01, 0x00, 0x9a, 0x83, 0x22, 0x5f,
1994 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
1995 0x00, 0x00, 0x00, 0x58, 0xf1, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03,
1996 0xf0, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
1997 0x96, 0x83, 0x62, 0x42, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
1998 0x62, 0xb1, 0x01, 0x00, 0x97, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
1999 0xaf, 0x82, 0x72, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x00, 0x2d, 0x03,
2000 0x48, 0xb1, 0x01, 0x00, 0xff, 0x0f, 0x00, 0xf6, 0x80, 0x88, 0x01, 0x00,
2001 0x9e, 0x83, 0xa2, 0xa6, 0x81, 0x6c, 0x00, 0x00, 0xa1, 0x83, 0x00, 0xf2,
2002 0x3a, 0xb0, 0x00, 0x00, 0x87, 0x84, 0xa2, 0x4b, 0xfd, 0x7f, 0x00, 0x00,
2003 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2a, 0x87, 0x00, 0x40,
2004 0x81, 0xb2, 0x00, 0x00, 0xac, 0x83, 0x22, 0x4a, 0x2f, 0x7c, 0x00, 0x00,
2005 0xac, 0x83, 0x22, 0x48, 0x2f, 0x7c, 0x00, 0x00, 0x0a, 0x00, 0x2d, 0x03,
2006 0x48, 0xb1, 0x01, 0x00, 0x3f, 0x00, 0x00, 0xf2, 0x86, 0x88, 0x01, 0x00,
2007 0x1f, 0x00, 0x00, 0x43, 0x84, 0x88, 0x01, 0x00, 0x05, 0x00, 0x00, 0x43,
2008 0x80, 0xf4, 0x01, 0x00, 0x98, 0x94, 0x3d, 0x42, 0x81, 0xe0, 0x01, 0x00,
2009 0xac, 0x83, 0xa2, 0x42, 0xe0, 0x7d, 0x00, 0x00, 0x87, 0x84, 0xa2, 0x4b,
2010 0xfd, 0x7f, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2011 0x2a, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xac, 0x83, 0x69, 0x40,
2012 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x09, 0xb0, 0x01, 0x00,
2013 0x00, 0x00, 0x79, 0x41, 0x47, 0xc3, 0x01, 0x00, 0xb2, 0x83, 0x22, 0xa1,
2014 0x09, 0x6c, 0x00, 0x00, 0xf5, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2015 0xaf, 0x83, 0x00, 0x03, 0x48, 0xb1, 0x00, 0x00, 0xeb, 0x83, 0xa3, 0x92,
2016 0x03, 0x6c, 0x00, 0x00, 0x7d, 0x95, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00,
2017 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00, 0x2a, 0x87, 0x22, 0x08,
2018 0x80, 0x32, 0x00, 0x00, 0xb8, 0x83, 0x22, 0x5c, 0x17, 0x7c, 0x00, 0x00,
2019 0xb9, 0x83, 0x00, 0x00, 0x2a, 0xb0, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
2020 0x2a, 0xc8, 0x01, 0x00, 0x02, 0x00, 0x00, 0x08, 0x80, 0xc8, 0x01, 0x00,
2021 0xbd, 0x83, 0xa2, 0x43, 0x2f, 0x7c, 0x00, 0x00, 0xcc, 0x94, 0x00, 0x40,
2022 0x81, 0x32, 0x01, 0x00, 0xd9, 0x83, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00,
2023 0x04, 0x00, 0x00, 0x01, 0x8c, 0xcc, 0x01, 0x00, 0xcc, 0x94, 0x00, 0x4c,
2024 0x03, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46, 0x02, 0xb0, 0x01, 0x00,
2025 0x10, 0x80, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01,
2026 0xf0, 0xcd, 0x01, 0x00, 0x2c, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00,
2027 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x15,
2028 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
2029 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0xc6, 0x83, 0xa8, 0x54,
2030 0x17, 0x10, 0x00, 0x00, 0xd9, 0x83, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00,
2031 0x12, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00, 0xd8, 0x83, 0x22, 0x43,
2032 0x2f, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x8c, 0xcc, 0x01, 0x00,
2033 0x00, 0x00, 0x00, 0x4c, 0x03, 0xb0, 0x01, 0x00, 0xed, 0x94, 0x00, 0x43,
2034 0x61, 0x31, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46, 0x02, 0xb0, 0x01, 0x00,
2035 0x10, 0x80, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01,
2036 0xf0, 0xcd, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x09, 0xf0, 0xc9, 0x01, 0x00,
2037 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x15,
2038 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
2039 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0xd9, 0x83, 0x28, 0x54,
2040 0x17, 0x10, 0x00, 0x00, 0xd5, 0x83, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2041 0xed, 0x94, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0xdb, 0x83, 0x22, 0x50,
2042 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x17, 0x90, 0x01, 0x00,
2043 0x07, 0x00, 0x00, 0x17, 0x98, 0x88, 0x01, 0x00, 0xde, 0x83, 0xa2, 0x41,
2044 0x99, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x90, 0x01, 0x00,
2045 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2046 0x62, 0xdd, 0x01, 0x00, 0xdf, 0x83, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2047 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xd4, 0x94, 0x00, 0x40,
2048 0x81, 0x32, 0x01, 0x00, 0xe6, 0x83, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00,
2049 0x16, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1d,
2050 0xe4, 0xb1, 0x01, 0x00, 0x75, 0x94, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00,
2051 0xe9, 0x83, 0xa2, 0x5f, 0x2f, 0x7c, 0x00, 0x00, 0x90, 0x91, 0x00, 0x01,
2052 0x38, 0x43, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2053 0x2a, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xed, 0x83, 0xa2, 0x4b,
2054 0xfd, 0x7f, 0x00, 0x00, 0x84, 0x84, 0x00, 0x41, 0x43, 0xc3, 0x00, 0x00,
2055 0x00, 0x00, 0x00, 0x40, 0x27, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2056 0x11, 0xb0, 0x01, 0x00, 0xef, 0x83, 0x35, 0x01, 0x86, 0x30, 0x00, 0x00,
2057 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xf6, 0x83, 0x28, 0xb1,
2058 0x30, 0x30, 0x00, 0x00, 0xf0, 0x83, 0x22, 0x4d, 0x75, 0x7d, 0x00, 0x00,
2059 0x74, 0x84, 0xa2, 0x40, 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2060 0x43, 0xc3, 0x01, 0x00, 0x83, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2061 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xf6, 0x83, 0xa8, 0xb1,
2062 0x12, 0x30, 0x00, 0x00, 0xff, 0x83, 0xa2, 0x40, 0x11, 0x6c, 0x00, 0x00,
2063 0x00, 0x00, 0x00, 0x41, 0x43, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09,
2064 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x2c, 0xb0, 0x01, 0x00,
2065 0xde, 0x07, 0x00, 0x43, 0x80, 0xce, 0x01, 0x00, 0xf0, 0x83, 0xaa, 0x40,
2066 0x81, 0x32, 0x00, 0x00, 0x04, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2067 0x40, 0x00, 0x3e, 0x43, 0x27, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09,
2068 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe0, 0xb1, 0x01, 0x00,
2069 0x00, 0x00, 0x00, 0x41, 0x27, 0xc0, 0x01, 0x00, 0xf0, 0x83, 0xa3, 0x0b,
2070 0x87, 0x50, 0x00, 0x00, 0x00, 0x00, 0x15, 0x40, 0x1b, 0xb0, 0x01, 0x00,
2071 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x12, 0x00, 0x00, 0x00,
2072 0x2a, 0xc8, 0x01, 0x00, 0x40, 0x00, 0x2d, 0x40, 0x39, 0xb0, 0x01, 0x00,
2073 0x0c, 0x84, 0xa2, 0x40, 0x27, 0x6c, 0x00, 0x00, 0x22, 0x00, 0x00, 0x08,
2074 0x12, 0xc8, 0x01, 0x00, 0xde, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00,
2075 0x0f, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
2076 0x12, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x30, 0xb0, 0x01, 0x00,
2077 0x00, 0x00, 0x00, 0x0b, 0x25, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
2078 0x32, 0xb0, 0x01, 0x00, 0x14, 0x00, 0x20, 0x01, 0xe0, 0xb1, 0x01, 0x00,
2079 0xee, 0x07, 0x00, 0x40, 0x37, 0x98, 0x01, 0x00, 0x14, 0x84, 0x23, 0x01,
2080 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x36, 0xb0, 0x01, 0x00,
2081 0x1f, 0x84, 0x82, 0x41, 0x23, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10,
2082 0x42, 0xc9, 0x01, 0x00, 0x1b, 0x84, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2083 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2084 0x62, 0xdd, 0x01, 0x00, 0x18, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2085 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xb8, 0x92, 0x00, 0x43,
2086 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
2087 0x00, 0x00, 0x00, 0x41, 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2088 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19, 0x44, 0xc9, 0x01, 0x00,
2089 0x2e, 0x84, 0x22, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
2090 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00,
2091 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
2092 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
2093 0x25, 0x84, 0xa8, 0x15, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
2094 0x03, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
2095 0x00, 0x00, 0x00, 0x4c, 0x25, 0xd0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x4c,
2096 0x13, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x37, 0xd0, 0x01, 0x00,
2097 0x00, 0x00, 0x00, 0x50, 0x2b, 0xc0, 0x01, 0x00, 0x14, 0x84, 0x00, 0x45,
2098 0x1f, 0x80, 0x00, 0x00, 0x30, 0x84, 0xa3, 0x12, 0x36, 0x6c, 0x00, 0x00,
2099 0x31, 0x84, 0x68, 0x1b, 0x28, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12,
2100 0x28, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00,
2101 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
2102 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
2103 0x34, 0x84, 0xa8, 0x15, 0xe0, 0x31, 0x00, 0x00, 0x5a, 0x84, 0x22, 0x14,
2104 0x02, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00,
2105 0x00, 0x00, 0x00, 0x14, 0x24, 0xd0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x14,
2106 0x12, 0xc0, 0x01, 0x00, 0x53, 0x84, 0xa2, 0x14, 0x36, 0x50, 0x00, 0x00,
2107 0x44, 0x84, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00, 0x30, 0x80, 0x00, 0x10,
2108 0x42, 0xc9, 0x01, 0x00, 0x42, 0x84, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2109 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2110 0x62, 0xdd, 0x01, 0x00, 0x3f, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2111 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
2112 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x5c, 0x1f, 0x80, 0x01, 0x00,
2113 0x10, 0x00, 0x00, 0xf0, 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
2114 0x2b, 0x80, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40, 0x37, 0x98, 0x01, 0x00,
2115 0x49, 0x84, 0x23, 0x01, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
2116 0x36, 0xb0, 0x01, 0x00, 0x54, 0x84, 0x22, 0x1b, 0x02, 0x6c, 0x00, 0x00,
2117 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x5c,
2118 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
2119 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x15,
2120 0xe0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
2121 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x50, 0x84, 0xa8, 0x40,
2122 0x81, 0x32, 0x00, 0x00, 0x54, 0x84, 0x00, 0x03, 0x48, 0xb1, 0x00, 0x00,
2123 0x00, 0x00, 0x00, 0x14, 0x2a, 0xc0, 0x01, 0x00, 0x14, 0x84, 0xa2, 0x40,
2124 0x25, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x39, 0xc0, 0x01, 0x00,
2125 0x40, 0x00, 0x3d, 0x43, 0x39, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
2126 0x25, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x12, 0xb0, 0x01, 0x00,
2127 0x14, 0x84, 0x00, 0xf0, 0x30, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
2128 0x42, 0xc9, 0x01, 0x00, 0x60, 0x84, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2129 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x19,
2130 0x62, 0xdd, 0x01, 0x00, 0x5d, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2131 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xb8, 0x92, 0x00, 0x40,
2132 0x2b, 0x30, 0x01, 0x00, 0x18, 0x00, 0x2e, 0x03, 0x48, 0xb1, 0x01, 0x00,
2133 0x64, 0x84, 0x22, 0x50, 0x2f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56,
2134 0x17, 0x90, 0x01, 0x00, 0x07, 0x00, 0x00, 0x17, 0x98, 0x88, 0x01, 0x00,
2135 0x67, 0x84, 0xa2, 0x41, 0x99, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
2136 0x17, 0x90, 0x01, 0x00, 0x6a, 0x84, 0x22, 0x43, 0x2f, 0x7c, 0x00, 0x00,
2137 0x00, 0x00, 0x00, 0x54, 0x17, 0x90, 0x01, 0x00, 0x16, 0x00, 0x20, 0x1d,
2138 0xe4, 0xb1, 0x01, 0x00, 0x6c, 0x84, 0xa3, 0x40, 0x27, 0x6c, 0x00, 0x00,
2139 0x6e, 0x84, 0x60, 0x5f, 0x17, 0x90, 0x00, 0x00, 0x00, 0x84, 0x00, 0x0b,
2140 0x16, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x60, 0x13, 0x16, 0x94, 0x01, 0x00,
2141 0x75, 0x94, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x2a, 0x87, 0xa2, 0x5f,
2142 0x2f, 0x7c, 0x00, 0x00, 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
2143 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x90, 0x91, 0x00, 0x01,
2144 0x38, 0x43, 0x01, 0x00, 0x2a, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2145 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d,
2146 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0x62, 0xb1, 0x01, 0x00,
2147 0x76, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
2148 0x62, 0xb1, 0x01, 0x00, 0x78, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2149 0x83, 0x84, 0x22, 0x13, 0x82, 0x6c, 0x00, 0x00, 0x40, 0x00, 0x3d, 0x43,
2150 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x10, 0xb0, 0x01, 0x00,
2151 0x00, 0x00, 0x00, 0xf0, 0x2c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16,
2152 0x62, 0xb1, 0x01, 0x00, 0x7e, 0x84, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2153 0x00, 0x00, 0x00, 0x08, 0x62, 0xb1, 0x01, 0x00, 0x80, 0x84, 0xa8, 0x40,
2154 0x81, 0x32, 0x00, 0x00, 0x7a, 0x84, 0x00, 0x41, 0x83, 0xc0, 0x00, 0x00,
2155 0x00, 0x00, 0x15, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x82, 0x00, 0xa6,
2156 0x04, 0xb0, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
2157 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00, 0x41, 0x93, 0x00, 0x52,
2158 0x95, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
2159 0x2a, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f,
2160 0x01, 0x80, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0e, 0xf4, 0x01, 0x00,
2161 0x3f, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
2162 0x1a, 0xf4, 0x01, 0x00, 0xd8, 0x92, 0x00, 0x07, 0x16, 0x30, 0x01, 0x00,
2163 0x95, 0x84, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00, 0x93, 0x84, 0x22, 0x42,
2164 0x81, 0x6c, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2165 0x94, 0x84, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00, 0x14, 0x87, 0x00, 0x40,
2166 0x0f, 0xb0, 0x00, 0x00, 0x9d, 0x84, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
2167 0x53, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x9d, 0x84, 0x22, 0x20,
2168 0x85, 0x6c, 0x00, 0x00, 0x9a, 0x84, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2169 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x33, 0x93, 0x00, 0x5c,
2170 0x1f, 0x00, 0x01, 0x00, 0x25, 0x95, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
2171 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07,
2172 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2173 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00, 0xa3, 0x84, 0x22, 0x3a,
2174 0x01, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0xb0, 0x01, 0x00,
2175 0x7b, 0x88, 0x00, 0x40, 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2176 0x81, 0xb2, 0x01, 0x00, 0x2e, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2177 0xa7, 0x84, 0xa2, 0x40, 0xe7, 0x6d, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x40,
2178 0x8f, 0x98, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x40, 0x01, 0xb0, 0x00, 0x00,
2179 0x1e, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x05, 0x94, 0x00, 0x95,
2180 0x03, 0x30, 0x01, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2181 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x2d, 0xf0,
2182 0x2e, 0xb0, 0x01, 0x00, 0x28, 0x20, 0x00, 0xa6, 0x96, 0xb0, 0x01, 0x00,
2183 0xb0, 0x84, 0x22, 0x17, 0x96, 0x04, 0x00, 0x00, 0xc9, 0x94, 0x00, 0x4b,
2184 0x95, 0x30, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x4c, 0x8f, 0xb0, 0x00, 0x00,
2185 0xb2, 0x84, 0x83, 0x17, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2186 0x43, 0xc1, 0x01, 0x00, 0xb4, 0x84, 0x85, 0x17, 0x80, 0x32, 0x00, 0x00,
2187 0x00, 0x00, 0x00, 0x48, 0x43, 0xc1, 0x01, 0x00, 0x28, 0x00, 0x00, 0xf6,
2188 0x02, 0xcc, 0x01, 0x00, 0x12, 0x00, 0x00, 0xa1, 0x2a, 0xc8, 0x01, 0x00,
2189 0xd8, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb4, 0x91, 0x00, 0x41,
2190 0x81, 0x30, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2191 0x00, 0x00, 0x00, 0x01, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
2192 0x48, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
2193 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
2194 0xf0, 0xb1, 0x01, 0x00, 0xbe, 0x84, 0x64, 0x47, 0x61, 0x31, 0x00, 0x00,
2195 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0xbf, 0x84, 0xa8, 0x1b,
2196 0xe0, 0x31, 0x00, 0x00, 0xaf, 0x82, 0x74, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2197 0x00, 0x00, 0x00, 0x45, 0x03, 0xe0, 0x01, 0x00, 0x08, 0x00, 0x2d, 0x03,
2198 0x48, 0xb1, 0x01, 0x00, 0xe4, 0x84, 0x01, 0xfb, 0x08, 0x30, 0x00, 0x00,
2199 0x37, 0x85, 0x87, 0xfb, 0x22, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa,
2200 0x0e, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x14, 0xb0, 0x01, 0x00,
2201 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0xd8, 0x92, 0x00, 0x07,
2202 0x16, 0x30, 0x01, 0x00, 0xda, 0x84, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00,
2203 0xce, 0x84, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
2204 0x1c, 0xb0, 0x00, 0x00, 0xd9, 0x84, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00,
2205 0x38, 0x00, 0x00, 0x04, 0x7e, 0x89, 0x01, 0x00, 0xd2, 0x84, 0xa6, 0x5f,
2206 0x0f, 0x00, 0x00, 0x00, 0x2c, 0x92, 0x00, 0x40, 0x05, 0x30, 0x01, 0x00,
2207 0xd7, 0x84, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x13, 0x00, 0x00, 0x40,
2208 0x87, 0x98, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00,
2209 0x0c, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
2210 0x84, 0xb0, 0x01, 0x00, 0xb7, 0x93, 0x00, 0x40, 0x05, 0x30, 0x01, 0x00,
2211 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00, 0x14, 0x87, 0x00, 0x40,
2212 0x0f, 0xb0, 0x00, 0x00, 0xe2, 0x84, 0xa2, 0x5a, 0x1f, 0x7c, 0x00, 0x00,
2213 0x53, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xe2, 0x84, 0x22, 0x20,
2214 0x85, 0x6c, 0x00, 0x00, 0xdf, 0x84, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2215 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x33, 0x93, 0x00, 0x5c,
2216 0x1f, 0x00, 0x01, 0x00, 0x25, 0x95, 0x00, 0x42, 0x61, 0x31, 0x01, 0x00,
2217 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x90, 0x04, 0x00, 0x07,
2218 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2219 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00, 0xe6, 0x84, 0x21, 0x04,
2220 0x80, 0x20, 0x00, 0x00, 0xe7, 0x84, 0x00, 0x40, 0x10, 0xc9, 0x00, 0x00,
2221 0xbd, 0x87, 0x00, 0x4b, 0x81, 0xb0, 0x00, 0x00, 0x06, 0x85, 0x00, 0x43,
2222 0x81, 0xb0, 0x00, 0x00, 0x0a, 0x85, 0x00, 0xfb, 0x22, 0xb0, 0x00, 0x00,
2223 0xbd, 0x87, 0x00, 0x41, 0x81, 0xb0, 0x00, 0x00, 0x7b, 0x88, 0x00, 0x4e,
2224 0x8f, 0xb0, 0x00, 0x00, 0x02, 0x85, 0x00, 0x5a, 0x8f, 0xb0, 0x00, 0x00,
2225 0xef, 0x84, 0x00, 0x47, 0x8f, 0xb0, 0x00, 0x00, 0xbd, 0x87, 0x00, 0x53,
2226 0x81, 0xb0, 0x00, 0x00, 0xbd, 0x87, 0x00, 0x56, 0x81, 0xb0, 0x00, 0x00,
2227 0x32, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x7b, 0x88, 0xa0, 0x0a,
2228 0xe4, 0x6d, 0x00, 0x00, 0xf5, 0x84, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
2229 0xf4, 0x84, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00, 0x7b, 0x88, 0x00, 0x53,
2230 0x8f, 0xb0, 0x00, 0x00, 0x7b, 0x88, 0x00, 0x54, 0x8f, 0xb0, 0x00, 0x00,
2231 0xfe, 0x84, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00, 0xf8, 0x84, 0xa2, 0x0a,
2232 0xe4, 0x6d, 0x00, 0x00, 0x7b, 0x88, 0x00, 0x5d, 0x8f, 0xb0, 0x00, 0x00,
2233 0x00, 0x00, 0x00, 0xf2, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
2234 0x80, 0xd0, 0x01, 0x00, 0xfc, 0x84, 0xa0, 0x91, 0x81, 0x6c, 0x00, 0x00,
2235 0x7b, 0x88, 0x00, 0x5e, 0x8f, 0xb0, 0x00, 0x00, 0x25, 0x00, 0x00, 0x40,
2236 0x8f, 0x98, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2237 0x00, 0x85, 0x20, 0x91, 0xe5, 0x6d, 0x00, 0x00, 0x7b, 0x88, 0x00, 0x54,
2238 0x8f, 0xb0, 0x00, 0x00, 0x21, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00,
2239 0x7b, 0x88, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x32, 0x00, 0x2d, 0x05,
2240 0x48, 0xb1, 0x01, 0x00, 0x7b, 0x88, 0xa0, 0x0a, 0xe4, 0x6d, 0x00, 0x00,
2241 0x24, 0x00, 0x00, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x7b, 0x88, 0x00, 0x40,
2242 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2243 0x04, 0x00, 0x00, 0xf3, 0x82, 0xf4, 0x01, 0x00, 0xbd, 0x87, 0xa0, 0x42,
2244 0x83, 0x6c, 0x00, 0x00, 0xbd, 0x87, 0x00, 0x54, 0x81, 0xb0, 0x00, 0x00,
2245 0x00, 0x00, 0x00, 0xf2, 0x0e, 0xb0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
2246 0x1a, 0xf4, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00,
2247 0x07, 0x00, 0x00, 0x07, 0x16, 0x88, 0x01, 0x00, 0x13, 0x85, 0x22, 0x0b,
2248 0xe6, 0x7d, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
2249 0xc6, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2250 0x0f, 0xb0, 0x01, 0x00, 0x14, 0x87, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
2251 0x25, 0x85, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0x20, 0x85, 0xa2, 0x54,
2252 0xfd, 0x7f, 0x00, 0x00, 0x18, 0x85, 0x22, 0x55, 0xfd, 0x7f, 0x00, 0x00,
2253 0x82, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x10, 0x85, 0x00, 0x40,
2254 0x81, 0xb2, 0x00, 0x00, 0x10, 0x85, 0x22, 0x53, 0xfd, 0x7f, 0x00, 0x00,
2255 0x14, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
2256 0x96, 0xb0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4b, 0x80, 0xf4, 0x01, 0x00,
2257 0x0c, 0xbc, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x20, 0x85, 0x22, 0x43,
2258 0x80, 0x6c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4b, 0x80, 0x88, 0x01, 0x00,
2259 0x10, 0x85, 0xa2, 0x43, 0x80, 0x6c, 0x00, 0x00, 0x7c, 0x96, 0x00, 0x40,
2260 0x47, 0x99, 0x01, 0x00, 0x21, 0x85, 0x46, 0x40, 0x81, 0x32, 0x00, 0x00,
2261 0x24, 0x85, 0xa0, 0xf0, 0x30, 0x6f, 0x00, 0x00, 0x16, 0x85, 0x1e, 0x40,
2262 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x41, 0x31, 0xc3, 0x01, 0x00,
2263 0x5d, 0x92, 0x00, 0x40, 0x25, 0x30, 0x01, 0x00, 0x29, 0x85, 0x9c, 0x0f,
2264 0x80, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2265 0x33, 0x93, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x14, 0x80, 0x00, 0x03,
2266 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x96, 0xb0, 0x01, 0x00,
2267 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
2268 0x18, 0xe4, 0x01, 0x00, 0x00, 0x08, 0x00, 0x0c, 0xe0, 0x99, 0x01, 0x00,
2269 0x90, 0x04, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d,
2270 0x46, 0xc9, 0x01, 0x00, 0x30, 0x85, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00,
2271 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00, 0x00, 0x02, 0x00, 0xa1,
2272 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00,
2273 0x04, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40,
2274 0xe1, 0xb1, 0x01, 0x00, 0xbd, 0x87, 0x00, 0x40, 0x81, 0xb0, 0x00, 0x00,
2275 0x00, 0x00, 0x00, 0xfb, 0x28, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
2276 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x14, 0xb0, 0x01, 0x00,
2277 0x41, 0x85, 0x22, 0x46, 0x23, 0x7c, 0x00, 0x00, 0x3d, 0x85, 0x22, 0x40,
2278 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x1f, 0x90, 0x01, 0x00,
2279 0x3f, 0x85, 0x22, 0x41, 0x87, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
2280 0x1f, 0x90, 0x01, 0x00, 0x41, 0x85, 0x22, 0x42, 0x87, 0x7c, 0x00, 0x00,
2281 0x00, 0x00, 0x00, 0x45, 0x1f, 0x90, 0x01, 0x00, 0x41, 0x85, 0x66, 0x1b,
2282 0x2c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x13, 0xb0, 0x01, 0x00,
2283 0x00, 0x00, 0x76, 0x41, 0x41, 0xc3, 0x01, 0x00, 0x70, 0x85, 0x23, 0x92,
2284 0x15, 0x6c, 0x00, 0x00, 0x70, 0x85, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00,
2285 0x74, 0x85, 0x22, 0x4b, 0xfd, 0x7f, 0x00, 0x00, 0x17, 0x00, 0x00, 0xd0,
2286 0xa2, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x27, 0xb0, 0x01, 0x00,
2287 0x02, 0x00, 0x00, 0x0a, 0x24, 0xc8, 0x01, 0x00, 0x94, 0x92, 0x00, 0x40,
2288 0x0f, 0x30, 0x01, 0x00, 0x6e, 0x85, 0x22, 0x08, 0x40, 0x30, 0x00, 0x00,
2289 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x12,
2290 0x24, 0xcc, 0x01, 0x00, 0x4a, 0x85, 0xaa, 0x41, 0x27, 0x40, 0x00, 0x00,
2291 0x01, 0x00, 0x00, 0x13, 0x80, 0xcc, 0x01, 0x00, 0x6a, 0x85, 0x26, 0x40,
2292 0x23, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x83, 0xb0, 0x01, 0x00,
2293 0x60, 0x00, 0x00, 0x03, 0x84, 0xc8, 0x01, 0x00, 0x10, 0x00, 0x00, 0x10,
2294 0x48, 0xcd, 0x01, 0x00, 0x17, 0x00, 0x00, 0xd0, 0xa2, 0xc9, 0x01, 0x00,
2295 0x57, 0x85, 0xa2, 0x40, 0x83, 0x6c, 0x00, 0x00, 0x63, 0x85, 0x00, 0x41,
2296 0x83, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x44, 0x99, 0x01, 0x00,
2297 0x00, 0x00, 0x68, 0x21, 0x38, 0x96, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x50,
2298 0x49, 0xc1, 0x01, 0x00, 0x5c, 0x85, 0xa2, 0x44, 0x23, 0x6c, 0x00, 0x00,
2299 0x30, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
2300 0xf1, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x20, 0xf0, 0xc9, 0x01, 0x00,
2301 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2302 0x62, 0xdd, 0x01, 0x00, 0x5f, 0x85, 0xa8, 0x42, 0xe0, 0x31, 0x00, 0x00,
2303 0x00, 0x00, 0x00, 0x44, 0x85, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
2304 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xa3, 0xc1, 0x01, 0x00,
2305 0x55, 0x85, 0xa2, 0x41, 0x81, 0x50, 0x00, 0x00, 0x6a, 0x85, 0x22, 0x40,
2306 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
2307 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x67, 0x85, 0xa8, 0x40,
2308 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2309 0x00, 0x00, 0x00, 0x03, 0x48, 0xb1, 0x01, 0x00, 0xee, 0x07, 0x00, 0x40,
2310 0x25, 0x98, 0x01, 0x00, 0x17, 0x00, 0x00, 0xd0, 0x2a, 0xc8, 0x01, 0x00,
2311 0x7d, 0x85, 0x00, 0x17, 0x10, 0xb0, 0x00, 0x00, 0x7e, 0x94, 0x00, 0x40,
2312 0x81, 0x32, 0x01, 0x00, 0x74, 0x85, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2313 0x94, 0x92, 0x00, 0x92, 0x25, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2314 0x31, 0xb0, 0x01, 0x00, 0x74, 0x85, 0x22, 0x08, 0x2e, 0x30, 0x00, 0x00,
2315 0x7d, 0x85, 0x00, 0x41, 0x27, 0xb0, 0x00, 0x00, 0x80, 0x80, 0x00, 0xa6,
2316 0x04, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
2317 0xc6, 0x95, 0x00, 0x0a, 0x8c, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2318 0x0f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
2319 0x7c, 0x85, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x88,
2320 0x1c, 0xcc, 0x01, 0x00, 0xf5, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2321 0x14, 0x87, 0x00, 0x41, 0x3f, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2322 0x0f, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x00, 0x01, 0x80, 0xce, 0x01, 0x00,
2323 0x91, 0x85, 0x2a, 0x40, 0x81, 0x30, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
2324 0x44, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
2325 0x86, 0x85, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00, 0x86, 0x85, 0xa2, 0x47,
2326 0x1f, 0x7c, 0x00, 0x00, 0x86, 0x85, 0xa3, 0x07, 0x03, 0x6c, 0x00, 0x00,
2327 0x80, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x89, 0x85, 0xa3, 0x40,
2328 0x02, 0x6c, 0x00, 0x00, 0x28, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00,
2329 0x8b, 0x85, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0x28, 0x00, 0x00, 0x40,
2330 0xf0, 0xcd, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x0e, 0xcc, 0x01, 0x00,
2331 0x28, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00,
2332 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xe0, 0xb1, 0x01, 0x00,
2333 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
2334 0x62, 0xdd, 0x01, 0x00, 0x8f, 0x85, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00,
2335 0x00, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
2336 0x08, 0xb0, 0x01, 0x00, 0xa0, 0x01, 0x2d, 0x40, 0x00, 0xc0, 0x01, 0x00,
2337 0x5b, 0x86, 0x22, 0x0f, 0x42, 0x05, 0x00, 0x00, 0xa2, 0x85, 0x9c, 0x0f,
2338 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
2339 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x9d, 0x85, 0x22, 0x40,
2340 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2341 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x9a, 0x85, 0xa8, 0x40,
2342 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2343 0xa2, 0x85, 0x22, 0x07, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
2344 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0xc1, 0x01, 0x00,
2345 0x00, 0x80, 0x00, 0xa1, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
2346 0xe1, 0x91, 0x01, 0x00, 0xc0, 0x06, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00,
2347 0x10, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x54,
2348 0x29, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00,
2349 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2350 0x0e, 0xb0, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0x0a, 0xc8, 0x01, 0x00,
2351 0x0c, 0x00, 0x00, 0xa4, 0x0c, 0xc8, 0x01, 0x00, 0xd6, 0x92, 0x00, 0x40,
2352 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x02, 0xb0, 0x01, 0x00,
2353 0x00, 0x00, 0x00, 0x14, 0x24, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14,
2354 0x10, 0xc0, 0x01, 0x00, 0x12, 0x00, 0x00, 0x08, 0x10, 0xc8, 0x01, 0x00,
2355 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0xfe, 0x7f, 0x00, 0x05,
2356 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xe4, 0xb1, 0x01, 0x00,
2357 0xcb, 0x85, 0x22, 0x01, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44,
2358 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0xa4, 0x80, 0xb0, 0x01, 0x00,
2359 0x00, 0x00, 0x00, 0x10, 0x48, 0xc1, 0x01, 0x00, 0xb8, 0x85, 0xa3, 0x07,
2360 0x02, 0x6c, 0x00, 0x00, 0xb9, 0x85, 0x68, 0x01, 0x1a, 0xb0, 0x00, 0x00,
2361 0x00, 0x00, 0x68, 0x07, 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d,
2362 0x02, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00,
2363 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
2364 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0a, 0xc0, 0x01, 0x00,
2365 0xc5, 0x85, 0x22, 0x40, 0x03, 0x6c, 0x00, 0x00, 0xc5, 0x85, 0x22, 0x42,
2366 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x23, 0xc0, 0x01, 0x00,
2367 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
2368 0x62, 0xdd, 0x01, 0x00, 0xe9, 0x85, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
2369 0xc2, 0x85, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
2370 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2371 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00, 0xc7, 0x85, 0xa8, 0x40,
2372 0x23, 0x30, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2373 0xe9, 0x85, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x44,
2374 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x86, 0xb0, 0x01, 0x00,
2375 0x00, 0x00, 0x2e, 0x10, 0x48, 0xc1, 0x01, 0x00, 0xd0, 0x85, 0xa3, 0x12,
2376 0x0e, 0x6c, 0x00, 0x00, 0xd1, 0x85, 0x60, 0x07, 0x1a, 0xb0, 0x00, 0x00,
2377 0x00, 0x00, 0x60, 0x12, 0x1a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x0d,
2378 0x16, 0x94, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x16, 0xd8, 0x01, 0x00,
2379 0x00, 0x00, 0x68, 0x08, 0x3e, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c,
2380 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00,
2381 0x00, 0x00, 0x00, 0x10, 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
2382 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00,
2383 0xd8, 0x85, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00, 0x07, 0x86, 0x22, 0x0d,
2384 0x14, 0x6c, 0x00, 0x00, 0xde, 0x85, 0x22, 0x0d, 0x24, 0x6c, 0x00, 0x00,
2385 0x00, 0x00, 0x00, 0x0d, 0x10, 0xc0, 0x01, 0x00, 0xe2, 0x85, 0x00, 0x0d,
2386 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x2b, 0xc0, 0x01, 0x00,
2387 0x00, 0x00, 0x00, 0x15, 0xa2, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x20,
2388 0x10, 0xc8, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00,
2389 0xe4, 0x85, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00, 0xe9, 0x85, 0x00, 0x41,
2390 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
2391 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xe5, 0x85, 0xa8, 0x5c,
2392 0x1f, 0x00, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2393 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x07, 0x86, 0x22, 0x0d,
2394 0x14, 0x50, 0x00, 0x00, 0x06, 0x86, 0xa2, 0x0d, 0x0e, 0x50, 0x00, 0x00,
2395 0xf5, 0x85, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
2396 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
2397 0xf3, 0x85, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
2398 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2399 0xf0, 0x85, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
2400 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00,
2401 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x06,
2402 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00,
2403 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00, 0xfa, 0x85, 0x1f, 0xf0,
2404 0x0e, 0x30, 0x00, 0x00, 0xb2, 0x85, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00,
2405 0x00, 0x00, 0x2e, 0x5f, 0x0f, 0x80, 0x01, 0x00, 0xb2, 0x85, 0x23, 0x07,
2406 0x14, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00,
2407 0x24, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2408 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00,
2409 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00,
2410 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2411 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x03, 0x86, 0xa8, 0x46,
2412 0x1f, 0x10, 0x00, 0x00, 0xb2, 0x85, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00,
2413 0xb2, 0x85, 0x00, 0x0d, 0x18, 0xc0, 0x00, 0x00, 0x04, 0x00, 0x2e, 0x14,
2414 0x0a, 0xd0, 0x01, 0x00, 0x12, 0x00, 0x00, 0x05, 0x48, 0xcd, 0x01, 0x00,
2415 0xfe, 0x7f, 0x00, 0x05, 0x42, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x2a, 0xf2,
2416 0xe0, 0xb1, 0x01, 0x00, 0x0d, 0x86, 0x22, 0x40, 0x31, 0x6c, 0x00, 0x00,
2417 0x00, 0x00, 0x60, 0x18, 0x38, 0x96, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x40,
2418 0x43, 0x99, 0x01, 0x00, 0x00, 0x81, 0x00, 0xf6, 0x80, 0xce, 0x01, 0x00,
2419 0x11, 0x86, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2420 0x43, 0xc1, 0x01, 0x00, 0x13, 0x86, 0x22, 0x0b, 0xed, 0x6d, 0x00, 0x00,
2421 0x08, 0x00, 0x00, 0xa1, 0x42, 0xc9, 0x01, 0x00, 0x02, 0x00, 0x00, 0xa1,
2422 0x46, 0xc9, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xfa, 0x94, 0x88, 0x01, 0x00,
2423 0x02, 0x00, 0x00, 0x4a, 0x86, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf6,
2424 0x0e, 0xb0, 0x01, 0x00, 0x1b, 0x86, 0x22, 0x47, 0x1f, 0x7c, 0x00, 0x00,
2425 0x04, 0x00, 0x1f, 0x43, 0x0e, 0x50, 0x00, 0x00, 0x1b, 0x86, 0xa0, 0x46,
2426 0x0f, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00,
2427 0x1f, 0x86, 0x22, 0x48, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2428 0x91, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x0f, 0xa2, 0x42, 0x31, 0x00, 0x00,
2429 0x22, 0x86, 0x00, 0x40, 0x89, 0xb0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xa2,
2430 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x89, 0xb0, 0x01, 0x00,
2431 0x00, 0x00, 0x00, 0x43, 0x95, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
2432 0x82, 0xb0, 0x01, 0x00, 0x25, 0x86, 0xa0, 0x41, 0x90, 0x40, 0x00, 0x00,
2433 0x00, 0x00, 0x00, 0x41, 0x91, 0xc0, 0x01, 0x00, 0x2a, 0x86, 0x22, 0x47,
2434 0x1f, 0x7c, 0x00, 0x00, 0x2a, 0x86, 0xa0, 0x43, 0x89, 0x6c, 0x00, 0x00,
2435 0x2a, 0x86, 0x20, 0x45, 0x89, 0x6c, 0x00, 0x00, 0x2a, 0x86, 0xa0, 0x41,
2436 0x0e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00,
2437 0x00, 0x00, 0x00, 0x41, 0x89, 0xc0, 0x01, 0x00, 0x22, 0x86, 0xa2, 0x41,
2438 0x95, 0x50, 0x00, 0x00, 0x33, 0x86, 0x22, 0x48, 0x1f, 0x7c, 0x00, 0x00,
2439 0x10, 0x00, 0x00, 0x48, 0x92, 0xf4, 0x01, 0x00, 0xff, 0xff, 0x00, 0x48,
2440 0x90, 0x88, 0x01, 0x00, 0x31, 0x86, 0x90, 0x48, 0x92, 0x40, 0x00, 0x00,
2441 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00, 0x0a, 0x00, 0x00, 0xa2,
2442 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x93, 0xa4, 0x01, 0x00,
2443 0x30, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x12, 0x00, 0x00, 0x14,
2444 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x17, 0xf0, 0xb1, 0x01, 0x00,
2445 0x12, 0x00, 0x00, 0x05, 0xe0, 0xcd, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10,
2446 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
2447 0x20, 0x00, 0x00, 0x40, 0x62, 0xdd, 0x01, 0x00, 0x39, 0x86, 0xa8, 0x40,
2448 0x81, 0x32, 0x00, 0x00, 0x44, 0x86, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
2449 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x10,
2450 0x48, 0xc1, 0x01, 0x00, 0x43, 0x86, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2451 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2452 0x62, 0xdd, 0x01, 0x00, 0x40, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2453 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
2454 0x1f, 0x80, 0x01, 0x00, 0x47, 0x86, 0xa2, 0x47, 0x1f, 0x7c, 0x00, 0x00,
2455 0xcc, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc0, 0x86, 0x00, 0x17,
2456 0x10, 0xb0, 0x00, 0x00, 0xd3, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2457 0x00, 0x00, 0x2f, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x4b, 0x86, 0xa0, 0x07,
2458 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
2459 0x00, 0x00, 0x00, 0x0b, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
2460 0x17, 0xf0, 0x01, 0x00, 0x4f, 0x86, 0x90, 0xf2, 0x16, 0x40, 0x00, 0x00,
2461 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
2462 0x17, 0xa4, 0x01, 0x00, 0x10, 0x00, 0x00, 0x14, 0x2a, 0xc8, 0x01, 0x00,
2463 0x00, 0x00, 0x00, 0x50, 0x2b, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
2464 0x2a, 0x94, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
2465 0x59, 0x86, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2466 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2467 0x56, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
2468 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x17, 0x10, 0xdc, 0x01, 0x00,
2469 0xc0, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x63, 0x86, 0x9c, 0x0f,
2470 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
2471 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x63, 0x86, 0x22, 0x40,
2472 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2473 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x60, 0x86, 0xa8, 0x40,
2474 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2475 0x68, 0x86, 0x22, 0x07, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
2476 0x42, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x42, 0xc1, 0x01, 0x00,
2477 0x00, 0x80, 0x00, 0xa1, 0x46, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f,
2478 0xe1, 0x91, 0x01, 0x00, 0x04, 0x00, 0x2e, 0x03, 0x48, 0xb1, 0x01, 0x00,
2479 0x00, 0x00, 0x00, 0x0a, 0xe0, 0xb1, 0x01, 0x00, 0x6d, 0x86, 0x22, 0x40,
2480 0x31, 0x6c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
2481 0x00, 0x00, 0x60, 0x18, 0x38, 0x96, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
2482 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
2483 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2484 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
2485 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x72, 0x86, 0xa8, 0x40,
2486 0x23, 0x30, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2487 0x00, 0x00, 0x2d, 0x52, 0x11, 0xc0, 0x01, 0x00, 0x10, 0x00, 0x00, 0x03,
2488 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00,
2489 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
2490 0x0e, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xa4, 0x0c, 0xc8, 0x01, 0x00,
2491 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4,
2492 0x86, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xc1, 0x01, 0x00,
2493 0x80, 0x86, 0xa3, 0x12, 0x0e, 0x6c, 0x00, 0x00, 0x81, 0x86, 0x68, 0x07,
2494 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x68, 0x12, 0x1a, 0xb0, 0x01, 0x00,
2495 0x00, 0x00, 0x00, 0x10, 0x86, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x68, 0x08,
2496 0x3e, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0xb1, 0x01, 0x00,
2497 0x00, 0x00, 0x00, 0x02, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
2498 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x43, 0x62, 0xdd, 0x01, 0x00,
2499 0x86, 0x86, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00, 0xb5, 0x86, 0x22, 0x0d,
2500 0x14, 0x6c, 0x00, 0x00, 0x8c, 0x86, 0x22, 0x0d, 0x24, 0x6c, 0x00, 0x00,
2501 0x00, 0x00, 0x00, 0x0d, 0x10, 0xc0, 0x01, 0x00, 0x90, 0x86, 0x00, 0x0d,
2502 0x24, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x2b, 0xc0, 0x01, 0x00,
2503 0x00, 0x00, 0x00, 0x15, 0xa2, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x20,
2504 0x10, 0xc8, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40, 0x25, 0x98, 0x01, 0x00,
2505 0x92, 0x86, 0x22, 0x42, 0x23, 0x6c, 0x00, 0x00, 0x97, 0x86, 0x00, 0x41,
2506 0x23, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00,
2507 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x93, 0x86, 0xa8, 0x5c,
2508 0x1f, 0x00, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2509 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0x0d,
2510 0x14, 0x50, 0x00, 0x00, 0xb4, 0x86, 0xa2, 0x0d, 0x0e, 0x50, 0x00, 0x00,
2511 0xa3, 0x86, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
2512 0x1f, 0x80, 0x01, 0x00, 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
2513 0xa1, 0x86, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
2514 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2515 0x9e, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
2516 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03, 0x46, 0x99, 0x01, 0x00,
2517 0x00, 0x00, 0x00, 0x5f, 0xe1, 0x91, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x06,
2518 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xb0, 0x01, 0x00,
2519 0x00, 0x00, 0x00, 0xf8, 0x04, 0xb0, 0x01, 0x00, 0xa8, 0x86, 0x1f, 0xf0,
2520 0x0e, 0x30, 0x00, 0x00, 0x7b, 0x86, 0x00, 0x4c, 0x0d, 0xc0, 0x00, 0x00,
2521 0x00, 0x00, 0x2e, 0x5f, 0x0f, 0x80, 0x01, 0x00, 0x7b, 0x86, 0x23, 0x07,
2522 0x14, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00,
2523 0x24, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2524 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb1, 0x01, 0x00,
2525 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00, 0x24, 0x00, 0x00, 0x00,
2526 0x00, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
2527 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0xb1, 0x86, 0xa8, 0x46,
2528 0x1f, 0x10, 0x00, 0x00, 0x7b, 0x86, 0x00, 0x03, 0x0c, 0xb0, 0x00, 0x00,
2529 0x7b, 0x86, 0x00, 0x0d, 0x18, 0xc0, 0x00, 0x00, 0xbe, 0x86, 0x22, 0x5c,
2530 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
2531 0x00, 0x00, 0x3c, 0x44, 0x23, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x10,
2532 0x48, 0xc1, 0x01, 0x00, 0xbe, 0x86, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2533 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2534 0x62, 0xdd, 0x01, 0x00, 0xbb, 0x86, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2535 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17,
2536 0x10, 0xb0, 0x01, 0x00, 0xc0, 0x86, 0x00, 0x40, 0x2b, 0xb0, 0x00, 0x00,
2537 0x00, 0x80, 0x00, 0x03, 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04,
2538 0xe0, 0xb1, 0x01, 0x00, 0xc5, 0x86, 0x22, 0x9f, 0x13, 0x6c, 0x00, 0x00,
2539 0x02, 0x00, 0x00, 0x88, 0x1c, 0xcc, 0x01, 0x00, 0xf5, 0x82, 0x00, 0x40,
2540 0x81, 0xb2, 0x00, 0x00, 0xd7, 0x95, 0x00, 0x41, 0x3f, 0x43, 0x01, 0x00,
2541 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2542 0x05, 0xb0, 0x01, 0x00, 0xc6, 0x95, 0x00, 0x40, 0x0f, 0x30, 0x01, 0x00,
2543 0x2a, 0x87, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
2544 0x0e, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x84, 0x01, 0x00,
2545 0x03, 0x00, 0x00, 0x07, 0x1a, 0xf4, 0x01, 0x00, 0xd8, 0x92, 0x00, 0x07,
2546 0x16, 0x30, 0x01, 0x00, 0xd4, 0x86, 0x22, 0x41, 0x81, 0x6c, 0x00, 0x00,
2547 0xd2, 0x86, 0x22, 0x42, 0x81, 0x6c, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
2548 0x1c, 0xb0, 0x00, 0x00, 0xd3, 0x86, 0x22, 0x5f, 0x0f, 0x7c, 0x00, 0x00,
2549 0x14, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00, 0xdc, 0x86, 0xa2, 0x5a,
2550 0x1f, 0x7c, 0x00, 0x00, 0x53, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2551 0xdc, 0x86, 0x22, 0x20, 0x85, 0x6c, 0x00, 0x00, 0xd9, 0x86, 0x9c, 0x0f,
2552 0x80, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2553 0x33, 0x93, 0x00, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x25, 0x95, 0x00, 0x42,
2554 0x61, 0x31, 0x01, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2555 0x90, 0x04, 0x00, 0x07, 0x96, 0x30, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
2556 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x18, 0xb0, 0x01, 0x00,
2557 0x00, 0x00, 0x00, 0x00, 0x80, 0xb0, 0x01, 0x00, 0xbd, 0x87, 0xa2, 0x5f,
2558 0x81, 0x6c, 0x00, 0x00, 0xa8, 0x00, 0x2d, 0x43, 0x19, 0x80, 0x01, 0x00,
2559 0x37, 0x00, 0x2d, 0xf0, 0x24, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3,
2560 0x8e, 0xf4, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3, 0x90, 0x88, 0x01, 0x00,
2561 0xeb, 0x86, 0x22, 0x48, 0x8e, 0x6c, 0x00, 0x00, 0x36, 0x00, 0x00, 0x40,
2562 0x43, 0x99, 0x01, 0x00, 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00,
2563 0xeb, 0x86, 0x1f, 0xf0, 0x24, 0x6c, 0x00, 0x00, 0xea, 0x86, 0x23, 0x41,
2564 0x8f, 0x6c, 0x00, 0x00, 0xbd, 0x87, 0x00, 0x47, 0x81, 0xb0, 0x00, 0x00,
2565 0xbd, 0x87, 0x00, 0x48, 0x81, 0xb0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40,
2566 0x43, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2d, 0xf0, 0x14, 0xb0, 0x01, 0x00,
2567 0xf0, 0x86, 0x22, 0x0a, 0x90, 0x40, 0x00, 0x00, 0xaa, 0x95, 0x00, 0x40,
2568 0x91, 0x30, 0x01, 0x00, 0xbd, 0x87, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
2569 0xb0, 0x00, 0x2d, 0x45, 0x81, 0xb0, 0x01, 0x00, 0xfc, 0x86, 0x22, 0xf0,
2570 0x2c, 0x30, 0x00, 0x00, 0xa3, 0x00, 0x2d, 0x30, 0x83, 0xb0, 0x01, 0x00,
2571 0xac, 0x00, 0x2d, 0xf3, 0x82, 0xe0, 0x01, 0x00, 0xf6, 0x86, 0xa3, 0x41,
2572 0x2c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x82, 0xb0, 0x01, 0x00,
2573 0x98, 0x00, 0x2d, 0xf0, 0x82, 0xc0, 0x01, 0x00, 0x88, 0x00, 0x2d, 0xf0,
2574 0x82, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x98, 0xe8, 0x01, 0x00,
2575 0xbd, 0x87, 0x20, 0x4c, 0x82, 0x6c, 0x00, 0x00, 0x7c, 0x00, 0x2d, 0x41,
2576 0x98, 0xe8, 0x01, 0x00, 0xbd, 0x87, 0x20, 0xf0, 0x98, 0x6c, 0x00, 0x00,
2577 0x14, 0x87, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00, 0x40, 0x02, 0x00, 0x0c,
2578 0x7e, 0x89, 0x01, 0x00, 0x14, 0x87, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
2579 0xbd, 0x87, 0x00, 0x49, 0x81, 0xb0, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6,
2580 0x80, 0xb0, 0x01, 0x00, 0x04, 0x87, 0x22, 0x43, 0x21, 0x6f, 0x00, 0x00,
2581 0x13, 0x80, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00, 0x05, 0x87, 0x00, 0x40,
2582 0x81, 0xb2, 0x00, 0x00, 0x1a, 0x80, 0x00, 0x40, 0x80, 0xdc, 0x01, 0x00,
2583 0x05, 0x87, 0xa2, 0x5e, 0x0b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
2584 0x08, 0xb1, 0x01, 0x00, 0x07, 0x87, 0x9f, 0x85, 0x80, 0x32, 0x00, 0x00,
2585 0x0b, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xec, 0x82, 0x22, 0x40,
2586 0x57, 0x7d, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x57, 0x99, 0x01, 0x00,
2587 0x0b, 0x87, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2588 0x93, 0x93, 0x01, 0x00, 0xdd, 0x82, 0x1a, 0x5b, 0x69, 0x93, 0x00, 0x00,
2589 0x04, 0x00, 0x00, 0xcb, 0x81, 0xc8, 0x01, 0x00, 0x11, 0x87, 0x22, 0x40,
2590 0xf2, 0x7f, 0x00, 0x00, 0xc4, 0x80, 0x00, 0x6f, 0x97, 0x33, 0x01, 0x00,
2591 0x13, 0x87, 0x22, 0x40, 0x73, 0x7d, 0x00, 0x00, 0xde, 0x80, 0x00, 0x41,
2592 0x8b, 0xb3, 0x00, 0x00, 0x0e, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2593 0x1b, 0x87, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
2594 0x42, 0xc9, 0x01, 0x00, 0x1b, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2595 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
2596 0x62, 0xdd, 0x01, 0x00, 0x18, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2597 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x2f, 0x92, 0x22, 0x02,
2598 0x80, 0x32, 0x00, 0x00, 0x1c, 0x87, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00,
2599 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0x2f, 0x92, 0x1a, 0x02,
2600 0x68, 0x97, 0x00, 0x00, 0x26, 0x87, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00,
2601 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x26, 0x87, 0x22, 0x40,
2602 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
2603 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x23, 0x87, 0xa8, 0x40,
2604 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2605 0x39, 0x92, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00, 0x27, 0x87, 0x42, 0x40,
2606 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
2607 0x39, 0x92, 0x1a, 0x02, 0x68, 0x97, 0x00, 0x00, 0x31, 0x87, 0x9c, 0x0f,
2608 0x80, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
2609 0x31, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
2610 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
2611 0x2e, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
2612 0x1c, 0xb0, 0x00, 0x00, 0xf9, 0x82, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
2613 0x32, 0x87, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
2614 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x68, 0x97, 0x01, 0x00,
2615 0xf9, 0x82, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0xa6,
2616 0x56, 0xb1, 0x01, 0x00, 0x56, 0x95, 0x2f, 0x40, 0x05, 0xb0, 0x01, 0x00,
2617 0x82, 0x87, 0xa2, 0x40, 0xe7, 0x6d, 0x00, 0x00, 0xb8, 0x94, 0x29, 0x41,
2618 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0xef, 0x93, 0x01, 0x00,
2619 0x00, 0x00, 0x00, 0xf2, 0x0e, 0xb0, 0x01, 0x00, 0x29, 0x00, 0x00, 0x40,
2620 0x0d, 0x98, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07, 0x12, 0xe4, 0x01, 0x00,
2621 0x00, 0x00, 0x00, 0xa7, 0x13, 0xc0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
2622 0x1a, 0xf4, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07, 0x16, 0x88, 0x01, 0x00,
2623 0xff, 0xff, 0x00, 0x10, 0x34, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
2624 0x34, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
2625 0x20, 0x18, 0x00, 0x40, 0x11, 0x98, 0x01, 0x00, 0x00, 0xb5, 0x00, 0x0d,
2626 0x42, 0xc9, 0x01, 0x00, 0x66, 0x87, 0x22, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
2627 0x47, 0x87, 0x60, 0x40, 0x81, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x07,
2628 0x84, 0x89, 0x01, 0x00, 0x4e, 0x87, 0x05, 0xc2, 0x24, 0x30, 0x00, 0x00,
2629 0x58, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x05,
2630 0x48, 0xb1, 0x01, 0x00, 0x83, 0x87, 0x70, 0xf0, 0x18, 0x30, 0x01, 0x00,
2631 0x66, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x70, 0x40,
2632 0x81, 0xb2, 0x01, 0x00, 0x5d, 0x87, 0xa0, 0x48, 0x23, 0x6c, 0x00, 0x00,
2633 0x00, 0x00, 0x00, 0x50, 0x35, 0xd0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x1a,
2634 0x42, 0xc9, 0x01, 0x00, 0x57, 0x87, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
2635 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x1a,
2636 0x62, 0xdd, 0x01, 0x00, 0x54, 0x87, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
2637 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x20, 0x98, 0x00, 0x40,
2638 0x43, 0x99, 0x01, 0x00, 0x83, 0x87, 0x00, 0xf8, 0x18, 0x30, 0x01, 0x00,
2639 0x58, 0x87, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x10,
2640 0x34, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x34, 0x94, 0x01, 0x00,
2641 0x20, 0x18, 0x00, 0x40, 0x11, 0x98, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x1a,
2642 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0xf1, 0xb1, 0x01, 0x00,
2643 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
2644 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x1a, 0x62, 0xdd, 0x01, 0x00,
2645 0x61, 0x87, 0xa8, 0x09, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2646 0x23, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x35, 0xc0, 0x01, 0x00,
2647 0x00, 0x00, 0x00, 0x44, 0x11, 0xc0, 0x01, 0x00, 0x72, 0x87, 0x22, 0x41,
2648 0x0d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00,
2649 0x6e, 0x87, 0xa0, 0xaa, 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2650 0x0f, 0xb0, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07, 0x12, 0xe4, 0x01, 0x00,
2651 0x00, 0x00, 0x00, 0xa7, 0x13, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
2652 0x1b, 0xb0, 0x01, 0x00, 0x45, 0x87, 0x00, 0x41, 0x17, 0xb0, 0x00, 0x00,
2653 0x00, 0x02, 0x00, 0x09, 0x12, 0xc8, 0x01, 0x00, 0x45, 0x87, 0x83, 0x41,
2654 0x17, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x17, 0xb0, 0x01, 0x00,
2655 0x45, 0x87, 0x00, 0x41, 0x1b, 0xc0, 0x00, 0x00, 0x7d, 0x87, 0x23, 0x40,
2656 0x23, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x35, 0xd0, 0x01, 0x00,
2657 0x00, 0x80, 0x00, 0x1a, 0x42, 0xc9, 0x01, 0x00, 0x7a, 0x87, 0x22, 0x40,
2658 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
2659 0x40, 0x00, 0x00, 0x1a, 0x62, 0xdd, 0x01, 0x00, 0x77, 0x87, 0xa8, 0x40,
2660 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
2661 0x20, 0x98, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x83, 0x87, 0x00, 0xf8,
2662 0x18, 0x30, 0x01, 0x00, 0x7b, 0x87, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
2663 0x00, 0x00, 0x00, 0x41, 0x0f, 0xc0, 0x01, 0x00, 0x80, 0x87, 0xa0, 0xaa,
2664 0x0f, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x0f, 0xb0, 0x01, 0x00,
2665 0xb8, 0x94, 0x20, 0x07, 0xe4, 0xb1, 0x01, 0x00, 0x56, 0x95, 0x20, 0x40,
2666 0xe7, 0xb1, 0x01, 0x00, 0x14, 0x87, 0x00, 0x40, 0x0f, 0xb0, 0x00, 0x00,
2667 0xff, 0xff, 0x00, 0x0c, 0x80, 0xd8, 0x01, 0x00, 0xc0, 0x02, 0x00, 0x0c,
2668 0x7e, 0x89, 0x01, 0x00, 0x95, 0x87, 0x26, 0x54, 0x61, 0x31, 0x00, 0x00,
2669 0x8b, 0x87, 0x87, 0x0c, 0x80, 0x32, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x40,
2670 0x62, 0x99, 0x01, 0x00, 0x8b, 0x87, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
2671 0x8b, 0x87, 0xa2, 0x54, 0x77, 0x7d, 0x00, 0x00, 0x87, 0x87, 0x00, 0x40,
2672 0x81, 0xb2, 0x00, 0x00, 0x90, 0x87, 0x22, 0x46, 0x19, 0x7c, 0x00, 0x00,
2673 0x0d, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
2674 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x01, 0x00,
2675 0x8c, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x95, 0x87, 0x22, 0x49,
2676 0x19, 0x7c, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00,
2677 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x54,
2678 0x77, 0x7d, 0x01, 0x00, 0x90, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
2679 0x10, 0x00, 0x00, 0x40, 0x62, 0x99, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
2680 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x54, 0x77, 0x7d, 0x01, 0x00,
2681 0x95, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x30, 0x94, 0x2f, 0x55,
2682 0xf1, 0x93, 0x01, 0x00, 0x00, 0x40, 0x00, 0xa6, 0x56, 0xb1, 0x01, 0x00,
2683 0xf9, 0x82, 0xa2, 0x41, 0xe5, 0x51, 0x00, 0x00, 0x64, 0x00, 0x00, 0x40,
2684 0xe5, 0x99, 0x01, 0x00, 0x9d, 0x87, 0x44, 0x40, 0x81, 0x32, 0x00, 0x00,
2685 0xa0, 0x87, 0xa2, 0x93, 0x57, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
2686 0x57, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x1c, 0xab, 0x27, 0xb3, 0x01, 0x00,
2687 0xf9, 0x82, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00, 0xf9, 0x82, 0x22, 0x51,
2688 0xfd, 0x7f, 0x00, 0x00, 0xf9, 0x82, 0xa2, 0x41, 0x1d, 0x53, 0x00, 0x00,
2689 0x50, 0x46, 0x00, 0x40, 0x1d, 0x9b, 0x01, 0x00, 0x38, 0x05, 0x00, 0x40,
2690 0x81, 0x32, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2691 0x10, 0x04, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0xac, 0x87, 0x22, 0x40,
2692 0xb5, 0x6f, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2693 0x20, 0x04, 0x00, 0x41, 0xb5, 0x53, 0x01, 0x00, 0xf9, 0x82, 0x00, 0x40,
2694 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xfd, 0x83, 0x01, 0x00,
2695 0x40, 0x16, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x40, 0x05, 0x00, 0x40,
2696 0x49, 0x31, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2697 0x10, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0xda,
2698 0x91, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00,
2699 0x20, 0x04, 0x00, 0x40, 0xb5, 0x33, 0x01, 0x00, 0x60, 0x16, 0x20, 0x40,
2700 0xe5, 0xb1, 0x01, 0x00, 0x40, 0x82, 0x00, 0x40, 0xb5, 0x33, 0x01, 0x00,
2701 0x08, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0xff, 0xff, 0x00, 0x4a,
2702 0xb4, 0x8b, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2703 0x0a, 0x00, 0x00, 0x48, 0xb2, 0xcb, 0x01, 0x00, 0x10, 0x00, 0x00, 0x4a,
2704 0xb4, 0xf7, 0x01, 0x00, 0x20, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
2705 0xf9, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x05, 0x00, 0x00, 0x40,
2706 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x08, 0xb0, 0x01, 0x00,
2707 0x04, 0x00, 0x20, 0x40, 0xe6, 0xb1, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40,
2708 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x96, 0xc0, 0x01, 0x00,
2709 0xc3, 0x87, 0x00, 0x4b, 0x10, 0xc9, 0x00, 0x00, 0xe6, 0x8a, 0x00, 0x41,
2710 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2711 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2712 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2713 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2714 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2715 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x1a, 0x8b, 0x00, 0x41,
2716 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2717 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2718 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2719 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2720 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2721 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x4c, 0x8b, 0x00, 0x45,
2722 0x09, 0xb0, 0x00, 0x00, 0x4c, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2723 0x4c, 0x8b, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x4c, 0x8b, 0x00, 0x45,
2724 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2725 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2726 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2727 0x8b, 0x8b, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xb4, 0x8b, 0x00, 0x43,
2728 0x09, 0xb0, 0x00, 0x00, 0xb8, 0x8b, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2729 0x03, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2730 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2731 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2732 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2733 0xc4, 0x8b, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xc3, 0x8b, 0x00, 0x43,
2734 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2735 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2736 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2737 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x73, 0x8c, 0x00, 0x42,
2738 0x09, 0xb0, 0x00, 0x00, 0x73, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2739 0x73, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45,
2740 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2741 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2742 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2743 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x93, 0x8c, 0x00, 0x43,
2744 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2745 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2746 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2747 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2748 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2749 0xb1, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xb1, 0x8c, 0x00, 0x44,
2750 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2751 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2752 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2753 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2754 0x8f, 0xb0, 0x00, 0x00, 0xb1, 0x8c, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2755 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45,
2756 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2757 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2758 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2759 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xd9, 0x8c, 0x00, 0x44,
2760 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2761 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2762 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2763 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2764 0x8f, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2765 0xea, 0x8c, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0xea, 0x8c, 0x00, 0x45,
2766 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2767 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2768 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2769 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xec, 0x8c, 0x00, 0x42,
2770 0x09, 0xb0, 0x00, 0x00, 0xec, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2771 0xec, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xec, 0x8c, 0x00, 0x45,
2772 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2773 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2774 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2775 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2776 0x8f, 0xb0, 0x00, 0x00, 0xf4, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2777 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2778 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2779 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2780 0x8f, 0xb0, 0x00, 0x00, 0x05, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2781 0xf5, 0x8c, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x05, 0x8d, 0x00, 0x44,
2782 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2783 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2784 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2785 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2786 0x8f, 0xb0, 0x00, 0x00, 0x06, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2787 0xfc, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45,
2788 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2789 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2790 0x8f, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
2791 0x71, 0x8c, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x43,
2792 0x09, 0xb0, 0x00, 0x00, 0x71, 0x8c, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2793 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2794 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2795 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x41,
2796 0x09, 0xb0, 0x00, 0x00, 0x07, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2797 0x07, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x07, 0x8d, 0x00, 0x44,
2798 0x09, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2799 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2800 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2801 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2802 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2803 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x0e, 0x8d, 0x00, 0x45,
2804 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2805 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2806 0x8f, 0xb0, 0x00, 0x00, 0x10, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2807 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2808 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2809 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2810 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2811 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2812 0x8f, 0xb0, 0x00, 0x00, 0x1c, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2813 0x7b, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xb8, 0x8b, 0x00, 0x44,
2814 0x09, 0xb0, 0x00, 0x00, 0x03, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2815 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2816 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2817 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2818 0x8f, 0xb0, 0x00, 0x00, 0x83, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2819 0xb8, 0x8b, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x03, 0x8d, 0x00, 0x45,
2820 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2821 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2822 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2823 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x94, 0x8d, 0x00, 0x43,
2824 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2825 0xe4, 0x8a, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2826 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00,
2827 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2828 0x8f, 0xb0, 0x00, 0x00, 0x88, 0x8b, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2829 0x7f, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0xb8, 0x8b, 0x00, 0x44,
2830 0x09, 0xb0, 0x00, 0x00, 0x03, 0x8d, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
2831 0x04, 0x00, 0x00, 0x20, 0x8f, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2832 0x8f, 0xb0, 0x00, 0x00, 0x07, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
2833 0x00, 0x00, 0x00, 0xf3, 0x08, 0xb0, 0x01, 0x00, 0x06, 0x00, 0x20, 0x47,
2834 0xe6, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x47, 0x96, 0xe4, 0x01, 0x00,
2835 0x00, 0x00, 0x00, 0x47, 0x96, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
2836 0x96, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x96, 0xc0, 0x01, 0x00,
2837 0x83, 0x88, 0x00, 0x4b, 0x10, 0xc9, 0x00, 0x00, 0xac, 0x8d, 0x00, 0x49,
2838 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2839 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2840 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2841 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2842 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2843 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2844 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2845 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2846 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2847 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xe5, 0x8d, 0x00, 0x42,
2848 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2849 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2850 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2851 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2852 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2853 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2854 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2855 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2856 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2857 0xeb, 0x8d, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2858 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2859 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2860 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2861 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2862 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2863 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2864 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2865 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2866 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2867 0xf9, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2868 0x85, 0xb0, 0x00, 0x00, 0x1a, 0x8e, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
2869 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2870 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2871 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2872 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2873 0x15, 0x8e, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2874 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2875 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2876 0x85, 0xb0, 0x00, 0x00, 0x1d, 0x8e, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2877 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x75, 0x8e, 0x00, 0x44,
2878 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2879 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2880 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2881 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2882 0x85, 0xb0, 0x00, 0x00, 0x74, 0x8e, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00,
2883 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2884 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2885 0xee, 0x8d, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2886 0x85, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
2887 0xee, 0x8d, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x45,
2888 0x09, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
2889 0xee, 0x8d, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x48,
2890 0x09, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x49, 0x09, 0xb0, 0x00, 0x00,
2891 0xee, 0x8d, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x4b,
2892 0x09, 0xb0, 0x00, 0x00, 0xee, 0x8d, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
2893 0xee, 0x8d, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2894 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2895 0xd4, 0x8e, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2896 0x85, 0xb0, 0x00, 0x00, 0xd4, 0x8e, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2897 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2898 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2899 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2900 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2901 0xd4, 0x8e, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2902 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2903 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2904 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2905 0xec, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2906 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2907 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2908 0x85, 0xb0, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2909 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xe0, 0x8e, 0x00, 0x45,
2910 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2911 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x41, 0x91, 0x00, 0x46,
2912 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2913 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2914 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2915 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x1a, 0x8e, 0x00, 0x46,
2916 0x09, 0xb0, 0x00, 0x00, 0xf9, 0x8d, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
2917 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x48,
2918 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2919 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2920 0x85, 0xb0, 0x00, 0x00, 0x15, 0x8e, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
2921 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2922 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2923 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2924 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2925 0x75, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0x1d, 0x8e, 0x00, 0x43,
2926 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2927 0x13, 0x8e, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2928 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2929 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x74, 0x8e, 0x00, 0x4c,
2930 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2931 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2932 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2933 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2934 0x85, 0xb0, 0x00, 0x00, 0x09, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
2935 0x09, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8a, 0x00, 0x47,
2936 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8a, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
2937 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2938 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2939 0x09, 0x8f, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2940 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2941 0xee, 0x8d, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00, 0x2c, 0x8f, 0x00, 0x47,
2942 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2943 0x14, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2944 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2945 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2946 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2947 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x14, 0x8f, 0x00, 0x47,
2948 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2949 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2950 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2951 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2952 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2953 0x14, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x2c, 0x8f, 0x00, 0x47,
2954 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2955 0x13, 0x8e, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2956 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2957 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x14, 0x8f, 0x00, 0x47,
2958 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2959 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2960 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2961 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2962 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2963 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x3b, 0x8f, 0x00, 0x47,
2964 0x09, 0xb0, 0x00, 0x00, 0x3b, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
2965 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2966 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2967 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2968 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2969 0x9d, 0x8f, 0x00, 0x40, 0x09, 0xb0, 0x00, 0x00, 0xba, 0x8f, 0x00, 0x47,
2970 0x09, 0xb0, 0x00, 0x00, 0xae, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
2971 0x0c, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x0c, 0x8f, 0x00, 0x47,
2972 0x09, 0xb0, 0x00, 0x00, 0xba, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2973 0xc1, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0xc1, 0x8f, 0x00, 0x48,
2974 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2975 0xae, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x0c, 0x8f, 0x00, 0x47,
2976 0x09, 0xb0, 0x00, 0x00, 0x0c, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2977 0xae, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2978 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2979 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xd4, 0x8e, 0x00, 0x43,
2980 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2981 0xd4, 0x8e, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0xd4, 0x8e, 0x00, 0x46,
2982 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2983 0x13, 0x8e, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2984 0x85, 0xb0, 0x00, 0x00, 0xd4, 0x8e, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
2985 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xd4, 0x8e, 0x00, 0x4c,
2986 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2987 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
2988 0x85, 0xb0, 0x00, 0x00, 0x2b, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2989 0x1f, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8f, 0x00, 0x47,
2990 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2991 0x2b, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8a, 0x00, 0x47,
2992 0x09, 0xb0, 0x00, 0x00, 0xcf, 0x8a, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
2993 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x1f, 0x8f, 0x00, 0x48,
2994 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
2995 0x13, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x1f, 0x8f, 0x00, 0x48,
2996 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2997 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x42,
2998 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
2999 0xc3, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3000 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3001 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3002 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3003 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x4b,
3004 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3005 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3006 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3007 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x43,
3008 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3009 0xc3, 0x8f, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x46,
3010 0x09, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3011 0xc3, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3012 0x85, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3013 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x4c,
3014 0x09, 0xb0, 0x00, 0x00, 0xc3, 0x8f, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
3015 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3016 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3017 0xdd, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3018 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3019 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3020 0x85, 0xb0, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3021 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xdd, 0x8f, 0x00, 0x46,
3022 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3023 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3024 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3025 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3026 0x85, 0xb0, 0x00, 0x00, 0xd8, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3027 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3028 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3029 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x47,
3030 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3031 0xd8, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3032 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3033 0xd8, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3034 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3035 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3036 0x85, 0xb0, 0x00, 0x00, 0xfb, 0x90, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3037 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3038 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3039 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3040 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3041 0xfa, 0x90, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3042 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3043 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3044 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3045 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3046 0x85, 0xb0, 0x00, 0x00, 0xfb, 0x90, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3047 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x47,
3048 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3049 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3050 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3051 0xfa, 0x90, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3052 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3053 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3054 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3055 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3056 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3057 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3058 0x85, 0xb0, 0x00, 0x00, 0xce, 0x8f, 0x00, 0x41, 0x09, 0xb0, 0x00, 0x00,
3059 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3060 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3061 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3062 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3063 0xda, 0x8f, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3064 0x85, 0xb0, 0x00, 0x00, 0xda, 0x8f, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
3065 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3066 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3067 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3068 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3069 0xda, 0x8f, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3070 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3071 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3072 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3073 0xda, 0x8f, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3074 0x85, 0xb0, 0x00, 0x00, 0xda, 0x8f, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
3075 0xda, 0x8f, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0xda, 0x8f, 0x00, 0x47,
3076 0x09, 0xb0, 0x00, 0x00, 0xda, 0x8f, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3077 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3078 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3079 0xda, 0x8f, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3080 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3081 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3082 0x85, 0xb0, 0x00, 0x00, 0xec, 0x8e, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00,
3083 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3084 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3085 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x47,
3086 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3087 0xe0, 0x8e, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3088 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3089 0x8f, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3090 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3091 0x36, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3092 0x85, 0xb0, 0x00, 0x00, 0x36, 0x91, 0x00, 0x44, 0x09, 0xb0, 0x00, 0x00,
3093 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3094 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3095 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3096 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3097 0x36, 0x91, 0x00, 0x4b, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3098 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3099 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3100 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3101 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3102 0x85, 0xb0, 0x00, 0x00, 0x36, 0x91, 0x00, 0x45, 0x09, 0xb0, 0x00, 0x00,
3103 0x36, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x47,
3104 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00,
3105 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3106 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3107 0x36, 0x91, 0x00, 0x4c, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3108 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3109 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0xe0, 0x8e, 0x00, 0x42,
3110 0x09, 0xb0, 0x00, 0x00, 0x41, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3111 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3112 0x85, 0xb0, 0x00, 0x00, 0xe0, 0x8e, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3113 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x47,
3114 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3115 0x41, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3116 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3117 0x41, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3118 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3119 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x45, 0x91, 0x00, 0x43,
3120 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3121 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3122 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3123 0x03, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3124 0x85, 0xb0, 0x00, 0x00, 0x87, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3125 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3126 0x85, 0xb0, 0x00, 0x00, 0x45, 0x91, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
3127 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3128 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3129 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x56, 0x91, 0x00, 0x43,
3130 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3131 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3132 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3133 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3134 0x85, 0xb0, 0x00, 0x00, 0x34, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3135 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3136 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3137 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3138 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3139 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x56, 0x91, 0x00, 0x43,
3140 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3141 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x48,
3142 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3143 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3144 0x85, 0xb0, 0x00, 0x00, 0x34, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3145 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3146 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3147 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x67, 0x91, 0x00, 0x43,
3148 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3149 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3150 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3151 0x03, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3152 0x85, 0xb0, 0x00, 0x00, 0x67, 0x91, 0x00, 0x43, 0x09, 0xb0, 0x00, 0x00,
3153 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3154 0x85, 0xb0, 0x00, 0x00, 0x67, 0x91, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
3155 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3156 0x85, 0xb0, 0x00, 0x00, 0xf9, 0x8d, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3157 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x1a, 0x8e, 0x00, 0x42,
3158 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3159 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3160 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3161 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3162 0x85, 0xb0, 0x00, 0x00, 0x85, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00,
3163 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3164 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3165 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3166 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3167 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x1a, 0x8e, 0x00, 0x46,
3168 0x09, 0xb0, 0x00, 0x00, 0xf9, 0x8d, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3169 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x48,
3170 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3171 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3172 0x85, 0xb0, 0x00, 0x00, 0x85, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3173 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3174 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3175 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x87, 0x91, 0x00, 0x4a,
3176 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3177 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3178 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3179 0x03, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3180 0x85, 0xb0, 0x00, 0x00, 0x87, 0x91, 0x00, 0x4a, 0x09, 0xb0, 0x00, 0x00,
3181 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3182 0x85, 0xb0, 0x00, 0x00, 0x42, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00,
3183 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3184 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3185 0x42, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3186 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3187 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3188 0x85, 0xb0, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3189 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x42, 0x91, 0x00, 0x46,
3190 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3191 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x42, 0x91, 0x00, 0x46,
3192 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3193 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3194 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3195 0x8d, 0x91, 0x00, 0x42, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3196 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3197 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3198 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3199 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x34, 0x91, 0x00, 0x4a,
3200 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3201 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3202 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3203 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3204 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3205 0x8d, 0x91, 0x00, 0x46, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3206 0x85, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00,
3207 0x13, 0x8e, 0x00, 0x48, 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3208 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3209 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x34, 0x91, 0x00, 0x4a,
3210 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3211 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3212 0x85, 0xb0, 0x00, 0x00, 0x1d, 0x8e, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
3213 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3214 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3215 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3216 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3217 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3218 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3219 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3220 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3221 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3222 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3223 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3224 0x85, 0xb0, 0x00, 0x00, 0x1d, 0x8e, 0x00, 0x4d, 0x09, 0xb0, 0x00, 0x00,
3225 0x13, 0x8e, 0x00, 0x47, 0x09, 0xb0, 0x00, 0x00, 0x13, 0x8e, 0x00, 0x48,
3226 0x09, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3227 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20,
3228 0x85, 0xb0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00,
3229 0x04, 0x00, 0x00, 0x20, 0x85, 0xb0, 0x00, 0x00, 0x07, 0x00, 0x2e, 0x4b,
3230 0x19, 0x90, 0x01, 0x00, 0x1f, 0x87, 0x00, 0x04, 0xe6, 0xb1, 0x00, 0x00,
3231 0xcf, 0x8a, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x83, 0x94, 0x00, 0x3a,
3232 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3233 0xcf, 0x8a, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0xff, 0x1f, 0x00, 0x0f,
3234 0x1e, 0x8c, 0x01, 0x00, 0xee, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3235 0xdf, 0x8a, 0x9c, 0x0f, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c,
3236 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
3237 0xdf, 0x8a, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
3238 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3239 0xdc, 0x8a, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3240 0x1c, 0xb0, 0x00, 0x00, 0xa3, 0x84, 0x22, 0x02, 0x80, 0x32, 0x00, 0x00,
3241 0xe0, 0x8a, 0x42, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3242 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x68, 0x97, 0x01, 0x00,
3243 0xa3, 0x84, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x05, 0x00, 0x2e, 0x4b,
3244 0x19, 0x90, 0x01, 0x00, 0x1f, 0x87, 0x00, 0x04, 0xe6, 0xb1, 0x00, 0x00,
3245 0x00, 0x00, 0x00, 0x40, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3246 0x8d, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3247 0x40, 0x00, 0x00, 0xa1, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3248 0xe0, 0xb1, 0x01, 0x00, 0xc6, 0x95, 0x00, 0x06, 0x07, 0x40, 0x01, 0x00,
3249 0x00, 0x00, 0x00, 0x06, 0x07, 0xd0, 0x01, 0x00, 0xd4, 0x00, 0x2e, 0x5c,
3250 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0xb1, 0x01, 0x00,
3251 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3252 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00,
3253 0x00, 0x00, 0x00, 0xfe, 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3254 0x96, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xb1, 0x01, 0x00,
3255 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe,
3256 0x96, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x96, 0xc0, 0x01, 0x00,
3257 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3258 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x96, 0xc0, 0x01, 0x00,
3259 0x00, 0x00, 0x00, 0xfe, 0x96, 0xc0, 0x01, 0x00, 0x00, 0x30, 0x00, 0x4b,
3260 0x94, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x95, 0xf0, 0x01, 0x00,
3261 0x00, 0x00, 0x00, 0x4a, 0x96, 0xc0, 0x01, 0x00, 0x5e, 0x01, 0x2e, 0x34,
3262 0x97, 0x84, 0x01, 0x00, 0x02, 0x00, 0x00, 0x4b, 0xe4, 0xe5, 0x01, 0x00,
3263 0x64, 0x01, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
3264 0x86, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x2e, 0xa7, 0x87, 0xc0, 0x01, 0x00,
3265 0x10, 0x00, 0x00, 0x10, 0x48, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40,
3266 0xf1, 0x99, 0x01, 0x00, 0x58, 0x01, 0x00, 0x43, 0xf0, 0xc9, 0x01, 0x00,
3267 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3268 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3269 0x09, 0x8b, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3270 0x48, 0xb1, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
3271 0x08, 0x00, 0x2e, 0x40, 0x95, 0xb0, 0x01, 0x00, 0x11, 0x8b, 0x20, 0x4b,
3272 0x94, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
3273 0x0e, 0x8b, 0x00, 0x41, 0x95, 0xc0, 0x00, 0x00, 0x10, 0x80, 0x00, 0x10,
3274 0x44, 0xc9, 0x01, 0x00, 0x18, 0x8b, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3275 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3276 0x62, 0xdd, 0x01, 0x00, 0x14, 0x8b, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3277 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3278 0x48, 0xb1, 0x01, 0x00, 0x83, 0x94, 0x00, 0x40, 0x81, 0x30, 0x01, 0x00,
3279 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x03,
3280 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x86, 0xb0, 0x01, 0x00,
3281 0x00, 0x00, 0x00, 0xf8, 0x88, 0xb0, 0x01, 0x00, 0x1d, 0x8b, 0x44, 0x40,
3282 0x81, 0x32, 0x00, 0x00, 0x20, 0x8b, 0xa2, 0x4c, 0xfd, 0x7f, 0x00, 0x00,
3283 0x21, 0x8b, 0x00, 0x4c, 0xfd, 0x93, 0x00, 0x00, 0x22, 0x8b, 0x20, 0xf0,
3284 0x56, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x56, 0xb3, 0x01, 0x00,
3285 0x00, 0x00, 0x1c, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
3286 0x44, 0xc9, 0x01, 0x00, 0x64, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
3287 0x70, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
3288 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
3289 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x28, 0x8b, 0xa8, 0x44,
3290 0xe0, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x8c, 0xc8, 0x01, 0x00,
3291 0x00, 0x80, 0x00, 0x46, 0x44, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x40,
3292 0xf1, 0x99, 0x01, 0x00, 0x68, 0x01, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00,
3293 0x64, 0x00, 0x00, 0x43, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
3294 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x62, 0xb1, 0x01, 0x00,
3295 0x30, 0x8b, 0xa8, 0x44, 0xe0, 0x31, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3296 0x1c, 0xb0, 0x00, 0x00, 0x09, 0x00, 0x00, 0x07, 0x86, 0xe4, 0x01, 0x00,
3297 0x38, 0x00, 0x2e, 0xa7, 0x87, 0xc0, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x05,
3298 0x48, 0xb1, 0x01, 0x00, 0x38, 0x8b, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00,
3299 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00, 0x3b, 0x8b, 0x22, 0x44,
3300 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x45, 0xc1, 0x01, 0x00,
3301 0x00, 0x00, 0x00, 0x4a, 0x19, 0x90, 0x01, 0x00, 0x68, 0x01, 0x20, 0xa2,
3302 0xe4, 0xb1, 0x01, 0x00, 0x88, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3303 0x3f, 0x8b, 0x23, 0x0b, 0xe5, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3304 0x19, 0x90, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
3305 0x50, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x58, 0x01, 0x00, 0x43,
3306 0xf0, 0xc9, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
3307 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
3308 0x62, 0xb1, 0x01, 0x00, 0x44, 0x8b, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3309 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x5c, 0x00, 0x2e, 0x05,
3310 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3311 0x00, 0x00, 0x60, 0xf0, 0x96, 0xb0, 0x01, 0x00, 0x83, 0x94, 0x00, 0x41,
3312 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3313 0x4f, 0x8b, 0xa2, 0x49, 0x19, 0x7c, 0x00, 0x00, 0x86, 0x00, 0x00, 0x40,
3314 0x47, 0x99, 0x01, 0x00, 0x53, 0x8b, 0x00, 0x40, 0xe5, 0xb1, 0x00, 0x00,
3315 0x86, 0x00, 0x2f, 0x49, 0x19, 0x80, 0x01, 0x00, 0x53, 0x8b, 0xa2, 0xf2,
3316 0x80, 0x32, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3317 0x00, 0x00, 0x00, 0x42, 0xe7, 0x91, 0x01, 0x00, 0x56, 0x8b, 0xa2, 0x46,
3318 0x19, 0x7c, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3319 0x5a, 0x8b, 0x00, 0x40, 0xe5, 0xb1, 0x00, 0x00, 0xa0, 0x00, 0x2f, 0x46,
3320 0x19, 0x80, 0x01, 0x00, 0x5a, 0x8b, 0xa2, 0xf2, 0x80, 0x32, 0x00, 0x00,
3321 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3322 0xe7, 0x91, 0x01, 0x00, 0xa8, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3323 0x34, 0x00, 0x2d, 0xf0, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
3324 0x0c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x10, 0xb0, 0x01, 0x00,
3325 0x00, 0x00, 0x00, 0xfb, 0x12, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3,
3326 0x16, 0x88, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3, 0x14, 0xf4, 0x01, 0x00,
3327 0x85, 0x8b, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00, 0x6d, 0x8b, 0x22, 0x0a,
3328 0x16, 0x6c, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00,
3329 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0,
3330 0x84, 0x30, 0x00, 0x00, 0x70, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3331 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3332 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x13, 0xc0, 0x01, 0x00,
3333 0x6c, 0x8b, 0xa0, 0x43, 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3334 0x13, 0xb0, 0x01, 0x00, 0x62, 0x8b, 0x00, 0x41, 0x15, 0xd0, 0x00, 0x00,
3335 0x85, 0x8b, 0x22, 0x0a, 0x80, 0x32, 0x00, 0x00, 0x58, 0x00, 0x3d, 0x43,
3336 0x13, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00,
3337 0x04, 0x00, 0x22, 0xf0, 0x84, 0x30, 0x00, 0x00, 0x70, 0x95, 0x00, 0x40,
3338 0x81, 0x32, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
3339 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3340 0x48, 0xb1, 0x01, 0x00, 0x85, 0x8b, 0x22, 0x41, 0x15, 0x50, 0x00, 0x00,
3341 0x00, 0x00, 0x00, 0x41, 0x11, 0xc0, 0x01, 0x00, 0x79, 0x8b, 0xa0, 0x43,
3342 0x11, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x11, 0xb0, 0x01, 0x00,
3343 0x58, 0x00, 0x3d, 0x43, 0x11, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3344 0x36, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x00, 0x30, 0x00, 0x00,
3345 0x00, 0x00, 0x00, 0x50, 0x83, 0xb0, 0x01, 0x00, 0xc2, 0x94, 0x00, 0x47,
3346 0x61, 0x31, 0x01, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3347 0x2c, 0x92, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
3348 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3349 0x81, 0x8b, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3350 0x1c, 0xb0, 0x00, 0x00, 0x75, 0x8b, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3351 0x37, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xf4, 0x94, 0x00, 0x51,
3352 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3353 0x34, 0x00, 0x2e, 0x41, 0xf5, 0xb1, 0x01, 0x00, 0x00, 0x11, 0x00, 0x40,
3354 0xe5, 0x99, 0x01, 0x00, 0x8d, 0x8b, 0x00, 0x48, 0x19, 0x90, 0x00, 0x00,
3355 0x34, 0x00, 0x2e, 0x41, 0xf5, 0xb1, 0x01, 0x00, 0x00, 0x11, 0x00, 0x40,
3356 0xe5, 0x99, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3357 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x92, 0x8b, 0x22, 0x45,
3358 0x23, 0x7c, 0x00, 0x00, 0xb0, 0x00, 0x2f, 0xf0, 0x8c, 0xb0, 0x01, 0x00,
3359 0x00, 0x00, 0x60, 0xf0, 0x8c, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x00, 0x40,
3360 0x43, 0x99, 0x01, 0x00, 0x35, 0x00, 0x2d, 0xf0, 0x8c, 0xb0, 0x01, 0x00,
3361 0x58, 0x00, 0x3e, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0x97, 0x8b, 0x22, 0x48,
3362 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8d, 0xc0, 0x01, 0x00,
3363 0x00, 0x00, 0x68, 0x0a, 0x8c, 0xc0, 0x01, 0x00, 0x38, 0x00, 0x2a, 0x4a,
3364 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
3365 0x3c, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00, 0x10, 0x80, 0x00, 0x03,
3366 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x38, 0xb0, 0x01, 0x00,
3367 0x00, 0x00, 0x00, 0xf8, 0x26, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf8,
3368 0x02, 0x30, 0x00, 0x00, 0xa5, 0x8b, 0x23, 0x01, 0x14, 0x6c, 0x00, 0x00,
3369 0x00, 0x00, 0x00, 0xf8, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3370 0x82, 0xb0, 0x01, 0x00, 0x4c, 0x00, 0x20, 0xf0, 0xe4, 0xb1, 0x01, 0x00,
3371 0x44, 0x00, 0x20, 0x40, 0xe0, 0xb1, 0x01, 0x00, 0x48, 0x00, 0x20, 0x41,
3372 0xe0, 0xb1, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0x10, 0x32, 0xb0, 0x01, 0x00,
3373 0xaa, 0x95, 0x00, 0xf0, 0x24, 0x30, 0x01, 0x00, 0xae, 0x8b, 0xa2, 0x44,
3374 0x81, 0x6c, 0x00, 0x00, 0xac, 0x8b, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
3375 0x57, 0x93, 0x00, 0x40, 0x3b, 0x30, 0x01, 0x00, 0xd2, 0x8b, 0xa2, 0x08,
3376 0x3c, 0x30, 0x00, 0x00, 0xae, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3377 0x94, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd2, 0x8b, 0xa2, 0x08,
3378 0x3c, 0x30, 0x00, 0x00, 0x50, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00,
3379 0x54, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00, 0x4e, 0x00, 0x20, 0x01,
3380 0xe4, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00,
3381 0xf4, 0x94, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3382 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3383 0x36, 0x93, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00, 0x8d, 0x8b, 0x22, 0x4a,
3384 0x80, 0x32, 0x00, 0x00, 0xba, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3385 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x36, 0x93, 0x00, 0xf3,
3386 0x94, 0x30, 0x01, 0x00, 0x58, 0x00, 0x3e, 0x43, 0x97, 0xe0, 0x01, 0x00,
3387 0x00, 0x00, 0x00, 0x1b, 0xf0, 0xb1, 0x01, 0x00, 0x1f, 0x00, 0x60, 0x00,
3388 0x00, 0x8c, 0x01, 0x00, 0xe4, 0x8a, 0x85, 0x11, 0x80, 0x32, 0x00, 0x00,
3389 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0xf0,
3390 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0, 0x8c, 0xc0, 0x01, 0x00,
3391 0xf4, 0x94, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3392 0x81, 0xb2, 0x00, 0x00, 0xc4, 0x8b, 0x00, 0x49, 0x19, 0x80, 0x00, 0x00,
3393 0xc9, 0x8b, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x57, 0x93, 0x00, 0x40,
3394 0x3b, 0x30, 0x01, 0x00, 0xcd, 0x8b, 0xa2, 0x08, 0x3c, 0x30, 0x00, 0x00,
3395 0xf4, 0x94, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3396 0x81, 0xb2, 0x00, 0x00, 0x94, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3397 0xcd, 0x8b, 0xa2, 0x08, 0x3c, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x5f,
3398 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3399 0x50, 0x00, 0x2d, 0x10, 0x32, 0xb0, 0x01, 0x00, 0x54, 0x00, 0x2d, 0xf0,
3400 0x38, 0xb0, 0x01, 0x00, 0x4e, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
3401 0x40, 0x00, 0x2d, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3402 0x14, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10, 0x8c, 0xc8, 0x01, 0x00,
3403 0x00, 0x80, 0x00, 0x46, 0x44, 0xc9, 0x01, 0x00, 0x68, 0x01, 0x2d, 0x44,
3404 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x68, 0xf2, 0x80, 0xc8, 0x01, 0x00,
3405 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05,
3406 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x37, 0xb0, 0x01, 0x00,
3407 0x00, 0x00, 0x00, 0x40, 0x36, 0xd0, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0x40,
3408 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x80, 0xc0, 0x01, 0x00,
3409 0x00, 0x00, 0x00, 0x52, 0x81, 0xd0, 0x01, 0x00, 0x89, 0x94, 0x00, 0x40,
3410 0xe4, 0x31, 0x01, 0x00, 0x20, 0x00, 0x00, 0x46, 0x62, 0xdd, 0x01, 0x00,
3411 0xde, 0x8b, 0xa8, 0x40, 0x23, 0x30, 0x00, 0x00, 0xce, 0x92, 0x00, 0x40,
3412 0x81, 0x32, 0x01, 0x00, 0xd6, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3413 0xec, 0x8b, 0x82, 0x41, 0x23, 0x40, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10,
3414 0x42, 0xc9, 0x01, 0x00, 0xe9, 0x8b, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3415 0x00, 0x00, 0x00, 0x46, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3416 0x62, 0xdd, 0x01, 0x00, 0xe6, 0x8b, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3417 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3418 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
3419 0x00, 0x00, 0x00, 0x41, 0x23, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19,
3420 0x44, 0xc9, 0x01, 0x00, 0xf4, 0x8b, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
3421 0xf0, 0x8b, 0xa3, 0x01, 0x0c, 0x6c, 0x00, 0x00, 0xf1, 0x8b, 0x00, 0x06,
3422 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xb0, 0x01, 0x00,
3423 0xf3, 0x8b, 0x20, 0x02, 0x36, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b,
3424 0x04, 0xb0, 0x01, 0x00, 0xf7, 0x8b, 0x00, 0x02, 0xe0, 0xb1, 0x00, 0x00,
3425 0xf6, 0x8b, 0xa3, 0x01, 0x0c, 0x6c, 0x00, 0x00, 0xf7, 0x8b, 0x00, 0x06,
3426 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0xb0, 0x01, 0x00,
3427 0x00, 0x00, 0x68, 0x02, 0x16, 0x94, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b,
3428 0x16, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x68, 0x08, 0x3e, 0x96, 0x01, 0x00,
3429 0x00, 0x00, 0x00, 0x1c, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
3430 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
3431 0xfc, 0x8b, 0xa8, 0x13, 0xe0, 0x31, 0x00, 0x00, 0x33, 0x8c, 0x22, 0x02,
3432 0x14, 0x50, 0x00, 0x00, 0x44, 0x00, 0x2d, 0x02, 0x0c, 0xd0, 0x01, 0x00,
3433 0x23, 0x8c, 0xa2, 0x02, 0x02, 0x50, 0x00, 0x00, 0x0a, 0x8c, 0x22, 0x5c,
3434 0x1f, 0x7c, 0x00, 0x00, 0x20, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3435 0x09, 0x8c, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
3436 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3437 0x05, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3438 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3439 0x44, 0x00, 0x2d, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x48, 0x00, 0x2d, 0xf0,
3440 0x38, 0xb0, 0x01, 0x00, 0x4c, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
3441 0x38, 0x00, 0x2f, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x24, 0x8c, 0x22, 0x01,
3442 0x14, 0x6c, 0x00, 0x00, 0x17, 0x8c, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
3443 0x00, 0x00, 0x00, 0x46, 0x1f, 0x80, 0x01, 0x00, 0x20, 0x00, 0x2d, 0x03,
3444 0x48, 0xb1, 0x01, 0x00, 0x16, 0x8c, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3445 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3446 0x62, 0xdd, 0x01, 0x00, 0x13, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3447 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x38, 0x00, 0x2f, 0x05,
3448 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00,
3449 0x38, 0x00, 0x2d, 0xf0, 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c,
3450 0xe1, 0xc1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
3451 0x00, 0x00, 0x22, 0x4a, 0xf1, 0xb1, 0x01, 0x00, 0x44, 0x00, 0x00, 0x05,
3452 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xf0, 0xb1, 0x01, 0x00,
3453 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47,
3454 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00,
3455 0x20, 0x8c, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00, 0x24, 0x8c, 0x00, 0x05,
3456 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x38, 0xc0, 0x01, 0x00,
3457 0x2e, 0x8c, 0x22, 0x06, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
3458 0x33, 0xc0, 0x01, 0x00, 0x2c, 0x8c, 0xa2, 0x02, 0x36, 0x6c, 0x00, 0x00,
3459 0x04, 0x00, 0x8f, 0x0d, 0x42, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0xf8,
3460 0x10, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x11, 0x80, 0x01, 0x00,
3461 0xf0, 0x07, 0x00, 0x40, 0x37, 0x98, 0x01, 0x00, 0xe2, 0x8b, 0x00, 0xa1,
3462 0x1a, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00,
3463 0xe2, 0x8b, 0x00, 0x02, 0x36, 0xd0, 0x00, 0x00, 0x50, 0x00, 0x20, 0x1c,
3464 0xe0, 0xb1, 0x01, 0x00, 0x54, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00,
3465 0x4e, 0x00, 0x20, 0x01, 0xe4, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x0a,
3466 0xe0, 0xb1, 0x01, 0x00, 0x38, 0x8c, 0x00, 0x5f, 0x01, 0xb0, 0x00, 0x00,
3467 0x37, 0x00, 0x2d, 0x46, 0x01, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xf3,
3468 0x80, 0xf4, 0x01, 0x00, 0x37, 0x8c, 0xa0, 0x43, 0x81, 0x6c, 0x00, 0x00,
3469 0x00, 0x00, 0x00, 0x55, 0x01, 0xb0, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40,
3470 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00,
3471 0x3e, 0x8c, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
3472 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00,
3473 0x3b, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3474 0x1c, 0xb0, 0x00, 0x00, 0xd3, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3475 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x45, 0x8c, 0x22, 0x40,
3476 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3477 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x42, 0x8c, 0xa8, 0x40,
3478 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3479 0x60, 0x01, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
3480 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x17, 0xf0, 0x01, 0x00,
3481 0x4a, 0x8c, 0x90, 0xf2, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3482 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00,
3483 0x32, 0x00, 0x00, 0xa6, 0x2a, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
3484 0x2a, 0x94, 0x01, 0x00, 0x4d, 0x8c, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00,
3485 0x00, 0xd0, 0x00, 0x1e, 0x62, 0xdd, 0x01, 0x00, 0x52, 0x8c, 0x28, 0x40,
3486 0x05, 0x30, 0x00, 0x00, 0x4e, 0x8c, 0x22, 0x48, 0x77, 0x7d, 0x00, 0x00,
3487 0x55, 0x8c, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15,
3488 0x62, 0xb1, 0x01, 0x00, 0x5e, 0x8c, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
3489 0x52, 0x8c, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00,
3490 0x92, 0xb0, 0x01, 0x00, 0x5b, 0x8c, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
3491 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x99, 0x92, 0x00, 0xf8,
3492 0x00, 0x30, 0x01, 0x00, 0x58, 0x8c, 0xa2, 0x41, 0x3b, 0x50, 0x00, 0x00,
3493 0x5f, 0x8c, 0x00, 0x49, 0x00, 0xb0, 0x00, 0x00, 0xff, 0x07, 0x00, 0x1e,
3494 0x00, 0x8c, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3495 0x5f, 0x8c, 0x00, 0x49, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x47,
3496 0x19, 0x80, 0x01, 0x00, 0x62, 0x8c, 0x22, 0x5f, 0x01, 0x6c, 0x00, 0x00,
3497 0xd4, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xbf, 0x87, 0x00, 0x00,
3498 0x80, 0xb0, 0x00, 0x00, 0x69, 0x8c, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
3499 0x20, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x69, 0x8c, 0x22, 0x40,
3500 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
3501 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x66, 0x8c, 0xa8, 0x40,
3502 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3503 0x69, 0x8c, 0x40, 0x05, 0x48, 0x31, 0x00, 0x00, 0xff, 0xff, 0x00, 0x07,
3504 0x94, 0x89, 0x01, 0x00, 0x6f, 0x8c, 0x85, 0xca, 0x94, 0x30, 0x00, 0x00,
3505 0xd4, 0x95, 0x18, 0x5c, 0x1f, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0f,
3506 0x1e, 0x8c, 0x01, 0x00, 0xe0, 0x86, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3507 0xf4, 0x94, 0x18, 0x00, 0x80, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x47,
3508 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19, 0x80, 0x01, 0x00,
3509 0xe4, 0x8a, 0x22, 0x47, 0x19, 0x7c, 0x00, 0x00, 0x94, 0x92, 0x00, 0x40,
3510 0x81, 0x32, 0x01, 0x00, 0x76, 0x8c, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
3511 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x89, 0x94, 0x00, 0x40,
3512 0x0d, 0x30, 0x01, 0x00, 0x9c, 0x01, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3513 0xff, 0xff, 0x00, 0x0b, 0x98, 0x88, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x50,
3514 0x17, 0xf0, 0x01, 0x00, 0x7c, 0x8c, 0x90, 0x4c, 0x16, 0x40, 0x00, 0x00,
3515 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x7e, 0x8c, 0x22, 0x43,
3516 0xe7, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00,
3517 0x00, 0x00, 0x66, 0x20, 0x17, 0xa4, 0x01, 0x00, 0x68, 0x01, 0x00, 0x40,
3518 0x43, 0x99, 0x01, 0x00, 0x5c, 0x01, 0x2e, 0xf2, 0x80, 0xb0, 0x01, 0x00,
3519 0x02, 0x00, 0x62, 0x40, 0x7e, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57,
3520 0x81, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
3521 0x03, 0x00, 0x00, 0x40, 0xf0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
3522 0xf0, 0xb1, 0x01, 0x00, 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00,
3523 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
3524 0x62, 0xb1, 0x01, 0x00, 0x88, 0x8c, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3525 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3526 0x48, 0xb1, 0x01, 0x00, 0x8c, 0x8c, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00,
3527 0x00, 0x50, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00, 0x92, 0x8c, 0x28, 0x40,
3528 0x05, 0x30, 0x00, 0x00, 0x8d, 0x8c, 0x22, 0x48, 0x77, 0x7d, 0x00, 0x00,
3529 0x99, 0x92, 0x1d, 0x08, 0x00, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3530 0x81, 0xb2, 0x00, 0x00, 0xe4, 0x8a, 0x1d, 0x47, 0x19, 0x80, 0x00, 0x00,
3531 0x35, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
3532 0x84, 0xc8, 0x01, 0x00, 0x97, 0x8c, 0xa0, 0x43, 0x85, 0x6c, 0x00, 0x00,
3533 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00, 0xa8, 0x00, 0x00, 0x40,
3534 0x43, 0x99, 0x01, 0x00, 0x37, 0x00, 0x2f, 0xf0, 0x24, 0xb0, 0x01, 0x00,
3535 0x01, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00, 0xa2, 0x8c, 0xa2, 0x41,
3536 0x9e, 0x06, 0x00, 0x00, 0xe4, 0x8a, 0x22, 0x44, 0x83, 0x70, 0x00, 0x00,
3537 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x58, 0x00, 0x3d, 0x43,
3538 0xe7, 0xe1, 0x01, 0x00, 0xe4, 0x8a, 0x1f, 0xf0, 0x24, 0x6c, 0x00, 0x00,
3539 0xd4, 0x95, 0x00, 0x48, 0x81, 0x30, 0x01, 0x00, 0xbf, 0x87, 0x23, 0x41,
3540 0x83, 0x6c, 0x00, 0x00, 0xbf, 0x87, 0x00, 0x47, 0x81, 0xb0, 0x00, 0x00,
3541 0x58, 0x00, 0x3d, 0x43, 0x85, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
3542 0x36, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00,
3543 0x28, 0x00, 0x00, 0x40, 0x83, 0x98, 0x01, 0x00, 0xc2, 0x94, 0x00, 0x47,
3544 0x61, 0x31, 0x01, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3545 0x00, 0x00, 0x2d, 0x03, 0x48, 0xb1, 0x01, 0x00, 0x08, 0x00, 0x2d, 0xf0,
3546 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x8e, 0xb0, 0x01, 0x00,
3547 0x90, 0x00, 0x2d, 0xf0, 0x14, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05,
3548 0x48, 0xb1, 0x01, 0x00, 0x93, 0x8b, 0xa2, 0x40, 0x8f, 0x7c, 0x00, 0x00,
3549 0xb0, 0x8c, 0x22, 0x47, 0x8f, 0x7c, 0x00, 0x00, 0x93, 0x8b, 0x00, 0x48,
3550 0x19, 0x90, 0x00, 0x00, 0x1f, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3551 0x36, 0x00, 0x2d, 0x5d, 0x05, 0xb4, 0x01, 0x00, 0x37, 0x00, 0x2d, 0xf3,
3552 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x8e, 0xb0, 0x01, 0x00,
3553 0x5c, 0x00, 0x3d, 0x43, 0x81, 0xe0, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0xf0,
3554 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x24, 0xb0, 0x01, 0x00,
3555 0x20, 0x00, 0x00, 0x10, 0x86, 0xdc, 0x01, 0x00, 0x40, 0x80, 0x00, 0x03,
3556 0x44, 0xc9, 0x01, 0x00, 0x9b, 0x91, 0x00, 0x4a, 0xf0, 0x31, 0x01, 0x00,
3557 0x36, 0x00, 0x2f, 0x5c, 0x1f, 0x90, 0x01, 0x00, 0xbe, 0x8c, 0xa2, 0x50,
3558 0x8f, 0x50, 0x00, 0x00, 0x34, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00,
3559 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x63, 0x41,
3560 0x81, 0xc0, 0x01, 0x00, 0xc1, 0x8c, 0xa0, 0x43, 0x81, 0x6c, 0x00, 0x00,
3561 0x00, 0x00, 0x63, 0x40, 0x81, 0xb0, 0x01, 0x00, 0x37, 0x00, 0x20, 0x47,
3562 0xe6, 0xb1, 0x01, 0x00, 0xe4, 0x8a, 0x22, 0x47, 0x80, 0x32, 0x00, 0x00,
3563 0x04, 0x00, 0x00, 0x47, 0x0c, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
3564 0x8f, 0x84, 0x01, 0x00, 0xd6, 0x8c, 0x22, 0x47, 0x0c, 0x6c, 0x00, 0x00,
3565 0x58, 0x00, 0x3d, 0x43, 0x81, 0xe0, 0x01, 0x00, 0xd6, 0x8c, 0x1f, 0xf0,
3566 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
3567 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xcf, 0x8c, 0x22, 0x40,
3568 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
3569 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xcc, 0x8c, 0xa8, 0x40,
3570 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3571 0xcf, 0x8c, 0x42, 0x40, 0x05, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3572 0x93, 0x93, 0x01, 0x00, 0x00, 0x00, 0x1a, 0x5d, 0x69, 0x93, 0x01, 0x00,
3573 0xd4, 0x8c, 0x23, 0x41, 0x0d, 0x6c, 0x00, 0x00, 0xb1, 0x8c, 0x00, 0x05,
3574 0x48, 0xb1, 0x00, 0x00, 0xd4, 0x95, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00,
3575 0xbf, 0x87, 0x00, 0x48, 0x81, 0xb0, 0x00, 0x00, 0xe4, 0x8a, 0x22, 0x40,
3576 0x8f, 0x6c, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00,
3577 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x40,
3578 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x84, 0xb0, 0x01, 0x00,
3579 0xa6, 0x00, 0x2d, 0x49, 0x19, 0x90, 0x01, 0x00, 0x02, 0x00, 0x00, 0xf2,
3580 0x80, 0xf4, 0x01, 0x00, 0xb8, 0x00, 0x2d, 0x40, 0x81, 0xb2, 0x01, 0x00,
3581 0x00, 0x00, 0x00, 0xf2, 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3582 0x82, 0xf8, 0x01, 0x00, 0x19, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00,
3583 0xe5, 0x8c, 0xa0, 0x40, 0x82, 0x6c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x40,
3584 0x81, 0x98, 0x01, 0x00, 0xe5, 0x8c, 0xa3, 0x40, 0x82, 0x6c, 0x00, 0x00,
3585 0x00, 0x00, 0x00, 0x41, 0x80, 0xb0, 0x01, 0x00, 0xe7, 0x8c, 0x20, 0x4c,
3586 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x85, 0xc0, 0x01, 0x00,
3587 0x86, 0x00, 0x20, 0x40, 0xe4, 0xb1, 0x01, 0x00, 0xa2, 0x00, 0x20, 0x42,
3588 0xe6, 0xb1, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3589 0x83, 0x94, 0x00, 0x50, 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3590 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3591 0x04, 0x00, 0x22, 0xf0, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3592 0x8d, 0xb0, 0x01, 0x00, 0xc6, 0x95, 0x00, 0x40, 0x87, 0x30, 0x01, 0x00,
3593 0xb0, 0x00, 0x2f, 0x5c, 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x60, 0xf0,
3594 0x80, 0xc0, 0x01, 0x00, 0xf4, 0x94, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00,
3595 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
3596 0x81, 0xb2, 0x00, 0x00, 0xe4, 0x8a, 0x22, 0x46, 0x19, 0x7c, 0x00, 0x00,
3597 0xa0, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0xf2,
3598 0x96, 0xcc, 0x01, 0x00, 0xe4, 0x8a, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
3599 0xf4, 0x94, 0x00, 0x4a, 0x81, 0x30, 0x01, 0x00, 0xc9, 0x94, 0x00, 0x46,
3600 0x95, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3601 0xe4, 0x8a, 0x22, 0x49, 0x19, 0x7c, 0x00, 0x00, 0x86, 0x00, 0x00, 0x40,
3602 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0xf2, 0x80, 0xcc, 0x01, 0x00,
3603 0xe4, 0x8a, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x4a,
3604 0x81, 0x30, 0x01, 0x00, 0xc9, 0x94, 0x00, 0x47, 0x95, 0x30, 0x01, 0x00,
3605 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2c, 0x92, 0x00, 0x40,
3606 0x81, 0x32, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
3607 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3608 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3609 0x01, 0x00, 0x62, 0xf2, 0x80, 0xc8, 0x01, 0x00, 0x0b, 0x8d, 0x90, 0x40,
3610 0x80, 0x32, 0x00, 0x00, 0xff, 0xff, 0x62, 0x40, 0x81, 0x98, 0x01, 0x00,
3611 0xa4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xe4, 0x8a, 0x22, 0x40,
3612 0xe5, 0x6d, 0x00, 0x00, 0xe4, 0x8a, 0x00, 0x41, 0xe5, 0xc1, 0x00, 0x00,
3613 0x83, 0x94, 0x00, 0x4d, 0x81, 0x30, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x40,
3614 0x81, 0xb2, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3615 0x04, 0x00, 0x22, 0xf0, 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
3616 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
3617 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3618 0x8d, 0xb0, 0x01, 0x00, 0xc6, 0x95, 0x00, 0x40, 0x87, 0x30, 0x01, 0x00,
3619 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x1b, 0x8d, 0x80, 0xf3,
3620 0x96, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0x81, 0x01, 0x00,
3621 0x00, 0x00, 0x00, 0x47, 0x19, 0x90, 0x01, 0x00, 0xe4, 0x8a, 0x00, 0x5c,
3622 0x1f, 0x90, 0x00, 0x00, 0x34, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
3623 0x01, 0x00, 0x00, 0x40, 0xf5, 0x99, 0x01, 0x00, 0x00, 0x11, 0x00, 0x40,
3624 0xe5, 0x99, 0x01, 0x00, 0x94, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3625 0x30, 0x8d, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40,
3626 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x82, 0xb0, 0x01, 0x00,
3627 0x00, 0x00, 0x63, 0x51, 0x83, 0xd0, 0x01, 0x00, 0x34, 0x00, 0x00, 0x40,
3628 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x84, 0xcc, 0x01, 0x00,
3629 0x28, 0x8d, 0x9f, 0x42, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x63, 0x42,
3630 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00,
3631 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x2a, 0x8d, 0x37, 0x5c,
3632 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00,
3633 0x2b, 0x8d, 0xa8, 0x4b, 0x19, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
3634 0x62, 0xb1, 0x01, 0x00, 0x2d, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3635 0x14, 0x87, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
3636 0x42, 0xc9, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00,
3637 0xac, 0x00, 0x2d, 0xf0, 0x30, 0xb0, 0x01, 0x00, 0x35, 0x00, 0x2d, 0xf0,
3638 0x28, 0xb0, 0x01, 0x00, 0x58, 0x00, 0x3e, 0x43, 0xe7, 0xe1, 0x01, 0x00,
3639 0x01, 0x00, 0x00, 0x18, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
3640 0xe0, 0xb1, 0x01, 0x00, 0x38, 0x00, 0x20, 0x00, 0xe0, 0xb1, 0x01, 0x00,
3641 0x3c, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x20, 0x40,
3642 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2b, 0xb0, 0x01, 0x00,
3643 0xd8, 0x94, 0x00, 0x40, 0x0d, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
3644 0x16, 0xc0, 0x01, 0x00, 0x3f, 0x8d, 0xa0, 0x14, 0x16, 0x44, 0x00, 0x00,
3645 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xa2,
3646 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf8, 0xb1, 0x01, 0x00,
3647 0xb0, 0x00, 0x2d, 0x14, 0xf8, 0xb1, 0x01, 0x00, 0x10, 0x50, 0x00, 0x40,
3648 0x87, 0x98, 0x01, 0x00, 0x48, 0x8d, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00,
3649 0x00, 0x30, 0x00, 0x43, 0x86, 0xc8, 0x01, 0x00, 0x00, 0x30, 0x00, 0x0b,
3650 0x16, 0xc8, 0x01, 0x00, 0x48, 0x8d, 0xa4, 0x40, 0x81, 0x32, 0x00, 0x00,
3651 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0x01, 0x00, 0x6e, 0x43,
3652 0x86, 0x98, 0x01, 0x00, 0x0f, 0x95, 0x00, 0x30, 0x81, 0x30, 0x01, 0x00,
3653 0x4c, 0x8d, 0xa0, 0x41, 0x17, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3654 0x17, 0xc0, 0x01, 0x00, 0x53, 0x8d, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00,
3655 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0xab,
3656 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab, 0x17, 0xc0, 0x01, 0x00,
3657 0x52, 0x8d, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3658 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x64, 0xf0, 0x82, 0xb0, 0x01, 0x00,
3659 0x90, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x60, 0x41,
3660 0x31, 0xc0, 0x01, 0x00, 0xbc, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3661 0x59, 0x8d, 0x06, 0x0c, 0x80, 0x32, 0x00, 0x00, 0xa0, 0x00, 0x20, 0xf2,
3662 0xe4, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x09, 0x46, 0x19, 0x10, 0x00, 0x00,
3663 0x9c, 0x01, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0xff, 0xff, 0x00, 0x0b,
3664 0x98, 0x88, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x50, 0x17, 0xf0, 0x01, 0x00,
3665 0x5e, 0x8d, 0x90, 0x4c, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
3666 0x17, 0xc0, 0x01, 0x00, 0x60, 0x8d, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00,
3667 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x66, 0x20,
3668 0x17, 0xa4, 0x01, 0x00, 0x68, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3669 0x5c, 0x01, 0x2e, 0xf2, 0x80, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x62, 0x40,
3670 0x7e, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x57, 0x81, 0xc0, 0x01, 0x00,
3671 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00, 0x03, 0x00, 0x00, 0x40,
3672 0xf0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf0, 0xb1, 0x01, 0x00,
3673 0x58, 0x01, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3674 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
3675 0x6a, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3676 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3677 0x6e, 0x8d, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00, 0x00, 0x50, 0x00, 0x08,
3678 0x62, 0xdd, 0x01, 0x00, 0x6f, 0x8d, 0xa8, 0x40, 0x05, 0x30, 0x00, 0x00,
3679 0x35, 0x00, 0x1d, 0x40, 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
3680 0x84, 0xc8, 0x01, 0x00, 0x75, 0x8d, 0xa0, 0x43, 0x85, 0x6c, 0x00, 0x00,
3681 0x00, 0x00, 0x63, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40,
3682 0x47, 0x99, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00,
3683 0x8b, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
3684 0xe7, 0x91, 0x01, 0x00, 0xf4, 0x94, 0x00, 0x5f, 0x81, 0x30, 0x01, 0x00,
3685 0xe4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40,
3686 0x47, 0x99, 0x01, 0x00, 0x36, 0x93, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00,
3687 0x1f, 0x8d, 0x22, 0x4a, 0x80, 0x32, 0x00, 0x00, 0xba, 0x8b, 0x00, 0x40,
3688 0x81, 0xb2, 0x00, 0x00, 0x37, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3689 0x36, 0x93, 0x00, 0xf3, 0x94, 0x30, 0x01, 0x00, 0x8a, 0x8b, 0x22, 0x4a,
3690 0x80, 0x32, 0x00, 0x00, 0xba, 0x8b, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3691 0x36, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfb,
3692 0x12, 0xb0, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3, 0x90, 0x88, 0x01, 0x00,
3693 0x04, 0x00, 0x00, 0xf3, 0x0c, 0xf4, 0x01, 0x00, 0xb4, 0x8b, 0x22, 0x06,
3694 0x90, 0x6c, 0x00, 0x00, 0x5c, 0x00, 0x3d, 0x43, 0x13, 0xe0, 0x01, 0x00,
3695 0xa8, 0x00, 0x2d, 0xf0, 0x94, 0xb0, 0x01, 0x00, 0x37, 0x00, 0x2f, 0xf0,
3696 0x24, 0xb0, 0x01, 0x00, 0x36, 0x00, 0x2a, 0x50, 0xe7, 0xd1, 0x01, 0x00,
3697 0x00, 0x00, 0x63, 0x41, 0x13, 0xc0, 0x01, 0x00, 0x8f, 0x8d, 0xa0, 0x43,
3698 0x13, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00,
3699 0x99, 0x91, 0x00, 0x10, 0x86, 0x30, 0x01, 0x00, 0xaf, 0x82, 0x00, 0x88,
3700 0x1c, 0xb0, 0x00, 0x00, 0x91, 0x8d, 0x42, 0x05, 0x48, 0x31, 0x00, 0x00,
3701 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00, 0xb4, 0x8b, 0x1a, 0x5d,
3702 0x69, 0x93, 0x00, 0x00, 0x36, 0x00, 0x2d, 0x10, 0x86, 0xb0, 0x01, 0x00,
3703 0x5c, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00, 0xa8, 0x00, 0x2d, 0xf0,
3704 0x94, 0xb0, 0x01, 0x00, 0x35, 0x00, 0x2f, 0xf0, 0x24, 0xb0, 0x01, 0x00,
3705 0x01, 0x00, 0x6b, 0xfb, 0x84, 0xc8, 0x01, 0x00, 0x9c, 0x8d, 0xa0, 0x43,
3706 0x85, 0x6c, 0x00, 0x00, 0x35, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
3707 0x00, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x01, 0x00, 0x63, 0xf3,
3708 0x12, 0xc8, 0x01, 0x00, 0x9f, 0x8d, 0xa0, 0x43, 0x13, 0x6c, 0x00, 0x00,
3709 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x40, 0x80, 0x00, 0x03,
3710 0x44, 0xc9, 0x01, 0x00, 0x9b, 0x91, 0x00, 0x4a, 0xf0, 0x31, 0x01, 0x00,
3711 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xa2, 0x8d, 0x42, 0x05,
3712 0x48, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x93, 0x93, 0x01, 0x00,
3713 0x00, 0x00, 0x1a, 0x5d, 0x69, 0x93, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40,
3714 0x47, 0x99, 0x01, 0x00, 0x11, 0x00, 0x63, 0xf3, 0x82, 0xcc, 0x01, 0x00,
3715 0x9b, 0x8c, 0x22, 0x41, 0x9e, 0x06, 0x00, 0x00, 0x35, 0x00, 0x00, 0x40,
3716 0x43, 0x99, 0x01, 0x00, 0x58, 0x00, 0x3d, 0x43, 0xe7, 0xe1, 0x01, 0x00,
3717 0x00, 0x00, 0x00, 0xf8, 0x36, 0xb0, 0x01, 0x00, 0xa5, 0x8c, 0x00, 0xf0,
3718 0x00, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
3719 0xad, 0x8d, 0x65, 0xf2, 0x12, 0x30, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42,
3720 0x13, 0xf0, 0x01, 0x00, 0xb2, 0x8d, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
3721 0xf5, 0x82, 0x75, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xac, 0x8d, 0x00, 0x40,
3722 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe7, 0x91, 0x01, 0x00,
3723 0x00, 0x00, 0x75, 0x42, 0x19, 0x90, 0x01, 0x00, 0x75, 0x00, 0x00, 0x40,
3724 0x61, 0x99, 0x01, 0x00, 0xb4, 0x8d, 0xa8, 0xb1, 0x0c, 0x30, 0x00, 0x00,
3725 0x1f, 0x94, 0x00, 0x10, 0x94, 0x30, 0x01, 0x00, 0xaf, 0x82, 0x00, 0x88,
3726 0x1c, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
3727 0xc0, 0xa8, 0x3d, 0x46, 0x0d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
3728 0x97, 0xb0, 0x01, 0x00, 0xbe, 0x8d, 0x22, 0x40, 0xe1, 0x6d, 0x00, 0x00,
3729 0x04, 0x00, 0x02, 0x41, 0x97, 0x40, 0x00, 0x00, 0xbb, 0x8d, 0x00, 0x50,
3730 0x43, 0xc1, 0x00, 0x00, 0xca, 0x8d, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00,
3731 0x00, 0x00, 0x62, 0x4b, 0x12, 0x94, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
3732 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x97, 0xc0, 0x01, 0x00,
3733 0x30, 0x00, 0x00, 0x10, 0x94, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x4a,
3734 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf1, 0xb1, 0x01, 0x00,
3735 0x5e, 0x01, 0x00, 0x4b, 0xf0, 0xc9, 0x01, 0x00, 0x5e, 0x01, 0x00, 0x05,
3736 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
3737 0x20, 0x00, 0x00, 0x4a, 0x62, 0xdd, 0x01, 0x00, 0xc8, 0x8d, 0xa8, 0x40,
3738 0x81, 0x32, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
3739 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x04, 0x00, 0x00, 0x09,
3740 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x97, 0xc0, 0x01, 0x00,
3741 0xd4, 0x00, 0x00, 0x05, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3742 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
3743 0xd0, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3744 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00,
3745 0xd4, 0x8d, 0x65, 0x40, 0x81, 0x32, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3,
3746 0x96, 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00,
3747 0x00, 0x00, 0x75, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
3748 0x62, 0xb1, 0x01, 0x00, 0xd8, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3749 0xdd, 0x8d, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
3750 0x62, 0xb1, 0x01, 0x00, 0xdb, 0x8d, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3751 0x00, 0x00, 0x00, 0x97, 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x96,
3752 0x97, 0xb0, 0x01, 0x00, 0xe3, 0x8d, 0x20, 0x09, 0x96, 0x6c, 0x00, 0x00,
3753 0xe3, 0x8d, 0x1f, 0x09, 0x96, 0x24, 0x00, 0x00, 0xf5, 0x82, 0x00, 0x88,
3754 0x1c, 0xb0, 0x00, 0x00, 0xde, 0x8d, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3755 0x83, 0x94, 0x00, 0x57, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x05,
3756 0x48, 0xb1, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3757 0xe9, 0x8d, 0x22, 0xf3, 0x80, 0x32, 0x00, 0x00, 0x83, 0x94, 0x00, 0x42,
3758 0x81, 0x30, 0x01, 0x00, 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
3759 0xf4, 0x94, 0x00, 0x52, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x42,
3760 0x19, 0x80, 0x00, 0x00, 0x83, 0x94, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
3761 0xf4, 0x94, 0x00, 0x52, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40,
3762 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
3763 0x96, 0x93, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x22, 0x40,
3764 0x95, 0x6c, 0x00, 0x00, 0xf4, 0x8d, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00,
3765 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x14, 0x87, 0x00, 0x40,
3766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
3767 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x41, 0x93, 0x00, 0x52,
3768 0x95, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
3769 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x7d, 0x95, 0x00, 0x40,
3770 0x95, 0x30, 0x01, 0x00, 0xff, 0x8d, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
3771 0x14, 0x87, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
3772 0x19, 0x90, 0x01, 0x00, 0x83, 0x94, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
3773 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x23, 0x00, 0xa6,
3774 0x16, 0xb0, 0x01, 0x00, 0x02, 0x8e, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00,
3775 0x00, 0x08, 0x00, 0x0b, 0x16, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
3776 0x2a, 0xc0, 0x01, 0x00, 0xcc, 0x94, 0x00, 0x08, 0x80, 0x30, 0x01, 0x00,
3777 0x06, 0x8e, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00, 0xed, 0x94, 0x00, 0x43,
3778 0x61, 0x31, 0x01, 0x00, 0xa7, 0x91, 0x00, 0x40, 0x8d, 0x30, 0x01, 0x00,
3779 0xd4, 0x94, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
3780 0x42, 0xc9, 0x01, 0x00, 0x0e, 0x8e, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3781 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3782 0x62, 0xdd, 0x01, 0x00, 0x0b, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3783 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x75, 0x94, 0x00, 0x5e,
3784 0x05, 0x10, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3785 0x12, 0x8e, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40,
3786 0x13, 0x30, 0x01, 0x00, 0xd4, 0x8a, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3787 0xc6, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40,
3788 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x1f, 0x90, 0x01, 0x00,
3789 0x19, 0x8e, 0x22, 0x43, 0x3d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
3790 0x19, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3d, 0x80, 0x01, 0x00,
3791 0x1a, 0x8e, 0x00, 0x42, 0x19, 0x90, 0x00, 0x00, 0x14, 0x00, 0x2d, 0x45,
3792 0x1f, 0x90, 0x01, 0x00, 0x75, 0x8e, 0x83, 0x1e, 0x80, 0x32, 0x00, 0x00,
3793 0x75, 0x8e, 0x00, 0x44, 0x19, 0x90, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x40,
3794 0x81, 0x32, 0x01, 0x00, 0x2d, 0x8e, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
3795 0x29, 0x8e, 0xa2, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
3796 0x04, 0xdc, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
3797 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00, 0x26, 0x8e, 0xa2, 0x41,
3798 0x19, 0x7c, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3799 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x41, 0x93, 0x00, 0x15,
3800 0x94, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
3801 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc6, 0x93, 0x00, 0x40,
3802 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x19, 0x90, 0x01, 0x00,
3803 0x83, 0x94, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0x14, 0x87, 0x00, 0x40,
3804 0x81, 0xb2, 0x00, 0x00, 0x30, 0x8e, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
3805 0xc6, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x31, 0x8e, 0x00, 0x40,
3806 0x81, 0xb2, 0x00, 0x00, 0x96, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3807 0x5d, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x15,
3808 0x98, 0xc8, 0x01, 0x00, 0x5d, 0x8e, 0xa0, 0x0b, 0x99, 0x6c, 0x00, 0x00,
3809 0x30, 0x00, 0x00, 0x10, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
3810 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
3811 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
3812 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x62, 0xb1, 0x01, 0x00,
3813 0x39, 0x8e, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3814 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3815 0xc0, 0x00, 0x00, 0x15, 0x98, 0xc8, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x0b,
3816 0x99, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x6a, 0x50, 0x99, 0xc0, 0x01, 0x00,
3817 0xc0, 0x00, 0x62, 0x01, 0x80, 0xcc, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
3818 0x42, 0xc9, 0x01, 0x00, 0x2d, 0x00, 0x2d, 0xf0, 0x22, 0xb0, 0x01, 0x00,
3819 0x00, 0x00, 0x00, 0x4c, 0x80, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
3820 0x23, 0x80, 0x01, 0x00, 0xd4, 0x00, 0x3f, 0x41, 0xe7, 0xe1, 0x01, 0x00,
3821 0x0b, 0x00, 0x00, 0x11, 0xe4, 0xf5, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x47,
3822 0xe7, 0xb5, 0x01, 0x00, 0x4a, 0x8e, 0x23, 0x0b, 0x81, 0x6c, 0x00, 0x00,
3823 0x00, 0x00, 0x00, 0x4f, 0xe5, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
3824 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x03, 0xb0, 0x01, 0x00,
3825 0x00, 0x00, 0x00, 0x15, 0x02, 0xd0, 0x01, 0x00, 0xcc, 0x94, 0x00, 0x00,
3826 0x2a, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
3827 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x4f, 0x8e, 0xa8, 0x40,
3828 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3829 0x99, 0x92, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x01,
3830 0x80, 0xce, 0x01, 0x00, 0x5b, 0x8e, 0x26, 0x11, 0x00, 0x30, 0x00, 0x00,
3831 0x10, 0x00, 0x00, 0x00, 0x2a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08,
3832 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0xc0, 0x01, 0x00,
3833 0xc0, 0x00, 0x00, 0x40, 0x99, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
3834 0x98, 0xd0, 0x01, 0x00, 0xcc, 0x94, 0x00, 0x4c, 0x02, 0x30, 0x01, 0x00,
3835 0xc0, 0x00, 0x00, 0x40, 0x03, 0x98, 0x01, 0x00, 0x62, 0x8e, 0x00, 0x40,
3836 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x2f, 0x08, 0x80, 0xb0, 0x01, 0x00,
3837 0xc0, 0x00, 0x00, 0x15, 0xf4, 0xc9, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x01,
3838 0xe4, 0xcd, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x03, 0x98, 0x01, 0x00,
3839 0xcc, 0x94, 0x00, 0x00, 0x2a, 0x40, 0x01, 0x00, 0x67, 0x8e, 0x22, 0x44,
3840 0x1f, 0x7c, 0x00, 0x00, 0xac, 0x00, 0x2f, 0x40, 0x13, 0xb0, 0x01, 0x00,
3841 0x00, 0x00, 0x00, 0x01, 0xe0, 0xc1, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40,
3842 0x47, 0x99, 0x01, 0x00, 0x68, 0x8e, 0x00, 0x01, 0xe0, 0xd1, 0x00, 0x00,
3843 0xa7, 0x91, 0x00, 0x40, 0x8d, 0x30, 0x01, 0x00, 0x80, 0x63, 0x00, 0xa6,
3844 0x16, 0xb0, 0x01, 0x00, 0xd4, 0x94, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00,
3845 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x70, 0x8e, 0x22, 0x40,
3846 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
3847 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x6d, 0x8e, 0xa8, 0x40,
3848 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3849 0x75, 0x94, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x73, 0x8e, 0x22, 0x09,
3850 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3851 0xcf, 0x8a, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x75, 0x8e, 0x00, 0x4a,
3852 0x1f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb0, 0x01, 0x00,
3853 0x24, 0x00, 0x2d, 0x15, 0x10, 0xc0, 0x01, 0x00, 0x28, 0x00, 0x2d, 0xf0,
3854 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
3855 0x14, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
3856 0xe0, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
3857 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x15,
3858 0x1a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x23, 0xb0, 0x01, 0x00,
3859 0x00, 0x00, 0x00, 0x01, 0x2a, 0xb0, 0x01, 0x00, 0x34, 0x94, 0x00, 0x40,
3860 0x35, 0xb0, 0x00, 0x00, 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
3861 0xb9, 0x8e, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00, 0x24, 0x00, 0x20, 0x0b,
3862 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x20, 0x13, 0xe0, 0xb1, 0x01, 0x00,
3863 0x22, 0x00, 0x20, 0x06, 0xe4, 0xb1, 0x01, 0x00, 0x8f, 0x8e, 0x22, 0x5c,
3864 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00,
3865 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x8f, 0x8e, 0x22, 0x40,
3866 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
3867 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x8b, 0x8e, 0xa8, 0x40,
3868 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3869 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x19,
3870 0x42, 0xc9, 0x01, 0x00, 0xb2, 0x8e, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3871 0xa0, 0x8e, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0xee, 0x93, 0x00, 0x40,
3872 0x81, 0x32, 0x01, 0x00, 0x41, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3873 0xad, 0x8e, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
3874 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3875 0x96, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3876 0x1c, 0xb0, 0x00, 0x00, 0x9c, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00,
3877 0xaf, 0x92, 0x00, 0x40, 0x11, 0x30, 0x01, 0x00, 0x9d, 0x8e, 0x00, 0x05,
3878 0x48, 0xb1, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3879 0x9f, 0x8e, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40,
3880 0x81, 0x32, 0x01, 0x00, 0xf9, 0x82, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
3881 0xee, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x3d, 0x92, 0x00, 0x40,
3882 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
3883 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xa3, 0x8e, 0xa8, 0x40,
3884 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3885 0xa9, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xaf, 0x92, 0x00, 0x40,
3886 0x11, 0x30, 0x01, 0x00, 0xaa, 0x8e, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3887 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xac, 0x8e, 0x22, 0x09,
3888 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3889 0xf9, 0x82, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
3890 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
3891 0xae, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
3892 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3893 0xb5, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xaf, 0x92, 0x00, 0x40,
3894 0x11, 0x30, 0x01, 0x00, 0xb6, 0x8e, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3895 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xb8, 0x8e, 0x22, 0x09,
3896 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
3897 0xd4, 0x8a, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
3898 0x42, 0xc9, 0x01, 0x00, 0xc0, 0x8e, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3899 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3900 0x62, 0xdd, 0x01, 0x00, 0xbc, 0x8e, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3901 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
3902 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
3903 0xc4, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xaf, 0x92, 0x00, 0x40,
3904 0x11, 0x30, 0x01, 0x00, 0xc5, 0x8e, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
3905 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x08, 0x00, 0x2d, 0x0a,
3906 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00,
3907 0x14, 0x00, 0x20, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0xca, 0x8e, 0x03, 0x1e,
3908 0x80, 0x32, 0x00, 0x00, 0xcb, 0x8e, 0x00, 0x41, 0x87, 0xb0, 0x00, 0x00,
3909 0x21, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0xb7, 0x93, 0x00, 0x40,
3910 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
3911 0xcf, 0x8e, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40,
3912 0x13, 0x30, 0x01, 0x00, 0xd2, 0x8e, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
3913 0xf4, 0x94, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
3914 0x19, 0x80, 0x01, 0x00, 0xcf, 0x8a, 0xa2, 0x4a, 0x1f, 0x7c, 0x00, 0x00,
3915 0xd4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x20, 0x40,
3916 0xe5, 0xb1, 0x01, 0x00, 0xd8, 0x8e, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00,
3917 0xcc, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x84, 0x95, 0x00, 0x40,
3918 0x81, 0x32, 0x01, 0x00, 0x2d, 0x95, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
3919 0xc0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xc4, 0x00, 0x2d, 0xf0,
3920 0x82, 0xb0, 0x01, 0x00, 0x61, 0x95, 0x00, 0xf0, 0x84, 0x30, 0x01, 0x00,
3921 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xd4, 0x8a, 0x22, 0x09,
3922 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
3923 0xd4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x40,
3924 0x43, 0x99, 0x01, 0x00, 0xe4, 0x8e, 0x22, 0x40, 0xe7, 0x6d, 0x00, 0x00,
3925 0x32, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xec, 0x8e, 0xa2, 0x40,
3926 0xe5, 0x6d, 0x00, 0x00, 0x83, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3927 0x24, 0x00, 0x20, 0x0b, 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x20, 0x13,
3928 0xe0, 0xb1, 0x01, 0x00, 0x22, 0x00, 0x20, 0x06, 0xe4, 0xb1, 0x01, 0x00,
3929 0x14, 0x00, 0x20, 0x0a, 0xe0, 0xb1, 0x01, 0x00, 0xd4, 0x8a, 0x22, 0x09,
3930 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
3931 0xd4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x83, 0x93, 0x00, 0x40,
3932 0x81, 0x32, 0x01, 0x00, 0x3c, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3933 0xfa, 0x8e, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b,
3934 0x99, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x15, 0x98, 0x50, 0x00, 0x00,
3935 0xfa, 0x8e, 0x20, 0x01, 0x98, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03,
3936 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x46, 0x1f, 0x90, 0x01, 0x00,
3937 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
3938 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
3939 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0xf7, 0x8e, 0xa8, 0x00,
3940 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
3941 0xac, 0x00, 0x2f, 0x00, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
3942 0xe0, 0xc1, 0x01, 0x00, 0x14, 0x00, 0x2f, 0x15, 0x10, 0xc0, 0x01, 0x00,
3943 0x00, 0x00, 0x00, 0x0a, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01,
3944 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0x19, 0x90, 0x01, 0x00,
3945 0x7c, 0x8e, 0x22, 0x09, 0x80, 0x32, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x09,
3946 0x80, 0x30, 0x01, 0x00, 0x7c, 0x8e, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
3947 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
3948 0x82, 0xb0, 0x01, 0x00, 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00,
3949 0x00, 0x00, 0x00, 0x4c, 0x43, 0xc1, 0x01, 0x00, 0xb7, 0x93, 0x00, 0xf0,
3950 0x84, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
3951 0x2c, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x40,
3952 0xe7, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x42, 0x19, 0x80, 0x00, 0x00,
3953 0xa9, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0xc9, 0x94, 0x00, 0x48,
3954 0x95, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
3955 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x0f, 0x8f, 0xa8, 0x40,
3956 0x13, 0x30, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
3957 0x15, 0x8f, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x14, 0x8f, 0x00, 0x40,
3958 0x13, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xb0, 0x01, 0x00,
3959 0x08, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x14, 0x00, 0x2d, 0xf0,
3960 0x82, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf0, 0x84, 0x30, 0x00, 0x00,
3961 0x13, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0xb7, 0x93, 0x00, 0x40,
3962 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
3963 0x2d, 0x8f, 0x00, 0x09, 0x00, 0xb0, 0x00, 0x00, 0xcf, 0x8a, 0x87, 0x42,
3964 0x19, 0x10, 0x00, 0x00, 0x8b, 0x00, 0x2f, 0x47, 0x19, 0x80, 0x01, 0x00,
3965 0xcf, 0x8a, 0x00, 0x40, 0xe7, 0x91, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x40,
3966 0x47, 0x99, 0x01, 0x00, 0x2b, 0x8f, 0x22, 0x47, 0xe7, 0x7d, 0x00, 0x00,
3967 0x1e, 0x92, 0x00, 0x40, 0xe7, 0x31, 0x01, 0x00, 0x2b, 0x8f, 0x22, 0x00,
3968 0x80, 0x32, 0x00, 0x00, 0x26, 0x8f, 0xa2, 0x40, 0x1f, 0x7c, 0x00, 0x00,
3969 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2b, 0x8f, 0x00, 0x40,
3970 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
3971 0x32, 0x00, 0x2d, 0xf2, 0x94, 0xb0, 0x01, 0x00, 0x41, 0x93, 0x00, 0xf2,
3972 0x02, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
3973 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x2c, 0x8f, 0x00, 0x40,
3974 0x01, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
3975 0x32, 0x8f, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0x31, 0x8f, 0xa2, 0x42,
3976 0x19, 0x7c, 0x00, 0x00, 0x96, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3977 0x32, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc6, 0x93, 0x00, 0x40,
3978 0x81, 0x32, 0x01, 0x00, 0xbc, 0x8f, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
3979 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x80, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
3980 0x42, 0xc9, 0x01, 0x00, 0x3a, 0x8f, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
3981 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3982 0x62, 0xdd, 0x01, 0x00, 0x37, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
3983 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xbc, 0x8f, 0x00, 0x05,
3984 0x48, 0xb1, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
3985 0x40, 0x8f, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x83, 0x94, 0x00, 0x4d,
3986 0x81, 0x30, 0x01, 0x00, 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00,
3987 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x74, 0x00, 0x00, 0x40,
3988 0x43, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00,
3989 0x00, 0x00, 0x00, 0xf0, 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
3990 0x96, 0xb0, 0x01, 0x00, 0x4e, 0x8f, 0x22, 0x42, 0x96, 0x14, 0x00, 0x00,
3991 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x64, 0x00, 0x68, 0x40,
3992 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00,
3993 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00, 0x70, 0x00, 0x00, 0x05,
3994 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
3995 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x4b, 0x8f, 0xa8, 0x40,
3996 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0x90, 0x01, 0x00,
3997 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
3998 0x62, 0xdd, 0x01, 0x00, 0x4f, 0x8f, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00,
3999 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x5e, 0x01, 0x2d, 0x05,
4000 0x48, 0xb1, 0x01, 0x00, 0x53, 0x8f, 0x65, 0xf2, 0x12, 0x30, 0x00, 0x00,
4001 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00, 0x58, 0x8f, 0x22, 0x47,
4002 0xe7, 0x7d, 0x00, 0x00, 0xf5, 0x82, 0x75, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4003 0x52, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47,
4004 0xe7, 0x91, 0x01, 0x00, 0x04, 0x00, 0x75, 0x09, 0x96, 0xe4, 0x01, 0x00,
4005 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
4006 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x97, 0xc0, 0x01, 0x00,
4007 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
4008 0x44, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00,
4009 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x60, 0x8f, 0xa8, 0x40,
4010 0xe1, 0x31, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4011 0x00, 0x99, 0x3f, 0x42, 0x13, 0xf0, 0x01, 0x00, 0x64, 0x8f, 0x65, 0x05,
4012 0x48, 0x31, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3, 0x96, 0x88, 0x01, 0x00,
4013 0x00, 0x00, 0x00, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x75, 0x40,
4014 0x81, 0xb2, 0x01, 0x00, 0x6c, 0x8f, 0x22, 0x4b, 0x80, 0x32, 0x00, 0x00,
4015 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
4016 0x62, 0xb1, 0x01, 0x00, 0x6a, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4017 0x00, 0x00, 0x00, 0x07, 0x16, 0xb0, 0x01, 0x00, 0x00, 0x62, 0x00, 0x0b,
4018 0x16, 0xdc, 0x01, 0x00, 0x1e, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4019 0x84, 0x8f, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0xcc, 0x93, 0x00, 0x5f,
4020 0x01, 0x10, 0x01, 0x00, 0x6e, 0x8f, 0x22, 0x40, 0x95, 0x6c, 0x00, 0x00,
4021 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
4022 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
4023 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4024 0x62, 0xb1, 0x01, 0x00, 0x76, 0x8f, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
4025 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4026 0x48, 0xb1, 0x01, 0x00, 0x04, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4027 0x00, 0x00, 0x00, 0xf2, 0x02, 0xb0, 0x01, 0x00, 0x41, 0x93, 0x00, 0x52,
4028 0x95, 0x30, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4029 0x6e, 0x8f, 0x22, 0x41, 0x97, 0x50, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x03,
4030 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00,
4031 0x00, 0x00, 0x00, 0x5c, 0x01, 0x80, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b,
4032 0x02, 0xb0, 0x00, 0x00, 0x6e, 0x8f, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00,
4033 0xd4, 0x94, 0x00, 0x40, 0x03, 0x30, 0x01, 0x00, 0x17, 0x80, 0x00, 0x03,
4034 0x44, 0xc9, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x0c, 0x96, 0x88, 0x01, 0x00,
4035 0x00, 0x00, 0x63, 0x4c, 0x97, 0xf0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x03,
4036 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab, 0xe1, 0xb1, 0x01, 0x00,
4037 0x75, 0x94, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0x03, 0x00, 0x00, 0x07,
4038 0x1a, 0xf4, 0x01, 0x00, 0x07, 0x00, 0x00, 0x07, 0x16, 0x88, 0x01, 0x00,
4039 0x00, 0xb5, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0x8e, 0x8f, 0x30, 0x40,
4040 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x81, 0x01, 0x00,
4041 0x00, 0xb7, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b,
4042 0xe6, 0x81, 0x01, 0x00, 0x10, 0x00, 0x10, 0x0f, 0x94, 0xf4, 0x01, 0x00,
4043 0x93, 0x04, 0x00, 0x5f, 0x95, 0x04, 0x01, 0x00, 0x22, 0x93, 0x00, 0x40,
4044 0x81, 0x32, 0x01, 0x00, 0x98, 0x8f, 0x22, 0x50, 0xfd, 0x7f, 0x00, 0x00,
4045 0x96, 0x8f, 0x46, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x41,
4046 0x31, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x05, 0x48, 0xb1, 0x01, 0x00,
4047 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4048 0x0f, 0xb0, 0x01, 0x00, 0x85, 0x92, 0x00, 0x41, 0x81, 0x30, 0x01, 0x00,
4049 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x40,
4050 0x81, 0x32, 0x01, 0x00, 0xa9, 0x8f, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4051 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
4052 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00,
4053 0xa2, 0x8f, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b,
4054 0x62, 0xb1, 0x01, 0x00, 0xa6, 0x8f, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00,
4055 0xa3, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4056 0x62, 0xb1, 0x01, 0x00, 0xa6, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4057 0x14, 0x87, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x74, 0x00, 0x22, 0x40,
4058 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
4059 0xc9, 0x94, 0x00, 0x4a, 0x95, 0x30, 0x01, 0x00, 0xa9, 0x93, 0x00, 0x5c,
4060 0x1f, 0x10, 0x01, 0x00, 0x40, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4061 0x2f, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xba, 0x8f, 0x22, 0x47,
4062 0xe7, 0x7d, 0x00, 0x00, 0x1e, 0x92, 0x00, 0x40, 0xe7, 0x31, 0x01, 0x00,
4063 0xba, 0x8f, 0x22, 0x00, 0x80, 0x32, 0x00, 0x00, 0xb5, 0x8f, 0xa2, 0x40,
4064 0x1f, 0x7c, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4065 0xba, 0x8f, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40,
4066 0x43, 0x99, 0x01, 0x00, 0x32, 0x00, 0x2d, 0xf2, 0x94, 0xb0, 0x01, 0x00,
4067 0x41, 0x93, 0x00, 0xf2, 0x02, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b,
4068 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4069 0xc9, 0x94, 0x00, 0x48, 0x95, 0x30, 0x01, 0x00, 0xa9, 0x93, 0x00, 0x5c,
4070 0x1f, 0x10, 0x01, 0x00, 0xbf, 0x8f, 0x87, 0x42, 0x19, 0x10, 0x00, 0x00,
4071 0x8b, 0x00, 0x2f, 0x47, 0x19, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4072 0xe7, 0x91, 0x01, 0x00, 0xf4, 0x94, 0x00, 0x42, 0x81, 0x30, 0x01, 0x00,
4073 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xa9, 0x93, 0x00, 0x40,
4074 0x81, 0x32, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x5c, 0x1f, 0x90, 0x00, 0x00,
4075 0xba, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00, 0x2d, 0x95, 0x00, 0x40,
4076 0x81, 0x32, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4077 0xc4, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x61, 0x95, 0x00, 0xf0,
4078 0x84, 0x30, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4079 0xf4, 0x94, 0x00, 0x45, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x22, 0x42,
4080 0x19, 0x7c, 0x00, 0x00, 0x83, 0x94, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00,
4081 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
4082 0x81, 0xb2, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4083 0xd3, 0x8f, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x83, 0x94, 0x00, 0x47,
4084 0x80, 0x30, 0x01, 0x00, 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00,
4085 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x10, 0x80, 0x00, 0x03,
4086 0x44, 0xc9, 0x01, 0x00, 0x00, 0xe1, 0x00, 0xa6, 0x84, 0xb0, 0x01, 0x00,
4087 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4088 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x07, 0x84, 0x94, 0x01, 0x00,
4089 0x75, 0x94, 0x00, 0x5e, 0x05, 0x10, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40,
4090 0x81, 0xb2, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
4091 0x99, 0x92, 0x00, 0x41, 0xe7, 0x41, 0x01, 0x00, 0xd4, 0x8a, 0x00, 0x40,
4092 0x81, 0xb2, 0x00, 0x00, 0x83, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4093 0x3c, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4094 0x2c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0xb0, 0x01, 0x00,
4095 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x1f, 0x0a,
4096 0x2c, 0x50, 0x00, 0x00, 0x07, 0x95, 0x00, 0x06, 0x04, 0x30, 0x01, 0x00,
4097 0xea, 0x8f, 0xa2, 0x48, 0x1f, 0x7c, 0x00, 0x00, 0xe8, 0x8f, 0x84, 0x48,
4098 0x1f, 0x10, 0x00, 0x00, 0xac, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
4099 0xea, 0x8f, 0x00, 0x0a, 0xe0, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a,
4100 0x02, 0xb0, 0x01, 0x00, 0xa7, 0x91, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00,
4101 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4102 0x62, 0xdd, 0x01, 0x00, 0xeb, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4103 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4104 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00,
4105 0xf8, 0x8f, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00, 0xf1, 0x93, 0x00, 0x45,
4106 0x1f, 0x00, 0x01, 0x00, 0xe3, 0x8f, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4107 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4108 0x62, 0xdd, 0x01, 0x00, 0xf4, 0x8f, 0xa8, 0x5c, 0x1f, 0x00, 0x00, 0x00,
4109 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0xe3, 0x8f, 0x00, 0x05,
4110 0x48, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
4111 0x08, 0x00, 0x2d, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4112 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
4113 0xb7, 0x93, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
4114 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4115 0xfe, 0x8f, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4116 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4117 0x04, 0x90, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40,
4118 0x13, 0x30, 0x01, 0x00, 0x08, 0x90, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
4119 0xf4, 0x94, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x08, 0x90, 0xa2, 0x47,
4120 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00,
4121 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00, 0x16, 0x90, 0x22, 0x4a,
4122 0x1f, 0x7c, 0x00, 0x00, 0x0e, 0x90, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
4123 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4124 0xe7, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4125 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0x12, 0x90, 0x22, 0x42,
4126 0x19, 0x7c, 0x00, 0x00, 0xc6, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4127 0x13, 0x90, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x96, 0x93, 0x00, 0x40,
4128 0x81, 0x32, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00,
4129 0x32, 0x00, 0x2a, 0x15, 0xe4, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x16,
4130 0xe4, 0xb1, 0x00, 0x00, 0x28, 0x90, 0x22, 0x16, 0x02, 0x30, 0x00, 0x00,
4131 0x00, 0x00, 0x00, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0x7d, 0x95, 0x00, 0x40,
4132 0x95, 0x30, 0x01, 0x00, 0x29, 0x90, 0x22, 0x40, 0x11, 0x6c, 0x00, 0x00,
4133 0xac, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2b, 0x01,
4134 0xe0, 0xc1, 0x01, 0x00, 0x00, 0x2b, 0x00, 0xa6, 0x16, 0xb0, 0x01, 0x00,
4135 0x00, 0x00, 0x00, 0x01, 0xe0, 0xd1, 0x01, 0x00, 0xcc, 0x94, 0x00, 0x08,
4136 0x80, 0x30, 0x01, 0x00, 0x21, 0x90, 0x00, 0x5e, 0x17, 0x90, 0x00, 0x00,
4137 0xed, 0x94, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
4138 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4139 0x22, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4140 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4141 0xd4, 0x94, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0x75, 0x94, 0x00, 0x5e,
4142 0x05, 0x10, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4143 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xd4, 0x8a, 0x00, 0x40,
4144 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
4145 0x04, 0x00, 0x1f, 0x15, 0x1a, 0x50, 0x00, 0x00, 0x36, 0x90, 0x20, 0x16,
4146 0x1a, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
4147 0x00, 0x00, 0x22, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4148 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xb1, 0x01, 0x00,
4149 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
4150 0x62, 0xdd, 0x01, 0x00, 0x33, 0x90, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
4151 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4152 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0xc0, 0x01, 0x00,
4153 0x00, 0x00, 0x00, 0x0a, 0x2a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
4154 0x2c, 0xd0, 0x01, 0x00, 0xac, 0x00, 0x2f, 0x40, 0x23, 0xb0, 0x01, 0x00,
4155 0x3d, 0x90, 0x84, 0x45, 0x1f, 0x10, 0x00, 0x00, 0x3e, 0x90, 0x00, 0x0a,
4156 0xe0, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0xb0, 0x01, 0x00,
4157 0x34, 0x94, 0x00, 0x40, 0x35, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
4158 0x42, 0xc9, 0x01, 0x00, 0x46, 0x90, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4159 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4160 0x62, 0xdd, 0x01, 0x00, 0x42, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4161 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4162 0x48, 0xb1, 0x01, 0x00, 0x55, 0x90, 0xa2, 0x02, 0x1a, 0x50, 0x00, 0x00,
4163 0x56, 0x90, 0x22, 0x40, 0x2d, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
4164 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4165 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08,
4166 0xe0, 0x8d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00,
4167 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x4d, 0x90, 0xa8, 0x40,
4168 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4169 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03,
4170 0x42, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0, 0x10, 0xc8, 0x01, 0x00,
4171 0xf0, 0x07, 0x00, 0x40, 0x1b, 0x98, 0x01, 0x00, 0x56, 0x90, 0x00, 0x5c,
4172 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0xc0, 0x01, 0x00,
4173 0xaf, 0x92, 0x00, 0x40, 0x1f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05,
4174 0x48, 0xb1, 0x01, 0x00, 0x5a, 0x90, 0x23, 0x0d, 0x2c, 0x6c, 0x00, 0x00,
4175 0x00, 0x00, 0x00, 0x40, 0x1f, 0x90, 0x01, 0x00, 0x62, 0x90, 0x22, 0x46,
4176 0x1f, 0x7c, 0x00, 0x00, 0x70, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4177 0x62, 0x90, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
4178 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4179 0x5e, 0x90, 0xa8, 0x46, 0x1f, 0x00, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4180 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4181 0x08, 0x00, 0x2d, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4182 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
4183 0xb7, 0x93, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
4184 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4185 0x67, 0x90, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4186 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4187 0x6d, 0x90, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40,
4188 0x13, 0x30, 0x01, 0x00, 0x71, 0x90, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00,
4189 0xf4, 0x94, 0x00, 0x4f, 0x81, 0x30, 0x01, 0x00, 0x71, 0x90, 0xa2, 0x47,
4190 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00,
4191 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00, 0x86, 0x90, 0x22, 0x4a,
4192 0x1f, 0x7c, 0x00, 0x00, 0x77, 0x90, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
4193 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4194 0xe7, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4195 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0x82, 0x90, 0x22, 0x42,
4196 0x19, 0x7c, 0x00, 0x00, 0x7b, 0x90, 0xa2, 0xf3, 0x84, 0x30, 0x00, 0x00,
4197 0x00, 0x00, 0x00, 0xa5, 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
4198 0x85, 0xd0, 0x01, 0x00, 0xd4, 0x00, 0x3e, 0x41, 0x85, 0xe0, 0x01, 0x00,
4199 0x7f, 0x90, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
4200 0x11, 0x90, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x08, 0xe4, 0xf5, 0x01, 0x00,
4201 0xc6, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x83, 0x90, 0x00, 0x40,
4202 0x81, 0xb2, 0x00, 0x00, 0x96, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4203 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00, 0x32, 0x00, 0x2a, 0x15,
4204 0xe4, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x16, 0xe4, 0xb1, 0x00, 0x00,
4205 0x89, 0x90, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40,
4206 0x81, 0x32, 0x01, 0x00, 0xd6, 0x90, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4207 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0x96, 0x90, 0x22, 0x47,
4208 0x1f, 0x7c, 0x00, 0x00, 0x93, 0x90, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4209 0x8e, 0x90, 0xa2, 0xf3, 0x84, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5,
4210 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x85, 0xd0, 0x01, 0x00,
4211 0xd4, 0x00, 0x3e, 0x41, 0x85, 0xe0, 0x01, 0x00, 0x92, 0x90, 0x22, 0x40,
4212 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x11, 0x90, 0x01, 0x00,
4213 0x0b, 0x00, 0x00, 0x08, 0xe4, 0xf5, 0x01, 0x00, 0x58, 0x01, 0x2d, 0x00,
4214 0x2a, 0xd0, 0x01, 0x00, 0x60, 0x01, 0x2d, 0xf0, 0x10, 0xb0, 0x01, 0x00,
4215 0x2d, 0x8e, 0x00, 0xf0, 0x2c, 0xb0, 0x00, 0x00, 0x7d, 0x95, 0x00, 0x41,
4216 0x95, 0x30, 0x01, 0x00, 0x9d, 0x90, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4217 0x00, 0x00, 0x00, 0x41, 0x97, 0xb0, 0x01, 0x00, 0x9b, 0x90, 0x23, 0x0d,
4218 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00,
4219 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0xd6, 0x90, 0x00, 0x05,
4220 0x48, 0xb1, 0x00, 0x00, 0xac, 0x00, 0x2f, 0x01, 0x14, 0xb0, 0x01, 0x00,
4221 0xb0, 0x00, 0x2b, 0x01, 0xe0, 0xc1, 0x01, 0x00, 0x00, 0x2b, 0x00, 0xa6,
4222 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0xd1, 0x01, 0x00,
4223 0xad, 0x90, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10,
4224 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4225 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4226 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
4227 0xa6, 0x90, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4228 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4229 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0xf0,
4230 0x22, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x23, 0x80, 0x01, 0x00,
4231 0x00, 0x00, 0x00, 0x01, 0x84, 0xb0, 0x01, 0x00, 0xb0, 0x90, 0x23, 0x0d,
4232 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x02, 0xb0, 0x01, 0x00,
4233 0x00, 0x00, 0x00, 0x08, 0x80, 0xb0, 0x01, 0x00, 0xb5, 0x90, 0x22, 0x40,
4234 0x1b, 0x6c, 0x00, 0x00, 0xcc, 0x94, 0x00, 0x01, 0x84, 0x50, 0x01, 0x00,
4235 0xbd, 0x90, 0x22, 0x40, 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
4236 0x80, 0xc0, 0x01, 0x00, 0x10, 0x80, 0x00, 0x10, 0x46, 0xc9, 0x01, 0x00,
4237 0x00, 0x00, 0x00, 0x4f, 0x43, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4238 0xf0, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x40, 0xf0, 0xc9, 0x01, 0x00,
4239 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
4240 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa1, 0x62, 0xdd, 0x01, 0x00,
4241 0xbb, 0x90, 0xa8, 0x11, 0xe0, 0x31, 0x00, 0x00, 0xcc, 0x90, 0x00, 0x5e,
4242 0x17, 0x90, 0x00, 0x00, 0xc0, 0x90, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00,
4243 0x00, 0x00, 0x00, 0x0d, 0x02, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4244 0x84, 0xd0, 0x01, 0x00, 0xc5, 0x90, 0x22, 0x40, 0x1b, 0x6c, 0x00, 0x00,
4245 0xed, 0x94, 0x00, 0x43, 0x61, 0x31, 0x01, 0x00, 0xcc, 0x90, 0x22, 0x40,
4246 0x85, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0xc0, 0x01, 0x00,
4247 0x10, 0x80, 0x00, 0x10, 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f,
4248 0x43, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xf0, 0xb1, 0x01, 0x00,
4249 0x00, 0x00, 0x00, 0x09, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18,
4250 0xf0, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa1, 0x62, 0xdd, 0x01, 0x00,
4251 0xca, 0x90, 0xa8, 0x11, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43,
4252 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4253 0xcd, 0x90, 0xa8, 0x0a, 0x02, 0x30, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4254 0x1c, 0xb0, 0x00, 0x00, 0x99, 0x92, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00,
4255 0xd4, 0x90, 0x23, 0x0d, 0x02, 0x6c, 0x00, 0x00, 0xff, 0x07, 0x00, 0x11,
4256 0x00, 0x8c, 0x01, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4257 0xd4, 0x94, 0x00, 0x07, 0x16, 0x14, 0x01, 0x00, 0x75, 0x94, 0x00, 0x5e,
4258 0x05, 0x10, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4259 0xd4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03,
4260 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0xb0, 0x01, 0x00,
4261 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4262 0x8e, 0xb0, 0x01, 0x00, 0x80, 0x93, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
4263 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0xb7, 0x93, 0x00, 0x41,
4264 0x87, 0x30, 0x01, 0x00, 0x3c, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4265 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0xe7, 0x90, 0x22, 0x40,
4266 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4267 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0xe3, 0x90, 0xa8, 0x40,
4268 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4269 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0xe9, 0x90, 0x22, 0x09,
4270 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
4271 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
4272 0x1a, 0xd0, 0x01, 0x00, 0xef, 0x90, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4273 0x7d, 0x95, 0x00, 0x40, 0x95, 0x30, 0x01, 0x00, 0xf7, 0x90, 0x22, 0x08,
4274 0x80, 0x32, 0x00, 0x00, 0x1a, 0x90, 0x00, 0x00, 0x2a, 0xc0, 0x00, 0x00,
4275 0x7d, 0x95, 0x00, 0x41, 0x95, 0x30, 0x01, 0x00, 0xf2, 0x90, 0x22, 0x08,
4276 0x80, 0x32, 0x00, 0x00, 0x9d, 0x90, 0x00, 0x00, 0x2a, 0xc0, 0x00, 0x00,
4277 0x00, 0x00, 0x00, 0x41, 0x97, 0xb0, 0x01, 0x00, 0xf5, 0x90, 0x23, 0x0d,
4278 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x97, 0xc0, 0x01, 0x00,
4279 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4280 0x48, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00,
4281 0x83, 0x94, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40,
4282 0x81, 0xb2, 0x00, 0x00, 0xfb, 0x90, 0x00, 0x4a, 0x1f, 0x90, 0x00, 0x00,
4283 0xc1, 0x92, 0x00, 0x00, 0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x15,
4284 0x10, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
4285 0x07, 0x95, 0x00, 0x06, 0x04, 0x30, 0x01, 0x00, 0x04, 0x91, 0xa2, 0x44,
4286 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x1b, 0xb0, 0x01, 0x00,
4287 0x00, 0x00, 0x00, 0x0a, 0x2c, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a,
4288 0x02, 0xb0, 0x01, 0x00, 0xa7, 0x91, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00,
4289 0x00, 0x80, 0x00, 0x19, 0x42, 0xc9, 0x01, 0x00, 0x0b, 0x91, 0x22, 0x40,
4290 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4291 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x07, 0x91, 0xa8, 0x40,
4292 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4293 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02,
4294 0x10, 0xc0, 0x01, 0x00, 0x14, 0x91, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00,
4295 0xf1, 0x93, 0x00, 0x45, 0x1f, 0x00, 0x01, 0x00, 0xfd, 0x90, 0x22, 0x5c,
4296 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
4297 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x10, 0x91, 0xa8, 0x5c,
4298 0x1f, 0x00, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4299 0xfd, 0x90, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x08, 0x00, 0x2d, 0x40,
4300 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, 0xb0, 0x01, 0x00,
4301 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00, 0xb7, 0x93, 0x00, 0x41,
4302 0x87, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00,
4303 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x19, 0x91, 0xa8, 0x40,
4304 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4305 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x1f, 0x91, 0x22, 0x09,
4306 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40, 0x13, 0x30, 0x01, 0x00,
4307 0x22, 0x91, 0x22, 0x44, 0x19, 0x7c, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x4f,
4308 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x80, 0x01, 0x00,
4309 0xff, 0x07, 0x00, 0x08, 0x00, 0x8c, 0x01, 0x00, 0x30, 0x91, 0x22, 0x4a,
4310 0x1f, 0x7c, 0x00, 0x00, 0x28, 0x91, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
4311 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4312 0xe7, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4313 0x2d, 0x00, 0x2d, 0x08, 0x2a, 0xb0, 0x01, 0x00, 0x2c, 0x91, 0x22, 0x42,
4314 0x19, 0x7c, 0x00, 0x00, 0xc6, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4315 0x2d, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x96, 0x93, 0x00, 0x40,
4316 0x81, 0x32, 0x01, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2a, 0xd0, 0x01, 0x00,
4317 0x32, 0x00, 0x2a, 0x15, 0xe4, 0xb1, 0x01, 0x00, 0xcf, 0x8a, 0x00, 0x16,
4318 0xe4, 0xb1, 0x00, 0x00, 0x17, 0x90, 0xa2, 0x16, 0x02, 0x30, 0x00, 0x00,
4319 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2f, 0x00, 0x20, 0x40,
4320 0xe7, 0xb1, 0x01, 0x00, 0xd4, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4321 0xc1, 0x92, 0x00, 0x4a, 0x1f, 0x10, 0x01, 0x00, 0x2b, 0x90, 0x00, 0x10,
4322 0x32, 0xb0, 0x00, 0x00, 0x8a, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4323 0x3a, 0x91, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40,
4324 0x81, 0x32, 0x01, 0x00, 0x3d, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4325 0x41, 0x93, 0x00, 0x15, 0x94, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b,
4326 0x02, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4327 0x3f, 0x91, 0x22, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x83, 0x94, 0x00, 0x3a,
4328 0x81, 0x30, 0x01, 0x00, 0xf4, 0x94, 0x00, 0x45, 0x81, 0x30, 0x01, 0x00,
4329 0xcf, 0x8a, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xec, 0x8e, 0x00, 0x45,
4330 0x1f, 0x90, 0x00, 0x00, 0x83, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4331 0x3c, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2b, 0x90, 0x00, 0x01,
4332 0x2c, 0xb0, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4333 0x51, 0x91, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
4334 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00,
4335 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x01, 0x00, 0x4a, 0x91, 0x37, 0x5c,
4336 0x61, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00,
4337 0x4e, 0x91, 0x28, 0x40, 0x81, 0x32, 0x00, 0x00, 0x4b, 0x91, 0x00, 0x40,
4338 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00,
4339 0x4e, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x14, 0x87, 0x17, 0x40,
4340 0x81, 0xb2, 0x00, 0x00, 0x58, 0x01, 0x20, 0x08, 0xe0, 0xb1, 0x01, 0x00,
4341 0x60, 0x01, 0x20, 0x16, 0xe0, 0xb1, 0x01, 0x00, 0x83, 0x93, 0x00, 0x47,
4342 0x1f, 0x10, 0x01, 0x00, 0x3c, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4343 0x2b, 0x90, 0x00, 0x01, 0x2c, 0xb0, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x47,
4344 0x1f, 0x10, 0x01, 0x00, 0x63, 0x91, 0xa2, 0x08, 0x80, 0x32, 0x00, 0x00,
4345 0x5f, 0x91, 0xa2, 0x42, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02,
4346 0x04, 0xdc, 0x01, 0x00, 0xa0, 0x98, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00,
4347 0x30, 0x05, 0x00, 0x41, 0x89, 0x30, 0x01, 0x00, 0x41, 0x93, 0x00, 0x15,
4348 0x94, 0x30, 0x01, 0x00, 0x48, 0x93, 0x00, 0x4b, 0x02, 0xb0, 0x00, 0x00,
4349 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xc6, 0x93, 0x00, 0x40,
4350 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x19, 0x90, 0x01, 0x00,
4351 0x83, 0x94, 0x00, 0x3a, 0x81, 0x30, 0x01, 0x00, 0x14, 0x87, 0x00, 0x40,
4352 0x81, 0xb2, 0x00, 0x00, 0x58, 0x01, 0x20, 0x08, 0xe0, 0xb1, 0x01, 0x00,
4353 0x60, 0x01, 0x20, 0x16, 0xe0, 0xb1, 0x01, 0x00, 0xc1, 0x92, 0x00, 0x10,
4354 0x32, 0x30, 0x01, 0x00, 0x2b, 0x90, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00,
4355 0x8c, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x73, 0x91, 0xa2, 0x08,
4356 0x80, 0x32, 0x00, 0x00, 0x00, 0x82, 0x00, 0x02, 0x04, 0xdc, 0x01, 0x00,
4357 0x00, 0x00, 0x00, 0x45, 0x03, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4358 0x00, 0xc0, 0x01, 0x00, 0x6c, 0x91, 0x37, 0x5c, 0x61, 0x31, 0x00, 0x00,
4359 0x00, 0x00, 0x00, 0x1b, 0x62, 0xb1, 0x01, 0x00, 0x70, 0x91, 0x28, 0x40,
4360 0x81, 0x32, 0x00, 0x00, 0x6d, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4361 0x00, 0x00, 0x00, 0x00, 0x62, 0xb1, 0x01, 0x00, 0x70, 0x91, 0xa8, 0x40,
4362 0x81, 0x32, 0x00, 0x00, 0x14, 0x87, 0x17, 0x40, 0x81, 0xb2, 0x00, 0x00,
4363 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4364 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00,
4365 0x00, 0x00, 0x00, 0xf0, 0x8e, 0xb0, 0x01, 0x00, 0x80, 0x93, 0x00, 0x40,
4366 0x13, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00,
4367 0xb7, 0x93, 0x00, 0x41, 0x87, 0x30, 0x01, 0x00, 0x3c, 0x93, 0x00, 0x40,
4368 0x81, 0x32, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00,
4369 0x82, 0x91, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
4370 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4371 0x7e, 0x91, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88,
4372 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4373 0x2d, 0x8e, 0x22, 0x09, 0x80, 0x30, 0x00, 0x00, 0xf4, 0x94, 0x00, 0x40,
4374 0x13, 0x30, 0x01, 0x00, 0x2d, 0x8e, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4375 0x14, 0x00, 0x2d, 0x45, 0x1f, 0x90, 0x01, 0x00, 0x75, 0x8e, 0x00, 0x44,
4376 0x19, 0x90, 0x00, 0x00, 0x8a, 0x91, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4377 0x00, 0x00, 0x00, 0x4a, 0x1f, 0x90, 0x01, 0x00, 0xdd, 0x8f, 0x00, 0x40,
4378 0x81, 0xb2, 0x00, 0x00, 0x83, 0x93, 0x00, 0x4a, 0x1f, 0x10, 0x01, 0x00,
4379 0x3c, 0x93, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x2b, 0x90, 0x00, 0x01,
4380 0x2c, 0xb0, 0x00, 0x00, 0xc1, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4381 0x2b, 0x90, 0x00, 0x10, 0x32, 0xb0, 0x00, 0x00, 0xec, 0x8e, 0x00, 0x45,
4382 0x1f, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x37, 0xc3, 0x01, 0x00,
4383 0x00, 0x00, 0x00, 0x41, 0x33, 0xc3, 0x01, 0x00, 0x36, 0x00, 0x00, 0x01,
4384 0x02, 0xcc, 0x01, 0x00, 0x00, 0x00, 0xd2, 0x40, 0x81, 0xb2, 0x00, 0x00,
4385 0x96, 0x91, 0x85, 0x17, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x48,
4386 0x03, 0xd0, 0x00, 0x00, 0x98, 0x91, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00,
4387 0x00, 0x00, 0x9f, 0x4c, 0x03, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
4388 0x34, 0xc3, 0x01, 0x00, 0x40, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
4389 0x00, 0x00, 0x00, 0x4a, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4390 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x12, 0xf0, 0xb1, 0x01, 0x00,
4391 0x9d, 0x92, 0x00, 0x41, 0xe1, 0x31, 0x01, 0x00, 0x00, 0x80, 0x00, 0x43,
4392 0x44, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
4393 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
4394 0xf0, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x03, 0xe0, 0xc9, 0x01, 0x00,
4395 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
4396 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
4397 0xa4, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xba, 0x00, 0x20, 0x40,
4398 0xe5, 0xb1, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0x01, 0x8c, 0xd0, 0x01, 0x00,
4399 0x00, 0x00, 0x00, 0x46, 0xe0, 0xc1, 0x01, 0x00, 0xac, 0x00, 0x2f, 0x40,
4400 0x13, 0xb0, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0x01, 0xe0, 0xc1, 0x01, 0x00,
4401 0xae, 0x91, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00, 0x84, 0x95, 0x00, 0x40,
4402 0x81, 0x32, 0x01, 0x00, 0xb0, 0x91, 0x22, 0x47, 0x19, 0x7c, 0x00, 0x00,
4403 0x00, 0x00, 0x00, 0x5f, 0x13, 0x90, 0x01, 0x00, 0x2d, 0x95, 0x00, 0x47,
4404 0x19, 0x10, 0x01, 0x00, 0xc0, 0x00, 0x2d, 0x44, 0x1f, 0x90, 0x01, 0x00,
4405 0xc4, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x61, 0x95, 0x00, 0xf0,
4406 0x84, 0xb0, 0x00, 0x00, 0x90, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4407 0xc5, 0x91, 0xa2, 0x4b, 0x1f, 0x7c, 0x00, 0x00, 0x18, 0x92, 0xa2, 0x4c,
4408 0x1f, 0x7c, 0x00, 0x00, 0xc5, 0x91, 0x1f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
4409 0xc8, 0x91, 0xa2, 0x01, 0x80, 0x32, 0x00, 0x00, 0xa8, 0x00, 0x2d, 0x46,
4410 0x8f, 0xb0, 0x01, 0x00, 0xbe, 0x91, 0x1f, 0x1c, 0xe0, 0x6d, 0x00, 0x00,
4411 0xb4, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0xc0, 0x91, 0x22, 0xf0,
4412 0x3a, 0x6c, 0x00, 0x00, 0x15, 0x92, 0x1f, 0xf0, 0x3a, 0x6c, 0x00, 0x00,
4413 0x00, 0x00, 0xa2, 0x40, 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4f,
4414 0x8f, 0xb0, 0x01, 0x00, 0x8a, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4415 0x16, 0x92, 0x20, 0x42, 0xe7, 0x6d, 0x00, 0x00, 0xc4, 0x91, 0x22, 0x40,
4416 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x59, 0x8f, 0xb0, 0x01, 0x00,
4417 0x00, 0x00, 0x80, 0x58, 0x8f, 0xb0, 0x01, 0x00, 0xc7, 0x91, 0x22, 0x40,
4418 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5c, 0x8f, 0xb0, 0x01, 0x00,
4419 0x00, 0x00, 0x80, 0x5b, 0x8f, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x00, 0x40,
4420 0x43, 0x99, 0x01, 0x00, 0xb0, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
4421 0xcc, 0x91, 0xa2, 0x42, 0x24, 0x6c, 0x00, 0x00, 0xd5, 0x91, 0x23, 0xf0,
4422 0x02, 0x6c, 0x00, 0x00, 0xd2, 0x91, 0xa2, 0xf0, 0x80, 0x32, 0x00, 0x00,
4423 0x17, 0x92, 0xa2, 0x42, 0x24, 0x6c, 0x00, 0x00, 0x17, 0x92, 0xa2, 0x41,
4424 0x03, 0x6c, 0x00, 0x00, 0xd1, 0x91, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
4425 0x00, 0x00, 0x80, 0x51, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x52,
4426 0x8f, 0xb0, 0x01, 0x00, 0x17, 0x92, 0x1f, 0x12, 0x84, 0x50, 0x00, 0x00,
4427 0x17, 0x92, 0xa0, 0x01, 0x84, 0x6c, 0x00, 0x00, 0xc5, 0x91, 0x00, 0x40,
4428 0x81, 0xb2, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4429 0x00, 0x92, 0xa2, 0x46, 0xe7, 0x7d, 0x00, 0x00, 0x14, 0x00, 0x00, 0x40,
4430 0x43, 0x99, 0x01, 0x00, 0xf2, 0x91, 0x22, 0xf0, 0x14, 0x30, 0x00, 0x00,
4431 0xde, 0x91, 0x20, 0x0a, 0x02, 0x6c, 0x00, 0x00, 0xef, 0x91, 0x03, 0x1e,
4432 0x80, 0x32, 0x00, 0x00, 0xdd, 0x91, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00,
4433 0x00, 0x00, 0x80, 0x44, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x49,
4434 0x8f, 0xb0, 0x01, 0x00, 0xe3, 0x91, 0x22, 0x0a, 0x02, 0x6c, 0x00, 0x00,
4435 0xe6, 0x91, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xe2, 0x91, 0xa2, 0x40,
4436 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x55, 0x8f, 0xb0, 0x01, 0x00,
4437 0x00, 0x00, 0x80, 0x56, 0x8f, 0xb0, 0x01, 0x00, 0xe5, 0x91, 0xa2, 0x40,
4438 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43, 0x8f, 0xb0, 0x01, 0x00,
4439 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
4440 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xd0, 0x01, 0x00,
4441 0xec, 0x91, 0x20, 0x91, 0x83, 0x6c, 0x00, 0x00, 0xeb, 0x91, 0xa2, 0x40,
4442 0x80, 0x32, 0x00, 0x00, 0x26, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4443 0x27, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0xee, 0x91, 0xa2, 0x40,
4444 0x80, 0x32, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4445 0x20, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0xf1, 0x91, 0xa2, 0x40,
4446 0x80, 0x32, 0x00, 0x00, 0x22, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4447 0x23, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00, 0x88, 0x00, 0x2d, 0x44,
4448 0x8f, 0xb0, 0x01, 0x00, 0xfb, 0x91, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4449 0xf8, 0x91, 0xa2, 0x43, 0x3d, 0x7c, 0x00, 0x00, 0xf8, 0x91, 0xa2, 0xf2,
4450 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x80, 0xb2, 0x00, 0x00,
4451 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00, 0xfa, 0x91, 0xa2, 0x40,
4452 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43, 0x8f, 0xb0, 0x01, 0x00,
4453 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00, 0xf8, 0x91, 0xa0, 0x91,
4454 0x03, 0x6c, 0x00, 0x00, 0xf6, 0x91, 0x22, 0x43, 0x3d, 0x7c, 0x00, 0x00,
4455 0xff, 0x91, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x28, 0x00, 0x80, 0x40,
4456 0x8f, 0x98, 0x01, 0x00, 0x29, 0x00, 0x80, 0x40, 0x8f, 0x98, 0x01, 0x00,
4457 0x14, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x09, 0x92, 0xa2, 0xf0,
4458 0x14, 0x30, 0x00, 0x00, 0x88, 0x00, 0x2d, 0x44, 0x8f, 0xb0, 0x01, 0x00,
4459 0x06, 0x92, 0xa2, 0xf2, 0x02, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40,
4460 0x80, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00,
4461 0xf8, 0x91, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xf6, 0x91, 0x20, 0x91,
4462 0x03, 0x6c, 0x00, 0x00, 0xf8, 0x91, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4463 0x0d, 0x92, 0x20, 0x0a, 0x02, 0x6c, 0x00, 0x00, 0x0c, 0x92, 0xa2, 0x40,
4464 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x44, 0x8f, 0xb0, 0x01, 0x00,
4465 0x00, 0x00, 0x80, 0x49, 0x8f, 0xb0, 0x01, 0x00, 0x12, 0x92, 0x22, 0x0a,
4466 0x02, 0x6c, 0x00, 0x00, 0xe6, 0x91, 0xa2, 0x41, 0x19, 0x7c, 0x00, 0x00,
4467 0x11, 0x92, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x55,
4468 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x56, 0x8f, 0xb0, 0x01, 0x00,
4469 0x14, 0x92, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43,
4470 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x48, 0x8f, 0xb0, 0x01, 0x00,
4471 0x1a, 0x92, 0x00, 0x43, 0x95, 0xb0, 0x00, 0x00, 0x1a, 0x92, 0x00, 0x41,
4472 0x95, 0xb0, 0x00, 0x00, 0x1a, 0x92, 0x00, 0x42, 0x95, 0xb0, 0x00, 0x00,
4473 0x1a, 0x92, 0x00, 0x44, 0x95, 0xb0, 0x00, 0x00, 0x1a, 0x92, 0x00, 0x4c,
4474 0x95, 0xb0, 0x00, 0x00, 0xc9, 0x94, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4475 0x1d, 0x92, 0xa2, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4b,
4476 0x8f, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4c, 0x8f, 0xb0, 0x01, 0x00,
4477 0x2d, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3,
4478 0x84, 0xb0, 0x01, 0x00, 0x22, 0x92, 0xa2, 0xf3, 0x96, 0x30, 0x00, 0x00,
4479 0x00, 0x00, 0x80, 0x40, 0x01, 0xb0, 0x01, 0x00, 0x2d, 0x00, 0x2a, 0x41,
4480 0xe7, 0xd1, 0x01, 0x00, 0xd4, 0x00, 0x3d, 0x41, 0x85, 0xe0, 0x01, 0x00,
4481 0x0b, 0x00, 0x00, 0xf2, 0x00, 0xe4, 0x01, 0x00, 0x28, 0x92, 0x22, 0x5a,
4482 0x01, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x90, 0x01, 0x00,
4483 0x29, 0x92, 0x00, 0x5a, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4484 0x1f, 0x80, 0x01, 0x00, 0x00, 0x00, 0x63, 0x41, 0x85, 0xc0, 0x01, 0x00,
4485 0x00, 0x00, 0xa0, 0xa5, 0x85, 0x6c, 0x01, 0x00, 0x00, 0x00, 0xe3, 0x40,
4486 0x85, 0xb0, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4487 0x12, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0xc6, 0x95, 0x00, 0xf0,
4488 0x8c, 0xb0, 0x00, 0x00, 0x36, 0x92, 0x22, 0x40, 0x0f, 0x6c, 0x00, 0x00,
4489 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x33, 0x92, 0xa2, 0x4b,
4490 0x19, 0x7c, 0x00, 0x00, 0x34, 0x92, 0x22, 0xf0, 0x18, 0x6c, 0x00, 0x00,
4491 0x00, 0x00, 0x60, 0x4b, 0x19, 0x90, 0x01, 0x00, 0xff, 0x92, 0x00, 0x07,
4492 0x10, 0x30, 0x01, 0x00, 0xf9, 0x82, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
4493 0x38, 0x92, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x85, 0x92, 0x00, 0x40,
4494 0x81, 0x30, 0x01, 0x00, 0xf9, 0x82, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00,
4495 0x00, 0x00, 0x2f, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b,
4496 0x19, 0x90, 0x01, 0x00, 0xff, 0x92, 0x00, 0x07, 0x10, 0x30, 0x01, 0x00,
4497 0xf9, 0x82, 0x00, 0x40, 0x05, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x05,
4498 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b, 0x19, 0x90, 0x01, 0x00,
4499 0xff, 0x92, 0x00, 0x07, 0x10, 0x30, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
4500 0x05, 0xb0, 0x01, 0x00, 0x41, 0x92, 0x33, 0x40, 0x81, 0x32, 0x00, 0x00,
4501 0x44, 0x92, 0xa1, 0xad, 0x95, 0x20, 0x00, 0x00, 0x52, 0x92, 0x13, 0x40,
4502 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4a, 0x5a, 0x83, 0x01, 0x00,
4503 0x30, 0x00, 0x39, 0x45, 0x95, 0xe0, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x0f,
4504 0x5e, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x5f, 0x90, 0x01, 0x00,
4505 0x00, 0x00, 0x00, 0x40, 0x45, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04,
4506 0x48, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x4a, 0xb0, 0x01, 0x00,
4507 0x00, 0x00, 0x00, 0x0c, 0x58, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07,
4508 0x4e, 0xb0, 0x01, 0x00, 0xa2, 0x84, 0x00, 0x40, 0x5d, 0x98, 0x01, 0x00,
4509 0x00, 0x00, 0x00, 0x58, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
4510 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x41, 0x97, 0xb0, 0x00, 0x00,
4511 0x4f, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
4512 0x97, 0xb0, 0x01, 0x00, 0x53, 0x92, 0x60, 0x07, 0x96, 0x30, 0x00, 0x00,
4513 0xff, 0xff, 0x00, 0x4b, 0x84, 0x89, 0x01, 0x00, 0x00, 0x00, 0x70, 0xc2,
4514 0x24, 0xb0, 0x01, 0x00, 0x5d, 0x92, 0xa2, 0x45, 0x25, 0x7c, 0x00, 0x00,
4515 0x57, 0x92, 0x31, 0x20, 0x85, 0x30, 0x00, 0x00, 0x5e, 0x92, 0x22, 0x12,
4516 0x48, 0x7f, 0x00, 0x00, 0x58, 0x04, 0x11, 0x12, 0x48, 0x03, 0x01, 0x00,
4517 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
4518 0x1e, 0x94, 0x01, 0x00, 0x00, 0x00, 0x80, 0x5a, 0x1f, 0x90, 0x01, 0x00,
4519 0x5d, 0x92, 0x31, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4,
4520 0x24, 0xb0, 0x01, 0x00, 0x5e, 0x92, 0x22, 0x12, 0x48, 0x7f, 0x00, 0x00,
4521 0x58, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x05,
4522 0x48, 0xb1, 0x01, 0x00, 0x6b, 0x92, 0x0b, 0xf0, 0x84, 0x30, 0x00, 0x00,
4523 0x00, 0x00, 0x11, 0x12, 0x48, 0x83, 0x01, 0x00, 0x68, 0x92, 0x22, 0x50,
4524 0x85, 0x70, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4525 0x2a, 0x94, 0x00, 0xf2, 0x96, 0x30, 0x01, 0x00, 0x93, 0x04, 0x00, 0x12,
4526 0x94, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x1f, 0x90, 0x01, 0x00,
4527 0x10, 0x00, 0x00, 0x12, 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4b,
4528 0x1e, 0x94, 0x01, 0x00, 0x10, 0x00, 0x00, 0x42, 0x10, 0xf4, 0x01, 0x00,
4529 0x00, 0xb7, 0x3f, 0x43, 0x11, 0xf0, 0x01, 0x00, 0x07, 0x00, 0x00, 0x08,
4530 0x8a, 0x88, 0x01, 0x00, 0x6e, 0x92, 0x30, 0xa1, 0x0c, 0x30, 0x00, 0x00,
4531 0x71, 0x92, 0x22, 0x45, 0xe6, 0x7d, 0x00, 0x00, 0x5e, 0x92, 0x10, 0x40,
4532 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x45, 0xe6, 0x91, 0x01, 0x00,
4533 0x00, 0x00, 0x10, 0x12, 0x48, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x40,
4534 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x60, 0x4b, 0x85, 0x80, 0x01, 0x00,
4535 0x5e, 0x01, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x2a, 0x94, 0x00, 0xf2,
4536 0x96, 0x30, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4537 0xd8, 0x00, 0x00, 0x40, 0x81, 0x98, 0x01, 0x00, 0x2e, 0x00, 0x2d, 0x05,
4538 0x48, 0xb1, 0x01, 0x00, 0x7c, 0x92, 0x22, 0x40, 0xe7, 0x6d, 0x00, 0x00,
4539 0x80, 0x00, 0x00, 0x40, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4540 0xf0, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x08, 0x86, 0xe4, 0x01, 0x00,
4541 0x00, 0x00, 0x68, 0xa7, 0x87, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44,
4542 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
4543 0x80, 0x92, 0xa8, 0x05, 0xe0, 0x31, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12,
4544 0x96, 0xe4, 0x01, 0x00, 0x00, 0x14, 0x00, 0x4b, 0x96, 0xdc, 0x01, 0x00,
4545 0x00, 0x00, 0x80, 0x4b, 0x1e, 0x94, 0x01, 0x00, 0x10, 0x00, 0x00, 0x0f,
4546 0x84, 0xf4, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x42, 0x84, 0x88, 0x01, 0x00,
4547 0x89, 0x92, 0x22, 0x40, 0x80, 0x32, 0x00, 0x00, 0x8a, 0x92, 0x00, 0x42,
4548 0x68, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x6a, 0xb1, 0x01, 0x00,
4549 0x8a, 0x92, 0x31, 0x5a, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x42,
4550 0x48, 0x93, 0x01, 0x00, 0x8c, 0x92, 0x35, 0x40, 0x81, 0x32, 0x00, 0x00,
4551 0x6d, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0x91, 0x92, 0x28, 0xb1,
4552 0x2c, 0x30, 0x00, 0x00, 0x8d, 0x92, 0x22, 0x4d, 0x75, 0x7d, 0x00, 0x00,
4553 0x00, 0x00, 0x95, 0x40, 0x11, 0xb0, 0x01, 0x00, 0x6d, 0x00, 0x00, 0x40,
4554 0x61, 0x99, 0x01, 0x00, 0x91, 0x92, 0xa8, 0xb1, 0x10, 0x30, 0x00, 0x00,
4555 0x00, 0x00, 0x95, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x40,
4556 0x61, 0x99, 0x01, 0x00, 0x98, 0x92, 0x28, 0xb1, 0x10, 0x30, 0x00, 0x00,
4557 0x94, 0x92, 0x9f, 0xba, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
4558 0x11, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x24, 0x11, 0x84, 0x01, 0x00,
4559 0x00, 0x00, 0x00, 0x5f, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
4560 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
4561 0x9a, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xac, 0x94, 0x00, 0x40,
4562 0x47, 0x99, 0x01, 0x00, 0x9e, 0x92, 0x32, 0x40, 0x81, 0x32, 0x00, 0x00,
4563 0xa4, 0x92, 0x22, 0xf8, 0x96, 0x30, 0x00, 0x00, 0x04, 0x00, 0x22, 0xf8,
4564 0x90, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x92, 0xb0, 0x01, 0x00,
4565 0x01, 0x00, 0x00, 0x4b, 0xf0, 0xcd, 0x01, 0x00, 0x20, 0x00, 0x92, 0x48,
4566 0xe0, 0xc9, 0x01, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00,
4567 0xa8, 0x92, 0x28, 0xb1, 0x92, 0x30, 0x00, 0x00, 0xa4, 0x92, 0x22, 0x4c,
4568 0x75, 0x7d, 0x00, 0x00, 0x04, 0x00, 0x12, 0x40, 0x91, 0xb0, 0x00, 0x00,
4569 0x6c, 0x00, 0x00, 0x40, 0x61, 0x99, 0x01, 0x00, 0xa8, 0x92, 0xa8, 0xb1,
4570 0x90, 0x30, 0x00, 0x00, 0xff, 0x00, 0x00, 0x48, 0x96, 0x88, 0x01, 0x00,
4571 0x00, 0x00, 0x00, 0x4b, 0x90, 0xd0, 0x01, 0x00, 0x01, 0x00, 0x00, 0x4b,
4572 0xf0, 0xcd, 0x01, 0x00, 0x20, 0x00, 0x00, 0x48, 0xf0, 0xc9, 0x01, 0x00,
4573 0x00, 0x00, 0x92, 0x49, 0xe0, 0xb1, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x10,
4574 0x48, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0x82, 0x8c, 0x01, 0x00,
4575 0xff, 0x07, 0x00, 0xf0, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41,
4576 0x00, 0xec, 0x00, 0x00, 0xb5, 0x92, 0x22, 0x1a, 0x00, 0x6c, 0x00, 0x00,
4577 0x99, 0x92, 0x00, 0x00, 0x34, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
4578 0x49, 0xc1, 0x01, 0x00, 0xb1, 0x92, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
4579 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x10,
4580 0x48, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x15, 0x82, 0x8c, 0x01, 0x00,
4581 0xff, 0x07, 0x00, 0xf0, 0x00, 0x8c, 0x01, 0x00, 0x00, 0x00, 0xa2, 0x41,
4582 0x00, 0xec, 0x00, 0x00, 0xbe, 0x92, 0x22, 0x0d, 0x00, 0x6c, 0x00, 0x00,
4583 0x99, 0x92, 0x00, 0x00, 0x1a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
4584 0x49, 0xc1, 0x01, 0x00, 0xba, 0x92, 0xa2, 0x41, 0x23, 0x50, 0x00, 0x00,
4585 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xc3, 0x92, 0x83, 0x1e,
4586 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x19, 0x90, 0x01, 0x00,
4587 0x24, 0x00, 0x2d, 0x01, 0x2c, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x2d, 0xf0,
4588 0x16, 0xb0, 0x01, 0x00, 0x22, 0x00, 0x2d, 0xf0, 0x26, 0xb0, 0x01, 0x00,
4589 0x14, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
4590 0xe1, 0xb1, 0x01, 0x00, 0x30, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
4591 0x60, 0x97, 0x2e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4592 0xf1, 0xb1, 0x01, 0x00, 0xca, 0x92, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
4593 0x64, 0x97, 0x3e, 0x43, 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
4594 0xe1, 0xb1, 0x01, 0x00, 0x64, 0x97, 0x3e, 0x43, 0x9d, 0xe0, 0x01, 0x00,
4595 0x00, 0x00, 0x80, 0x0b, 0xe8, 0xb1, 0x01, 0x00, 0x64, 0x97, 0x3f, 0x43,
4596 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0xc0, 0x01, 0x00,
4597 0x00, 0x00, 0x80, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x64, 0x97, 0x3f, 0x43,
4598 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x16, 0xb0, 0x01, 0x00,
4599 0x00, 0x00, 0x80, 0x40, 0xe1, 0xb1, 0x01, 0x00, 0x60, 0x17, 0x3d, 0x43,
4600 0x9d, 0xe0, 0x01, 0x00, 0x10, 0x00, 0x80, 0xa1, 0x16, 0xe4, 0x01, 0x00,
4601 0x00, 0xb5, 0x00, 0x0d, 0x42, 0xc9, 0x01, 0x00, 0xd9, 0x92, 0x30, 0x47,
4602 0x17, 0x04, 0x00, 0x00, 0xdc, 0x92, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
4603 0x00, 0x00, 0x90, 0x42, 0x81, 0xb0, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x0d,
4604 0x46, 0xc9, 0x01, 0x00, 0xe0, 0x92, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
4605 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00, 0x00, 0x00, 0x90, 0x41,
4606 0x81, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00,
4607 0xe1, 0x92, 0x40, 0x07, 0x96, 0x30, 0x00, 0x00, 0x9d, 0x04, 0x00, 0x40,
4608 0x81, 0x32, 0x01, 0x00, 0xeb, 0x92, 0xa2, 0x45, 0x95, 0x7c, 0x00, 0x00,
4609 0x01, 0x97, 0x3f, 0x41, 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
4610 0x96, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xe6, 0xb1, 0x01, 0x00,
4611 0x40, 0x97, 0x3e, 0x40, 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e,
4612 0xe6, 0xb1, 0x01, 0x00, 0x40, 0x97, 0x3e, 0x40, 0x9d, 0xe0, 0x01, 0x00,
4613 0xfe, 0x92, 0x00, 0x3b, 0xe7, 0xb1, 0x00, 0x00, 0xeb, 0x92, 0x30, 0x40,
4614 0x81, 0x32, 0x00, 0x00, 0xf5, 0x92, 0xa2, 0x0b, 0xe6, 0x7d, 0x00, 0x00,
4615 0x00, 0xb5, 0x00, 0x0d, 0x46, 0xc9, 0x01, 0x00, 0xf1, 0x92, 0xa2, 0x0b,
4616 0xe6, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00,
4617 0x00, 0x00, 0x98, 0x42, 0x81, 0xb0, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x0d,
4618 0x46, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0b, 0xe6, 0x91, 0x01, 0x00,
4619 0x00, 0x00, 0x10, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x98, 0x41,
4620 0x81, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x21, 0xa2, 0x95, 0x20, 0x00, 0x00,
4621 0x00, 0x00, 0x10, 0x4a, 0x44, 0x83, 0x01, 0x00, 0x00, 0x97, 0x3e, 0x41,
4622 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4e, 0xf6, 0xb1, 0x01, 0x00,
4623 0x00, 0x00, 0x00, 0x4e, 0xe6, 0xb1, 0x01, 0x00, 0x40, 0x97, 0x3e, 0x40,
4624 0x9d, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xe7, 0xb1, 0x01, 0x00,
4625 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00, 0xff, 0xff, 0x00, 0x07,
4626 0x92, 0x89, 0x01, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb0, 0x01, 0x00,
4627 0x03, 0x00, 0x00, 0x08, 0x86, 0xf4, 0x01, 0x00, 0x00, 0xb7, 0x00, 0x43,
4628 0x46, 0xc9, 0x01, 0x00, 0x07, 0x00, 0x00, 0x08, 0x82, 0x88, 0x01, 0x00,
4629 0x02, 0x93, 0x40, 0x08, 0x96, 0x30, 0x00, 0x00, 0x9d, 0x04, 0x00, 0x40,
4630 0x81, 0x32, 0x01, 0x00, 0x0e, 0x93, 0x22, 0x45, 0x95, 0x7c, 0x00, 0x00,
4631 0x0a, 0x93, 0x22, 0x5a, 0x1f, 0x7c, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0f,
4632 0x96, 0xf4, 0x01, 0x00, 0x07, 0x93, 0x31, 0x5f, 0x97, 0x04, 0x00, 0x00,
4633 0x00, 0x00, 0x11, 0x4b, 0x48, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
4634 0x6a, 0xb1, 0x01, 0x00, 0x0a, 0x93, 0x30, 0x40, 0x81, 0x32, 0x00, 0x00,
4635 0x00, 0x00, 0x00, 0x41, 0xe6, 0x81, 0x01, 0x00, 0x00, 0x00, 0x10, 0x40,
4636 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00,
4637 0x00, 0x97, 0x3f, 0x41, 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3,
4638 0x96, 0xb0, 0x01, 0x00, 0x40, 0x97, 0x3d, 0x40, 0x97, 0xe0, 0x01, 0x00,
4639 0x00, 0x00, 0x63, 0xf3, 0x88, 0xb0, 0x01, 0x00, 0x16, 0x93, 0xa2, 0x3b,
4640 0x89, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x90, 0xb1, 0x01, 0x00,
4641 0x01, 0x00, 0x00, 0xa6, 0x92, 0xb1, 0x01, 0x00, 0x17, 0x93, 0x18, 0x4a,
4642 0x44, 0x93, 0x00, 0x00, 0x00, 0x00, 0x18, 0x40, 0x81, 0xb2, 0x01, 0x00,
4643 0x30, 0x00, 0x39, 0x45, 0x97, 0xe0, 0x01, 0x00, 0x1c, 0x93, 0x22, 0x5a,
4644 0x1f, 0x7c, 0x00, 0x00, 0x1f, 0x04, 0x00, 0x0f, 0x98, 0xd8, 0x01, 0x00,
4645 0x00, 0x00, 0x00, 0x4c, 0x5e, 0x94, 0x01, 0x00, 0x1e, 0x93, 0x00, 0x05,
4646 0x4a, 0xb0, 0x00, 0x00, 0x1f, 0x04, 0x00, 0xa7, 0x5e, 0x84, 0x01, 0x00,
4647 0x00, 0x00, 0x00, 0x40, 0x4b, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58,
4648 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
4649 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x1f, 0x93, 0x00, 0x40,
4650 0x81, 0xb2, 0x00, 0x00, 0x22, 0x93, 0x40, 0x07, 0x96, 0x30, 0x00, 0x00,
4651 0x9d, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x26, 0x93, 0x22, 0x45,
4652 0x95, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00,
4653 0x9b, 0x04, 0x00, 0x4a, 0x44, 0x13, 0x01, 0x00, 0x00, 0x97, 0x3f, 0x41,
4654 0x95, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00,
4655 0x40, 0x97, 0x3d, 0x40, 0x97, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x63, 0xf3,
4656 0x88, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x38, 0x45, 0x97, 0xe0, 0x01, 0x00,
4657 0x00, 0x00, 0x00, 0x5f, 0x0f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x58,
4658 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00,
4659 0x2e, 0x93, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x27, 0x93, 0xa2, 0x3b,
4660 0x89, 0x6c, 0x00, 0x00, 0x30, 0x00, 0x38, 0x45, 0x9d, 0xe0, 0x01, 0x00,
4661 0x00, 0x00, 0x98, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x93, 0x04, 0x00, 0x12,
4662 0x94, 0x30, 0x01, 0x00, 0xff, 0x92, 0x00, 0x5a, 0x1f, 0x00, 0x01, 0x00,
4663 0x00, 0x00, 0x80, 0x5a, 0x1f, 0x90, 0x01, 0x00, 0x11, 0x00, 0x00, 0x4a,
4664 0xe6, 0xc9, 0x01, 0x00, 0x34, 0x00, 0x2f, 0x4f, 0x95, 0x84, 0x01, 0x00,
4665 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x63, 0x4b,
4666 0x84, 0xc8, 0x01, 0x00, 0x00, 0x00, 0xa0, 0x43, 0x85, 0x6c, 0x01, 0x00,
4667 0x00, 0x00, 0xe3, 0x40, 0x85, 0xb0, 0x01, 0x00, 0x30, 0x00, 0x2d, 0x44,
4668 0x1f, 0x90, 0x01, 0x00, 0x32, 0x00, 0x2d, 0xf2, 0x2a, 0xb0, 0x01, 0x00,
4669 0x04, 0x00, 0x22, 0xf2, 0x02, 0x30, 0x00, 0x00, 0x1e, 0x92, 0x00, 0x10,
4670 0x32, 0x30, 0x01, 0x00, 0x32, 0x00, 0xa0, 0x40, 0xe5, 0xb1, 0x01, 0x00,
4671 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x40,
4672 0x99, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x02, 0xc0, 0x01, 0x00,
4673 0x00, 0x00, 0x00, 0x50, 0x03, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
4674 0x97, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x4c, 0x02, 0xd0, 0x00, 0x00,
4675 0x45, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
4676 0x36, 0xb0, 0x01, 0x00, 0x55, 0x93, 0x22, 0x41, 0x03, 0x50, 0x00, 0x00,
4677 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
4678 0xf1, 0xb1, 0x01, 0x00, 0x70, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00,
4679 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10,
4680 0x62, 0xb1, 0x01, 0x00, 0x4e, 0x93, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00,
4681 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40,
4682 0x81, 0x32, 0x01, 0x00, 0x7c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4683 0x00, 0x00, 0x00, 0xf0, 0x00, 0xb0, 0x01, 0x00, 0x49, 0x93, 0x00, 0x5c,
4684 0x01, 0x80, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4685 0x00, 0x00, 0x00, 0x1b, 0x10, 0xb1, 0x00, 0x00, 0x68, 0x01, 0x2d, 0x06,
4686 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x82, 0xc0, 0x01, 0x00,
4687 0x00, 0x80, 0x00, 0x03, 0x46, 0xc9, 0x01, 0x00, 0x94, 0x92, 0x00, 0x40,
4688 0x81, 0x32, 0x01, 0x00, 0x7c, 0x93, 0x22, 0x40, 0x11, 0x6c, 0x00, 0x00,
4689 0x00, 0x00, 0x68, 0x08, 0x38, 0x96, 0x01, 0x00, 0xf0, 0x07, 0x00, 0x41,
4690 0x82, 0xcc, 0x01, 0x00, 0x5a, 0x93, 0xaa, 0x41, 0x3b, 0x40, 0x00, 0x00,
4691 0x00, 0x00, 0x00, 0xf8, 0x10, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5c,
4692 0x11, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x1d, 0x04, 0xcc, 0x01, 0x00,
4693 0x7b, 0x93, 0x26, 0x46, 0x23, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x03,
4694 0x12, 0xc8, 0x01, 0x00, 0x64, 0x01, 0x20, 0xf0, 0xe0, 0xb1, 0x01, 0x00,
4695 0x7a, 0x93, 0x22, 0x41, 0x05, 0x50, 0x00, 0x00, 0x20, 0x00, 0x00, 0x03,
4696 0x48, 0xc9, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xf8, 0x86, 0xc8, 0x01, 0x00,
4697 0x00, 0x00, 0x22, 0x44, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43,
4698 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0xe0, 0xb1, 0x01, 0x00,
4699 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
4700 0x62, 0xdd, 0x01, 0x00, 0x6c, 0x93, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
4701 0x79, 0x93, 0x22, 0x41, 0x05, 0x50, 0x00, 0x00, 0x77, 0x93, 0xa2, 0x41,
4702 0x23, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x1a, 0xb0, 0x01, 0x00,
4703 0x00, 0x00, 0x00, 0x44, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4704 0x62, 0xdd, 0x01, 0x00, 0x72, 0x93, 0xa8, 0x46, 0x23, 0x30, 0x00, 0x00,
4705 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03,
4706 0x48, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x42, 0xb1, 0x01, 0x00,
4707 0x00, 0x00, 0x00, 0x44, 0x13, 0xc0, 0x01, 0x00, 0x67, 0x93, 0x00, 0x50,
4708 0x49, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00,
4709 0x04, 0x80, 0x00, 0x03, 0x1a, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
4710 0x81, 0xb2, 0x01, 0x00, 0x7b, 0x93, 0x22, 0x40, 0x3b, 0x6c, 0x00, 0x00,
4711 0x00, 0x00, 0x00, 0xf8, 0x00, 0xb0, 0x01, 0x00, 0x99, 0x92, 0x00, 0x5c,
4712 0x01, 0x00, 0x01, 0x00, 0x7c, 0x93, 0x00, 0x41, 0x3b, 0xd0, 0x00, 0x00,
4713 0x00, 0x00, 0x8d, 0x47, 0x80, 0x32, 0x01, 0x00, 0xb0, 0x00, 0x2f, 0x5f,
4714 0x13, 0xb0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x8c, 0xc0, 0x01, 0x00,
4715 0x00, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4716 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x8c, 0xb0, 0x01, 0x00,
4717 0x88, 0x93, 0x8c, 0xf8, 0x8e, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
4718 0x19, 0x90, 0x01, 0x00, 0x04, 0x00, 0x22, 0xf8, 0x14, 0x30, 0x00, 0x00,
4719 0x00, 0x00, 0x00, 0xf8, 0x16, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
4720 0x26, 0xb0, 0x01, 0x00, 0x08, 0x00, 0x2e, 0xf8, 0x0c, 0xb0, 0x01, 0x00,
4721 0x0c, 0x00, 0x2a, 0x4a, 0xe0, 0xb1, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00,
4722 0xe0, 0xc9, 0x01, 0x00, 0x10, 0x00, 0x20, 0x1b, 0xe0, 0xb1, 0x01, 0x00,
4723 0x95, 0x93, 0x20, 0x0a, 0x0c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
4724 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x96, 0xb0, 0x01, 0x00,
4725 0x20, 0x00, 0x20, 0xf0, 0xe4, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x20, 0x4a,
4726 0xe0, 0xb1, 0x01, 0x00, 0x1c, 0x00, 0x20, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
4727 0x80, 0x93, 0x00, 0x40, 0x13, 0xb0, 0x00, 0x00, 0x2c, 0x00, 0x2d, 0x42,
4728 0x19, 0x90, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3, 0x82, 0xb0, 0x01, 0x00,
4729 0x00, 0x00, 0x00, 0xf3, 0x96, 0xb0, 0x01, 0x00, 0x9b, 0x93, 0xa2, 0xa5,
4730 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41, 0x95, 0xb0, 0x01, 0x00,
4731 0x9e, 0x93, 0xa2, 0x40, 0x97, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4732 0x83, 0xb0, 0x01, 0x00, 0x2d, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00,
4733 0x00, 0x00, 0x63, 0x41, 0x97, 0xc0, 0x01, 0x00, 0xd4, 0x00, 0x3e, 0x41,
4734 0x83, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x83, 0xc0, 0x01, 0x00,
4735 0xa3, 0x93, 0xa0, 0xa5, 0x83, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4736 0x83, 0xb0, 0x01, 0x00, 0x2c, 0x00, 0x20, 0x41, 0xe6, 0xb1, 0x01, 0x00,
4737 0xa8, 0x93, 0x22, 0x40, 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
4738 0x98, 0xdc, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x4c, 0xe4, 0xf5, 0x01, 0x00,
4739 0x00, 0x00, 0x80, 0x40, 0x1f, 0x80, 0x01, 0x00, 0x0b, 0x00, 0x80, 0x00,
4740 0xe4, 0xf5, 0x01, 0x00, 0x9d, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
4741 0x04, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4742 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
4743 0x00, 0x00, 0x60, 0x41, 0x87, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4744 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4745 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
4746 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
4747 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
4748 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00,
4749 0xb4, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x9d, 0x92, 0x00, 0x40,
4750 0x81, 0x32, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03, 0x44, 0xc9, 0x01, 0x00,
4751 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42,
4752 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
4753 0x00, 0x00, 0x00, 0x43, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4754 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00,
4755 0x00, 0x00, 0x00, 0x48, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
4756 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00,
4757 0x00, 0x00, 0x00, 0x45, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
4758 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00,
4759 0xc3, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x40,
4760 0x43, 0x99, 0x01, 0x00, 0x2e, 0x00, 0x2f, 0xf3, 0x84, 0xb0, 0x01, 0x00,
4761 0x01, 0x00, 0x63, 0xf3, 0x96, 0xc8, 0x01, 0x00, 0xcb, 0x93, 0x9f, 0x41,
4762 0x85, 0x50, 0x00, 0x00, 0x01, 0x00, 0x00, 0xa5, 0x85, 0xcc, 0x01, 0x00,
4763 0x2d, 0x00, 0xa0, 0x42, 0xe6, 0xb1, 0x01, 0x00, 0x5e, 0x01, 0x2d, 0x00,
4764 0x80, 0xb0, 0x01, 0x00, 0xd0, 0x93, 0x52, 0x43, 0x81, 0x60, 0x00, 0x00,
4765 0x02, 0x00, 0x00, 0xf2, 0x82, 0xf4, 0x01, 0x00, 0xd1, 0x93, 0x00, 0x41,
4766 0x80, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x81, 0x90, 0x01, 0x00,
4767 0x00, 0x00, 0x00, 0x5e, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4768 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x95, 0xb0, 0x00, 0x00,
4769 0xd2, 0x93, 0x9e, 0xbb, 0x80, 0x32, 0x00, 0x00, 0xd7, 0x93, 0xa2, 0x40,
4770 0x1f, 0x7c, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4771 0x00, 0x00, 0x80, 0x41, 0x95, 0xb0, 0x01, 0x00, 0x04, 0x00, 0x00, 0x15,
4772 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x2b, 0xc0, 0x01, 0x00,
4773 0x00, 0x00, 0x00, 0xfc, 0x24, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc,
4774 0x38, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x3c, 0xb0, 0x01, 0x00,
4775 0x00, 0x00, 0x00, 0xfe, 0x3a, 0xb0, 0x01, 0x00, 0xec, 0x93, 0x9c, 0x17,
4776 0x80, 0x32, 0x00, 0x00, 0xe1, 0x93, 0xa2, 0x4a, 0x19, 0x7c, 0x00, 0x00,
4777 0x00, 0x00, 0x80, 0x4c, 0x1f, 0x90, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x1e,
4778 0x98, 0xf4, 0x01, 0x00, 0xe0, 0x93, 0xa2, 0x48, 0x99, 0x6c, 0x00, 0x00,
4779 0x00, 0x00, 0x00, 0x15, 0x42, 0xb1, 0x01, 0x00, 0xe0, 0x93, 0xa2, 0x8a,
4780 0xf1, 0x6d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x02, 0xcc, 0x01, 0x00,
4781 0x00, 0x00, 0x00, 0xfc, 0x3e, 0xb0, 0x01, 0x00, 0x01, 0x00, 0x00, 0xf4,
4782 0x28, 0xcc, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00,
4783 0xeb, 0x93, 0x20, 0xf0, 0x3e, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b,
4784 0x1f, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2b, 0xc0, 0x01, 0x00,
4785 0xbf, 0x00, 0x2d, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0xf3,
4786 0x3a, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x4b, 0x19, 0x90, 0x01, 0x00,
4787 0x07, 0x00, 0x2a, 0x0c, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04,
4788 0xe6, 0xb1, 0x01, 0x00, 0x18, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4789 0x1c, 0x00, 0x2d, 0xf0, 0x16, 0xb0, 0x01, 0x00, 0x20, 0x00, 0x2d, 0xf0,
4790 0x26, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2f, 0xf2, 0x0c, 0xb0, 0x01, 0x00,
4791 0x00, 0x00, 0xa2, 0x06, 0x14, 0xec, 0x00, 0x00, 0xf8, 0x93, 0x22, 0x45,
4792 0x1f, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x06, 0x2a, 0xec, 0x00, 0x00,
4793 0x00, 0x00, 0x00, 0xf8, 0x94, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4794 0x96, 0xb0, 0x01, 0x00, 0x0c, 0x00, 0x2d, 0x40, 0x81, 0xb2, 0x01, 0x00,
4795 0x00, 0x00, 0x2a, 0x4c, 0xe1, 0xc1, 0x01, 0x00, 0x30, 0x00, 0x00, 0x10,
4796 0x48, 0xc9, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
4797 0x18, 0x00, 0x00, 0x05, 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
4798 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0xb1, 0x01, 0x00,
4799 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
4800 0x62, 0xdd, 0x01, 0x00, 0x02, 0x94, 0xa8, 0x5c, 0x1f, 0x10, 0x00, 0x00,
4801 0x00, 0x00, 0x80, 0x05, 0x48, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
4802 0x48, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00,
4803 0x40, 0x00, 0x00, 0x03, 0xf0, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00,
4804 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x50, 0x49, 0xc1, 0x01, 0x00,
4805 0x00, 0x00, 0x00, 0x06, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4806 0xf0, 0xb1, 0x01, 0x00, 0x0c, 0x94, 0x62, 0x42, 0x61, 0x31, 0x00, 0x00,
4807 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x0d, 0x94, 0xa8, 0x40,
4808 0x81, 0x32, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x62, 0xc9, 0x01, 0x00,
4809 0x0f, 0x94, 0xa8, 0x00, 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x40,
4810 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10, 0x48, 0xb1, 0x01, 0x00,
4811 0x40, 0x00, 0x00, 0x01, 0xf0, 0xcd, 0x01, 0x00, 0x40, 0x00, 0x00, 0x03,
4812 0xf0, 0xc9, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0xe0, 0xc9, 0x01, 0x00,
4813 0x00, 0x00, 0x2e, 0x50, 0x49, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
4814 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00,
4815 0x19, 0x94, 0x62, 0x42, 0x61, 0x31, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10,
4816 0x62, 0xdd, 0x01, 0x00, 0x1a, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4817 0xa0, 0x00, 0x00, 0xa4, 0x62, 0xdd, 0x01, 0x00, 0x1c, 0x94, 0xa8, 0x00,
4818 0xe0, 0x31, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x40, 0x81, 0xb2, 0x01, 0x00,
4819 0x30, 0x80, 0x00, 0x4a, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06,
4820 0xf1, 0xb1, 0x01, 0x00, 0xc0, 0xa8, 0x3d, 0x46, 0x0d, 0xe0, 0x01, 0x00,
4821 0xff, 0x7f, 0x00, 0xa1, 0xf0, 0x89, 0x01, 0x00, 0x02, 0x00, 0x00, 0x09,
4822 0x96, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x97, 0xe0, 0x01, 0x00,
4823 0x00, 0x00, 0x60, 0xa8, 0x97, 0xc0, 0x01, 0x00, 0x26, 0x94, 0x63, 0x42,
4824 0x61, 0x31, 0x00, 0x00, 0x30, 0x00, 0x00, 0x4a, 0x62, 0xc9, 0x01, 0x00,
4825 0x27, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x40,
4826 0x81, 0xb2, 0x01, 0x00, 0x00, 0x99, 0x3f, 0x42, 0x97, 0xf0, 0x01, 0x00,
4827 0x2b, 0x94, 0x65, 0x40, 0x81, 0x32, 0x00, 0x00, 0x33, 0x94, 0x22, 0xf3,
4828 0x74, 0x06, 0x00, 0x00, 0x3f, 0x00, 0x00, 0xf3, 0x94, 0x88, 0x01, 0x00,
4829 0x00, 0x00, 0x00, 0x07, 0xe7, 0x85, 0x01, 0x00, 0x00, 0x00, 0x75, 0x55,
4830 0x61, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x62, 0xb1, 0x01, 0x00,
4831 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x30, 0x94, 0x00, 0x40,
4832 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x40, 0x81, 0xb2, 0x01, 0x00,
4833 0x00, 0x00, 0x00, 0xa8, 0x36, 0xb0, 0x01, 0x00, 0x43, 0x94, 0x82, 0x41,
4834 0x23, 0x40, 0x00, 0x00, 0x38, 0x94, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4835 0xa7, 0x91, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00, 0x20, 0x80, 0x00, 0x10,
4836 0x42, 0xc9, 0x01, 0x00, 0x3e, 0x94, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4837 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4838 0x62, 0xdd, 0x01, 0x00, 0x3b, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4839 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4840 0x23, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x32, 0xb0, 0x01, 0x00,
4841 0x43, 0x94, 0x22, 0x41, 0x19, 0x7c, 0x00, 0x00, 0xaf, 0x92, 0x00, 0x43,
4842 0x23, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x23, 0xb0, 0x01, 0x00,
4843 0x45, 0x94, 0xa3, 0x15, 0x0c, 0x6c, 0x00, 0x00, 0x46, 0x94, 0x00, 0x06,
4844 0x04, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x04, 0xb0, 0x01, 0x00,
4845 0x48, 0x94, 0x20, 0x02, 0x1a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d,
4846 0x04, 0xb0, 0x01, 0x00, 0x07, 0x95, 0x00, 0x05, 0x48, 0x31, 0x01, 0x00,
4847 0x72, 0x94, 0x22, 0x02, 0x14, 0x50, 0x00, 0x00, 0x4c, 0x94, 0xa2, 0x02,
4848 0x2a, 0x50, 0x00, 0x00, 0x72, 0x94, 0xa2, 0x45, 0x1f, 0x7c, 0x00, 0x00,
4849 0x4e, 0x94, 0x22, 0x02, 0x0c, 0x50, 0x00, 0x00, 0x57, 0x94, 0x00, 0x02,
4850 0x16, 0xc0, 0x00, 0x00, 0x56, 0x94, 0x22, 0x5c, 0x1f, 0x7c, 0x00, 0x00,
4851 0x30, 0x80, 0x00, 0x10, 0x42, 0xc9, 0x01, 0x00, 0x56, 0x94, 0x22, 0x40,
4852 0xe3, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x61, 0xb1, 0x01, 0x00,
4853 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x52, 0x94, 0xa8, 0x40,
4854 0x81, 0x32, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00,
4855 0x00, 0x00, 0x00, 0x05, 0x48, 0xb1, 0x01, 0x00, 0xf1, 0x93, 0x00, 0x5c,
4856 0x1f, 0x00, 0x01, 0x00, 0x72, 0x94, 0x22, 0x15, 0x80, 0x32, 0x00, 0x00,
4857 0x00, 0x00, 0x00, 0x50, 0x33, 0xc0, 0x01, 0x00, 0x71, 0x94, 0xa2, 0x02,
4858 0x1a, 0x50, 0x00, 0x00, 0x63, 0x94, 0x22, 0x46, 0x1f, 0x7c, 0x00, 0x00,
4859 0x70, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46,
4860 0x1f, 0x80, 0x01, 0x00, 0x63, 0x94, 0x22, 0x40, 0xe3, 0x6d, 0x00, 0x00,
4861 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10,
4862 0x62, 0xdd, 0x01, 0x00, 0x5f, 0x94, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00,
4863 0xaf, 0x82, 0x00, 0x88, 0x1c, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
4864 0x48, 0xb1, 0x01, 0x00, 0x0c, 0x80, 0x00, 0x03, 0x42, 0xc9, 0x01, 0x00,
4865 0x10, 0x00, 0x00, 0xf0, 0x10, 0xc8, 0x01, 0x00, 0x2f, 0x00, 0x2f, 0x5c,
4866 0x11, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0xe7, 0x91, 0x01, 0x00,
4867 0xf0, 0x07, 0x00, 0x40, 0x1b, 0x98, 0x01, 0x00, 0x35, 0x94, 0x20, 0x15,
4868 0x1a, 0x6c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x03, 0x48, 0xc9, 0x01, 0x00,
4869 0x00, 0x00, 0x22, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03,
4870 0xf0, 0xb1, 0x01, 0x00, 0xff, 0x07, 0x00, 0x08, 0xe0, 0x8d, 0x01, 0x00,
4871 0x00, 0x00, 0x00, 0x42, 0x61, 0xb1, 0x01, 0x00, 0xa0, 0x00, 0x00, 0xa4,
4872 0x62, 0xdd, 0x01, 0x00, 0x6e, 0x94, 0xa8, 0x46, 0x1f, 0x10, 0x00, 0x00,
4873 0x35, 0x94, 0x00, 0x05, 0x48, 0xb1, 0x00, 0x00, 0x35, 0x94, 0x00, 0x02,
4874 0x10, 0xc0, 0x00, 0x00, 0x74, 0x94, 0xa2, 0x44, 0x1f, 0x7c, 0x00, 0x00,
4875 0xa7, 0x91, 0x00, 0x01, 0x8c, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x1b,
4876 0x10, 0xb1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4877 0x10, 0x00, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00, 0x10, 0x00, 0x00, 0x08,
4878 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00,
4879 0x10, 0x00, 0x00, 0x03, 0xe0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
4880 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
4881 0x00, 0x00, 0xa8, 0x5c, 0x1f, 0x90, 0x00, 0x00, 0x7b, 0x94, 0x00, 0x40,
4882 0x81, 0xb2, 0x00, 0x00, 0x17, 0x00, 0x00, 0xd0, 0xa2, 0xc9, 0x01, 0x00,
4883 0x00, 0x00, 0xa2, 0x40, 0x27, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
4884 0x00, 0xb0, 0x01, 0x00, 0x99, 0x92, 0x00, 0x41, 0xa3, 0x41, 0x01, 0x00,
4885 0x7f, 0x94, 0x00, 0x41, 0x27, 0xd0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07,
4886 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x80, 0x94, 0x01, 0x00,
4887 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
4888 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
4889 0x86, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd8, 0x94, 0x00, 0x40,
4890 0x2b, 0x30, 0x01, 0x00, 0xac, 0x00, 0x2d, 0x06, 0x16, 0xc0, 0x01, 0x00,
4891 0x90, 0x00, 0x2d, 0xf0, 0x16, 0xc4, 0x01, 0x00, 0x8e, 0x94, 0xa0, 0xf0,
4892 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
4893 0x0e, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xf0,
4894 0x30, 0xb0, 0x01, 0x00, 0xac, 0x00, 0x2d, 0x40, 0x87, 0xb0, 0x01, 0x00,
4895 0x00, 0x00, 0x6c, 0xf0, 0x28, 0xb0, 0x01, 0x00, 0x97, 0x94, 0x22, 0x4a,
4896 0x19, 0x7c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x43, 0x86, 0xc8, 0x01, 0x00,
4897 0x00, 0x30, 0x00, 0x0b, 0x16, 0xc8, 0x01, 0x00, 0x97, 0x94, 0xa4, 0x40,
4898 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
4899 0xb8, 0x94, 0x22, 0x06, 0x80, 0x32, 0x00, 0x00, 0xa4, 0x94, 0xa2, 0x06,
4900 0x14, 0x6c, 0x00, 0x00, 0xa1, 0x94, 0x22, 0x48, 0x19, 0x7c, 0x00, 0x00,
4901 0x9c, 0x94, 0xa0, 0x41, 0x17, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4902 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0x31, 0xc0, 0x01, 0x00,
4903 0x90, 0x00, 0x20, 0x18, 0xe0, 0xb1, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0x48,
4904 0x19, 0x80, 0x01, 0x00, 0x8b, 0x00, 0x20, 0x45, 0xe7, 0x91, 0x01, 0x00,
4905 0xa4, 0x94, 0x00, 0x40, 0x87, 0x90, 0x00, 0x00, 0x08, 0x00, 0x00, 0x43,
4906 0x86, 0x98, 0x01, 0x00, 0xa4, 0x94, 0xa0, 0x48, 0x17, 0x40, 0x00, 0x00,
4907 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00, 0xb0, 0x00, 0x00, 0x40,
4908 0x43, 0x99, 0x01, 0x00, 0x10, 0x50, 0x00, 0x43, 0xfc, 0xc9, 0x01, 0x00,
4909 0x0f, 0x95, 0x00, 0x30, 0x81, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
4910 0xe5, 0xb1, 0x01, 0x00, 0xaf, 0x94, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00,
4911 0x08, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0xab,
4912 0xf9, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xab, 0x17, 0xc0, 0x01, 0x00,
4913 0xae, 0x94, 0xa0, 0xf0, 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4914 0x17, 0xc0, 0x01, 0x00, 0xb3, 0x94, 0x64, 0xf0, 0x82, 0xb0, 0x00, 0x00,
4915 0xa4, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0xb3, 0x94, 0xa2, 0xf2,
4916 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe5, 0xb1, 0x01, 0x00,
4917 0x8c, 0x00, 0x20, 0x18, 0xe0, 0xb1, 0x01, 0x00, 0x90, 0x00, 0x00, 0x40,
4918 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x60, 0x06, 0x30, 0xc0, 0x01, 0x00,
4919 0x00, 0x00, 0x86, 0x0c, 0x80, 0xb2, 0x00, 0x00, 0xbc, 0x00, 0x2d, 0x46,
4920 0x19, 0x90, 0x01, 0x00, 0xa0, 0x00, 0xa0, 0xf2, 0xe4, 0xb1, 0x01, 0x00,
4921 0xb0, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x10, 0x50, 0x00, 0x43,
4922 0xfc, 0xc9, 0x01, 0x00, 0x0f, 0x95, 0x00, 0x30, 0x81, 0x30, 0x01, 0x00,
4923 0x00, 0x00, 0xa2, 0x4a, 0x19, 0xfc, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa2,
4924 0x44, 0xc9, 0x01, 0x00, 0xcc, 0x00, 0x2d, 0xab, 0xf9, 0xb1, 0x01, 0x00,
4925 0x00, 0x00, 0x00, 0xab, 0x17, 0xc0, 0x01, 0x00, 0xc1, 0x94, 0xa0, 0xf0,
4926 0x16, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x17, 0xc0, 0x01, 0x00,
4927 0x00, 0x00, 0xe4, 0xf0, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10,
4928 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41, 0xf0, 0xb1, 0x01, 0x00,
4929 0x00, 0x00, 0x00, 0x03, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
4930 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00,
4931 0x00, 0x00, 0xa8, 0x1b, 0xe0, 0xb1, 0x00, 0x00, 0xc6, 0x94, 0x00, 0x40,
4932 0x81, 0xb2, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x0c, 0x7e, 0x89, 0x01, 0x00,
4933 0x00, 0x00, 0xa6, 0x4c, 0x95, 0x60, 0x01, 0x00, 0x00, 0x00, 0x80, 0x4a,
4934 0x18, 0x94, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4935 0x04, 0x00, 0x22, 0x01, 0xf0, 0x31, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40,
4936 0xf0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xf0, 0xb1, 0x01, 0x00,
4937 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10,
4938 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x15, 0xe0, 0xb1, 0x00, 0x00,
4939 0xd1, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x10, 0x80, 0x00, 0x03,
4940 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf0, 0xb1, 0x01, 0x00,
4941 0x00, 0x00, 0x00, 0x01, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xe8, 0x5f,
4942 0x17, 0x90, 0x01, 0x00, 0x70, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
4943 0x7a, 0x01, 0x2e, 0xfe, 0x92, 0xb0, 0x01, 0x00, 0x8b, 0x00, 0x2d, 0xf6,
4944 0x16, 0xb0, 0x01, 0x00, 0xde, 0x94, 0x22, 0x43, 0xe7, 0x7d, 0x00, 0x00,
4945 0x00, 0x00, 0x00, 0x44, 0x45, 0xc1, 0x01, 0x00, 0x04, 0x00, 0x00, 0xa6,
4946 0x2a, 0xb0, 0x01, 0x00, 0x28, 0x00, 0x6e, 0x06, 0x82, 0xc8, 0x01, 0x00,
4947 0xe2, 0x94, 0x22, 0x4a, 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
4948 0x45, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x6e, 0x4c, 0x83, 0xc0, 0x01, 0x00,
4949 0x00, 0x00, 0x00, 0x41, 0x92, 0xc0, 0x01, 0x00, 0xe3, 0x94, 0x43, 0x30,
4950 0x3d, 0x07, 0x00, 0x00, 0x00, 0x00, 0x66, 0x9e, 0x83, 0xb0, 0x01, 0x00,
4951 0x00, 0x00, 0x1b, 0x41, 0x3d, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
4952 0x92, 0xc0, 0x01, 0x00, 0x06, 0x00, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00,
4953 0x10, 0x00, 0x00, 0x49, 0x98, 0xf4, 0x01, 0x00, 0xec, 0x94, 0x26, 0x30,
4954 0x93, 0x04, 0x00, 0x00, 0xec, 0x94, 0x90, 0x4c, 0x92, 0x40, 0x00, 0x00,
4955 0x00, 0x00, 0x00, 0x41, 0x93, 0xc0, 0x01, 0x00, 0xff, 0xff, 0x80, 0x49,
4956 0xec, 0xa9, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
4957 0x04, 0x00, 0x22, 0x01, 0xf0, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,
4958 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0xb1, 0x01, 0x00,
4959 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x15,
4960 0xe0, 0xb1, 0x00, 0x00, 0xf1, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4961 0xfe, 0x94, 0x22, 0x5f, 0x81, 0x7c, 0x00, 0x00, 0xfd, 0x94, 0xa2, 0x40,
4962 0x19, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19, 0x90, 0x01, 0x00,
4963 0x00, 0x00, 0x00, 0x54, 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07,
4964 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x97, 0x94, 0x01, 0x00,
4965 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0xfd, 0x94, 0x28, 0x40,
4966 0x81, 0x32, 0x00, 0x00, 0xfa, 0x94, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4967 0x00, 0x00, 0xa2, 0x21, 0x81, 0x84, 0x00, 0x00, 0x01, 0x95, 0xa2, 0x5f,
4968 0x81, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x43, 0x19, 0x7c, 0x01, 0x00,
4969 0x00, 0x00, 0x00, 0x43, 0x19, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54,
4970 0x61, 0xb1, 0x01, 0x00, 0x10, 0x00, 0x00, 0x07, 0x96, 0xe4, 0x01, 0x00,
4971 0x00, 0x00, 0x00, 0x40, 0x96, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
4972 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00,
4973 0x04, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x19,
4974 0x44, 0xc9, 0x01, 0x00, 0x04, 0x00, 0x22, 0x02, 0xf0, 0x31, 0x00, 0x00,
4975 0x00, 0x00, 0x00, 0x0b, 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x13,
4976 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x43, 0x61, 0xb1, 0x01, 0x00,
4977 0x20, 0x00, 0x00, 0x19, 0x62, 0xdd, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x08,
4978 0xe0, 0xb1, 0x00, 0x00, 0x0c, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4979 0x7c, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0xf0,
4980 0x98, 0xf4, 0x01, 0x00, 0x15, 0x95, 0x20, 0x4c, 0x84, 0x6c, 0x00, 0x00,
4981 0x88, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00, 0x15, 0x95, 0x20, 0xf2,
4982 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00,
4983 0x98, 0x00, 0x2d, 0x14, 0x82, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0,
4984 0x98, 0xb0, 0x01, 0x00, 0xa3, 0x00, 0x2d, 0x14, 0x98, 0xd0, 0x01, 0x00,
4985 0x1a, 0x95, 0x20, 0x4c, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c,
4986 0x84, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x80, 0xe0, 0x01, 0x00,
4987 0x1d, 0x95, 0x23, 0x40, 0x84, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
4988 0x84, 0xb0, 0x01, 0x00, 0xd0, 0x00, 0x20, 0x14, 0xe0, 0xb1, 0x01, 0x00,
4989 0x98, 0x00, 0x25, 0x42, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xf3,
4990 0x80, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x42, 0x82, 0xc0, 0x00, 0x00,
4991 0x23, 0x95, 0xa0, 0x40, 0x16, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41,
4992 0x17, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0xf0, 0x82, 0xec, 0x00, 0x00,
4993 0x98, 0x00, 0xa0, 0x41, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x10,
4994 0x48, 0xb1, 0x01, 0x00, 0xa8, 0x01, 0x00, 0x40, 0xf1, 0x99, 0x01, 0x00,
4995 0x00, 0x00, 0x00, 0x05, 0xf0, 0xb1, 0x01, 0x00, 0x09, 0x00, 0x00, 0x07,
4996 0x96, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x60, 0xa7, 0x97, 0xc0, 0x01, 0x00,
4997 0x00, 0x00, 0x00, 0x10, 0x62, 0xb1, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x40,
4998 0x81, 0xb2, 0x00, 0x00, 0x2a, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
4999 0xa8, 0x00, 0x2d, 0x1c, 0x8a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x9f, 0xf0,
5000 0x8a, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x40, 0x8b, 0xec, 0x00, 0x00,
5001 0x8a, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x40,
5002 0x47, 0x99, 0x01, 0x00, 0xa4, 0x00, 0x2d, 0x45, 0xe0, 0xd1, 0x01, 0x00,
5003 0x37, 0x95, 0x9c, 0x17, 0x80, 0x32, 0x00, 0x00, 0xbe, 0x00, 0x2f, 0xab,
5004 0x83, 0xb0, 0x01, 0x00, 0x88, 0x95, 0x00, 0x14, 0x82, 0x50, 0x01, 0x00,
5005 0x3c, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x3c, 0x95, 0x22, 0xf2,
5006 0x82, 0x30, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5007 0x3c, 0x95, 0x9f, 0x1c, 0xe0, 0x6d, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x40,
5008 0x47, 0x99, 0x01, 0x00, 0x88, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5009 0xa8, 0x00, 0x20, 0x1c, 0xe0, 0xb1, 0x01, 0x00, 0x9c, 0x00, 0x2d, 0x30,
5010 0x81, 0xb0, 0x01, 0x00, 0x88, 0x00, 0x2d, 0xf0, 0x84, 0xb0, 0x01, 0x00,
5011 0x94, 0x00, 0x2d, 0xf2, 0x86, 0xb0, 0x01, 0x00, 0x4f, 0x95, 0x23, 0xf0,
5012 0x84, 0x6c, 0x00, 0x00, 0x44, 0x95, 0x23, 0x92, 0x87, 0x6c, 0x00, 0x00,
5013 0xc9, 0x04, 0x00, 0xa6, 0x94, 0xb0, 0x01, 0x00, 0x46, 0x95, 0x00, 0x40,
5014 0x81, 0xb2, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa6, 0x94, 0xb0, 0x01, 0x00,
5015 0x60, 0x89, 0x00, 0x4a, 0x94, 0x98, 0x01, 0x00, 0x46, 0x95, 0x68, 0x40,
5016 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xb0, 0xb1, 0x01, 0x00,
5017 0xbf, 0x00, 0x2d, 0x42, 0xb2, 0xb1, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf3,
5018 0x80, 0xe0, 0x01, 0x00, 0x4a, 0x95, 0xd4, 0x40, 0x81, 0x32, 0x00, 0x00,
5019 0x00, 0x00, 0x78, 0xda, 0x84, 0xc0, 0x01, 0x00, 0x54, 0x95, 0x23, 0x40,
5020 0x84, 0x6c, 0x00, 0x00, 0x94, 0x00, 0x20, 0x9d, 0xe1, 0xb1, 0x01, 0x00,
5021 0x54, 0x95, 0x00, 0x40, 0x84, 0xb0, 0x00, 0x00, 0xbf, 0x00, 0x2d, 0x43,
5022 0x84, 0xc0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf3, 0x80, 0xe0, 0x01, 0x00,
5023 0x54, 0x95, 0x23, 0x40, 0x84, 0x6c, 0x00, 0x00, 0x94, 0x00, 0x20, 0x9d,
5024 0xe1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x84, 0xb0, 0x01, 0x00,
5025 0x58, 0x95, 0xa2, 0xf0, 0x38, 0x6c, 0x00, 0x00, 0x9c, 0x00, 0x20, 0x42,
5026 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x13, 0x94, 0x01, 0x00,
5027 0x00, 0x00, 0x80, 0x46, 0x19, 0x80, 0x01, 0x00, 0x9c, 0x00, 0x20, 0x42,
5028 0xe0, 0xb1, 0x01, 0x00, 0x37, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5029 0x04, 0x00, 0x00, 0xf3, 0x80, 0xf4, 0x01, 0x00, 0x0f, 0x00, 0x00, 0xf3,
5030 0x82, 0x88, 0x01, 0x00, 0x5e, 0x95, 0x23, 0x41, 0x80, 0x6c, 0x00, 0x00,
5031 0x00, 0x00, 0x00, 0x5f, 0x13, 0x94, 0x01, 0x00, 0x00, 0x00, 0x89, 0x0c,
5032 0x80, 0xb2, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5033 0xa0, 0x00, 0xa0, 0xf2, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x9f, 0x41,
5034 0x24, 0xec, 0x00, 0x00, 0x68, 0x95, 0xa6, 0x40, 0x81, 0x32, 0x00, 0x00,
5035 0x00, 0x00, 0x9f, 0x42, 0x38, 0xec, 0x00, 0x00, 0x68, 0x95, 0xa6, 0x40,
5036 0x81, 0x32, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5037 0x6a, 0x95, 0xa3, 0xf0, 0x3a, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
5038 0x81, 0xb2, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x40, 0x43, 0x99, 0x01, 0x00,
5039 0x6e, 0x95, 0x22, 0xf0, 0x3a, 0x6c, 0x00, 0x00, 0xb4, 0x00, 0x20, 0x1d,
5040 0xe0, 0xb1, 0x01, 0x00, 0x80, 0x00, 0x2d, 0x5f, 0x13, 0x94, 0x01, 0x00,
5041 0x6e, 0x95, 0x23, 0xf0, 0x3a, 0x6c, 0x00, 0x00, 0x80, 0x00, 0x20, 0x1d,
5042 0xe0, 0xb1, 0x01, 0x00, 0xc0, 0x00, 0x20, 0x12, 0xe0, 0xb1, 0x01, 0x00,
5043 0xc4, 0x00, 0xa0, 0x1c, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x80, 0x00, 0x03,
5044 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x42, 0xe0, 0xb1, 0x01, 0x00,
5045 0x12, 0x00, 0x00, 0x40, 0x87, 0x98, 0x01, 0x00, 0x77, 0x95, 0x9f, 0x41,
5046 0x24, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x8c, 0xb0, 0x01, 0x00,
5047 0x00, 0x00, 0x00, 0x12, 0x8c, 0xd0, 0x01, 0x00, 0x78, 0x95, 0x00, 0x41,
5048 0x24, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8d, 0xb0, 0x01, 0x00,
5049 0xc6, 0x95, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
5050 0x61, 0xb1, 0x01, 0x00, 0x40, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5051 0x00, 0x00, 0xa8, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x7a, 0x95, 0x00, 0x40,
5052 0x81, 0xb2, 0x00, 0x00, 0x8c, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5053 0x00, 0x00, 0xa2, 0x08, 0x80, 0x32, 0x01, 0x00, 0x81, 0x95, 0xa2, 0x40,
5054 0x95, 0x6c, 0x00, 0x00, 0x99, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00,
5055 0x00, 0x82, 0x00, 0xa6, 0x04, 0xb0, 0x01, 0x00, 0xa0, 0x98, 0x2f, 0x40,
5056 0x11, 0xb0, 0x01, 0x00, 0x30, 0x05, 0x00, 0x41, 0x89, 0xb0, 0x00, 0x00,
5057 0x00, 0x00, 0x9f, 0xf8, 0x3e, 0xec, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x12,
5058 0xe0, 0xed, 0x00, 0x00, 0xc8, 0x00, 0x20, 0xab, 0xe1, 0xb1, 0x01, 0x00,
5059 0xcc, 0x00, 0xa0, 0x1f, 0xe0, 0xb1, 0x01, 0x00, 0x8a, 0x95, 0xa3, 0x5f,
5060 0xe7, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xe7, 0xc1, 0x01, 0x00,
5061 0xa6, 0x00, 0x00, 0x40, 0x47, 0x99, 0x01, 0x00, 0x9e, 0x95, 0x22, 0xf2,
5062 0x86, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x43, 0x84, 0xf4, 0x01, 0x00,
5063 0x01, 0x00, 0x00, 0x41, 0x80, 0xcc, 0x01, 0x00, 0xb8, 0x00, 0x2d, 0x42,
5064 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x62, 0x40, 0x86, 0xc0, 0x01, 0x00,
5065 0x92, 0x95, 0x1f, 0x43, 0x80, 0x32, 0x00, 0x00, 0x93, 0x95, 0xa2, 0x40,
5066 0x87, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x62, 0x41, 0x87, 0xb0, 0x01, 0x00,
5067 0x97, 0x95, 0x9f, 0x40, 0x80, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
5068 0x85, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x84, 0xd0, 0x01, 0x00,
5069 0x00, 0x00, 0x00, 0x42, 0x80, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf2,
5070 0x88, 0xb0, 0x01, 0x00, 0x02, 0x00, 0x00, 0x44, 0x84, 0xf4, 0x01, 0x00,
5071 0xb8, 0x00, 0x2e, 0x42, 0x80, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x62, 0x40,
5072 0x88, 0xc0, 0x01, 0x00, 0x9d, 0x95, 0x1f, 0x44, 0x80, 0x32, 0x00, 0x00,
5073 0xa1, 0x95, 0xa2, 0x40, 0x89, 0x6c, 0x00, 0x00, 0xa1, 0x95, 0x62, 0x41,
5074 0x89, 0xb0, 0x00, 0x00, 0x03, 0x00, 0x62, 0x41, 0x86, 0xe4, 0x01, 0x00,
5075 0xb8, 0x00, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00, 0x01, 0x00, 0x62, 0x41,
5076 0x88, 0xe4, 0x01, 0x00, 0xa4, 0x00, 0x20, 0x40, 0xe5, 0xb1, 0x01, 0x00,
5077 0xa2, 0x00, 0x20, 0x40, 0xe7, 0xb1, 0x01, 0x00, 0xbc, 0x00, 0x2e, 0x43,
5078 0x87, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x86, 0xc0, 0x01, 0x00,
5079 0xa7, 0x95, 0x20, 0x43, 0x87, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x43,
5080 0xe5, 0xb1, 0x01, 0x00, 0x40, 0x01, 0x00, 0x43, 0x80, 0xce, 0x01, 0x00,
5081 0x00, 0x00, 0xa4, 0x43, 0xe4, 0x31, 0x01, 0x00, 0x40, 0x01, 0xe2, 0x40,
5082 0x87, 0x98, 0x01, 0x00, 0x88, 0x00, 0x2d, 0x44, 0x81, 0xb0, 0x01, 0x00,
5083 0x90, 0x00, 0x2d, 0xf2, 0x2e, 0xb0, 0x01, 0x00, 0x9c, 0x00, 0x2d, 0xf0,
5084 0x86, 0xb0, 0x01, 0x00, 0x90, 0x00, 0x2d, 0xf0, 0x82, 0xb0, 0x01, 0x00,
5085 0xba, 0x00, 0x2d, 0xf0, 0x98, 0xb0, 0x01, 0x00, 0xb4, 0x95, 0xa2, 0x12,
5086 0x98, 0x6c, 0x00, 0x00, 0xbc, 0x00, 0x2d, 0xf2, 0x98, 0xb0, 0x01, 0x00,
5087 0xb4, 0x95, 0xa0, 0xf2, 0x98, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17,
5088 0x82, 0xb0, 0x01, 0x00, 0x9c, 0x00, 0x20, 0x41, 0xe0, 0xb1, 0x01, 0x00,
5089 0xb4, 0x00, 0x2d, 0x12, 0x86, 0xd0, 0x01, 0x00, 0xb7, 0x95, 0xa3, 0x41,
5090 0xe0, 0x6d, 0x00, 0x00, 0xb8, 0x95, 0x00, 0xf0, 0x84, 0xb0, 0x00, 0x00,
5091 0x00, 0x00, 0x00, 0x41, 0x84, 0xb0, 0x01, 0x00, 0x80, 0x00, 0x2d, 0x43,
5092 0x84, 0xd0, 0x01, 0x00, 0xbb, 0x95, 0x9f, 0x42, 0x80, 0x32, 0x00, 0x00,
5093 0x00, 0x00, 0x00, 0x40, 0x85, 0xb0, 0x01, 0x00, 0xbd, 0x95, 0xa3, 0x42,
5094 0x14, 0x6c, 0x00, 0x00, 0xbe, 0x95, 0x00, 0x0a, 0x0c, 0xb0, 0x00, 0x00,
5095 0x00, 0x00, 0x00, 0x42, 0x0c, 0xb0, 0x01, 0x00, 0xc0, 0x95, 0xa0, 0x17,
5096 0x0c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x80, 0x17, 0x0c, 0xb0, 0x01, 0x00,
5097 0xc5, 0x95, 0x22, 0x40, 0x0d, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a,
5098 0x0c, 0xec, 0x00, 0x00, 0x01, 0x00, 0x00, 0xf0, 0x82, 0xf4, 0x01, 0x00,
5099 0xc5, 0x95, 0xa0, 0x41, 0x0c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xf0,
5100 0x80, 0x32, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40, 0x81, 0xb0, 0x01, 0x00,
5101 0x9d, 0x92, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x04, 0x80, 0x00, 0x03,
5102 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0xf0, 0xb1, 0x01, 0x00,
5103 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x60, 0x41,
5104 0x87, 0x94, 0x01, 0x00, 0x00, 0x80, 0x00, 0x10, 0x44, 0xc9, 0x01, 0x00,
5105 0x00, 0x00, 0x00, 0x50, 0xf1, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x48,
5106 0xf0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49, 0xf0, 0xb1, 0x01, 0x00,
5107 0x00, 0x00, 0x00, 0x03, 0xe0, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x45,
5108 0x61, 0xb1, 0x01, 0x00, 0x20, 0x00, 0x00, 0x10, 0x62, 0xdd, 0x01, 0x00,
5109 0x00, 0x00, 0xa8, 0x5d, 0x05, 0x90, 0x00, 0x00, 0xd1, 0x95, 0x00, 0x40,
5110 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x4b, 0x19, 0x90, 0x01, 0x00,
5111 0x05, 0x00, 0x2a, 0x0c, 0xe4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x04,
5112 0xe6, 0xb1, 0x01, 0x00, 0xd7, 0x95, 0x45, 0x48, 0x61, 0x31, 0x00, 0x00,
5113 0x00, 0x10, 0x00, 0x08, 0x62, 0xdd, 0x01, 0x00, 0xdc, 0x95, 0x28, 0x40,
5114 0x87, 0x30, 0x00, 0x00, 0xd8, 0x95, 0x22, 0x48, 0x77, 0x7d, 0x00, 0x00,
5115 0x7e, 0x94, 0x1d, 0x46, 0x87, 0xb0, 0x00, 0x00, 0xdf, 0x95, 0x22, 0x5f,
5116 0x11, 0x7c, 0x00, 0x00, 0x04, 0x00, 0x22, 0x15, 0x62, 0x31, 0x00, 0x00,
5117 0xdd, 0x95, 0xa8, 0x40, 0x81, 0x32, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x40,
5118 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00,
5119 0x00, 0x14, 0x2f, 0x4c, 0x83, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5120 0xf1, 0xb1, 0x01, 0x00, 0xe2, 0x95, 0xa2, 0x41, 0x83, 0x50, 0x00, 0x00,
5121 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5122 0x49, 0xb1, 0x01, 0x00, 0x30, 0x00, 0x00, 0x40, 0xa1, 0x99, 0x01, 0x00,
5123 0x00, 0x00, 0x00, 0x40, 0x93, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5124 0x1f, 0xb0, 0x01, 0x00, 0x35, 0x96, 0x00, 0x49, 0x96, 0x30, 0x01, 0x00,
5125 0x07, 0x00, 0x00, 0x49, 0x06, 0xe4, 0x01, 0x00, 0x00, 0x39, 0x00, 0x03,
5126 0x06, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0xb0, 0x01, 0x00,
5127 0x20, 0x00, 0x00, 0xd0, 0xa0, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x41,
5128 0x93, 0xc0, 0x01, 0x00, 0xe9, 0x95, 0xa0, 0x54, 0x93, 0x6c, 0x00, 0x00,
5129 0x00, 0x00, 0x2e, 0x05, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40,
5130 0x49, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe1, 0xb1, 0x01, 0x00,
5131 0x00, 0x02, 0x00, 0xa2, 0x44, 0xc9, 0x01, 0x00, 0xf2, 0x95, 0xa2, 0x41,
5132 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x49, 0xb3, 0x01, 0x00,
5133 0x3b, 0x96, 0x00, 0x40, 0x49, 0x31, 0x01, 0x00, 0xc8, 0x92, 0x00, 0x40,
5134 0x81, 0x32, 0x01, 0x00, 0x00, 0xb5, 0x2e, 0x08, 0x97, 0xb0, 0x01, 0x00,
5135 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0xf9, 0x95, 0xa2, 0x41,
5136 0x97, 0x50, 0x00, 0x00, 0x18, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
5137 0x00, 0x97, 0x2e, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5138 0xf1, 0xb1, 0x01, 0x00, 0xfd, 0x95, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5139 0x00, 0x00, 0x00, 0x40, 0x49, 0xb1, 0x01, 0x00, 0x40, 0x18, 0x2e, 0x05,
5140 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
5141 0x01, 0x96, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x57, 0x95, 0x20, 0x40,
5142 0xe7, 0xb1, 0x01, 0x00, 0x30, 0x94, 0x00, 0x40, 0x45, 0x99, 0x01, 0x00,
5143 0x64, 0x00, 0x00, 0x40, 0xe5, 0x99, 0x01, 0x00, 0x56, 0x95, 0x20, 0x40,
5144 0xe7, 0xb1, 0x01, 0x00, 0xb8, 0x94, 0x20, 0x41, 0xe5, 0xb1, 0x01, 0x00,
5145 0xba, 0x94, 0x20, 0x41, 0xe5, 0xb1, 0x01, 0x00, 0x98, 0x94, 0x00, 0x40,
5146 0x45, 0x99, 0x01, 0x00, 0x02, 0x00, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00,
5147 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00, 0x0b, 0x96, 0xa2, 0x41,
5148 0x97, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x97, 0xb0, 0x01, 0x00,
5149 0x00, 0x00, 0x00, 0x40, 0x6f, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5150 0x68, 0xb1, 0x01, 0x00, 0x0f, 0x96, 0x85, 0x41, 0x97, 0x40, 0x00, 0x00,
5151 0x80, 0x04, 0x00, 0x40, 0x81, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5152 0x39, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x37, 0xb3, 0x01, 0x00,
5153 0x00, 0x00, 0x00, 0x40, 0x35, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5154 0x33, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x41, 0xb3, 0x01, 0x00,
5155 0x00, 0x00, 0x00, 0x40, 0x3f, 0xb3, 0x01, 0x00, 0xee, 0x05, 0x00, 0x40,
5156 0x25, 0x9b, 0x01, 0x00, 0x42, 0x00, 0x00, 0x40, 0x4b, 0x9b, 0x01, 0x00,
5157 0x00, 0x00, 0x00, 0x40, 0x2f, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5158 0x2d, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x47, 0xb3, 0x01, 0x00,
5159 0x00, 0x00, 0x00, 0x40, 0x43, 0xb3, 0x01, 0x00, 0x60, 0x00, 0x00, 0x40,
5160 0x2b, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0xef, 0x93, 0x01, 0x00,
5161 0x00, 0x00, 0x00, 0x55, 0xf1, 0x93, 0x01, 0x00, 0xff, 0xff, 0x00, 0xa5,
5162 0x3c, 0x8b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x5b, 0xb3, 0x01, 0x00,
5163 0x00, 0x00, 0x00, 0x2c, 0x45, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5164 0x59, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x57, 0xb3, 0x01, 0x00,
5165 0x00, 0x00, 0x00, 0x40, 0x27, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5166 0x53, 0xb3, 0x01, 0x00, 0x2b, 0x96, 0xa2, 0x50, 0xfd, 0x7f, 0x00, 0x00,
5167 0x2b, 0x96, 0xa2, 0x51, 0xfd, 0x7f, 0x00, 0x00, 0x2c, 0x96, 0x00, 0x40,
5168 0x1d, 0xb3, 0x00, 0x00, 0x50, 0x46, 0x00, 0x40, 0x1d, 0x9b, 0x01, 0x00,
5169 0x00, 0xc0, 0x00, 0xa6, 0x88, 0xb3, 0x01, 0x00, 0xff, 0x3f, 0x00, 0xa6,
5170 0x3a, 0xb3, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x9d, 0x3b, 0x9b, 0x01, 0x00,
5171 0xb4, 0x05, 0x00, 0x40, 0x23, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5172 0x4d, 0xb3, 0x01, 0x00, 0x08, 0x0a, 0x00, 0xa6, 0x14, 0xb3, 0x01, 0x00,
5173 0x01, 0x01, 0x00, 0x8a, 0x15, 0x9b, 0x01, 0x00, 0x00, 0x80, 0x00, 0xa6,
5174 0x56, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x80, 0x5e, 0x57, 0xb5, 0x01, 0x00,
5175 0x18, 0x00, 0x00, 0x4b, 0x20, 0xe4, 0x01, 0x00, 0x06, 0x00, 0x00, 0x4b,
5176 0x96, 0xe4, 0x01, 0x00, 0x00, 0x43, 0x00, 0x4b, 0x96, 0xc8, 0x01, 0x00,
5177 0x18, 0x00, 0x00, 0x10, 0x20, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4b,
5178 0x20, 0x94, 0x01, 0x00, 0x00, 0x00, 0x80, 0x57, 0x21, 0x90, 0x01, 0x00,
5179 0x00, 0x99, 0x2e, 0x0a, 0x97, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40,
5180 0xf1, 0xb1, 0x01, 0x00, 0x3c, 0x96, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5181 0x00, 0x03, 0x00, 0x40, 0x97, 0x98, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x40,
5182 0x45, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0xf1, 0xb1, 0x01, 0x00,
5183 0x40, 0x96, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40,
5184 0x97, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x55, 0x61, 0xb1, 0x01, 0x00,
5185 0x00, 0x00, 0x00, 0x4b, 0x62, 0xb1, 0x01, 0x00, 0x44, 0x96, 0xa8, 0x40,
5186 0x81, 0x32, 0x00, 0x00, 0x44, 0x96, 0xa2, 0x41, 0x97, 0x50, 0x00, 0x00,
5187 0x00, 0x00, 0x80, 0x40, 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x80, 0x40,
5188 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5189 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5190 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5191 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5192 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5193 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5194 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5195 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5196 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5197 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5198 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5199 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5200 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5201 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5202 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5203 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5204 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5205 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5206 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5207 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5208 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5209 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5210 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5211 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5212 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5213 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5214 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5215 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5216 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5217 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5218 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5219 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5220 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5221 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5222 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5223 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5224 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5225 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5226 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5227 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5228 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5229 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5230 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5231 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5232 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5233 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5234 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5235 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5236 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5237 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5238 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5239 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5240 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5241 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5242 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5243 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5244 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5245 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5246 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5247 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5248 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5249 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5250 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5251 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5252 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5253 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5254 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5255 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5256 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5257 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5258 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5259 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5260 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5261 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5262 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5263 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5264 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5265 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5266 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5267 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5268 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5269 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5270 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5271 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5272 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5273 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5274 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5275 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5276 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5277 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5278 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5279 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5280 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5281 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5282 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5283 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5284 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5285 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5286 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5287 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5288 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5289 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5290 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5291 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5292 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5293 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5294 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5295 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5296 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5297 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5298 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5299 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5300 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5301 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5302 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5303 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5304 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5305 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5306 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5307 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5308 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5309 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5310 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5311 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5312 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5313 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5314 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5315 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5316 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5317 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5318 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5319 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5320 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5321 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5322 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5323 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5324 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5325 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5326 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5327 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5328 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5329 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5330 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5331 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5332 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5333 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5334 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5335 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5336 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5337 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5338 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5339 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5340 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5341 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5342 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5343 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5344 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5345 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5346 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5347 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5348 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5349 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5350 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5351 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5352 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5353 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5376 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5377 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5378 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5379 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5380 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5381 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5382 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5383 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5384 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5385 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5386 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5387 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5388 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5389 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5390 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5391 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5392 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5393 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5394 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5395 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5396 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5397 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5398 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5399 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5400 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5401 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5402 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5403 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5404 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5405 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5406 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5407 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5408 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5409 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5410 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5411 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5412 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5413 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5414 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5415 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5416 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5417 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5418 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5419 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5420 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5421 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5422 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5423 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5424 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5425 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5426 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5427 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5428 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5429 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5430 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5431 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5432 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5433 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5434 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5435 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5436 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5437 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5438 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5439 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5440 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5441 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5442 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5443 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5444 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5445 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5446 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5447 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5448 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5449 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5450 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5451 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5454 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5455 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5456 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5457 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5458 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5459 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5460 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5461 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5465 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5466 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5467 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5468 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5469 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5470 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5471 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5472 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5473 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5474 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5475 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5476 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5483 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5484 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5485 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5486 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5487 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5488 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5492 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5493 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5494 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5495 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5496 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5497 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5498 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5499 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5500 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5501 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5502 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5503 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5504 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5505 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5506 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5507 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5508 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5509 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5510 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5511 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5512 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5513 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5514 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5515 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5516 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5517 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5518 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5519 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5520 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5524 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5525 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5526 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5527 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5528 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5529 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5530 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5531 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5532 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5533 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5534 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5535 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5536 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5537 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5538 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5539 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5540 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5541 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5542 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5543 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5544 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5545 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5546 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5547 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5548 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5549 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5550 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5551 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5552 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5553 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5554 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5555 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5556 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5557 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5558 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5559 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5560 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5561 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5562 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5563 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5564 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5565 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5566 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5567 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5568 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5569 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5570 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5571 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5572 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5573 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5574 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5575 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5577 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5578 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5579 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5580 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5581 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5582 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5583 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5584 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5585 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5586 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5587 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5588 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5589 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5590 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5591 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5592 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5593 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5594 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5595 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5596 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5597 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5598 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5599 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5600 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5601 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5602 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5603 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5604 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5605 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5606 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5607 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5608 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5609 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5610 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5611 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5612 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5614 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5615 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5616 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5617 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5618 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5619 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5620 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5621 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5622 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5623 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5624 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5625 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5626 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5627 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5628 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5629 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5630 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5631 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5632 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5633 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5638 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5639 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5640 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5641 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5642 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5643 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5644 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5645 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5646 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5647 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5648 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5649 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5650 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5651 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5652 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5653 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5654 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5655 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5656 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5657 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5658 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5659 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5660 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5661 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5662 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5663 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5664 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5665 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5666 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5668 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5670 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5744 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5745 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5746 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5747 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5748 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5749 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5750 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5751 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5752 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5753 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5760 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5761 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5762 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5763 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5764 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5765 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5767 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5768 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5769 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5770 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5771 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5772 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5773 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5774 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5775 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5776 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5777 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5778 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5779 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5780 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5787 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5788 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5789 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5790 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5791 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5792 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5793 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5794 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5795 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5796 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5797 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5798 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5799 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5800 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5801 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5802 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5803 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5804 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5805 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5806 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5807 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5808 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5809 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5810 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5811 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5812 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5813 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5814 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5815 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5816 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5817 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5818 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5819 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5820 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5821 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5822 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5823 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5824 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5825 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5826 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5827 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5828 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5829 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5830 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5831 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5832 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5833 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5834 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5840 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5841 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5842 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5843 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5844 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5845 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5846 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5847 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5848 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5849 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5850 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5851 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5852 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5853 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5854 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5855 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5856 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5857 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5858 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5859 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5860 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5861 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5862 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5863 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5864 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5865 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5866 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5867 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5868 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5869 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5870 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5871 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5872 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5873 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5874 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5875 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5876 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5877 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5878 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5879 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5880 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5881 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5882 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5883 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5884 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5885 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5886 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5887 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5888 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5889 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5890 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5891 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5892 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5893 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5894 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5895 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5896 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5897 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5898 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5899 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5900 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5901 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5902 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5903 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5904 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5905 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5906 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5907 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5908 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5909 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5910 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5911 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5912 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5913 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5914 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5915 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5916 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5917 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5918 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5919 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5920 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5921 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5922 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5923 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5924 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5925 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5926 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5927 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5928 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5929 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5930 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5931 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5932 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5933 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5934 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5935 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5936 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5937 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5938 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5939 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5940 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5941 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5942 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5943 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5944 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5945 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5946 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5947 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5948 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5949 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5950 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5951 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5952 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5953 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5954 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5955 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5956 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5957 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5958 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5959 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5960 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5961 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5962 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5963 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5964 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5965 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5966 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5967 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5968 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5969 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5970 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5971 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5972 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5973 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5974 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5975 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5976 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5977 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5978 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5979 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5980 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5981 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5982 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5983 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5984 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5985 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5986 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5987 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5988 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5989 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5990 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5991 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5992 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5993 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5994 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5995 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5996 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5997 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
5998 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
5999 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6000 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6001 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6002 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6003 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6004 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6005 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6006 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6007 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6008 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6009 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6010 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6011 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6012 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6013 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6014 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6015 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6016 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6017 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6018 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6019 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6020 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6021 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6022 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6023 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6024 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6025 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6026 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6027 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6028 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6029 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6030 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6031 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6032 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6033 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6034 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6035 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6036 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6037 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6038 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6039 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6040 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6041 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6042 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6043 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6044 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6045 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6046 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6047 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6048 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6049 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6050 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6051 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6052 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6053 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6054 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6055 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6056 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6057 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6058 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6059 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6060 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6061 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6062 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6063 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6064 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6065 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6066 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6067 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6068 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6069 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6070 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6071 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6072 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6073 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6074 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6075 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6076 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6077 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6078 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6079 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6080 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6081 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6082 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6083 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6084 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6085 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6086 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6087 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6088 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6089 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6090 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6091 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6092 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6093 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6094 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6095 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6096 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6097 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6098 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6099 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6100 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6101 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6102 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6103 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6104 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6105 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6106 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6107 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6108 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6109 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6110 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6111 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6112 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6113 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6114 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6115 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6116 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6117 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6118 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6119 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6120 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6121 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6122 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6123 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6124 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6125 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6126 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6127 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6128 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6129 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6130 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6131 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6132 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6133 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6134 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6135 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6136 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6137 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6138 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6139 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6140 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6141 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6142 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6143 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6144 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6145 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6146 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6147 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6148 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6149 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6150 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6151 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6152 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6153 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6154 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6155 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6156 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6157 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6158 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6159 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6160 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6161 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6162 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6163 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6164 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6165 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6166 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6167 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6168 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6169 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6170 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6171 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6172 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6173 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6174 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6175 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6176 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6177 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6178 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6179 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6180 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6181 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6182 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6183 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6184 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6185 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6186 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6187 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6188 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6189 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6190 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6191 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6192 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6193 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6194 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6195 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6196 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6197 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6198 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6199 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6200 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6201 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6202 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6203 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6204 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6205 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6206 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6207 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6208 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6209 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6210 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6211 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6212 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6213 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6214 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6215 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6216 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6217 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6218 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6219 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6220 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6221 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6222 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6223 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6224 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6225 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6226 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6227 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6228 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6229 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6230 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6231 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6232 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6233 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6234 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6235 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6236 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6237 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6238 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6239 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6240 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6241 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6242 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6243 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6244 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6245 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6246 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6247 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6248 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6249 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6250 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6251 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6252 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6253 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6254 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6255 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6256 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6257 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6258 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6259 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6260 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6261 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6262 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6263 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6264 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6265 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6266 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6267 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6268 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6269 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6270 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6271 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6272 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6273 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6274 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6275 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6276 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6277 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6278 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6279 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6280 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6281 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6282 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6283 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6284 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6285 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6286 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6287 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6288 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6289 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6290 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6291 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6292 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6293 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6294 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6295 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6296 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6297 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6298 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6299 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6300 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6301 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6302 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6303 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6304 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6305 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6306 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6307 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6308 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6309 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6310 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6311 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6312 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6313 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6314 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6315 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6316 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6317 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6318 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6319 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6320 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6321 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6322 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6323 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6324 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6325 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6326 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6327 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6328 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6329 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6330 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6331 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6332 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6333 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6334 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6335 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6336 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6337 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6338 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6339 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6340 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6341 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6342 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6343 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6344 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6345 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6346 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6347 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6348 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6349 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6350 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6351 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6352 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6353 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6354 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6355 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6356 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6357 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6358 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6359 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6360 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6361 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6362 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6363 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6364 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6365 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6366 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6367 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6368 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6369 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6370 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6371 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6372 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6373 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6374 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6375 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6376 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6377 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6378 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6379 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6380 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6381 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6382 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6383 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6384 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6385 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6386 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6387 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6388 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6389 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6390 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6391 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6392 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6393 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6394 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6395 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6396 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6397 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6398 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6399 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6400 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6401 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6402 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6403 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6404 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6405 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6406 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6407 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6408 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6409 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6410 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6411 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6412 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6413 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6414 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6415 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6416 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6417 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6418 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6419 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6420 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6421 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6422 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6423 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6424 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6425 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6426 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6427 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6428 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6429 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6430 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6431 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6432 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6433 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6434 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6435 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6436 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6437 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6438 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6439 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6440 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6441 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6442 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6443 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6444 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6445 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6446 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6447 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6448 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6449 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6450 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6451 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6452 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6453 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6454 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6455 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6456 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6457 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6458 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6459 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6460 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6461 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6462 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6463 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6464 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6465 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6466 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6467 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6468 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6469 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6470 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6471 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6472 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6473 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6474 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6475 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6476 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6477 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6478 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6479 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6480 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6481 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6482 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6483 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6484 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6485 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6486 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6487 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6488 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6489 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6490 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6491 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6492 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6493 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6494 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6495 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6496 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6497 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6498 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6499 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6500 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6501 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6502 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6503 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6504 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6505 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6506 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6507 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6508 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6509 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6510 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6511 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6512 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6513 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6514 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6515 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6516 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6517 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6518 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6519 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6520 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6521 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6522 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6523 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6524 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6525 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6526 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6527 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6528 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6529 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6530 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6531 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6532 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6533 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6534 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6535 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6536 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6537 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6538 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6539 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6540 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6541 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6542 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6543 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6544 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6545 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6546 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6547 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6548 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6549 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6550 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6551 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6552 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6553 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6554 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6555 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6556 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6557 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6558 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6559 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6560 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6561 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6562 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6563 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6564 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6565 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6566 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6567 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6568 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6569 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6570 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6571 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6572 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6573 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6574 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6575 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6576 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6577 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6578 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6579 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6580 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6581 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6582 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6583 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6584 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6585 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6586 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6587 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6588 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6589 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6590 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6591 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6592 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6593 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6594 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6595 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6596 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6597 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6598 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6599 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6600 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6601 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6602 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6603 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6604 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6605 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6606 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6607 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6608 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6609 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6610 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6611 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6612 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6613 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6614 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6615 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6616 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6617 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6618 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6619 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6620 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6621 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6622 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6623 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6624 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6625 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6626 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6627 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6628 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6629 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6630 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6631 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6632 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6633 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6634 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6635 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6636 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6637 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6638 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6639 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6640 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6641 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6642 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6643 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6644 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6645 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6646 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6647 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6648 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6649 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6650 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6651 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6652 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6653 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6654 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6655 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6656 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6657 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6658 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6659 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6660 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6661 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6662 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6663 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6664 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6665 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6666 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6667 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6668 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6669 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6670 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6671 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6672 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6673 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6674 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6675 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6676 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6677 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6678 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6679 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6680 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6681 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6682 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6683 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6684 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6685 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6686 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6687 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6688 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6689 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6690 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6691 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6692 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6693 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6694 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6695 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6696 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6697 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6698 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6699 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6700 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6701 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6702 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6703 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6704 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6705 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6706 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6707 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6708 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6709 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6710 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6711 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6712 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6713 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6714 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6715 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6716 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6717 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6718 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6719 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6720 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6721 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6722 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6723 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6724 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6725 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6726 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6727 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6728 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6729 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6730 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6731 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6732 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6733 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6734 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6735 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6736 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6737 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6738 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6739 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6740 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6741 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6742 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6743 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6744 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6745 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6746 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6747 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6748 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6749 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6750 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6751 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6752 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6753 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6754 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6755 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6756 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6757 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6758 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6759 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6760 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6761 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6762 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6763 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6764 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6765 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6766 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6767 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6768 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6769 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6770 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6771 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6772 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6773 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6774 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6775 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6776 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6777 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6778 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6779 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6780 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6781 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6782 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6783 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6784 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6785 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6786 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6787 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88,
6788 0x9a, 0xb0, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00,
6789 0xae, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88,
6790 0x9a, 0xb0, 0x00, 0x00, 0xae, 0x9f, 0x00, 0x88, 0x9a, 0xb0, 0x00, 0x00,
6791 0x00, 0x00, 0x00, 0x88, 0x9a, 0xb0, 0x01, 0x00, 0xae, 0x9f, 0x41, 0x40,
6792 0x81, 0x32, 0x00, 0x00, 0xb2, 0x9f, 0x22, 0x40, 0x7b, 0x6f, 0x00, 0x00,
6793 0x00, 0x00, 0x19, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xae, 0x9f, 0x00, 0x40,
6794 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x19, 0x41, 0x7b, 0xb3, 0x01, 0x00,
6795 0x00, 0x00, 0x00, 0xa4, 0xc4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa1,
6796 0xc6, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x2f, 0xa2, 0xc8, 0xb3, 0x01, 0x00,
6797 0x08, 0x14, 0x00, 0x40, 0x49, 0x99, 0x01, 0x00, 0xa8, 0x9f, 0x00, 0x4d,
6798 0x9a, 0xcc, 0x01, 0x00, 0xbb, 0x9f, 0x26, 0x40, 0x81, 0x32, 0x00, 0x00,
6799 0x00, 0x00, 0x00, 0x4c, 0x49, 0xc1, 0x01, 0x00, 0xb9, 0x9f, 0xa2, 0x41,
6800 0x9b, 0x50, 0x00, 0x00, 0xbf, 0x9f, 0x80, 0x80, 0x80, 0x32, 0x00, 0x00,
6801 0x00, 0x00, 0x52, 0x49, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4a,
6802 0xfd, 0x93, 0x01, 0x00, 0xc2, 0x9f, 0x00, 0x42, 0xcd, 0x93, 0x00, 0x00,
6803 0x00, 0x00, 0x51, 0x4a, 0xfd, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x49,
6804 0xfd, 0x93, 0x01, 0x00, 0xc2, 0x9f, 0x00, 0x43, 0xcb, 0x93, 0x00, 0x00,
6805 0x00, 0x00, 0x50, 0x40, 0x81, 0xb2, 0x01, 0x00, 0xd2, 0x9f, 0x00, 0x40,
6806 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x9a, 0xb0, 0x01, 0x00,
6807 0x00, 0x00, 0x00, 0x44, 0x49, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x40, 0xf0,
6808 0x80, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x41, 0x4d, 0x80, 0xb2, 0x01, 0x00,
6809 0xca, 0x9f, 0x00, 0x40, 0x19, 0x99, 0x01, 0x00, 0x00, 0x00, 0x4c, 0x40,
6810 0x81, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x49, 0xd1, 0x01, 0x00,
6811 0x00, 0x00, 0x00, 0xf0, 0x9a, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4d,
6812 0x10, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x49, 0xb1, 0x01, 0x00,
6813 0x00, 0x00, 0x00, 0xe3, 0x43, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0xe4,
6814 0x45, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7b, 0xb3, 0x01, 0x00,
6815 0x00, 0x00, 0x48, 0x4f, 0x40, 0xb1, 0x01, 0x00, 0xd2, 0x9f, 0x00, 0x40,
6816 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6817 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6818 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6819 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0xcb,
6820 0x81, 0xc8, 0x01, 0x00, 0xf4, 0x82, 0x00, 0x40, 0xf2, 0x93, 0x00, 0x00,
6821 0x40, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x40, 0x05, 0x00, 0x40,
6822 0x81, 0xb2, 0x00, 0x00, 0x18, 0x06, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6823 0xf4, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xaf, 0x82, 0x00, 0x40,
6824 0x81, 0xb2, 0x00, 0x00, 0x38, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6825 0x36, 0x81, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xb8, 0x80, 0x00, 0x40,
6826 0x81, 0xb2, 0x00, 0x00, 0x14, 0x87, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6827 0xaf, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xf5, 0x82, 0x00, 0x40,
6828 0x81, 0xb2, 0x00, 0x00, 0x94, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6829 0xd7, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x5d, 0x92, 0x00, 0x40,
6830 0x81, 0xb2, 0x00, 0x00, 0xc6, 0x95, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6831 0x33, 0x93, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0xd6, 0x92, 0x00, 0x40,
6832 0x81, 0xb2, 0x00, 0x00, 0xd0, 0x92, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6833 0x9a, 0x82, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
6834 0x81, 0xb2, 0x01, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6835 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6836 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6837 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6838 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6839 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6840 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6841 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6842 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6843 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6844 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00,
6845 0x04, 0x00, 0x00, 0x40, 0x81, 0xb2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40,
6846 0x81, 0xb2, 0x00, 0x00,
6847 },
6848};
diff --git a/drivers/staging/slicoss/oasisrcvucode.h b/drivers/staging/slicoss/oasisrcvucode.h
new file mode 100644
index 00000000000..5b3531f04cb
--- /dev/null
+++ b/drivers/staging/slicoss/oasisrcvucode.h
@@ -0,0 +1,205 @@
1#define OASIS_RCVUCODE_VERS_STRING "1.2"
2#define OASIS_RCVUCODE_VERS_DATE "2006/03/27 15:10:28"
3
4static u32 OasisRcvUCodeLen = 512;
5
6static u8 OasisRcvUCode[2560] =
7{
80x47, 0x75, 0x01, 0x00, 0x04, 0xa0, 0x13, 0x01, 0x00, 0x1c, 0xb7, 0x5b, 0x09,
90x30, 0x00, 0xb6, 0x5f, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x18, 0x3b,
100x78, 0x3a, 0x00, 0x1c, 0xa2, 0x77, 0x01, 0x00, 0x1c, 0x07, 0x1d, 0x01, 0x70,
110x18, 0xad, 0x7b, 0xf1, 0xff, 0x1c, 0xb3, 0x7b, 0xa9, 0xaa, 0x1e, 0xb4, 0x7b,
120x01, 0x0c, 0x1c, 0xb5, 0x7b, 0x0d, 0x06, 0x1c, 0x00, 0x00, 0x30, 0x64, 0x08,
130x0c, 0x31, 0x5a, 0x70, 0x04, 0x0c, 0x31, 0x5a, 0x80, 0x04, 0x0c, 0x31, 0x4e,
140x90, 0x04, 0x0c, 0x31, 0x4a, 0xa0, 0x00, 0x09, 0x25, 0x55, 0xc0, 0x04, 0x0c,
150x31, 0x52, 0xb0, 0x00, 0xe9, 0x24, 0x55, 0xc0, 0x04, 0xcc, 0xb3, 0x00, 0x1c,
160x1c, 0xeb, 0x2d, 0x01, 0x00, 0x1c, 0x06, 0x56, 0x32, 0xd4, 0x08, 0x07, 0x9d,
170x00, 0x00, 0x1c, 0x7b, 0xb7, 0x02, 0x00, 0x10, 0xa0, 0x0f, 0x31, 0x54, 0x09,
180x06, 0x56, 0x5e, 0xc0, 0x04, 0xa0, 0x30, 0x54, 0x03, 0x00, 0xac, 0x30, 0x55,
190x03, 0x00, 0xcd, 0x03, 0x3a, 0x00, 0x1c, 0x7b, 0xb7, 0x02, 0x00, 0x1c, 0x60,
200x8e, 0x31, 0x54, 0x09, 0x29, 0x25, 0x55, 0x03, 0x00, 0x80, 0x8e, 0x31, 0x54,
210x09, 0x8c, 0x30, 0x91, 0x00, 0x04, 0x47, 0x1c, 0x01, 0x00, 0x1c, 0xa0, 0x0f,
220x31, 0x54, 0x09, 0x00, 0x00, 0x64, 0x00, 0x04, 0x47, 0x1c, 0x65, 0xc0, 0x04,
230x47, 0x1c, 0x55, 0x03, 0x00, 0x6c, 0x30, 0x01, 0x00, 0x1c, 0x4d, 0x34, 0x02,
240x00, 0x1c, 0x7b, 0xb7, 0x02, 0x00, 0x1c, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xc8,
250x83, 0x37, 0x00, 0x1c, 0x80, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x64, 0x00,
260x04, 0xa0, 0x0f, 0x30, 0x54, 0x09, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x7b, 0xfb,
270xf2, 0x00, 0x1c, 0xcc, 0x33, 0x0d, 0x00, 0x1c, 0xb4, 0x7b, 0xfd, 0x03, 0x1c,
280x80, 0x0e, 0x30, 0x54, 0x09, 0xe0, 0xfb, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x8c,
290x03, 0x00, 0xb3, 0x0f, 0x31, 0x54, 0x09, 0x00, 0x00, 0xec, 0x70, 0x04, 0x00,
300x00, 0xec, 0x80, 0x04, 0x00, 0x00, 0x8c, 0x93, 0x00, 0x61, 0x76, 0x8d, 0xc3,
310x04, 0xc0, 0x8d, 0x31, 0x54, 0x09, 0xe0, 0x7b, 0x00, 0xc0, 0x1f, 0xa0, 0xfd,
320xc5, 0x01, 0x00, 0xcc, 0x33, 0x05, 0x00, 0x1c, 0xd4, 0x03, 0x00, 0x3c, 0x1c,
330xd4, 0xd3, 0x1b, 0x00, 0x1c, 0xc0, 0xd3, 0x52, 0x00, 0x1c, 0x00, 0x00, 0x5c,
340x13, 0x04, 0x8e, 0x8e, 0x32, 0x54, 0x09, 0x5b, 0x80, 0x5e, 0x13, 0x04, 0x00,
350x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x94, 0x01, 0x00, 0xa0, 0x0f, 0x31, 0x54,
360x09, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xc0, 0x03, 0xfc, 0x7f, 0x1c, 0xa0, 0x01,
370xa0, 0x01, 0x00, 0x00, 0x00, 0xa4, 0x01, 0x00, 0xa0, 0x0f, 0x31, 0x54, 0x09,
380xc0, 0x03, 0xfc, 0x03, 0x1c, 0xf5, 0x77, 0x01, 0x00, 0x1c, 0x26, 0x7a, 0xe6,
390x05, 0x1c, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xb3, 0x0f, 0x31, 0x54, 0x09, 0xb5,
400x02, 0x02, 0x00, 0x1c, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0x7a, 0x7e, 0x02, 0x00,
410x1c, 0xb5, 0x02, 0x02, 0x00, 0x1c, 0x53, 0x0f, 0x32, 0x54, 0x09, 0xaf, 0x03,
420x01, 0x00, 0x1c, 0x7a, 0x0e, 0x32, 0x54, 0x09, 0xb5, 0x02, 0x02, 0x00, 0x1c,
430x00, 0x00, 0x02, 0x00, 0x1c, 0xa0, 0x3d, 0xaa, 0x11, 0x04, 0x00, 0x00, 0xac,
440x11, 0x04, 0xd4, 0xd3, 0x52, 0x00, 0x1c, 0xb5, 0x3e, 0xb2, 0x01, 0x00, 0x20,
450xfb, 0xfd, 0xff, 0x1f, 0x80, 0x2c, 0x6c, 0x03, 0x00, 0xb9, 0x3a, 0x9e, 0x01,
460x00, 0x75, 0x3b, 0x02, 0x00, 0x1c, 0xa7, 0x1c, 0x01, 0x00, 0x10, 0xdb, 0x83,
470x16, 0x00, 0x1c, 0xc7, 0x1d, 0x21, 0xc1, 0x04, 0xb9, 0x3b, 0x8d, 0xc1, 0x04,
480x8b, 0x2c, 0x01, 0x00, 0x1c, 0x6b, 0x2c, 0x35, 0xc1, 0x04, 0x00, 0x00, 0x78,
490x11, 0x00, 0xcb, 0x2c, 0x79, 0xc1, 0x04, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xa0,
500x0f, 0x31, 0x54, 0x09, 0x54, 0xd0, 0x02, 0x00, 0x1c, 0x49, 0x25, 0xb1, 0x01,
510x00, 0xab, 0x2c, 0x81, 0xc1, 0x04, 0xa7, 0x1d, 0x55, 0x03, 0x00, 0xcc, 0x33,
520x09, 0x00, 0x1c, 0xeb, 0x2d, 0x01, 0x00, 0x1c, 0xea, 0x29, 0x01, 0x00, 0x1c,
530xa0, 0x0f, 0x31, 0x54, 0x09, 0xae, 0x0f, 0x31, 0x54, 0x09, 0xa0, 0x0f, 0x31,
540x54, 0x09, 0xd4, 0x07, 0xfc, 0x03, 0x1c, 0x99, 0x3a, 0x02, 0x00, 0x1c, 0xbb,
550x38, 0x02, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xfc, 0x01,
560x04, 0xdb, 0x3b, 0x7e, 0x00, 0x1c, 0xc7, 0x1d, 0x01, 0x00, 0x1c, 0x26, 0x7a,
570xfa, 0x05, 0x1c, 0x27, 0x1d, 0x01, 0x00, 0x1c, 0xb3, 0x0f, 0x31, 0x54, 0x09,
580x7a, 0x0e, 0x32, 0x54, 0x09, 0x53, 0x0f, 0x32, 0x54, 0x09, 0x7a, 0x0e, 0x32,
590x54, 0x09, 0x53, 0x0f, 0x32, 0x54, 0x09, 0x7a, 0x0e, 0x32, 0x54, 0x09, 0x53,
600x0f, 0x32, 0x54, 0x09, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0x7a, 0x06, 0x02, 0x00,
610x1c, 0x53, 0x0f, 0x32, 0x54, 0x09, 0xaf, 0x03, 0x01, 0x00, 0x1c, 0x7a, 0x0e,
620x32, 0x54, 0x09, 0x53, 0x0f, 0x32, 0x54, 0x09, 0x7a, 0x0e, 0x32, 0x54, 0x09,
630x53, 0x0f, 0x32, 0x54, 0x09, 0x7a, 0x0e, 0x32, 0x54, 0x09, 0x53, 0x0f, 0x32,
640x54, 0x09, 0x7a, 0x0e, 0x32, 0x54, 0x09, 0x00, 0x3d, 0x02, 0x00, 0x1c, 0x00,
650x00, 0x58, 0x12, 0x00, 0xcb, 0x2c, 0x01, 0x00, 0x1c, 0x75, 0x3b, 0x02, 0x00,
660x1c, 0xa7, 0x1c, 0x01, 0x00, 0x10, 0xcb, 0x2f, 0x05, 0x00, 0x1c, 0x60, 0x2c,
670x00, 0x00, 0x1c, 0xc7, 0x1c, 0xc9, 0x02, 0x00, 0xa0, 0x0f, 0x31, 0x54, 0x09,
680x53, 0x07, 0x02, 0x00, 0x1c, 0x46, 0x7a, 0xca, 0x05, 0x1c, 0x7a, 0x0e, 0x32,
690x54, 0x09, 0x40, 0xfa, 0x19, 0x00, 0x1c, 0x00, 0x00, 0x88, 0x02, 0x04, 0x46,
700x7a, 0xca, 0x05, 0x1c, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xa0, 0x0f, 0x31, 0x54,
710x09, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xa0, 0x0f, 0x31, 0x54, 0x09, 0xb3, 0x7b,
720x01, 0xc0, 0x1f, 0x74, 0x0e, 0x30, 0x54, 0x09, 0xc0, 0x03, 0x9c, 0x00, 0x1c,
730x80, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x04, 0x00, 0x00, 0xac,
740x12, 0x05, 0x07, 0x1d, 0x01, 0x00, 0x1c, 0xd4, 0xd3, 0x2b, 0x00, 0x1c, 0xd4,
750xd3, 0x52, 0x00, 0x1c, 0x80, 0x76, 0x7d, 0x13, 0x04, 0x00, 0x00, 0xe0, 0x02,
760x00, 0xa6, 0x7b, 0x95, 0x03, 0x10, 0xc7, 0x9c, 0x00, 0x00, 0x1c, 0x80, 0x2c,
770x00, 0x00, 0x1c, 0x00, 0x00, 0x6c, 0x02, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04,
780xab, 0x2d, 0xd9, 0x12, 0x05, 0x07, 0x1d, 0xb5, 0xc2, 0x04, 0x8b, 0x2d, 0x01,
790x00, 0x1c, 0x69, 0x25, 0x01, 0x00, 0x1c, 0xa6, 0x7b, 0x95, 0x03, 0x10, 0xcb,
800x2f, 0x09, 0x00, 0x1c, 0x60, 0x2c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x48, 0x03,
810x00, 0x53, 0x0f, 0x32, 0x54, 0x09, 0x46, 0x7a, 0xca, 0x05, 0x1c, 0x7a, 0x0e,
820x32, 0x54, 0x09, 0x40, 0xfa, 0x19, 0x00, 0x1c, 0x00, 0x00, 0x10, 0x03, 0x04,
830x46, 0x7a, 0xca, 0x05, 0x1c, 0xb5, 0x0f, 0x31, 0x54, 0x09, 0xa0, 0x0f, 0x31,
840x54, 0x09, 0x73, 0xec, 0x2a, 0x03, 0x04, 0x60, 0x2c, 0x00, 0x00, 0x1c, 0x00,
850x00, 0x28, 0x03, 0x00, 0xc7, 0x1c, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x28, 0x13,
860x05, 0x07, 0x1d, 0x01, 0x00, 0x1c, 0xc0, 0xd7, 0x22, 0x00, 0x1c, 0x75, 0x56,
870x7e, 0x13, 0x04, 0x60, 0x2c, 0x00, 0x00, 0x1c, 0xe7, 0x1c, 0x45, 0x03, 0x04,
880xe7, 0x9c, 0x00, 0x00, 0x1c, 0xa6, 0x7b, 0x95, 0x03, 0x10, 0x80, 0x2c, 0x00,
890x00, 0x1c, 0x00, 0x00, 0xf8, 0x02, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0xb9,
900x7b, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x8c, 0xc3, 0x04, 0xcb, 0xaf, 0xfc, 0x07,
910x1c, 0xcb, 0x2f, 0x01, 0x04, 0x1c, 0xc7, 0x9f, 0x80, 0x03, 0x1c, 0x00, 0x00,
920x8c, 0xc3, 0x04, 0xcb, 0xaf, 0xfc, 0x07, 0x1c, 0xcb, 0x2f, 0x0d, 0x04, 0x1c,
930xc7, 0x9f, 0x80, 0x03, 0x1c, 0x00, 0x00, 0x8c, 0xc3, 0x04, 0xcb, 0xaf, 0x00,
940xf8, 0x1d, 0xcb, 0x2f, 0x01, 0x00, 0x1d, 0xa6, 0x7b, 0x95, 0x03, 0x1c, 0xc7,
950x9c, 0x8c, 0xc3, 0x04, 0x00, 0x00, 0x8c, 0x13, 0x05, 0x07, 0x1d, 0x01, 0x00,
960x1c, 0xc0, 0x1d, 0xdc, 0xd3, 0x08, 0x27, 0x9d, 0xe4, 0x03, 0x00, 0xa0, 0xee,
970x46, 0xd4, 0x00, 0xfb, 0x75, 0x09, 0x14, 0x04, 0x20, 0x7b, 0x06, 0x00, 0x1c,
980xc0, 0x1c, 0x1c, 0x04, 0x00, 0x00, 0x00, 0xb0, 0xd3, 0x08, 0x00, 0x00, 0x00,
990xf4, 0x00, 0xc0, 0xef, 0xf2, 0x00, 0x1c, 0x20, 0x25, 0x5c, 0x14, 0x04, 0x60,
1000xb7, 0xd2, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x15, 0x00, 0xcc, 0xb3, 0xfc, 0x03,
1010x1c, 0xcc, 0x33, 0x05, 0x02, 0x1c, 0x00, 0x00, 0x0c, 0xc5, 0x04, 0x60, 0xb7,
1020x0e, 0x05, 0x04, 0x00, 0x00, 0x0c, 0x15, 0x04, 0x00, 0x00, 0x5c, 0xc4, 0x04,
1030xc0, 0x1d, 0x98, 0xf3, 0x04, 0x00, 0x00, 0x68, 0xc4, 0x04, 0x07, 0x9d, 0x00,
1040x00, 0x1c, 0x1b, 0x74, 0xfd, 0xf3, 0x04, 0xa6, 0x7b, 0xf1, 0x03, 0x1c, 0xa0,
1050x0f, 0x69, 0x54, 0x09, 0xe0, 0x7b, 0x00, 0xfc, 0x1f, 0x39, 0x7f, 0x02, 0x00,
1060x1c, 0x07, 0x1d, 0x9d, 0xc3, 0x04, 0xa6, 0x7b, 0xad, 0x03, 0x1c, 0x00, 0x00,
1070x68, 0xc4, 0x04, 0xe0, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xa4, 0x03, 0x04,
1080xcb, 0xaf, 0x00, 0xf8, 0x1d, 0xcb, 0x2f, 0x01, 0x10, 0x1d, 0x00, 0x00, 0xac,
1090xc3, 0x04, 0x00, 0x00, 0xac, 0x03, 0x04, 0xcb, 0xaf, 0x00, 0xf8, 0x1d, 0xcb,
1100x2f, 0x01, 0x18, 0x1d, 0xc7, 0x9f, 0x00, 0x0b, 0x1c, 0x00, 0x00, 0xac, 0xc3,
1110x04, 0xfb, 0x75, 0x01, 0x00, 0x1c, 0x07, 0x1d, 0x01, 0x00, 0x1c, 0xcc, 0xb3,
1120xfc, 0x03, 0x1c, 0xcc, 0x33, 0x01, 0x02, 0x1c, 0x00, 0x00, 0xac, 0xc3, 0x04,
1130xa0, 0x1c, 0x00, 0x00, 0x1c, 0xa0, 0xee, 0xa2, 0x03, 0x04, 0xcb, 0xaf, 0xfc,
1140x07, 0x1c, 0xcb, 0x2f, 0x09, 0x04, 0x1c, 0xfb, 0x75, 0x01, 0x00, 0x1c, 0x00,
1150x00, 0xac, 0xc3, 0x04, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x01, 0x02,
1160x1c, 0x00, 0x00, 0x0c, 0xc5, 0x04, 0x00, 0x00, 0x78, 0x34, 0x05, 0xcc, 0xb3,
1170xfc, 0x03, 0x1c, 0xcc, 0x33, 0x15, 0x02, 0x1c, 0x47, 0x9d, 0x54, 0xc4, 0x04,
1180x00, 0x00, 0x78, 0x44, 0x00, 0x80, 0x1d, 0x7c, 0x54, 0x04, 0x87, 0x1d, 0x8d,
1190x04, 0x00, 0xce, 0x76, 0x01, 0x00, 0x1c, 0xef, 0x76, 0x9d, 0xc4, 0x04, 0xa4,
1200x77, 0x8d, 0x24, 0x09, 0xe4, 0x76, 0x01, 0x00, 0x1c, 0xc4, 0x76, 0x01, 0x00,
1210x1c, 0x00, 0x00, 0x98, 0x54, 0x04, 0xd7, 0x76, 0x01, 0x50, 0x18, 0xf6, 0x76,
1220x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x10,
1230xcc, 0x30, 0x45, 0xc5, 0x04, 0xeb, 0x2d, 0x01, 0x00, 0x1c, 0xea, 0x29, 0x01,
1240x00, 0x1c, 0xc0, 0x59, 0x01, 0x00, 0x1c, 0xf5, 0x77, 0x29, 0xc5, 0x04, 0xe0,
1250x30, 0xdc, 0x04, 0x00, 0x00, 0x4c, 0xb0, 0x04, 0x00, 0x20, 0x4c, 0xf4, 0x04,
1260x00, 0x00, 0x00, 0xe8, 0x04, 0x00, 0xcc, 0xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33,
1270x09, 0x02, 0x1c, 0xeb, 0x2d, 0xb5, 0xc4, 0x04, 0xcc, 0xb3, 0xfc, 0x03, 0x1c,
1280xcc, 0x33, 0x19, 0x02, 0x1c, 0xeb, 0x2d, 0xb5, 0xc4, 0x04, 0xcc, 0xb3, 0xfc,
1290x03, 0x1c, 0xcc, 0x33, 0x0d, 0x02, 0x1c, 0xeb, 0x2d, 0xb5, 0xc4, 0x04, 0xcc,
1300xb3, 0xfc, 0x03, 0x1c, 0xcc, 0x33, 0x11, 0x02, 0x1c, 0xeb, 0x2d, 0xb5, 0xc4,
1310x04, 0x00, 0x7b, 0x00, 0x80, 0x1c, 0xae, 0x77, 0x45, 0x05, 0x00, 0x00, 0x00,
1320x04, 0xc0, 0x04, 0xd3, 0x8b, 0x00, 0xfc, 0x1f, 0x60, 0x7a, 0x3c, 0x00, 0x1c,
1330x60, 0x4c, 0xc0, 0x04, 0x00, 0xc0, 0x2f, 0x20, 0x05, 0x1f, 0xe0, 0x30, 0xb0,
1340x04, 0x00, 0x80, 0x25, 0xb0, 0x04, 0x00, 0xb5, 0x5b, 0xb1, 0x04, 0x04, 0x69,
1350x26, 0x01, 0x00, 0x1c, 0x6a, 0x2b, 0x01, 0x00, 0x1c, 0x80, 0x1d, 0x00, 0x00,
1360x1c, 0xa9, 0x25, 0x45, 0x05, 0x00, 0xee, 0x30, 0x00, 0x00, 0x1c, 0xaf, 0x77,
1370x01, 0x05, 0x00, 0x00, 0x00, 0xac, 0x24, 0x04, 0xb4, 0x5f, 0x01, 0x40, 0x18,
1380x07, 0x9d, 0x48, 0x55, 0x04, 0xb7, 0x76, 0x01, 0x00, 0x1c, 0x96, 0x76, 0x01,
1390x00, 0x1c, 0x47, 0x1d, 0x01, 0x00, 0x1c, 0xa4, 0x33, 0x01, 0x60, 0x18, 0xa4,
1400x2f, 0x01, 0x60, 0x18, 0x64, 0x77, 0x01, 0x60, 0x18, 0x24, 0x77, 0x01, 0x60,
1410x18, 0x44, 0x77, 0x01, 0x00, 0x1c, 0x64, 0x88, 0x03, 0x00, 0x1c, 0xa4, 0x3f,
1420x01, 0x00, 0x1c, 0xa4, 0x3b, 0x01, 0x00, 0x1c, 0x53, 0x7b, 0x00, 0xc0, 0x1c,
1430xd3, 0xcf, 0x1b, 0x00, 0x1c, 0x53, 0x4f, 0x02, 0x00, 0x1c, 0xda, 0xcf, 0x00,
1440xc0, 0x1f, 0xd5, 0x57, 0x0f, 0x00, 0x1c, 0xd3, 0xd3, 0x37, 0x00, 0x1c, 0xd4,
1450x53, 0x0f, 0x00, 0x1c, 0xe0, 0x29, 0x00, 0x00, 0x1c, 0xf5, 0xd5, 0xb0, 0x05,
1460x00, 0x00, 0x00, 0x9c, 0x55, 0x04, 0x77, 0x56, 0x01, 0x00, 0x1c, 0x56, 0x53,
1470x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x18, 0x00, 0x00, 0x04, 0xc0, 0x04,
1480xf5, 0x55, 0x01, 0x00, 0x1c, 0x00, 0x00, 0xb4, 0x55, 0x04, 0x77, 0x56, 0x01,
1490x00, 0x1c, 0x56, 0x53, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x18, 0x00,
1500x00, 0x04, 0xc0, 0x04, 0xcb, 0x2f, 0x01, 0x18, 0x10, 0xcb, 0x2f, 0x01, 0x10,
1510x10, 0xcb, 0x2f, 0x01, 0x08, 0x10, 0xcb, 0x2f, 0x01, 0x08, 0x10, 0xcb, 0x2f,
1520x01, 0x20, 0x10, 0xcb, 0x2f, 0x01, 0x28, 0x10, 0xcb, 0x2f, 0x01, 0x00, 0x10,
1530x89, 0x25, 0x61, 0xc2, 0x04, 0x00, 0x00, 0xec, 0xc2, 0x04, 0x00, 0x00, 0x54,
1540xc3, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x00,
1550x00, 0x60, 0xc2, 0x04, 0x00, 0x00, 0xec, 0xc2, 0x04, 0x00, 0x00, 0x54, 0xc3,
1560x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x40, 0x1c,
1570x6c, 0xc0, 0x04, 0x40, 0x1c, 0x9c, 0xc0, 0x04, 0xa7, 0x77, 0x55, 0xc3, 0x04,
1580x00, 0x00, 0xc4, 0xc0, 0x04, 0x27, 0x1d, 0xf1, 0xc0, 0x04, 0x00, 0x00, 0x54,
1590xc3, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x00, 0x00, 0x54, 0xc3, 0x04, 0x00,
1600x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1610x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1620x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1630x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1640xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1650x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1660x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1670x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1680x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1690xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1700x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1710x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1720x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1730x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1740xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1750x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1760x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1770x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1780x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1790xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1800x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1810x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1820x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1830x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1840xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1850x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1860x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1870x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1880x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1890xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1900x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1910x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1920x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1930x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1940xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
1950x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
1960x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
1970x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
1980x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
1990xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00,
2000x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6,
2010x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00,
2020x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
2030x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c,
2040xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04, 0x00, 0x00, 0x2c, 0xc6, 0x04,
205};
diff --git a/drivers/staging/slicoss/slic.h b/drivers/staging/slicoss/slic.h
new file mode 100644
index 00000000000..0d5dc24c0b7
--- /dev/null
+++ b/drivers/staging/slicoss/slic.h
@@ -0,0 +1,598 @@
1/**************************************************************************
2 *
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
33 *
34 **************************************************************************/
35
36/*
37 * FILENAME: slic.h
38 *
39 * This is the base set of header definitions for the SLICOSS driver.
40 */
41#ifndef __SLIC_DRIVER_H__
42#define __SLIC_DRIVER_H__
43
44
45struct slic_spinlock {
46 spinlock_t lock;
47 unsigned long flags;
48};
49
50#define SLIC_RSPQ_PAGES_GB 10
51#define SLIC_RSPQ_BUFSINPAGE (PAGE_SIZE / SLIC_RSPBUF_SIZE)
52
53struct slic_rspqueue {
54 u32 offset;
55 u32 pageindex;
56 u32 num_pages;
57 struct slic_rspbuf *rspbuf;
58 u32 *vaddr[SLIC_RSPQ_PAGES_GB];
59 dma_addr_t paddr[SLIC_RSPQ_PAGES_GB];
60};
61
62#define SLIC_RCVQ_EXPANSION 1
63#define SLIC_RCVQ_ENTRIES (256 * SLIC_RCVQ_EXPANSION)
64#define SLIC_RCVQ_MINENTRIES (SLIC_RCVQ_ENTRIES / 2)
65#define SLIC_RCVQ_MAX_PROCESS_ISR ((SLIC_RCVQ_ENTRIES * 4))
66#define SLIC_RCVQ_RCVBUFSIZE 2048
67#define SLIC_RCVQ_FILLENTRIES (16 * SLIC_RCVQ_EXPANSION)
68#define SLIC_RCVQ_FILLTHRESH (SLIC_RCVQ_ENTRIES - SLIC_RCVQ_FILLENTRIES)
69
70struct slic_rcvqueue {
71 struct sk_buff *head;
72 struct sk_buff *tail;
73 u32 count;
74 u32 size;
75 u32 errors;
76};
77
78struct slic_rcvbuf_info {
79 u32 id;
80 u32 starttime;
81 u32 stoptime;
82 u32 slicworld;
83 u32 lasttime;
84 u32 lastid;
85};
86/*
87 SLIC Handle structure. Used to restrict handle values to
88 32 bits by using an index rather than an address.
89 Simplifies ucode in 64-bit systems
90*/
91struct slic_handle_word {
92 union {
93 struct {
94 ushort index;
95 ushort bottombits; /* to denote num bufs to card */
96 } parts;
97 u32 whole;
98 } handle;
99};
100
101struct slic_handle {
102 struct slic_handle_word token; /* token passed between host and card*/
103 ushort type;
104 void *address; /* actual address of the object*/
105 ushort offset;
106 struct slic_handle *other_handle;
107 struct slic_handle *next;
108};
109
110#define SLIC_HANDLE_FREE 0x0000
111#define SLIC_HANDLE_DATA 0x0001
112#define SLIC_HANDLE_CMD 0x0002
113#define SLIC_HANDLE_CONTEXT 0x0003
114#define SLIC_HANDLE_TEAM 0x0004
115
116#define handle_index handle.parts.index
117#define handle_bottom handle.parts.bottombits
118#define handle_token handle.whole
119
120#define SLIC_HOSTCMD_SIZE 512
121
122struct slic_hostcmd {
123 struct slic_host64_cmd cmd64;
124 u32 type;
125 struct sk_buff *skb;
126 u32 paddrl;
127 u32 paddrh;
128 u32 busy;
129 u32 cmdsize;
130 ushort numbufs;
131 struct slic_handle *pslic_handle;/* handle associated with command */
132 struct slic_hostcmd *next;
133 struct slic_hostcmd *next_all;
134};
135
136#define SLIC_CMDQ_CMDSINPAGE (PAGE_SIZE / SLIC_HOSTCMD_SIZE)
137#define SLIC_CMD_DUMB 3
138#define SLIC_CMDQ_INITCMDS 256
139#define SLIC_CMDQ_MAXCMDS 256
140#define SLIC_CMDQ_MAXOUTSTAND SLIC_CMDQ_MAXCMDS
141#define SLIC_CMDQ_MAXPAGES (SLIC_CMDQ_MAXCMDS / SLIC_CMDQ_CMDSINPAGE)
142#define SLIC_CMDQ_INITPAGES (SLIC_CMDQ_INITCMDS / SLIC_CMDQ_CMDSINPAGE)
143
144struct slic_cmdqmem {
145 int pagecnt;
146 u32 *pages[SLIC_CMDQ_MAXPAGES];
147 dma_addr_t dma_pages[SLIC_CMDQ_MAXPAGES];
148};
149
150struct slic_cmdqueue {
151 struct slic_hostcmd *head;
152 struct slic_hostcmd *tail;
153 int count;
154 struct slic_spinlock lock;
155};
156
157#ifdef STATUS_SUCCESS
158#undef STATUS_SUCCESS
159#endif
160
161#define STATUS_SUCCESS 0
162#define STATUS_PENDING 0
163#define STATUS_FAILURE -1
164#define STATUS_ERROR -2
165#define STATUS_NOT_SUPPORTED -3
166#define STATUS_BUFFER_TOO_SHORT -4
167
168#define SLIC_MAX_CARDS 32
169#define SLIC_MAX_PORTS 4 /* Max # of ports per card */
170#if SLIC_DUMP_ENABLED
171/*
172Dump buffer size
173
174This cannot be bigger than the max DMA size the card supports,
175given the current code structure in the host and ucode.
176Mojave supports 16K, Oasis supports 16K-1, so
177just set this at 15K, shouldnt make that much of a diff.
178*/
179#define DUMP_BUF_SIZE 0x3C00
180#endif
181
182
183struct mcast_address {
184 unsigned char address[6];
185 struct mcast_address *next;
186};
187
188#define CARD_DOWN 0x00000000
189#define CARD_UP 0x00000001
190#define CARD_FAIL 0x00000002
191#define CARD_DIAG 0x00000003
192#define CARD_SLEEP 0x00000004
193
194#define ADAPT_DOWN 0x00
195#define ADAPT_UP 0x01
196#define ADAPT_FAIL 0x02
197#define ADAPT_RESET 0x03
198#define ADAPT_SLEEP 0x04
199
200#define ADAPT_FLAGS_BOOTTIME 0x0001
201#define ADAPT_FLAGS_IS64BIT 0x0002
202#define ADAPT_FLAGS_PENDINGLINKDOWN 0x0004
203#define ADAPT_FLAGS_FIBERMEDIA 0x0008
204#define ADAPT_FLAGS_LOCKS_ALLOCED 0x0010
205#define ADAPT_FLAGS_INT_REGISTERED 0x0020
206#define ADAPT_FLAGS_LOAD_TIMER_SET 0x0040
207#define ADAPT_FLAGS_STATS_TIMER_SET 0x0080
208#define ADAPT_FLAGS_RESET_TIMER_SET 0x0100
209
210#define LINK_DOWN 0x00
211#define LINK_CONFIG 0x01
212#define LINK_UP 0x02
213
214#define LINK_10MB 0x00
215#define LINK_100MB 0x01
216#define LINK_AUTOSPEED 0x02
217#define LINK_1000MB 0x03
218#define LINK_10000MB 0x04
219
220#define LINK_HALFD 0x00
221#define LINK_FULLD 0x01
222#define LINK_AUTOD 0x02
223
224#define MAC_DIRECTED 0x00000001
225#define MAC_BCAST 0x00000002
226#define MAC_MCAST 0x00000004
227#define MAC_PROMISC 0x00000008
228#define MAC_LOOPBACK 0x00000010
229#define MAC_ALLMCAST 0x00000020
230
231#define SLIC_DUPLEX(x) ((x == LINK_FULLD) ? "FDX" : "HDX")
232#define SLIC_SPEED(x) ((x == LINK_100MB) ? "100Mb" : ((x == LINK_1000MB) ?\
233 "1000Mb" : " 10Mb"))
234#define SLIC_LINKSTATE(x) ((x == LINK_DOWN) ? "Down" : "Up ")
235#define SLIC_ADAPTER_STATE(x) ((x == ADAPT_UP) ? "UP" : "Down")
236#define SLIC_CARD_STATE(x) ((x == CARD_UP) ? "UP" : "Down")
237
238struct slic_iface_stats {
239 /*
240 * Stats
241 */
242 u64 xmt_bytes;
243 u64 xmt_ucast;
244 u64 xmt_mcast;
245 u64 xmt_bcast;
246 u64 xmt_errors;
247 u64 xmt_discards;
248 u64 xmit_collisions;
249 u64 xmit_excess_xmit_collisions;
250 u64 rcv_bytes;
251 u64 rcv_ucast;
252 u64 rcv_mcast;
253 u64 rcv_bcast;
254 u64 rcv_errors;
255 u64 rcv_discards;
256};
257
258struct sliccp_stats {
259 u64 xmit_tcp_segs;
260 u64 xmit_tcp_bytes;
261 u64 rcv_tcp_segs;
262 u64 rcv_tcp_bytes;
263};
264
265struct slicnet_stats {
266 struct sliccp_stats tcp;
267 struct slic_iface_stats iface;
268};
269
270#define SLIC_LOADTIMER_PERIOD 1
271#define SLIC_INTAGG_DEFAULT 200
272#define SLIC_LOAD_0 0
273#define SLIC_INTAGG_0 0
274#define SLIC_LOAD_1 8000
275#define SLIC_LOAD_2 10000
276#define SLIC_LOAD_3 12000
277#define SLIC_LOAD_4 14000
278#define SLIC_LOAD_5 16000
279#define SLIC_INTAGG_1 50
280#define SLIC_INTAGG_2 100
281#define SLIC_INTAGG_3 150
282#define SLIC_INTAGG_4 200
283#define SLIC_INTAGG_5 250
284#define SLIC_LOAD_1GB 3000
285#define SLIC_LOAD_2GB 6000
286#define SLIC_LOAD_3GB 12000
287#define SLIC_LOAD_4GB 24000
288#define SLIC_LOAD_5GB 48000
289#define SLIC_INTAGG_1GB 50
290#define SLIC_INTAGG_2GB 75
291#define SLIC_INTAGG_3GB 100
292#define SLIC_INTAGG_4GB 100
293#define SLIC_INTAGG_5GB 100
294
295struct ether_header {
296 unsigned char ether_dhost[6];
297 unsigned char ether_shost[6];
298 ushort ether_type;
299};
300
301struct sliccard {
302 uint busnumber;
303 uint slotnumber;
304 uint state;
305 uint cardnum;
306 uint card_size;
307 uint adapters_activated;
308 uint adapters_allocated;
309 uint adapters_sleeping;
310 uint gennumber;
311 u32 events;
312 u32 loadlevel_current;
313 u32 load;
314 uint reset_in_progress;
315 u32 pingstatus;
316 u32 bad_pingstatus;
317 struct timer_list loadtimer;
318 u32 loadtimerset;
319 uint config_set;
320 struct slic_config config;
321 struct dentry *debugfs_dir;
322 struct dentry *debugfs_cardinfo;
323 struct adapter *master;
324 struct adapter *adapter[SLIC_MAX_PORTS];
325 struct sliccard *next;
326 u32 error_interrupts;
327 u32 error_rmiss_interrupts;
328 u32 rcv_interrupts;
329 u32 xmit_interrupts;
330 u32 num_isrs;
331 u32 false_interrupts;
332 u32 max_isr_rcvs;
333 u32 max_isr_xmits;
334 u32 rcv_interrupt_yields;
335 u32 tx_packets;
336#if SLIC_DUMP_ENABLED
337 u32 dumpstatus; /* Result of dump UPR */
338 void *cmdbuffer;
339
340 ulong cmdbuffer_phys;
341 u32 cmdbuffer_physl;
342 u32 cmdbuffer_physh;
343
344 u32 dump_count;
345 struct task_struct *dump_task_id;
346 u32 dump_wait_count;
347 uint dumpthread_running; /* has a dump thread been init'd */
348 uint dump_requested; /* 0 no, 1 = reqstd 2=curr 3=done */
349 u32 dumptime_start;
350 u32 dumptime_complete;
351 u32 dumptime_delta;
352 void *dumpbuffer;
353 ulong dumpbuffer_phys;
354 u32 dumpbuffer_physl;
355 u32 dumpbuffer_physh;
356 wait_queue_head_t dump_wq;
357 struct file *dumphandle;
358 mm_segment_t dumpfile_fs;
359#endif
360 u32 debug_ix;
361 ushort reg_type[32];
362 ushort reg_offset[32];
363 u32 reg_value[32];
364 u32 reg_valueh[32];
365};
366
367#define NUM_CFG_SPACES 2
368#define NUM_CFG_REGS 64
369#define NUM_CFG_REG_ULONGS (NUM_CFG_REGS / sizeof(u32))
370
371struct physcard {
372 struct adapter *adapter[SLIC_MAX_PORTS];
373 struct physcard *next;
374 uint adapters_allocd;
375
376 /* the following is not currently needed
377 u32 bridge_busnum;
378 u32 bridge_cfg[NUM_CFG_SPACES][NUM_CFG_REG_ULONGS];
379 */
380};
381
382struct base_driver {
383 struct slic_spinlock driver_lock;
384 u32 num_slic_cards;
385 u32 num_slic_ports;
386 u32 num_slic_ports_active;
387 u32 dynamic_intagg;
388 struct sliccard *slic_card;
389 struct physcard *phys_card;
390 uint cardnuminuse[SLIC_MAX_CARDS];
391};
392
393struct slic_shmem {
394 volatile u32 isr;
395 volatile u32 linkstatus;
396 volatile struct slic_stats inicstats;
397};
398
399struct slic_reg_params {
400 u32 linkspeed;
401 u32 linkduplex;
402 u32 fail_on_bad_eeprom;
403};
404
405struct slic_upr {
406 uint adapter;
407 u32 upr_request;
408 u32 upr_data;
409 u32 upr_data_h;
410 u32 upr_buffer;
411 u32 upr_buffer_h;
412 struct slic_upr *next;
413};
414
415struct slic_ifevents {
416 uint oflow802;
417 uint uflow802;
418 uint Tprtoflow;
419 uint rcvearly;
420 uint Bufov;
421 uint Carre;
422 uint Longe;
423 uint Invp;
424 uint Crc;
425 uint Drbl;
426 uint Code;
427 uint IpHlen;
428 uint IpLen;
429 uint IpCsum;
430 uint TpCsum;
431 uint TpHlen;
432};
433
434struct adapter {
435 void *ifp;
436 struct sliccard *card;
437 uint port;
438 struct physcard *physcard;
439 uint physport;
440 uint cardindex;
441 uint card_size;
442 uint chipid;
443 struct net_device *netdev;
444 struct net_device *next_netdevice;
445 struct slic_spinlock adapter_lock;
446 struct slic_spinlock reset_lock;
447 struct pci_dev *pcidev;
448 uint busnumber;
449 uint slotnumber;
450 uint functionnumber;
451 ushort vendid;
452 ushort devid;
453 ushort subsysid;
454 u32 irq;
455 void __iomem *memorybase;
456 u32 memorylength;
457 u32 drambase;
458 u32 dramlength;
459 uint queues_initialized;
460 uint allocated;
461 uint activated;
462 u32 intrregistered;
463 uint isp_initialized;
464 uint gennumber;
465 u32 curaddrupper;
466 struct slic_shmem *pshmem;
467 dma_addr_t phys_shmem;
468 u32 isrcopy;
469 __iomem struct slic_regs *slic_regs;
470 unsigned char state;
471 unsigned char linkstate;
472 unsigned char linkspeed;
473 unsigned char linkduplex;
474 uint flags;
475 unsigned char macaddr[6];
476 unsigned char currmacaddr[6];
477 u32 macopts;
478 ushort devflags_prev;
479 u64 mcastmask;
480 struct mcast_address *mcastaddrs;
481 struct slic_upr *upr_list;
482 uint upr_busy;
483 struct timer_list pingtimer;
484 u32 pingtimerset;
485 struct timer_list statstimer;
486 u32 statstimerset;
487 struct timer_list loadtimer;
488 u32 loadtimerset;
489 struct dentry *debugfs_entry;
490 struct slic_spinlock upr_lock;
491 struct slic_spinlock bit64reglock;
492 struct slic_rspqueue rspqueue;
493 struct slic_rcvqueue rcvqueue;
494 struct slic_cmdqueue cmdq_free;
495 struct slic_cmdqueue cmdq_done;
496 struct slic_cmdqueue cmdq_all;
497 struct slic_cmdqmem cmdqmem;
498 /*
499 * SLIC Handles
500 */
501 struct slic_handle slic_handles[SLIC_CMDQ_MAXCMDS+1]; /* Object handles*/
502 struct slic_handle *pfree_slic_handles; /* Free object handles*/
503 struct slic_spinlock handle_lock; /* Object handle list lock*/
504 ushort slic_handle_ix;
505
506 u32 xmitq_full;
507 u32 all_reg_writes;
508 u32 icr_reg_writes;
509 u32 isr_reg_writes;
510 u32 error_interrupts;
511 u32 error_rmiss_interrupts;
512 u32 rx_errors;
513 u32 rcv_drops;
514 u32 rcv_interrupts;
515 u32 xmit_interrupts;
516 u32 linkevent_interrupts;
517 u32 upr_interrupts;
518 u32 num_isrs;
519 u32 false_interrupts;
520 u32 tx_packets;
521 u32 xmit_completes;
522 u32 tx_drops;
523 u32 rcv_broadcasts;
524 u32 rcv_multicasts;
525 u32 rcv_unicasts;
526 u32 max_isr_rcvs;
527 u32 max_isr_xmits;
528 u32 rcv_interrupt_yields;
529 u32 intagg_period;
530 struct inicpm_state *inicpm_info;
531 void *pinicpm_info;
532 struct slic_reg_params reg_params;
533 struct slic_ifevents if_events;
534 struct slic_stats inicstats_prev;
535 struct slicnet_stats slic_stats;
536 struct net_device_stats stats;
537};
538
539#if SLIC_DUMP_ENABLED
540#define SLIC_DUMP_REQUESTED 1
541#define SLIC_DUMP_IN_PROGRESS 2
542#define SLIC_DUMP_DONE 3
543
544/****************************************************************************
545 *
546 * Microcode crash information structure. This
547 * structure is written out to the card's SRAM when the microcode panic's.
548 *
549 ****************************************************************************/
550struct slic_crash_info {
551 ushort cpu_id;
552 ushort crash_pc;
553};
554
555#define CRASH_INFO_OFFSET 0x155C
556
557#endif
558
559#define UPDATE_STATS(largestat, newstat, oldstat) \
560{ \
561 if ((newstat) < (oldstat)) \
562 (largestat) += ((newstat) + (0xFFFFFFFF - oldstat + 1)); \
563 else \
564 (largestat) += ((newstat) - (oldstat)); \
565}
566
567#define UPDATE_STATS_GB(largestat, newstat, oldstat) \
568{ \
569 (largestat) += ((newstat) - (oldstat)); \
570}
571
572#define ETHER_EQ_ADDR(_AddrA, _AddrB, _Result) \
573{ \
574 _Result = TRUE; \
575 if (*(u32 *)(_AddrA) != *(u32 *)(_AddrB)) \
576 _Result = FALSE; \
577 if (*(u16 *)(&((_AddrA)[4])) != *(u16 *)(&((_AddrB)[4]))) \
578 _Result = FALSE; \
579}
580
581#if defined(CONFIG_X86_64) || defined(CONFIG_IA64)
582#define SLIC_GET_ADDR_LOW(_addr) (u32)((u64)(_addr) & \
583 0x00000000FFFFFFFF)
584#define SLIC_GET_ADDR_HIGH(_addr) (u32)(((u64)(_addr) >> 32) & \
585 0x00000000FFFFFFFF)
586#else
587#define SLIC_GET_ADDR_LOW(_addr) (u32)_addr
588#define SLIC_GET_ADDR_HIGH(_addr) (u32)0
589#endif
590
591#define FLUSH TRUE
592#define DONT_FLUSH FALSE
593
594#define SIOCSLICDUMPCARD (SIOCDEVPRIVATE+9)
595#define SIOCSLICSETINTAGG (SIOCDEVPRIVATE+10)
596#define SIOCSLICTRACEDUMP (SIOCDEVPRIVATE+11)
597
598#endif /* __SLIC_DRIVER_H__ */
diff --git a/drivers/staging/slicoss/slic_os.h b/drivers/staging/slicoss/slic_os.h
new file mode 100644
index 00000000000..46c678440d2
--- /dev/null
+++ b/drivers/staging/slicoss/slic_os.h
@@ -0,0 +1,84 @@
1/**************************************************************************
2 *
3 * Copyright (c)2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
33 *
34 **************************************************************************/
35
36/*
37 * FILENAME: slic_os.h
38 *
39 * These are the Linux-specific definitions required for the SLICOSS
40 * driver, which should allow for greater portability to other OSes.
41 */
42#ifndef _SLIC_OS_SPECIFIC_H_
43#define _SLIC_OS_SPECIFIC_H_
44
45#define FALSE (0)
46#define TRUE (1)
47
48#define SLIC_SECS_TO_JIFFS(x) ((x) * HZ)
49#define SLIC_MS_TO_JIFFIES(x) (SLIC_SECS_TO_JIFFS((x)) / 1000)
50
51#ifdef DEBUG_REGISTER_TRACE
52#define WRITE_REG(reg, value, flush) \
53 { \
54 adapter->card->reg_type[adapter->card->debug_ix] = 0; \
55 adapter->card->reg_offset[adapter->card->debug_ix] = \
56 ((unsigned char *)(&reg)) - \
57 ((unsigned char *)adapter->slic_regs); \
58 adapter->card->reg_value[adapter->card->debug_ix++] = value; \
59 if (adapter->card->debug_ix == 32) \
60 adapter->card->debug_ix = 0; \
61 slic_reg32_write((&reg), (value), (flush)); \
62 }
63#define WRITE_REG64(a, reg, value, regh, valh, flush) \
64 { \
65 adapter->card->reg_type[adapter->card->debug_ix] = 1; \
66 adapter->card->reg_offset[adapter->card->debug_ix] = \
67 ((unsigned char *)(&reg)) - \
68 ((unsigned char *)adapter->slic_regs); \
69 adapter->card->reg_value[adapter->card->debug_ix] = value; \
70 adapter->card->reg_valueh[adapter->card->debug_ix++] = valh; \
71 if (adapter->card->debug_ix == 32) \
72 adapter->card->debug_ix = 0; \
73 slic_reg64_write((a), (&reg), (value), (&regh), (valh), \
74 (flush));\
75 }
76#else
77#define WRITE_REG(reg, value, flush) \
78 slic_reg32_write((&reg), (value), (flush))
79#define WRITE_REG64(a, reg, value, regh, valh, flush) \
80 slic_reg64_write((a), (&reg), (value), (&regh), (valh), (flush))
81#endif
82
83#endif /* _SLIC_OS_SPECIFIC_H_ */
84
diff --git a/drivers/staging/slicoss/slicbuild.h b/drivers/staging/slicoss/slicbuild.h
new file mode 100644
index 00000000000..ae05e043d07
--- /dev/null
+++ b/drivers/staging/slicoss/slicbuild.h
@@ -0,0 +1,96 @@
1/**************************************************************************
2 *
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
33 *
34 **************************************************************************/
35
36/*
37 * FILENAME: slicbuild.h
38 *
39 * The following contains the compiler directive switches used for
40 * different SLIC build options. They can all be set in the Makefile
41 * but the defaults are defined here.
42 */
43#ifndef _SLIC_BUILD_H_
44#define _SLIC_BUILD_H_
45
46#ifndef SLIC_PRODUCTION_BUILD
47#define SLIC_PRODUCTION_BUILD 1
48#endif
49#ifndef SLIC_FAILURE_RESET
50#define SLIC_FAILURE_RESET 1
51#endif
52#define DBG 1
53#ifndef SLIC_ASSERT_ENABLED
54#define SLIC_ASSERT_ENABLED 1
55#endif
56#ifndef SLIC_MCAST_ENABLED
57#define SLIC_MCAST_ENABLED 1
58#endif
59#ifndef SLIC_GET_STATS_ENABLED
60#define SLIC_GET_STATS_ENABLED 1
61#endif
62#ifndef SLIC_GET_STATS_TIMER_ENABLED
63#define SLIC_GET_STATS_TIMER_ENABLED 0
64#endif
65#ifndef SLIC_PING_TIMER_ENABLED
66#define SLIC_PING_TIMER_ENABLED 1
67#endif
68#ifndef SLIC_IOCTL_SUPPORT_ENABLED
69#define SLIC_IOCTL_SUPPORT_ENABLED 1
70#endif
71#ifndef ATK_DEBUG
72#define ATK_DEBUG 1
73#endif
74#ifndef SLIC_POWER_MANAGEMENT_ENABLED
75#define SLIC_POWER_MANAGEMENT_ENABLED 0
76#endif
77#ifndef SLIC_INTERRUPT_PROCESS_LIMIT
78#define SLIC_INTERRUPT_PROCESS_LIMIT 1
79#endif
80#ifndef LINUX_FREES_ADAPTER_RESOURCES
81#define LINUX_FREES_ADAPTER_RESOURCES 1
82#endif
83#ifndef SLIC_OFFLOAD_IP_CHECKSUM
84#define SLIC_OFFLOAD_IP_CHECKSUM 1
85#endif
86#ifndef SLIC_POWER_MANAGEMENT_ENABLED
87#define SLIC_POWER_MANAGEMENT_ENABLED 0
88#endif
89#ifndef STATS_TIMER_INTERVAL
90#define STATS_TIMER_INTERVAL 2
91#endif
92#ifndef PING_TIMER_INTERVAL
93#define PING_TIMER_INTERVAL 1
94#endif
95
96#endif /* _SLIC_BUILD_H_ */
diff --git a/drivers/staging/slicoss/slicdbg.h b/drivers/staging/slicoss/slicdbg.h
new file mode 100644
index 00000000000..c54e44fb1f6
--- /dev/null
+++ b/drivers/staging/slicoss/slicdbg.h
@@ -0,0 +1,100 @@
1/**************************************************************************
2 *
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
33 *
34 **************************************************************************/
35
36/*
37 * FILENAME: slicdbg.h
38 *
39 * All debug and assertion-based definitions and macros are included
40 * in this file for the SLICOSS driver.
41 */
42#ifndef _SLIC_DEBUG_H_
43#define _SLIC_DEBUG_H_
44
45#ifdef SLIC_DEFAULT_LOG_LEVEL
46#else
47#define SLICLEVEL KERN_DEBUG
48#endif
49#define SLIC_DISPLAY printk
50#define DBG_ERROR(n, args...) SLIC_DISPLAY(KERN_EMERG n, ##args)
51
52#define SLIC_DEBUG_MESSAGE 1
53#if SLIC_DEBUG_MESSAGE
54/*#define DBG_MSG(n, args...) SLIC_DISPLAY(SLICLEVEL n, ##args)*/
55#define DBG_MSG(n, args...)
56#else
57#define DBG_MSG(n, args...)
58#endif
59
60#ifdef ASSERT
61#undef ASSERT
62#endif
63
64#if SLIC_ASSERT_ENABLED
65#ifdef CONFIG_X86_64
66#define VALID_ADDRESS(p) (1)
67#else
68#define VALID_ADDRESS(p) (((u32)(p) & 0x80000000) || ((u32)(p) == 0))
69#endif
70#ifndef ASSERT
71#define ASSERT(a) \
72 { \
73 if (!(a)) { \
74 DBG_ERROR("ASSERT() Failure: file %s, function %s line %d\n",\
75 __FILE__, __func__, __LINE__); \
76 slic_assert_fail(); \
77 } \
78 }
79#endif
80#ifndef ASSERTMSG
81#define ASSERTMSG(a,msg) \
82 { \
83 if (!(a)) { \
84 DBG_ERROR("ASSERT() Failure: file %s, function %s"\
85 "line %d: %s\n",\
86 __FILE__, __func__, __LINE__, (msg)); \
87 slic_assert_fail(); \
88 } \
89 }
90#endif
91#else
92#ifndef ASSERT
93#define ASSERT(a)
94#endif
95#ifndef ASSERTMSG
96#define ASSERTMSG(a, msg)
97#endif
98#endif /* SLIC_ASSERT_ENABLED */
99
100#endif /* _SLIC_DEBUG_H_ */
diff --git a/drivers/staging/slicoss/slicdump.h b/drivers/staging/slicoss/slicdump.h
new file mode 100644
index 00000000000..92a9b44bcad
--- /dev/null
+++ b/drivers/staging/slicoss/slicdump.h
@@ -0,0 +1,278 @@
1/*
2 *
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials provided
14 * with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * NO LICENSE TO ANY ALACRITECH PATENT CLAIM IS GRANTED BY ANY COPYRIGHT
30 * LICENSE TO THIS OR OTHER SOFTWARE. THIS SOFTWARE MAY BE COVERED BY
31 * ALACRITECH PATENTS INCLUDING BUT NOT LIMITED TO U.S. PATENT NOS. 6,226,680,
32 * 6,247,060, 6,334,153, 6,389,479, 6,393,487, 6,427,171, 6,427,173
33 * and 6,434,620.
34 * THIS SOFTWARE IS NOT SUBJECT TO THE GNU GENERAL PUBLIC LICENSE (GPL).
35 *
36 * The views and conclusions contained in the software and
37 * documentation are those of the authors and should not be
38 * interpreted as representing official policies, either
39 * expressed or implied, of Alacritech, Inc.
40 */
41#ifndef _SLIC_DUMP_H_
42#define _SLIC_DUMP_H_
43
44#define DEBUG_SUCCESS 0
45
46/***********************************************************************
47 *
48 * Utility processor register locations
49 *
50 **********************************************************************/
51#define UTILITY_RESET 0x0
52#define UTILITY_ISP_ADDR 0x4 /* Interrupt status Pointer */
53#define UTILITY_ISR_ADDR 0x8 /* Interrupt status Register */
54#define UTILITY_ICR_ADDR 0xc /* Interrupt Control Register */
55#define UTILITY_CPR_ADDR 0x10 /* Command Pointer Register */
56#define UTILITY_DPR_ADDR 0x14 /* Data Pointer Register */
57#define UTILITY_DMP_TRQ 0x18 /* Dump queue onto ALU for analyser */
58#define UTILITY_UPP_ADDR 0x1c /* Bits 63-32 of cmd/data pointer */
59
60/***********************************************************************
61 *
62 * INIC status register bits
63 *
64 ***********************************************************************/
65#define SLIC_ISR_CC 0x10000000 /* Command complete - synchronous */
66#define SLIC_ISR_ERR 0x01000000 /* Command Error - synchronous */
67#define SLIC_ISR_CMD_MASK 0x11000000 /* Command status mask */
68#define SLIC_ISR_TPH 0x00080000 /* Transmit processor halted - async */
69#define SLIC_ISR_RPH 0x00040000 /* Receive processor halted - async */
70
71/***********************************************************************
72 *
73 * INIC Control register values
74 *
75 ***********************************************************************/
76#define SLIC_ICR_OFF 0 /* Interrupts disabled */
77#define SLIC_ICR_ON 1 /* Interrupts enabled */
78#define SLIC_ICR_MASK 2 /* Interrupts masked */
79
80#define WRITE_DREG(reg, value, flush) \
81{ \
82 writel((value), (reg)); \
83 if ((flush)) { \
84 mb(); \
85 } \
86}
87
88/************************************************************************
89 *
90 * Command Format
91 *
92 * Each command contains a command byte which is defined as follows:
93 *
94 * bits: 7-3 2 1-0
95 * ----------------------------------------------
96 * command Alt. Proc Processor
97 *
98 ************************************************************************/
99
100/*
101 * Macro to create the command byte given the command, Alt. Proc, and
102 * Processor values. Note that the macro assumes that the values are
103 * preshifted. That is, the values for alt. proc are 0 for transmit and
104 * 4 for receive.
105 */
106#define COMMAND_BYTE(command, alt_proc, proc) ((command) | (alt_proc) | (proc))
107
108/*
109 * Command values
110 */
111#define CMD_HALT 0x0 /* Send a halt to the INIC */
112#define CMD_RUN 0x8 /* Start the halted INIC */
113#define CMD_STEP 0x10 /* Single step the inic */
114#define CMD_BREAK 0x18 /* Set a breakpoint - 8 byte command */
115#define CMD_RESET_BREAK 0x20 /* Reset a breakpoint - 8 byte cmd */
116#define CMD_DUMP 0x28 /* Dump INIC memory - 8 byte command */
117#define CMD_LOAD 0x30 /* Load INIC memory - 8 byte command */
118#define CMD_MAP 0x38 /* Map out a ROM instruction - 8 BC */
119#define CMD_CAM_OPS 0x38 /* perform ops on specific CAM */
120#define CMD_XMT 0x40 /* Transmit frame */
121#define CMD_RCV 0x48 /* Receive frame */
122
123/*
124 * Alt. Proc values
125 *
126 * When the proc value is set to the utility processor, the Alt. Proc
127 * specifies which processor handles the debugging.
128 */
129#define ALT_PROC_TRANSMIT 0x0
130#define ALT_PROC_RECEIVE 0x4
131
132/*
133 * Proc values
134 */
135#define PROC_INVALID 0x0
136#define PROC_NONE 0x0 /* Gigabit use */
137#define PROC_TRANSMIT 0x1
138#define PROC_RECEIVE 0x2
139#define PROC_UTILITY 0x3
140
141/******************************************************************
142 *
143 * 8 byte command structure definitions
144 *
145 ******************************************************************/
146
147/*
148 * Break and Reset Break command structure
149 */
150struct BREAK {
151 unsigned char command; /* Command word defined above */
152 unsigned char resvd;
153 ushort count; /* Number of executions before break */
154 u32 addr; /* Address of break point */
155};
156
157/*
158 * Dump and Load command structure
159 */
160struct dump_cmd {
161 unsigned char cmd; /* Command word defined above */
162 unsigned char desc; /* Descriptor values - defined below */
163 ushort count; /* number of 4 byte words to be transferred */
164 u32 addr; /* start address of dump or load */
165};
166
167/*
168 * Receive or Transmit a frame.
169 */
170struct RCV_OR_XMT_FRAME {
171 unsigned char command; /* Command word defined above */
172 unsigned char MacId; /* Mac ID of interface - transmit only */
173 ushort count; /* Length of frame in bytes */
174 u32 pad; /* not used */
175};
176
177/*
178 * Values of desc field in DUMP_OR_LOAD structure
179 */
180#define DESC_RFILE 0x0 /* Register file */
181#define DESC_SRAM 0x1 /* SRAM */
182#define DESC_DRAM 0x2 /* DRAM */
183#define DESC_QUEUE 0x3 /* queues */
184#define DESC_REG 0x4 /* General registers (pc, status, etc) */
185#define DESC_SENSE 0x5 /* Sense register */
186
187/* Descriptor field definitions for CMD_DUMP_CAM */
188#define DUMP_CAM_A 0
189#define DUMP_CAM_B 1 /* unused at present */
190#define DUMP_CAM_C 2
191#define DUMP_CAM_D 3
192#define SEARCH_CAM_A 4
193#define SEARCH_CAM_C 5
194
195/*
196 * Map command to replace a command in ROM with a command in WCS
197 */
198struct MAP {
199 unsigned char command; /* Command word defined above */
200 unsigned char not_used[3];
201 ushort map_to; /* Instruction address in WCS */
202 ushort map_out; /* Instruction address in ROM */
203};
204
205/*
206 * Misc definitions
207 */
208#define SLIC_MAX_QUEUE 32 /* Total # of queues on the INIC (0-31)*/
209#define SLIC_4MAX_REG 512 /* Total # of 4-port file-registers */
210#define SLIC_1MAX_REG 384 /* Total # of file-registers */
211#define SLIC_GBMAX_REG 1024 /* Total # of Gbit file-registers */
212#define SLIC_NUM_REG 32 /* non-file-registers = NUM_REG in tm-simba.h */
213#define SLIC_GB_CAMA_SZE 32
214#define SLIC_GB_CAMB_SZE 16
215#define SLIC_GB_CAMAB_SZE 32
216#define SLIC_GB_CAMC_SZE 16
217#define SLIC_GB_CAMD_SZE 16
218#define SLIC_GB_CAMCD_SZE 32
219
220/*
221 * Coredump header structure
222 */
223struct CORE_Q {
224 u32 queueOff; /* Offset of queue */
225 u32 queuesize; /* size of queue */
226};
227
228#define DRIVER_NAME_SIZE 32
229
230struct sliccore_hdr {
231 unsigned char driver_version[DRIVER_NAME_SIZE]; /* Driver version string */
232 u32 RcvRegOff; /* Offset of receive registers */
233 u32 RcvRegsize; /* size of receive registers */
234 u32 XmtRegOff; /* Offset of transmit registers */
235 u32 XmtRegsize; /* size of transmit registers */
236 u32 FileRegOff; /* Offset of register file */
237 u32 FileRegsize; /* size of register file */
238 u32 SramOff; /* Offset of Sram */
239 u32 Sramsize; /* size of Sram */
240 u32 DramOff; /* Offset of Dram */
241 u32 Dramsize; /* size of Dram */
242 CORE_Q queues[SLIC_MAX_QUEUE]; /* size and offsets of queues */
243 u32 CamAMOff; /* Offset of CAM A contents */
244 u32 CamASize; /* Size of Cam A */
245 u32 CamBMOff; /* Offset of CAM B contents */
246 u32 CamBSize; /* Size of Cam B */
247 u32 CamCMOff; /* Offset of CAM C contents */
248 u32 CamCSize; /* Size of Cam C */
249 u32 CamDMOff; /* Offset of CAM D contents */
250 u32 CamDSize; /* Size of Cam D */
251};
252
253/*
254 * definitions needed for our kernel-mode gdb stub.
255 */
256/***********************************************************************
257 *
258 * Definitions & Typedefs
259 *
260 **********************************************************************/
261#define BUFMAX 0x20000 /* 128k - size of input/output buffer */
262#define BUFMAXP2 5 /* 2**5 (32) 4K pages */
263
264#define IOCTL_SIMBA_BREAK _IOW('s', 0, unsigned long)
265/* #define IOCTL_SIMBA_INIT _IOW('s', 1, unsigned long) */
266#define IOCTL_SIMBA_KILL_TGT_PROC _IOW('s', 2, unsigned long)
267
268/***********************************************************************
269 *
270 * Global variables
271 *
272 ***********************************************************************/
273
274#define THREADRECEIVE 1 /* bit 0 of StoppedThreads */
275#define THREADTRANSMIT 2 /* bit 1 of StoppedThreads */
276#define THREADBOTH 3 /* bit 0 and 1.. */
277
278#endif /* _SLIC_DUMP_H */
diff --git a/drivers/staging/slicoss/slichw.h b/drivers/staging/slicoss/slichw.h
new file mode 100644
index 00000000000..d03e90b0675
--- /dev/null
+++ b/drivers/staging/slicoss/slichw.h
@@ -0,0 +1,845 @@
1/**************************************************************************
2 *
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
33 *
34 **************************************************************************/
35
36/*
37 * FILENAME: slichw.h
38 *
39 * This header file contains definitions that are common to our hardware.
40 */
41#ifndef __SLICHW_H__
42#define __SLICHW_H__
43
44#define PCI_VENDOR_ID_ALACRITECH 0x139A
45#define SLIC_1GB_DEVICE_ID 0x0005
46#define SLIC_2GB_DEVICE_ID 0x0007 /*Oasis Device ID */
47
48#define SLIC_1GB_CICADA_SUBSYS_ID 0x0008
49
50#define SLIC_NBR_MACS 4
51
52#define SLIC_RCVBUF_SIZE 2048
53#define SLIC_RCVBUF_HEADSIZE 34
54#define SLIC_RCVBUF_TAILSIZE 0
55#define SLIC_RCVBUF_DATASIZE (SLIC_RCVBUF_SIZE - (SLIC_RCVBUF_HEADSIZE +\
56 SLIC_RCVBUF_TAILSIZE))
57
58#define VGBSTAT_XPERR 0x40000000
59#define VGBSTAT_XERRSHFT 25
60#define VGBSTAT_XCSERR 0x23
61#define VGBSTAT_XUFLOW 0x22
62#define VGBSTAT_XHLEN 0x20
63#define VGBSTAT_NETERR 0x01000000
64#define VGBSTAT_NERRSHFT 16
65#define VGBSTAT_NERRMSK 0x1ff
66#define VGBSTAT_NCSERR 0x103
67#define VGBSTAT_NUFLOW 0x102
68#define VGBSTAT_NHLEN 0x100
69#define VGBSTAT_LNKERR 0x00000080
70#define VGBSTAT_LERRMSK 0xff
71#define VGBSTAT_LDEARLY 0x86
72#define VGBSTAT_LBOFLO 0x85
73#define VGBSTAT_LCODERR 0x84
74#define VGBSTAT_LDBLNBL 0x83
75#define VGBSTAT_LCRCERR 0x82
76#define VGBSTAT_LOFLO 0x81
77#define VGBSTAT_LUFLO 0x80
78#define IRHDDR_FLEN_MSK 0x0000ffff
79#define IRHDDR_SVALID 0x80000000
80#define IRHDDR_ERR 0x10000000
81#define VRHSTAT_802OE 0x80000000
82#define VRHSTAT_TPOFLO 0x10000000
83#define VRHSTATB_802UE 0x80000000
84#define VRHSTATB_RCVE 0x40000000
85#define VRHSTATB_BUFF 0x20000000
86#define VRHSTATB_CARRE 0x08000000
87#define VRHSTATB_LONGE 0x02000000
88#define VRHSTATB_PREA 0x01000000
89#define VRHSTATB_CRC 0x00800000
90#define VRHSTATB_DRBL 0x00400000
91#define VRHSTATB_CODE 0x00200000
92#define VRHSTATB_TPCSUM 0x00100000
93#define VRHSTATB_TPHLEN 0x00080000
94#define VRHSTATB_IPCSUM 0x00040000
95#define VRHSTATB_IPLERR 0x00020000
96#define VRHSTATB_IPHERR 0x00010000
97#define SLIC_MAX64_BCNT 23
98#define SLIC_MAX32_BCNT 26
99#define IHCMD_XMT_REQ 0x01
100#define IHFLG_IFSHFT 2
101#define SLIC_RSPBUF_SIZE 32
102
103#define SLIC_RESET_MAGIC 0xDEAD
104#define ICR_INT_OFF 0
105#define ICR_INT_ON 1
106#define ICR_INT_MASK 2
107
108#define ISR_ERR 0x80000000
109#define ISR_RCV 0x40000000
110#define ISR_CMD 0x20000000
111#define ISR_IO 0x60000000
112#define ISR_UPC 0x10000000
113#define ISR_LEVENT 0x08000000
114#define ISR_RMISS 0x02000000
115#define ISR_UPCERR 0x01000000
116#define ISR_XDROP 0x00800000
117#define ISR_UPCBSY 0x00020000
118#define ISR_EVMSK 0xffff0000
119#define ISR_PINGMASK 0x00700000
120#define ISR_PINGDSMASK 0x00710000
121#define ISR_UPCMASK 0x11000000
122#define SLIC_WCS_START 0x80000000
123#define SLIC_WCS_COMPARE 0x40000000
124#define SLIC_RCVWCS_BEGIN 0x40000000
125#define SLIC_RCVWCS_FINISH 0x80000000
126#define SLIC_PM_MAXPATTERNS 6
127#define SLIC_PM_PATTERNSIZE 128
128#define SLIC_PMCAPS_WAKEONLAN 0x00000001
129#define MIICR_REG_PCR 0x00000000
130#define MIICR_REG_4 0x00040000
131#define MIICR_REG_9 0x00090000
132#define MIICR_REG_16 0x00100000
133#define PCR_RESET 0x8000
134#define PCR_POWERDOWN 0x0800
135#define PCR_SPEED_100 0x2000
136#define PCR_SPEED_1000 0x0040
137#define PCR_AUTONEG 0x1000
138#define PCR_AUTONEG_RST 0x0200
139#define PCR_DUPLEX_FULL 0x0100
140#define PSR_LINKUP 0x0004
141
142#define PAR_ADV100FD 0x0100
143#define PAR_ADV100HD 0x0080
144#define PAR_ADV10FD 0x0040
145#define PAR_ADV10HD 0x0020
146#define PAR_ASYMPAUSE 0x0C00
147#define PAR_802_3 0x0001
148
149#define PAR_ADV1000XFD 0x0020
150#define PAR_ADV1000XHD 0x0040
151#define PAR_ASYMPAUSE_FIBER 0x0180
152
153#define PGC_ADV1000FD 0x0200
154#define PGC_ADV1000HD 0x0100
155#define SEEQ_LINKFAIL 0x4000
156#define SEEQ_SPEED 0x0080
157#define SEEQ_DUPLEX 0x0040
158#define TDK_DUPLEX 0x0800
159#define TDK_SPEED 0x0400
160#define MRV_REG16_XOVERON 0x0068
161#define MRV_REG16_XOVEROFF 0x0008
162#define MRV_SPEED_1000 0x8000
163#define MRV_SPEED_100 0x4000
164#define MRV_SPEED_10 0x0000
165#define MRV_FULLDUPLEX 0x2000
166#define MRV_LINKUP 0x0400
167
168#define GIG_LINKUP 0x0001
169#define GIG_FULLDUPLEX 0x0002
170#define GIG_SPEED_MASK 0x000C
171#define GIG_SPEED_1000 0x0008
172#define GIG_SPEED_100 0x0004
173#define GIG_SPEED_10 0x0000
174
175#define MCR_RESET 0x80000000
176#define MCR_CRCEN 0x40000000
177#define MCR_FULLD 0x10000000
178#define MCR_PAD 0x02000000
179#define MCR_RETRYLATE 0x01000000
180#define MCR_BOL_SHIFT 21
181#define MCR_IPG1_SHIFT 14
182#define MCR_IPG2_SHIFT 7
183#define MCR_IPG3_SHIFT 0
184#define GMCR_RESET 0x80000000
185#define GMCR_GBIT 0x20000000
186#define GMCR_FULLD 0x10000000
187#define GMCR_GAPBB_SHIFT 14
188#define GMCR_GAPR1_SHIFT 7
189#define GMCR_GAPR2_SHIFT 0
190#define GMCR_GAPBB_1000 0x60
191#define GMCR_GAPR1_1000 0x2C
192#define GMCR_GAPR2_1000 0x40
193#define GMCR_GAPBB_100 0x70
194#define GMCR_GAPR1_100 0x2C
195#define GMCR_GAPR2_100 0x40
196#define XCR_RESET 0x80000000
197#define XCR_XMTEN 0x40000000
198#define XCR_PAUSEEN 0x20000000
199#define XCR_LOADRNG 0x10000000
200#define RCR_RESET 0x80000000
201#define RCR_RCVEN 0x40000000
202#define RCR_RCVALL 0x20000000
203#define RCR_RCVBAD 0x10000000
204#define RCR_CTLEN 0x08000000
205#define RCR_ADDRAEN 0x02000000
206#define GXCR_RESET 0x80000000
207#define GXCR_XMTEN 0x40000000
208#define GXCR_PAUSEEN 0x20000000
209#define GRCR_RESET 0x80000000
210#define GRCR_RCVEN 0x40000000
211#define GRCR_RCVALL 0x20000000
212#define GRCR_RCVBAD 0x10000000
213#define GRCR_CTLEN 0x08000000
214#define GRCR_ADDRAEN 0x02000000
215#define GRCR_HASHSIZE_SHIFT 17
216#define GRCR_HASHSIZE 14
217
218#define SLIC_EEPROM_ID 0xA5A5
219#define SLIC_SRAM_SIZE2GB (64 * 1024)
220#define SLIC_SRAM_SIZE1GB (32 * 1024)
221#define SLIC_HOSTID_DEFAULT 0xFFFF /* uninitialized hostid */
222#define SLIC_NBR_MACS 4
223
224#ifndef FALSE
225#define FALSE 0
226#else
227#undef FALSE
228#define FALSE 0
229#endif
230
231#ifndef TRUE
232#define TRUE 1
233#else
234#undef TRUE
235#define TRUE 1
236#endif
237
238struct slic_rcvbuf {
239 unsigned char pad1[6];
240 ushort pad2;
241 u32 pad3;
242 u32 pad4;
243 u32 buffer;
244 u32 length;
245 u32 status;
246 u32 pad5;
247 ushort pad6;
248 unsigned char data[SLIC_RCVBUF_DATASIZE];
249};
250
251 struct slic_hddr_wds {
252 union {
253 struct {
254 u32 frame_status;
255 u32 frame_status_b;
256 u32 time_stamp;
257 u32 checksum;
258 } hdrs_14port;
259 struct {
260 u32 frame_status;
261 ushort ByteCnt;
262 ushort TpChksum;
263 ushort CtxHash;
264 ushort MacHash;
265 u32 BufLnk;
266 } hdrs_gbit;
267 } u0;
268};
269
270#define frame_status14 u0.hdrs_14port.frame_status
271#define frame_status_b14 u0.hdrs_14port.frame_status_b
272#define frame_statusGB u0.hdrs_gbit.frame_status
273
274struct slic_host64sg {
275 u32 paddrl;
276 u32 paddrh;
277 u32 length;
278};
279
280struct slic_host64_cmd {
281 u32 hosthandle;
282 u32 RSVD;
283 unsigned char command;
284 unsigned char flags;
285 union {
286 ushort rsv1;
287 ushort rsv2;
288 } u0;
289 union {
290 struct {
291 u32 totlen;
292 struct slic_host64sg bufs[SLIC_MAX64_BCNT];
293 } slic_buffers;
294 } u;
295};
296
297struct slic_rspbuf {
298 u32 hosthandle;
299 u32 pad0;
300 u32 pad1;
301 u32 status;
302 u32 pad2[4];
303
304};
305
306struct slic_regs {
307 u32 slic_reset; /* Reset Register */
308 u32 pad0;
309
310 u32 slic_icr; /* Interrupt Control Register */
311 u32 pad2;
312#define SLIC_ICR 0x0008
313
314 u32 slic_isp; /* Interrupt status pointer */
315 u32 pad1;
316#define SLIC_ISP 0x0010
317
318 u32 slic_isr; /* Interrupt status */
319 u32 pad3;
320#define SLIC_ISR 0x0018
321
322 u32 slic_hbar; /* Header buffer address reg */
323 u32 pad4;
324 /* 31-8 - phy addr of set of contiguous hdr buffers
325 7-0 - number of buffers passed
326 Buffers are 256 bytes long on 256-byte boundaries. */
327#define SLIC_HBAR 0x0020
328#define SLIC_HBAR_CNT_MSK 0x000000FF
329
330 u32 slic_dbar; /* Data buffer handle & address reg */
331 u32 pad5;
332
333 /* 4 sets of registers; Buffers are 2K bytes long 2 per 4K page. */
334#define SLIC_DBAR 0x0028
335#define SLIC_DBAR_SIZE 2048
336
337 u32 slic_cbar; /* Xmt Cmd buf addr regs.*/
338 /* 1 per XMT interface
339 31-5 - phy addr of host command buffer
340 4-0 - length of cmd in multiples of 32 bytes
341 Buffers are 32 bytes up to 512 bytes long */
342#define SLIC_CBAR 0x0030
343#define SLIC_CBAR_LEN_MSK 0x0000001F
344#define SLIC_CBAR_ALIGN 0x00000020
345
346 u32 slic_wcs; /* write control store*/
347#define SLIC_WCS 0x0034
348#define SLIC_WCS_START 0x80000000 /*Start the SLIC (Jump to WCS)*/
349#define SLIC_WCS_COMPARE 0x40000000 /* Compare with value in WCS*/
350
351 u32 slic_rbar; /* Response buffer address reg.*/
352 u32 pad7;
353 /*31-8 - phy addr of set of contiguous response buffers
354 7-0 - number of buffers passed
355 Buffers are 32 bytes long on 32-byte boundaries.*/
356#define SLIC_RBAR 0x0038
357#define SLIC_RBAR_CNT_MSK 0x000000FF
358#define SLIC_RBAR_SIZE 32
359
360 u32 slic_stats; /* read statistics (UPR) */
361 u32 pad8;
362#define SLIC_RSTAT 0x0040
363
364 u32 slic_rlsr; /* read link status */
365 u32 pad9;
366#define SLIC_LSTAT 0x0048
367
368 u32 slic_wmcfg; /* Write Mac Config */
369 u32 pad10;
370#define SLIC_WMCFG 0x0050
371
372 u32 slic_wphy; /* Write phy register */
373 u32 pad11;
374#define SLIC_WPHY 0x0058
375
376 u32 slic_rcbar; /*Rcv Cmd buf addr reg*/
377 u32 pad12;
378#define SLIC_RCBAR 0x0060
379
380 u32 slic_rconfig; /* Read SLIC Config*/
381 u32 pad13;
382#define SLIC_RCONFIG 0x0068
383
384 u32 slic_intagg; /* Interrupt aggregation time*/
385 u32 pad14;
386#define SLIC_INTAGG 0x0070
387
388 u32 slic_wxcfg; /* Write XMIT config reg*/
389 u32 pad16;
390#define SLIC_WXCFG 0x0078
391
392 u32 slic_wrcfg; /* Write RCV config reg*/
393 u32 pad17;
394#define SLIC_WRCFG 0x0080
395
396 u32 slic_wraddral; /* Write rcv addr a low*/
397 u32 pad18;
398#define SLIC_WRADDRAL 0x0088
399
400 u32 slic_wraddrah; /* Write rcv addr a high*/
401 u32 pad19;
402#define SLIC_WRADDRAH 0x0090
403
404 u32 slic_wraddrbl; /* Write rcv addr b low*/
405 u32 pad20;
406#define SLIC_WRADDRBL 0x0098
407
408 u32 slic_wraddrbh; /* Write rcv addr b high*/
409 u32 pad21;
410#define SLIC_WRADDRBH 0x00a0
411
412 u32 slic_mcastlow; /* Low bits of mcast mask*/
413 u32 pad22;
414#define SLIC_MCASTLOW 0x00a8
415
416 u32 slic_mcasthigh; /* High bits of mcast mask*/
417 u32 pad23;
418#define SLIC_MCASTHIGH 0x00b0
419
420 u32 slic_ping; /* Ping the card*/
421 u32 pad24;
422#define SLIC_PING 0x00b8
423
424 u32 slic_dump_cmd; /* Dump command */
425 u32 pad25;
426#define SLIC_DUMP_CMD 0x00c0
427
428 u32 slic_dump_data; /* Dump data pointer */
429 u32 pad26;
430#define SLIC_DUMP_DATA 0x00c8
431
432 u32 slic_pcistatus; /* Read card's pci_status register */
433 u32 pad27;
434#define SLIC_PCISTATUS 0x00d0
435
436 u32 slic_wrhostid; /* Write hostid field */
437 u32 pad28;
438#define SLIC_WRHOSTID 0x00d8
439#define SLIC_RDHOSTID_1GB 0x1554
440#define SLIC_RDHOSTID_2GB 0x1554
441
442 u32 slic_low_power; /* Put card in a low power state */
443 u32 pad29;
444#define SLIC_LOW_POWER 0x00e0
445
446 u32 slic_quiesce; /* force slic into quiescent state
447 before soft reset */
448 u32 pad30;
449#define SLIC_QUIESCE 0x00e8
450
451 u32 slic_reset_iface; /* reset interface queues */
452 u32 pad31;
453#define SLIC_RESET_IFACE 0x00f0
454
455 u32 slic_addr_upper; /* Bits 63-32 for host i/f addrs */
456 u32 pad32;
457#define SLIC_ADDR_UPPER 0x00f8 /*Register is only written when it has changed*/
458
459 u32 slic_hbar64; /* 64 bit Header buffer address reg */
460 u32 pad33;
461#define SLIC_HBAR64 0x0100
462
463 u32 slic_dbar64; /* 64 bit Data buffer handle & address reg */
464 u32 pad34;
465#define SLIC_DBAR64 0x0108
466
467 u32 slic_cbar64; /* 64 bit Xmt Cmd buf addr regs. */
468 u32 pad35;
469#define SLIC_CBAR64 0x0110
470
471 u32 slic_rbar64; /* 64 bit Response buffer address reg.*/
472 u32 pad36;
473#define SLIC_RBAR64 0x0118
474
475 u32 slic_rcbar64; /* 64 bit Rcv Cmd buf addr reg*/
476 u32 pad37;
477#define SLIC_RCBAR64 0x0120
478
479 u32 slic_stats64; /*read statistics (64 bit UPR)*/
480 u32 pad38;
481#define SLIC_RSTAT64 0x0128
482
483 u32 slic_rcv_wcs; /*Download Gigabit RCV sequencer ucode*/
484 u32 pad39;
485#define SLIC_RCV_WCS 0x0130
486#define SLIC_RCVWCS_BEGIN 0x40000000
487#define SLIC_RCVWCS_FINISH 0x80000000
488
489 u32 slic_wrvlanid; /* Write VlanId field */
490 u32 pad40;
491#define SLIC_WRVLANID 0x0138
492
493 u32 slic_read_xf_info; /* Read Transformer info */
494 u32 pad41;
495#define SLIC_READ_XF_INFO 0x0140
496
497 u32 slic_write_xf_info; /* Write Transformer info */
498 u32 pad42;
499#define SLIC_WRITE_XF_INFO 0x0148
500
501 u32 RSVD1; /* TOE Only */
502 u32 pad43;
503
504 u32 RSVD2; /* TOE Only */
505 u32 pad44;
506
507 u32 RSVD3; /* TOE Only */
508 u32 pad45;
509
510 u32 RSVD4; /* TOE Only */
511 u32 pad46;
512
513 u32 slic_ticks_per_sec; /* Write card ticks per second */
514 u32 pad47;
515#define SLIC_TICKS_PER_SEC 0x0170
516
517};
518
519enum UPR_REQUEST {
520 SLIC_UPR_STATS,
521 SLIC_UPR_RLSR,
522 SLIC_UPR_WCFG,
523 SLIC_UPR_RCONFIG,
524 SLIC_UPR_RPHY,
525 SLIC_UPR_ENLB,
526 SLIC_UPR_ENCT,
527 SLIC_UPR_PDWN,
528 SLIC_UPR_PING,
529 SLIC_UPR_DUMP,
530};
531
532struct inicpm_wakepattern {
533 u32 patternlength;
534 unsigned char pattern[SLIC_PM_PATTERNSIZE];
535 unsigned char mask[SLIC_PM_PATTERNSIZE];
536};
537
538struct inicpm_state {
539 u32 powercaps;
540 u32 powerstate;
541 u32 wake_linkstatus;
542 u32 wake_magicpacket;
543 u32 wake_framepattern;
544 struct inicpm_wakepattern wakepattern[SLIC_PM_MAXPATTERNS];
545};
546
547struct slicpm_packet_pattern {
548 u32 priority;
549 u32 reserved;
550 u32 masksize;
551 u32 patternoffset;
552 u32 patternsize;
553 u32 patternflags;
554};
555
556enum slicpm_power_state {
557 slicpm_state_unspecified = 0,
558 slicpm_state_d0,
559 slicpm_state_d1,
560 slicpm_state_d2,
561 slicpm_state_d3,
562 slicpm_state_maximum
563};
564
565struct slicpm_wakeup_capabilities {
566 enum slicpm_power_state min_magic_packet_wakeup;
567 enum slicpm_power_state min_pattern_wakeup;
568 enum slicpm_power_state min_link_change_wakeup;
569};
570
571struct slic_pnp_capabilities {
572 u32 flags;
573 struct slicpm_wakeup_capabilities wakeup_capabilities;
574};
575
576struct xmt_stats {
577 u32 xmit_tcp_bytes;
578 u32 xmit_tcp_segs;
579 u32 xmit_bytes;
580 u32 xmit_collisions;
581 u32 xmit_unicasts;
582 u32 xmit_other_error;
583 u32 xmit_excess_collisions;
584};
585
586struct rcv_stats {
587 u32 rcv_tcp_bytes;
588 u32 rcv_tcp_segs;
589 u32 rcv_bytes;
590 u32 rcv_unicasts;
591 u32 rcv_other_error;
592 u32 rcv_drops;
593};
594
595struct xmt_statsgb {
596 u64 xmit_tcp_bytes;
597 u64 xmit_tcp_segs;
598 u64 xmit_bytes;
599 u64 xmit_collisions;
600 u64 xmit_unicasts;
601 u64 xmit_other_error;
602 u64 xmit_excess_collisions;
603};
604
605struct rcv_statsgb {
606 u64 rcv_tcp_bytes;
607 u64 rcv_tcp_segs;
608 u64 rcv_bytes;
609 u64 rcv_unicasts;
610 u64 rcv_other_error;
611 u64 rcv_drops;
612};
613
614struct slic_stats {
615 union {
616 struct {
617 struct xmt_stats xmt100;
618 struct rcv_stats rcv100;
619 } stats_100;
620 struct {
621 struct xmt_statsgb xmtGB;
622 struct rcv_statsgb rcvGB;
623 } stats_GB;
624 } u;
625};
626
627#define xmit_tcp_segs100 u.stats_100.xmt100.xmit_tcp_segs
628#define xmit_tcp_bytes100 u.stats_100.xmt100.xmit_tcp_bytes
629#define xmit_bytes100 u.stats_100.xmt100.xmit_bytes
630#define xmit_collisions100 u.stats_100.xmt100.xmit_collisions
631#define xmit_unicasts100 u.stats_100.xmt100.xmit_unicasts
632#define xmit_other_error100 u.stats_100.xmt100.xmit_other_error
633#define xmit_excess_collisions100 u.stats_100.xmt100.xmit_excess_collisions
634#define rcv_tcp_segs100 u.stats_100.rcv100.rcv_tcp_segs
635#define rcv_tcp_bytes100 u.stats_100.rcv100.rcv_tcp_bytes
636#define rcv_bytes100 u.stats_100.rcv100.rcv_bytes
637#define rcv_unicasts100 u.stats_100.rcv100.rcv_unicasts
638#define rcv_other_error100 u.stats_100.rcv100.rcv_other_error
639#define rcv_drops100 u.stats_100.rcv100.rcv_drops
640#define xmit_tcp_segs_gb u.stats_GB.xmtGB.xmit_tcp_segs
641#define xmit_tcp_bytes_gb u.stats_GB.xmtGB.xmit_tcp_bytes
642#define xmit_bytes_gb u.stats_GB.xmtGB.xmit_bytes
643#define xmit_collisions_gb u.stats_GB.xmtGB.xmit_collisions
644#define xmit_unicasts_gb u.stats_GB.xmtGB.xmit_unicasts
645#define xmit_other_error_gb u.stats_GB.xmtGB.xmit_other_error
646#define xmit_excess_collisions_gb u.stats_GB.xmtGB.xmit_excess_collisions
647
648#define rcv_tcp_segs_gb u.stats_GB.rcvGB.rcv_tcp_segs
649#define rcv_tcp_bytes_gb u.stats_GB.rcvGB.rcv_tcp_bytes
650#define rcv_bytes_gb u.stats_GB.rcvGB.rcv_bytes
651#define rcv_unicasts_gb u.stats_GB.rcvGB.rcv_unicasts
652#define rcv_other_error_gb u.stats_GB.rcvGB.rcv_other_error
653#define rcv_drops_gb u.stats_GB.rcvGB.rcv_drops
654
655struct slic_config_mac {
656 unsigned char macaddrA[6];
657};
658
659#define ATK_FRU_FORMAT 0x00
660#define VENDOR1_FRU_FORMAT 0x01
661#define VENDOR2_FRU_FORMAT 0x02
662#define VENDOR3_FRU_FORMAT 0x03
663#define VENDOR4_FRU_FORMAT 0x04
664#define NO_FRU_FORMAT 0xFF
665
666struct atk_fru {
667 unsigned char assembly[6];
668 unsigned char revision[2];
669 unsigned char serial[14];
670 unsigned char pad[3];
671};
672
673struct vendor1_fru {
674 unsigned char commodity;
675 unsigned char assembly[4];
676 unsigned char revision[2];
677 unsigned char supplier[2];
678 unsigned char date[2];
679 unsigned char sequence[3];
680 unsigned char pad[13];
681};
682
683struct vendor2_fru {
684 unsigned char part[8];
685 unsigned char supplier[5];
686 unsigned char date[3];
687 unsigned char sequence[4];
688 unsigned char pad[7];
689};
690
691struct vendor3_fru {
692 unsigned char assembly[6];
693 unsigned char revision[2];
694 unsigned char serial[14];
695 unsigned char pad[3];
696};
697
698struct vendor4_fru {
699 unsigned char number[8];
700 unsigned char part[8];
701 unsigned char version[8];
702 unsigned char pad[3];
703};
704
705union oemfru {
706 struct vendor1_fru vendor1_fru;
707 struct vendor2_fru vendor2_fru;
708 struct vendor3_fru vendor3_fru;
709 struct vendor4_fru vendor4_fru;
710};
711
712/*
713 SLIC EEPROM structure for Mojave
714*/
715struct slic_eeprom {
716 ushort Id; /* 00 EEPROM/FLASH Magic code 'A5A5'*/
717 ushort EecodeSize; /* 01 Size of EEPROM Codes (bytes * 4)*/
718 ushort FlashSize; /* 02 Flash size */
719 ushort EepromSize; /* 03 EEPROM Size */
720 ushort VendorId; /* 04 Vendor ID */
721 ushort DeviceId; /* 05 Device ID */
722 unsigned char RevisionId; /* 06 Revision ID */
723 unsigned char ClassCode[3]; /* 07 Class Code */
724 unsigned char DbgIntPin; /* 08 Debug Interrupt pin */
725 unsigned char NetIntPin0; /* Network Interrupt Pin */
726 unsigned char MinGrant; /* 09 Minimum grant */
727 unsigned char MaxLat; /* Maximum Latency */
728 ushort PciStatus; /* 10 PCI Status */
729 ushort SubSysVId; /* 11 Subsystem Vendor Id */
730 ushort SubSysId; /* 12 Subsystem ID */
731 ushort DbgDevId; /* 13 Debug Device Id */
732 ushort DramRomFn; /* 14 Dram/Rom function */
733 ushort DSize2Pci; /* 15 DRAM size to PCI (bytes * 64K) */
734 ushort RSize2Pci; /* 16 ROM extension size to PCI (bytes * 4k) */
735 unsigned char NetIntPin1;/* 17 Network Interface Pin 1
736 (simba/leone only) */
737 unsigned char NetIntPin2; /*Network Interface Pin 2 (simba/leone only)*/
738 union {
739 unsigned char NetIntPin3;/*18 Network Interface Pin 3
740 (simba only)*/
741 unsigned char FreeTime;/*FreeTime setting (leone/mojave only) */
742 } u1;
743 unsigned char TBIctl; /* 10-bit interface control (Mojave only) */
744 ushort DramSize; /* 19 DRAM size (bytes * 64k) */
745 union {
746 struct {
747 /* Mac Interface Specific portions */
748 struct slic_config_mac MacInfo[SLIC_NBR_MACS];
749 } mac; /* MAC access for all boards */
750 struct {
751 /* use above struct for MAC access */
752 struct slic_config_mac pad[SLIC_NBR_MACS - 1];
753 ushort DeviceId2; /* Device ID for 2nd
754 PCI function */
755 unsigned char IntPin2; /* Interrupt pin for
756 2nd PCI function */
757 unsigned char ClassCode2[3]; /* Class Code for 2nd
758 PCI function */
759 } mojave; /* 2nd function access for gigabit board */
760 } u2;
761 ushort CfgByte6; /* Config Byte 6 */
762 ushort PMECapab; /* Power Mgment capabilities */
763 ushort NwClkCtrls; /* NetworkClockControls */
764 unsigned char FruFormat; /* Alacritech FRU format type */
765 struct atk_fru AtkFru; /* Alacritech FRU information */
766 unsigned char OemFruFormat; /* optional OEM FRU format type */
767 union oemfru OemFru; /* optional OEM FRU information */
768 unsigned char Pad[4]; /* Pad to 128 bytes - includes 2 cksum bytes
769 *(if OEM FRU info exists) and two unusable
770 * bytes at the end */
771};
772
773/* SLIC EEPROM structure for Oasis */
774struct oslic_eeprom {
775 ushort Id; /* 00 EEPROM/FLASH Magic code 'A5A5' */
776 ushort EecodeSize; /* 01 Size of EEPROM Codes (bytes * 4)*/
777 ushort FlashConfig0; /* 02 Flash Config for SPI device 0 */
778 ushort FlashConfig1; /* 03 Flash Config for SPI device 1 */
779 ushort VendorId; /* 04 Vendor ID */
780 ushort DeviceId; /* 05 Device ID (function 0) */
781 unsigned char RevisionId; /* 06 Revision ID */
782 unsigned char ClassCode[3]; /* 07 Class Code for PCI function 0 */
783 unsigned char IntPin1; /* 08 Interrupt pin for PCI function 1*/
784 unsigned char ClassCode2[3]; /* 09 Class Code for PCI function 1 */
785 unsigned char IntPin2; /* 10 Interrupt pin for PCI function 2*/
786 unsigned char IntPin0; /* Interrupt pin for PCI function 0*/
787 unsigned char MinGrant; /* 11 Minimum grant */
788 unsigned char MaxLat; /* Maximum Latency */
789 ushort SubSysVId; /* 12 Subsystem Vendor Id */
790 ushort SubSysId; /* 13 Subsystem ID */
791 ushort FlashSize; /* 14 Flash size (bytes / 4K) */
792 ushort DSize2Pci; /* 15 DRAM size to PCI (bytes / 64K) */
793 ushort RSize2Pci; /* 16 Flash (ROM extension) size to
794 PCI (bytes / 4K) */
795 ushort DeviceId1; /* 17 Device Id (function 1) */
796 ushort DeviceId2; /* 18 Device Id (function 2) */
797 ushort CfgByte6; /* 19 Device Status Config Bytes 6-7 */
798 ushort PMECapab; /* 20 Power Mgment capabilities */
799 unsigned char MSICapab; /* 21 MSI capabilities */
800 unsigned char ClockDivider; /* Clock divider */
801 ushort PciStatusLow; /* 22 PCI Status bits 15:0 */
802 ushort PciStatusHigh; /* 23 PCI Status bits 31:16 */
803 ushort DramConfigLow; /* 24 DRAM Configuration bits 15:0 */
804 ushort DramConfigHigh; /* 25 DRAM Configuration bits 31:16 */
805 ushort DramSize; /* 26 DRAM size (bytes / 64K) */
806 ushort GpioTbiCtl;/* 27 GPIO/TBI controls for functions 1/0 */
807 ushort EepromSize; /* 28 EEPROM Size */
808 struct slic_config_mac MacInfo[2]; /* 29 MAC addresses (2 ports) */
809 unsigned char FruFormat; /* 35 Alacritech FRU format type */
810 struct atk_fru AtkFru; /* Alacritech FRU information */
811 unsigned char OemFruFormat; /* optional OEM FRU format type */
812 union oemfru OemFru; /* optional OEM FRU information */
813 unsigned char Pad[4]; /* Pad to 128 bytes - includes 2 checksum bytes
814 * (if OEM FRU info exists) and two unusable
815 * bytes at the end
816 */
817};
818
819#define MAX_EECODE_SIZE sizeof(struct slic_eeprom)
820#define MIN_EECODE_SIZE 0x62 /* code size without optional OEM FRU stuff */
821
822/* SLIC CONFIG structure
823
824 This structure lives in the CARD structure and is valid for all
825 board types. It is filled in from the appropriate EEPROM structure
826 by SlicGetConfigData().
827*/
828struct slic_config {
829 bool EepromValid; /* Valid EEPROM flag (checksum good?) */
830 ushort DramSize; /* DRAM size (bytes / 64K) */
831 struct slic_config_mac MacInfo[SLIC_NBR_MACS]; /* MAC addresses */
832 unsigned char FruFormat; /* Alacritech FRU format type */
833 struct atk_fru AtkFru; /* Alacritech FRU information */
834 unsigned char OemFruFormat; /* optional OEM FRU format type */
835 union {
836 struct vendor1_fru vendor1_fru;
837 struct vendor2_fru vendor2_fru;
838 struct vendor3_fru vendor3_fru;
839 struct vendor4_fru vendor4_fru;
840 } OemFru;
841};
842
843#pragma pack()
844
845#endif
diff --git a/drivers/staging/slicoss/slicinc.h b/drivers/staging/slicoss/slicinc.h
new file mode 100644
index 00000000000..71288c4f7be
--- /dev/null
+++ b/drivers/staging/slicoss/slicinc.h
@@ -0,0 +1,185 @@
1/**************************************************************************
2 *
3 * Copyright (c) 2000-2002 Alacritech, Inc. All rights reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials provided
15 * with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 *
30 * The views and conclusions contained in the software and documentation
31 * are those of the authors and should not be interpreted as representing
32 * official policies, either expressed or implied, of Alacritech, Inc.
33 *
34 **************************************************************************/
35
36/*
37 * FILENAME: slicinc.h
38 *
39 * This file contains all other include files and prototype definitions
40 * for the SLICOSS driver.
41 */
42#ifndef _SLIC_INCLUDE_H_
43#define _SLIC_INCLUDE_H_
44
45#include "slic_os.h"
46#include "slicdbg.h"
47#include "slichw.h"
48#include "slic.h"
49
50static int slic_entry_probe(struct pci_dev *pcidev,
51 const struct pci_device_id *ent);
52static void slic_entry_remove(struct pci_dev *pcidev);
53
54static void slic_init_driver(void);
55static int slic_entry_open(struct net_device *dev);
56static int slic_entry_halt(struct net_device *dev);
57static int slic_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
58static int slic_xmit_start(struct sk_buff *skb, struct net_device *dev);
59static void slic_xmit_fail(struct adapter *adapter,
60 struct sk_buff *skb,
61 void *cmd,
62 u32 skbtype,
63 u32 status);
64static void slic_config_pci(struct pci_dev *pcidev);
65static struct sk_buff *slic_rcvqueue_getnext(struct adapter *adapter);
66
67static inline void slic_reg32_write(void __iomem *reg, u32 value, uint flush);
68static inline void slic_reg64_write(struct adapter *adapter, void __iomem *reg,
69 u32 value, void __iomem *regh, u32 paddrh, uint flush);
70
71#if SLIC_GET_STATS_ENABLED
72static struct net_device_stats *slic_get_stats(struct net_device *dev);
73#endif
74
75static int slic_mac_set_address(struct net_device *dev, void *ptr);
76static void slic_rcv_handler(struct adapter *adapter);
77static void slic_link_event_handler(struct adapter *adapter);
78static void slic_xmit_complete(struct adapter *adapter);
79static void slic_upr_request_complete(struct adapter *adapter, u32 isr);
80static int slic_rspqueue_init(struct adapter *adapter);
81static int slic_rspqueue_reset(struct adapter *adapter);
82static void slic_rspqueue_free(struct adapter *adapter);
83static struct slic_rspbuf *slic_rspqueue_getnext(struct adapter *adapter);
84static void slic_cmdqmem_init(struct adapter *adapter);
85static void slic_cmdqmem_free(struct adapter *adapter);
86static u32 *slic_cmdqmem_addpage(struct adapter *adapter);
87static int slic_cmdq_init(struct adapter *adapter);
88static void slic_cmdq_free(struct adapter *adapter);
89static void slic_cmdq_reset(struct adapter *adapter);
90static void slic_cmdq_addcmdpage(struct adapter *adapter, u32 *page);
91static void slic_cmdq_getdone(struct adapter *adapter);
92static void slic_cmdq_putdone_irq(struct adapter *adapter,
93 struct slic_hostcmd *cmd);
94static struct slic_hostcmd *slic_cmdq_getfree(struct adapter *adapter);
95static int slic_rcvqueue_init(struct adapter *adapter);
96static int slic_rcvqueue_reset(struct adapter *adapter);
97static int slic_rcvqueue_fill(struct adapter *adapter);
98static u32 slic_rcvqueue_reinsert(struct adapter *adapter, struct sk_buff *skb);
99static void slic_rcvqueue_free(struct adapter *adapter);
100static void slic_rcv_handle_error(struct adapter *adapter,
101 struct slic_rcvbuf *rcvbuf);
102static void slic_adapter_set_hwaddr(struct adapter *adapter);
103static int slic_card_init(struct sliccard *card, struct adapter *adapter);
104static void slic_intagg_set(struct adapter *adapter, u32 value);
105static int slic_card_download(struct adapter *adapter);
106static u32 slic_card_locate(struct adapter *adapter);
107
108static void slic_if_stop_queue(struct adapter *adapter);
109static void slic_if_start_queue(struct adapter *adapter);
110static int slic_if_init(struct adapter *adapter);
111static int slic_adapter_allocresources(struct adapter *adapter);
112static void slic_adapter_freeresources(struct adapter *adapter);
113static void slic_link_config(struct adapter *adapter, u32 linkspeed,
114 u32 linkduplex);
115static void slic_unmap_mmio_space(struct adapter *adapter);
116static void slic_card_cleanup(struct sliccard *card);
117static void slic_init_cleanup(struct adapter *adapter);
118static void slic_soft_reset(struct adapter *adapter);
119static bool slic_mac_filter(struct adapter *adapter,
120 struct ether_header *ether_frame);
121static void slic_mac_address_config(struct adapter *adapter);
122static void slic_mac_config(struct adapter *adapter);
123static void slic_mcast_set_mask(struct adapter *adapter);
124static int slic_mcast_add_list(struct adapter *adapter, char *address);
125static unsigned char slic_mcast_get_mac_hash(char *macaddr);
126static void slic_mcast_set_bit(struct adapter *adapter, char *address);
127static void slic_config_set(struct adapter *adapter, bool linkchange);
128static void slic_config_clear(struct adapter *adapter);
129static void slic_config_get(struct adapter *adapter, u32 config,
130 u32 configh);
131static void slic_timer_load_check(ulong context);
132static void slic_timer_ping(ulong dev);
133static void slic_assert_fail(void);
134static ushort slic_eeprom_cksum(char *m, int len);
135/* upr */
136static void slic_upr_start(struct adapter *adapter);
137static void slic_link_upr_complete(struct adapter *adapter, u32 Isr);
138static int slic_upr_request(struct adapter *adapter,
139 u32 upr_request,
140 u32 upr_data,
141 u32 upr_data_h,
142 u32 upr_buffer,
143 u32 upr_buffer_h);
144static int slic_upr_queue_request(struct adapter *adapter,
145 u32 upr_request,
146 u32 upr_data,
147 u32 upr_data_h,
148 u32 upr_buffer,
149 u32 upr_buffer_h);
150static void slic_mcast_set_list(struct net_device *dev);
151static void slic_mcast_init_crc32(void);
152
153#if SLIC_DUMP_ENABLED
154static int slic_dump_thread(void *context);
155static uint slic_init_dump_thread(struct sliccard *card);
156static unsigned char slic_get_dump_index(char *path);
157static u32 slic_dump_card(struct sliccard *card, bool resume);
158static u32 slic_dump_halt(struct sliccard *card, unsigned char proc);
159static u32 slic_dump_reg(struct sliccard *card, unsigned char proc);
160static u32 slic_dump_data(struct sliccard *card, u32 addr,
161 ushort count, unsigned char desc);
162static u32 slic_dump_queue(struct sliccard *card, u32 buf_phys,
163 u32 buf_physh, u32 queue);
164static u32 slic_dump_load_queue(struct sliccard *card, u32 data,
165 u32 queue);
166static u32 slic_dump_cam(struct sliccard *card, u32 addr,
167 u32 count, unsigned char desc);
168
169static u32 slic_dump_resume(struct sliccard *card, unsigned char proc);
170static u32 slic_dump_send_cmd(struct sliccard *card, u32 cmd_phys,
171 u32 cmd_physh, u32 buf_phys,
172 u32 buf_physh);
173
174#define create_file(x) STATUS_SUCCESS
175#define write_file(w, x, y, z) STATUS_SUCCESS
176#define close_file(x) STATUS_SUCCESS
177#define read_file(w, x, y, z) STATUS_SUCCESS
178#define open_file(x) STATUS_SUCCESS
179
180/* PAGE_SIZE * 16 */
181#define DUMP_PAGE_SIZE 0xFFFF
182#define DUMP_PAGE_SIZE_HALF 0x7FFE
183#endif
184
185#endif /* _SLIC_INCLUDE_H_ */
diff --git a/drivers/staging/slicoss/slicoss.c b/drivers/staging/slicoss/slicoss.c
new file mode 100644
index 00000000000..b61ac4b2db9
--- /dev/null
+++ b/drivers/staging/slicoss/slicoss.c
@@ -0,0 +1,5936 @@
1/**************************************************************************
2 *
3 * Copyright 2000-2006 Alacritech, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials provided
14 * with the distribution.
15 *
16 * Alternatively, this software may be distributed under the terms of the
17 * GNU General Public License ("GPL") version 2 as published by the Free
18 * Software Foundation.
19 *
20 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
21 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * The views and conclusions contained in the software and documentation
34 * are those of the authors and should not be interpreted as representing
35 * official policies, either expressed or implied, of Alacritech, Inc.
36 *
37 **************************************************************************/
38
39/*
40 * FILENAME: slicoss.c
41 *
42 * The SLICOSS driver for Alacritech's IS-NIC products.
43 *
44 * This driver is supposed to support:
45 *
46 * Mojave cards (single port PCI Gigabit) both copper and fiber
47 * Oasis cards (single and dual port PCI-x Gigabit) copper and fiber
48 * Kalahari cards (dual and quad port PCI-e Gigabit) copper and fiber
49 *
50 * The driver was acutally tested on Oasis and Kalahari cards.
51 *
52 *
53 * NOTE: This is the standard, non-accelerated version of Alacritech's
54 * IS-NIC driver.
55 */
56
57#include <linux/version.h>
58
59#define SLIC_DUMP_ENABLED 0
60#define KLUDGE_FOR_4GB_BOUNDARY 1
61#define DEBUG_MICROCODE 1
62#define SLIC_PRODUCTION_BUILD 1
63#define SLIC_FAILURE_RESET 1
64#define DBG 1
65#define SLIC_ASSERT_ENABLED 1
66#define SLIC_GET_STATS_ENABLED 1
67#define SLIC_GET_STATS_TIMER_ENABLED 0
68#define SLIC_PING_TIMER_ENABLED 1
69#define SLIC_POWER_MANAGEMENT_ENABLED 0
70#define SLIC_INTERRUPT_PROCESS_LIMIT 1
71#define LINUX_FREES_ADAPTER_RESOURCES 1
72#define SLIC_OFFLOAD_IP_CHECKSUM 1
73#define STATS_TIMER_INTERVAL 2
74#define PING_TIMER_INTERVAL 1
75
76#include <linux/kernel.h>
77#include <linux/string.h>
78#include <linux/errno.h>
79#include <linux/ioport.h>
80#include <linux/slab.h>
81#include <linux/interrupt.h>
82#include <linux/timer.h>
83#include <linux/pci.h>
84#include <linux/spinlock.h>
85#include <linux/init.h>
86#include <linux/bitops.h>
87#include <linux/io.h>
88#include <linux/netdevice.h>
89#include <linux/etherdevice.h>
90#include <linux/skbuff.h>
91#include <linux/delay.h>
92#include <linux/debugfs.h>
93#include <linux/seq_file.h>
94#include <linux/kthread.h>
95#include <linux/module.h>
96#include <linux/moduleparam.h>
97
98#include <linux/types.h>
99#include <linux/slab.h>
100#include <linux/delay.h>
101#include <linux/init.h>
102#include <linux/pci.h>
103#include <linux/dma-mapping.h>
104#include <linux/netdevice.h>
105#include <linux/etherdevice.h>
106#include <linux/mii.h>
107#include <linux/if_vlan.h>
108#include <linux/skbuff.h>
109#include <linux/string.h>
110#include <asm/unaligned.h>
111
112#include <linux/ethtool.h>
113#define SLIC_ETHTOOL_SUPPORT 1
114
115#include <linux/uaccess.h>
116#include "slicinc.h"
117#include "gbdownload.h"
118#include "gbrcvucode.h"
119#include "oasisrcvucode.h"
120
121#ifdef DEBUG_MICROCODE
122#include "oasisdbgdownload.h"
123#else
124#include "oasisdownload.h"
125#endif
126
127#if SLIC_DUMP_ENABLED
128#include "slicdump.h"
129#endif
130
131#define SLIC_POWER_MANAGEMENT 0
132
133static uint slic_first_init = 1;
134static char *slic_banner = "Alacritech SLIC Technology(tm) Server "\
135 "and Storage Accelerator (Non-Accelerated)\n";
136
137static char *slic_proc_version = "2.0.351 2006/07/14 12:26:00";
138static char *slic_product_name = "SLIC Technology(tm) Server "\
139 "and Storage Accelerator (Non-Accelerated)";
140static char *slic_vendor = "Alacritech, Inc.";
141
142static int slic_debug = 1;
143static int debug = -1;
144static struct net_device *head_netdevice;
145
146static struct base_driver slic_global = { {}, 0, 0, 0, 1, NULL, NULL };
147static int intagg_delay = 100;
148static u32 dynamic_intagg;
149static int errormsg;
150static int goodmsg;
151static unsigned int rcv_count;
152static struct dentry *slic_debugfs;
153
154#define DRV_NAME "slicoss"
155#define DRV_VERSION "2.0.1"
156#define DRV_AUTHOR "Alacritech, Inc. Engineering"
157#define DRV_DESCRIPTION "Alacritech SLIC Techonology(tm) "\
158 "Non-Accelerated Driver"
159#define DRV_COPYRIGHT "Copyright 2000-2006 Alacritech, Inc. "\
160 "All rights reserved."
161#define PFX DRV_NAME " "
162
163MODULE_AUTHOR(DRV_AUTHOR);
164MODULE_DESCRIPTION(DRV_DESCRIPTION);
165MODULE_LICENSE("Dual BSD/GPL");
166
167module_param(dynamic_intagg, int, 0);
168MODULE_PARM_DESC(dynamic_intagg, "Dynamic Interrupt Aggregation Setting");
169module_param(intagg_delay, int, 0);
170MODULE_PARM_DESC(intagg_delay, "uSec Interrupt Aggregation Delay");
171
172static struct pci_device_id slic_pci_tbl[] __devinitdata = {
173 {PCI_VENDOR_ID_ALACRITECH,
174 SLIC_1GB_DEVICE_ID,
175 PCI_ANY_ID, PCI_ANY_ID,},
176 {PCI_VENDOR_ID_ALACRITECH,
177 SLIC_2GB_DEVICE_ID,
178 PCI_ANY_ID, PCI_ANY_ID,},
179 {0,}
180};
181
182MODULE_DEVICE_TABLE(pci, slic_pci_tbl);
183
184#define SLIC_GET_SLIC_HANDLE(_adapter, _pslic_handle) \
185{ \
186 spin_lock_irqsave(&_adapter->handle_lock.lock, \
187 _adapter->handle_lock.flags); \
188 _pslic_handle = _adapter->pfree_slic_handles; \
189 if (_pslic_handle) { \
190 ASSERT(_pslic_handle->type == SLIC_HANDLE_FREE); \
191 _adapter->pfree_slic_handles = _pslic_handle->next; \
192 } \
193 spin_unlock_irqrestore(&_adapter->handle_lock.lock, \
194 _adapter->handle_lock.flags); \
195}
196
197#define SLIC_FREE_SLIC_HANDLE(_adapter, _pslic_handle) \
198{ \
199 _pslic_handle->type = SLIC_HANDLE_FREE; \
200 spin_lock_irqsave(&_adapter->handle_lock.lock, \
201 _adapter->handle_lock.flags); \
202 _pslic_handle->next = _adapter->pfree_slic_handles; \
203 _adapter->pfree_slic_handles = _pslic_handle; \
204 spin_unlock_irqrestore(&_adapter->handle_lock.lock, \
205 _adapter->handle_lock.flags); \
206}
207
208static void slic_debug_init(void);
209static void slic_debug_cleanup(void);
210static void slic_debug_adapter_create(struct adapter *adapter);
211static void slic_debug_adapter_destroy(struct adapter *adapter);
212static void slic_debug_card_create(struct sliccard *card);
213static void slic_debug_card_destroy(struct sliccard *card);
214
215static inline void slic_reg32_write(void __iomem *reg, u32 value, uint flush)
216{
217 writel(value, reg);
218 if (flush)
219 mb();
220}
221
222static inline void slic_reg64_write(struct adapter *adapter,
223 void __iomem *reg,
224 u32 value,
225 void __iomem *regh, u32 paddrh, uint flush)
226{
227 spin_lock_irqsave(&adapter->bit64reglock.lock,
228 adapter->bit64reglock.flags);
229 if (paddrh != adapter->curaddrupper) {
230 adapter->curaddrupper = paddrh;
231 writel(paddrh, regh);
232 }
233 writel(value, reg);
234 if (flush)
235 mb();
236 spin_unlock_irqrestore(&adapter->bit64reglock.lock,
237 adapter->bit64reglock.flags);
238}
239
240static void slic_init_driver(void)
241{
242 if (slic_first_init) {
243 DBG_MSG("slicoss: %s slic_first_init set jiffies[%lx]\n",
244 __func__, jiffies);
245 slic_first_init = 0;
246 spin_lock_init(&slic_global.driver_lock.lock);
247 slic_debug_init();
248 }
249}
250
251static void slic_dbg_macaddrs(struct adapter *adapter)
252{
253 DBG_MSG(" (%s) curr %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
254 adapter->netdev->name, adapter->currmacaddr[0],
255 adapter->currmacaddr[1], adapter->currmacaddr[2],
256 adapter->currmacaddr[3], adapter->currmacaddr[4],
257 adapter->currmacaddr[5]);
258 DBG_MSG(" (%s) mac %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
259 adapter->netdev->name, adapter->macaddr[0],
260 adapter->macaddr[1], adapter->macaddr[2],
261 adapter->macaddr[3], adapter->macaddr[4], adapter->macaddr[5]);
262 return;
263}
264
265#ifdef DEBUG_REGISTER_TRACE
266static void slic_dbg_register_trace(struct adapter *adapter,
267 struct sliccard *card)
268{
269 uint i;
270
271 DBG_ERROR("Dump Register Write Trace: curr_ix == %d\n", card->debug_ix);
272 for (i = 0; i < 32; i++) {
273 DBG_ERROR("%2d %d %4x %x %x\n",
274 i, card->reg_type[i], card->reg_offset[i],
275 card->reg_value[i], card->reg_valueh[i]);
276 }
277}
278}
279#endif
280
281static void slic_init_adapter(struct net_device *netdev,
282 struct pci_dev *pcidev,
283 const struct pci_device_id *pci_tbl_entry,
284 void __iomem *memaddr, int chip_idx)
285{
286 ushort index;
287 struct slic_handle *pslic_handle;
288 struct adapter *adapter = (struct adapter *)netdev_priv(netdev);
289/*
290 DBG_MSG("slicoss: %s (%s)\n netdev [%p]\n adapter[%p]\n "
291 "pcidev [%p]\n", __func__, netdev->name, netdev, adapter, pcidev);*/
292/* adapter->pcidev = pcidev;*/
293 adapter->vendid = pci_tbl_entry->vendor;
294 adapter->devid = pci_tbl_entry->device;
295 adapter->subsysid = pci_tbl_entry->subdevice;
296 adapter->busnumber = pcidev->bus->number;
297 adapter->slotnumber = ((pcidev->devfn >> 3) & 0x1F);
298 adapter->functionnumber = (pcidev->devfn & 0x7);
299 adapter->memorylength = pci_resource_len(pcidev, 0);
300 adapter->slic_regs = (__iomem struct slic_regs *)memaddr;
301 adapter->irq = pcidev->irq;
302/* adapter->netdev = netdev;*/
303 adapter->next_netdevice = head_netdevice;
304 head_netdevice = netdev;
305 adapter->chipid = chip_idx;
306 adapter->port = 0; /*adapter->functionnumber;*/
307 adapter->cardindex = adapter->port;
308 adapter->memorybase = memaddr;
309 spin_lock_init(&adapter->upr_lock.lock);
310 spin_lock_init(&adapter->bit64reglock.lock);
311 spin_lock_init(&adapter->adapter_lock.lock);
312 spin_lock_init(&adapter->reset_lock.lock);
313 spin_lock_init(&adapter->handle_lock.lock);
314
315 adapter->card_size = 1;
316 /*
317 Initialize slic_handle array
318 */
319 ASSERT(SLIC_CMDQ_MAXCMDS <= 0xFFFF);
320 /*
321 Start with 1. 0 is an invalid host handle.
322 */
323 for (index = 1, pslic_handle = &adapter->slic_handles[1];
324 index < SLIC_CMDQ_MAXCMDS; index++, pslic_handle++) {
325
326 pslic_handle->token.handle_index = index;
327 pslic_handle->type = SLIC_HANDLE_FREE;
328 pslic_handle->next = adapter->pfree_slic_handles;
329 adapter->pfree_slic_handles = pslic_handle;
330 }
331/*
332 DBG_MSG(".........\nix[%d] phandle[%p] pfree[%p] next[%p]\n",
333 index, pslic_handle, adapter->pfree_slic_handles, pslic_handle->next);*/
334 adapter->pshmem = (struct slic_shmem *)
335 pci_alloc_consistent(adapter->pcidev,
336 sizeof(struct slic_shmem *),
337 &adapter->
338 phys_shmem);
339/*
340 DBG_MSG("slicoss: %s (%s)\n pshmem [%p]\n phys_shmem[%p]\n"\
341 "slic_regs [%p]\n", __func__, netdev->name, adapter->pshmem,
342 (void *)adapter->phys_shmem, adapter->slic_regs);
343*/
344 ASSERT(adapter->pshmem);
345
346 memset(adapter->pshmem, 0, sizeof(struct slic_shmem));
347
348 return;
349}
350
351static int __devinit slic_entry_probe(struct pci_dev *pcidev,
352 const struct pci_device_id *pci_tbl_entry)
353{
354 static int cards_found;
355 static int did_version;
356 int err;
357 struct net_device *netdev;
358 struct adapter *adapter;
359 void __iomem *memmapped_ioaddr = NULL;
360 u32 status = 0;
361 ulong mmio_start = 0;
362 ulong mmio_len = 0;
363 struct sliccard *card = NULL;
364
365 DBG_MSG("slicoss: %s 2.6 VERSION ENTER jiffies[%lx] cpu %d\n",
366 __func__, jiffies, smp_processor_id());
367
368 slic_global.dynamic_intagg = dynamic_intagg;
369
370 err = pci_enable_device(pcidev);
371
372 DBG_MSG("Call pci_enable_device(%p) status[%x]\n", pcidev, err);
373 if (err)
374 return err;
375
376 if (slic_debug > 0 && did_version++ == 0) {
377 printk(slic_banner);
378 printk(slic_proc_version);
379 }
380
381 err = pci_set_dma_mask(pcidev, DMA_64BIT_MASK);
382 if (!err) {
383 DBG_MSG("pci_set_dma_mask(DMA_64BIT_MASK) successful\n");
384 } else {
385 err = pci_set_dma_mask(pcidev, DMA_32BIT_MASK);
386 if (err) {
387 DBG_MSG
388 ("No usable DMA configuration, aborting err[%x]\n",
389 err);
390 return err;
391 }
392 DBG_MSG("pci_set_dma_mask(DMA_32BIT_MASK) successful\n");
393 }
394
395 DBG_MSG("Call pci_request_regions\n");
396
397 err = pci_request_regions(pcidev, DRV_NAME);
398 if (err) {
399 DBG_MSG("pci_request_regions FAILED err[%x]\n", err);
400 return err;
401 }
402
403 DBG_MSG("call pci_set_master\n");
404 pci_set_master(pcidev);
405
406 DBG_MSG("call alloc_etherdev\n");
407 netdev = alloc_etherdev(sizeof(struct adapter));
408 if (!netdev) {
409 err = -ENOMEM;
410 goto err_out_exit_slic_probe;
411 }
412 DBG_MSG("alloc_etherdev for slic netdev[%p]\n", netdev);
413
414 SET_NETDEV_DEV(netdev, &pcidev->dev);
415
416 pci_set_drvdata(pcidev, netdev);
417 adapter = netdev_priv(netdev);
418 adapter->netdev = netdev;
419 adapter->pcidev = pcidev;
420
421 mmio_start = pci_resource_start(pcidev, 0);
422 mmio_len = pci_resource_len(pcidev, 0);
423
424 DBG_MSG("slicoss: call ioremap(mmio_start[%lx], mmio_len[%lx])\n",
425 mmio_start, mmio_len);
426
427/* memmapped_ioaddr = (u32)ioremap_nocache(mmio_start, mmio_len);*/
428 memmapped_ioaddr = ioremap(mmio_start, mmio_len);
429 DBG_MSG("slicoss: %s MEMMAPPED_IOADDR [%p]\n", __func__,
430 memmapped_ioaddr);
431 if (!memmapped_ioaddr) {
432 DBG_ERROR("%s cannot remap MMIO region %lx @ %lx\n",
433 __func__, mmio_len, mmio_start);
434 goto err_out_free_mmio_region;
435 }
436
437 DBG_MSG
438 ("slicoss: %s found Alacritech SLICOSS PCI, MMIO at %p, "\
439 "start[%lx] len[%lx], IRQ %d.\n",
440 __func__, memmapped_ioaddr, mmio_start, mmio_len, pcidev->irq);
441
442 slic_config_pci(pcidev);
443
444 slic_init_driver();
445
446 slic_init_adapter(netdev,
447 pcidev, pci_tbl_entry, memmapped_ioaddr, cards_found);
448
449 status = slic_card_locate(adapter);
450 if (status) {
451 DBG_ERROR("%s cannot locate card\n", __func__);
452 goto err_out_free_mmio_region;
453 }
454
455 card = adapter->card;
456
457 if (!adapter->allocated) {
458 card->adapters_allocated++;
459 adapter->allocated = 1;
460 }
461
462 DBG_MSG("slicoss: %s card: %p\n", __func__,
463 adapter->card);
464 DBG_MSG("slicoss: %s card->adapter[%d] == [%p]\n", __func__,
465 (uint) adapter->port, adapter);
466 DBG_MSG("slicoss: %s card->adapters_allocated [%d]\n", __func__,
467 card->adapters_allocated);
468 DBG_MSG("slicoss: %s card->adapters_activated [%d]\n", __func__,
469 card->adapters_activated);
470
471 status = slic_card_init(card, adapter);
472
473 if (status != STATUS_SUCCESS) {
474 card->state = CARD_FAIL;
475 adapter->state = ADAPT_FAIL;
476 adapter->linkstate = LINK_DOWN;
477 DBG_ERROR("slic_card_init FAILED status[%x]\n", status);
478 } else {
479 slic_adapter_set_hwaddr(adapter);
480 }
481
482 netdev->base_addr = (unsigned long)adapter->memorybase;
483 netdev->irq = adapter->irq;
484 netdev->open = slic_entry_open;
485 netdev->stop = slic_entry_halt;
486 netdev->hard_start_xmit = slic_xmit_start;
487 netdev->do_ioctl = slic_ioctl;
488 netdev->set_mac_address = slic_mac_set_address;
489#if SLIC_GET_STATS_ENABLED
490 netdev->get_stats = slic_get_stats;
491#endif
492 netdev->set_multicast_list = slic_mcast_set_list;
493
494 slic_debug_adapter_create(adapter);
495
496 strcpy(netdev->name, "eth%d");
497 err = register_netdev(netdev);
498 if (err) {
499 DBG_ERROR("Cannot register net device, aborting.\n");
500 goto err_out_unmap;
501 }
502
503 DBG_MSG
504 ("slicoss: addr 0x%lx, irq %d, MAC addr "\
505 "%02X:%02X:%02X:%02X:%02X:%02X\n",
506 mmio_start, /*pci_resource_start(pcidev, 0), */ pcidev->irq,
507 netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2],
508 netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]);
509
510 cards_found++;
511 DBG_MSG("slicoss: %s EXIT status[%x] jiffies[%lx] cpu %d\n",
512 __func__, status, jiffies, smp_processor_id());
513
514 return status;
515
516err_out_unmap:
517 iounmap(memmapped_ioaddr);
518
519err_out_free_mmio_region:
520 release_mem_region(mmio_start, mmio_len);
521
522err_out_exit_slic_probe:
523 pci_release_regions(pcidev);
524 DBG_ERROR("%s EXIT jiffies[%lx] cpu %d\n", __func__, jiffies,
525 smp_processor_id());
526
527 return -ENODEV;
528}
529
530static int slic_entry_open(struct net_device *dev)
531{
532 struct adapter *adapter = (struct adapter *) netdev_priv(dev);
533 struct sliccard *card = adapter->card;
534 u32 locked = 0;
535 int status;
536
537 ASSERT(adapter);
538 ASSERT(card);
539 DBG_MSG
540 ("slicoss: %s adapter->activated[%d] card->adapters[%x] "\
541 "allocd[%x]\n", __func__, adapter->activated,
542 card->adapters_activated,
543 card->adapters_allocated);
544 DBG_MSG
545 ("slicoss: %s (%s): [jiffies[%lx] cpu %d] dev[%p] adapt[%p] "\
546 "port[%d] card[%p]\n",
547 __func__, adapter->netdev->name, jiffies, smp_processor_id(),
548 adapter->netdev, adapter, adapter->port, card);
549
550 netif_stop_queue(adapter->netdev);
551
552 spin_lock_irqsave(&slic_global.driver_lock.lock,
553 slic_global.driver_lock.flags);
554 locked = 1;
555 if (!adapter->activated) {
556 card->adapters_activated++;
557 slic_global.num_slic_ports_active++;
558 adapter->activated = 1;
559 }
560 status = slic_if_init(adapter);
561
562 if (status != STATUS_SUCCESS) {
563 if (adapter->activated) {
564 card->adapters_activated--;
565 slic_global.num_slic_ports_active--;
566 adapter->activated = 0;
567 }
568 if (locked) {
569 spin_unlock_irqrestore(&slic_global.driver_lock.lock,
570 slic_global.driver_lock.flags);
571 locked = 0;
572 }
573 return status;
574 }
575 DBG_MSG("slicoss: %s set card->master[%p] adapter[%p]\n", __func__,
576 card->master, adapter);
577 if (!card->master)
578 card->master = adapter;
579#if SLIC_DUMP_ENABLED
580 if (!(card->dumpthread_running))
581 init_waitqueue_head(&card->dump_wq);
582#endif
583
584 if (locked) {
585 spin_unlock_irqrestore(&slic_global.driver_lock.lock,
586 slic_global.driver_lock.flags);
587 locked = 0;
588 }
589#if SLIC_DUMP_ENABLED
590 if (!(card->dumpthread_running)) {
591 DBG_MSG("attempt to initialize dump thread\n");
592 status = slic_init_dump_thread(card);
593 /*
594 Even if the dump thread fails, we will continue at this point
595 */
596 }
597#endif
598
599 return STATUS_SUCCESS;
600}
601
602static void __devexit slic_entry_remove(struct pci_dev *pcidev)
603{
604 struct net_device *dev = pci_get_drvdata(pcidev);
605 u32 mmio_start = 0;
606 uint mmio_len = 0;
607 struct adapter *adapter = (struct adapter *) netdev_priv(dev);
608 struct sliccard *card;
609
610 ASSERT(adapter);
611 DBG_MSG("slicoss: %s ENTER dev[%p] adapter[%p]\n", __func__, dev,
612 adapter);
613 slic_adapter_freeresources(adapter);
614 slic_unmap_mmio_space(adapter);
615 DBG_MSG("slicoss: %s unregister_netdev\n", __func__);
616 unregister_netdev(dev);
617
618 mmio_start = pci_resource_start(pcidev, 0);
619 mmio_len = pci_resource_len(pcidev, 0);
620
621 DBG_MSG("slicoss: %s rel_region(0) start[%x] len[%x]\n", __func__,
622 mmio_start, mmio_len);
623 release_mem_region(mmio_start, mmio_len);
624
625 DBG_MSG("slicoss: %s iounmap dev->base_addr[%x]\n", __func__,
626 (uint) dev->base_addr);
627 iounmap((void __iomem *)dev->base_addr);
628 ASSERT(adapter->card);
629 card = adapter->card;
630 ASSERT(card->adapters_allocated);
631 card->adapters_allocated--;
632 adapter->allocated = 0;
633 DBG_MSG
634 ("slicoss: %s init[%x] alloc[%x] card[%p] adapter[%p]\n",
635 __func__, card->adapters_activated, card->adapters_allocated,
636 card, adapter);
637 if (!card->adapters_allocated) {
638 struct sliccard *curr_card = slic_global.slic_card;
639 if (curr_card == card) {
640 slic_global.slic_card = card->next;
641 } else {
642 while (curr_card->next != card)
643 curr_card = curr_card->next;
644 ASSERT(curr_card);
645 curr_card->next = card->next;
646 }
647 ASSERT(slic_global.num_slic_cards);
648 slic_global.num_slic_cards--;
649 slic_card_cleanup(card);
650 }
651 DBG_MSG("slicoss: %s deallocate device\n", __func__);
652 kfree(dev);
653 pci_release_regions(pcidev);
654 DBG_MSG("slicoss: %s EXIT\n", __func__);
655}
656
657static int slic_entry_halt(struct net_device *dev)
658{
659 struct adapter *adapter = (struct adapter *)netdev_priv(dev);
660 struct sliccard *card = adapter->card;
661 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
662
663 spin_lock_irqsave(&slic_global.driver_lock.lock,
664 slic_global.driver_lock.flags);
665 ASSERT(card);
666 DBG_MSG("slicoss: %s (%s) ENTER\n", __func__, dev->name);
667 DBG_MSG("slicoss: %s (%s) actvtd[%d] alloc[%d] state[%x] adapt[%p]\n",
668 __func__, dev->name, card->adapters_activated,
669 card->adapters_allocated, card->state, adapter);
670 slic_if_stop_queue(adapter);
671 adapter->state = ADAPT_DOWN;
672 adapter->linkstate = LINK_DOWN;
673 adapter->upr_list = NULL;
674 adapter->upr_busy = 0;
675 adapter->devflags_prev = 0;
676 DBG_MSG("slicoss: %s (%s) set adapter[%p] state to ADAPT_DOWN(%d)\n",
677 __func__, dev->name, adapter, adapter->state);
678 ASSERT(card->adapter[adapter->cardindex] == adapter);
679 WRITE_REG(slic_regs->slic_icr, ICR_INT_OFF, FLUSH);
680 adapter->all_reg_writes++;
681 adapter->icr_reg_writes++;
682 slic_config_clear(adapter);
683 DBG_MSG("slicoss: %s (%s) dev[%p] adapt[%p] card[%p]\n",
684 __func__, dev->name, dev, adapter, card);
685 if (adapter->activated) {
686 card->adapters_activated--;
687 slic_global.num_slic_ports_active--;
688 adapter->activated = 0;
689 }
690#ifdef AUTOMATIC_RESET
691 WRITE_REG(slic_regs->slic_reset_iface, 0, FLUSH);
692#endif
693 /*
694 * Reset the adapter's rsp, cmd, and rcv queues
695 */
696 slic_cmdq_reset(adapter);
697 slic_rspqueue_reset(adapter);
698 slic_rcvqueue_reset(adapter);
699
700#ifdef AUTOMATIC_RESET
701 if (!card->adapters_activated) {
702
703#if SLIC_DUMP_ENABLED
704 if (card->dumpthread_running) {
705 uint status;
706 DBG_MSG("attempt to terminate dump thread pid[%x]\n",
707 card->dump_task_id);
708 status = kill_proc(card->dump_task_id->pid, SIGKILL, 1);
709
710 if (!status) {
711 int count = 10 * 100;
712 while (card->dumpthread_running && --count) {
713 current->state = TASK_INTERRUPTIBLE;
714 schedule_timeout(1);
715 }
716
717 if (!count) {
718 DBG_MSG
719 ("slicmon thread cleanup FAILED \
720 pid[%x]\n",
721 card->dump_task_id->pid);
722 }
723 }
724 }
725#endif
726 DBG_MSG("slicoss: %s (%s) initiate CARD_HALT\n", __func__,
727 dev->name);
728
729 slic_card_init(card, adapter);
730 }
731#endif
732
733 DBG_MSG("slicoss: %s (%s) EXIT\n", __func__, dev->name);
734 DBG_MSG("slicoss: %s EXIT\n", __func__);
735 spin_unlock_irqrestore(&slic_global.driver_lock.lock,
736 slic_global.driver_lock.flags);
737 return STATUS_SUCCESS;
738}
739
740static int slic_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
741{
742 ASSERT(rq);
743/*
744 DBG_MSG("slicoss: %s cmd[%x] rq[%p] dev[%p]\n", __func__, cmd, rq, dev);
745*/
746 switch (cmd) {
747 case SIOCSLICSETINTAGG:
748 {
749 struct adapter *adapter = (struct adapter *)
750 netdev_priv(dev);
751 u32 data[7];
752 u32 intagg;
753
754 if (copy_from_user(data, rq->ifr_data, 28)) {
755 DBG_ERROR
756 ("copy_from_user FAILED getting initial \
757 params\n");
758 return -EFAULT;
759 }
760 intagg = data[0];
761 printk(KERN_EMERG
762 "%s: set interrupt aggregation to %d\n",
763 __func__, intagg);
764 slic_intagg_set(adapter, intagg);
765 return 0;
766 }
767#ifdef SLIC_USER_REQUEST_DUMP_ENABLED
768 case SIOCSLICDUMPCARD:
769 {
770 struct adapter *adapter = (struct adapter *)
771 dev->priv;
772 struct sliccard *card;
773
774 ASSERT(adapter);
775 ASSERT(adapter->card)
776 card = adapter->card;
777
778 DBG_IOCTL("slic_ioctl SIOCSLIC_DUMP_CARD\n");
779
780 if (card->dump_requested == SLIC_DUMP_DONE) {
781 printk(SLICLEVEL
782 "SLIC Card dump to be overwritten\n");
783 card->dump_requested = SLIC_DUMP_REQUESTED;
784 } else if ((card->dump_requested == SLIC_DUMP_REQUESTED)
785 || (card->dump_requested ==
786 SLIC_DUMP_IN_PROGRESS)) {
787 printk(SLICLEVEL
788 "SLIC Card dump Requested but already \
789 in progress... ignore\n");
790 } else {
791 printk(SLICLEVEL
792 "SLIC Card #%d Dump Requested\n",
793 card->cardnum);
794 card->dump_requested = SLIC_DUMP_REQUESTED;
795 }
796 return 0;
797 }
798#endif
799
800#ifdef SLIC_TRACE_DUMP_ENABLED
801 case SIOCSLICTRACEDUMP:
802 {
803 ulong data[7];
804 ulong value;
805
806 DBG_IOCTL("slic_ioctl SIOCSLIC_TRACE_DUMP\n");
807
808 if (copy_from_user(data, rq->ifr_data, 28)) {
809 PRINT_ERROR
810 ("slic: copy_from_user FAILED getting \
811 initial simba param\n");
812 return -EFAULT;
813 }
814
815 value = data[0];
816 if (tracemon_request == SLIC_DUMP_DONE) {
817 PRINT_ERROR
818 ("ATK Diagnostic Trace Dump Requested\n");
819 tracemon_request = SLIC_DUMP_REQUESTED;
820 tracemon_request_type = value;
821 tracemon_timestamp = jiffies;
822 } else if ((tracemon_request == SLIC_DUMP_REQUESTED) ||
823 (tracemon_request ==
824 SLIC_DUMP_IN_PROGRESS)) {
825 PRINT_ERROR
826 ("ATK Diagnostic Trace Dump Requested but \
827 already in progress... ignore\n");
828 } else {
829 PRINT_ERROR
830 ("ATK Diagnostic Trace Dump Requested\n");
831 tracemon_request = SLIC_DUMP_REQUESTED;
832 tracemon_request_type = value;
833 tracemon_timestamp = jiffies;
834 }
835 return 0;
836 }
837#endif
838#if SLIC_ETHTOOL_SUPPORT
839 case SIOCETHTOOL:
840 {
841 struct adapter *adapter = (struct adapter *)
842 netdev_priv(dev);
843 struct ethtool_cmd data;
844 struct ethtool_cmd ecmd;
845
846 ASSERT(adapter);
847/* DBG_MSG("slicoss: %s SIOCETHTOOL\n", __func__); */
848 if (copy_from_user(&ecmd, rq->ifr_data, sizeof(ecmd)))
849 return -EFAULT;
850
851 if (ecmd.cmd == ETHTOOL_GSET) {
852 data.supported =
853 (SUPPORTED_10baseT_Half |
854 SUPPORTED_10baseT_Full |
855 SUPPORTED_100baseT_Half |
856 SUPPORTED_100baseT_Full |
857 SUPPORTED_Autoneg | SUPPORTED_MII);
858 data.port = PORT_MII;
859 data.transceiver = XCVR_INTERNAL;
860 data.phy_address = 0;
861 if (adapter->linkspeed == LINK_100MB)
862 data.speed = SPEED_100;
863 else if (adapter->linkspeed == LINK_10MB)
864 data.speed = SPEED_10;
865 else
866 data.speed = 0;
867
868 if (adapter->linkduplex == LINK_FULLD)
869 data.duplex = DUPLEX_FULL;
870 else
871 data.duplex = DUPLEX_HALF;
872
873 data.autoneg = AUTONEG_ENABLE;
874 data.maxtxpkt = 1;
875 data.maxrxpkt = 1;
876 if (copy_to_user
877 (rq->ifr_data, &data, sizeof(data)))
878 return -EFAULT;
879
880 } else if (ecmd.cmd == ETHTOOL_SSET) {
881 if (!capable(CAP_NET_ADMIN))
882 return -EPERM;
883
884 if (adapter->linkspeed == LINK_100MB)
885 data.speed = SPEED_100;
886 else if (adapter->linkspeed == LINK_10MB)
887 data.speed = SPEED_10;
888 else
889 data.speed = 0;
890
891 if (adapter->linkduplex == LINK_FULLD)
892 data.duplex = DUPLEX_FULL;
893 else
894 data.duplex = DUPLEX_HALF;
895
896 data.autoneg = AUTONEG_ENABLE;
897 data.maxtxpkt = 1;
898 data.maxrxpkt = 1;
899 if ((ecmd.speed != data.speed) ||
900 (ecmd.duplex != data.duplex)) {
901 u32 speed;
902 u32 duplex;
903
904 if (ecmd.speed == SPEED_10) {
905 speed = 0;
906 SLIC_DISPLAY
907 ("%s: slic ETHTOOL set \
908 link speed==10MB",
909 dev->name);
910 } else {
911 speed = PCR_SPEED_100;
912 SLIC_DISPLAY
913 ("%s: slic ETHTOOL set \
914 link speed==100MB",
915 dev->name);
916 }
917 if (ecmd.duplex == DUPLEX_FULL) {
918 duplex = PCR_DUPLEX_FULL;
919 SLIC_DISPLAY
920 (": duplex==FULL\n");
921 } else {
922 duplex = 0;
923 SLIC_DISPLAY
924 (": duplex==HALF\n");
925 }
926 slic_link_config(adapter,
927 speed, duplex);
928 slic_link_event_handler(adapter);
929 }
930 }
931 return 0;
932 }
933#endif
934 default:
935/* DBG_MSG("slicoss: %s UNSUPPORTED[%x]\n", __func__, cmd); */
936 return -EOPNOTSUPP;
937 }
938}
939
940#define XMIT_FAIL_LINK_STATE 1
941#define XMIT_FAIL_ZERO_LENGTH 2
942#define XMIT_FAIL_HOSTCMD_FAIL 3
943
944static void slic_xmit_build_request(struct adapter *adapter,
945 struct slic_hostcmd *hcmd, struct sk_buff *skb)
946{
947 struct slic_host64_cmd *ihcmd;
948 ulong phys_addr;
949
950 ihcmd = &hcmd->cmd64;
951
952 ihcmd->flags = (adapter->port << IHFLG_IFSHFT);
953 ihcmd->command = IHCMD_XMT_REQ;
954 ihcmd->u.slic_buffers.totlen = skb->len;
955 phys_addr = pci_map_single(adapter->pcidev, skb->data, skb->len,
956 PCI_DMA_TODEVICE);
957 ihcmd->u.slic_buffers.bufs[0].paddrl = SLIC_GET_ADDR_LOW(phys_addr);
958 ihcmd->u.slic_buffers.bufs[0].paddrh = SLIC_GET_ADDR_HIGH(phys_addr);
959 ihcmd->u.slic_buffers.bufs[0].length = skb->len;
960#if defined(CONFIG_X86_64)
961 hcmd->cmdsize = (u32) ((((u64)&ihcmd->u.slic_buffers.bufs[1] -
962 (u64) hcmd) + 31) >> 5);
963#elif defined(CONFIG_X86)
964 hcmd->cmdsize = ((((u32) &ihcmd->u.slic_buffers.bufs[1] -
965 (u32) hcmd) + 31) >> 5);
966#else
967 Stop Compilation;
968#endif
969}
970
971#define NORMAL_ETHFRAME 0
972
973static int slic_xmit_start(struct sk_buff *skb, struct net_device *dev)
974{
975 struct sliccard *card;
976 struct adapter *adapter = (struct adapter *)netdev_priv(dev);
977 struct slic_hostcmd *hcmd = NULL;
978 u32 status = 0;
979 u32 skbtype = NORMAL_ETHFRAME;
980 void *offloadcmd = NULL;
981
982 card = adapter->card;
983 ASSERT(card);
984/*
985 DBG_ERROR("xmit_start (%s) ENTER skb[%p] len[%d] linkstate[%x] state[%x]\n",
986 adapter->netdev->name, skb, skb->len, adapter->linkstate,
987 adapter->state);
988*/
989 if ((adapter->linkstate != LINK_UP) ||
990 (adapter->state != ADAPT_UP) || (card->state != CARD_UP)) {
991 status = XMIT_FAIL_LINK_STATE;
992 goto xmit_fail;
993
994 } else if (skb->len == 0) {
995 status = XMIT_FAIL_ZERO_LENGTH;
996 goto xmit_fail;
997 }
998
999 if (skbtype == NORMAL_ETHFRAME) {
1000 hcmd = slic_cmdq_getfree(adapter);
1001 if (!hcmd) {
1002 adapter->xmitq_full = 1;
1003 status = XMIT_FAIL_HOSTCMD_FAIL;
1004 goto xmit_fail;
1005 }
1006 ASSERT(hcmd->pslic_handle);
1007 ASSERT(hcmd->cmd64.hosthandle ==
1008 hcmd->pslic_handle->token.handle_token);
1009 hcmd->skb = skb;
1010 hcmd->busy = 1;
1011 hcmd->type = SLIC_CMD_DUMB;
1012 if (skbtype == NORMAL_ETHFRAME)
1013 slic_xmit_build_request(adapter, hcmd, skb);
1014 }
1015 adapter->stats.tx_packets++;
1016 adapter->stats.tx_bytes += skb->len;
1017
1018#ifdef DEBUG_DUMP
1019 if (adapter->kill_card) {
1020 struct slic_host64_cmd ihcmd;
1021
1022 ihcmd = &hcmd->cmd64;
1023
1024 ihcmd->flags |= 0x40;
1025 adapter->kill_card = 0; /* only do this once */
1026 }
1027#endif
1028 if (hcmd->paddrh == 0) {
1029 WRITE_REG(adapter->slic_regs->slic_cbar,
1030 (hcmd->paddrl | hcmd->cmdsize), DONT_FLUSH);
1031 } else {
1032 WRITE_REG64(adapter,
1033 adapter->slic_regs->slic_cbar64,
1034 (hcmd->paddrl | hcmd->cmdsize),
1035 adapter->slic_regs->slic_addr_upper,
1036 hcmd->paddrh, DONT_FLUSH);
1037 }
1038xmit_done:
1039 return 0;
1040xmit_fail:
1041 slic_xmit_fail(adapter, skb, offloadcmd, skbtype, status);
1042 goto xmit_done;
1043}
1044
1045static void slic_xmit_fail(struct adapter *adapter,
1046 struct sk_buff *skb,
1047 void *cmd, u32 skbtype, u32 status)
1048{
1049 if (adapter->xmitq_full)
1050 slic_if_stop_queue(adapter);
1051 if ((cmd == NULL) && (status <= XMIT_FAIL_HOSTCMD_FAIL)) {
1052 switch (status) {
1053 case XMIT_FAIL_LINK_STATE:
1054 DBG_ERROR
1055 ("(%s) reject xmit skb[%p: %x] linkstate[%s] \
1056 adapter[%s:%d] card[%s:%d]\n",
1057 adapter->netdev->name, skb, skb->pkt_type,
1058 SLIC_LINKSTATE(adapter->linkstate),
1059 SLIC_ADAPTER_STATE(adapter->state), adapter->state,
1060 SLIC_CARD_STATE(adapter->card->state),
1061 adapter->card->state);
1062 break;
1063 case XMIT_FAIL_ZERO_LENGTH:
1064 DBG_ERROR
1065 ("xmit_start skb->len == 0 skb[%p] type[%x]!!!! \n",
1066 skb, skb->pkt_type);
1067 break;
1068 case XMIT_FAIL_HOSTCMD_FAIL:
1069 DBG_ERROR
1070 ("xmit_start skb[%p] type[%x] No host commands \
1071 available !!!! \n",
1072 skb, skb->pkt_type);
1073 break;
1074 default:
1075 ASSERT(0);
1076 }
1077 }
1078 dev_kfree_skb(skb);
1079 adapter->stats.tx_dropped++;
1080}
1081
1082static void slic_rcv_handle_error(struct adapter *adapter,
1083 struct slic_rcvbuf *rcvbuf)
1084{
1085 struct slic_hddr_wds *hdr = (struct slic_hddr_wds *)rcvbuf->data;
1086
1087 if (adapter->devid != SLIC_1GB_DEVICE_ID) {
1088 if (hdr->frame_status14 & VRHSTAT_802OE)
1089 adapter->if_events.oflow802++;
1090 if (hdr->frame_status14 & VRHSTAT_TPOFLO)
1091 adapter->if_events.Tprtoflow++;
1092 if (hdr->frame_status_b14 & VRHSTATB_802UE)
1093 adapter->if_events.uflow802++;
1094 if (hdr->frame_status_b14 & VRHSTATB_RCVE) {
1095 adapter->if_events.rcvearly++;
1096 adapter->stats.rx_fifo_errors++;
1097 }
1098 if (hdr->frame_status_b14 & VRHSTATB_BUFF) {
1099 adapter->if_events.Bufov++;
1100 adapter->stats.rx_over_errors++;
1101 }
1102 if (hdr->frame_status_b14 & VRHSTATB_CARRE) {
1103 adapter->if_events.Carre++;
1104 adapter->stats.tx_carrier_errors++;
1105 }
1106 if (hdr->frame_status_b14 & VRHSTATB_LONGE)
1107 adapter->if_events.Longe++;
1108 if (hdr->frame_status_b14 & VRHSTATB_PREA)
1109 adapter->if_events.Invp++;
1110 if (hdr->frame_status_b14 & VRHSTATB_CRC) {
1111 adapter->if_events.Crc++;
1112 adapter->stats.rx_crc_errors++;
1113 }
1114 if (hdr->frame_status_b14 & VRHSTATB_DRBL)
1115 adapter->if_events.Drbl++;
1116 if (hdr->frame_status_b14 & VRHSTATB_CODE)
1117 adapter->if_events.Code++;
1118 if (hdr->frame_status_b14 & VRHSTATB_TPCSUM)
1119 adapter->if_events.TpCsum++;
1120 if (hdr->frame_status_b14 & VRHSTATB_TPHLEN)
1121 adapter->if_events.TpHlen++;
1122 if (hdr->frame_status_b14 & VRHSTATB_IPCSUM)
1123 adapter->if_events.IpCsum++;
1124 if (hdr->frame_status_b14 & VRHSTATB_IPLERR)
1125 adapter->if_events.IpLen++;
1126 if (hdr->frame_status_b14 & VRHSTATB_IPHERR)
1127 adapter->if_events.IpHlen++;
1128 } else {
1129 if (hdr->frame_statusGB & VGBSTAT_XPERR) {
1130 u32 xerr = hdr->frame_statusGB >> VGBSTAT_XERRSHFT;
1131
1132 if (xerr == VGBSTAT_XCSERR)
1133 adapter->if_events.TpCsum++;
1134 if (xerr == VGBSTAT_XUFLOW)
1135 adapter->if_events.Tprtoflow++;
1136 if (xerr == VGBSTAT_XHLEN)
1137 adapter->if_events.TpHlen++;
1138 }
1139 if (hdr->frame_statusGB & VGBSTAT_NETERR) {
1140 u32 nerr =
1141 (hdr->
1142 frame_statusGB >> VGBSTAT_NERRSHFT) &
1143 VGBSTAT_NERRMSK;
1144 if (nerr == VGBSTAT_NCSERR)
1145 adapter->if_events.IpCsum++;
1146 if (nerr == VGBSTAT_NUFLOW)
1147 adapter->if_events.IpLen++;
1148 if (nerr == VGBSTAT_NHLEN)
1149 adapter->if_events.IpHlen++;
1150 }
1151 if (hdr->frame_statusGB & VGBSTAT_LNKERR) {
1152 u32 lerr = hdr->frame_statusGB & VGBSTAT_LERRMSK;
1153
1154 if (lerr == VGBSTAT_LDEARLY)
1155 adapter->if_events.rcvearly++;
1156 if (lerr == VGBSTAT_LBOFLO)
1157 adapter->if_events.Bufov++;
1158 if (lerr == VGBSTAT_LCODERR)
1159 adapter->if_events.Code++;
1160 if (lerr == VGBSTAT_LDBLNBL)
1161 adapter->if_events.Drbl++;
1162 if (lerr == VGBSTAT_LCRCERR)
1163 adapter->if_events.Crc++;
1164 if (lerr == VGBSTAT_LOFLO)
1165 adapter->if_events.oflow802++;
1166 if (lerr == VGBSTAT_LUFLO)
1167 adapter->if_events.uflow802++;
1168 }
1169 }
1170 return;
1171}
1172
1173#define TCP_OFFLOAD_FRAME_PUSHFLAG 0x10000000
1174#define M_FAST_PATH 0x0040
1175
1176static void slic_rcv_handler(struct adapter *adapter)
1177{
1178 struct sk_buff *skb;
1179 struct slic_rcvbuf *rcvbuf;
1180 u32 frames = 0;
1181
1182 while ((skb = slic_rcvqueue_getnext(adapter))) {
1183 u32 rx_bytes;
1184
1185 ASSERT(skb->head);
1186 rcvbuf = (struct slic_rcvbuf *)skb->head;
1187 adapter->card->events++;
1188 if (rcvbuf->status & IRHDDR_ERR) {
1189 adapter->rx_errors++;
1190 slic_rcv_handle_error(adapter, rcvbuf);
1191 slic_rcvqueue_reinsert(adapter, skb);
1192 continue;
1193 }
1194
1195 if (!slic_mac_filter(adapter, (struct ether_header *)
1196 rcvbuf->data)) {
1197#if 0
1198 DBG_MSG
1199 ("slicoss: %s (%s) drop frame due to mac filter\n",
1200 __func__, adapter->netdev->name);
1201#endif
1202 slic_rcvqueue_reinsert(adapter, skb);
1203 continue;
1204 }
1205 skb_pull(skb, SLIC_RCVBUF_HEADSIZE);
1206 rx_bytes = (rcvbuf->length & IRHDDR_FLEN_MSK);
1207 skb_put(skb, rx_bytes);
1208 adapter->stats.rx_packets++;
1209 adapter->stats.rx_bytes += rx_bytes;
1210#if SLIC_OFFLOAD_IP_CHECKSUM
1211 skb->ip_summed = CHECKSUM_UNNECESSARY;
1212#endif
1213
1214 skb->dev = adapter->netdev;
1215 skb->protocol = eth_type_trans(skb, skb->dev);
1216 netif_rx(skb);
1217
1218 ++frames;
1219#if SLIC_INTERRUPT_PROCESS_LIMIT
1220 if (frames >= SLIC_RCVQ_MAX_PROCESS_ISR) {
1221 adapter->rcv_interrupt_yields++;
1222 break;
1223 }
1224#endif
1225 }
1226 adapter->max_isr_rcvs = max(adapter->max_isr_rcvs, frames);
1227}
1228
1229static void slic_xmit_complete(struct adapter *adapter)
1230{
1231 struct slic_hostcmd *hcmd;
1232 struct slic_rspbuf *rspbuf;
1233 u32 frames = 0;
1234 struct slic_handle_word slic_handle_word;
1235
1236 do {
1237 rspbuf = slic_rspqueue_getnext(adapter);
1238 if (!rspbuf)
1239 break;
1240 adapter->xmit_completes++;
1241 adapter->card->events++;
1242 /*
1243 Get the complete host command buffer
1244 */
1245 slic_handle_word.handle_token = rspbuf->hosthandle;
1246 ASSERT(slic_handle_word.handle_index);
1247 ASSERT(slic_handle_word.handle_index <= SLIC_CMDQ_MAXCMDS);
1248 hcmd =
1249 (struct slic_hostcmd *)
1250 adapter->slic_handles[slic_handle_word.handle_index].
1251 address;
1252/* hcmd = (struct slic_hostcmd *) rspbuf->hosthandle; */
1253 ASSERT(hcmd);
1254 ASSERT(hcmd->pslic_handle ==
1255 &adapter->slic_handles[slic_handle_word.handle_index]);
1256/*
1257 DBG_ERROR("xmit_complete (%s) hcmd[%p] hosthandle[%x]\n",
1258 adapter->netdev->name, hcmd, hcmd->cmd64.hosthandle);
1259 DBG_ERROR(" skb[%p] len %d hcmdtype[%x]\n", hcmd->skb,
1260 hcmd->skb->len, hcmd->type);
1261*/
1262 if (hcmd->type == SLIC_CMD_DUMB) {
1263 if (hcmd->skb)
1264 dev_kfree_skb_irq(hcmd->skb);
1265 slic_cmdq_putdone_irq(adapter, hcmd);
1266 }
1267 rspbuf->status = 0;
1268 rspbuf->hosthandle = 0;
1269 frames++;
1270 } while (1);
1271 adapter->max_isr_xmits = max(adapter->max_isr_xmits, frames);
1272}
1273
1274static irqreturn_t slic_interrupt(int irq, void *dev_id)
1275{
1276 struct net_device *dev = (struct net_device *)dev_id;
1277 struct adapter *adapter = (struct adapter *)netdev_priv(dev);
1278 u32 isr;
1279
1280 if ((adapter->pshmem) && (adapter->pshmem->isr)) {
1281 WRITE_REG(adapter->slic_regs->slic_icr, ICR_INT_MASK, FLUSH);
1282 isr = adapter->isrcopy = adapter->pshmem->isr;
1283 adapter->pshmem->isr = 0;
1284 adapter->num_isrs++;
1285 switch (adapter->card->state) {
1286 case CARD_UP:
1287 if (isr & ~ISR_IO) {
1288 if (isr & ISR_ERR) {
1289 adapter->error_interrupts++;
1290 if (isr & ISR_RMISS) {
1291 int count;
1292 int pre_count;
1293 int errors;
1294
1295 struct slic_rcvqueue *rcvq =
1296 &adapter->rcvqueue;
1297
1298 adapter->
1299 error_rmiss_interrupts++;
1300 if (!rcvq->errors)
1301 rcv_count = rcvq->count;
1302 pre_count = rcvq->count;
1303 errors = rcvq->errors;
1304
1305 while (rcvq->count <
1306 SLIC_RCVQ_FILLTHRESH) {
1307 count =
1308 slic_rcvqueue_fill
1309 (adapter);
1310 if (!count)
1311 break;
1312 }
1313 DBG_MSG
1314 ("(%s): [%x] ISR_RMISS \
1315 initial[%x] pre[%x] \
1316 errors[%x] \
1317 post_count[%x]\n",
1318 adapter->netdev->name,
1319 isr, rcv_count, pre_count,
1320 errors, rcvq->count);
1321 } else if (isr & ISR_XDROP) {
1322 DBG_ERROR
1323 ("isr & ISR_ERR [%x] \
1324 ISR_XDROP \n",
1325 isr);
1326 } else {
1327 DBG_ERROR
1328 ("isr & ISR_ERR [%x]\n",
1329 isr);
1330 }
1331 }
1332
1333 if (isr & ISR_LEVENT) {
1334 /*DBG_MSG("%s (%s) ISR_LEVENT \n",
1335 __func__, adapter->netdev->name);*/
1336 adapter->linkevent_interrupts++;
1337 slic_link_event_handler(adapter);
1338 }
1339
1340 if ((isr & ISR_UPC) ||
1341 (isr & ISR_UPCERR) || (isr & ISR_UPCBSY)) {
1342 adapter->upr_interrupts++;
1343 slic_upr_request_complete(adapter, isr);
1344 }
1345 }
1346
1347 if (isr & ISR_RCV) {
1348 adapter->rcv_interrupts++;
1349 slic_rcv_handler(adapter);
1350 }
1351
1352 if (isr & ISR_CMD) {
1353 adapter->xmit_interrupts++;
1354 slic_xmit_complete(adapter);
1355 }
1356 break;
1357
1358 case CARD_DOWN:
1359 if ((isr & ISR_UPC) ||
1360 (isr & ISR_UPCERR) || (isr & ISR_UPCBSY)) {
1361 adapter->upr_interrupts++;
1362 slic_upr_request_complete(adapter, isr);
1363 }
1364 break;
1365
1366 default:
1367 break;
1368 }
1369
1370 adapter->isrcopy = 0;
1371 adapter->all_reg_writes += 2;
1372 adapter->isr_reg_writes++;
1373 WRITE_REG(adapter->slic_regs->slic_isr, 0, FLUSH);
1374 } else {
1375 adapter->false_interrupts++;
1376 }
1377 return IRQ_HANDLED;
1378}
1379
1380/*
1381 * slic_link_event_handler -
1382 *
1383 * Initiate a link configuration sequence. The link configuration begins
1384 * by issuing a READ_LINK_STATUS command to the Utility Processor on the
1385 * SLIC. Since the command finishes asynchronously, the slic_upr_comlete
1386 * routine will follow it up witha UP configuration write command, which
1387 * will also complete asynchronously.
1388 *
1389 */
1390static void slic_link_event_handler(struct adapter *adapter)
1391{
1392 int status;
1393 struct slic_shmem *pshmem;
1394
1395 if (adapter->state != ADAPT_UP) {
1396 /* Adapter is not operational. Ignore. */
1397 return;
1398 }
1399
1400 pshmem = (struct slic_shmem *)adapter->phys_shmem;
1401
1402#if defined(CONFIG_X86_64)
1403/*
1404 DBG_MSG("slic_event_handler pshmem->linkstatus[%x] pshmem[%p]\n \
1405 &linkstatus[%p] &isr[%p]\n", adapter->pshmem->linkstatus, pshmem,
1406 &pshmem->linkstatus, &pshmem->isr);
1407*/
1408 status = slic_upr_request(adapter,
1409 SLIC_UPR_RLSR,
1410 SLIC_GET_ADDR_LOW(&pshmem->linkstatus),
1411 SLIC_GET_ADDR_HIGH(&pshmem->linkstatus),
1412 0, 0);
1413#elif defined(CONFIG_X86)
1414 status = slic_upr_request(adapter, SLIC_UPR_RLSR,
1415 (u32) &pshmem->linkstatus, /* no 4GB wrap guaranteed */
1416 0, 0, 0);
1417#else
1418 Stop compilation;
1419#endif
1420 ASSERT((status == STATUS_SUCCESS) || (status == STATUS_PENDING));
1421}
1422
1423static void slic_init_cleanup(struct adapter *adapter)
1424{
1425 DBG_MSG("slicoss: %s ENTER adapter[%p] ", __func__, adapter);
1426 if (adapter->intrregistered) {
1427 DBG_MSG("FREE_IRQ ");
1428 adapter->intrregistered = 0;
1429 free_irq(adapter->netdev->irq, adapter->netdev);
1430
1431 }
1432 if (adapter->pshmem) {
1433 DBG_MSG("FREE_SHMEM ");
1434 DBG_MSG("adapter[%p] port %d pshmem[%p] FreeShmem ",
1435 adapter, adapter->port, (void *) adapter->pshmem);
1436 pci_free_consistent(adapter->pcidev,
1437 sizeof(struct slic_shmem *),
1438 adapter->pshmem, adapter->phys_shmem);
1439 adapter->pshmem = NULL;
1440 adapter->phys_shmem = (dma_addr_t) NULL;
1441 }
1442#if SLIC_GET_STATS_TIMER_ENABLED
1443 if (adapter->statstimerset) {
1444 DBG_MSG("statstimer ");
1445 adapter->statstimerset = 0;
1446 del_timer(&adapter->statstimer);
1447 }
1448#endif
1449#if !SLIC_DUMP_ENABLED && SLIC_PING_TIMER_ENABLED
1450/*#if SLIC_DUMP_ENABLED && SLIC_PING_TIMER_ENABLED*/
1451 if (adapter->pingtimerset) {
1452 DBG_MSG("pingtimer ");
1453 adapter->pingtimerset = 0;
1454 del_timer(&adapter->pingtimer);
1455 }
1456#endif
1457 slic_rspqueue_free(adapter);
1458 slic_cmdq_free(adapter);
1459 slic_rcvqueue_free(adapter);
1460
1461 DBG_MSG("\n");
1462}
1463
1464#if SLIC_GET_STATS_ENABLED
1465static struct net_device_stats *slic_get_stats(struct net_device *dev)
1466{
1467 struct adapter *adapter = (struct adapter *)netdev_priv(dev);
1468 struct net_device_stats *stats;
1469
1470 ASSERT(adapter);
1471 stats = &adapter->stats;
1472 stats->collisions = adapter->slic_stats.iface.xmit_collisions;
1473 stats->rx_errors = adapter->slic_stats.iface.rcv_errors;
1474 stats->tx_errors = adapter->slic_stats.iface.xmt_errors;
1475 stats->rx_missed_errors = adapter->slic_stats.iface.rcv_discards;
1476 stats->tx_heartbeat_errors = 0;
1477 stats->tx_aborted_errors = 0;
1478 stats->tx_window_errors = 0;
1479 stats->tx_fifo_errors = 0;
1480 stats->rx_frame_errors = 0;
1481 stats->rx_length_errors = 0;
1482 return &adapter->stats;
1483}
1484#endif
1485
1486/*
1487 * Allocate a mcast_address structure to hold the multicast address.
1488 * Link it in.
1489 */
1490static int slic_mcast_add_list(struct adapter *adapter, char *address)
1491{
1492 struct mcast_address *mcaddr, *mlist;
1493 bool equaladdr;
1494
1495 /* Check to see if it already exists */
1496 mlist = adapter->mcastaddrs;
1497 while (mlist) {
1498 ETHER_EQ_ADDR(mlist->address, address, equaladdr);
1499 if (equaladdr)
1500 return STATUS_SUCCESS;
1501 mlist = mlist->next;
1502 }
1503
1504 /* Doesn't already exist. Allocate a structure to hold it */
1505 mcaddr = kmalloc(sizeof(struct mcast_address), GFP_ATOMIC);
1506 if (mcaddr == NULL)
1507 return 1;
1508
1509 memcpy(mcaddr->address, address, 6);
1510
1511 mcaddr->next = adapter->mcastaddrs;
1512 adapter->mcastaddrs = mcaddr;
1513
1514 return STATUS_SUCCESS;
1515}
1516
1517/*
1518 * Functions to obtain the CRC corresponding to the destination mac address.
1519 * This is a standard ethernet CRC in that it is a 32-bit, reflected CRC using
1520 * the polynomial:
1521 * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 +
1522 * x^4 + x^2 + x^1.
1523 *
1524 * After the CRC for the 6 bytes is generated (but before the value is
1525 * complemented),
1526 * we must then transpose the value and return bits 30-23.
1527 *
1528 */
1529static u32 slic_crc_table[256]; /* Table of CRCs for all possible byte values */
1530static u32 slic_crc_init; /* Is table initialized */
1531
1532/*
1533 * Contruct the CRC32 table
1534 */
1535static void slic_mcast_init_crc32(void)
1536{
1537 u32 c; /* CRC shit reg */
1538 u32 e = 0; /* Poly X-or pattern */
1539 int i; /* counter */
1540 int k; /* byte being shifted into crc */
1541
1542 static int p[] = { 0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 16, 22, 23, 26 };
1543
1544 for (i = 0; i < sizeof(p) / sizeof(int); i++)
1545 e |= 1L << (31 - p[i]);
1546
1547 for (i = 1; i < 256; i++) {
1548 c = i;
1549 for (k = 8; k; k--)
1550 c = c & 1 ? (c >> 1) ^ e : c >> 1;
1551 slic_crc_table[i] = c;
1552 }
1553}
1554
1555/*
1556 * Return the MAC hast as described above.
1557 */
1558static unsigned char slic_mcast_get_mac_hash(char *macaddr)
1559{
1560 u32 crc;
1561 char *p;
1562 int i;
1563 unsigned char machash = 0;
1564
1565 if (!slic_crc_init) {
1566 slic_mcast_init_crc32();
1567 slic_crc_init = 1;
1568 }
1569
1570 crc = 0xFFFFFFFF; /* Preload shift register, per crc-32 spec */
1571 for (i = 0, p = macaddr; i < 6; ++p, ++i)
1572 crc = (crc >> 8) ^ slic_crc_table[(crc ^ *p) & 0xFF];
1573
1574 /* Return bits 1-8, transposed */
1575 for (i = 1; i < 9; i++)
1576 machash |= (((crc >> i) & 1) << (8 - i));
1577
1578 return machash;
1579}
1580
1581static void slic_mcast_set_bit(struct adapter *adapter, char *address)
1582{
1583 unsigned char crcpoly;
1584
1585 /* Get the CRC polynomial for the mac address */
1586 crcpoly = slic_mcast_get_mac_hash(address);
1587
1588 /* We only have space on the SLIC for 64 entries. Lop
1589 * off the top two bits. (2^6 = 64)
1590 */
1591 crcpoly &= 0x3F;
1592
1593 /* OR in the new bit into our 64 bit mask. */
1594 adapter->mcastmask |= (u64) 1 << crcpoly;
1595}
1596
1597static void slic_mcast_set_list(struct net_device *dev)
1598{
1599 struct adapter *adapter = (struct adapter *)netdev_priv(dev);
1600 int status = STATUS_SUCCESS;
1601 int i;
1602 char *addresses;
1603 struct dev_mc_list *mc_list = dev->mc_list;
1604 int mc_count = dev->mc_count;
1605
1606 ASSERT(adapter);
1607
1608 for (i = 1; i <= mc_count; i++) {
1609 addresses = (char *) &mc_list->dmi_addr;
1610 if (mc_list->dmi_addrlen == 6) {
1611 status = slic_mcast_add_list(adapter, addresses);
1612 if (status != STATUS_SUCCESS)
1613 break;
1614 } else {
1615 status = -EINVAL;
1616 break;
1617 }
1618 slic_mcast_set_bit(adapter, addresses);
1619 mc_list = mc_list->next;
1620 }
1621
1622 DBG_MSG("%s a->devflags_prev[%x] dev->flags[%x] status[%x]\n",
1623 __func__, adapter->devflags_prev, dev->flags, status);
1624 if (adapter->devflags_prev != dev->flags) {
1625 adapter->macopts = MAC_DIRECTED;
1626 if (dev->flags) {
1627 if (dev->flags & IFF_BROADCAST)
1628 adapter->macopts |= MAC_BCAST;
1629 if (dev->flags & IFF_PROMISC)
1630 adapter->macopts |= MAC_PROMISC;
1631 if (dev->flags & IFF_ALLMULTI)
1632 adapter->macopts |= MAC_ALLMCAST;
1633 if (dev->flags & IFF_MULTICAST)
1634 adapter->macopts |= MAC_MCAST;
1635 }
1636 adapter->devflags_prev = dev->flags;
1637 DBG_MSG("%s call slic_config_set adapter->macopts[%x]\n",
1638 __func__, adapter->macopts);
1639 slic_config_set(adapter, TRUE);
1640 } else {
1641 if (status == STATUS_SUCCESS)
1642 slic_mcast_set_mask(adapter);
1643 }
1644 return;
1645}
1646
1647static void slic_mcast_set_mask(struct adapter *adapter)
1648{
1649 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
1650
1651 DBG_MSG("%s ENTER (%s) macopts[%x] mask[%llx]\n", __func__,
1652 adapter->netdev->name, (uint) adapter->macopts,
1653 adapter->mcastmask);
1654
1655 if (adapter->macopts & (MAC_ALLMCAST | MAC_PROMISC)) {
1656 /* Turn on all multicast addresses. We have to do this for
1657 * promiscuous mode as well as ALLMCAST mode. It saves the
1658 * Microcode from having to keep state about the MAC
1659 * configuration.
1660 */
1661/* DBG_MSG("slicoss: %s macopts = MAC_ALLMCAST | MAC_PROMISC\n\
1662 SLUT MODE!!!\n",__func__); */
1663 WRITE_REG(slic_regs->slic_mcastlow, 0xFFFFFFFF, FLUSH);
1664 WRITE_REG(slic_regs->slic_mcasthigh, 0xFFFFFFFF, FLUSH);
1665/* DBG_MSG("%s (%s) WRITE to slic_regs slic_mcastlow&high 0xFFFFFFFF\n",
1666 _func__, adapter->netdev->name); */
1667 } else {
1668 /* Commit our multicast mast to the SLIC by writing to the
1669 * multicast address mask registers
1670 */
1671 DBG_MSG("%s (%s) WRITE mcastlow[%x] mcasthigh[%x]\n",
1672 __func__, adapter->netdev->name,
1673 ((ulong) (adapter->mcastmask & 0xFFFFFFFF)),
1674 ((ulong) ((adapter->mcastmask >> 32) & 0xFFFFFFFF)));
1675
1676 WRITE_REG(slic_regs->slic_mcastlow,
1677 (u32) (adapter->mcastmask & 0xFFFFFFFF), FLUSH);
1678 WRITE_REG(slic_regs->slic_mcasthigh,
1679 (u32) ((adapter->mcastmask >> 32) & 0xFFFFFFFF),
1680 FLUSH);
1681 }
1682}
1683
1684static void slic_timer_ping(ulong dev)
1685{
1686 struct adapter *adapter;
1687 struct sliccard *card;
1688
1689 ASSERT(dev);
1690 adapter = (struct adapter *)((struct net_device *) dev)->priv;
1691 ASSERT(adapter);
1692 card = adapter->card;
1693 ASSERT(card);
1694#if !SLIC_DUMP_ENABLED
1695/*#if SLIC_DUMP_ENABLED*/
1696 if ((adapter->state == ADAPT_UP) && (card->state == CARD_UP)) {
1697 int status;
1698
1699 if (card->pingstatus != ISR_PINGMASK) {
1700 if (errormsg++ < 5) {
1701 DBG_MSG
1702 ("%s (%s) CARD HAS CRASHED PING_status == \
1703 %x ERRORMSG# %d\n",
1704 __func__, adapter->netdev->name,
1705 card->pingstatus, errormsg);
1706 }
1707 /* ASSERT(card->pingstatus == ISR_PINGMASK); */
1708 } else {
1709 if (goodmsg++ < 5) {
1710 DBG_MSG
1711 ("slicoss: %s (%s) PING_status == %x \
1712 GOOD!!!!!!!! msg# %d\n",
1713 __func__, adapter->netdev->name,
1714 card->pingstatus, errormsg);
1715 }
1716 }
1717 card->pingstatus = 0;
1718 status = slic_upr_request(adapter, SLIC_UPR_PING, 0, 0, 0, 0);
1719
1720 ASSERT(status == 0);
1721 } else {
1722 DBG_MSG("slicoss %s (%s) adapter[%p] NOT UP!!!!\n",
1723 __func__, adapter->netdev->name, adapter);
1724 }
1725#endif
1726 adapter->pingtimer.expires =
1727 jiffies + SLIC_SECS_TO_JIFFS(PING_TIMER_INTERVAL);
1728 add_timer(&adapter->pingtimer);
1729}
1730
1731static void slic_if_stop_queue(struct adapter *adapter)
1732{
1733 netif_stop_queue(adapter->netdev);
1734}
1735
1736static void slic_if_start_queue(struct adapter *adapter)
1737{
1738 netif_start_queue(adapter->netdev);
1739}
1740
1741/*
1742 * slic_if_init
1743 *
1744 * Perform initialization of our slic interface.
1745 *
1746 */
1747static int slic_if_init(struct adapter *adapter)
1748{
1749 struct sliccard *card = adapter->card;
1750 struct net_device *dev = adapter->netdev;
1751 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
1752 struct slic_shmem *pshmem;
1753 int status = 0;
1754
1755 ASSERT(card);
1756 DBG_MSG("slicoss: %s (%s) ENTER states[%d:%d:%d:%d] flags[%x]\n",
1757 __func__, adapter->netdev->name,
1758 adapter->queues_initialized, adapter->state, adapter->linkstate,
1759 card->state, dev->flags);
1760
1761 /* adapter should be down at this point */
1762 if (adapter->state != ADAPT_DOWN) {
1763 DBG_ERROR("slic_if_init adapter->state != ADAPT_DOWN\n");
1764 return -EIO;
1765 }
1766 ASSERT(adapter->linkstate == LINK_DOWN);
1767
1768 adapter->devflags_prev = dev->flags;
1769 adapter->macopts = MAC_DIRECTED;
1770 if (dev->flags) {
1771 DBG_MSG("slicoss: %s (%s) Set MAC options: ", __func__,
1772 adapter->netdev->name);
1773 if (dev->flags & IFF_BROADCAST) {
1774 adapter->macopts |= MAC_BCAST;
1775 DBG_MSG("BCAST ");
1776 }
1777 if (dev->flags & IFF_PROMISC) {
1778 adapter->macopts |= MAC_PROMISC;
1779 DBG_MSG("PROMISC ");
1780 }
1781 if (dev->flags & IFF_ALLMULTI) {
1782 adapter->macopts |= MAC_ALLMCAST;
1783 DBG_MSG("ALL_MCAST ");
1784 }
1785 if (dev->flags & IFF_MULTICAST) {
1786 adapter->macopts |= MAC_MCAST;
1787 DBG_MSG("MCAST ");
1788 }
1789 DBG_MSG("\n");
1790 }
1791 status = slic_adapter_allocresources(adapter);
1792 if (status != STATUS_SUCCESS) {
1793 DBG_ERROR
1794 ("slic_if_init: slic_adapter_allocresources FAILED %x\n",
1795 status);
1796 slic_adapter_freeresources(adapter);
1797 return status;
1798 }
1799
1800 if (!adapter->queues_initialized) {
1801 DBG_MSG("slicoss: %s call slic_rspqueue_init\n", __func__);
1802 if (slic_rspqueue_init(adapter))
1803 return -ENOMEM;
1804 DBG_MSG
1805 ("slicoss: %s call slic_cmdq_init adapter[%p] port %d \n",
1806 __func__, adapter, adapter->port);
1807 if (slic_cmdq_init(adapter))
1808 return -ENOMEM;
1809 DBG_MSG
1810 ("slicoss: %s call slic_rcvqueue_init adapter[%p] \
1811 port %d \n", __func__, adapter, adapter->port);
1812 if (slic_rcvqueue_init(adapter))
1813 return -ENOMEM;
1814 adapter->queues_initialized = 1;
1815 }
1816 DBG_MSG("slicoss: %s disable interrupts(slic)\n", __func__);
1817
1818 WRITE_REG(slic_regs->slic_icr, ICR_INT_OFF, FLUSH);
1819 mdelay(1);
1820
1821 if (!adapter->isp_initialized) {
1822 pshmem = (struct slic_shmem *)adapter->phys_shmem;
1823
1824 spin_lock_irqsave(&adapter->bit64reglock.lock,
1825 adapter->bit64reglock.flags);
1826
1827#if defined(CONFIG_X86_64)
1828 WRITE_REG(slic_regs->slic_addr_upper,
1829 SLIC_GET_ADDR_HIGH(&pshmem->isr), DONT_FLUSH);
1830 WRITE_REG(slic_regs->slic_isp,
1831 SLIC_GET_ADDR_LOW(&pshmem->isr), FLUSH);
1832#elif defined(CONFIG_X86)
1833 WRITE_REG(slic_regs->slic_addr_upper, (u32) 0, DONT_FLUSH);
1834 WRITE_REG(slic_regs->slic_isp, (u32) &pshmem->isr, FLUSH);
1835#else
1836 Stop Compilations
1837#endif
1838 spin_unlock_irqrestore(&adapter->bit64reglock.lock,
1839 adapter->bit64reglock.flags);
1840 adapter->isp_initialized = 1;
1841 }
1842
1843 adapter->state = ADAPT_UP;
1844 if (!card->loadtimerset) {
1845 init_timer(&card->loadtimer);
1846 card->loadtimer.expires =
1847 jiffies + SLIC_SECS_TO_JIFFS(SLIC_LOADTIMER_PERIOD);
1848 card->loadtimer.data = (ulong) card;
1849 card->loadtimer.function = &slic_timer_load_check;
1850 add_timer(&card->loadtimer);
1851
1852 card->loadtimerset = 1;
1853 }
1854#if SLIC_GET_STATS_TIMER_ENABLED
1855 if (!adapter->statstimerset) {
1856 DBG_MSG("slicoss: %s start getstats_timer(slic)\n",
1857 __func__);
1858 init_timer(&adapter->statstimer);
1859 adapter->statstimer.expires =
1860 jiffies + SLIC_SECS_TO_JIFFS(STATS_TIMER_INTERVAL);
1861 adapter->statstimer.data = (ulong) adapter->netdev;
1862 adapter->statstimer.function = &slic_timer_get_stats;
1863 add_timer(&adapter->statstimer);
1864 adapter->statstimerset = 1;
1865 }
1866#endif
1867#if !SLIC_DUMP_ENABLED && SLIC_PING_TIMER_ENABLED
1868/*#if SLIC_DUMP_ENABLED && SLIC_PING_TIMER_ENABLED*/
1869 if (!adapter->pingtimerset) {
1870 DBG_MSG("slicoss: %s start card_ping_timer(slic)\n",
1871 __func__);
1872 init_timer(&adapter->pingtimer);
1873 adapter->pingtimer.expires =
1874 jiffies + SLIC_SECS_TO_JIFFS(PING_TIMER_INTERVAL);
1875 adapter->pingtimer.data = (ulong) dev;
1876 adapter->pingtimer.function = &slic_timer_ping;
1877 add_timer(&adapter->pingtimer);
1878 adapter->pingtimerset = 1;
1879 adapter->card->pingstatus = ISR_PINGMASK;
1880 }
1881#endif
1882
1883 /*
1884 * clear any pending events, then enable interrupts
1885 */
1886 DBG_MSG("slicoss: %s ENABLE interrupts(slic)\n", __func__);
1887 adapter->isrcopy = 0;
1888 adapter->pshmem->isr = 0;
1889 WRITE_REG(slic_regs->slic_isr, 0, FLUSH);
1890 WRITE_REG(slic_regs->slic_icr, ICR_INT_ON, FLUSH);
1891
1892 DBG_MSG("slicoss: %s call slic_link_config(slic)\n", __func__);
1893 slic_link_config(adapter, LINK_AUTOSPEED, LINK_AUTOD);
1894 slic_link_event_handler(adapter);
1895
1896 DBG_MSG("slicoss: %s EXIT\n", __func__);
1897 return STATUS_SUCCESS;
1898}
1899
1900static void slic_unmap_mmio_space(struct adapter *adapter)
1901{
1902#if LINUX_FREES_ADAPTER_RESOURCES
1903 if (adapter->slic_regs)
1904 iounmap(adapter->slic_regs);
1905 adapter->slic_regs = NULL;
1906#endif
1907}
1908
1909static int slic_adapter_allocresources(struct adapter *adapter)
1910{
1911 if (!adapter->intrregistered) {
1912 int retval;
1913
1914 DBG_MSG
1915 ("slicoss: %s AllocAdaptRsrcs adapter[%p] shmem[%p] \
1916 phys_shmem[%p] dev->irq[%x] %x\n",
1917 __func__, adapter, adapter->pshmem,
1918 (void *)adapter->phys_shmem, adapter->netdev->irq,
1919 NR_IRQS);
1920
1921 spin_unlock_irqrestore(&slic_global.driver_lock.lock,
1922 slic_global.driver_lock.flags);
1923
1924 retval = request_irq(adapter->netdev->irq,
1925 &slic_interrupt,
1926 IRQF_SHARED,
1927 adapter->netdev->name, adapter->netdev);
1928
1929 spin_lock_irqsave(&slic_global.driver_lock.lock,
1930 slic_global.driver_lock.flags);
1931
1932 if (retval) {
1933 DBG_ERROR("slicoss: request_irq (%s) FAILED [%x]\n",
1934 adapter->netdev->name, retval);
1935 return retval;
1936 }
1937 adapter->intrregistered = 1;
1938 DBG_MSG
1939 ("slicoss: %s AllocAdaptRsrcs adapter[%p] shmem[%p] \
1940 pshmem[%p] dev->irq[%x]\n",
1941 __func__, adapter, adapter->pshmem,
1942 (void *)adapter->pshmem, adapter->netdev->irq);
1943 }
1944 return STATUS_SUCCESS;
1945}
1946
1947static void slic_config_pci(struct pci_dev *pcidev)
1948{
1949 u16 pci_command;
1950 u16 new_command;
1951
1952 pci_read_config_word(pcidev, PCI_COMMAND, &pci_command);
1953 DBG_MSG("slicoss: %s PCI command[%4.4x]\n", __func__, pci_command);
1954
1955 new_command = pci_command | PCI_COMMAND_MASTER
1956 | PCI_COMMAND_MEMORY
1957 | PCI_COMMAND_INVALIDATE
1958 | PCI_COMMAND_PARITY | PCI_COMMAND_SERR | PCI_COMMAND_FAST_BACK;
1959 if (pci_command != new_command) {
1960 DBG_MSG("%s -- Updating PCI COMMAND register %4.4x->%4.4x.\n",
1961 __func__, pci_command, new_command);
1962 pci_write_config_word(pcidev, PCI_COMMAND, new_command);
1963 }
1964}
1965
1966static void slic_adapter_freeresources(struct adapter *adapter)
1967{
1968 DBG_MSG("slicoss: %s ENTER adapter[%p]\n", __func__, adapter);
1969 slic_init_cleanup(adapter);
1970 memset(&adapter->stats, 0, sizeof(struct net_device_stats));
1971 adapter->error_interrupts = 0;
1972 adapter->rcv_interrupts = 0;
1973 adapter->xmit_interrupts = 0;
1974 adapter->linkevent_interrupts = 0;
1975 adapter->upr_interrupts = 0;
1976 adapter->num_isrs = 0;
1977 adapter->xmit_completes = 0;
1978 adapter->rcv_broadcasts = 0;
1979 adapter->rcv_multicasts = 0;
1980 adapter->rcv_unicasts = 0;
1981 DBG_MSG("slicoss: %s EXIT\n", __func__);
1982}
1983
1984/*
1985 * slic_link_config
1986 *
1987 * Write phy control to configure link duplex/speed
1988 *
1989 */
1990static void slic_link_config(struct adapter *adapter,
1991 u32 linkspeed, u32 linkduplex)
1992{
1993 u32 speed;
1994 u32 duplex;
1995 u32 phy_config;
1996 u32 phy_advreg;
1997 u32 phy_gctlreg;
1998
1999 if (adapter->state != ADAPT_UP) {
2000 DBG_MSG
2001 ("%s (%s) ADAPT Not up yet, Return! speed[%x] duplex[%x]\n",
2002 __func__, adapter->netdev->name, linkspeed,
2003 linkduplex);
2004 return;
2005 }
2006 DBG_MSG("slicoss: %s (%s) slic_link_config: speed[%x] duplex[%x]\n",
2007 __func__, adapter->netdev->name, linkspeed, linkduplex);
2008
2009 ASSERT((adapter->devid == SLIC_1GB_DEVICE_ID)
2010 || (adapter->devid == SLIC_2GB_DEVICE_ID));
2011
2012 if (linkspeed > LINK_1000MB)
2013 linkspeed = LINK_AUTOSPEED;
2014 if (linkduplex > LINK_AUTOD)
2015 linkduplex = LINK_AUTOD;
2016
2017 if ((linkspeed == LINK_AUTOSPEED) || (linkspeed == LINK_1000MB)) {
2018 if (adapter->flags & ADAPT_FLAGS_FIBERMEDIA) {
2019 /* We've got a fiber gigabit interface, and register
2020 * 4 is different in fiber mode than in copper mode
2021 */
2022
2023 /* advertise FD only @1000 Mb */
2024 phy_advreg = (MIICR_REG_4 | (PAR_ADV1000XFD));
2025 /* enable PAUSE frames */
2026 phy_advreg |= PAR_ASYMPAUSE_FIBER;
2027 WRITE_REG(adapter->slic_regs->slic_wphy, phy_advreg,
2028 FLUSH);
2029
2030 if (linkspeed == LINK_AUTOSPEED) {
2031 /* reset phy, enable auto-neg */
2032 phy_config =
2033 (MIICR_REG_PCR |
2034 (PCR_RESET | PCR_AUTONEG |
2035 PCR_AUTONEG_RST));
2036 WRITE_REG(adapter->slic_regs->slic_wphy,
2037 phy_config, FLUSH);
2038 } else { /* forced 1000 Mb FD*/
2039 /* power down phy to break link
2040 this may not work) */
2041 phy_config = (MIICR_REG_PCR | PCR_POWERDOWN);
2042 WRITE_REG(adapter->slic_regs->slic_wphy,
2043 phy_config, FLUSH);
2044 /* wait, Marvell says 1 sec,
2045 try to get away with 10 ms */
2046 mdelay(10);
2047
2048 /* disable auto-neg, set speed/duplex,
2049 soft reset phy, powerup */
2050 phy_config =
2051 (MIICR_REG_PCR |
2052 (PCR_RESET | PCR_SPEED_1000 |
2053 PCR_DUPLEX_FULL));
2054 WRITE_REG(adapter->slic_regs->slic_wphy,
2055 phy_config, FLUSH);
2056 }
2057 } else { /* copper gigabit */
2058
2059 /* Auto-Negotiate or 1000 Mb must be auto negotiated
2060 * We've got a copper gigabit interface, and
2061 * register 4 is different in copper mode than
2062 * in fiber mode
2063 */
2064 if (linkspeed == LINK_AUTOSPEED) {
2065 /* advertise 10/100 Mb modes */
2066 phy_advreg =
2067 (MIICR_REG_4 |
2068 (PAR_ADV100FD | PAR_ADV100HD | PAR_ADV10FD
2069 | PAR_ADV10HD));
2070 } else {
2071 /* linkspeed == LINK_1000MB -
2072 don't advertise 10/100 Mb modes */
2073 phy_advreg = MIICR_REG_4;
2074 }
2075 /* enable PAUSE frames */
2076 phy_advreg |= PAR_ASYMPAUSE;
2077 /* required by the Cicada PHY */
2078 phy_advreg |= PAR_802_3;
2079 WRITE_REG(adapter->slic_regs->slic_wphy, phy_advreg,
2080 FLUSH);
2081 /* advertise FD only @1000 Mb */
2082 phy_gctlreg = (MIICR_REG_9 | (PGC_ADV1000FD));
2083 WRITE_REG(adapter->slic_regs->slic_wphy, phy_gctlreg,
2084 FLUSH);
2085
2086 if (adapter->subsysid != SLIC_1GB_CICADA_SUBSYS_ID) {
2087 /* if a Marvell PHY
2088 enable auto crossover */
2089 phy_config =
2090 (MIICR_REG_16 | (MRV_REG16_XOVERON));
2091 WRITE_REG(adapter->slic_regs->slic_wphy,
2092 phy_config, FLUSH);
2093
2094 /* reset phy, enable auto-neg */
2095 phy_config =
2096 (MIICR_REG_PCR |
2097 (PCR_RESET | PCR_AUTONEG |
2098 PCR_AUTONEG_RST));
2099 WRITE_REG(adapter->slic_regs->slic_wphy,
2100 phy_config, FLUSH);
2101 } else { /* it's a Cicada PHY */
2102 /* enable and restart auto-neg (don't reset) */
2103 phy_config =
2104 (MIICR_REG_PCR |
2105 (PCR_AUTONEG | PCR_AUTONEG_RST));
2106 WRITE_REG(adapter->slic_regs->slic_wphy,
2107 phy_config, FLUSH);
2108 }
2109 }
2110 } else {
2111 /* Forced 10/100 */
2112 if (linkspeed == LINK_10MB)
2113 speed = 0;
2114 else
2115 speed = PCR_SPEED_100;
2116 if (linkduplex == LINK_HALFD)
2117 duplex = 0;
2118 else
2119 duplex = PCR_DUPLEX_FULL;
2120
2121 if (adapter->subsysid != SLIC_1GB_CICADA_SUBSYS_ID) {
2122 /* if a Marvell PHY
2123 disable auto crossover */
2124 phy_config = (MIICR_REG_16 | (MRV_REG16_XOVEROFF));
2125 WRITE_REG(adapter->slic_regs->slic_wphy, phy_config,
2126 FLUSH);
2127 }
2128
2129 /* power down phy to break link (this may not work) */
2130 phy_config = (MIICR_REG_PCR | (PCR_POWERDOWN | speed | duplex));
2131 WRITE_REG(adapter->slic_regs->slic_wphy, phy_config, FLUSH);
2132
2133 /* wait, Marvell says 1 sec, try to get away with 10 ms */
2134 mdelay(10);
2135
2136 if (adapter->subsysid != SLIC_1GB_CICADA_SUBSYS_ID) {
2137 /* if a Marvell PHY
2138 disable auto-neg, set speed,
2139 soft reset phy, powerup */
2140 phy_config =
2141 (MIICR_REG_PCR | (PCR_RESET | speed | duplex));
2142 WRITE_REG(adapter->slic_regs->slic_wphy, phy_config,
2143 FLUSH);
2144 } else { /* it's a Cicada PHY */
2145 /* disable auto-neg, set speed, powerup */
2146 phy_config = (MIICR_REG_PCR | (speed | duplex));
2147 WRITE_REG(adapter->slic_regs->slic_wphy, phy_config,
2148 FLUSH);
2149 }
2150 }
2151
2152 DBG_MSG
2153 ("slicoss: %s (%s) EXIT slic_link_config : state[%d] \
2154 phy_config[%x]\n", __func__, adapter->netdev->name, adapter->state,
2155 phy_config);
2156}
2157
2158static void slic_card_cleanup(struct sliccard *card)
2159{
2160 DBG_MSG("slicoss: %s ENTER\n", __func__);
2161
2162#if SLIC_DUMP_ENABLED
2163 if (card->dumpbuffer) {
2164 card->dumpbuffer_phys = 0;
2165 card->dumpbuffer_physl = 0;
2166 card->dumpbuffer_physh = 0;
2167 kfree(card->dumpbuffer);
2168 card->dumpbuffer = NULL;
2169 }
2170 if (card->cmdbuffer) {
2171 card->cmdbuffer_phys = 0;
2172 card->cmdbuffer_physl = 0;
2173 card->cmdbuffer_physh = 0;
2174 kfree(card->cmdbuffer);
2175 card->cmdbuffer = NULL;
2176 }
2177#endif
2178
2179 if (card->loadtimerset) {
2180 card->loadtimerset = 0;
2181 del_timer(&card->loadtimer);
2182 }
2183
2184 slic_debug_card_destroy(card);
2185
2186 kfree(card);
2187 DBG_MSG("slicoss: %s EXIT\n", __func__);
2188}
2189
2190static int slic_card_download_gbrcv(struct adapter *adapter)
2191{
2192 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2193 u32 codeaddr;
2194 unsigned char *instruction = NULL;
2195 u32 rcvucodelen = 0;
2196
2197 switch (adapter->devid) {
2198 case SLIC_2GB_DEVICE_ID:
2199 instruction = (unsigned char *)&OasisRcvUCode[0];
2200 rcvucodelen = OasisRcvUCodeLen;
2201 break;
2202 case SLIC_1GB_DEVICE_ID:
2203 instruction = (unsigned char *)&GBRcvUCode[0];
2204 rcvucodelen = GBRcvUCodeLen;
2205 break;
2206 default:
2207 ASSERT(0);
2208 break;
2209 }
2210
2211 /* start download */
2212 WRITE_REG(slic_regs->slic_rcv_wcs, SLIC_RCVWCS_BEGIN, FLUSH);
2213
2214 /* download the rcv sequencer ucode */
2215 for (codeaddr = 0; codeaddr < rcvucodelen; codeaddr++) {
2216 /* write out instruction address */
2217 WRITE_REG(slic_regs->slic_rcv_wcs, codeaddr, FLUSH);
2218
2219 /* write out the instruction data low addr */
2220 WRITE_REG(slic_regs->slic_rcv_wcs,
2221 (u32) *(u32 *) instruction, FLUSH);
2222 instruction += 4;
2223
2224 /* write out the instruction data high addr */
2225 WRITE_REG(slic_regs->slic_rcv_wcs, (u32) *instruction,
2226 FLUSH);
2227 instruction += 1;
2228 }
2229
2230 /* download finished */
2231 WRITE_REG(slic_regs->slic_rcv_wcs, SLIC_RCVWCS_FINISH, FLUSH);
2232
2233 return 0;
2234}
2235
2236static int slic_card_download(struct adapter *adapter)
2237{
2238 u32 section;
2239 int thissectionsize;
2240 int codeaddr;
2241 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2242 u32 *instruction = NULL;
2243 u32 *lastinstruct = NULL;
2244 u32 *startinstruct = NULL;
2245 unsigned char *nextinstruct;
2246 u32 baseaddress;
2247 u32 failure;
2248 u32 i;
2249 u32 numsects = 0;
2250 u32 sectsize[3];
2251 u32 sectstart[3];
2252
2253/* DBG_MSG ("slicoss: %s (%s) adapter[%p] card[%p] devid[%x] \
2254 jiffies[%lx] cpu %d\n", __func__, adapter->netdev->name, adapter,
2255 adapter->card, adapter->devid,jiffies, smp_processor_id()); */
2256
2257 switch (adapter->devid) {
2258 case SLIC_2GB_DEVICE_ID:
2259/* DBG_MSG ("slicoss: %s devid==SLIC_2GB_DEVICE_ID sections[%x]\n",
2260 __func__, (uint) ONumSections); */
2261 numsects = ONumSections;
2262 for (i = 0; i < numsects; i++) {
2263 sectsize[i] = OSectionSize[i];
2264 sectstart[i] = OSectionStart[i];
2265 }
2266 break;
2267 case SLIC_1GB_DEVICE_ID:
2268/* DBG_MSG ("slicoss: %s devid==SLIC_1GB_DEVICE_ID sections[%x]\n",
2269 __func__, (uint) MNumSections); */
2270 numsects = MNumSections;
2271 for (i = 0; i < numsects; i++) {
2272 sectsize[i] = MSectionSize[i];
2273 sectstart[i] = MSectionStart[i];
2274 }
2275 break;
2276 default:
2277 ASSERT(0);
2278 break;
2279 }
2280
2281 ASSERT(numsects <= 3);
2282
2283 for (section = 0; section < numsects; section++) {
2284 switch (adapter->devid) {
2285 case SLIC_2GB_DEVICE_ID:
2286 instruction = (u32 *) &OasisUCode[section][0];
2287 baseaddress = sectstart[section];
2288 thissectionsize = sectsize[section] >> 3;
2289 lastinstruct =
2290 (u32 *) &OasisUCode[section][sectsize[section] -
2291 8];
2292 break;
2293 case SLIC_1GB_DEVICE_ID:
2294 instruction = (u32 *) &MojaveUCode[section][0];
2295 baseaddress = sectstart[section];
2296 thissectionsize = sectsize[section] >> 3;
2297 lastinstruct =
2298 (u32 *) &MojaveUCode[section][sectsize[section]
2299 - 8];
2300 break;
2301 default:
2302 ASSERT(0);
2303 break;
2304 }
2305
2306 baseaddress = sectstart[section];
2307 thissectionsize = sectsize[section] >> 3;
2308
2309 for (codeaddr = 0; codeaddr < thissectionsize; codeaddr++) {
2310 startinstruct = instruction;
2311 nextinstruct = ((unsigned char *)instruction) + 8;
2312 /* Write out instruction address */
2313 WRITE_REG(slic_regs->slic_wcs, baseaddress + codeaddr,
2314 FLUSH);
2315 /* Write out instruction to low addr */
2316 WRITE_REG(slic_regs->slic_wcs, *instruction, FLUSH);
2317#ifdef CONFIG_X86_64
2318 instruction = (u32 *)((unsigned char *)instruction + 4);
2319#else
2320 instruction++;
2321#endif
2322 /* Write out instruction to high addr */
2323 WRITE_REG(slic_regs->slic_wcs, *instruction, FLUSH);
2324#ifdef CONFIG_X86_64
2325 instruction = (u32 *)((unsigned char *)instruction + 4);
2326#else
2327 instruction++;
2328#endif
2329 }
2330 }
2331
2332 for (section = 0; section < numsects; section++) {
2333 switch (adapter->devid) {
2334 case SLIC_2GB_DEVICE_ID:
2335 instruction = (u32 *)&OasisUCode[section][0];
2336 break;
2337 case SLIC_1GB_DEVICE_ID:
2338 instruction = (u32 *)&MojaveUCode[section][0];
2339 break;
2340 default:
2341 ASSERT(0);
2342 break;
2343 }
2344
2345 baseaddress = sectstart[section];
2346 if (baseaddress < 0x8000)
2347 continue;
2348 thissectionsize = sectsize[section] >> 3;
2349
2350/* DBG_MSG ("slicoss: COMPARE secton[%x] baseaddr[%x] sectnsize[%x]\n",
2351 (uint)section,baseaddress,thissectionsize);*/
2352
2353 for (codeaddr = 0; codeaddr < thissectionsize; codeaddr++) {
2354 /* Write out instruction address */
2355 WRITE_REG(slic_regs->slic_wcs,
2356 SLIC_WCS_COMPARE | (baseaddress + codeaddr),
2357 FLUSH);
2358 /* Write out instruction to low addr */
2359 WRITE_REG(slic_regs->slic_wcs, *instruction, FLUSH);
2360#ifdef CONFIG_X86_64
2361 instruction = (u32 *)((unsigned char *)instruction + 4);
2362#else
2363 instruction++;
2364#endif
2365 /* Write out instruction to high addr */
2366 WRITE_REG(slic_regs->slic_wcs, *instruction, FLUSH);
2367#ifdef CONFIG_X86_64
2368 instruction = (u32 *)((unsigned char *)instruction + 4);
2369#else
2370 instruction++;
2371#endif
2372 /* Check SRAM location zero. If it is non-zero. Abort.*/
2373 failure = readl((u32 __iomem *)&slic_regs->slic_reset);
2374 if (failure) {
2375 DBG_MSG
2376 ("slicoss: %s FAILURE EXIT codeaddr[%x] \
2377 thissectionsize[%x] failure[%x]\n",
2378 __func__, codeaddr, thissectionsize,
2379 failure);
2380
2381 return -EIO;
2382 }
2383 }
2384 }
2385/* DBG_MSG ("slicoss: Compare done\n");*/
2386
2387 /* Everything OK, kick off the card */
2388 mdelay(10);
2389 WRITE_REG(slic_regs->slic_wcs, SLIC_WCS_START, FLUSH);
2390
2391 /* stall for 20 ms, long enough for ucode to init card
2392 and reach mainloop */
2393 mdelay(20);
2394
2395 DBG_MSG("slicoss: %s (%s) EXIT adapter[%p] card[%p]\n",
2396 __func__, adapter->netdev->name, adapter, adapter->card);
2397
2398 return STATUS_SUCCESS;
2399}
2400
2401static void slic_adapter_set_hwaddr(struct adapter *adapter)
2402{
2403 struct sliccard *card = adapter->card;
2404
2405/* DBG_MSG ("%s ENTER card->config_set[%x] port[%d] physport[%d] funct#[%d]\n",
2406 __func__, card->config_set, adapter->port, adapter->physport,
2407 adapter->functionnumber);
2408
2409 slic_dbg_macaddrs(adapter); */
2410
2411 if ((adapter->card) && (card->config_set)) {
2412 memcpy(adapter->macaddr,
2413 card->config.MacInfo[adapter->functionnumber].macaddrA,
2414 sizeof(struct slic_config_mac));
2415/* DBG_MSG ("%s AFTER copying from config.macinfo into currmacaddr\n",
2416 __func__);
2417 slic_dbg_macaddrs(adapter);*/
2418 if (!(adapter->currmacaddr[0] || adapter->currmacaddr[1] ||
2419 adapter->currmacaddr[2] || adapter->currmacaddr[3] ||
2420 adapter->currmacaddr[4] || adapter->currmacaddr[5])) {
2421 memcpy(adapter->currmacaddr, adapter->macaddr, 6);
2422 }
2423 if (adapter->netdev) {
2424 memcpy(adapter->netdev->dev_addr, adapter->currmacaddr,
2425 6);
2426 }
2427 }
2428/* DBG_MSG ("%s EXIT port %d\n", __func__, adapter->port);
2429 slic_dbg_macaddrs(adapter); */
2430}
2431
2432static void slic_intagg_set(struct adapter *adapter, u32 value)
2433{
2434 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2435
2436 WRITE_REG(slic_regs->slic_intagg, value, FLUSH);
2437 adapter->card->loadlevel_current = value;
2438}
2439
2440static int slic_card_init(struct sliccard *card, struct adapter *adapter)
2441{
2442 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2443 struct slic_eeprom *peeprom;
2444 struct oslic_eeprom *pOeeprom;
2445 dma_addr_t phys_config;
2446 u32 phys_configh;
2447 u32 phys_configl;
2448 u32 i = 0;
2449 struct slic_shmem *pshmem;
2450 int status;
2451 uint macaddrs = card->card_size;
2452 ushort eecodesize;
2453 ushort dramsize;
2454 ushort ee_chksum;
2455 ushort calc_chksum;
2456 struct slic_config_mac *pmac;
2457 unsigned char fruformat;
2458 unsigned char oemfruformat;
2459 struct atk_fru *patkfru;
2460 union oemfru *poemfru;
2461
2462 DBG_MSG
2463 ("slicoss: %s ENTER card[%p] adapter[%p] card->state[%x] \
2464 size[%d]\n", __func__, card, adapter, card->state, card->card_size);
2465
2466 /* Reset everything except PCI configuration space */
2467 slic_soft_reset(adapter);
2468
2469 /* Download the microcode */
2470 status = slic_card_download(adapter);
2471
2472 if (status != STATUS_SUCCESS) {
2473 DBG_ERROR("SLIC download failed bus %d slot %d\n",
2474 (uint) adapter->busnumber,
2475 (uint) adapter->slotnumber);
2476 return status;
2477 }
2478
2479 if (!card->config_set) {
2480 peeprom = pci_alloc_consistent(adapter->pcidev,
2481 sizeof(struct slic_eeprom),
2482 &phys_config);
2483
2484 phys_configl = SLIC_GET_ADDR_LOW(phys_config);
2485 phys_configh = SLIC_GET_ADDR_HIGH(phys_config);
2486
2487 DBG_MSG("slicoss: %s Eeprom info adapter [%p]\n "
2488 "size [%x]\n peeprom [%p]\n "
2489 "phys_config [%p]\n phys_configl[%x]\n "
2490 "phys_configh[%x]\n",
2491 __func__, adapter,
2492 (u32)sizeof(struct slic_eeprom),
2493 peeprom, (void *) phys_config, phys_configl,
2494 phys_configh);
2495 if (!peeprom) {
2496 DBG_ERROR
2497 ("SLIC eeprom read failed to get memory bus %d \
2498 slot %d\n",
2499 (uint) adapter->busnumber,
2500 (uint) adapter->slotnumber);
2501 return -ENOMEM;
2502 } else {
2503 memset(peeprom, 0, sizeof(struct slic_eeprom));
2504 }
2505 WRITE_REG(slic_regs->slic_icr, ICR_INT_OFF, FLUSH);
2506 mdelay(1);
2507 pshmem = (struct slic_shmem *)adapter->phys_shmem;
2508
2509 spin_lock_irqsave(&adapter->bit64reglock.lock,
2510 adapter->bit64reglock.flags);
2511 WRITE_REG(slic_regs->slic_addr_upper, 0, DONT_FLUSH);
2512 WRITE_REG(slic_regs->slic_isp,
2513 SLIC_GET_ADDR_LOW(&pshmem->isr), FLUSH);
2514 spin_unlock_irqrestore(&adapter->bit64reglock.lock,
2515 adapter->bit64reglock.flags);
2516
2517 slic_config_get(adapter, phys_configl, phys_configh);
2518
2519 for (;;) {
2520 if (adapter->pshmem->isr) {
2521 DBG_MSG("%s shmem[%p] shmem->isr[%x]\n",
2522 __func__, adapter->pshmem,
2523 adapter->pshmem->isr);
2524
2525 if (adapter->pshmem->isr & ISR_UPC) {
2526 adapter->pshmem->isr = 0;
2527 WRITE_REG64(adapter,
2528 slic_regs->slic_isp,
2529 0,
2530 slic_regs->slic_addr_upper,
2531 0, FLUSH);
2532 WRITE_REG(slic_regs->slic_isr, 0,
2533 FLUSH);
2534
2535 slic_upr_request_complete(adapter, 0);
2536 break;
2537 } else {
2538 adapter->pshmem->isr = 0;
2539 WRITE_REG(slic_regs->slic_isr, 0,
2540 FLUSH);
2541 }
2542 } else {
2543 mdelay(1);
2544 i++;
2545 if (i > 5000) {
2546 DBG_ERROR
2547 ("SLIC: %d config data fetch timed\
2548 out!\n", adapter->port);
2549 DBG_MSG("%s shmem[%p] shmem->isr[%x]\n",
2550 __func__, adapter->pshmem,
2551 adapter->pshmem->isr);
2552 WRITE_REG64(adapter,
2553 slic_regs->slic_isp, 0,
2554 slic_regs->slic_addr_upper,
2555 0, FLUSH);
2556 return -EINVAL;
2557 }
2558 }
2559 }
2560
2561 switch (adapter->devid) {
2562 /* Oasis card */
2563 case SLIC_2GB_DEVICE_ID:
2564 /* extract EEPROM data and pointers to EEPROM data */
2565 pOeeprom = (struct oslic_eeprom *) peeprom;
2566 eecodesize = pOeeprom->EecodeSize;
2567 dramsize = pOeeprom->DramSize;
2568 pmac = pOeeprom->MacInfo;
2569 fruformat = pOeeprom->FruFormat;
2570 patkfru = &pOeeprom->AtkFru;
2571 oemfruformat = pOeeprom->OemFruFormat;
2572 poemfru = &pOeeprom->OemFru;
2573 macaddrs = 2;
2574 /* Minor kludge for Oasis card
2575 get 2 MAC addresses from the
2576 EEPROM to ensure that function 1
2577 gets the Port 1 MAC address */
2578 break;
2579 default:
2580 /* extract EEPROM data and pointers to EEPROM data */
2581 eecodesize = peeprom->EecodeSize;
2582 dramsize = peeprom->DramSize;
2583 pmac = peeprom->u2.mac.MacInfo;
2584 fruformat = peeprom->FruFormat;
2585 patkfru = &peeprom->AtkFru;
2586 oemfruformat = peeprom->OemFruFormat;
2587 poemfru = &peeprom->OemFru;
2588 break;
2589 }
2590
2591 card->config.EepromValid = FALSE;
2592
2593 /* see if the EEPROM is valid by checking it's checksum */
2594 if ((eecodesize <= MAX_EECODE_SIZE) &&
2595 (eecodesize >= MIN_EECODE_SIZE)) {
2596
2597 ee_chksum =
2598 *(u16 *) ((char *) peeprom + (eecodesize - 2));
2599 /*
2600 calculate the EEPROM checksum
2601 */
2602 calc_chksum =
2603 ~slic_eeprom_cksum((char *) peeprom,
2604 (eecodesize - 2));
2605 /*
2606 if the ucdoe chksum flag bit worked,
2607 we wouldn't need this shit
2608 */
2609 if (ee_chksum == calc_chksum)
2610 card->config.EepromValid = TRUE;
2611 }
2612 /* copy in the DRAM size */
2613 card->config.DramSize = dramsize;
2614
2615 /* copy in the MAC address(es) */
2616 for (i = 0; i < macaddrs; i++) {
2617 memcpy(&card->config.MacInfo[i],
2618 &pmac[i], sizeof(struct slic_config_mac));
2619 }
2620/* DBG_MSG ("%s EEPROM Checksum Good? %d MacAddress\n",__func__,
2621 card->config.EepromValid); */
2622
2623 /* copy the Alacritech FRU information */
2624 card->config.FruFormat = fruformat;
2625 memcpy(&card->config.AtkFru, patkfru,
2626 sizeof(struct atk_fru));
2627
2628 pci_free_consistent(adapter->pcidev,
2629 sizeof(struct slic_eeprom),
2630 peeprom, phys_config);
2631 DBG_MSG
2632 ("slicoss: %s adapter%d [%p] size[%x] FREE peeprom[%p] \
2633 phys_config[%p]\n",
2634 __func__, adapter->port, adapter,
2635 (u32) sizeof(struct slic_eeprom), peeprom,
2636 (void *) phys_config);
2637
2638 if ((!card->config.EepromValid) &&
2639 (adapter->reg_params.fail_on_bad_eeprom)) {
2640 WRITE_REG64(adapter,
2641 slic_regs->slic_isp,
2642 0, slic_regs->slic_addr_upper, 0, FLUSH);
2643 DBG_ERROR
2644 ("unsupported CONFIGURATION EEPROM invalid\n");
2645 return -EINVAL;
2646 }
2647
2648 card->config_set = 1;
2649 }
2650
2651 if (slic_card_download_gbrcv(adapter)) {
2652 DBG_ERROR("%s unable to download GB receive microcode\n",
2653 __func__);
2654 return -EINVAL;
2655 }
2656
2657 if (slic_global.dynamic_intagg) {
2658 DBG_MSG
2659 ("Dynamic Interrupt Aggregation[ENABLED]: slic%d \
2660 SET intagg to %d\n",
2661 card->cardnum, 0);
2662 slic_intagg_set(adapter, 0);
2663 } else {
2664 slic_intagg_set(adapter, intagg_delay);
2665 DBG_MSG
2666 ("Dynamic Interrupt Aggregation[DISABLED]: slic%d \
2667 SET intagg to %d\n",
2668 card->cardnum, intagg_delay);
2669 }
2670
2671 /*
2672 * Initialize ping status to "ok"
2673 */
2674 card->pingstatus = ISR_PINGMASK;
2675
2676#if SLIC_DUMP_ENABLED
2677 if (!card->dumpbuffer) {
2678 card->dumpbuffer = kmalloc(DUMP_PAGE_SIZE, GFP_ATOMIC);
2679
2680 ASSERT(card->dumpbuffer);
2681 if (card->dumpbuffer == NULL)
2682 return -ENOMEM;
2683 }
2684 /*
2685 * Smear the shared memory structure and then obtain
2686 * the PHYSICAL address of this structure
2687 */
2688 memset(card->dumpbuffer, 0, DUMP_PAGE_SIZE);
2689 card->dumpbuffer_phys = virt_to_bus(card->dumpbuffer);
2690 card->dumpbuffer_physh = SLIC_GET_ADDR_HIGH(card->dumpbuffer_phys);
2691 card->dumpbuffer_physl = SLIC_GET_ADDR_LOW(card->dumpbuffer_phys);
2692
2693 /*
2694 * Allocate COMMAND BUFFER
2695 */
2696 if (!card->cmdbuffer) {
2697 card->cmdbuffer = kmalloc(sizeof(struct dump_cmd), GFP_ATOMIC);
2698
2699 ASSERT(card->cmdbuffer);
2700 if (card->cmdbuffer == NULL)
2701 return -ENOMEM;
2702 }
2703 /*
2704 * Smear the shared memory structure and then obtain
2705 * the PHYSICAL address of this structure
2706 */
2707 memset(card->cmdbuffer, 0, sizeof(struct dump_cmd));
2708 card->cmdbuffer_phys = virt_to_bus(card->cmdbuffer);
2709 card->cmdbuffer_physh = SLIC_GET_ADDR_HIGH(card->cmdbuffer_phys);
2710 card->cmdbuffer_physl = SLIC_GET_ADDR_LOW(card->cmdbuffer_phys);
2711#endif
2712
2713 /*
2714 * Lastly, mark our card state as up and return success
2715 */
2716 card->state = CARD_UP;
2717 card->reset_in_progress = 0;
2718 DBG_MSG("slicoss: %s EXIT card[%p] adapter[%p] card->state[%x]\n",
2719 __func__, card, adapter, card->state);
2720
2721 return STATUS_SUCCESS;
2722}
2723
2724static u32 slic_card_locate(struct adapter *adapter)
2725{
2726 struct sliccard *card = slic_global.slic_card;
2727 struct physcard *physcard = slic_global.phys_card;
2728 ushort card_hostid;
2729 u16 __iomem *hostid_reg;
2730 uint i;
2731 uint rdhostid_offset = 0;
2732
2733 DBG_MSG("slicoss: %s adapter[%p] slot[%x] bus[%x] port[%x]\n",
2734 __func__, adapter, adapter->slotnumber, adapter->busnumber,
2735 adapter->port);
2736
2737 switch (adapter->devid) {
2738 case SLIC_2GB_DEVICE_ID:
2739 rdhostid_offset = SLIC_RDHOSTID_2GB;
2740 break;
2741 case SLIC_1GB_DEVICE_ID:
2742 rdhostid_offset = SLIC_RDHOSTID_1GB;
2743 break;
2744 default:
2745 ASSERT(0);
2746 break;
2747 }
2748
2749 hostid_reg =
2750 (u16 __iomem *) (((u8 __iomem *) (adapter->slic_regs)) +
2751 rdhostid_offset);
2752 DBG_MSG("slicoss: %s *hostid_reg[%p] == ", __func__, hostid_reg);
2753
2754 /* read the 16 bit hostid from SRAM */
2755 card_hostid = (ushort) readw(hostid_reg);
2756 DBG_MSG(" card_hostid[%x]\n", card_hostid);
2757
2758 /* Initialize a new card structure if need be */
2759 if (card_hostid == SLIC_HOSTID_DEFAULT) {
2760 card = kzalloc(sizeof(struct sliccard), GFP_KERNEL);
2761 if (card == NULL)
2762 return -ENOMEM;
2763
2764 card->next = slic_global.slic_card;
2765 slic_global.slic_card = card;
2766#if DBG
2767 if (adapter->devid == SLIC_2GB_DEVICE_ID) {
2768 DBG_MSG
2769 ("SLICOSS ==> Initialize 2 Port Gigabit Server \
2770 and Storage Accelerator\n");
2771 } else {
2772 DBG_MSG
2773 ("SLICOSS ==> Initialize 1 Port Gigabit Server \
2774 and Storage Accelerator\n");
2775 }
2776#endif
2777 card->busnumber = adapter->busnumber;
2778 card->slotnumber = adapter->slotnumber;
2779
2780 /* Find an available cardnum */
2781 for (i = 0; i < SLIC_MAX_CARDS; i++) {
2782 if (slic_global.cardnuminuse[i] == 0) {
2783 slic_global.cardnuminuse[i] = 1;
2784 card->cardnum = i;
2785 break;
2786 }
2787 }
2788 slic_global.num_slic_cards++;
2789 DBG_MSG("\nCARDNUM == %d Total %d Card[%p]\n\n",
2790 card->cardnum, slic_global.num_slic_cards, card);
2791
2792 slic_debug_card_create(card);
2793 } else {
2794 DBG_MSG
2795 ("slicoss: %s CARD already allocated, find the \
2796 correct card\n", __func__);
2797 /* Card exists, find the card this adapter belongs to */
2798 while (card) {
2799 DBG_MSG
2800 ("slicoss: %s card[%p] slot[%x] bus[%x] \
2801 adaptport[%p] hostid[%x] cardnum[%x]\n",
2802 __func__, card, card->slotnumber,
2803 card->busnumber, card->adapter[adapter->port],
2804 card_hostid, card->cardnum);
2805
2806 if (card->cardnum == card_hostid)
2807 break;
2808 card = card->next;
2809 }
2810 }
2811
2812 ASSERT(card);
2813 if (!card)
2814 return STATUS_FAILURE;
2815 /* Put the adapter in the card's adapter list */
2816 ASSERT(card->adapter[adapter->port] == NULL);
2817 if (!card->adapter[adapter->port]) {
2818 card->adapter[adapter->port] = adapter;
2819 adapter->card = card;
2820 }
2821
2822 card->card_size = 1; /* one port per *logical* card */
2823
2824 while (physcard) {
2825 for (i = 0; i < SLIC_MAX_PORTS; i++) {
2826 if (!physcard->adapter[i])
2827 continue;
2828 else
2829 break;
2830 }
2831 ASSERT(i != SLIC_MAX_PORTS);
2832 if (physcard->adapter[i]->slotnumber == adapter->slotnumber)
2833 break;
2834 physcard = physcard->next;
2835 }
2836 if (!physcard) {
2837 /* no structure allocated for this physical card yet */
2838 physcard = kmalloc(sizeof(struct physcard *), GFP_ATOMIC);
2839 ASSERT(physcard);
2840 memset(physcard, 0, sizeof(struct physcard *));
2841
2842 DBG_MSG
2843 ("\n%s Allocate a PHYSICALcard:\n PHYSICAL_Card[%p]\n\
2844 LogicalCard [%p]\n adapter [%p]\n",
2845 __func__, physcard, card, adapter);
2846
2847 physcard->next = slic_global.phys_card;
2848 slic_global.phys_card = physcard;
2849 physcard->adapters_allocd = 1;
2850 } else {
2851 physcard->adapters_allocd++;
2852 }
2853 /* Note - this is ZERO relative */
2854 adapter->physport = physcard->adapters_allocd - 1;
2855
2856 ASSERT(physcard->adapter[adapter->physport] == NULL);
2857 physcard->adapter[adapter->physport] = adapter;
2858 adapter->physcard = physcard;
2859 DBG_MSG(" PHYSICAL_Port %d Logical_Port %d\n", adapter->physport,
2860 adapter->port);
2861
2862 return 0;
2863}
2864
2865static void slic_soft_reset(struct adapter *adapter)
2866{
2867 if (adapter->card->state == CARD_UP) {
2868 DBG_MSG("slicoss: %s QUIESCE adapter[%p] card[%p] devid[%x]\n",
2869 __func__, adapter, adapter->card, adapter->devid);
2870 WRITE_REG(adapter->slic_regs->slic_quiesce, 0, FLUSH);
2871 mdelay(1);
2872 }
2873/* DBG_MSG ("slicoss: %s (%s) adapter[%p] card[%p] devid[%x]\n",
2874 __func__, adapter->netdev->name, adapter, adapter->card,
2875 adapter->devid); */
2876
2877 WRITE_REG(adapter->slic_regs->slic_reset, SLIC_RESET_MAGIC, FLUSH);
2878 mdelay(1);
2879}
2880
2881static void slic_config_set(struct adapter *adapter, bool linkchange)
2882{
2883 u32 value;
2884 u32 RcrReset;
2885 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2886
2887 DBG_MSG("slicoss: %s (%s) slic_interface_enable[%p](%d)\n",
2888 __func__, adapter->netdev->name, adapter,
2889 adapter->cardindex);
2890
2891 if (linkchange) {
2892 /* Setup MAC */
2893 slic_mac_config(adapter);
2894 RcrReset = GRCR_RESET;
2895 } else {
2896 slic_mac_address_config(adapter);
2897 RcrReset = 0;
2898 }
2899
2900 if (adapter->linkduplex == LINK_FULLD) {
2901 /* setup xmtcfg */
2902 value = (GXCR_RESET | /* Always reset */
2903 GXCR_XMTEN | /* Enable transmit */
2904 GXCR_PAUSEEN); /* Enable pause */
2905
2906 DBG_MSG("slicoss: FDX adapt[%p] set xmtcfg to [%x]\n", adapter,
2907 value);
2908 WRITE_REG(slic_regs->slic_wxcfg, value, FLUSH);
2909
2910 /* Setup rcvcfg last */
2911 value = (RcrReset | /* Reset, if linkchange */
2912 GRCR_CTLEN | /* Enable CTL frames */
2913 GRCR_ADDRAEN | /* Address A enable */
2914 GRCR_RCVBAD | /* Rcv bad frames */
2915 (GRCR_HASHSIZE << GRCR_HASHSIZE_SHIFT));
2916 } else {
2917 /* setup xmtcfg */
2918 value = (GXCR_RESET | /* Always reset */
2919 GXCR_XMTEN); /* Enable transmit */
2920
2921 DBG_MSG("slicoss: HDX adapt[%p] set xmtcfg to [%x]\n", adapter,
2922 value);
2923 WRITE_REG(slic_regs->slic_wxcfg, value, FLUSH);
2924
2925 /* Setup rcvcfg last */
2926 value = (RcrReset | /* Reset, if linkchange */
2927 GRCR_ADDRAEN | /* Address A enable */
2928 GRCR_RCVBAD | /* Rcv bad frames */
2929 (GRCR_HASHSIZE << GRCR_HASHSIZE_SHIFT));
2930 }
2931
2932 if (adapter->state != ADAPT_DOWN) {
2933 /* Only enable receive if we are restarting or running */
2934 value |= GRCR_RCVEN;
2935 }
2936
2937 if (adapter->macopts & MAC_PROMISC)
2938 value |= GRCR_RCVALL;
2939
2940 DBG_MSG("slicoss: adapt[%p] set rcvcfg to [%x]\n", adapter, value);
2941 WRITE_REG(slic_regs->slic_wrcfg, value, FLUSH);
2942}
2943
2944/*
2945 * Turn off RCV and XMT, power down PHY
2946 */
2947static void slic_config_clear(struct adapter *adapter)
2948{
2949 u32 value;
2950 u32 phy_config;
2951 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2952
2953 /* Setup xmtcfg */
2954 value = (GXCR_RESET | /* Always reset */
2955 GXCR_PAUSEEN); /* Enable pause */
2956
2957 WRITE_REG(slic_regs->slic_wxcfg, value, FLUSH);
2958
2959 value = (GRCR_RESET | /* Always reset */
2960 GRCR_CTLEN | /* Enable CTL frames */
2961 GRCR_ADDRAEN | /* Address A enable */
2962 (GRCR_HASHSIZE << GRCR_HASHSIZE_SHIFT));
2963
2964 WRITE_REG(slic_regs->slic_wrcfg, value, FLUSH);
2965
2966 /* power down phy */
2967 phy_config = (MIICR_REG_PCR | (PCR_POWERDOWN));
2968 WRITE_REG(slic_regs->slic_wphy, phy_config, FLUSH);
2969}
2970
2971static void slic_config_get(struct adapter *adapter, u32 config,
2972 u32 config_h)
2973{
2974 int status;
2975
2976 status = slic_upr_request(adapter,
2977 SLIC_UPR_RCONFIG,
2978 (u32) config, (u32) config_h, 0, 0);
2979 ASSERT(status == 0);
2980}
2981
2982static void slic_mac_address_config(struct adapter *adapter)
2983{
2984 u32 value;
2985 u32 value2;
2986 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
2987
2988 value = *(u32 *) &adapter->currmacaddr[2];
2989 value = ntohl(value);
2990 WRITE_REG(slic_regs->slic_wraddral, value, FLUSH);
2991 WRITE_REG(slic_regs->slic_wraddrbl, value, FLUSH);
2992
2993 value2 = (u32) ((adapter->currmacaddr[0] << 8 |
2994 adapter->currmacaddr[1]) & 0xFFFF);
2995
2996 WRITE_REG(slic_regs->slic_wraddrah, value2, FLUSH);
2997 WRITE_REG(slic_regs->slic_wraddrbh, value2, FLUSH);
2998
2999 DBG_MSG("%s value1[%x] value2[%x] Call slic_mcast_set_mask\n",
3000 __func__, value, value2);
3001 slic_dbg_macaddrs(adapter);
3002
3003 /* Write our multicast mask out to the card. This is done */
3004 /* here in addition to the slic_mcast_addr_set routine */
3005 /* because ALL_MCAST may have been enabled or disabled */
3006 slic_mcast_set_mask(adapter);
3007}
3008
3009static void slic_mac_config(struct adapter *adapter)
3010{
3011 u32 value;
3012 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
3013
3014 /* Setup GMAC gaps */
3015 if (adapter->linkspeed == LINK_1000MB) {
3016 value = ((GMCR_GAPBB_1000 << GMCR_GAPBB_SHIFT) |
3017 (GMCR_GAPR1_1000 << GMCR_GAPR1_SHIFT) |
3018 (GMCR_GAPR2_1000 << GMCR_GAPR2_SHIFT));
3019 } else {
3020 value = ((GMCR_GAPBB_100 << GMCR_GAPBB_SHIFT) |
3021 (GMCR_GAPR1_100 << GMCR_GAPR1_SHIFT) |
3022 (GMCR_GAPR2_100 << GMCR_GAPR2_SHIFT));
3023 }
3024
3025 /* enable GMII */
3026 if (adapter->linkspeed == LINK_1000MB)
3027 value |= GMCR_GBIT;
3028
3029 /* enable fullduplex */
3030 if ((adapter->linkduplex == LINK_FULLD)
3031 || (adapter->macopts & MAC_LOOPBACK)) {
3032 value |= GMCR_FULLD;
3033 }
3034
3035 /* write mac config */
3036 WRITE_REG(slic_regs->slic_wmcfg, value, FLUSH);
3037
3038 /* setup mac addresses */
3039 slic_mac_address_config(adapter);
3040}
3041
3042static bool slic_mac_filter(struct adapter *adapter,
3043 struct ether_header *ether_frame)
3044{
3045 u32 opts = adapter->macopts;
3046 u32 *dhost4 = (u32 *)&ether_frame->ether_dhost[0];
3047 u16 *dhost2 = (u16 *)&ether_frame->ether_dhost[4];
3048 bool equaladdr;
3049
3050 if (opts & MAC_PROMISC) {
3051 DBG_MSG("slicoss: %s (%s) PROMISCUOUS. Accept frame\n",
3052 __func__, adapter->netdev->name);
3053 return TRUE;
3054 }
3055
3056 if ((*dhost4 == 0xFFFFFFFF) && (*dhost2 == 0xFFFF)) {
3057 if (opts & MAC_BCAST) {
3058 adapter->rcv_broadcasts++;
3059 return TRUE;
3060 } else {
3061 return FALSE;
3062 }
3063 }
3064
3065 if (ether_frame->ether_dhost[0] & 0x01) {
3066 if (opts & MAC_ALLMCAST) {
3067 adapter->rcv_multicasts++;
3068 adapter->stats.multicast++;
3069 return TRUE;
3070 }
3071 if (opts & MAC_MCAST) {
3072 struct mcast_address *mcaddr = adapter->mcastaddrs;
3073
3074 while (mcaddr) {
3075 ETHER_EQ_ADDR(mcaddr->address,
3076 ether_frame->ether_dhost,
3077 equaladdr);
3078 if (equaladdr) {
3079 adapter->rcv_multicasts++;
3080 adapter->stats.multicast++;
3081 return TRUE;
3082 }
3083 mcaddr = mcaddr->next;
3084 }
3085 return FALSE;
3086 } else {
3087 return FALSE;
3088 }
3089 }
3090 if (opts & MAC_DIRECTED) {
3091 adapter->rcv_unicasts++;
3092 return TRUE;
3093 }
3094 return FALSE;
3095
3096}
3097
3098static int slic_mac_set_address(struct net_device *dev, void *ptr)
3099{
3100 struct adapter *adapter = (struct adapter *)netdev_priv(dev);
3101 struct sockaddr *addr = ptr;
3102
3103 DBG_MSG("%s ENTER (%s)\n", __func__, adapter->netdev->name);
3104
3105 if (netif_running(dev))
3106 return -EBUSY;
3107 if (!adapter)
3108 return -EBUSY;
3109 DBG_MSG("slicoss: %s (%s) curr %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3110 __func__, adapter->netdev->name, adapter->currmacaddr[0],
3111 adapter->currmacaddr[1], adapter->currmacaddr[2],
3112 adapter->currmacaddr[3], adapter->currmacaddr[4],
3113 adapter->currmacaddr[5]);
3114 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
3115 memcpy(adapter->currmacaddr, addr->sa_data, dev->addr_len);
3116 DBG_MSG("slicoss: %s (%s) new %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3117 __func__, adapter->netdev->name, adapter->currmacaddr[0],
3118 adapter->currmacaddr[1], adapter->currmacaddr[2],
3119 adapter->currmacaddr[3], adapter->currmacaddr[4],
3120 adapter->currmacaddr[5]);
3121
3122 slic_config_set(adapter, TRUE);
3123 return 0;
3124}
3125
3126/*
3127 * slic_timer_get_stats
3128 *
3129 * Timer function used to suck the statistics out of the card every
3130 * 50 seconds or whatever STATS_TIMER_INTERVAL is set to.
3131 *
3132 */
3133#if SLIC_GET_STATS_TIMER_ENABLED
3134static void slic_timer_get_stats(ulong dev)
3135{
3136 struct adapter *adapter;
3137 struct sliccard *card;
3138 struct slic_shmem *pshmem;
3139
3140 ASSERT(dev);
3141 adapter = (struct adapter *)((struct net_device *)dev)->priv;
3142 ASSERT(adapter);
3143 card = adapter->card;
3144 ASSERT(card);
3145
3146 if ((card->state == CARD_UP) &&
3147 (adapter->state == ADAPT_UP) && (adapter->linkstate == LINK_UP)) {
3148 pshmem = (struct slic_shmem *)adapter->phys_shmem;
3149#ifdef CONFIG_X86_64
3150 slic_upr_request(adapter,
3151 SLIC_UPR_STATS,
3152 SLIC_GET_ADDR_LOW(&pshmem->inicstats),
3153 SLIC_GET_ADDR_HIGH(&pshmem->inicstats), 0, 0);
3154#elif defined(CONFIG_X86)
3155 slic_upr_request(adapter,
3156 SLIC_UPR_STATS,
3157 (u32) &pshmem->inicstats, 0, 0, 0);
3158#else
3159 Stop compilation;
3160#endif
3161 } else {
3162/* DBG_MSG ("slicoss: %s adapter[%p] linkstate[%x] NOT UP!\n",
3163 __func__, adapter, adapter->linkstate); */
3164 }
3165 adapter->statstimer.expires = jiffies +
3166 SLIC_SECS_TO_JIFFS(STATS_TIMER_INTERVAL);
3167 add_timer(&adapter->statstimer);
3168}
3169#endif
3170static void slic_timer_load_check(ulong cardaddr)
3171{
3172 struct sliccard *card = (struct sliccard *)cardaddr;
3173 struct adapter *adapter = card->master;
3174 u32 load = card->events;
3175 u32 level = 0;
3176
3177 if ((adapter) && (adapter->state == ADAPT_UP) &&
3178 (card->state == CARD_UP) && (slic_global.dynamic_intagg)) {
3179 if (adapter->devid == SLIC_1GB_DEVICE_ID) {
3180 if (adapter->linkspeed == LINK_1000MB)
3181 level = 100;
3182 else {
3183 if (load > SLIC_LOAD_5)
3184 level = SLIC_INTAGG_5;
3185 else if (load > SLIC_LOAD_4)
3186 level = SLIC_INTAGG_4;
3187 else if (load > SLIC_LOAD_3)
3188 level = SLIC_INTAGG_3;
3189 else if (load > SLIC_LOAD_2)
3190 level = SLIC_INTAGG_2;
3191 else if (load > SLIC_LOAD_1)
3192 level = SLIC_INTAGG_1;
3193 else
3194 level = SLIC_INTAGG_0;
3195 }
3196 if (card->loadlevel_current != level) {
3197 card->loadlevel_current = level;
3198 WRITE_REG(adapter->slic_regs->slic_intagg,
3199 level, FLUSH);
3200 }
3201 } else {
3202 if (load > SLIC_LOAD_5)
3203 level = SLIC_INTAGG_5;
3204 else if (load > SLIC_LOAD_4)
3205 level = SLIC_INTAGG_4;
3206 else if (load > SLIC_LOAD_3)
3207 level = SLIC_INTAGG_3;
3208 else if (load > SLIC_LOAD_2)
3209 level = SLIC_INTAGG_2;
3210 else if (load > SLIC_LOAD_1)
3211 level = SLIC_INTAGG_1;
3212 else
3213 level = SLIC_INTAGG_0;
3214 if (card->loadlevel_current != level) {
3215 card->loadlevel_current = level;
3216 WRITE_REG(adapter->slic_regs->slic_intagg,
3217 level, FLUSH);
3218 }
3219 }
3220 }
3221 card->events = 0;
3222 card->loadtimer.expires =
3223 jiffies + SLIC_SECS_TO_JIFFS(SLIC_LOADTIMER_PERIOD);
3224 add_timer(&card->loadtimer);
3225}
3226
3227static void slic_assert_fail(void)
3228{
3229 u32 cpuid;
3230 u32 curr_pid;
3231 cpuid = smp_processor_id();
3232 curr_pid = current->pid;
3233
3234 DBG_ERROR("%s CPU # %d ---- PID # %d\n", __func__, cpuid, curr_pid);
3235}
3236
3237static int slic_upr_queue_request(struct adapter *adapter,
3238 u32 upr_request,
3239 u32 upr_data,
3240 u32 upr_data_h,
3241 u32 upr_buffer, u32 upr_buffer_h)
3242{
3243 struct slic_upr *upr;
3244 struct slic_upr *uprqueue;
3245
3246 upr = kmalloc(sizeof(struct slic_upr), GFP_ATOMIC);
3247 if (!upr) {
3248 DBG_MSG("%s COULD NOT ALLOCATE UPR MEM\n", __func__);
3249
3250 return -ENOMEM;
3251 }
3252 upr->adapter = adapter->port;
3253 upr->upr_request = upr_request;
3254 upr->upr_data = upr_data;
3255 upr->upr_buffer = upr_buffer;
3256 upr->upr_data_h = upr_data_h;
3257 upr->upr_buffer_h = upr_buffer_h;
3258 upr->next = NULL;
3259 if (adapter->upr_list) {
3260 uprqueue = adapter->upr_list;
3261
3262 while (uprqueue->next)
3263 uprqueue = uprqueue->next;
3264 uprqueue->next = upr;
3265 } else {
3266 adapter->upr_list = upr;
3267 }
3268 return STATUS_SUCCESS;
3269}
3270
3271static int slic_upr_request(struct adapter *adapter,
3272 u32 upr_request,
3273 u32 upr_data,
3274 u32 upr_data_h,
3275 u32 upr_buffer, u32 upr_buffer_h)
3276{
3277 int status;
3278
3279 spin_lock_irqsave(&adapter->upr_lock.lock, adapter->upr_lock.flags);
3280 status = slic_upr_queue_request(adapter,
3281 upr_request,
3282 upr_data,
3283 upr_data_h, upr_buffer, upr_buffer_h);
3284 if (status != STATUS_SUCCESS) {
3285 spin_unlock_irqrestore(&adapter->upr_lock.lock,
3286 adapter->upr_lock.flags);
3287 return status;
3288 }
3289 slic_upr_start(adapter);
3290 spin_unlock_irqrestore(&adapter->upr_lock.lock,
3291 adapter->upr_lock.flags);
3292 return STATUS_PENDING;
3293}
3294
3295static void slic_upr_request_complete(struct adapter *adapter, u32 isr)
3296{
3297 struct sliccard *card = adapter->card;
3298 struct slic_upr *upr;
3299
3300/* if (card->dump_requested) {
3301 DBG_MSG("ENTER slic_upr_request_complete Dump in progress ISR[%x]\n",
3302 isr);
3303 } */
3304 spin_lock_irqsave(&adapter->upr_lock.lock, adapter->upr_lock.flags);
3305 upr = adapter->upr_list;
3306 if (!upr) {
3307 ASSERT(0);
3308 spin_unlock_irqrestore(&adapter->upr_lock.lock,
3309 adapter->upr_lock.flags);
3310 return;
3311 }
3312 adapter->upr_list = upr->next;
3313 upr->next = NULL;
3314 adapter->upr_busy = 0;
3315 ASSERT(adapter->port == upr->adapter);
3316 switch (upr->upr_request) {
3317 case SLIC_UPR_STATS:
3318 {
3319#if SLIC_GET_STATS_ENABLED
3320 struct slic_stats *slicstats =
3321 (struct slic_stats *) &adapter->pshmem->inicstats;
3322 struct slic_stats *newstats = slicstats;
3323 struct slic_stats *old = &adapter->inicstats_prev;
3324 struct slicnet_stats *stst = &adapter->slic_stats;
3325#endif
3326 if (isr & ISR_UPCERR) {
3327 DBG_ERROR
3328 ("SLIC_UPR_STATS command failed isr[%x]\n",
3329 isr);
3330
3331 break;
3332 }
3333#if SLIC_GET_STATS_ENABLED
3334/* DBG_MSG ("slicoss: %s rcv %lx:%lx:%lx:%lx:%lx %lx %lx "
3335 "xmt %lx:%lx:%lx:%lx:%lx %lx %lx\n",
3336 __func__,
3337 slicstats->rcv_unicasts100,
3338 slicstats->rcv_bytes100,
3339 slicstats->rcv_bytes100,
3340 slicstats->rcv_tcp_bytes100,
3341 slicstats->rcv_tcp_segs100,
3342 slicstats->rcv_other_error100,
3343 slicstats->rcv_drops100,
3344 slicstats->xmit_unicasts100,
3345 slicstats->xmit_bytes100,
3346 slicstats->xmit_bytes100,
3347 slicstats->xmit_tcp_bytes100,
3348 slicstats->xmit_tcp_segs100,
3349 slicstats->xmit_other_error100,
3350 slicstats->xmit_collisions100);*/
3351 UPDATE_STATS_GB(stst->tcp.xmit_tcp_segs,
3352 newstats->xmit_tcp_segs_gb,
3353 old->xmit_tcp_segs_gb);
3354
3355 UPDATE_STATS_GB(stst->tcp.xmit_tcp_bytes,
3356 newstats->xmit_tcp_bytes_gb,
3357 old->xmit_tcp_bytes_gb);
3358
3359 UPDATE_STATS_GB(stst->tcp.rcv_tcp_segs,
3360 newstats->rcv_tcp_segs_gb,
3361 old->rcv_tcp_segs_gb);
3362
3363 UPDATE_STATS_GB(stst->tcp.rcv_tcp_bytes,
3364 newstats->rcv_tcp_bytes_gb,
3365 old->rcv_tcp_bytes_gb);
3366
3367 UPDATE_STATS_GB(stst->iface.xmt_bytes,
3368 newstats->xmit_bytes_gb,
3369 old->xmit_bytes_gb);
3370
3371 UPDATE_STATS_GB(stst->iface.xmt_ucast,
3372 newstats->xmit_unicasts_gb,
3373 old->xmit_unicasts_gb);
3374
3375 UPDATE_STATS_GB(stst->iface.rcv_bytes,
3376 newstats->rcv_bytes_gb,
3377 old->rcv_bytes_gb);
3378
3379 UPDATE_STATS_GB(stst->iface.rcv_ucast,
3380 newstats->rcv_unicasts_gb,
3381 old->rcv_unicasts_gb);
3382
3383 UPDATE_STATS_GB(stst->iface.xmt_errors,
3384 newstats->xmit_collisions_gb,
3385 old->xmit_collisions_gb);
3386
3387 UPDATE_STATS_GB(stst->iface.xmt_errors,
3388 newstats->xmit_excess_collisions_gb,
3389 old->xmit_excess_collisions_gb);
3390
3391 UPDATE_STATS_GB(stst->iface.xmt_errors,
3392 newstats->xmit_other_error_gb,
3393 old->xmit_other_error_gb);
3394
3395 UPDATE_STATS_GB(stst->iface.rcv_errors,
3396 newstats->rcv_other_error_gb,
3397 old->rcv_other_error_gb);
3398
3399 UPDATE_STATS_GB(stst->iface.rcv_discards,
3400 newstats->rcv_drops_gb,
3401 old->rcv_drops_gb);
3402
3403 if (newstats->rcv_drops_gb > old->rcv_drops_gb) {
3404 adapter->rcv_drops +=
3405 (newstats->rcv_drops_gb -
3406 old->rcv_drops_gb);
3407 }
3408 memcpy(old, newstats, sizeof(struct slic_stats));
3409#endif
3410 break;
3411 }
3412 case SLIC_UPR_RLSR:
3413 slic_link_upr_complete(adapter, isr);
3414 break;
3415 case SLIC_UPR_RCONFIG:
3416 break;
3417 case SLIC_UPR_RPHY:
3418 ASSERT(0);
3419 break;
3420 case SLIC_UPR_ENLB:
3421 ASSERT(0);
3422 break;
3423 case SLIC_UPR_ENCT:
3424 ASSERT(0);
3425 break;
3426 case SLIC_UPR_PDWN:
3427 ASSERT(0);
3428 break;
3429 case SLIC_UPR_PING:
3430 card->pingstatus |= (isr & ISR_PINGDSMASK);
3431 break;
3432#if SLIC_DUMP_ENABLED
3433 case SLIC_UPR_DUMP:
3434 card->dumpstatus |= (isr & ISR_UPCMASK);
3435 break;
3436#endif
3437 default:
3438 ASSERT(0);
3439 }
3440 kfree(upr);
3441 slic_upr_start(adapter);
3442 spin_unlock_irqrestore(&adapter->upr_lock.lock,
3443 adapter->upr_lock.flags);
3444}
3445
3446static void slic_upr_start(struct adapter *adapter)
3447{
3448 struct slic_upr *upr;
3449 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
3450/*
3451 char * ptr1;
3452 char * ptr2;
3453 uint cmdoffset;
3454*/
3455 upr = adapter->upr_list;
3456 if (!upr)
3457 return;
3458 if (adapter->upr_busy)
3459 return;
3460 adapter->upr_busy = 1;
3461
3462 switch (upr->upr_request) {
3463 case SLIC_UPR_STATS:
3464 if (upr->upr_data_h == 0) {
3465 WRITE_REG(slic_regs->slic_stats, upr->upr_data, FLUSH);
3466 } else {
3467 WRITE_REG64(adapter,
3468 slic_regs->slic_stats64,
3469 upr->upr_data,
3470 slic_regs->slic_addr_upper,
3471 upr->upr_data_h, FLUSH);
3472 }
3473 break;
3474
3475 case SLIC_UPR_RLSR:
3476 WRITE_REG64(adapter,
3477 slic_regs->slic_rlsr,
3478 upr->upr_data,
3479 slic_regs->slic_addr_upper, upr->upr_data_h, FLUSH);
3480 break;
3481
3482 case SLIC_UPR_RCONFIG:
3483 DBG_MSG("%s SLIC_UPR_RCONFIG!!!!\n", __func__);
3484 DBG_MSG("WRITE_REG64 adapter[%p]\n"
3485 " a->slic_regs[%p] slic_regs[%p]\n"
3486 " &slic_rconfig[%p] &slic_addr_upper[%p]\n"
3487 " upr[%p]\n"
3488 " uprdata[%x] uprdatah[%x]\n",
3489 adapter, adapter->slic_regs, slic_regs,
3490 &slic_regs->slic_rconfig, &slic_regs->slic_addr_upper,
3491 upr, upr->upr_data, upr->upr_data_h);
3492 WRITE_REG64(adapter,
3493 slic_regs->slic_rconfig,
3494 upr->upr_data,
3495 slic_regs->slic_addr_upper, upr->upr_data_h, FLUSH);
3496 break;
3497#if SLIC_DUMP_ENABLED
3498 case SLIC_UPR_DUMP:
3499#if 0
3500 DBG_MSG("%s SLIC_UPR_DUMP!!!!\n", __func__);
3501 DBG_MSG("WRITE_REG64 adapter[%p]\n"
3502 " upr_buffer[%x] upr_bufferh[%x]\n"
3503 " upr_data[%x] upr_datah[%x]\n"
3504 " cmdbuff[%p] cmdbuffP[%p]\n"
3505 " dumpbuff[%p] dumpbuffP[%p]\n",
3506 adapter, upr->upr_buffer, upr->upr_buffer_h,
3507 upr->upr_data, upr->upr_data_h,
3508 adapter->card->cmdbuffer,
3509 (void *)adapter->card->cmdbuffer_phys,
3510 adapter->card->dumpbuffer, (
3511 void *)adapter->card->dumpbuffer_phys);
3512
3513 ptr1 = (char *)slic_regs;
3514 ptr2 = (char *)(&slic_regs->slic_dump_cmd);
3515 cmdoffset = ptr2 - ptr1;
3516 DBG_MSG("slic_dump_cmd register offset [%x]\n", cmdoffset);
3517#endif
3518 if (upr->upr_buffer || upr->upr_buffer_h) {
3519 WRITE_REG64(adapter,
3520 slic_regs->slic_dump_data,
3521 upr->upr_buffer,
3522 slic_regs->slic_addr_upper,
3523 upr->upr_buffer_h, FLUSH);
3524 }
3525 WRITE_REG64(adapter,
3526 slic_regs->slic_dump_cmd,
3527 upr->upr_data,
3528 slic_regs->slic_addr_upper, upr->upr_data_h, FLUSH);
3529 break;
3530#endif
3531 case SLIC_UPR_PING:
3532 WRITE_REG(slic_regs->slic_ping, 1, FLUSH);
3533 break;
3534 default:
3535 ASSERT(0);
3536 }
3537}
3538
3539static void slic_link_upr_complete(struct adapter *adapter, u32 isr)
3540{
3541 u32 linkstatus = adapter->pshmem->linkstatus;
3542 uint linkup;
3543 unsigned char linkspeed;
3544 unsigned char linkduplex;
3545
3546 DBG_MSG("%s: %s ISR[%x] linkstatus[%x]\n adapter[%p](%d)\n",
3547 __func__, adapter->netdev->name, isr, linkstatus, adapter,
3548 adapter->cardindex);
3549
3550 if ((isr & ISR_UPCERR) || (isr & ISR_UPCBSY)) {
3551 struct slic_shmem *pshmem;
3552
3553 pshmem = (struct slic_shmem *)adapter->phys_shmem;
3554#if defined(CONFIG_X86_64)
3555 slic_upr_queue_request(adapter,
3556 SLIC_UPR_RLSR,
3557 SLIC_GET_ADDR_LOW(&pshmem->linkstatus),
3558 SLIC_GET_ADDR_HIGH(&pshmem->linkstatus),
3559 0, 0);
3560#elif defined(CONFIG_X86)
3561 slic_upr_queue_request(adapter,
3562 SLIC_UPR_RLSR,
3563 (u32) &pshmem->linkstatus,
3564 SLIC_GET_ADDR_HIGH(pshmem), 0, 0);
3565#else
3566 Stop Compilation;
3567#endif
3568 return;
3569 }
3570 if (adapter->state != ADAPT_UP)
3571 return;
3572
3573 ASSERT((adapter->devid == SLIC_1GB_DEVICE_ID)
3574 || (adapter->devid == SLIC_2GB_DEVICE_ID));
3575
3576 linkup = linkstatus & GIG_LINKUP ? LINK_UP : LINK_DOWN;
3577 if (linkstatus & GIG_SPEED_1000) {
3578 linkspeed = LINK_1000MB;
3579 DBG_MSG("slicoss: %s (%s) GIGABIT Speed==1000MB ",
3580 __func__, adapter->netdev->name);
3581 } else if (linkstatus & GIG_SPEED_100) {
3582 linkspeed = LINK_100MB;
3583 DBG_MSG("slicoss: %s (%s) GIGABIT Speed==100MB ", __func__,
3584 adapter->netdev->name);
3585 } else {
3586 linkspeed = LINK_10MB;
3587 DBG_MSG("slicoss: %s (%s) GIGABIT Speed==10MB ", __func__,
3588 adapter->netdev->name);
3589 }
3590 if (linkstatus & GIG_FULLDUPLEX) {
3591 linkduplex = LINK_FULLD;
3592 DBG_MSG(" Duplex == FULL\n");
3593 } else {
3594 linkduplex = LINK_HALFD;
3595 DBG_MSG(" Duplex == HALF\n");
3596 }
3597
3598 if ((adapter->linkstate == LINK_DOWN) && (linkup == LINK_DOWN)) {
3599 DBG_MSG("slicoss: %s (%s) physport(%d) link still down\n",
3600 __func__, adapter->netdev->name, adapter->physport);
3601 return;
3602 }
3603
3604 /* link up event, but nothing has changed */
3605 if ((adapter->linkstate == LINK_UP) &&
3606 (linkup == LINK_UP) &&
3607 (adapter->linkspeed == linkspeed) &&
3608 (adapter->linkduplex == linkduplex)) {
3609 DBG_MSG("slicoss: %s (%s) port(%d) link still up\n",
3610 __func__, adapter->netdev->name, adapter->physport);
3611 return;
3612 }
3613
3614 /* link has changed at this point */
3615
3616 /* link has gone from up to down */
3617 if (linkup == LINK_DOWN) {
3618 adapter->linkstate = LINK_DOWN;
3619 DBG_MSG("slicoss: %s %d LinkDown!\n", __func__,
3620 adapter->physport);
3621 return;
3622 }
3623
3624 /* link has gone from down to up */
3625 adapter->linkspeed = linkspeed;
3626 adapter->linkduplex = linkduplex;
3627
3628 if (adapter->linkstate != LINK_UP) {
3629 /* setup the mac */
3630 DBG_MSG("%s call slic_config_set\n", __func__);
3631 slic_config_set(adapter, TRUE);
3632 adapter->linkstate = LINK_UP;
3633 DBG_MSG("\n(%s) Link UP: CALL slic_if_start_queue",
3634 adapter->netdev->name);
3635 slic_if_start_queue(adapter);
3636 }
3637#if 1
3638 switch (linkspeed) {
3639 case LINK_1000MB:
3640 DBG_MSG
3641 ("\n(%s) LINK UP!: GIGABIT SPEED == 1000MB duplex[%x]\n",
3642 adapter->netdev->name, adapter->linkduplex);
3643 break;
3644 case LINK_100MB:
3645 DBG_MSG("\n(%s) LINK UP!: SPEED == 100MB duplex[%x]\n",
3646 adapter->netdev->name, adapter->linkduplex);
3647 break;
3648 default:
3649 DBG_MSG("\n(%s) LINK UP!: SPEED == 10MB duplex[%x]\n",
3650 adapter->netdev->name, adapter->linkduplex);
3651 break;
3652 }
3653#endif
3654}
3655
3656/*
3657 * this is here to checksum the eeprom, there is some ucode bug
3658 * which prevens us from using the ucode result.
3659 * remove this once ucode is fixed.
3660 */
3661static ushort slic_eeprom_cksum(char *m, int len)
3662{
3663#define ADDCARRY(x) (x > 65535 ? x -= 65535 : x)
3664#define REDUCE {l_util.l = sum; sum = l_util.s[0] + l_util.s[1]; ADDCARRY(sum);\
3665 }
3666
3667 u16 *w;
3668 u32 sum = 0;
3669 u32 byte_swapped = 0;
3670 u32 w_int;
3671
3672 union {
3673 char c[2];
3674 ushort s;
3675 } s_util;
3676
3677 union {
3678 ushort s[2];
3679 int l;
3680 } l_util;
3681
3682 l_util.l = 0;
3683 s_util.s = 0;
3684
3685 w = (u16 *)m;
3686#ifdef CONFIG_X86_64
3687 w_int = (u32) ((ulong) w & 0x00000000FFFFFFFF);
3688#else
3689 w_int = (u32) (w);
3690#endif
3691 if ((1 & w_int) && (len > 0)) {
3692 REDUCE;
3693 sum <<= 8;
3694 s_util.c[0] = *(unsigned char *)w;
3695 w = (u16 *)((char *)w + 1);
3696 len--;
3697 byte_swapped = 1;
3698 }
3699
3700 /* Unroll the loop to make overhead from branches &c small. */
3701 while ((len -= 32) >= 0) {
3702 sum += w[0];
3703 sum += w[1];
3704 sum += w[2];
3705 sum += w[3];
3706 sum += w[4];
3707 sum += w[5];
3708 sum += w[6];
3709 sum += w[7];
3710 sum += w[8];
3711 sum += w[9];
3712 sum += w[10];
3713 sum += w[11];
3714 sum += w[12];
3715 sum += w[13];
3716 sum += w[14];
3717 sum += w[15];
3718 w = (u16 *)((ulong) w + 16); /* verify */
3719 }
3720 len += 32;
3721 while ((len -= 8) >= 0) {
3722 sum += w[0];
3723 sum += w[1];
3724 sum += w[2];
3725 sum += w[3];
3726 w = (u16 *)((ulong) w + 4); /* verify */
3727 }
3728 len += 8;
3729 if (len != 0 || byte_swapped != 0) {
3730 REDUCE;
3731 while ((len -= 2) >= 0)
3732 sum += *w++; /* verify */
3733 if (byte_swapped) {
3734 REDUCE;
3735 sum <<= 8;
3736 byte_swapped = 0;
3737 if (len == -1) {
3738 s_util.c[1] = *(char *) w;
3739 sum += s_util.s;
3740 len = 0;
3741 } else {
3742 len = -1;
3743 }
3744
3745 } else if (len == -1) {
3746 s_util.c[0] = *(char *) w;
3747 }
3748
3749 if (len == -1) {
3750 s_util.c[1] = 0;
3751 sum += s_util.s;
3752 }
3753 }
3754 REDUCE;
3755 return (ushort) sum;
3756}
3757
3758static int slic_rspqueue_init(struct adapter *adapter)
3759{
3760 int i;
3761 struct slic_rspqueue *rspq = &adapter->rspqueue;
3762 __iomem struct slic_regs *slic_regs = adapter->slic_regs;
3763 u32 paddrh = 0;
3764
3765 DBG_MSG("slicoss: %s (%s) ENTER adapter[%p]\n", __func__,
3766 adapter->netdev->name, adapter);
3767 ASSERT(adapter->state == ADAPT_DOWN);
3768 memset(rspq, 0, sizeof(struct slic_rspqueue));
3769
3770 rspq->num_pages = SLIC_RSPQ_PAGES_GB;
3771
3772 for (i = 0; i < rspq->num_pages; i++) {
3773 rspq->vaddr[i] =
3774 pci_alloc_consistent(adapter->pcidev, PAGE_SIZE,
3775 &rspq->paddr[i]);
3776 if (!rspq->vaddr[i]) {
3777 DBG_ERROR
3778 ("rspqueue_init_failed pci_alloc_consistent\n");
3779 slic_rspqueue_free(adapter);
3780 return STATUS_FAILURE;
3781 }
3782#ifndef CONFIG_X86_64
3783 ASSERT(((u32) rspq->vaddr[i] & 0xFFFFF000) ==
3784 (u32) rspq->vaddr[i]);
3785 ASSERT(((u32) rspq->paddr[i] & 0xFFFFF000) ==
3786 (u32) rspq->paddr[i]);
3787#endif
3788 memset(rspq->vaddr[i], 0, PAGE_SIZE);
3789/* DBG_MSG("slicoss: %s UPLOAD RSPBUFF Page pageix[%x] paddr[%p] "
3790 "vaddr[%p]\n",
3791 __func__, i, (void *)rspq->paddr[i], rspq->vaddr[i]); */
3792
3793 if (paddrh == 0) {
3794 WRITE_REG(slic_regs->slic_rbar,
3795 (rspq->paddr[i] | SLIC_RSPQ_BUFSINPAGE),
3796 DONT_FLUSH);
3797 } else {
3798 WRITE_REG64(adapter,
3799 slic_regs->slic_rbar64,
3800 (rspq->paddr[i] | SLIC_RSPQ_BUFSINPAGE),
3801 slic_regs->slic_addr_upper,
3802 paddrh, DONT_FLUSH);
3803 }
3804 }
3805 rspq->offset = 0;
3806 rspq->pageindex = 0;
3807 rspq->rspbuf = (struct slic_rspbuf *)rspq->vaddr[0];
3808 DBG_MSG("slicoss: %s (%s) EXIT adapter[%p]\n", __func__,
3809 adapter->netdev->name, adapter);
3810 return STATUS_SUCCESS;
3811}
3812
3813static int slic_rspqueue_reset(struct adapter *adapter)
3814{
3815 struct slic_rspqueue *rspq = &adapter->rspqueue;
3816
3817 DBG_MSG("slicoss: %s (%s) ENTER adapter[%p]\n", __func__,
3818 adapter->netdev->name, adapter);
3819 ASSERT(adapter->state == ADAPT_DOWN);
3820 ASSERT(rspq);
3821
3822 DBG_MSG("slicoss: Nothing to do. rspq[%p]\n"
3823 " offset[%x]\n"
3824 " pageix[%x]\n"
3825 " rspbuf[%p]\n",
3826 rspq, rspq->offset, rspq->pageindex, rspq->rspbuf);
3827
3828 DBG_MSG("slicoss: %s (%s) EXIT adapter[%p]\n", __func__,
3829 adapter->netdev->name, adapter);
3830 return STATUS_SUCCESS;
3831}
3832
3833static void slic_rspqueue_free(struct adapter *adapter)
3834{
3835 int i;
3836 struct slic_rspqueue *rspq = &adapter->rspqueue;
3837
3838 DBG_MSG("slicoss: %s adapter[%p] port %d rspq[%p] FreeRSPQ\n",
3839 __func__, adapter, adapter->physport, rspq);
3840 for (i = 0; i < rspq->num_pages; i++) {
3841 if (rspq->vaddr[i]) {
3842 DBG_MSG
3843 ("slicoss: pci_free_consistent rspq->vaddr[%p] \
3844 paddr[%p]\n",
3845 rspq->vaddr[i], (void *) rspq->paddr[i]);
3846 pci_free_consistent(adapter->pcidev, PAGE_SIZE,
3847 rspq->vaddr[i], rspq->paddr[i]);
3848 }
3849 rspq->vaddr[i] = NULL;
3850 rspq->paddr[i] = 0;
3851 }
3852 rspq->offset = 0;
3853 rspq->pageindex = 0;
3854 rspq->rspbuf = NULL;
3855}
3856
3857static struct slic_rspbuf *slic_rspqueue_getnext(struct adapter *adapter)
3858{
3859 struct slic_rspqueue *rspq = &adapter->rspqueue;
3860 struct slic_rspbuf *buf;
3861
3862 if (!(rspq->rspbuf->status))
3863 return NULL;
3864
3865 buf = rspq->rspbuf;
3866#ifndef CONFIG_X86_64
3867 ASSERT((buf->status & 0xFFFFFFE0) == 0);
3868#endif
3869 ASSERT(buf->hosthandle);
3870 if (++rspq->offset < SLIC_RSPQ_BUFSINPAGE) {
3871 rspq->rspbuf++;
3872#ifndef CONFIG_X86_64
3873 ASSERT(((u32) rspq->rspbuf & 0xFFFFFFE0) ==
3874 (u32) rspq->rspbuf);
3875#endif
3876 } else {
3877 ASSERT(rspq->offset == SLIC_RSPQ_BUFSINPAGE);
3878 WRITE_REG64(adapter,
3879 adapter->slic_regs->slic_rbar64,
3880 (rspq->
3881 paddr[rspq->pageindex] | SLIC_RSPQ_BUFSINPAGE),
3882 adapter->slic_regs->slic_addr_upper, 0, DONT_FLUSH);
3883 rspq->pageindex = (++rspq->pageindex) % rspq->num_pages;
3884 rspq->offset = 0;
3885 rspq->rspbuf = (struct slic_rspbuf *)
3886 rspq->vaddr[rspq->pageindex];
3887#ifndef CONFIG_X86_64
3888 ASSERT(((u32) rspq->rspbuf & 0xFFFFF000) ==
3889 (u32) rspq->rspbuf);
3890#endif
3891 }
3892#ifndef CONFIG_X86_64
3893 ASSERT(((u32) buf & 0xFFFFFFE0) == (u32) buf);
3894#endif
3895 return buf;
3896}
3897
3898static void slic_cmdqmem_init(struct adapter *adapter)
3899{
3900 struct slic_cmdqmem *cmdqmem = &adapter->cmdqmem;
3901
3902 memset(cmdqmem, 0, sizeof(struct slic_cmdqmem));
3903}
3904
3905static void slic_cmdqmem_free(struct adapter *adapter)
3906{
3907 struct slic_cmdqmem *cmdqmem = &adapter->cmdqmem;
3908 int i;
3909
3910 DBG_MSG("slicoss: (%s) adapter[%p] port %d rspq[%p] Free CMDQ Memory\n",
3911 __func__, adapter, adapter->physport, cmdqmem);
3912 for (i = 0; i < SLIC_CMDQ_MAXPAGES; i++) {
3913 if (cmdqmem->pages[i]) {
3914 DBG_MSG("slicoss: %s Deallocate page CmdQPage[%p]\n",
3915 __func__, (void *) cmdqmem->pages[i]);
3916 pci_free_consistent(adapter->pcidev,
3917 PAGE_SIZE,
3918 (void *) cmdqmem->pages[i],
3919 cmdqmem->dma_pages[i]);
3920 }
3921 }
3922 memset(cmdqmem, 0, sizeof(struct slic_cmdqmem));
3923}
3924
3925static u32 *slic_cmdqmem_addpage(struct adapter *adapter)
3926{
3927 struct slic_cmdqmem *cmdqmem = &adapter->cmdqmem;
3928 u32 *pageaddr;
3929
3930 if (cmdqmem->pagecnt >= SLIC_CMDQ_MAXPAGES)
3931 return NULL;
3932 pageaddr = pci_alloc_consistent(adapter->pcidev,
3933 PAGE_SIZE,
3934 &cmdqmem->dma_pages[cmdqmem->pagecnt]);
3935 if (!pageaddr)
3936 return NULL;
3937#ifndef CONFIG_X86_64
3938 ASSERT(((u32) pageaddr & 0xFFFFF000) == (u32) pageaddr);
3939#endif
3940 cmdqmem->pages[cmdqmem->pagecnt] = pageaddr;
3941 cmdqmem->pagecnt++;
3942 return pageaddr;
3943}
3944
3945static int slic_cmdq_init(struct adapter *adapter)
3946{
3947 int i;
3948 u32 *pageaddr;
3949
3950 DBG_MSG("slicoss: %s ENTER adapter[%p]\n", __func__, adapter);
3951 ASSERT(adapter->state == ADAPT_DOWN);
3952 memset(&adapter->cmdq_all, 0, sizeof(struct slic_cmdqueue));
3953 memset(&adapter->cmdq_free, 0, sizeof(struct slic_cmdqueue));
3954 memset(&adapter->cmdq_done, 0, sizeof(struct slic_cmdqueue));
3955 spin_lock_init(&adapter->cmdq_all.lock.lock);
3956 spin_lock_init(&adapter->cmdq_free.lock.lock);
3957 spin_lock_init(&adapter->cmdq_done.lock.lock);
3958 slic_cmdqmem_init(adapter);
3959 adapter->slic_handle_ix = 1;
3960 for (i = 0; i < SLIC_CMDQ_INITPAGES; i++) {
3961 pageaddr = slic_cmdqmem_addpage(adapter);
3962#ifndef CONFIG_X86_64
3963 ASSERT(((u32) pageaddr & 0xFFFFF000) == (u32) pageaddr);
3964#endif
3965 if (!pageaddr) {
3966 slic_cmdq_free(adapter);
3967 return STATUS_FAILURE;
3968 }
3969 slic_cmdq_addcmdpage(adapter, pageaddr);
3970 }
3971 adapter->slic_handle_ix = 1;
3972 DBG_MSG("slicoss: %s reset slic_handle_ix to ONE\n", __func__);
3973
3974 return STATUS_SUCCESS;
3975}
3976
3977static void slic_cmdq_free(struct adapter *adapter)
3978{
3979 struct slic_hostcmd *cmd;
3980
3981 DBG_MSG("slicoss: %s adapter[%p] port %d FreeCommandsFrom CMDQ\n",
3982 __func__, adapter, adapter->physport);
3983 cmd = adapter->cmdq_all.head;
3984 while (cmd) {
3985 if (cmd->busy) {
3986 struct sk_buff *tempskb;
3987
3988 tempskb = cmd->skb;
3989 if (tempskb) {
3990 cmd->skb = NULL;
3991 dev_kfree_skb_irq(tempskb);
3992 }
3993 }
3994 cmd = cmd->next_all;
3995 }
3996 memset(&adapter->cmdq_all, 0, sizeof(struct slic_cmdqueue));
3997 memset(&adapter->cmdq_free, 0, sizeof(struct slic_cmdqueue));
3998 memset(&adapter->cmdq_done, 0, sizeof(struct slic_cmdqueue));
3999 slic_cmdqmem_free(adapter);
4000}
4001
4002static void slic_cmdq_reset(struct adapter *adapter)
4003{
4004 struct slic_hostcmd *hcmd;
4005 struct sk_buff *skb;
4006 u32 outstanding;
4007
4008 DBG_MSG("%s ENTER adapter[%p]\n", __func__, adapter);
4009 spin_lock_irqsave(&adapter->cmdq_free.lock.lock,
4010 adapter->cmdq_free.lock.flags);
4011 spin_lock_irqsave(&adapter->cmdq_done.lock.lock,
4012 adapter->cmdq_done.lock.flags);
4013 outstanding = adapter->cmdq_all.count - adapter->cmdq_done.count;
4014 outstanding -= adapter->cmdq_free.count;
4015 hcmd = adapter->cmdq_all.head;
4016 while (hcmd) {
4017 if (hcmd->busy) {
4018 skb = hcmd->skb;
4019 ASSERT(skb);
4020 DBG_MSG("slicoss: %s hcmd[%p] skb[%p] ", __func__,
4021 hcmd, skb);
4022 hcmd->busy = 0;
4023 hcmd->skb = NULL;
4024 DBG_MSG(" Free SKB\n");
4025 dev_kfree_skb_irq(skb);
4026 }
4027 hcmd = hcmd->next_all;
4028 }
4029 adapter->cmdq_free.count = 0;
4030 adapter->cmdq_free.head = NULL;
4031 adapter->cmdq_free.tail = NULL;
4032 adapter->cmdq_done.count = 0;
4033 adapter->cmdq_done.head = NULL;
4034 adapter->cmdq_done.tail = NULL;
4035 adapter->cmdq_free.head = adapter->cmdq_all.head;
4036 hcmd = adapter->cmdq_all.head;
4037 while (hcmd) {
4038 adapter->cmdq_free.count++;
4039 hcmd->next = hcmd->next_all;
4040 hcmd = hcmd->next_all;
4041 }
4042 if (adapter->cmdq_free.count != adapter->cmdq_all.count) {
4043 DBG_ERROR("%s free_count %d != all count %d\n", __func__,
4044 adapter->cmdq_free.count, adapter->cmdq_all.count);
4045 }
4046 spin_unlock_irqrestore(&adapter->cmdq_done.lock.lock,
4047 adapter->cmdq_done.lock.flags);
4048 spin_unlock_irqrestore(&adapter->cmdq_free.lock.lock,
4049 adapter->cmdq_free.lock.flags);
4050 DBG_MSG("%s EXIT adapter[%p]\n", __func__, adapter);
4051}
4052
4053static void slic_cmdq_addcmdpage(struct adapter *adapter, u32 *page)
4054{
4055 struct slic_hostcmd *cmd;
4056 struct slic_hostcmd *prev;
4057 struct slic_hostcmd *tail;
4058 struct slic_cmdqueue *cmdq;
4059 int cmdcnt;
4060 void *cmdaddr;
4061 ulong phys_addr;
4062 u32 phys_addrl;
4063 u32 phys_addrh;
4064 struct slic_handle *pslic_handle;
4065
4066 cmdaddr = page;
4067 cmd = (struct slic_hostcmd *)cmdaddr;
4068/* DBG_MSG("CMDQ Page addr[%p] ix[%d] pfree[%p]\n", cmdaddr, slic_handle_ix,
4069 adapter->pfree_slic_handles); */
4070 cmdcnt = 0;
4071
4072 phys_addr = virt_to_bus((void *)page);
4073 phys_addrl = SLIC_GET_ADDR_LOW(phys_addr);
4074 phys_addrh = SLIC_GET_ADDR_HIGH(phys_addr);
4075
4076 prev = NULL;
4077 tail = cmd;
4078 while ((cmdcnt < SLIC_CMDQ_CMDSINPAGE) &&
4079 (adapter->slic_handle_ix < 256)) {
4080 /* Allocate and initialize a SLIC_HANDLE for this command */
4081 SLIC_GET_SLIC_HANDLE(adapter, pslic_handle);
4082 if (pslic_handle == NULL)
4083 ASSERT(0);
4084 ASSERT(pslic_handle ==
4085 &adapter->slic_handles[pslic_handle->token.
4086 handle_index]);
4087 pslic_handle->type = SLIC_HANDLE_CMD;
4088 pslic_handle->address = (void *) cmd;
4089 pslic_handle->offset = (ushort) adapter->slic_handle_ix++;
4090 pslic_handle->other_handle = NULL;
4091 pslic_handle->next = NULL;
4092
4093 cmd->pslic_handle = pslic_handle;
4094 cmd->cmd64.hosthandle = pslic_handle->token.handle_token;
4095 cmd->busy = FALSE;
4096 cmd->paddrl = phys_addrl;
4097 cmd->paddrh = phys_addrh;
4098 cmd->next_all = prev;
4099 cmd->next = prev;
4100 prev = cmd;
4101 phys_addrl += SLIC_HOSTCMD_SIZE;
4102 cmdaddr += SLIC_HOSTCMD_SIZE;
4103
4104 cmd = (struct slic_hostcmd *)cmdaddr;
4105 cmdcnt++;
4106 }
4107
4108 cmdq = &adapter->cmdq_all;
4109 cmdq->count += cmdcnt; /* SLIC_CMDQ_CMDSINPAGE; mooktodo */
4110 tail->next_all = cmdq->head;
4111 ASSERT(VALID_ADDRESS(prev));
4112 cmdq->head = prev;
4113 cmdq = &adapter->cmdq_free;
4114 spin_lock_irqsave(&cmdq->lock.lock, cmdq->lock.flags);
4115 cmdq->count += cmdcnt; /* SLIC_CMDQ_CMDSINPAGE; mooktodo */
4116 tail->next = cmdq->head;
4117 ASSERT(VALID_ADDRESS(prev));
4118 cmdq->head = prev;
4119 spin_unlock_irqrestore(&cmdq->lock.lock, cmdq->lock.flags);
4120}
4121
4122static struct slic_hostcmd *slic_cmdq_getfree(struct adapter *adapter)
4123{
4124 struct slic_cmdqueue *cmdq = &adapter->cmdq_free;
4125 struct slic_hostcmd *cmd = NULL;
4126
4127lock_and_retry:
4128 spin_lock_irqsave(&cmdq->lock.lock, cmdq->lock.flags);
4129retry:
4130 cmd = cmdq->head;
4131 if (cmd) {
4132 cmdq->head = cmd->next;
4133 cmdq->count--;
4134 spin_unlock_irqrestore(&cmdq->lock.lock, cmdq->lock.flags);
4135 } else {
4136 slic_cmdq_getdone(adapter);
4137 cmd = cmdq->head;
4138 if (cmd) {
4139 goto retry;
4140 } else {
4141 u32 *pageaddr;
4142
4143 spin_unlock_irqrestore(&cmdq->lock.lock,
4144 cmdq->lock.flags);
4145 pageaddr = slic_cmdqmem_addpage(adapter);
4146 if (pageaddr) {
4147 slic_cmdq_addcmdpage(adapter, pageaddr);
4148 goto lock_and_retry;
4149 }
4150 }
4151 }
4152 return cmd;
4153}
4154
4155static void slic_cmdq_getdone(struct adapter *adapter)
4156{
4157 struct slic_cmdqueue *done_cmdq = &adapter->cmdq_done;
4158 struct slic_cmdqueue *free_cmdq = &adapter->cmdq_free;
4159
4160 ASSERT(free_cmdq->head == NULL);
4161 spin_lock_irqsave(&done_cmdq->lock.lock, done_cmdq->lock.flags);
4162 ASSERT(VALID_ADDRESS(done_cmdq->head));
4163
4164 free_cmdq->head = done_cmdq->head;
4165 free_cmdq->count = done_cmdq->count;
4166 done_cmdq->head = NULL;
4167 done_cmdq->tail = NULL;
4168 done_cmdq->count = 0;
4169 spin_unlock_irqrestore(&done_cmdq->lock.lock, done_cmdq->lock.flags);
4170}
4171
4172static void slic_cmdq_putdone_irq(struct adapter *adapter,
4173 struct slic_hostcmd *cmd)
4174{
4175 struct slic_cmdqueue *cmdq = &adapter->cmdq_done;
4176
4177 spin_lock(&cmdq->lock.lock);
4178 cmd->busy = 0;
4179 ASSERT(VALID_ADDRESS(cmdq->head));
4180 cmd->next = cmdq->head;
4181 ASSERT(VALID_ADDRESS(cmd));
4182 cmdq->head = cmd;
4183 cmdq->count++;
4184 if ((adapter->xmitq_full) && (cmdq->count > 10))
4185 netif_wake_queue(adapter->netdev);
4186 spin_unlock(&cmdq->lock.lock);
4187}
4188
4189static int slic_rcvqueue_init(struct adapter *adapter)
4190{
4191 int i, count;
4192 struct slic_rcvqueue *rcvq = &adapter->rcvqueue;
4193
4194 DBG_MSG("slicoss: %s ENTER adapter[%p]\n", __func__, adapter);
4195 ASSERT(adapter->state == ADAPT_DOWN);
4196 rcvq->tail = NULL;
4197 rcvq->head = NULL;
4198 rcvq->size = SLIC_RCVQ_ENTRIES;
4199 rcvq->errors = 0;
4200 rcvq->count = 0;
4201 i = (SLIC_RCVQ_ENTRIES / SLIC_RCVQ_FILLENTRIES);
4202 count = 0;
4203 while (i) {
4204 count += slic_rcvqueue_fill(adapter);
4205 i--;
4206 }
4207 if (rcvq->count < SLIC_RCVQ_MINENTRIES) {
4208 slic_rcvqueue_free(adapter);
4209 return STATUS_FAILURE;
4210 }
4211 DBG_MSG("slicoss: %s EXIT adapter[%p]\n", __func__, adapter);
4212 return STATUS_SUCCESS;
4213}
4214
4215static int slic_rcvqueue_reset(struct adapter *adapter)
4216{
4217 struct slic_rcvqueue *rcvq = &adapter->rcvqueue;
4218
4219 DBG_MSG("slicoss: %s ENTER adapter[%p]\n", __func__, adapter);
4220 ASSERT(adapter->state == ADAPT_DOWN);
4221 ASSERT(rcvq);
4222
4223 DBG_MSG("slicoss: Nothing to do. rcvq[%p]\n"
4224 " count[%x]\n"
4225 " head[%p]\n"
4226 " tail[%p]\n",
4227 rcvq, rcvq->count, rcvq->head, rcvq->tail);
4228
4229 DBG_MSG("slicoss: %s EXIT adapter[%p]\n", __func__, adapter);
4230 return STATUS_SUCCESS;
4231}
4232
4233static void slic_rcvqueue_free(struct adapter *adapter)
4234{
4235 struct slic_rcvqueue *rcvq = &adapter->rcvqueue;
4236 struct sk_buff *skb;
4237
4238 while (rcvq->head) {
4239 skb = rcvq->head;
4240 rcvq->head = rcvq->head->next;
4241 dev_kfree_skb(skb);
4242 }
4243 rcvq->tail = NULL;
4244 rcvq->head = NULL;
4245 rcvq->count = 0;
4246}
4247
4248static struct sk_buff *slic_rcvqueue_getnext(struct adapter *adapter)
4249{
4250 struct slic_rcvqueue *rcvq = &adapter->rcvqueue;
4251 struct sk_buff *skb;
4252 struct slic_rcvbuf *rcvbuf;
4253 int count;
4254
4255 if (rcvq->count) {
4256 skb = rcvq->head;
4257 rcvbuf = (struct slic_rcvbuf *)skb->head;
4258 ASSERT(rcvbuf);
4259
4260 if (rcvbuf->status & IRHDDR_SVALID) {
4261 rcvq->head = rcvq->head->next;
4262 skb->next = NULL;
4263 rcvq->count--;
4264 } else {
4265 skb = NULL;
4266 }
4267 } else {
4268 DBG_ERROR("RcvQ Empty!! adapter[%p] rcvq[%p] count[%x]\n",
4269 adapter, rcvq, rcvq->count);
4270 skb = NULL;
4271 }
4272 while (rcvq->count < SLIC_RCVQ_FILLTHRESH) {
4273 count = slic_rcvqueue_fill(adapter);
4274 if (!count)
4275 break;
4276 }
4277 if (skb)
4278 rcvq->errors = 0;
4279 return skb;
4280}
4281
4282static int slic_rcvqueue_fill(struct adapter *adapter)
4283{
4284 void *paddr;
4285 u32 paddrl;
4286 u32 paddrh;
4287 struct slic_rcvqueue *rcvq = &adapter->rcvqueue;
4288 int i = 0;
4289
4290 while (i < SLIC_RCVQ_FILLENTRIES) {
4291 struct slic_rcvbuf *rcvbuf;
4292 struct sk_buff *skb;
4293#ifdef KLUDGE_FOR_4GB_BOUNDARY
4294retry_rcvqfill:
4295#endif
4296 skb = alloc_skb(SLIC_RCVQ_RCVBUFSIZE, GFP_ATOMIC);
4297 if (skb) {
4298 paddr = (void *)pci_map_single(adapter->pcidev,
4299 skb->data,
4300 SLIC_RCVQ_RCVBUFSIZE,
4301 PCI_DMA_FROMDEVICE);
4302 paddrl = SLIC_GET_ADDR_LOW(paddr);
4303 paddrh = SLIC_GET_ADDR_HIGH(paddr);
4304
4305 skb->len = SLIC_RCVBUF_HEADSIZE;
4306 rcvbuf = (struct slic_rcvbuf *)skb->head;
4307 rcvbuf->status = 0;
4308 skb->next = NULL;
4309#ifdef KLUDGE_FOR_4GB_BOUNDARY
4310 if (paddrl == 0) {
4311 DBG_ERROR
4312 ("%s: LOW 32bits PHYSICAL ADDRESS == 0 "
4313 "skb[%p] PROBLEM\n"
4314 " skbdata[%p]\n"
4315 " skblen[%x]\n"
4316 " paddr[%p]\n"
4317 " paddrl[%x]\n"
4318 " paddrh[%x]\n", __func__, skb,
4319 skb->data, skb->len, paddr, paddrl,
4320 paddrh);
4321 DBG_ERROR(" rcvq->head[%p]\n"
4322 " rcvq->tail[%p]\n"
4323 " rcvq->count[%x]\n",
4324 rcvq->head, rcvq->tail, rcvq->count);
4325 DBG_ERROR("SKIP THIS SKB!!!!!!!!\n");
4326 goto retry_rcvqfill;
4327 }
4328#else
4329 if (paddrl == 0) {
4330 DBG_ERROR
4331 ("\n\n%s: LOW 32bits PHYSICAL ADDRESS == 0 "
4332 "skb[%p] GIVE TO CARD ANYWAY\n"
4333 " skbdata[%p]\n"
4334 " paddr[%p]\n"
4335 " paddrl[%x]\n"
4336 " paddrh[%x]\n", __func__, skb,
4337 skb->data, paddr, paddrl, paddrh);
4338 }
4339#endif
4340 if (paddrh == 0) {
4341 WRITE_REG(adapter->slic_regs->slic_hbar,
4342 (u32) paddrl, DONT_FLUSH);
4343 } else {
4344 WRITE_REG64(adapter,
4345 adapter->slic_regs->slic_hbar64,
4346 (u32) paddrl,
4347 adapter->slic_regs->slic_addr_upper,
4348 (u32) paddrh, DONT_FLUSH);
4349 }
4350 if (rcvq->head)
4351 rcvq->tail->next = skb;
4352 else
4353 rcvq->head = skb;
4354 rcvq->tail = skb;
4355 rcvq->count++;
4356 i++;
4357 } else {
4358 DBG_ERROR
4359 ("%s slic_rcvqueue_fill could only get [%d] "
4360 "skbuffs\n",
4361 adapter->netdev->name, i);
4362 break;
4363 }
4364 }
4365 return i;
4366}
4367
4368static u32 slic_rcvqueue_reinsert(struct adapter *adapter, struct sk_buff *skb)
4369{
4370 struct slic_rcvqueue *rcvq = &adapter->rcvqueue;
4371 void *paddr;
4372 u32 paddrl;
4373 u32 paddrh;
4374 struct slic_rcvbuf *rcvbuf = (struct slic_rcvbuf *)skb->head;
4375
4376 ASSERT(skb->len == SLIC_RCVBUF_HEADSIZE);
4377
4378 paddr = (void *)pci_map_single(adapter->pcidev, skb->head,
4379 SLIC_RCVQ_RCVBUFSIZE, PCI_DMA_FROMDEVICE);
4380 rcvbuf->status = 0;
4381 skb->next = NULL;
4382
4383 paddrl = SLIC_GET_ADDR_LOW(paddr);
4384 paddrh = SLIC_GET_ADDR_HIGH(paddr);
4385
4386 if (paddrl == 0) {
4387 DBG_ERROR
4388 ("%s: LOW 32bits PHYSICAL ADDRESS == 0 skb[%p] PROBLEM\n"
4389 " skbdata[%p]\n" " skblen[%x]\n"
4390 " paddr[%p]\n" " paddrl[%x]\n"
4391 " paddrh[%x]\n", __func__, skb, skb->data,
4392 skb->len, paddr, paddrl, paddrh);
4393 DBG_ERROR(" rcvq->head[%p]\n"
4394 " rcvq->tail[%p]\n"
4395 " rcvq->count[%x]\n", rcvq->head, rcvq->tail,
4396 rcvq->count);
4397 }
4398 if (paddrh == 0) {
4399 WRITE_REG(adapter->slic_regs->slic_hbar, (u32) paddrl,
4400 DONT_FLUSH);
4401 } else {
4402 WRITE_REG64(adapter,
4403 adapter->slic_regs->slic_hbar64,
4404 paddrl,
4405 adapter->slic_regs->slic_addr_upper,
4406 paddrh, DONT_FLUSH);
4407 }
4408 if (rcvq->head)
4409 rcvq->tail->next = skb;
4410 else
4411 rcvq->head = skb;
4412 rcvq->tail = skb;
4413 rcvq->count++;
4414 return rcvq->count;
4415}
4416
4417static int slic_debug_card_show(struct seq_file *seq, void *v)
4418{
4419#ifdef MOOKTODO
4420 int i;
4421 struct sliccard *card = seq->private;
4422 struct slic_config *config = &card->config;
4423 unsigned char *fru = (unsigned char *)(&card->config.atk_fru);
4424 unsigned char *oemfru = (unsigned char *)(&card->config.OemFru);
4425#endif
4426
4427 seq_printf(seq, "driver_version : %s", slic_proc_version);
4428 seq_printf(seq, "Microcode versions: \n");
4429 seq_printf(seq, " Gigabit (gb) : %s %s\n",
4430 MOJAVE_UCODE_VERS_STRING, MOJAVE_UCODE_VERS_DATE);
4431 seq_printf(seq, " Gigabit Receiver : %s %s\n",
4432 GB_RCVUCODE_VERS_STRING, GB_RCVUCODE_VERS_DATE);
4433 seq_printf(seq, "Vendor : %s\n", slic_vendor);
4434 seq_printf(seq, "Product Name : %s\n", slic_product_name);
4435#ifdef MOOKTODO
4436 seq_printf(seq, "VendorId : %4.4X\n",
4437 config->VendorId);
4438 seq_printf(seq, "DeviceId : %4.4X\n",
4439 config->DeviceId);
4440 seq_printf(seq, "RevisionId : %2.2x\n",
4441 config->RevisionId);
4442 seq_printf(seq, "Bus # : %d\n", card->busnumber);
4443 seq_printf(seq, "Device # : %d\n", card->slotnumber);
4444 seq_printf(seq, "Interfaces : %d\n", card->card_size);
4445 seq_printf(seq, " Initialized : %d\n",
4446 card->adapters_activated);
4447 seq_printf(seq, " Allocated : %d\n",
4448 card->adapters_allocated);
4449 ASSERT(card->card_size <= SLIC_NBR_MACS);
4450 for (i = 0; i < card->card_size; i++) {
4451 seq_printf(seq,
4452 " MAC%d : %2.2X %2.2X %2.2X %2.2X %2.2X %2.2X\n",
4453 i, config->macinfo[i].macaddrA[0],
4454 config->macinfo[i].macaddrA[1],
4455 config->macinfo[i].macaddrA[2],
4456 config->macinfo[i].macaddrA[3],
4457 config->macinfo[i].macaddrA[4],
4458 config->macinfo[i].macaddrA[5]);
4459 }
4460 seq_printf(seq, " IF Init State Duplex/Speed irq\n");
4461 seq_printf(seq, " -------------------------------\n");
4462 for (i = 0; i < card->adapters_allocated; i++) {
4463 struct adapter *adapter;
4464
4465 adapter = card->adapter[i];
4466 if (adapter) {
4467 seq_printf(seq,
4468 " %d %d %s %s %s 0x%X\n",
4469 adapter->physport, adapter->state,
4470 SLIC_LINKSTATE(adapter->linkstate),
4471 SLIC_DUPLEX(adapter->linkduplex),
4472 SLIC_SPEED(adapter->linkspeed),
4473 (uint) adapter->irq);
4474 }
4475 }
4476 seq_printf(seq, "Generation # : %4.4X\n", card->gennumber);
4477 seq_printf(seq, "RcvQ max entries : %4.4X\n",
4478 SLIC_RCVQ_ENTRIES);
4479 seq_printf(seq, "Ping Status : %8.8X\n",
4480 card->pingstatus);
4481 seq_printf(seq, "Minimum grant : %2.2x\n",
4482 config->MinGrant);
4483 seq_printf(seq, "Maximum Latency : %2.2x\n", config->MaxLat);
4484 seq_printf(seq, "PciStatus : %4.4x\n",
4485 config->Pcistatus);
4486 seq_printf(seq, "Debug Device Id : %4.4x\n",
4487 config->DbgDevId);
4488 seq_printf(seq, "DRAM ROM Function : %4.4x\n",
4489 config->DramRomFn);
4490 seq_printf(seq, "Network interface Pin 1 : %2.2x\n",
4491 config->NetIntPin1);
4492 seq_printf(seq, "Network interface Pin 2 : %2.2x\n",
4493 config->NetIntPin1);
4494 seq_printf(seq, "Network interface Pin 3 : %2.2x\n",
4495 config->NetIntPin1);
4496 seq_printf(seq, "PM capabilities : %4.4X\n",
4497 config->PMECapab);
4498 seq_printf(seq, "Network Clock Controls : %4.4X\n",
4499 config->NwClkCtrls);
4500
4501 switch (config->FruFormat) {
4502 case ATK_FRU_FORMAT:
4503 {
4504 seq_printf(seq,
4505 "Vendor : Alacritech, Inc.\n");
4506 seq_printf(seq,
4507 "Assembly # : %c%c%c%c%c%c\n",
4508 fru[0], fru[1], fru[2], fru[3], fru[4],
4509 fru[5]);
4510 seq_printf(seq,
4511 "Revision # : %c%c\n",
4512 fru[6], fru[7]);
4513
4514 if (config->OEMFruFormat == VENDOR4_FRU_FORMAT) {
4515 seq_printf(seq,
4516 "Serial # : "
4517 "%c%c%c%c%c%c%c%c%c%c%c%c\n",
4518 fru[8], fru[9], fru[10],
4519 fru[11], fru[12], fru[13],
4520 fru[16], fru[17], fru[18],
4521 fru[19], fru[20], fru[21]);
4522 } else {
4523 seq_printf(seq,
4524 "Serial # : "
4525 "%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",
4526 fru[8], fru[9], fru[10],
4527 fru[11], fru[12], fru[13],
4528 fru[14], fru[15], fru[16],
4529 fru[17], fru[18], fru[19],
4530 fru[20], fru[21]);
4531 }
4532 break;
4533 }
4534
4535 default:
4536 {
4537 seq_printf(seq,
4538 "Vendor : Alacritech, Inc.\n");
4539 seq_printf(seq,
4540 "Serial # : Empty FRU\n");
4541 break;
4542 }
4543 }
4544
4545 switch (config->OEMFruFormat) {
4546 case VENDOR1_FRU_FORMAT:
4547 {
4548 seq_printf(seq, "FRU Information:\n");
4549 seq_printf(seq, " Commodity # : %c\n",
4550 oemfru[0]);
4551 seq_printf(seq,
4552 " Assembly # : %c%c%c%c\n",
4553 oemfru[1], oemfru[2], oemfru[3], oemfru[4]);
4554 seq_printf(seq,
4555 " Revision # : %c%c\n",
4556 oemfru[5], oemfru[6]);
4557 seq_printf(seq,
4558 " Supplier # : %c%c\n",
4559 oemfru[7], oemfru[8]);
4560 seq_printf(seq,
4561 " Date : %c%c\n",
4562 oemfru[9], oemfru[10]);
4563 seq_sprintf(seq,
4564 " Sequence # : %c%c%c\n",
4565 oemfru[11], oemfru[12], oemfru[13]);
4566 break;
4567 }
4568
4569 case VENDOR2_FRU_FORMAT:
4570 {
4571 seq_printf(seq, "FRU Information:\n");
4572 seq_printf(seq,
4573 " Part # : "
4574 "%c%c%c%c%c%c%c%c\n",
4575 oemfru[0], oemfru[1], oemfru[2],
4576 oemfru[3], oemfru[4], oemfru[5],
4577 oemfru[6], oemfru[7]);
4578 seq_printf(seq,
4579 " Supplier # : %c%c%c%c%c\n",
4580 oemfru[8], oemfru[9], oemfru[10],
4581 oemfru[11], oemfru[12]);
4582 seq_printf(seq,
4583 " Date : %c%c%c\n",
4584 oemfru[13], oemfru[14], oemfru[15]);
4585 seq_sprintf(seq,
4586 " Sequence # : %c%c%c%c\n",
4587 oemfru[16], oemfru[17], oemfru[18],
4588 oemfru[19]);
4589 break;
4590 }
4591
4592 case VENDOR3_FRU_FORMAT:
4593 {
4594 seq_printf(seq, "FRU Information:\n");
4595 }
4596
4597 case VENDOR4_FRU_FORMAT:
4598 {
4599 seq_printf(seq, "FRU Information:\n");
4600 seq_printf(seq,
4601 " FRU Number : "
4602 "%c%c%c%c%c%c%c%c\n",
4603 oemfru[0], oemfru[1], oemfru[2],
4604 oemfru[3], oemfru[4], oemfru[5],
4605 oemfru[6], oemfru[7]);
4606 seq_sprintf(seq,
4607 " Part Number : "
4608 "%c%c%c%c%c%c%c%c\n",
4609 oemfru[8], oemfru[9], oemfru[10],
4610 oemfru[11], oemfru[12], oemfru[13],
4611 oemfru[14], oemfru[15]);
4612 seq_printf(seq,
4613 " EC Level : "
4614 "%c%c%c%c%c%c%c%c\n",
4615 oemfru[16], oemfru[17], oemfru[18],
4616 oemfru[19], oemfru[20], oemfru[21],
4617 oemfru[22], oemfru[23]);
4618 break;
4619 }
4620
4621 default:
4622 break;
4623 }
4624#endif
4625
4626 return 0;
4627}
4628
4629static int slic_debug_adapter_show(struct seq_file *seq, void *v)
4630{
4631 struct adapter *adapter = seq->private;
4632
4633 if ((adapter->netdev) && (adapter->netdev->name)) {
4634 seq_printf(seq, "info: interface : %s\n",
4635 adapter->netdev->name);
4636 }
4637 seq_printf(seq, "info: status : %s\n",
4638 SLIC_LINKSTATE(adapter->linkstate));
4639 seq_printf(seq, "info: port : %d\n",
4640 adapter->physport);
4641 seq_printf(seq, "info: speed : %s\n",
4642 SLIC_SPEED(adapter->linkspeed));
4643 seq_printf(seq, "info: duplex : %s\n",
4644 SLIC_DUPLEX(adapter->linkduplex));
4645 seq_printf(seq, "info: irq : 0x%X\n",
4646 (uint) adapter->irq);
4647 seq_printf(seq, "info: Interrupt Agg Delay: %d usec\n",
4648 adapter->card->loadlevel_current);
4649 seq_printf(seq, "info: RcvQ max entries : %4.4X\n",
4650 SLIC_RCVQ_ENTRIES);
4651 seq_printf(seq, "info: RcvQ current : %4.4X\n",
4652 adapter->rcvqueue.count);
4653 seq_printf(seq, "rx stats: packets : %8.8lX\n",
4654 adapter->stats.rx_packets);
4655 seq_printf(seq, "rx stats: bytes : %8.8lX\n",
4656 adapter->stats.rx_bytes);
4657 seq_printf(seq, "rx stats: broadcasts : %8.8X\n",
4658 adapter->rcv_broadcasts);
4659 seq_printf(seq, "rx stats: multicasts : %8.8X\n",
4660 adapter->rcv_multicasts);
4661 seq_printf(seq, "rx stats: unicasts : %8.8X\n",
4662 adapter->rcv_unicasts);
4663 seq_printf(seq, "rx stats: errors : %8.8X\n",
4664 (u32) adapter->slic_stats.iface.rcv_errors);
4665 seq_printf(seq, "rx stats: Missed errors : %8.8X\n",
4666 (u32) adapter->slic_stats.iface.rcv_discards);
4667 seq_printf(seq, "rx stats: drops : %8.8X\n",
4668 (u32) adapter->rcv_drops);
4669 seq_printf(seq, "tx stats: packets : %8.8lX\n",
4670 adapter->stats.tx_packets);
4671 seq_printf(seq, "tx stats: bytes : %8.8lX\n",
4672 adapter->stats.tx_bytes);
4673 seq_printf(seq, "tx stats: errors : %8.8X\n",
4674 (u32) adapter->slic_stats.iface.xmt_errors);
4675 seq_printf(seq, "rx stats: multicasts : %8.8lX\n",
4676 adapter->stats.multicast);
4677 seq_printf(seq, "tx stats: collision errors : %8.8X\n",
4678 (u32) adapter->slic_stats.iface.xmit_collisions);
4679 seq_printf(seq, "perf: Max rcv frames/isr : %8.8X\n",
4680 adapter->max_isr_rcvs);
4681 seq_printf(seq, "perf: Rcv interrupt yields : %8.8X\n",
4682 adapter->rcv_interrupt_yields);
4683 seq_printf(seq, "perf: Max xmit complete/isr : %8.8X\n",
4684 adapter->max_isr_xmits);
4685 seq_printf(seq, "perf: error interrupts : %8.8X\n",
4686 adapter->error_interrupts);
4687 seq_printf(seq, "perf: error rmiss interrupts : %8.8X\n",
4688 adapter->error_rmiss_interrupts);
4689 seq_printf(seq, "perf: rcv interrupts : %8.8X\n",
4690 adapter->rcv_interrupts);
4691 seq_printf(seq, "perf: xmit interrupts : %8.8X\n",
4692 adapter->xmit_interrupts);
4693 seq_printf(seq, "perf: link event interrupts : %8.8X\n",
4694 adapter->linkevent_interrupts);
4695 seq_printf(seq, "perf: UPR interrupts : %8.8X\n",
4696 adapter->upr_interrupts);
4697 seq_printf(seq, "perf: interrupt count : %8.8X\n",
4698 adapter->num_isrs);
4699 seq_printf(seq, "perf: false interrupts : %8.8X\n",
4700 adapter->false_interrupts);
4701 seq_printf(seq, "perf: All register writes : %8.8X\n",
4702 adapter->all_reg_writes);
4703 seq_printf(seq, "perf: ICR register writes : %8.8X\n",
4704 adapter->icr_reg_writes);
4705 seq_printf(seq, "perf: ISR register writes : %8.8X\n",
4706 adapter->isr_reg_writes);
4707 seq_printf(seq, "ifevents: overflow 802 errors : %8.8X\n",
4708 adapter->if_events.oflow802);
4709 seq_printf(seq, "ifevents: transport overflow errors: %8.8X\n",
4710 adapter->if_events.Tprtoflow);
4711 seq_printf(seq, "ifevents: underflow errors : %8.8X\n",
4712 adapter->if_events.uflow802);
4713 seq_printf(seq, "ifevents: receive early : %8.8X\n",
4714 adapter->if_events.rcvearly);
4715 seq_printf(seq, "ifevents: buffer overflows : %8.8X\n",
4716 adapter->if_events.Bufov);
4717 seq_printf(seq, "ifevents: carrier errors : %8.8X\n",
4718 adapter->if_events.Carre);
4719 seq_printf(seq, "ifevents: Long : %8.8X\n",
4720 adapter->if_events.Longe);
4721 seq_printf(seq, "ifevents: invalid preambles : %8.8X\n",
4722 adapter->if_events.Invp);
4723 seq_printf(seq, "ifevents: CRC errors : %8.8X\n",
4724 adapter->if_events.Crc);
4725 seq_printf(seq, "ifevents: dribble nibbles : %8.8X\n",
4726 adapter->if_events.Drbl);
4727 seq_printf(seq, "ifevents: Code violations : %8.8X\n",
4728 adapter->if_events.Code);
4729 seq_printf(seq, "ifevents: TCP checksum errors : %8.8X\n",
4730 adapter->if_events.TpCsum);
4731 seq_printf(seq, "ifevents: TCP header short errors : %8.8X\n",
4732 adapter->if_events.TpHlen);
4733 seq_printf(seq, "ifevents: IP checksum errors : %8.8X\n",
4734 adapter->if_events.IpCsum);
4735 seq_printf(seq, "ifevents: IP frame incompletes : %8.8X\n",
4736 adapter->if_events.IpLen);
4737 seq_printf(seq, "ifevents: IP headers shorts : %8.8X\n",
4738 adapter->if_events.IpHlen);
4739
4740 return 0;
4741}
4742static int slic_debug_adapter_open(struct inode *inode, struct file *file)
4743{
4744 return single_open(file, slic_debug_adapter_show, inode->i_private);
4745}
4746
4747static int slic_debug_card_open(struct inode *inode, struct file *file)
4748{
4749 return single_open(file, slic_debug_card_show, inode->i_private);
4750}
4751
4752static const struct file_operations slic_debug_adapter_fops = {
4753 .owner = THIS_MODULE,
4754 .open = slic_debug_adapter_open,
4755 .read = seq_read,
4756 .llseek = seq_lseek,
4757 .release = single_release,
4758};
4759
4760static const struct file_operations slic_debug_card_fops = {
4761 .owner = THIS_MODULE,
4762 .open = slic_debug_card_open,
4763 .read = seq_read,
4764 .llseek = seq_lseek,
4765 .release = single_release,
4766};
4767
4768static void slic_debug_adapter_create(struct adapter *adapter)
4769{
4770 struct dentry *d;
4771 char name[7];
4772 struct sliccard *card = adapter->card;
4773
4774 if (!card->debugfs_dir)
4775 return;
4776
4777 sprintf(name, "port%d", adapter->port);
4778 d = debugfs_create_file(name, S_IRUGO,
4779 card->debugfs_dir, adapter,
4780 &slic_debug_adapter_fops);
4781 if (!d || IS_ERR(d))
4782 pr_info(PFX "%s: debugfs create failed\n", name);
4783 else
4784 adapter->debugfs_entry = d;
4785}
4786
4787static void slic_debug_adapter_destroy(struct adapter *adapter)
4788{
4789 if (adapter->debugfs_entry) {
4790 debugfs_remove(adapter->debugfs_entry);
4791 adapter->debugfs_entry = NULL;
4792 }
4793}
4794
4795static void slic_debug_card_create(struct sliccard *card)
4796{
4797 struct dentry *d;
4798 char name[IFNAMSIZ];
4799
4800 snprintf(name, sizeof(name), "slic%d", card->cardnum);
4801 d = debugfs_create_dir(name, slic_debugfs);
4802 if (!d || IS_ERR(d))
4803 pr_info(PFX "%s: debugfs create dir failed\n",
4804 name);
4805 else {
4806 card->debugfs_dir = d;
4807 d = debugfs_create_file("cardinfo", S_IRUGO,
4808 slic_debugfs, card,
4809 &slic_debug_card_fops);
4810 if (!d || IS_ERR(d))
4811 pr_info(PFX "%s: debugfs create failed\n",
4812 name);
4813 else
4814 card->debugfs_cardinfo = d;
4815 }
4816}
4817
4818static void slic_debug_card_destroy(struct sliccard *card)
4819{
4820 int i;
4821
4822 for (i = 0; i < card->card_size; i++) {
4823 struct adapter *adapter;
4824
4825 adapter = card->adapter[i];
4826 if (adapter)
4827 slic_debug_adapter_destroy(adapter);
4828 }
4829 if (card->debugfs_cardinfo) {
4830 debugfs_remove(card->debugfs_cardinfo);
4831 card->debugfs_cardinfo = NULL;
4832 }
4833 if (card->debugfs_dir) {
4834 debugfs_remove(card->debugfs_dir);
4835 card->debugfs_dir = NULL;
4836 }
4837}
4838
4839static void slic_debug_init(void)
4840{
4841 struct dentry *ent;
4842
4843 ent = debugfs_create_dir("slic", NULL);
4844 if (!ent || IS_ERR(ent)) {
4845 pr_info(PFX "debugfs create directory failed\n");
4846 return;
4847 }
4848
4849 slic_debugfs = ent;
4850}
4851
4852static void slic_debug_cleanup(void)
4853{
4854 if (slic_debugfs) {
4855 debugfs_remove(slic_debugfs);
4856 slic_debugfs = NULL;
4857 }
4858}
4859
4860/*=============================================================================
4861 =============================================================================
4862 === ===
4863 === SLIC DUMP MANAGEMENT SECTION ===
4864 === ===
4865 === ===
4866 === Dump routines ===
4867 === ===
4868 === ===
4869 =============================================================================
4870 ============================================================================*/
4871
4872#if SLIC_DUMP_ENABLED
4873
4874#include <stdarg.h>
4875
4876void *slic_dump_handle; /* thread handle */
4877
4878/*
4879 * These are the only things you should do on a core-file: use only these
4880 * functions to write out all the necessary info.
4881 */
4882static int slic_dump_seek(struct file *SLIChandle, u32 file_offset)
4883{
4884 if (SLIChandle->f_pos != file_offset) {
4885 /*DBG_MSG("slic_dump_seek now needed [%x : %x]\n",
4886 (u32)SLIChandle->f_pos, (u32)file_offset); */
4887 if (SLIChandle->f_op->llseek) {
4888 if (SLIChandle->f_op->
4889 llseek(SLIChandle, file_offset, 0) != file_offset)
4890 return 0;
4891 } else {
4892 SLIChandle->f_pos = file_offset;
4893 }
4894 }
4895 return 1;
4896}
4897
4898static int slic_dump_write(struct sliccard *card,
4899 const void *addr, int size, u32 file_offset)
4900{
4901 int r = 1;
4902 u32 result = 0;
4903 struct file *SLIChandle = card->dumphandle;
4904
4905#ifdef HISTORICAL /* legacy */
4906 down(&SLIChandle->f_dentry->d_inode->i_sem);
4907#endif
4908 if (size) {
4909 slic_dump_seek(SLIChandle, file_offset);
4910
4911 result =
4912 SLIChandle->f_op->write(SLIChandle, addr, size,
4913 &SLIChandle->f_pos);
4914
4915 r = result == size;
4916 }
4917
4918 card->dumptime_complete = jiffies;
4919 card->dumptime_delta = card->dumptime_complete - card->dumptime_start;
4920 card->dumptime_start = jiffies;
4921
4922#ifdef HISTORICAL
4923 up(&SLIChandle->f_dentry->d_inode->i_sem);
4924#endif
4925 if (!r) {
4926 DBG_ERROR("%s: addr[%p] size[%x] result[%x] file_offset[%x]\n",
4927 __func__, addr, size, result, file_offset);
4928 }
4929 return r;
4930}
4931
4932static uint slic_init_dump_thread(struct sliccard *card)
4933{
4934 card->dump_task_id = kthread_run(slic_dump_thread, (void *)card, 0);
4935
4936/* DBG_MSG("create slic_dump_thread dump_pid[%x]\n", card->dump_pid); */
4937 if (IS_ERR(card->dump_task_id)) {
4938 DBG_MSG("create slic_dump_thread FAILED \n");
4939 return STATUS_FAILURE;
4940 }
4941
4942 return STATUS_SUCCESS;
4943}
4944
4945static int slic_dump_thread(void *context)
4946{
4947 struct sliccard *card = (struct sliccard *)context;
4948 struct adapter *adapter;
4949 struct adapter *dump_adapter = NULL;
4950 u32 dump_complete = 0;
4951 u32 delay = SLIC_SECS_TO_JIFFS(PING_TIMER_INTERVAL);
4952 struct slic_regs *pregs;
4953 u32 i;
4954 struct slic_upr *upr, *uprnext;
4955 u32 dump_card;
4956
4957 ASSERT(card);
4958
4959 card->dumpthread_running = 1;
4960
4961#ifdef HISTORICAL
4962 lock_kernel();
4963 /*
4964 * This thread doesn't need any user-level access,
4965 * so get rid of all our resources
4966 */
4967 exit_files(current); /* daemonize doesn't do exit_files */
4968 current->files = init_task.files;
4969 atomic_inc(&current->files->count);
4970#endif
4971
4972 daemonize("%s", "slicmon");
4973
4974 /* Setup a nice name */
4975 strcpy(current->comm, "slicmon");
4976 DBG_ERROR
4977 ("slic_dump_thread[slicmon] daemon is alive card[%p] pid[%x]\n",
4978 card, card->dump_task_id->pid);
4979
4980 /*
4981 * Send me a signal to get me to die (for debugging)
4982 */
4983 do {
4984 /*
4985 * If card state is not set to up, skip
4986 */
4987 if (card->state != CARD_UP) {
4988 if (card->adapters_activated)
4989 goto wait;
4990 else
4991 goto end_thread;
4992 }
4993 /*
4994 * Check the results of our last ping.
4995 */
4996 dump_card = 0;
4997#ifdef SLIC_FAILURE_DUMP
4998 if (card->pingstatus != ISR_PINGMASK) {
4999 DBG_MSG
5000 ("\n[slicmon] CARD #%d TIMED OUT - status "
5001 "%x: DUMP THE CARD!\n",
5002 card->cardnum, card->pingstatus);
5003 dump_card = 1;
5004 }
5005#else
5006 /*
5007 * Cause a card RESET instead?
5008 */
5009 if (card->pingstatus != ISR_PINGMASK) {
5010 /* todo. do we want to reset the card in production */
5011 /* DBG_MSG("\n[slicmon] CARD #%d TIMED OUT - "
5012 status %x: RESET THE CARD!\n", card->cardnum,
5013 card->pingstatus); */
5014 DBG_ERROR
5015 ("\n[slicmon] CARD #%d TIMED OUT - status %x: "
5016 "DUMP THE CARD!\n",
5017 card->cardnum, card->pingstatus);
5018 dump_card = 1;
5019 }
5020#endif
5021 if ((dump_card)
5022 || (card->dump_requested == SLIC_DUMP_REQUESTED)) {
5023 if (card->dump_requested == SLIC_DUMP_REQUESTED) {
5024 DBG_ERROR
5025 ("[slicmon]: Dump card Requested: Card %x\n",
5026 card->cardnum);
5027 }
5028 if (card->pingstatus != ISR_PINGMASK) {
5029 ushort cpuid = 0;
5030 ushort crashpc = 0;
5031
5032 if (card->adapter[0]) {
5033 if ((card->adapter[0])->memorylength >=
5034 CRASH_INFO_OFFSET +
5035 sizeof(slic_crash_info)) {
5036 char *crashptr;
5037 p_slic_crash_info crashinfo;
5038
5039 crashptr =
5040 ((char *)card->adapter[0]->
5041 slic_regs) +
5042 CRASH_INFO_OFFSET;
5043 crashinfo =
5044 (p_slic_crash_info)
5045 crashptr;
5046 cpuid = crashinfo->cpu_id;
5047 crashpc = crashinfo->crash_pc;
5048 }
5049 }
5050 DBG_ERROR
5051 ("[slicmon]: Dump card: Card %x crashed "
5052 "and failed to answer PING. "
5053 "CPUID[%x] PC[%x]\n ",
5054 card->cardnum, cpuid, crashpc);
5055 }
5056
5057 card->dump_requested = SLIC_DUMP_IN_PROGRESS;
5058
5059 /*
5060 * Set the card state to DOWN and the adapter states
5061 * to RESET.They will check this in SimbaCheckForHang
5062 * and initiate interface reset (which in turn will
5063 * reinitialize the card).
5064 */
5065 card->state = CARD_DOWN;
5066
5067 for (i = 0; i < card->card_size; i++) {
5068 adapter = card->adapter[i];
5069 if (adapter) {
5070 slic_if_stop_queue(adapter);
5071
5072 if (adapter->state == ADAPT_UP) {
5073 adapter->state = ADAPT_RESET;
5074 adapter->linkstate = LINK_DOWN;
5075 DBG_ERROR
5076 ("[slicmon]: SLIC Card[%d] "
5077 "Port[%d] adapter[%p] "
5078 "down\n",
5079 (uint) card->cardnum,
5080 (uint) i, adapter);
5081 }
5082#if SLIC_GET_STATS_TIMER_ENABLED
5083 /* free stats timer */
5084 if (adapter->statstimerset) {
5085 adapter->statstimerset = 0;
5086 del_timer(&adapter->statstimer);
5087 }
5088#endif
5089 }
5090 }
5091
5092 for (i = 0; i < card->card_size; i++) {
5093 adapter = card->adapter[i];
5094 if ((adapter) && (adapter->activated)) {
5095 pregs = adapter->slic_regs;
5096 dump_adapter = adapter;
5097
5098 /*
5099 * If the dump status is zero, then
5100 * the utility processor has crashed.
5101 * If this is the case, any pending
5102 * utilityprocessor requests will not
5103 * complete and our dump commands will
5104 * not be issued.
5105 *
5106 * To avoid this we will clear any
5107 * pending utility processor requests
5108 * now.
5109 */
5110 if (!card->pingstatus) {
5111 spin_lock_irqsave(
5112 &adapter->upr_lock.lock,
5113 adapter->upr_lock.flags);
5114 upr = adapter->upr_list;
5115 while (upr) {
5116 uprnext = upr->next;
5117 kfree(upr);
5118 upr = uprnext;
5119 }
5120 adapter->upr_list = 0;
5121 adapter->upr_busy = 0;
5122 spin_unlock_irqrestore(
5123 &adapter->upr_lock.lock,
5124 adapter->upr_lock.flags);
5125 }
5126
5127 slic_dump_card(card, FALSE);
5128 dump_complete = 1;
5129 }
5130
5131 if (dump_complete) {
5132 DBG_ERROR("SLIC Dump Complete\n");
5133 /* Only dump the card one time */
5134 break;
5135 }
5136 }
5137
5138 if (dump_adapter) {
5139 DBG_ERROR
5140 ("slic dump completed. "
5141 "Reenable interfaces\n");
5142 slic_card_init(card, dump_adapter);
5143
5144 /*
5145 * Reenable the adapters that were reset
5146 */
5147 for (i = 0; i < card->card_size; i++) {
5148 adapter = card->adapter[i];
5149 if (adapter) {
5150 if (adapter->state ==
5151 ADAPT_RESET) {
5152 DBG_ERROR
5153 ("slicdump: SLIC "
5154 "Card[%d] Port[%d] adapter[%p] "
5155 "bring UP\n",
5156 (uint) card->
5157 cardnum, (uint) i,
5158 adapter);
5159 adapter->state =
5160 ADAPT_DOWN;
5161 adapter->linkstate =
5162 LINK_DOWN;
5163 slic_entry_open
5164 (adapter->netdev);
5165 }
5166 }
5167 }
5168
5169 card->dump_requested = SLIC_DUMP_DONE;
5170 }
5171 } else {
5172 /* if pingstatus != ISR_PINGMASK) || dump_requested...ELSE
5173 * We received a valid ping response.
5174 * Clear the Pingstatus field, find a valid adapter
5175 * structure and send another ping.
5176 */
5177 for (i = 0; i < card->card_size; i++) {
5178 adapter = card->adapter[i];
5179 if (adapter && (adapter->state == ADAPT_UP)) {
5180 card->pingstatus = 0;
5181 slic_upr_request(adapter, SLIC_UPR_PING,
5182 0, 0, 0, 0);
5183 break; /* Only issue one per card */
5184 }
5185 }
5186 }
5187wait:
5188 SLIC_INTERRUPTIBLE_SLEEP_ON_TIMEOUT(card->dump_wq, delay);
5189 } while (!signal_pending(current));
5190
5191end_thread:
5192/* DBG_MSG("[slicmon] slic_dump_thread card[%p] pid[%x] ENDING\n",
5193 card, card->dump_pid); */
5194 card->dumpthread_running = 0;
5195
5196 return 0;
5197}
5198
5199/*
5200 * Read a single byte from our dump index file. This
5201 * value is used as our suffix for our dump path. The
5202 * value is incremented and written back to the file
5203 */
5204static unsigned char slic_get_dump_index(char *path)
5205{
5206 unsigned char index = 0;
5207#ifdef SLIC_DUMP_INDEX_SUPPORT
5208 u32 status;
5209 void *FileHandle;
5210 u32 offset;
5211
5212 offset = 0;
5213
5214 /*
5215 * Open the index file. If one doesn't exist, create it
5216 */
5217 status = create_file(&FileHandle);
5218
5219 if (status != STATUS_SUCCESS)
5220 return (unsigned char) 0;
5221
5222 status = read_file(FileHandle, &index, 1, &offset);
5223
5224 index++;
5225
5226 status = write_file(FileHandle, &index, 1, &offset);
5227
5228 close_file(FileHandle);
5229#else
5230 index = 0;
5231#endif
5232 return index;
5233}
5234
5235static struct file *slic_dump_open_file(struct sliccard *card)
5236{
5237 struct file *SLIChandle = NULL;
5238 struct dentry *dentry = NULL;
5239 struct inode *inode = NULL;
5240 char SLICfile[50];
5241
5242 card->dumpfile_fs = get_fs();
5243
5244 set_fs(KERNEL_DS);
5245
5246 memset(SLICfile, 0, sizeof(SLICfile));
5247 sprintf(SLICfile, "/var/tmp/slic%d-dump-%d", card->cardnum,
5248 (uint) card->dump_count);
5249 card->dump_count++;
5250
5251 SLIChandle =
5252 filp_open(SLICfile, O_CREAT | O_RDWR | O_SYNC | O_LARGEFILE, 0666);
5253
5254 DBG_MSG("[slicmon]: Dump Card #%d to file: %s \n", card->cardnum,
5255 SLICfile);
5256
5257/* DBG_MSG("[slicmon] filp_open %s SLIChandle[%p]\n", SLICfile, SLIChandle);*/
5258
5259 if (IS_ERR(SLIChandle))
5260 goto end_slicdump;
5261
5262 dentry = SLIChandle->f_dentry;
5263 inode = dentry->d_inode;
5264
5265/* DBG_MSG("[slicmon] inode[%p] i_nlink[%x] i_mode[%x] i_op[%p] i_fop[%p]\n"
5266 "f_op->write[%p]\n",
5267 inode, inode->i_nlink, inode->i_mode, inode->i_op,
5268 inode->i_fop, SLIChandle->f_op->write); */
5269 if (inode->i_nlink > 1)
5270 goto close_slicdump; /* multiple links - don't dump */
5271#ifdef HISTORICAL
5272 if (!S_ISREG(inode->i_mode))
5273 goto close_slicdump;
5274#endif
5275 if (!inode->i_op || !inode->i_fop)
5276 goto close_slicdump;
5277
5278 if (!SLIChandle->f_op->write)
5279 goto close_slicdump;
5280
5281 /*
5282 * If we got here we have SUCCESSFULLY OPENED the dump file
5283 */
5284/* DBG_MSG("opened %s SLIChandle[%p]\n", SLICfile, SLIChandle); */
5285 return SLIChandle;
5286
5287close_slicdump:
5288 DBG_MSG("[slicmon] slic_dump_open_file failed close SLIChandle[%p]\n",
5289 SLIChandle);
5290 filp_close(SLIChandle, NULL);
5291
5292end_slicdump:
5293 set_fs(card->dumpfile_fs);
5294
5295 return NULL;
5296}
5297
5298static void slic_dump_close_file(struct sliccard *card)
5299{
5300
5301/* DBG_MSG("[slicmon] slic_dump_CLOSE_file close SLIChandle[%p]\n",
5302 card->dumphandle); */
5303
5304 filp_close(card->dumphandle, NULL);
5305
5306 set_fs(card->dumpfile_fs);
5307}
5308
5309static u32 slic_dump_card(struct sliccard *card, bool resume)
5310{
5311 struct adapter *adapter = card->master;
5312 u32 status;
5313 u32 queue;
5314 u32 len, offset;
5315 u32 sram_size, dram_size, regs;
5316 struct sliccore_hdr corehdr;
5317 u32 file_offset;
5318 char *namestr;
5319 u32 i;
5320 u32 max_queues = 0;
5321 u32 result;
5322
5323 card->dumphandle = slic_dump_open_file(card);
5324
5325 if (card->dumphandle == NULL) {
5326 DBG_MSG("[slicmon] Cant create Dump file - dump failed\n");
5327 return -ENOMEM;
5328 }
5329 if (!card->dumpbuffer) {
5330 DBG_MSG("[slicmon] Insufficient memory for dump\n");
5331 return -ENOMEM;
5332 }
5333 if (!card->cmdbuffer) {
5334 DBG_MSG("[slicmon] Insufficient cmd memory for dump\n");
5335 return -ENOMEM;
5336 }
5337
5338 /*
5339 * Write the file version to the core header.
5340 */
5341 namestr = slic_proc_version;
5342 for (i = 0; i < (DRIVER_NAME_SIZE - 1); i++, namestr++) {
5343 if (!namestr)
5344 break;
5345 corehdr.driver_version[i] = *namestr;
5346 }
5347 corehdr.driver_version[i] = 0;
5348
5349 file_offset = sizeof(struct sliccore_hdr);
5350
5351 /*
5352 * Issue the following debug commands to the SLIC:
5353 * - Halt both receive and transmit
5354 * - Dump receive registers
5355 * - Dump transmit registers
5356 * - Dump sram
5357 * - Dump dram
5358 * - Dump queues
5359 */
5360 DBG_MSG("slicDump HALT Receive Processor\n");
5361 card->dumptime_start = jiffies;
5362
5363 status = slic_dump_halt(card, PROC_RECEIVE);
5364 if (status != STATUS_SUCCESS) {
5365 DBG_ERROR
5366 ("Cant halt receive sequencer - dump failed status[%x]\n",
5367 status);
5368 goto done;
5369 }
5370
5371 DBG_MSG("slicDump HALT Transmit Processor\n");
5372 status = slic_dump_halt(card, PROC_TRANSMIT);
5373 if (status != STATUS_SUCCESS) {
5374 DBG_ERROR("Cant halt transmit sequencer - dump failed\n");
5375 goto done;
5376 }
5377
5378 /* Dump receive regs */
5379 status = slic_dump_reg(card, PROC_RECEIVE);
5380 if (status != STATUS_SUCCESS) {
5381 DBG_ERROR("Cant dump receive registers - dump failed\n");
5382 goto done;
5383 }
5384
5385 DBG_MSG("slicDump Write Receive REGS len[%x] offset[%x]\n",
5386 (SLIC_NUM_REG * 4), file_offset);
5387
5388 result =
5389 slic_dump_write(card, card->dumpbuffer, SLIC_NUM_REG * 4,
5390 file_offset);
5391 if (!result) {
5392 DBG_ERROR
5393 ("Cant write rcv registers to dump file - dump failed\n");
5394 goto done;
5395 }
5396
5397 corehdr.RcvRegOff = file_offset;
5398 corehdr.RcvRegsize = SLIC_NUM_REG * 4;
5399 file_offset += SLIC_NUM_REG * 4;
5400
5401 /* Dump transmit regs */
5402 status = slic_dump_reg(card, PROC_TRANSMIT);
5403 if (status != STATUS_SUCCESS) {
5404 DBG_ERROR("Cant dump transmit registers - dump failed\n");
5405 goto done;
5406 }
5407
5408 DBG_MSG("slicDump Write XMIT REGS len[%x] offset[%x]\n",
5409 (SLIC_NUM_REG * 4), file_offset);
5410
5411 result =
5412 slic_dump_write(card, card->dumpbuffer, SLIC_NUM_REG * 4,
5413 file_offset);
5414 if (!result) {
5415 DBG_ERROR
5416 ("Cant write xmt registers to dump file - dump failed\n");
5417 goto done;
5418 }
5419
5420 corehdr.XmtRegOff = file_offset;
5421 corehdr.XmtRegsize = SLIC_NUM_REG * 4;
5422 file_offset += SLIC_NUM_REG * 4;
5423
5424 regs = SLIC_GBMAX_REG;
5425
5426 corehdr.FileRegOff = file_offset;
5427 corehdr.FileRegsize = regs * 4;
5428
5429 for (offset = 0; regs;) {
5430 len = MIN(regs, 16); /* Can only xfr 16 regs at a time */
5431
5432 status = slic_dump_data(card, offset, (ushort) len, DESC_RFILE);
5433
5434 if (status != STATUS_SUCCESS) {
5435 DBG_ERROR("Cant dump register file - dump failed\n");
5436 goto done;
5437 }
5438
5439 DBG_MSG("slicDump Write RegisterFile len[%x] offset[%x]\n",
5440 (len * 4), file_offset);
5441
5442 result =
5443 slic_dump_write(card, card->dumpbuffer, len * 4,
5444 file_offset);
5445 if (!result) {
5446 DBG_ERROR
5447 ("Cant write register file to dump file - "
5448 "dump failed\n");
5449 goto done;
5450 }
5451
5452 file_offset += len * 4;
5453 offset += len;
5454 regs -= len;
5455 }
5456
5457 dram_size = card->config.DramSize * 0x10000;
5458
5459 switch (adapter->devid) {
5460 case SLIC_2GB_DEVICE_ID:
5461 sram_size = SLIC_SRAM_SIZE2GB;
5462 break;
5463 case SLIC_1GB_DEVICE_ID:
5464 sram_size = SLIC_SRAM_SIZE1GB;
5465 break;
5466 default:
5467 sram_size = 0;
5468 ASSERT(0);
5469 break;
5470 }
5471
5472 corehdr.SramOff = file_offset;
5473 corehdr.Sramsize = sram_size;
5474
5475 for (offset = 0; sram_size;) {
5476 len = MIN(sram_size, DUMP_BUF_SIZE);
5477 status = slic_dump_data(card, offset, (ushort) len, DESC_SRAM);
5478 if (status != STATUS_SUCCESS) {
5479 DBG_ERROR
5480 ("[slicmon] Cant dump SRAM at offset %x - "
5481 "dump failed\n", (uint) offset);
5482 goto done;
5483 }
5484
5485 DBG_MSG("[slicmon] slicDump Write SRAM len[%x] offset[%x]\n",
5486 len, file_offset);
5487
5488 result =
5489 slic_dump_write(card, card->dumpbuffer, len, file_offset);
5490 if (!result) {
5491 DBG_ERROR
5492 ("[slicmon] Cant write SRAM to dump file - "
5493 "dump failed\n");
5494 goto done;
5495 }
5496
5497 file_offset += len;
5498 offset += len;
5499 sram_size -= len;
5500 }
5501
5502 corehdr.DramOff = file_offset;
5503 corehdr.Dramsize = dram_size;
5504
5505 for (offset = 0; dram_size;) {
5506 len = MIN(dram_size, DUMP_BUF_SIZE);
5507
5508 status = slic_dump_data(card, offset, (ushort) len, DESC_DRAM);
5509 if (status != STATUS_SUCCESS) {
5510 DBG_ERROR
5511 ("[slicmon] Cant dump dram at offset %x - "
5512 "dump failed\n", (uint) offset);
5513 goto done;
5514 }
5515
5516 DBG_MSG("slicDump Write DRAM len[%x] offset[%x]\n", len,
5517 file_offset);
5518
5519 result =
5520 slic_dump_write(card, card->dumpbuffer, len, file_offset);
5521 if (!result) {
5522 DBG_ERROR
5523 ("[slicmon] Cant write DRAM to dump file - "
5524 "dump failed\n");
5525 goto done;
5526 }
5527
5528 file_offset += len;
5529 offset += len;
5530 dram_size -= len;
5531 }
5532
5533 max_queues = SLIC_MAX_QUEUE;
5534
5535 for (queue = 0; queue < max_queues; queue++) {
5536 u32 *qarray = (u32 *) card->dumpbuffer;
5537 u32 qarray_physl = card->dumpbuffer_physl;
5538 u32 qarray_physh = card->dumpbuffer_physh;
5539 u32 qstart;
5540 u32 qdelta;
5541 u32 qtotal = 0;
5542
5543 DBG_MSG("[slicmon] Start Dump of QUEUE #0x%x\n", (uint) queue);
5544
5545 for (offset = 0; offset < (DUMP_BUF_SIZE >> 2); offset++) {
5546 qstart = jiffies;
5547 qdelta = 0;
5548
5549 status = slic_dump_queue(card,
5550 qarray_physl,
5551 qarray_physh, queue);
5552 qarray_physl += 4;
5553
5554 if (status != STATUS_SUCCESS)
5555 break;
5556
5557 if (jiffies > qstart) {
5558 qdelta = jiffies - qstart;
5559 qtotal += qdelta;
5560 }
5561 }
5562
5563 if (offset)
5564 qdelta = qtotal / offset;
5565 else
5566 qdelta = 0;
5567
5568/* DBG_MSG(" slicDump Write QUEUE #0x%x len[%x] offset[%x] "
5569 "avgjiffs[%x]\n", queue, (offset*4), file_offset, qdelta); */
5570
5571 result =
5572 slic_dump_write(card, card->dumpbuffer, offset * 4,
5573 file_offset);
5574
5575 if (!result) {
5576 DBG_ERROR
5577 ("[slicmon] Cant write QUEUES to dump file - "
5578 "dump failed\n");
5579 goto done;
5580 }
5581
5582 corehdr.queues[queue].queueOff = file_offset;
5583 corehdr.queues[queue].queuesize = offset * 4;
5584 file_offset += offset * 4;
5585
5586/* DBG_MSG(" Reload QUEUE #0x%x elements[%x]\n", (uint)queue, offset);*/
5587 /*
5588 * Fill the queue back up
5589 */
5590 for (i = 0; i < offset; i++) {
5591 qstart = jiffies;
5592 qdelta = 0;
5593
5594 status = slic_dump_load_queue(card, qarray[i], queue);
5595 if (status != STATUS_SUCCESS)
5596 break;
5597
5598 if (jiffies > qstart) {
5599 qdelta = jiffies - qstart;
5600 qtotal += qdelta;
5601 }
5602 }
5603
5604 if (offset)
5605 qdelta = qtotal / offset;
5606 else
5607 qdelta = 0;
5608
5609/* DBG_MSG(" Reload DONE avgjiffs[%x]\n", qdelta); */
5610
5611 resume = 1;
5612 }
5613
5614 len = SLIC_GB_CAMAB_SZE * 4;
5615 status = slic_dump_cam(card, 0, len, DUMP_CAM_A);
5616 if (status != STATUS_SUCCESS) {
5617 DBG_ERROR("[slicmon] Can't dump CAM_A - dump failed\n");
5618 goto done;
5619 }
5620
5621 result = slic_dump_write(card, card->dumpbuffer, len, file_offset);
5622 if (result) {
5623 DBG_ERROR
5624 ("[slicmon] Can't write CAM_A data to dump file - "
5625 "dump failed\n");
5626 goto done;
5627 }
5628 corehdr.CamAMOff = file_offset;
5629 corehdr.CamASize = len;
5630 file_offset += len;
5631
5632 len = SLIC_GB_CAMCD_SZE * 4;
5633 status = slic_dump_cam(card, 0, len, DUMP_CAM_C);
5634 if (status) {
5635 DBG_ERROR("[slicmon] Can't dump CAM_C - dump failed\n");
5636 goto done;
5637 }
5638
5639 result = slic_dump_write(card, card->dumpbuffer, len, file_offset);
5640 if (result) {
5641 DBG_ERROR
5642 ("[slicmon] Can't write CAM_C data to dump file - "
5643 "dump failed\n");
5644 goto done;
5645 }
5646 corehdr.CamCMOff = file_offset;
5647 corehdr.CamCSize = len;
5648 file_offset += len;
5649
5650done:
5651 /*
5652 * Write out the core header
5653 */
5654 file_offset = 0;
5655 DBG_MSG("[slicmon] Write CoreHeader len[%x] offset[%x]\n",
5656 (uint) sizeof(struct sliccore_hdr), file_offset);
5657
5658 result =
5659 slic_dump_write(card, &corehdr, sizeof(struct sliccore_hdr),
5660 file_offset);
5661 DBG_MSG("[slicmon] corehdr xoff[%x] xsz[%x]\n"
5662 " roff[%x] rsz[%x] fileoff[%x] filesz[%x]\n"
5663 " sramoff[%x] sramsz[%x], dramoff[%x] dramsz[%x]\n"
5664 " corehdr_offset[%x]\n", corehdr.XmtRegOff,
5665 corehdr.XmtRegsize, corehdr.RcvRegOff, corehdr.RcvRegsize,
5666 corehdr.FileRegOff, corehdr.FileRegsize, corehdr.SramOff,
5667 corehdr.Sramsize, corehdr.DramOff, corehdr.Dramsize,
5668 (uint) sizeof(struct sliccore_hdr));
5669 for (i = 0; i < max_queues; i++) {
5670 DBG_MSG("[slicmon] QUEUE 0x%x offset[%x] size[%x]\n",
5671 (uint) i, corehdr.queues[i].queueOff,
5672 corehdr.queues[i].queuesize);
5673
5674 }
5675
5676 slic_dump_close_file(card);
5677
5678 if (resume) {
5679 DBG_MSG("slicDump RESTART RECEIVE and XMIT PROCESSORS\n\n");
5680 slic_dump_resume(card, PROC_RECEIVE);
5681 slic_dump_resume(card, PROC_TRANSMIT);
5682 }
5683
5684 return status;
5685}
5686
5687static u32 slic_dump_halt(struct sliccard *card, unsigned char proc)
5688{
5689 unsigned char *cmd = card->cmdbuffer;
5690
5691 *cmd = COMMAND_BYTE(CMD_HALT, 0, proc);
5692
5693 return slic_dump_send_cmd(card,
5694 card->cmdbuffer_physl,
5695 card->cmdbuffer_physh, 0, 0);
5696}
5697
5698static u32 slic_dump_resume(struct sliccard *card, unsigned char proc)
5699{
5700 unsigned char *cmd = card->cmdbuffer;
5701
5702 *cmd = COMMAND_BYTE(CMD_RUN, 0, proc);
5703
5704 return slic_dump_send_cmd(card,
5705 card->cmdbuffer_physl,
5706 card->cmdbuffer_physh, 0, 0);
5707}
5708
5709static u32 slic_dump_reg(struct sliccard *card, unsigned char proc)
5710{
5711 struct dump_cmd *dump = (struct dump_cmd *)card->cmdbuffer;
5712
5713 dump->cmd = COMMAND_BYTE(CMD_DUMP, 0, proc);
5714 dump->desc = DESC_REG;
5715 dump->count = 0;
5716 dump->addr = 0;
5717
5718 return slic_dump_send_cmd(card,
5719 card->cmdbuffer_physl,
5720 card->cmdbuffer_physh,
5721 card->dumpbuffer_physl,
5722 card->dumpbuffer_physh);
5723}
5724
5725static u32 slic_dump_data(struct sliccard *card,
5726 u32 addr, ushort count, unsigned char desc)
5727{
5728 struct dump_cmd *dump = (struct dump_cmd *)card->cmdbuffer;
5729
5730 dump->cmd = COMMAND_BYTE(CMD_DUMP, 0, PROC_RECEIVE);
5731 dump->desc = desc;
5732 dump->count = count;
5733 dump->addr = addr;
5734
5735 return slic_dump_send_cmd(card,
5736 card->cmdbuffer_physl,
5737 card->cmdbuffer_physh,
5738 card->dumpbuffer_physl,
5739 card->dumpbuffer_physh);
5740}
5741
5742static u32 slic_dump_queue(struct sliccard *card,
5743 u32 addr, u32 buf_physh, u32 queue)
5744{
5745 struct dump_cmd *dump = (struct dump_cmd *)card->cmdbuffer;
5746
5747 dump->cmd = COMMAND_BYTE(CMD_DUMP, 0, PROC_RECEIVE);
5748 dump->desc = DESC_QUEUE;
5749 dump->count = 1;
5750 dump->addr = queue;
5751
5752 return slic_dump_send_cmd(card,
5753 card->cmdbuffer_physl,
5754 card->cmdbuffer_physh,
5755 addr, card->dumpbuffer_physh);
5756}
5757
5758static u32 slic_dump_load_queue(struct sliccard *card, u32 data,
5759 u32 queue)
5760{
5761 struct dump_cmd *load = (struct dump_cmd *) card->cmdbuffer;
5762
5763 load->cmd = COMMAND_BYTE(CMD_LOAD, 0, PROC_RECEIVE);
5764 load->desc = DESC_QUEUE;
5765 load->count = (ushort) queue;
5766 load->addr = data;
5767
5768 return slic_dump_send_cmd(card,
5769 card->cmdbuffer_physl,
5770 card->cmdbuffer_physh, 0, 0);
5771}
5772
5773static u32 slic_dump_cam(struct sliccard *card,
5774 u32 addr, u32 count, unsigned char desc)
5775{
5776 struct dump_cmd *dump = (struct dump_cmd *)card->cmdbuffer;
5777
5778 dump->cmd = COMMAND_BYTE(CMD_CAM_OPS, 0, PROC_NONE);
5779 dump->desc = desc;
5780 dump->count = count;
5781 dump->addr = 0;
5782
5783 return slic_dump_send_cmd(card,
5784 card->cmdbuffer_physl,
5785 card->cmdbuffer_physh,
5786 addr, card->dumpbuffer_physh);
5787}
5788
5789static u32 slic_dump_send_cmd(struct sliccard *card,
5790 u32 cmd_physl,
5791 u32 cmd_physh,
5792 u32 buf_physl, u32 buf_physh)
5793{
5794 ulong timeout = SLIC_MS_TO_JIFFIES(500); /* 500 msec */
5795 u32 attempts = 5;
5796 u32 delay = SLIC_MS_TO_JIFFIES(10); /* 10 msec */
5797 struct adapter *adapter = card->master;
5798
5799 ASSERT(adapter);
5800 do {
5801 /*
5802 * Zero the Dumpstatus field of the adapter structure
5803 */
5804 card->dumpstatus = 0;
5805 /*
5806 * Issue the dump command via a utility processor request.
5807 *
5808 * Kludge: We use the Informationbuffer parameter to hold
5809 * the buffer address
5810 */
5811 slic_upr_request(adapter, SLIC_UPR_DUMP, cmd_physl, cmd_physh,
5812 buf_physl, buf_physh);
5813
5814 timeout += jiffies;
5815 /*
5816 * Spin until completion or timeout.
5817 */
5818 while (!card->dumpstatus) {
5819 int num_sleeps = 0;
5820
5821 if (jiffies > timeout) {
5822 /*
5823 * Complete the timed-out DUMP UPR request.
5824 */
5825 slic_upr_request_complete(adapter, 0);
5826 DBG_ERROR
5827 ("%s: TIMED OUT num_sleeps[%x] "
5828 "status[%x]\n",
5829 __func__, num_sleeps, STATUS_FAILURE);
5830
5831 return STATUS_FAILURE;
5832 }
5833 num_sleeps++;
5834 SLIC_INTERRUPTIBLE_SLEEP_ON_TIMEOUT(card->dump_wq,
5835 delay);
5836 }
5837
5838 if (card->dumpstatus & ISR_UPCERR) {
5839 /*
5840 * Error (or queue empty)
5841 */
5842/* DBG_ERROR("[slicmon] %s: DUMP_STATUS & ISR_UPCERR status[%x]\n",
5843 __func__, STATUS_FAILURE); */
5844
5845 return STATUS_FAILURE;
5846 } else if (card->dumpstatus & ISR_UPCBSY) {
5847 /*
5848 * Retry
5849 */
5850 DBG_ERROR("%s: ISR_UPCBUSY attempt[%x]\n", __func__,
5851 attempts);
5852
5853 attempts--;
5854 } else {
5855 /*
5856 * success
5857 */
5858 return STATUS_SUCCESS;
5859 }
5860
5861 } while (attempts);
5862
5863 DBG_ERROR("%s: GAVE UP AFTER SEVERAL ATTEMPTS status[%x]\n",
5864 __func__, STATUS_FAILURE);
5865
5866 /*
5867 * Gave up after several attempts
5868 */
5869 return STATUS_FAILURE;
5870}
5871
5872#endif
5873/*=============================================================================
5874 =============================================================================
5875 === ===
5876 === *** END **** END **** END **** END *** ===
5877 === SLIC DUMP MANAGEMENT SECTION ===
5878 === ===
5879 === ===
5880 === ===
5881 =============================================================================
5882 ============================================================================*/
5883
5884/******************************************************************************/
5885/**************** MODULE INITIATION / TERMINATION FUNCTIONS ***************/
5886/******************************************************************************/
5887
5888static struct pci_driver slic_driver = {
5889 .name = DRV_NAME,
5890 .id_table = slic_pci_tbl,
5891 .probe = slic_entry_probe,
5892 .remove = slic_entry_remove,
5893#if SLIC_POWER_MANAGEMENT_ENABLED
5894 .suspend = slicpm_suspend,
5895 .resume = slicpm_resume,
5896#endif
5897/* .shutdown = slic_shutdown, MOOK_INVESTIGATE */
5898};
5899
5900static int __init slic_module_init(void)
5901{
5902 struct pci_device_id *pcidev;
5903 int ret;
5904
5905/* DBG_MSG("slicoss: %s ENTER cpu %d\n", __func__, smp_processor_id()); */
5906
5907 slic_init_driver();
5908
5909 if (debug >= 0 && slic_debug != debug)
5910 printk(SLICLEVEL "slicoss: debug level is %d.\n", debug);
5911 if (debug >= 0)
5912 slic_debug = debug;
5913
5914 pcidev = (struct pci_device_id *)slic_driver.id_table;
5915/* DBG_MSG("slicoss: %s call pci_module_init jiffies[%lx] cpu #%d\n",
5916 __func__, jiffies, smp_processor_id()); */
5917
5918 ret = pci_register_driver(&slic_driver);
5919
5920/* DBG_MSG("slicoss: %s EXIT after call pci_module_init jiffies[%lx] "
5921 "cpu #%d status[%x]\n",__func__, jiffies,
5922 smp_processor_id(), ret); */
5923
5924 return ret;
5925}
5926
5927static void __exit slic_module_cleanup(void)
5928{
5929/* DBG_MSG("slicoss: %s ENTER\n", __func__); */
5930 pci_unregister_driver(&slic_driver);
5931 slic_debug_cleanup();
5932/* DBG_MSG("slicoss: %s EXIT\n", __func__); */
5933}
5934
5935module_init(slic_module_init);
5936module_exit(slic_module_cleanup);
diff --git a/drivers/staging/staging.c b/drivers/staging/staging.c
new file mode 100644
index 00000000000..233e589c093
--- /dev/null
+++ b/drivers/staging/staging.c
@@ -0,0 +1,19 @@
1#include <linux/kernel.h>
2#include <linux/init.h>
3#include <linux/module.h>
4
5static int __init staging_init(void)
6{
7 return 0;
8}
9
10static void __exit staging_exit(void)
11{
12}
13
14module_init(staging_init);
15module_exit(staging_exit);
16
17MODULE_AUTHOR("Greg Kroah-Hartman");
18MODULE_DESCRIPTION("Staging Core");
19MODULE_LICENSE("GPL");
diff --git a/drivers/staging/sxg/Kconfig b/drivers/staging/sxg/Kconfig
new file mode 100644
index 00000000000..1ae35080660
--- /dev/null
+++ b/drivers/staging/sxg/Kconfig
@@ -0,0 +1,10 @@
1config SXG
2 tristate "Alacritech SLIC Technology Non-Accelerated 10Gbe support"
3 depends on PCI && NETDEV_10000
4 default n
5 help
6 This driver supports the Alacritech SLIC Technology Non-Accelerated
7 10Gbe network cards.
8
9 To compile this driver as a module, choose
10 M here: the module will be called sxg.
diff --git a/drivers/staging/sxg/Makefile b/drivers/staging/sxg/Makefile
new file mode 100644
index 00000000000..ec48faa7b3e
--- /dev/null
+++ b/drivers/staging/sxg/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_SXG) += sxg.o
diff --git a/drivers/staging/sxg/README b/drivers/staging/sxg/README
new file mode 100644
index 00000000000..4d1ddbe4c33
--- /dev/null
+++ b/drivers/staging/sxg/README
@@ -0,0 +1,13 @@
1This is the rough cut at a driver for the Alacritech SLIC Technology
2Non-Accelerated 10Gbe network driver.
3
4TODO:
5 - lindent the code
6 - remove typedefs
7 - remove wrappers
8 - checkpatch.pl cleanups
9 - new functionality that the card needs
10
11Please send patches to:
12 Greg Kroah-Hartman <gregkh@suse.de>
13for any cleanups that you do to this driver.
diff --git a/drivers/staging/sxg/saharadbgdownload.h b/drivers/staging/sxg/saharadbgdownload.h
new file mode 100644
index 00000000000..d8865ba0504
--- /dev/null
+++ b/drivers/staging/sxg/saharadbgdownload.h
@@ -0,0 +1,4854 @@
1#define SAHARA_UCODE_VERS_STRING "$Revision: 1.1 $"
2#define SAHARA_UCODE_VERS_DATE "$Date: 2008/06/27 12:58:27 $"
3#define SAHARA_UCODE_HOSTIF_ID 3
4
5static u32 SNumSections = 0x2;
6static u32 SSectionSize[] =
7{
8 0x0000e274, 0x0000000c,
9};
10
11static u32 SSectionStart[] =
12{
13 0x00000000, 0x00001fff,
14};
15
16static unsigned char SaharaUCode[2][57972] =
17{
18{
19 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0x4d, 0x29, 0x3a,
20 0x00, 0x00, 0xb2, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
21 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
22 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
23 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
24 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
25 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
26 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
27 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
28 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x02, 0x00, 0x36, 0x32,
29 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x92,
30 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
31 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
32 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
33 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
34 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
35 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
36 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
37 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
38 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x40, 0x2b, 0x92,
39 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
40 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
41 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
42 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
43 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
44 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
45 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
46 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x98, 0x1e, 0x80, 0xe9, 0x9a,
47 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
48 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
49 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
50 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x0f, 0x80, 0x28, 0x92,
51 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x00, 0x00, 0x92,
52 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x40, 0x00, 0x92,
53 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x80, 0x00, 0x92,
54 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0xc0, 0x00, 0x92,
55 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x00, 0x01, 0x92,
56 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x40, 0x01, 0x92,
57 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x80, 0x01, 0x92,
58 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0xc0, 0x01, 0x92,
59 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x00, 0x02, 0x92,
60 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x40, 0x02, 0x92,
61 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x80, 0x02, 0x92,
62 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
63 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x00, 0x03, 0x92,
64 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x40, 0x03, 0x92,
65 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0x80, 0x03, 0x92,
66 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x0f, 0xc0, 0x03, 0x92,
67 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x5f, 0x3f, 0x00, 0x34,
68 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x42, 0xff, 0xfc, 0xb0,
69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x12, 0x80, 0xfd, 0x3a,
70 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
71 0x8a, 0x11, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0x8d, 0xfd, 0xbc,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x12, 0x80, 0xfd, 0x3a,
73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xc0, 0x01, 0x32,
74 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x84, 0x82, 0x4d, 0x28, 0x1a,
75 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5f, 0x0a, 0xf6, 0x94,
76 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x92,
77 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x92,
78 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x90, 0x0e, 0x80, 0x18, 0x92,
79 0x00, 0x00, 0xd2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x20, 0x92,
80 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x21, 0x92,
81 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x21, 0x92,
82 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x85, 0x21, 0x90,
83 0x00, 0x00, 0x4b, 0x03, 0x00, 0x00, 0x00, 0xec, 0x02, 0xc0, 0x22, 0x92,
84 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
85 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x40, 0x18, 0x9d,
86 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x92,
87 0x00, 0x00, 0x8b, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
88 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
89 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
90 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x21, 0x92,
91 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe8, 0x02, 0x00, 0x90, 0x72,
92 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xb2, 0x00, 0xe9, 0xb6,
93 0x00, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0x7c, 0x1e, 0xc0, 0xe7, 0x9a,
94 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x13, 0x40, 0x01, 0x39,
95 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0x08, 0xb8, 0x01, 0x00, 0x94,
96 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb3, 0x40, 0x01, 0x39,
97 0x00, 0x00, 0xb0, 0x03, 0xb2, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xb2,
98 0x00, 0x00, 0x8a, 0x11, 0x17, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
99 0x00, 0x00, 0x69, 0x05, 0x00, 0x10, 0x01, 0xf8, 0x02, 0x00, 0x6e, 0x92,
100 0x00, 0x00, 0x8a, 0x11, 0x0a, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0xb2,
101 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
102 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x40, 0x18, 0xd2,
103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x2b, 0x32,
104 0x00, 0x00, 0x57, 0x00, 0x80, 0x01, 0x00, 0x80, 0x12, 0x81, 0xfc, 0xb6,
105 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x2b, 0xbc,
106 0x02, 0x00, 0x57, 0x00, 0xb0, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0xb9,
107 0x00, 0x00, 0x5a, 0x00, 0x04, 0x01, 0x00, 0x80, 0x02, 0xc0, 0xb0, 0xbc,
108 0x00, 0x00, 0x60, 0x00, 0xa0, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
109 0x00, 0x00, 0x5c, 0x00, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x4a, 0xd0, 0xb6,
110 0x00, 0x00, 0x60, 0x00, 0xa0, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
111 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0xcd, 0x4a, 0xd0, 0x34,
112 0x00, 0x00, 0xfa, 0x0f, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xd2,
113 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xbc,
114 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
115 0x00, 0x00, 0x54, 0x00, 0x03, 0x01, 0x00, 0xb0, 0x02, 0x40, 0x18, 0xbd,
116 0x08, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xa3, 0x40, 0x01, 0x99,
117 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x16, 0x32,
118 0x00, 0x00, 0x67, 0x00, 0x03, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x80, 0xbd,
119 0x00, 0x00, 0x76, 0x00, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
120 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0x39,
121 0x76, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
122 0x00, 0x00, 0x6b, 0x00, 0x12, 0x01, 0x00, 0x5c, 0x08, 0x80, 0x22, 0xb2,
123 0x00, 0x00, 0x65, 0x00, 0x04, 0x01, 0x00, 0x80, 0x82, 0x85, 0x80, 0xbc,
124 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
125 0x63, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68, 0x8b, 0x80, 0x35,
127 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xb8, 0xff, 0x85, 0x30,
128 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x21, 0xff, 0x38,
129 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x4d, 0x80, 0x3a,
130 0x2c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x0d, 0x80, 0x3a,
131 0x00, 0xc4, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
132 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x54, 0xf2, 0xc1, 0x38, 0xb4,
133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x12, 0x80, 0x2d, 0x37,
134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x48, 0x41, 0x80, 0x3a,
135 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x86, 0x98, 0x67, 0xc0, 0x82, 0x3a,
136 0x00, 0x00, 0x63, 0x00, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
137 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x62, 0x8b, 0x80, 0xb6,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x12, 0x80, 0x2d, 0x37,
139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x08, 0x80, 0x70, 0x32,
140 0x00, 0x00, 0x7c, 0x00, 0x90, 0x99, 0x86, 0x2c, 0x28, 0xde, 0x82, 0xba,
141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x18, 0xc0, 0x82, 0x3a,
142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x08, 0xc5, 0x82, 0x30,
143 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0xc5, 0x82, 0xbc,
144 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68, 0x8b, 0x80, 0x94,
145 0x08, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x40, 0x01, 0x99,
146 0x08, 0x00, 0x38, 0x03, 0x0c, 0x00, 0x00, 0xf8, 0x53, 0x40, 0x01, 0xb9,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x80, 0x30,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x02, 0x32,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x3d, 0x32,
150 0x00, 0x00, 0x7e, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x80, 0xd2,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x32,
152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
153 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x59, 0x00, 0x80, 0xd7,
154 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x62, 0x80, 0x2f, 0xb6,
155 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0x3a, 0x80, 0xbc,
156 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0x3a, 0x80, 0xbc,
157 0x00, 0x90, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x0d, 0x80, 0xb0,
158 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x32,
160 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa9, 0x0d, 0x80, 0x32,
161 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x54, 0x02, 0xa4, 0x38, 0xb2,
162 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x2c, 0x08, 0x00, 0x37, 0x32,
163 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x08, 0x80, 0x72, 0x32,
165 0x00, 0x00, 0x96, 0x00, 0x9f, 0x00, 0x00, 0x5c, 0x08, 0x00, 0x72, 0xb2,
166 0x87, 0x00, 0x95, 0x00, 0x80, 0x01, 0x00, 0x80, 0x82, 0xcd, 0x85, 0xb0,
167 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xd8, 0xc1, 0x82, 0x94,
168 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x88, 0xc1, 0x82, 0x94,
169 0x00, 0x00, 0x9e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x52, 0x7d, 0x80, 0xbc,
170 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x80, 0xd0,
171 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0x05, 0x80, 0xb0,
172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0xc0, 0xf5, 0x3a,
173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x02, 0x32,
174 0x00, 0x00, 0xa4, 0x03, 0x04, 0x00, 0x00, 0xdc, 0x43, 0x60, 0x3d, 0xb3,
175 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
176 0x9a, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
177 0x00, 0x0f, 0x97, 0x00, 0x04, 0x00, 0x00, 0x80, 0x82, 0xcd, 0x85, 0xb0,
178 0x10, 0x00, 0xa5, 0x00, 0x87, 0x00, 0x00, 0x78, 0x79, 0x21, 0x16, 0xb8,
179 0x01, 0x00, 0xa5, 0x00, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x97, 0xbc,
180 0x87, 0x00, 0xaf, 0x00, 0x87, 0x00, 0x00, 0x78, 0x89, 0xcd, 0x85, 0xb0,
181 0x00, 0x00, 0xa4, 0x00, 0x04, 0x01, 0x00, 0x80, 0x12, 0x80, 0x97, 0xbc,
182 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xd8, 0xc1, 0x82, 0x94,
183 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x88, 0xc1, 0x82, 0x94,
184 0x00, 0x00, 0xaf, 0x00, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc0, 0x85, 0xb6,
185 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x98, 0xc1, 0x82, 0x94,
186 0x00, 0x00, 0xad, 0x00, 0x80, 0x01, 0x00, 0x80, 0xd2, 0xc1, 0x82, 0xb6,
187 0x00, 0x00, 0xaf, 0x00, 0x80, 0x01, 0x00, 0x80, 0x72, 0x80, 0xfc, 0xb6,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xa8, 0x42, 0x3d, 0x72, 0x30,
189 0x00, 0x00, 0x00, 0x00, 0x54, 0x18, 0x99, 0xb1, 0xf2, 0xc0, 0x7c, 0x30,
190 0x00, 0x00, 0xd6, 0x00, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
191 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
192 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0xc1, 0x82, 0xb6,
193 0x00, 0x00, 0xa9, 0x00, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0xfc, 0xb6,
194 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x32,
195 0x80, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x80, 0xc2, 0xcd, 0x85, 0x30,
196 0x00, 0x00, 0xc6, 0x00, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
197 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0xcd, 0x85, 0x30,
198 0x80, 0x00, 0xc6, 0x00, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0x97, 0xbc,
199 0xa0, 0x00, 0xc6, 0x00, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0x97, 0xbc,
200 0x00, 0x00, 0xbd, 0x00, 0x80, 0x01, 0x00, 0x80, 0x62, 0x80, 0xfc, 0xb6,
201 0x87, 0x00, 0xbd, 0x00, 0x87, 0x00, 0x00, 0x78, 0x89, 0xcd, 0x85, 0xb0,
202 0x00, 0x00, 0xb9, 0x00, 0x04, 0x00, 0x00, 0x80, 0x12, 0x80, 0x97, 0xbc,
203 0x00, 0x00, 0xbd, 0x00, 0x04, 0x01, 0x00, 0x80, 0x22, 0x80, 0x97, 0xbc,
204 0x00, 0x00, 0xbd, 0x00, 0x80, 0x01, 0x00, 0x80, 0x72, 0xc1, 0x85, 0xb6,
205 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x79, 0x61, 0x16, 0x38,
206 0x00, 0x00, 0xc4, 0x00, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
207 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xb8, 0xc1, 0x82, 0x94,
208 0x00, 0x00, 0xc4, 0x00, 0x80, 0x01, 0x00, 0x80, 0x52, 0x80, 0xfc, 0xb6,
209 0x00, 0x00, 0xc4, 0x00, 0x80, 0x00, 0x00, 0x80, 0x72, 0xc1, 0x85, 0xb6,
210 0x00, 0x00, 0xc4, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0xc1, 0x85, 0xb6,
211 0x00, 0x00, 0xc4, 0x00, 0x80, 0x01, 0x00, 0x80, 0xd2, 0xc1, 0x85, 0xb6,
212 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x79, 0xe1, 0x16, 0x38,
213 0x00, 0x00, 0xc4, 0x00, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
214 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xc8, 0xc1, 0x82, 0x94,
215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x32,
216 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xa8, 0xc1, 0x82, 0x94,
217 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x79, 0x21, 0x17, 0x38,
218 0x00, 0x00, 0xd6, 0x00, 0x04, 0x00, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
219 0x00, 0x00, 0xd6, 0x00, 0x04, 0x01, 0x00, 0x80, 0x22, 0x80, 0x97, 0xbc,
220 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x89, 0x8d, 0x72, 0x30,
221 0x05, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xa9, 0xdc, 0x17, 0x38,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x22, 0x00, 0x90, 0x37,
223 0x00, 0x00, 0xd6, 0x00, 0x80, 0x00, 0x86, 0x80, 0x22, 0x24, 0x7c, 0xb6,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x05, 0x80, 0x30,
225 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
226 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
227 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x80, 0xd0,
228 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0x05, 0x80, 0xb0,
229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x02, 0x32,
230 0x00, 0x00, 0xa4, 0x03, 0x04, 0x00, 0x00, 0xdc, 0x43, 0x60, 0x3d, 0xb3,
231 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
232 0xd2, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
233 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
234 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x59, 0x00, 0x80, 0xd7,
235 0x00, 0x00, 0xdd, 0x00, 0x12, 0x01, 0x00, 0x60, 0x08, 0x40, 0x23, 0xb2,
236 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
237 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x80, 0xd2,
238 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
239 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0xc0, 0xf5, 0x9a,
240 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x24, 0x08, 0x00, 0x23, 0xb2,
241 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x20, 0x08, 0xc0, 0x23, 0xb2,
242 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x18, 0x08, 0x80, 0x23, 0xb2,
243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x02, 0x32,
244 0x00, 0x00, 0xe4, 0x00, 0x04, 0x00, 0x00, 0xdc, 0x43, 0x60, 0x3d, 0xb3,
245 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
246 0xe0, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x32,
248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x32,
250 0x00, 0xc0, 0xf4, 0x00, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
251 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0xc0, 0xf5, 0x3a,
253 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x38, 0x02, 0x80, 0x81, 0xb2,
254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x82, 0x32,
255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x40, 0x82, 0x32,
256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0x00, 0x86, 0x32,
257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x05, 0x80, 0x30,
258 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
259 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
260 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x80, 0xd0,
261 0x00, 0x00, 0xa4, 0x03, 0x12, 0x01, 0x00, 0x68, 0x02, 0x05, 0x80, 0xb0,
262 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
263 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x78, 0x09, 0x00, 0x72, 0x32,
264 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x29, 0xc1, 0x72, 0x3c,
265 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x81, 0x32,
266 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x07, 0x00, 0x82, 0x32,
267 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x07, 0x80, 0x97, 0x32,
268 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0x20, 0x90, 0x39,
269 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0xc0, 0x82, 0x32,
270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x80, 0x32,
272 0x00, 0x00, 0xff, 0x00, 0x80, 0x01, 0x00, 0x80, 0xa2, 0xc1, 0x82, 0xb6,
273 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x57, 0x00, 0x80, 0x97,
274 0x05, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xa0, 0x04, 0x39,
275 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0x40, 0x82, 0xb2,
276 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x86, 0x32,
277 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
278 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
279 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0x05, 0x80, 0xb0,
280 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x80, 0xd0,
281 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x05, 0x80, 0x30,
282 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
283 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
284 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
285 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0x08, 0xe8, 0x81, 0x80, 0x34,
286 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x45, 0x90, 0x30,
288 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x12, 0x00, 0x28, 0xbc,
289 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
290 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
291 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x32,
292 0x00, 0x00, 0x11, 0x01, 0xf0, 0x01, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xb2,
293 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x59, 0xc0, 0x6e, 0x37,
294 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x78, 0x19, 0xc0, 0x6e, 0x3a,
295 0x00, 0x00, 0x00, 0x00, 0x4e, 0x04, 0x01, 0xec, 0x06, 0xbd, 0x97, 0x30,
296 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf4, 0x1e, 0x40, 0xef, 0x3a,
297 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x09, 0x32,
298 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x36, 0xbc,
299 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x77, 0xc0, 0x29, 0x37,
300 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x17, 0x3d, 0x90, 0xba,
301 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0xf4, 0x32,
302 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
303 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
304 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x83, 0xd2,
305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x72, 0x00, 0x2b, 0x30,
306 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x3d, 0x32,
307 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x32,
309 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
310 0x00, 0x00, 0xa4, 0x01, 0x80, 0x38, 0x00, 0x80, 0x22, 0xc0, 0x72, 0xb6,
311 0x00, 0x00, 0x27, 0x01, 0x12, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x20, 0xb2,
312 0x00, 0x00, 0x2c, 0x01, 0x12, 0x01, 0x00, 0x5c, 0x08, 0x80, 0x20, 0xb2,
313 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x02, 0x80, 0x2c, 0xb2,
314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x80, 0xff, 0x3a,
315 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x72, 0x00, 0x85, 0x30,
316 0x00, 0x00, 0x89, 0x01, 0x04, 0x00, 0x00, 0xdc, 0x43, 0x60, 0x3d, 0xb3,
317 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
318 0x28, 0x01, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
319 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xcd, 0x85, 0x37,
320 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x72, 0x32,
321 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x24, 0x08, 0x00, 0x72, 0x32,
322 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x6c, 0x08, 0x00, 0x72, 0xb2,
323 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4c, 0x08, 0x00, 0x72, 0x32,
324 0x00, 0x00, 0x8a, 0x11, 0x04, 0x20, 0x00, 0x18, 0x08, 0x00, 0x72, 0xb2,
325 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x08, 0x00, 0x72, 0x32,
326 0x00, 0x00, 0x8a, 0x11, 0x02, 0x00, 0x00, 0x80, 0x52, 0xbd, 0x82, 0xbc,
327 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x08, 0x00, 0x72, 0x32,
328 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x80, 0x82, 0x32,
329 0x00, 0x00, 0x3d, 0x01, 0x06, 0x00, 0x00, 0x80, 0x62, 0xa0, 0x82, 0xbc,
330 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x3c, 0x00, 0x14, 0x28, 0x80, 0x72, 0xbc,
331 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x06, 0x32,
332 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x77, 0x4a, 0x09, 0x39,
333 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0x00, 0x82, 0xb2,
334 0x00, 0x00, 0x00, 0x00, 0xca, 0x19, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
335 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
336 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
337 0x00, 0x00, 0x64, 0x01, 0x04, 0x38, 0x00, 0x78, 0xd9, 0xc5, 0x72, 0xb0,
338 0x00, 0x00, 0x41, 0x01, 0x80, 0x01, 0x00, 0x80, 0x02, 0x80, 0x97, 0xb6,
339 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0x80, 0x2f, 0x34,
340 0x00, 0x00, 0x43, 0x01, 0x80, 0x01, 0x00, 0x80, 0x12, 0x80, 0x97, 0xb6,
341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x92, 0x80, 0x2f, 0x34,
342 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
343 0x04, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3c, 0xb8, 0x1c, 0x17, 0x38,
344 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x28, 0xc0, 0x83, 0x37,
345 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x2c, 0x08, 0xc0, 0x72, 0x32,
346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xb8, 0xe0, 0x83, 0x3a,
347 0x00, 0x00, 0x00, 0x00, 0xcb, 0x29, 0x00, 0x20, 0x07, 0x00, 0x00, 0x32,
348 0x00, 0x00, 0x63, 0x01, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x81, 0xbc,
349 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x78, 0xa0, 0x81, 0x3e,
350 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xd8, 0xe0, 0x81, 0x3c,
351 0x00, 0x00, 0x51, 0x01, 0x06, 0x3a, 0x00, 0x80, 0xb2, 0x5c, 0x83, 0xbc,
352 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x89, 0xc1, 0x72, 0x37,
353 0x07, 0x00, 0x50, 0x01, 0x2b, 0x01, 0x00, 0x04, 0x79, 0x0a, 0x04, 0xb9,
354 0x00, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x04, 0x19, 0x41, 0x90, 0x34,
355 0x00, 0x00, 0x54, 0x01, 0x00, 0x3a, 0x00, 0x2c, 0x07, 0x00, 0x00, 0x92,
356 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x2c, 0xd7, 0xe0, 0x72, 0x3c,
357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x32,
358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x32,
359 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x64, 0x83, 0x32,
360 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
361 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0xb2,
362 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
363 0x00, 0x00, 0x73, 0x01, 0x04, 0x00, 0x00, 0x28, 0xd8, 0xa0, 0x82, 0xbc,
364 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
365 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x20, 0x80, 0x3a,
366 0x00, 0x00, 0x5e, 0x01, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
367 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
368 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
369 0x00, 0x00, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x41, 0x90, 0xf4,
370 0x00, 0x00, 0x61, 0x01, 0x04, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0xbc,
371 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0x9a,
372 0x00, 0x00, 0x84, 0x10, 0x00, 0x00, 0x00, 0x44, 0x08, 0x80, 0x2d, 0xf2,
373 0x00, 0x00, 0x49, 0x01, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x92,
374 0x00, 0x00, 0x00, 0x00, 0xcb, 0x19, 0x00, 0x20, 0x07, 0x00, 0x00, 0x32,
375 0x07, 0x00, 0x66, 0x01, 0x2b, 0x01, 0x00, 0x04, 0x79, 0x0a, 0x02, 0xb9,
376 0x00, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x04, 0x19, 0x41, 0x90, 0x34,
377 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xa7, 0xa0, 0x81, 0x3e,
378 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
379 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0xb2,
380 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
381 0x00, 0x00, 0x73, 0x01, 0x04, 0x00, 0x00, 0x28, 0xd8, 0xa0, 0x82, 0xbc,
382 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x62, 0x60, 0x83, 0xbc,
383 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x20, 0x80, 0x3a,
384 0x00, 0x00, 0x70, 0x01, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
385 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
386 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
387 0x00, 0x00, 0xd7, 0x10, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x41, 0x90, 0xf4,
388 0x00, 0x00, 0x84, 0x10, 0x00, 0x00, 0x00, 0x44, 0x08, 0x80, 0x2d, 0xf2,
389 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x92,
390 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
391 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x41, 0x90, 0x34,
392 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
393 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
394 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
395 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x09, 0x80, 0x73, 0x32,
396 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x08, 0x89, 0x80, 0x73, 0x37,
397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x86, 0x32,
398 0x41, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x8c, 0x07, 0x00, 0x36, 0x32,
399 0x00, 0x00, 0x7f, 0x01, 0x29, 0x08, 0x00, 0x80, 0x07, 0xc0, 0x85, 0xb2,
400 0x00, 0x00, 0x82, 0x01, 0x28, 0x10, 0x00, 0x8c, 0x07, 0x00, 0x00, 0xb2,
401 0x00, 0x00, 0x83, 0x01, 0x00, 0x12, 0x00, 0x84, 0x07, 0x00, 0x00, 0x92,
402 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x8c, 0xf7, 0xe0, 0x82, 0x3a,
403 0x00, 0x00, 0x82, 0x01, 0x28, 0x18, 0x00, 0x80, 0x07, 0x40, 0x90, 0xb2,
404 0x00, 0x00, 0x83, 0x01, 0x00, 0x12, 0x00, 0x84, 0x07, 0x00, 0x00, 0x92,
405 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x84, 0x27, 0xe4, 0x82, 0x32,
406 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x72, 0x00, 0x85, 0x30,
407 0x00, 0x00, 0x87, 0x01, 0x04, 0x00, 0x00, 0xdc, 0x43, 0x60, 0x3d, 0xb3,
408 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
409 0x83, 0x01, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
410 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x32,
411 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x52, 0x81, 0x2c, 0xb4,
412 0x00, 0x00, 0x89, 0x01, 0xf2, 0x01, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xb4,
413 0x00, 0x00, 0x8a, 0x01, 0xf0, 0x01, 0x00, 0x08, 0x38, 0x81, 0x80, 0xb4,
414 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xf4, 0x1e, 0x40, 0xef, 0x3c,
415 0x00, 0x00, 0x93, 0x01, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
416 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x3b, 0x32,
417 0x00, 0x00, 0x8e, 0x01, 0xb9, 0x00, 0x00, 0x78, 0xc9, 0x3b, 0x3a, 0xbc,
418 0x00, 0x00, 0x92, 0x01, 0x02, 0x00, 0x00, 0x80, 0x82, 0x80, 0x97, 0xbc,
419 0x00, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x32,
420 0x00, 0x00, 0xa4, 0x03, 0xe2, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
421 0x00, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x3a, 0x32,
422 0x00, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xba, 0x83, 0x3c,
424 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xbd, 0x97, 0x30,
425 0x00, 0x00, 0x8a, 0x11, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0xf4, 0xbd,
426 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x97, 0xb6,
427 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0e, 0x80, 0x83, 0x32,
428 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x22, 0x7a, 0xe8, 0xba,
429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xe8, 0x32,
430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xc0, 0x29, 0x37,
431 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0d, 0x90, 0x3a,
432 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x3a,
433 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x32,
434 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x90, 0x32,
435 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0xe8, 0x32,
436 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0xe8, 0x32,
437 0x00, 0x00, 0xa4, 0x03, 0x12, 0x01, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0xb4,
438 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
439 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
440 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
441 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2f, 0xb6,
442 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x08, 0x80, 0x72, 0x32,
443 0x04, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x54, 0xa8, 0x5c, 0x16, 0x38,
444 0x0b, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x2c, 0xa8, 0xdc, 0x16, 0x38,
445 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x88, 0x4d, 0x85, 0x3a,
446 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
447 0x10, 0x00, 0xe2, 0x10, 0x00, 0x38, 0x00, 0x14, 0xa9, 0x9c, 0x87, 0xd9,
448 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x72, 0x32,
449 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x24, 0x08, 0x00, 0x72, 0x32,
450 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x6c, 0x08, 0x00, 0x72, 0x32,
451 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4c, 0x08, 0x00, 0x72, 0x32,
452 0x00, 0x00, 0x8a, 0x11, 0x04, 0x20, 0x00, 0x18, 0x08, 0x00, 0x72, 0xb2,
453 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x08, 0x00, 0x72, 0x32,
454 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x3c, 0x00, 0x14, 0x18, 0x80, 0x72, 0xbc,
455 0x00, 0x00, 0xbb, 0x01, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x81, 0xbc,
456 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3c,
457 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x06, 0x32,
458 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x77, 0x4a, 0x09, 0x39,
459 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0x00, 0x82, 0xb2,
460 0x00, 0x00, 0x00, 0x00, 0xca, 0x19, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
461 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
463 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x78, 0xc0, 0x29, 0x37,
464 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x88, 0x4d, 0x86, 0x3a,
465 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x32,
466 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x32,
467 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x77, 0xa0, 0x81, 0x3e,
468 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x40, 0x86, 0x32,
469 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0xb2,
470 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
471 0x00, 0x00, 0xd6, 0x01, 0x04, 0x00, 0x00, 0x1c, 0xd8, 0xe0, 0x81, 0xbc,
472 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
473 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xd8, 0x60, 0x86, 0x3a,
474 0x00, 0x00, 0xca, 0x01, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
475 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0x02, 0xc0, 0x38, 0xb2,
476 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
477 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
478 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
479 0x00, 0x00, 0xd0, 0x01, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
480 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
481 0x00, 0x00, 0xcb, 0x01, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
482 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
483 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
485 0x00, 0x00, 0xd4, 0x01, 0x04, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0xbc,
486 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0x9a,
487 0x00, 0x00, 0x32, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x08, 0x80, 0x2d, 0xf2,
488 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x92,
489 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
490 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
491 0x00, 0x00, 0xdc, 0x01, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
492 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
493 0x00, 0x00, 0xd7, 0x01, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
494 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
495 0x00, 0x00, 0xe8, 0x01, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x84, 0xbc,
496 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x40, 0x00, 0x32,
497 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x22, 0x40, 0x85, 0x3a,
498 0x04, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x40, 0x88, 0xcd, 0x74, 0x36,
499 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x28, 0x00, 0x84, 0x37,
500 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x32,
501 0x14, 0x00, 0xe8, 0x01, 0x04, 0x00, 0x00, 0x1c, 0x88, 0x0d, 0x84, 0xbc,
502 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
503 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x61, 0x85, 0x3a,
504 0x80, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x97, 0xbc,
505 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xd8, 0x60, 0x86, 0x3a,
506 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x92,
507 0x00, 0x00, 0xea, 0x01, 0x04, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0xbc,
508 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0x9a,
509 0x00, 0x00, 0x32, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x08, 0x80, 0x2d, 0xf2,
510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x32,
511 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x40, 0x00, 0x32,
512 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x22, 0xc0, 0x82, 0x3a,
513 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xb8, 0x60, 0x85, 0x3c,
514 0x04, 0x00, 0xf2, 0x01, 0x81, 0x00, 0x00, 0x60, 0x88, 0xcd, 0x74, 0xb6,
515 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x28, 0xf8, 0xa0, 0x75, 0x3c,
516 0x00, 0x00, 0xf3, 0x01, 0x00, 0x08, 0x00, 0x74, 0x08, 0x80, 0x75, 0x92,
517 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x28, 0xf8, 0xa0, 0x75, 0x3c,
518 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x08, 0xa1, 0x82, 0x3c,
519 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xf2, 0x60, 0x2a, 0x3a,
520 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x48, 0x08, 0x00, 0x75, 0x32,
521 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x7c, 0x08, 0x80, 0x75, 0x32,
522 0x09, 0x00, 0xf9, 0x01, 0x04, 0x1a, 0x00, 0x70, 0x88, 0xcd, 0x74, 0xb0,
523 0x09, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x4c, 0x87, 0xcd, 0x74, 0x31,
524 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x88, 0x4d, 0x86, 0x31,
525 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0x40, 0x86, 0x3a,
526 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
527 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x82, 0xd2,
528 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x20, 0xb2,
529 0x00, 0x00, 0x01, 0x02, 0x12, 0x01, 0x00, 0x5c, 0x08, 0x80, 0x20, 0xb2,
530 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x02, 0x80, 0x2c, 0xb2,
531 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x92,
532 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x40, 0x00, 0x32,
533 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xcd, 0x85, 0x37,
534 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe8, 0xa1, 0x82, 0x3e,
535 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x22, 0xc0, 0x82, 0x3a,
536 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x08, 0xe1, 0x81, 0x3a,
537 0x00, 0x00, 0x0b, 0x02, 0x04, 0x01, 0x00, 0x80, 0x42, 0x00, 0x86, 0xbc,
538 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x58, 0x07, 0x40, 0x87, 0x32,
539 0x00, 0x00, 0x0a, 0x02, 0x8f, 0x01, 0x00, 0x74, 0x18, 0x40, 0x87, 0xba,
540 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x08, 0x00, 0x00, 0x32,
541 0x00, 0x00, 0x0d, 0x02, 0x00, 0x04, 0x00, 0x58, 0xf7, 0xa0, 0x86, 0x9a,
542 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf9, 0xa0, 0x86, 0x3a,
543 0x28, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x58, 0x87, 0x8d, 0x97, 0x3c,
544 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x22, 0x40, 0x85, 0x3a,
545 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x50, 0x07, 0x80, 0x84, 0x32,
546 0x00, 0x00, 0x11, 0x02, 0x04, 0x01, 0x00, 0x80, 0x72, 0xa0, 0x82, 0xbc,
547 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x4c, 0xc7, 0xe1, 0x74, 0x32,
548 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x78, 0xa0, 0x84, 0x3a,
549 0x00, 0x00, 0x14, 0x02, 0x90, 0x01, 0x00, 0x78, 0xf9, 0xa1, 0x86, 0xba,
550 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x19, 0x80, 0x97, 0x3a,
551 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x58, 0x07, 0x80, 0x97, 0x32,
552 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x58, 0xa1, 0x86, 0x3a,
553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
554 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x60, 0x85, 0x39,
555 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
556 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0x86, 0x32,
557 0x00, 0x00, 0x1a, 0x02, 0x12, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x38, 0xb2,
558 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x00, 0x32,
559 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x84, 0x32,
560 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x57, 0x21, 0x80, 0x3a,
561 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x57, 0x61, 0x86, 0x3a,
562 0x00, 0x00, 0x1f, 0x02, 0x12, 0x00, 0x00, 0x4c, 0xf2, 0xc1, 0x38, 0xb4,
563 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x00, 0x32,
564 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0xc0, 0x00, 0x32,
565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x32,
566 0x00, 0x00, 0x00, 0x00, 0xcb, 0x19, 0x00, 0x20, 0x07, 0x00, 0x00, 0x32,
567 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0x80, 0x3a,
568 0x07, 0x00, 0x27, 0x02, 0x2b, 0x01, 0x00, 0x04, 0x79, 0x0a, 0x02, 0xb9,
569 0x00, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x04, 0x19, 0x41, 0x90, 0x34,
570 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x77, 0xa0, 0x81, 0x3e,
571 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
572 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0xb2,
573 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
574 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xd8, 0xa0, 0x82, 0x3c,
575 0x00, 0x00, 0x41, 0x02, 0x04, 0x00, 0x00, 0x1c, 0xd8, 0xe0, 0x81, 0xbc,
576 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x62, 0x60, 0x83, 0xbc,
577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x20, 0x80, 0x3a,
578 0x00, 0x00, 0x32, 0x02, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
579 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
580 0x00, 0x00, 0x3f, 0x02, 0x00, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
581 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x41, 0x90, 0x34,
582 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
583 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
584 0x00, 0x00, 0x3d, 0x02, 0x06, 0x01, 0x00, 0x80, 0x22, 0x80, 0x2d, 0xbc,
585 0x00, 0x00, 0x3a, 0x02, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
586 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
587 0x00, 0x00, 0x34, 0x02, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
588 0x00, 0x00, 0x35, 0x02, 0x00, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0x92,
589 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x22, 0x80, 0x2d, 0xbc,
590 0x00, 0x00, 0x34, 0x02, 0x67, 0x00, 0x00, 0x80, 0x18, 0x00, 0x88, 0xbc,
591 0x00, 0x00, 0x35, 0x02, 0x00, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0x92,
592 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
593 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0xc0, 0x00, 0x32,
594 0x00, 0x00, 0x32, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x08, 0x80, 0x2d, 0xf2,
595 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x92,
596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0x41, 0x90, 0x34,
597 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
598 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
599 0x00, 0x00, 0x48, 0x02, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
600 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
601 0x00, 0x00, 0x43, 0x02, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
602 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0x92,
603 0x00, 0x00, 0x4b, 0x02, 0x04, 0x00, 0x00, 0x80, 0x18, 0x00, 0x88, 0xbc,
604 0x00, 0x00, 0x43, 0x02, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
605 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
606 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
607 0x00, 0x00, 0x4f, 0x02, 0x04, 0x01, 0x00, 0x80, 0x42, 0x00, 0x86, 0xbc,
608 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
609 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x89, 0x80, 0x71, 0x37,
610 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x00, 0x32,
611 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x80, 0x71, 0x32,
612 0x00, 0x00, 0x53, 0x02, 0x90, 0x19, 0x00, 0x04, 0xe9, 0x5c, 0x90, 0xba,
613 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, 0x40, 0x90, 0x3a,
614 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x80, 0x86, 0x32,
615 0x41, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x8c, 0x07, 0x00, 0x36, 0x32,
616 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x07, 0xc0, 0x85, 0x32,
617 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x8c, 0x07, 0x40, 0x85, 0x32,
618 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80, 0x07, 0x45, 0x90, 0x30,
619 0x00, 0x00, 0x5a, 0x02, 0x04, 0x01, 0x00, 0x80, 0x42, 0x00, 0x86, 0xbc,
620 0x00, 0x00, 0x5b, 0x02, 0x00, 0x12, 0x00, 0x84, 0x27, 0xe4, 0x82, 0x92,
621 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x84, 0x07, 0x00, 0x00, 0x32,
622 0x00, 0x00, 0x5f, 0x02, 0x27, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0xb2,
623 0x00, 0x00, 0x5f, 0x02, 0x04, 0x00, 0x00, 0x80, 0x42, 0x60, 0x3d, 0xb3,
624 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
625 0x5b, 0x02, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
626 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x72, 0x80, 0x2f, 0x34,
627 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x52, 0x81, 0x2c, 0xb4,
628 0x00, 0x00, 0x64, 0x02, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x82, 0xbc,
629 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x03, 0x00, 0x00, 0x32,
630 0x00, 0x00, 0x89, 0x01, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x92,
631 0x00, 0x00, 0x67, 0x02, 0x04, 0x01, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0xbc,
632 0x00, 0x00, 0x32, 0x0f, 0x00, 0x00, 0x00, 0x44, 0x08, 0x80, 0x2d, 0xf2,
633 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x92,
634 0x00, 0x00, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0x9a,
635 0x08, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
636 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
637 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x40, 0x81, 0xd2,
638 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x45, 0x81, 0x30,
639 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
640 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
641 0x00, 0x00, 0xa4, 0x03, 0x80, 0x01, 0x80, 0x80, 0x32, 0x0b, 0x6a, 0xb6,
642 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x38, 0xf2,
643 0x00, 0x00, 0x72, 0x02, 0x04, 0x06, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
644 0x00, 0x00, 0xa1, 0x03, 0x00, 0x06, 0x01, 0xec, 0x56, 0xe0, 0x6e, 0x9a,
645 0x00, 0x00, 0x00, 0x00, 0xc4, 0x07, 0x01, 0xec, 0x56, 0xe0, 0x6e, 0x3a,
646 0x08, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0xb2,
647 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
648 0x00, 0x00, 0x8a, 0x11, 0x03, 0xb8, 0x00, 0x00, 0x09, 0xc0, 0x6e, 0xbd,
649 0x77, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0x0d, 0x90, 0x3a,
650 0x2e, 0x00, 0x93, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
651 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
652 0x2b, 0x00, 0x93, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
653 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
654 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
655 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
656 0x37, 0x00, 0x93, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
657 0x38, 0x00, 0x93, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
658 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
659 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
660 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
661 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x80, 0x80, 0x32, 0x0b, 0x6a, 0xb6,
662 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x38, 0xf2,
663 0x00, 0x00, 0x86, 0x02, 0x04, 0x00, 0x00, 0x80, 0x52, 0x40, 0x82, 0xbc,
664 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x62, 0x40, 0x82, 0xbc,
665 0x00, 0x00, 0x8a, 0x11, 0x04, 0x05, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
666 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x42, 0x80, 0x2f, 0x34,
667 0x08, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0xb2,
668 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
669 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
670 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
671 0x00, 0x00, 0xe2, 0x10, 0x00, 0x04, 0x01, 0x14, 0x59, 0xc0, 0x6e, 0xd7,
672 0x02, 0x00, 0x8f, 0x02, 0x04, 0xb8, 0x00, 0x80, 0x82, 0xcd, 0x6e, 0xbc,
673 0x08, 0x00, 0x8a, 0x11, 0x04, 0xb9, 0x00, 0x80, 0x82, 0xcd, 0x6e, 0xbc,
674 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
675 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0xec, 0x06, 0x40, 0x00, 0x32,
676 0x00, 0x00, 0x91, 0x02, 0xb5, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
677 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x80, 0xa0, 0x36, 0x0b, 0x6a, 0x34,
678 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x01, 0xe8, 0x06, 0xc0, 0x2c, 0x32,
679 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0x85, 0x2f, 0x30,
681 0x00, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
682 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
683 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
684 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
685 0x60, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0xb0,
686 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
687 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x40, 0x81, 0xd2,
688 0x00, 0x00, 0xa1, 0x02, 0x80, 0x00, 0x80, 0x80, 0x32, 0x0b, 0x6a, 0xb6,
689 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
690 0x00, 0x00, 0xe2, 0x10, 0x00, 0xb8, 0x00, 0x14, 0x09, 0xc0, 0x6e, 0xd2,
691 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
692 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x38, 0xf2,
693 0x00, 0x00, 0xa4, 0x02, 0x04, 0x02, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
694 0x00, 0x00, 0xa1, 0x03, 0x00, 0x02, 0x01, 0xec, 0x56, 0xe0, 0x6e, 0x9a,
695 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x01, 0xec, 0x56, 0xe0, 0x6e, 0x3a,
696 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2f, 0xb6,
697 0x00, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
698 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
699 0x20, 0x00, 0x8a, 0x11, 0x04, 0x39, 0x00, 0x80, 0x82, 0xcd, 0x6e, 0xbc,
700 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
701 0x00, 0x00, 0xe2, 0x10, 0x00, 0x30, 0x00, 0x14, 0x09, 0x00, 0x6e, 0xd2,
702 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
703 0x00, 0x00, 0xe2, 0x10, 0x00, 0x20, 0x01, 0x14, 0x09, 0x00, 0x6e, 0xd2,
704 0x1b, 0x00, 0xaf, 0x02, 0x38, 0x01, 0x00, 0x10, 0x09, 0x00, 0x36, 0xb2,
705 0x00, 0x00, 0xe2, 0x10, 0x00, 0x30, 0x01, 0x14, 0x09, 0x00, 0x6e, 0xd2,
706 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
707 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x79, 0x0b, 0x14, 0x38,
708 0x10, 0x00, 0xe2, 0x10, 0x00, 0x50, 0x01, 0x14, 0xa9, 0x5b, 0x91, 0xd9,
709 0x00, 0x00, 0xbe, 0x02, 0x38, 0x28, 0x00, 0x18, 0x09, 0x00, 0x6e, 0xb2,
710 0x00, 0x00, 0xb6, 0x02, 0x04, 0x21, 0x01, 0x08, 0x69, 0x24, 0x6e, 0xbc,
711 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
712 0x03, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
713 0x00, 0x00, 0xba, 0x02, 0x02, 0x30, 0x00, 0x80, 0x82, 0x9b, 0x90, 0xbc,
714 0x00, 0x00, 0xb9, 0x02, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
715 0x04, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
716 0x05, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
717 0x00, 0x00, 0x8a, 0x11, 0x04, 0x30, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xb2,
718 0x00, 0x00, 0xbd, 0x02, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
719 0x0a, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
720 0x0b, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
721 0x00, 0x00, 0xc1, 0x02, 0x04, 0x21, 0x01, 0x08, 0x69, 0x24, 0x6e, 0xbc,
722 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
723 0x03, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
724 0x00, 0x00, 0xc3, 0x02, 0x02, 0x30, 0x00, 0x80, 0x82, 0x9b, 0x90, 0xbc,
725 0x04, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
726 0x00, 0x00, 0xc5, 0x02, 0x9f, 0x31, 0x01, 0x0c, 0x69, 0x24, 0x6e, 0xbc,
727 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x09, 0x00, 0x00, 0x32,
728 0x00, 0x00, 0xc9, 0x02, 0x04, 0x31, 0x00, 0x80, 0x82, 0x9b, 0x90, 0xbc,
729 0x00, 0x00, 0xc8, 0x02, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
730 0x20, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
731 0x21, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
732 0x00, 0x00, 0xcd, 0x02, 0x04, 0x00, 0x00, 0x80, 0x32, 0xa4, 0x90, 0xbc,
733 0x00, 0x00, 0xcc, 0x02, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
734 0x22, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
735 0x23, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
736 0x00, 0x00, 0xcf, 0x02, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
737 0x20, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
738 0x21, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
739 0x08, 0x00, 0x8a, 0x11, 0x0c, 0x00, 0x00, 0xf8, 0x63, 0x40, 0x01, 0xb9,
740 0x10, 0x00, 0xd4, 0x02, 0xc5, 0x01, 0x00, 0xcc, 0x02, 0x20, 0x15, 0x98,
741 0x08, 0x00, 0x38, 0x03, 0x0c, 0x00, 0x00, 0xf8, 0x43, 0x40, 0x01, 0xb9,
742 0x10, 0x00, 0x00, 0x00, 0xc5, 0x01, 0x00, 0xcc, 0x02, 0x20, 0x15, 0x38,
743 0x00, 0x00, 0x7e, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x80, 0xd0,
744 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
745 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x59, 0x00, 0x80, 0xd7,
746 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
747 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x38, 0xf2,
748 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x08, 0x05, 0x80, 0x30,
749 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
750 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xfa, 0x85, 0xbc,
751 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xfa, 0x85, 0xbc,
752 0x00, 0x00, 0xdf, 0x02, 0x36, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
753 0x0e, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
754 0x10, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x02, 0x00, 0xa9, 0xdb, 0x85, 0x39,
755 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x54, 0x02, 0xa4, 0x38, 0xb2,
756 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x8c, 0x08, 0xc0, 0x6e, 0x32,
757 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x94, 0x08, 0xc0, 0x6e, 0x32,
758 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x98, 0x28, 0x80, 0x6e, 0x37,
759 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x38, 0x22, 0x14, 0x37,
760 0x00, 0x00, 0xeb, 0x02, 0x04, 0x30, 0x00, 0x28, 0x08, 0x00, 0x6e, 0xb2,
761 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xb2,
762 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
763 0x00, 0x00, 0x8a, 0x11, 0x04, 0x20, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
764 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x14, 0x08, 0x80, 0x6e, 0x32,
765 0x05, 0x00, 0xee, 0x02, 0x00, 0x30, 0x02, 0x00, 0x78, 0xe1, 0x6e, 0x99,
766 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
767 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x78, 0x09, 0xc0, 0x6e, 0x32,
768 0x05, 0x00, 0x00, 0x00, 0x68, 0x08, 0x00, 0x00, 0x77, 0xa1, 0x97, 0x39,
769 0x00, 0x00, 0xf0, 0x02, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
770 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
771 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
772 0x14, 0x10, 0xf4, 0x02, 0x04, 0x00, 0x00, 0x80, 0xa2, 0x0d, 0x72, 0xb0,
773 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x28, 0x09, 0xc0, 0x02, 0xf2,
774 0x0d, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
775 0x00, 0x00, 0x8a, 0x11, 0x06, 0x09, 0x00, 0x80, 0x52, 0xbd, 0x72, 0xbc,
776 0x00, 0x00, 0xfb, 0x02, 0x33, 0x15, 0x00, 0xa4, 0x02, 0xc0, 0x72, 0xb2,
777 0x00, 0x00, 0x33, 0x03, 0x80, 0x01, 0x00, 0x80, 0xb2, 0x01, 0x72, 0xb6,
778 0x01, 0x01, 0x08, 0x0a, 0x00, 0x28, 0x00, 0x80, 0xc2, 0x0d, 0x74, 0x3c,
779 0x00, 0x00, 0x33, 0x03, 0x0b, 0x31, 0x00, 0x7c, 0x08, 0x00, 0x75, 0xb2,
780 0x00, 0x00, 0x33, 0x03, 0x9f, 0xf0, 0x01, 0x80, 0x82, 0xdb, 0x87, 0xbc,
781 0x00, 0x00, 0xfc, 0x02, 0x00, 0x38, 0x00, 0x88, 0x18, 0x00, 0x75, 0x9c,
782 0x00, 0x00, 0x33, 0x03, 0x80, 0x00, 0x00, 0x80, 0xb2, 0x01, 0x72, 0xb6,
783 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x48, 0x08, 0x00, 0x75, 0x32,
784 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x70, 0x08, 0x00, 0x75, 0x32,
785 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x74, 0x38, 0xa2, 0x75, 0x37,
786 0x00, 0x00, 0x01, 0x03, 0x83, 0x1b, 0x00, 0x78, 0x08, 0xc0, 0x74, 0xb2,
787 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc2, 0x80, 0x2f, 0x34,
788 0x00, 0x00, 0xf2, 0x02, 0x80, 0x01, 0x00, 0x80, 0x42, 0x80, 0x87, 0xb6,
789 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
790 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x84, 0xd2,
791 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
792 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x87, 0xd2,
793 0x00, 0x00, 0x15, 0x03, 0x9f, 0x78, 0x01, 0x80, 0xc2, 0x21, 0x6e, 0xbc,
794 0x00, 0x00, 0x0a, 0x03, 0x9f, 0x99, 0x01, 0x64, 0x88, 0x1b, 0x87, 0xbc,
795 0x00, 0x00, 0x16, 0x03, 0x9f, 0x68, 0x01, 0x64, 0x88, 0x5b, 0x86, 0xba,
796 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x08, 0x00, 0x00, 0x32,
797 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0xa4, 0x02, 0xc0, 0x72, 0x32,
798 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0xa4, 0xb2, 0x5b, 0x2a, 0x3a,
799 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x02, 0x78, 0x09, 0xc0, 0x6e, 0x32,
800 0x00, 0x00, 0x17, 0x03, 0x08, 0x01, 0x00, 0x04, 0xe8, 0xa5, 0x75, 0xbc,
801 0x0f, 0x00, 0x33, 0x03, 0x0b, 0x01, 0x00, 0x1c, 0x08, 0x00, 0x36, 0xb2,
802 0x00, 0x00, 0x15, 0x03, 0x04, 0xa1, 0x01, 0x80, 0x82, 0x9b, 0x84, 0xbc,
803 0x00, 0x00, 0x9d, 0x05, 0x9f, 0x98, 0x01, 0x80, 0xc2, 0x21, 0x6e, 0xbc,
804 0x00, 0x00, 0x9d, 0x05, 0x06, 0xb1, 0x01, 0x80, 0x82, 0x5b, 0x87, 0xbc,
805 0x00, 0x00, 0x32, 0x03, 0x0b, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
806 0x00, 0x00, 0x30, 0x03, 0x02, 0xd4, 0x01, 0x80, 0x92, 0xfb, 0x6e, 0xbc,
807 0x15, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
808 0x16, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
809 0x1c, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
810 0x08, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x28, 0x72, 0x61, 0x80, 0xb9,
811 0x00, 0x00, 0x1a, 0x03, 0x04, 0xa1, 0x01, 0x80, 0x82, 0x9b, 0x84, 0xbc,
812 0x00, 0x00, 0x21, 0x03, 0x06, 0xa8, 0x01, 0x80, 0x82, 0x5b, 0x80, 0xbc,
813 0x00, 0x00, 0x1e, 0x03, 0x04, 0xa9, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
814 0x00, 0x00, 0x31, 0x03, 0x04, 0xa9, 0x01, 0x80, 0x82, 0x9b, 0x84, 0xbc,
815 0x00, 0x00, 0x31, 0x03, 0x04, 0x01, 0x00, 0x80, 0x12, 0x40, 0x80, 0xbc,
816 0x13, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
817 0x00, 0x00, 0x31, 0x03, 0x9f, 0xa0, 0x01, 0x78, 0x29, 0x21, 0x6e, 0xbc,
818 0x00, 0x00, 0x31, 0x03, 0x02, 0x01, 0x00, 0x80, 0x12, 0xa0, 0x97, 0xbc,
819 0x00, 0x00, 0x15, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
820 0x00, 0x00, 0x2c, 0x03, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x82, 0xbc,
821 0x00, 0x00, 0x8a, 0x11, 0x04, 0x02, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
822 0x00, 0x00, 0x27, 0x03, 0x02, 0x00, 0x00, 0x80, 0xa2, 0x60, 0x80, 0xbc,
823 0x06, 0x00, 0x9d, 0x05, 0x2c, 0x01, 0x00, 0x1c, 0x08, 0x00, 0x36, 0xb2,
824 0x00, 0xc0, 0x29, 0x03, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x8d, 0x2f, 0xb0,
825 0x06, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
826 0x00, 0x00, 0x29, 0x03, 0x04, 0x00, 0x00, 0x80, 0xa2, 0x60, 0x80, 0xbc,
827 0x09, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
828 0x00, 0x00, 0x2b, 0x03, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
829 0x07, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
830 0x08, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
831 0x02, 0x00, 0x9d, 0x05, 0x38, 0x01, 0x00, 0x1c, 0x08, 0x00, 0x36, 0xb2,
832 0x00, 0x00, 0x2f, 0x03, 0x02, 0x0c, 0x02, 0x80, 0xa2, 0x5b, 0x80, 0xbc,
833 0x1f, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
834 0x1e, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
835 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x00, 0x28, 0x09, 0x40, 0x00, 0x92,
836 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x00, 0x92,
837 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x00, 0x28, 0x09, 0xc0, 0x00, 0x92,
838 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x01, 0x92,
839 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
840 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x92, 0xd2,
841 0x0d, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0xf2,
842 0x00, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
843 0x10, 0x00, 0x8a, 0x11, 0x2a, 0x00, 0x00, 0xcc, 0x02, 0x20, 0x15, 0xb8,
844 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
845 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x80, 0xd2,
846 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
847 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
848 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
849 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
850 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
851 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
852 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
853 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
854 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
855 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
856 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x38, 0xf2,
857 0x1d, 0x00, 0x49, 0x03, 0x80, 0x01, 0x00, 0x78, 0x09, 0xe0, 0x00, 0xb8,
858 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
859 0x1d, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
860 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x22, 0x80, 0x97, 0xbc,
861 0x14, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
862 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xa8, 0x05, 0x28, 0x30,
863 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x2c, 0xbc,
864 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
865 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
866 0x60, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0xb0,
867 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x83, 0x40, 0x01, 0x39,
868 0x35, 0x00, 0x54, 0x03, 0x04, 0x00, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
869 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
870 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x81, 0xd2,
871 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x38, 0xf2,
872 0x2b, 0x00, 0x9d, 0x05, 0x02, 0x01, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
873 0x00, 0x00, 0x93, 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
874 0x00, 0x00, 0x8a, 0x11, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
875 0x00, 0x00, 0x5a, 0x03, 0x1d, 0x41, 0x02, 0x5c, 0xf8, 0x01, 0x68, 0xb4,
876 0x41, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x8d, 0x2f, 0x91,
877 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
878 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x59, 0xc0, 0x85, 0xd7,
879 0x10, 0x00, 0x00, 0x00, 0xd0, 0x2c, 0x02, 0x00, 0xa9, 0xdb, 0x85, 0x39,
880 0x00, 0x00, 0xe1, 0x02, 0x12, 0x01, 0x00, 0x54, 0x02, 0xa4, 0x38, 0xb2,
881 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
882 0x00, 0x00, 0x64, 0x03, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
883 0x00, 0x00, 0x60, 0x11, 0x00, 0x78, 0x01, 0x60, 0x08, 0x00, 0x6e, 0xf2,
884 0x2f, 0x00, 0x93, 0x05, 0xd7, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
885 0x00, 0x00, 0x65, 0x03, 0x06, 0xa9, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xb2,
886 0x00, 0x00, 0x6d, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
887 0x00, 0x00, 0x70, 0x03, 0x04, 0xa8, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xb2,
888 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x08, 0x89, 0x9b, 0x90, 0x3e,
889 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x08, 0x89, 0x9b, 0x90, 0x3a,
890 0x00, 0x00, 0x70, 0x03, 0x9f, 0x88, 0x01, 0x08, 0x89, 0x9b, 0x90, 0xbc,
891 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x04, 0xf9, 0xba, 0x6e, 0x37,
892 0x00, 0x00, 0x6c, 0x03, 0x02, 0x00, 0x00, 0x80, 0x12, 0xa4, 0x90, 0xbc,
893 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x19, 0x80, 0x90, 0x37,
894 0x00, 0x00, 0x70, 0x03, 0x02, 0x01, 0x02, 0x80, 0x82, 0x9b, 0x90, 0xbc,
895 0x30, 0x00, 0x93, 0x05, 0xd7, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
896 0x00, 0x00, 0x70, 0x03, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
897 0x00, 0x12, 0x70, 0x03, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x8d, 0x2f, 0xb0,
898 0x31, 0x00, 0x93, 0x05, 0xd7, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
899 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x72, 0x81, 0x2f, 0x95,
900 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x42, 0x80, 0x2f, 0x34,
901 0x08, 0xc0, 0x74, 0x02, 0x12, 0x01, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0xb2,
902 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
903 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
904 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
905 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x81, 0xd2,
906 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x2c, 0xbc,
907 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
908 0x60, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0xb0,
909 0x00, 0x00, 0xb0, 0x03, 0x80, 0x01, 0x80, 0x80, 0x32, 0x0b, 0x6a, 0xb6,
910 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x40, 0x90, 0x32,
911 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x38, 0xf2,
912 0x2b, 0x00, 0x9d, 0x05, 0x02, 0x01, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
913 0x00, 0x00, 0x93, 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
914 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
915 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
916 0x10, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x89, 0x4d, 0x81, 0xd7,
917 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x2c, 0xbc,
918 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
919 0x60, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0xb0,
920 0x00, 0x00, 0xb0, 0x03, 0x80, 0x01, 0x80, 0x80, 0x32, 0x0b, 0x6a, 0xb6,
921 0x00, 0x00, 0xdc, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x38, 0xf2,
922 0x00, 0x00, 0x8a, 0x03, 0x04, 0x20, 0x01, 0x80, 0x52, 0x20, 0x6e, 0xbc,
923 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
924 0x25, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
925 0x24, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
926 0x00, 0x00, 0x93, 0x03, 0x04, 0x01, 0x00, 0xd8, 0x1e, 0x80, 0xed, 0xbc,
927 0x00, 0x00, 0x8c, 0x03, 0xb7, 0x00, 0x00, 0xd8, 0x0e, 0xc0, 0xed, 0xb2,
928 0x00, 0x00, 0x8f, 0x03, 0x04, 0x01, 0x00, 0x80, 0x42, 0x3b, 0xee, 0xbc,
929 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1e, 0x00, 0xee, 0x3a,
930 0x00, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0xd0, 0x0e, 0x00, 0xee, 0x32,
931 0x00, 0x00, 0x93, 0x03, 0x80, 0x01, 0x00, 0x80, 0x92, 0x80, 0xfc, 0xb6,
932 0x00, 0x00, 0x93, 0x03, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0xfc, 0xb6,
933 0x00, 0x00, 0x93, 0x03, 0x04, 0x01, 0x00, 0xb0, 0x1e, 0x00, 0xeb, 0xbc,
934 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x86, 0xcc, 0x02, 0x80, 0x6c, 0x32,
935 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x36, 0x32,
936 0x00, 0x00, 0x97, 0x03, 0x80, 0x01, 0x80, 0x80, 0x32, 0x0b, 0x6a, 0xb6,
937 0x35, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
938 0x00, 0x00, 0x99, 0x03, 0x04, 0x01, 0x00, 0x80, 0x42, 0xc5, 0x2c, 0xbc,
939 0x00, 0x00, 0x9a, 0x03, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x92,
940 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x12, 0xc0, 0x2c, 0x3a,
941 0x00, 0x00, 0x95, 0x03, 0x04, 0x01, 0x00, 0x00, 0x19, 0x00, 0x90, 0xbc,
942 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x86, 0xc8, 0x06, 0xc0, 0x2c, 0x32,
943 0x08, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0xc3, 0x40, 0x01, 0x99,
944 0x00, 0x00, 0x9f, 0x03, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x80, 0xbc,
945 0x00, 0x00, 0x8a, 0x11, 0x04, 0x55, 0x01, 0x80, 0xb2, 0x1b, 0x2b, 0xbc,
946 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0x09, 0x00, 0x00, 0xf2,
947 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
948 0x00, 0x00, 0xa3, 0x03, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x80, 0xbc,
949 0x00, 0x00, 0x8a, 0x11, 0x04, 0x55, 0x01, 0x80, 0xb2, 0x1b, 0x2b, 0xbc,
950 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
951 0x00, 0x00, 0xad, 0x03, 0x04, 0x00, 0x00, 0x28, 0x09, 0x80, 0x80, 0xb2,
952 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
953 0x00, 0x00, 0xef, 0x0f, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0xd2,
954 0x00, 0x00, 0xad, 0x03, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xbc,
955 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
956 0x00, 0x00, 0xb0, 0x03, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
957 0x00, 0x00, 0xb0, 0x03, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
958 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0x39,
959 0xb0, 0x03, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
960 0x00, 0x00, 0xb0, 0x03, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
961 0x00, 0x00, 0xb0, 0x03, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
962 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
963 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x32,
964 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x02, 0x99,
965 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
966 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
967 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
968 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
969 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
970 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
971 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x0f, 0x00, 0x00, 0x32,
972 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
973 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
974 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
975 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
976 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
977 0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
978 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
979 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
980 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x32,
981 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x32,
982 0x00, 0x00, 0xc2, 0x03, 0x8b, 0x01, 0x00, 0xa0, 0x12, 0x00, 0x2a, 0xba,
983 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x32,
984 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x32,
985 0x00, 0x00, 0xc5, 0x03, 0x06, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2a, 0xbc,
986 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
987 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x32,
988 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x32,
989 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
990 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x32,
991 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x02, 0x00, 0x00, 0x32,
992 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x32,
993 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x00, 0x32,
994 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x02, 0x00, 0x00, 0x32,
995 0x00, 0x00, 0xc8, 0x03, 0x85, 0x01, 0x00, 0x9c, 0x12, 0xc0, 0x29, 0xba,
996 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
997 0x0b, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
998 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
999 0x13, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1000 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1001 0x0c, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1002 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x06, 0x32,
1003 0x0f, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1004 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1005 0x0d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1006 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1007 0x14, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1008 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1009 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1010 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1011 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1012 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1013 0x1d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1014 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x04, 0x32,
1015 0x1e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1016 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1017 0x1f, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1018 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x32,
1019 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1020 0xe0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1021 0x17, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1022 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1023 0x1b, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1024 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1025 0x1c, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1026 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x40, 0x00, 0x32,
1027 0x16, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1028 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1029 0x1a, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1030 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1031 0x19, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1032 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1033 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1034 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1035 0x0c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1036 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x02, 0x00, 0x36, 0x32,
1037 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x32,
1038 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x64, 0x02, 0x39,
1039 0x00, 0x00, 0xfb, 0x03, 0x85, 0x01, 0x00, 0x00, 0x19, 0x00, 0x90, 0xba,
1040 0x25, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1041 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1042 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x32,
1043 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf3, 0x40, 0x01, 0x39,
1044 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe3, 0x40, 0x01, 0x39,
1045 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc3, 0x40, 0x01, 0x39,
1046 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb3, 0x40, 0x01, 0x39,
1047 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa3, 0x40, 0x01, 0x39,
1048 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
1049 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x83, 0x40, 0x01, 0x39,
1050 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x40, 0x01, 0x39,
1051 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x63, 0x40, 0x01, 0x39,
1052 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x53, 0x40, 0x01, 0x39,
1053 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x43, 0x40, 0x01, 0x39,
1054 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x33, 0x40, 0x01, 0x39,
1055 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x13, 0x40, 0x01, 0x39,
1056 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x23, 0x40, 0x01, 0x39,
1057 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x80, 0x00, 0x32,
1058 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x3f, 0x80, 0xfc, 0x35,
1059 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
1060 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x32,
1061 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x36, 0x32,
1062 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x03, 0x40, 0x38, 0x32,
1063 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xd2, 0x01, 0x30, 0xb6,
1064 0x00, 0x00, 0x13, 0x04, 0x04, 0x01, 0x00, 0xd0, 0x12, 0x00, 0x2d, 0xbc,
1065 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1066 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1067 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x32,
1068 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
1069 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0xe4, 0x06, 0x00, 0x00, 0x32,
1070 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
1071 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
1072 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x12, 0x00, 0x2d, 0x3a,
1073 0x4c, 0x00, 0x1a, 0x04, 0x02, 0x01, 0x00, 0x80, 0x82, 0x0d, 0x2d, 0xbc,
1074 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xae, 0x0d, 0x02, 0x32,
1075 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x32,
1076 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x86, 0xcc, 0x07, 0x00, 0x36, 0x32,
1077 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x86, 0xcc, 0x07, 0x80, 0x00, 0x3a,
1078 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x80, 0x36, 0x32,
1079 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x64, 0x02, 0x40, 0x90, 0xb2,
1080 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x40, 0x90, 0x3a,
1081 0x00, 0x00, 0x26, 0x04, 0x12, 0x00, 0x00, 0x78, 0x09, 0xc0, 0x20, 0xb2,
1082 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x81, 0x97, 0xb6,
1083 0x1d, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x78, 0xe9, 0xe5, 0x00, 0xb8,
1084 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x45, 0x90, 0x30,
1085 0x00, 0x00, 0x24, 0x04, 0x02, 0x01, 0x00, 0x80, 0xc2, 0x82, 0x97, 0xbc,
1086 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0x32,
1087 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x32,
1088 0x00, 0x00, 0x2c, 0x04, 0x8e, 0x01, 0x00, 0x80, 0x02, 0x40, 0x28, 0xb2,
1089 0x00, 0x00, 0x26, 0x0f, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xd2,
1090 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x0e, 0x00, 0x36, 0x32,
1091 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb9, 0x05, 0x36, 0x30,
1092 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x73, 0x80, 0x97, 0x34,
1093 0x09, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1094 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x32,
1095 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1096 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x73, 0x80, 0x97, 0x34,
1097 0x09, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1098 0xfe, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x36, 0x32,
1099 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1100 0x00, 0x00, 0x3b, 0x04, 0x12, 0x01, 0x00, 0x00, 0x09, 0x40, 0x20, 0xb2,
1101 0x00, 0x00, 0x39, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1102 0x00, 0x00, 0x3b, 0x04, 0x12, 0x00, 0x00, 0x04, 0x09, 0x40, 0x20, 0xb2,
1103 0x00, 0x00, 0x3e, 0x04, 0x9f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1104 0x00, 0x00, 0x3d, 0x04, 0x12, 0x00, 0x00, 0x08, 0x09, 0x40, 0x20, 0xb2,
1105 0x02, 0x00, 0x39, 0x04, 0x04, 0x01, 0x00, 0x78, 0x09, 0x24, 0x17, 0xb8,
1106 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x64, 0x16, 0x38,
1107 0x00, 0x00, 0x39, 0x04, 0x04, 0x01, 0x00, 0x80, 0x02, 0x81, 0x97, 0xbc,
1108 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x03, 0x00, 0x36, 0x32,
1109 0xfe, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x48, 0x03, 0x00, 0x36, 0x92,
1110 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x00, 0x09, 0x40, 0x20, 0xb2,
1111 0x00, 0x00, 0x44, 0x04, 0x12, 0x00, 0x00, 0x04, 0x09, 0x40, 0x20, 0xb2,
1112 0x00, 0x00, 0x47, 0x04, 0x9f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1113 0x00, 0x00, 0x46, 0x04, 0x12, 0x00, 0x00, 0x08, 0x09, 0x40, 0x20, 0xb2,
1114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x02, 0x00, 0x90, 0x32,
1115 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1116 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1117 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1118 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1119 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1120 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1121 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1122 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1123 0x06, 0x00, 0x59, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x09, 0x64, 0x16, 0x98,
1124 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, 0x00, 0x14, 0x08, 0x40, 0x90, 0x92,
1125 0x00, 0x00, 0x97, 0x02, 0x00, 0x00, 0x00, 0x14, 0x08, 0x40, 0x90, 0x92,
1126 0x33, 0x00, 0x74, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
1127 0x11, 0x00, 0x74, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
1128 0x39, 0x00, 0x74, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
1129 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1130 0x00, 0x00, 0x7f, 0x02, 0x00, 0x00, 0x00, 0x14, 0x08, 0x40, 0x90, 0x92,
1131 0x00, 0x00, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x14, 0x08, 0x40, 0x90, 0x92,
1132 0x5a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0xcd, 0x90, 0x3a,
1133 0x0d, 0x00, 0x7c, 0x04, 0x00, 0x00, 0x00, 0xb0, 0x02, 0xe4, 0x16, 0x98,
1134 0x0d, 0x00, 0x8e, 0x04, 0x00, 0x00, 0x00, 0xb0, 0x02, 0xe4, 0x16, 0x98,
1135 0x0d, 0x00, 0x97, 0x04, 0x00, 0x00, 0x00, 0xb0, 0x02, 0xe4, 0x16, 0x98,
1136 0x00, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1137 0x00, 0x00, 0xad, 0x04, 0x00, 0x00, 0x00, 0x00, 0x09, 0x40, 0x90, 0x9d,
1138 0x00, 0x00, 0xb3, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1139 0x00, 0x00, 0xbd, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1140 0x00, 0x00, 0xc7, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1141 0x00, 0x00, 0xd1, 0x04, 0x00, 0x00, 0x00, 0x00, 0x09, 0x40, 0x90, 0x9d,
1142 0x00, 0x00, 0xd8, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1143 0x00, 0x00, 0xe1, 0x04, 0x00, 0x00, 0x00, 0x00, 0x09, 0x40, 0x90, 0x9d,
1144 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1145 0x00, 0x00, 0xf3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x92,
1146 0x00, 0x00, 0xf3, 0x04, 0x00, 0x00, 0x00, 0x00, 0x09, 0x40, 0x00, 0x92,
1147 0xd8, 0x00, 0xf5, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x36, 0x92,
1148 0x00, 0x00, 0xff, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1149 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1150 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xdc, 0x0f, 0x40, 0x90, 0x92,
1151 0x00, 0x00, 0xe8, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1152 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1153 0x00, 0x00, 0xed, 0x04, 0x00, 0x00, 0x00, 0x78, 0x39, 0x40, 0x90, 0x97,
1154 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xec, 0x0e, 0x40, 0x90, 0x92,
1155 0x00, 0x00, 0xef, 0x04, 0x00, 0x00, 0x00, 0xe8, 0x0e, 0x40, 0x90, 0x92,
1156 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xd4, 0x0e, 0x40, 0x90, 0x92,
1157 0x00, 0x00, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1158 0x00, 0x00, 0x85, 0x05, 0x00, 0x00, 0x00, 0xdc, 0x0e, 0x40, 0x90, 0x92,
1159 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1160 0x08, 0x00, 0x15, 0x05, 0x00, 0x00, 0x00, 0x50, 0x1f, 0x24, 0x16, 0x98,
1161 0x00, 0x00, 0x27, 0x05, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x92,
1162 0x0d, 0x00, 0x32, 0x05, 0x00, 0x00, 0x00, 0xb0, 0x02, 0xe4, 0x16, 0x98,
1163 0x00, 0x00, 0x33, 0x05, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x92,
1164 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x92,
1165 0x00, 0x00, 0x89, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1166 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1167 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
1168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x45, 0x90, 0x30,
1169 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x22, 0x80, 0x97, 0xbc,
1170 0x3f, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x0d, 0x00, 0xb0,
1171 0x02, 0x00, 0x80, 0x04, 0xb0, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0xb9,
1172 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0x6b, 0x41, 0x90, 0x34,
1173 0x00, 0x00, 0xb0, 0x03, 0x80, 0x01, 0x00, 0x80, 0x02, 0x40, 0xb0, 0xb6,
1174 0x00, 0x00, 0xb0, 0x03, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0xb0, 0xbc,
1175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
1176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x22, 0x00, 0x2b, 0x37,
1177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x01, 0x00, 0x34,
1178 0x00, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x2a, 0x3a,
1179 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0x00, 0xb0, 0xb2,
1180 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0xd0, 0x32,
1181 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0xb4,
1182 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0x39,
1183 0xb0, 0x03, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
1184 0x08, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x99,
1185 0x00, 0x00, 0x91, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1188 0x02, 0x00, 0x91, 0x04, 0xb0, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0xb9,
1189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x80, 0x90, 0x32,
1190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x40, 0x90, 0x32,
1191 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0x3b, 0x40, 0xb0, 0x31,
1192 0x00, 0x00, 0x8d, 0x04, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0x2b, 0xbc,
1193 0xf1, 0x0f, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x8c, 0x0e, 0x00, 0x36, 0x92,
1194 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
1195 0x02, 0x00, 0x98, 0x04, 0xb0, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0xb9,
1196 0x00, 0x00, 0x9b, 0x04, 0x80, 0x01, 0x00, 0x80, 0x12, 0x40, 0xb0, 0xb6,
1197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3b, 0x40, 0xb0, 0x33,
1198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xcd, 0x4a, 0xd0, 0x35,
1199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0b, 0x00, 0x00, 0x32,
1200 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x0c, 0x1b, 0xe4, 0xb0, 0x32,
1201 0x00, 0x00, 0xb0, 0x03, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
1202 0x00, 0x00, 0xa1, 0x04, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x90, 0xb2,
1203 0x1f, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x11, 0x40, 0x00, 0x99,
1204 0x00, 0x00, 0xa0, 0x04, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0xf8, 0xbc,
1205 0x00, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf8, 0x92,
1206 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0xfc, 0xb6,
1207 0x00, 0x00, 0xa7, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1210 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0x85, 0x90, 0xb0,
1211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x80, 0x90, 0x32,
1212 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x40, 0x90, 0x32,
1214 0x0a, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1215 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xc8, 0x0f, 0x81, 0xfc, 0x94,
1216 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x72, 0x42, 0x90, 0xbc,
1217 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0xe2, 0x42, 0x90, 0xbc,
1218 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x78, 0x09, 0x64, 0x90, 0xb5,
1219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x73, 0x00, 0x90, 0x3c,
1220 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1221 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1222 0x00, 0x00, 0xb6, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1225 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0x85, 0x90, 0xb0,
1226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x80, 0x90, 0x32,
1227 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x80, 0x90, 0x32,
1229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x40, 0x90, 0x32,
1230 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1231 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xe4, 0x0f, 0x40, 0x90, 0x92,
1232 0x00, 0x00, 0xc0, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1235 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0x85, 0x90, 0xb0,
1236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x80, 0x90, 0x32,
1237 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x0e, 0x80, 0x90, 0x32,
1239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x40, 0x90, 0x32,
1240 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1241 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xac, 0x0e, 0x40, 0x90, 0x92,
1242 0x00, 0x00, 0xca, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1243 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1245 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0x85, 0x90, 0xb0,
1246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x80, 0x90, 0x32,
1247 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x40, 0x90, 0x32,
1249 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0f, 0x80, 0x90, 0x32,
1251 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x48, 0x0f, 0x40, 0x90, 0x92,
1252 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x82, 0x42, 0x90, 0xbc,
1253 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x78, 0x09, 0x64, 0x90, 0xb5,
1254 0x00, 0x00, 0xd5, 0x04, 0x04, 0x01, 0x00, 0x80, 0x82, 0x42, 0x90, 0xbc,
1255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x32,
1256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x90, 0x32,
1257 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1258 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x40, 0x90, 0x9c,
1259 0x00, 0x00, 0xdb, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1262 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0x85, 0x90, 0xb0,
1263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x80, 0x90, 0x32,
1264 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x40, 0x90, 0x32,
1266 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1267 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1268 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x82, 0x42, 0x90, 0xbc,
1269 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x78, 0x09, 0x64, 0x90, 0xb5,
1270 0x00, 0x00, 0xe5, 0x04, 0x04, 0x01, 0x00, 0x80, 0x82, 0x42, 0x90, 0xbc,
1271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x32,
1272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x90, 0x32,
1273 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1274 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x40, 0x90, 0x9c,
1275 0x00, 0x00, 0xeb, 0x04, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1276 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1277 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1278 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x0e, 0x80, 0x90, 0x32,
1279 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x88, 0x0e, 0x40, 0x90, 0x92,
1280 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x40, 0x90, 0x37,
1281 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x0f, 0xa4, 0x97, 0x9a,
1282 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xbc, 0x0e, 0x80, 0xee, 0x9d,
1283 0x00, 0x00, 0xf2, 0x04, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x90, 0xbc,
1284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0x00, 0x32,
1285 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xe4, 0x1e, 0x40, 0x90, 0x9c,
1286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x22, 0x00, 0x90, 0x37,
1287 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x86, 0xc0, 0x07, 0x40, 0x90, 0x92,
1288 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0xe4, 0x16, 0x38,
1289 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x36, 0x32,
1290 0x00, 0x00, 0xfa, 0x04, 0x04, 0x00, 0x00, 0x80, 0x02, 0x24, 0xf6, 0xbc,
1291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x3f, 0x80, 0xfc, 0x34,
1292 0x40, 0x80, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x36, 0x92,
1293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0f, 0x00, 0x00, 0x32,
1294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x79, 0x01, 0x00, 0x34,
1295 0x02, 0x00, 0xfc, 0x04, 0xb0, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0xb9,
1296 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x0c, 0xab, 0xe4, 0xb0, 0x32,
1297 0x1f, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x11, 0x40, 0x00, 0x99,
1298 0xea, 0x05, 0x05, 0x05, 0x04, 0x01, 0x00, 0x80, 0x82, 0x4d, 0x90, 0xbc,
1299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x0f, 0x00, 0x15, 0x32,
1300 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x37, 0x32,
1301 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0f, 0x00, 0x36, 0x32,
1302 0x98, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x36, 0x32,
1303 0x00, 0x00, 0x0b, 0x05, 0x00, 0x00, 0x00, 0xc8, 0x4f, 0x80, 0xfc, 0x95,
1304 0x36, 0x23, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x4d, 0x90, 0xbc,
1305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x0f, 0x80, 0x14, 0x32,
1306 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x37, 0x32,
1307 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0f, 0x00, 0x36, 0x32,
1308 0x98, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x36, 0x32,
1309 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4f, 0x80, 0xfc, 0x34,
1310 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x8f, 0x4d, 0x90, 0x3a,
1311 0x00, 0x00, 0x8a, 0x11, 0x60, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
1312 0x00, 0x00, 0x8a, 0x11, 0x7a, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
1313 0x00, 0x00, 0xa9, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
1314 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1315 0x00, 0x00, 0x12, 0x05, 0x80, 0x01, 0x00, 0x80, 0x02, 0x40, 0x90, 0xb6,
1316 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x6f, 0x80, 0xfc, 0x34,
1317 0x00, 0x00, 0x14, 0x05, 0x80, 0x01, 0x00, 0x80, 0x12, 0x40, 0x90, 0xb6,
1318 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x5f, 0x80, 0xfc, 0x34,
1319 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1320 0x00, 0x00, 0x17, 0x05, 0x04, 0x01, 0x00, 0x80, 0x32, 0x40, 0x90, 0xb0,
1321 0x80, 0x01, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xc8, 0x8f, 0x8d, 0xfc, 0x91,
1322 0x00, 0x00, 0x19, 0x05, 0x80, 0x00, 0x00, 0x80, 0x12, 0x40, 0x90, 0xb6,
1323 0x00, 0x00, 0x1a, 0x05, 0x00, 0x00, 0x00, 0xc8, 0x7f, 0x80, 0xfc, 0x95,
1324 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x7f, 0x80, 0xfc, 0x34,
1325 0x00, 0x00, 0x1c, 0x05, 0x80, 0x00, 0x00, 0x80, 0x02, 0x40, 0x90, 0xb6,
1326 0x00, 0x00, 0x1d, 0x05, 0x00, 0x00, 0x00, 0xc8, 0x8f, 0x80, 0xfc, 0x95,
1327 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x8f, 0x80, 0xfc, 0x34,
1328 0x00, 0x00, 0x20, 0x05, 0x80, 0x00, 0x00, 0x80, 0x22, 0x40, 0x90, 0xb6,
1329 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x0e, 0x00, 0x36, 0x32,
1330 0x00, 0x00, 0x22, 0x05, 0x00, 0x00, 0x00, 0xc8, 0x1f, 0x81, 0xfc, 0x95,
1331 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x0e, 0x00, 0x36, 0x32,
1332 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x1f, 0x81, 0xfc, 0x34,
1333 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x82, 0x02, 0xf5, 0xbc,
1334 0x00, 0x00, 0x8a, 0x11, 0x03, 0x00, 0x00, 0x78, 0x09, 0x00, 0xf5, 0xbd,
1335 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xe2, 0x25, 0xf5, 0xb5,
1336 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x1f, 0x24, 0x16, 0x38,
1337 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x50, 0x1f, 0x00, 0xf5, 0x9c,
1338 0x80, 0x01, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0xfc, 0xb0,
1339 0x00, 0x00, 0x2b, 0x05, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
1340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0x90, 0x32,
1341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0xfd, 0x32,
1342 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0xf5, 0x3a,
1343 0x8c, 0xcc, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
1344 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0x80, 0x90, 0xb2,
1345 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x40, 0x90, 0x32,
1346 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
1347 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
1348 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1349 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xec, 0x03, 0x40, 0x90, 0x92,
1350 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x90, 0xbc,
1351 0x00, 0x00, 0x34, 0x05, 0xb2, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xb2,
1352 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xec, 0x16, 0xe4, 0x6e, 0x3a,
1353 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
1354 0x00, 0x00, 0x69, 0x05, 0x17, 0x10, 0x01, 0xf8, 0x02, 0x00, 0x6e, 0xb2,
1355 0x06, 0x00, 0x3f, 0x05, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x2f, 0xb0,
1356 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0x32,
1357 0x00, 0xc0, 0xd3, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x36, 0xd2,
1358 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0x3c,
1359 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x86, 0xc8, 0x06, 0x00, 0x00, 0x32,
1360 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
1361 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x92,
1362 0x00, 0x00, 0x46, 0x05, 0x04, 0x19, 0x86, 0x80, 0x02, 0x80, 0x6c, 0xbc,
1363 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x12, 0x80, 0x2f, 0xb6,
1364 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x6e, 0x32,
1365 0x00, 0x00, 0x00, 0x00, 0xc1, 0x08, 0x00, 0x04, 0x09, 0x00, 0x6e, 0x32,
1366 0x00, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x86, 0x2c, 0x09, 0xc0, 0x6c, 0x32,
1367 0x00, 0x00, 0x4c, 0x05, 0x22, 0x1d, 0x86, 0xc8, 0x06, 0xc0, 0x92, 0xb2,
1368 0x00, 0x00, 0x4c, 0x05, 0x00, 0x18, 0x86, 0xc8, 0x06, 0x40, 0x00, 0x92,
1369 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x22, 0x80, 0x2f, 0xb6,
1370 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x09, 0x00, 0x6e, 0x32,
1371 0x00, 0x00, 0x00, 0x00, 0xc2, 0x48, 0x00, 0x04, 0x09, 0x00, 0x6e, 0x32,
1372 0x00, 0x00, 0x00, 0x00, 0xc0, 0x16, 0x86, 0x2c, 0x09, 0xc0, 0x6c, 0x32,
1373 0x00, 0x00, 0x4c, 0x05, 0x21, 0x1d, 0x86, 0xc8, 0x06, 0xc0, 0x92, 0xb2,
1374 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x86, 0xc8, 0x06, 0x00, 0x00, 0x32,
1375 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x36, 0x32,
1376 0x00, 0x00, 0x54, 0x05, 0x04, 0x02, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
1377 0x00, 0x00, 0xd3, 0x0e, 0x00, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xdc,
1378 0x00, 0x00, 0x52, 0x05, 0x80, 0x00, 0x00, 0x80, 0x02, 0x80, 0x2f, 0xb6,
1379 0x00, 0x00, 0x54, 0x05, 0x81, 0x00, 0x00, 0xf8, 0x22, 0x80, 0x2f, 0xb4,
1380 0x00, 0x00, 0x54, 0x05, 0x00, 0x18, 0x86, 0xc8, 0x06, 0x40, 0x00, 0x92,
1381 0x00, 0x00, 0x54, 0x05, 0x82, 0x00, 0x00, 0xf8, 0x12, 0x80, 0x2f, 0xb4,
1382 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x86, 0xc8, 0x06, 0x00, 0x00, 0x32,
1383 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x2d, 0xbc,
1384 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
1385 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0xc8, 0x06, 0x00, 0x00, 0x32,
1386 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x0a, 0x32,
1387 0x00, 0x38, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
1388 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x00, 0x07, 0x00, 0x90, 0xb2,
1389 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x40, 0x90, 0x32,
1390 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
1391 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
1392 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
1393 0x00, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x32,
1394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x32,
1395 0x00, 0xc0, 0x69, 0x05, 0x18, 0x00, 0x00, 0x00, 0xa9, 0xcd, 0x3e, 0xb2,
1396 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x86, 0x04, 0x19, 0x80, 0x6c, 0x3a,
1397 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x07, 0x00, 0x00, 0x32,
1398 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0x00, 0x00, 0x32,
1399 0x00, 0x01, 0x00, 0x80, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
1400 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xf7, 0x7f, 0x90, 0x30,
1401 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0x00, 0x90, 0xb2,
1402 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x34,
1403 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
1404 0x00, 0x00, 0x8a, 0x11, 0x02, 0x10, 0x86, 0x80, 0x72, 0x82, 0x6c, 0xbc,
1405 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0xa8, 0x42, 0x80, 0x6c, 0x37,
1406 0x00, 0x00, 0x78, 0x05, 0x12, 0x00, 0x70, 0x38, 0x02, 0x00, 0x7c, 0xb2,
1407 0x00, 0x00, 0x8a, 0x11, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
1408 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x07, 0x00, 0x00, 0x32,
1409 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
1410 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x3c, 0x02, 0x00, 0x7e, 0x32,
1411 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x30, 0x02, 0x00, 0x7e, 0x32,
1412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x34, 0x02, 0x00, 0x7e, 0x32,
1413 0x00, 0x00, 0x6b, 0x05, 0x02, 0x01, 0x00, 0x80, 0xb2, 0x82, 0x2a, 0xbc,
1414 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x32,
1415 0x06, 0x00, 0x3f, 0x05, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x2f, 0xb0,
1416 0x00, 0x00, 0x39, 0x05, 0x04, 0x03, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
1417 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xe0, 0x06, 0x80, 0x2f, 0x32,
1418 0x00, 0x00, 0xa4, 0x03, 0xa2, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x92,
1419 0x00, 0x00, 0x7a, 0x05, 0x04, 0x03, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
1420 0x00, 0x00, 0x83, 0x05, 0x00, 0x10, 0x86, 0xc8, 0x46, 0x80, 0x2a, 0x96,
1421 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0xc8, 0x46, 0x80, 0x2a, 0x36,
1422 0x00, 0x00, 0x7e, 0x05, 0x80, 0x00, 0x00, 0x80, 0x12, 0x80, 0x2f, 0xb6,
1423 0x03, 0x00, 0x80, 0x05, 0x22, 0x00, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0xb2,
1424 0x00, 0x00, 0x80, 0x05, 0x00, 0x18, 0x86, 0xc8, 0x06, 0x00, 0x00, 0x92,
1425 0x00, 0x00, 0x83, 0x05, 0x80, 0x00, 0x00, 0x80, 0x22, 0x80, 0x2f, 0xb6,
1426 0x00, 0x00, 0x00, 0x00, 0xc2, 0x01, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0x35,
1427 0x00, 0xc0, 0xd3, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x36, 0xd2,
1428 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0x3c,
1429 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
1430 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xe0, 0x06, 0x80, 0x2f, 0x32,
1431 0x00, 0x00, 0xa4, 0x03, 0xa2, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x92,
1432 0x00, 0x00, 0x8a, 0x05, 0x04, 0x01, 0x00, 0x80, 0xa2, 0xc0, 0xed, 0xbc,
1433 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x80, 0x02, 0x32,
1434 0x40, 0x7e, 0x05, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x0e, 0x00, 0x37, 0x32,
1435 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x0e, 0x80, 0x07, 0x32,
1436 0x64, 0x00, 0x8f, 0x05, 0x00, 0x00, 0x00, 0xcc, 0x0e, 0x00, 0x36, 0x92,
1437 0x64, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xed, 0xbc,
1438 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0e, 0x40, 0x00, 0x32,
1439 0xa0, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x0e, 0x00, 0x36, 0x32,
1440 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x0e, 0xc0, 0x00, 0x32,
1441 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x0e, 0x80, 0x02, 0x32,
1442 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x33, 0x7b, 0xec, 0x39,
1443 0x1e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
1444 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x6e, 0xc0, 0xec, 0x37,
1445 0x00, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x00, 0xd8, 0x0e, 0xc0, 0xed, 0x92,
1446 0x00, 0x00, 0x8a, 0x11, 0x04, 0x65, 0x01, 0x80, 0xa2, 0xdb, 0x2c, 0xbc,
1447 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x80, 0xb2,
1448 0x00, 0x00, 0x8a, 0x11, 0x02, 0x1c, 0x01, 0x80, 0x52, 0xc0, 0x6e, 0xbc,
1449 0x2b, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
1450 0x3d, 0x00, 0x8a, 0x11, 0x02, 0x00, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
1451 0x35, 0x00, 0x9c, 0x05, 0x04, 0x00, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
1452 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
1453 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x89, 0xcd, 0x81, 0x3c,
1454 0x10, 0x00, 0xe2, 0x10, 0x00, 0x1c, 0x01, 0x14, 0x59, 0xe4, 0x6e, 0xd9,
1455 0xa4, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0xcd, 0x81, 0x3a,
1456 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x80, 0xb2,
1457 0x00, 0x00, 0x8a, 0x11, 0x04, 0x65, 0x01, 0x80, 0xa2, 0xdb, 0x2c, 0xbc,
1458 0x00, 0x00, 0x8a, 0x11, 0x02, 0x18, 0x01, 0x80, 0x92, 0xc0, 0x6e, 0xbc,
1459 0x2b, 0x00, 0x8a, 0x11, 0x02, 0x00, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
1460 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
1461 0x10, 0x00, 0xe2, 0x10, 0x00, 0x18, 0x01, 0x14, 0x79, 0xe0, 0x6e, 0xd9,
1462 0xa4, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0xcd, 0x81, 0x3a,
1463 0xe1, 0x05, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1464 0xea, 0x05, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1465 0xf3, 0x05, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1466 0xfc, 0x05, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1467 0x05, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1468 0x0e, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1469 0x17, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1470 0x20, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1471 0x29, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1472 0x32, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1473 0x3b, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1474 0x44, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1475 0x4d, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1476 0x56, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1477 0x5f, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1478 0x68, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1479 0x71, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1480 0x7a, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1481 0x83, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1482 0x8c, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1483 0x95, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1484 0x9e, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1485 0xa7, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1486 0xb0, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1487 0xb9, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1488 0xc2, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1489 0xcb, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1490 0xd4, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1491 0xdd, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1492 0xe6, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1493 0xef, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1494 0xf8, 0x06, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1495 0x01, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1496 0x0a, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1497 0x13, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1498 0x1c, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1499 0x25, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1500 0x2e, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1501 0x37, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1502 0x40, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1503 0x49, 0x07, 0x00, 0x00, 0x00, 0x18, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1504 0x00, 0x00, 0x57, 0x03, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x92,
1505 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1506 0x52, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1507 0x57, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1508 0x5c, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1509 0x61, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1510 0x66, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1511 0x6b, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1512 0x70, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1513 0x75, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1514 0x7a, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1515 0x7f, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1516 0x84, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1517 0x89, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1518 0x8e, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1519 0x93, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1520 0x98, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1521 0x9d, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x88, 0x82, 0xcd, 0x6e, 0x3a,
1522 0x00, 0x00, 0x5f, 0x03, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x92,
1523 0x00, 0x00, 0x71, 0x03, 0x00, 0x00, 0x00, 0xd4, 0x02, 0x00, 0x00, 0x92,
1524 0x00, 0x00, 0x3b, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x01, 0x92,
1525 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1526 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1527 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1528 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1529 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1530 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1531 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1532 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1533 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1534 0x00, 0x00, 0x79, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1535 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1536 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1537 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1538 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1539 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1540 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1541 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1542 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1543 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1544 0x00, 0x00, 0x88, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1545 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1546 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1547 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1548 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1549 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1550 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1551 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1552 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1553 0x00, 0x00, 0xda, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1554 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1555 0x00, 0x00, 0xda, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1556 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1557 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1558 0x00, 0x00, 0xda, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1559 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1560 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1561 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1562 0x00, 0x00, 0xea, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1563 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1564 0x00, 0x00, 0xea, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1565 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1566 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1567 0x00, 0x00, 0xea, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1568 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1569 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1570 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1571 0x00, 0x00, 0xe8, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1572 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1573 0x00, 0x00, 0xe8, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1574 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1575 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1576 0x00, 0x00, 0xe8, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1577 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1578 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1579 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1580 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1581 0x00, 0x00, 0x86, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1582 0x00, 0x00, 0xd7, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1583 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1584 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1585 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1586 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1587 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1588 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1589 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1590 0x00, 0x00, 0x7d, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1591 0x00, 0x00, 0xd7, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1592 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1593 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1594 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1595 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1596 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1597 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1598 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1599 0x00, 0x00, 0x7d, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1600 0x00, 0x00, 0xd7, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1601 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1602 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1603 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1604 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1605 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1606 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1607 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1608 0x00, 0x00, 0x0c, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1609 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1610 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1611 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1612 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1613 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1614 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1615 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1616 0x00, 0x00, 0xe9, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1617 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1618 0x00, 0x00, 0xe9, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1619 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1620 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1621 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1622 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1623 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1624 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1625 0x00, 0x00, 0xe9, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1626 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1627 0x00, 0x00, 0xe9, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1628 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1629 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1630 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1631 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1632 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1633 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1634 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1635 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1636 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1637 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1638 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1639 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1640 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1641 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1642 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1643 0x00, 0x00, 0xc1, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1644 0x00, 0x00, 0xb8, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1645 0x00, 0x00, 0xc1, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1646 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1647 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1648 0x00, 0x00, 0xc1, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1649 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1650 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1651 0x00, 0x00, 0x81, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x00, 0x92,
1652 0x00, 0x00, 0x81, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1653 0x00, 0x00, 0x81, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1654 0x00, 0x00, 0x81, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1655 0x00, 0x00, 0x86, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1656 0x00, 0x00, 0x81, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x01, 0x92,
1657 0x00, 0x00, 0x81, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1658 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1659 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1660 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1661 0x00, 0x00, 0x76, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1662 0x00, 0x00, 0x76, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1663 0x00, 0x00, 0x76, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1664 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1665 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1666 0x00, 0x00, 0x76, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1667 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1668 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1669 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1670 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1671 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1672 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1673 0x00, 0x00, 0xc9, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1674 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1675 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1676 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1677 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1678 0x00, 0x00, 0x47, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1679 0x00, 0x00, 0x4b, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1680 0x00, 0x00, 0xb0, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1681 0x00, 0x00, 0x4b, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1682 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1683 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1684 0x00, 0x00, 0x4b, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1685 0x00, 0x00, 0xa3, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x02, 0x92,
1686 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1687 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1688 0x00, 0x00, 0x4c, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1689 0x00, 0x00, 0xb0, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1690 0x00, 0x00, 0x4c, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1691 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1692 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1693 0x00, 0x00, 0x4c, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1694 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1695 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1696 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1697 0x00, 0x00, 0x51, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1698 0x00, 0x00, 0x51, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1699 0x00, 0x00, 0x51, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1700 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1701 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1702 0x00, 0x00, 0x51, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1703 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1704 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1705 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1706 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1707 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1708 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1709 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1710 0x00, 0x00, 0x68, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x00, 0x92,
1711 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1712 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1713 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1714 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1715 0x00, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1716 0x00, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1717 0x00, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1718 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1719 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1720 0x00, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1721 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1722 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1723 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1724 0x00, 0x00, 0x7e, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1725 0x00, 0x00, 0x7e, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1726 0x00, 0x00, 0x7e, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1727 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1728 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1729 0x00, 0x00, 0x7e, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1730 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1731 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x92,
1732 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1733 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1734 0x00, 0x00, 0x8f, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1735 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1736 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1737 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1738 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1739 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1740 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1741 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1742 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1743 0x00, 0x00, 0xa0, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1744 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1745 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1746 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1747 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1748 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1749 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1750 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1751 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1752 0x00, 0x00, 0xa0, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1753 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1754 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1755 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1756 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1757 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1758 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1759 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1760 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1761 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1762 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1763 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1764 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1765 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1766 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1767 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1768 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1769 0x00, 0x00, 0xb5, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1770 0x00, 0x00, 0xb5, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1771 0x00, 0x00, 0xb5, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1772 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1773 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1774 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1775 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1776 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1777 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1778 0x00, 0x00, 0x75, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1779 0x00, 0x00, 0x75, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1780 0x00, 0x00, 0x75, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1781 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1782 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1783 0x00, 0x00, 0x75, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1784 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1785 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1786 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1787 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1788 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1789 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1790 0x00, 0x00, 0xcc, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x02, 0x92,
1791 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1792 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1793 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1794 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1795 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1796 0x00, 0x00, 0x88, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1797 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1798 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1799 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1800 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1801 0x00, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1802 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1803 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1804 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1805 0x00, 0x00, 0x88, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1806 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1807 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1808 0x00, 0x00, 0xd4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1809 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1810 0x00, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1811 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1812 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1813 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1814 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1815 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1816 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1817 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1818 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1819 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1820 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1821 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1822 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1823 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1824 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1825 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1826 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1827 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1828 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1829 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1830 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1831 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1832 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1833 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1834 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1835 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1836 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1837 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1838 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1839 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1840 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1841 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1842 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1843 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1844 0x00, 0x00, 0xa2, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1845 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1846 0x00, 0x00, 0xa8, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1847 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1848 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1849 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1850 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1851 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1852 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1853 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1854 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1855 0x00, 0x00, 0x2a, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1856 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1857 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1858 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1859 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1860 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1861 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1862 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1863 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1864 0x00, 0x00, 0x2a, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1865 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1866 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1867 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1868 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1869 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1870 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1871 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1872 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1873 0x00, 0x00, 0x34, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x01, 0x92,
1874 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1875 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1876 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1877 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1878 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1879 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1880 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1881 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1882 0x00, 0x00, 0x34, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1883 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1884 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1885 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1886 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1887 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1888 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1889 0x00, 0x00, 0x31, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x01, 0x92,
1890 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1891 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1892 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1893 0x00, 0x00, 0xab, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x00, 0x92,
1894 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1895 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1896 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1897 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1898 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1899 0x00, 0x00, 0xf3, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1900 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1901 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1902 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1903 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1904 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1905 0x00, 0x00, 0xb6, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1906 0x00, 0x00, 0xb6, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1907 0x00, 0x00, 0xb6, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1908 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1909 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1910 0x00, 0x00, 0x0a, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1911 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1912 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1913 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1914 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1915 0x00, 0x00, 0x1a, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1916 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1917 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1918 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1919 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1920 0x00, 0x00, 0xc3, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1921 0x00, 0x00, 0xc3, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1922 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1923 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1924 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1925 0x00, 0x00, 0xe5, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1926 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1927 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1928 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1929 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1930 0x00, 0x00, 0xe8, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1931 0x00, 0x00, 0xe8, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1932 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1933 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1934 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1935 0x00, 0x00, 0xea, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1936 0x00, 0x00, 0xea, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1937 0x00, 0x00, 0xea, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1938 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1939 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x00, 0x92,
1940 0x00, 0x00, 0xc2, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1941 0x00, 0x00, 0xc2, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1942 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1943 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x92,
1944 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x40, 0x00, 0x92,
1945 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1946 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1947 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1948 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1949 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1950 0x00, 0x00, 0x2e, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1951 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1952 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1953 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1954 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1955 0x00, 0x00, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1956 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1957 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1958 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1959 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1960 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1961 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1962 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1963 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1964 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1965 0x00, 0x00, 0x22, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1966 0x00, 0x00, 0x22, 0x09, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1967 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1968 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1969 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
1970 0x00, 0x00, 0xef, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0x80, 0x00, 0x92,
1971 0x00, 0x00, 0xef, 0x08, 0x00, 0x00, 0x00, 0x10, 0x08, 0xc0, 0x00, 0x92,
1972 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x01, 0x92,
1973 0x08, 0x00, 0xa1, 0x03, 0x00, 0x18, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x99,
1974 0x08, 0x00, 0x9d, 0x03, 0x00, 0x18, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x99,
1975 0x00, 0x00, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
1976 0x08, 0x00, 0xa7, 0x07, 0x1d, 0x19, 0x01, 0xe8, 0x76, 0x20, 0x81, 0xb9,
1977 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
1978 0x00, 0x00, 0xa1, 0x03, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
1979 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
1980 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x94,
1981 0x08, 0x00, 0xa1, 0x03, 0x00, 0x1c, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x99,
1982 0x00, 0x00, 0x8a, 0x11, 0x80, 0x0f, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xb6,
1983 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
1984 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x01, 0xec, 0x06, 0xc0, 0x6e, 0x35,
1985 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
1986 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x00, 0x2d, 0x37,
1987 0xb4, 0xcc, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x97, 0x3a,
1988 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0xc0, 0x2c, 0x37,
1989 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x8d, 0x97, 0x3a,
1990 0x00, 0x00, 0x8a, 0x11, 0x02, 0x10, 0x00, 0x00, 0x87, 0xbf, 0x97, 0xba,
1991 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x40, 0xfe, 0x32,
1992 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
1993 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x78, 0x09, 0x00, 0x6e, 0x32,
1994 0x00, 0x00, 0xb7, 0x07, 0xb7, 0x10, 0x02, 0xe0, 0x06, 0x80, 0x97, 0xb2,
1995 0x00, 0x00, 0xba, 0x07, 0x80, 0x00, 0x00, 0x80, 0xf2, 0x80, 0xfc, 0xb6,
1996 0x00, 0x00, 0xbb, 0x07, 0x00, 0x00, 0x00, 0xc8, 0xff, 0x80, 0xfc, 0x94,
1997 0x00, 0x00, 0xbc, 0x07, 0x9f, 0x99, 0x00, 0x80, 0x82, 0x1b, 0xee, 0xbc,
1998 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xe0, 0x0e, 0x00, 0x6e, 0x32,
1999 0x00, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
2000 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2001 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x1c, 0x09, 0x00, 0x6e, 0x32,
2002 0x40, 0x00, 0xc1, 0x07, 0x06, 0x01, 0x00, 0x80, 0x82, 0xcd, 0x91, 0xbc,
2003 0x00, 0x40, 0xc2, 0x07, 0x00, 0x18, 0x02, 0xe0, 0xa6, 0xcd, 0x2c, 0x92,
2004 0x00, 0x60, 0x00, 0x00, 0x00, 0x18, 0x02, 0xe0, 0xa6, 0xcd, 0x2c, 0x32,
2005 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x80, 0x03, 0x32,
2006 0x00, 0x00, 0xc5, 0x07, 0x80, 0xd7, 0x01, 0x80, 0x32, 0xc0, 0x6e, 0xb6,
2007 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x49, 0x00, 0x92, 0x3a,
2008 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x18, 0x09, 0x00, 0x6e, 0x32,
2009 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0x24, 0x09, 0xc0, 0x6e, 0x32,
2010 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x28, 0x09, 0x80, 0x6e, 0x32,
2011 0x00, 0x00, 0xd3, 0x07, 0x80, 0x0e, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xb6,
2012 0x02, 0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0xec, 0x06, 0x00, 0x36, 0x32,
2013 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x01, 0x92, 0x3a,
2014 0x00, 0x00, 0xcf, 0x07, 0x80, 0xd6, 0x01, 0x80, 0x42, 0xc0, 0x6e, 0xb6,
2015 0x00, 0x82, 0x00, 0x00, 0x00, 0x10, 0x02, 0xe0, 0xa6, 0xcd, 0x91, 0x32,
2016 0x00, 0xa0, 0x00, 0x00, 0x00, 0x2c, 0x02, 0xe8, 0x06, 0x00, 0x36, 0x32,
2017 0x28, 0x00, 0xdd, 0x07, 0x00, 0x32, 0x02, 0xec, 0x06, 0x00, 0x36, 0x92,
2018 0x00, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x1c, 0xd9, 0xc1, 0x91, 0x34,
2019 0x00, 0x82, 0x00, 0x00, 0x00, 0x10, 0x02, 0xe0, 0xa6, 0xcd, 0x91, 0x32,
2020 0x00, 0xa0, 0x00, 0x00, 0x00, 0x2c, 0x02, 0xe8, 0x06, 0x00, 0x36, 0x32,
2021 0x34, 0x00, 0xdd, 0x07, 0x00, 0x32, 0x02, 0xec, 0x06, 0x00, 0x36, 0x92,
2022 0x04, 0x00, 0x00, 0x00, 0x00, 0x34, 0x02, 0xec, 0x06, 0x00, 0x36, 0x32,
2023 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0d, 0x92, 0x3a,
2024 0x00, 0x00, 0xd9, 0x07, 0x80, 0xd6, 0x01, 0x80, 0x42, 0xc0, 0x6e, 0xb6,
2025 0x00, 0x86, 0x00, 0x00, 0x00, 0x10, 0x02, 0xe0, 0xa6, 0xcd, 0x91, 0x32,
2026 0x04, 0xa0, 0x00, 0x00, 0x00, 0x2c, 0x02, 0xe8, 0x06, 0x00, 0x36, 0x32,
2027 0x14, 0x00, 0xdd, 0x07, 0x00, 0x32, 0x02, 0xec, 0x06, 0x00, 0x36, 0x92,
2028 0x00, 0x00, 0x00, 0x00, 0xd3, 0x01, 0x00, 0x1c, 0xd9, 0xc1, 0x91, 0x34,
2029 0x00, 0x86, 0x00, 0x00, 0x00, 0x10, 0x02, 0xe0, 0xa6, 0xcd, 0x91, 0x32,
2030 0x04, 0xa0, 0x00, 0x00, 0x00, 0x2c, 0x02, 0xe8, 0x06, 0x00, 0x36, 0x32,
2031 0x20, 0x00, 0xdd, 0x07, 0x00, 0x32, 0x02, 0xec, 0x06, 0x00, 0x36, 0x92,
2032 0x12, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0xec, 0x86, 0xcd, 0x91, 0x3a,
2033 0x08, 0x00, 0x00, 0x00, 0x00, 0x28, 0x02, 0xe8, 0x86, 0x24, 0x90, 0x39,
2034 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0xe0, 0x96, 0x24, 0x14, 0x37,
2035 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xe0, 0x06, 0x80, 0x91, 0x32,
2036 0x00, 0x00, 0xe3, 0x07, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x92, 0xbc,
2037 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
2038 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x32,
2039 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x32,
2040 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
2041 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x00, 0x2d, 0x37,
2042 0x00, 0xcd, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x97, 0x3a,
2043 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0xc0, 0x2c, 0x37,
2044 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x8d, 0x97, 0x3a,
2045 0x00, 0x00, 0x8a, 0x11, 0x02, 0x10, 0x00, 0x00, 0x87, 0xbf, 0x97, 0xba,
2046 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x40, 0xfe, 0x32,
2047 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0xb4,
2048 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2049 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
2050 0x00, 0x00, 0x8a, 0x11, 0x04, 0xc9, 0x01, 0x80, 0x02, 0x80, 0x6e, 0xbc,
2051 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0xec, 0x06, 0x80, 0x83, 0x32,
2052 0x01, 0x00, 0xaa, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2053 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2054 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
2055 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2056 0x00, 0xc0, 0xf9, 0x07, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2057 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
2058 0x2c, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2059 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2060 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
2061 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
2062 0x00, 0x00, 0x50, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
2063 0x00, 0x00, 0xff, 0x07, 0x80, 0xd7, 0x01, 0x2c, 0x09, 0xc0, 0x6e, 0xb2,
2064 0x00, 0x00, 0x00, 0x00, 0xda, 0xd7, 0x01, 0xec, 0x06, 0xc0, 0x6e, 0x35,
2065 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x01, 0xec, 0x06, 0x40, 0xed, 0x32,
2066 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x01, 0xec, 0x06, 0x80, 0xee, 0x32,
2067 0x00, 0x00, 0x02, 0x08, 0x80, 0x01, 0x00, 0x80, 0x62, 0xc0, 0x92, 0xb6,
2068 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x82, 0x81, 0x2f, 0x34,
2069 0x00, 0x00, 0xaa, 0x07, 0x04, 0x06, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2070 0x00, 0x00, 0xaa, 0x07, 0x80, 0x00, 0x00, 0x80, 0x72, 0x81, 0x2f, 0xb6,
2071 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x72, 0x81, 0x2f, 0x34,
2072 0x3b, 0x00, 0xaa, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2073 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2074 0x00, 0x00, 0x8a, 0x11, 0x04, 0x07, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
2075 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xb2, 0x81, 0x2f, 0xb6,
2076 0x00, 0x00, 0x0a, 0x08, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x81, 0x2f, 0x94,
2077 0x00, 0x00, 0x8a, 0x11, 0x04, 0xa0, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2078 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2079 0x00, 0x00, 0x60, 0x11, 0x00, 0x78, 0x01, 0x60, 0x08, 0x00, 0x6e, 0xf2,
2080 0x00, 0x00, 0x0f, 0x08, 0x12, 0x01, 0x00, 0xc8, 0x02, 0x00, 0x20, 0xb2,
2081 0x00, 0x00, 0x12, 0x08, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2082 0x00, 0x00, 0x1e, 0x08, 0x12, 0x01, 0x00, 0x5c, 0x08, 0x80, 0x20, 0xb2,
2083 0x00, 0x00, 0x12, 0x08, 0x12, 0x01, 0x00, 0x60, 0x02, 0x80, 0x2c, 0xb2,
2084 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2085 0x00, 0x00, 0x14, 0x08, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x80, 0xbc,
2086 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x80, 0xff, 0x3a,
2087 0x00, 0x00, 0x17, 0x08, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2088 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2089 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
2090 0x00, 0x00, 0xaa, 0x07, 0x80, 0x00, 0x00, 0x80, 0x72, 0x81, 0x2f, 0xb6,
2091 0x3b, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2092 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x72, 0x81, 0x2f, 0x94,
2093 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x14, 0x08, 0x80, 0x6e, 0x32,
2094 0x00, 0x00, 0x12, 0x08, 0x12, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x20, 0xb2,
2095 0x00, 0x00, 0x10, 0x08, 0x12, 0x00, 0x00, 0x5c, 0x08, 0x80, 0x20, 0xb2,
2096 0x00, 0x00, 0x8a, 0x11, 0x04, 0xa0, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2097 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
2098 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x78, 0xe1, 0x6e, 0x39,
2099 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x20, 0x07, 0x00, 0x00, 0x32,
2100 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0xca, 0xe9, 0x39,
2101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x40, 0x80, 0x32,
2102 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x79, 0x21, 0x2f, 0x39,
2103 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x44, 0xe2, 0x25, 0x6e, 0x32,
2104 0x00, 0x00, 0x8a, 0x11, 0x04, 0x90, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xb2,
2105 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
2106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
2107 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x3e,
2108 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
2109 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0x32,
2110 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
2111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0x3c,
2112 0x00, 0x00, 0x82, 0x08, 0x04, 0xb0, 0x00, 0xe0, 0xd6, 0x20, 0x6e, 0xbc,
2113 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2114 0x00, 0x00, 0x50, 0x08, 0x04, 0x00, 0x00, 0x3c, 0xd8, 0xe0, 0x83, 0xbc,
2115 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x81, 0xbc,
2116 0x00, 0x00, 0x34, 0x08, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
2117 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0xe2, 0xe0, 0x38, 0xb2,
2118 0x00, 0x00, 0x41, 0x08, 0x51, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
2119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf9, 0x81, 0x83, 0x34,
2120 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0xe2, 0xe5, 0x38, 0xb2,
2121 0x00, 0x00, 0x39, 0x08, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2122 0x00, 0x00, 0x5c, 0x10, 0x00, 0xa0, 0x01, 0x50, 0x08, 0x00, 0x6e, 0xf2,
2123 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xe0, 0x06, 0x00, 0x85, 0x32,
2124 0x00, 0x00, 0x3b, 0x08, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2125 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2126 0x00, 0x00, 0x3f, 0x08, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
2127 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2128 0x00, 0x00, 0x3a, 0x08, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
2129 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2130 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
2131 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
2132 0x00, 0x00, 0x46, 0x08, 0x2a, 0x01, 0x00, 0x00, 0xd8, 0x20, 0x80, 0xba,
2133 0x00, 0x00, 0x45, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2134 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
2136 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2137 0x00, 0x00, 0x00, 0x00, 0xca, 0xe0, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0x32,
2138 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
2139 0x00, 0x00, 0x8a, 0x11, 0x04, 0xf0, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x18, 0x81, 0x83, 0x35,
2141 0x00, 0x00, 0x28, 0x08, 0x04, 0xb0, 0x00, 0x80, 0x82, 0x9b, 0x81, 0xbc,
2142 0x00, 0x00, 0x8a, 0x11, 0x0d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2143 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2144 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x42, 0x80, 0x2f, 0x35,
2145 0x08, 0xa0, 0x28, 0x08, 0x12, 0x01, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0xb2,
2146 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf9, 0x81, 0x83, 0x34,
2148 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0xe2, 0xe5, 0x38, 0xb2,
2149 0x00, 0x00, 0x58, 0x08, 0x28, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0xba,
2150 0x00, 0x00, 0x5b, 0x10, 0x00, 0xa0, 0x01, 0x50, 0x08, 0x00, 0x6e, 0xf2,
2151 0x00, 0x00, 0x58, 0x08, 0x1d, 0xf8, 0x01, 0xe0, 0x06, 0x00, 0x85, 0xb2,
2152 0x00, 0x00, 0x58, 0x08, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2153 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2155 0x00, 0x00, 0x5c, 0x08, 0x04, 0xa0, 0x00, 0xe0, 0x06, 0x80, 0x81, 0xb2,
2156 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0xe8, 0x06, 0x40, 0x81, 0x32,
2157 0x00, 0x00, 0x8a, 0x11, 0x04, 0x90, 0x00, 0xe0, 0x06, 0xc0, 0x86, 0xb2,
2158 0x00, 0x00, 0x6e, 0x08, 0x00, 0x98, 0x00, 0xe0, 0x06, 0xc0, 0x84, 0x92,
2159 0x00, 0x00, 0x62, 0x08, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2160 0x00, 0x00, 0x5f, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2161 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2162 0x1d, 0x00, 0x62, 0x08, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2163 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
2164 0x00, 0x00, 0x5e, 0x08, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x80, 0x2f, 0x94,
2165 0x00, 0x00, 0x8a, 0x11, 0x04, 0xe0, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xb2,
2166 0x00, 0x00, 0x00, 0x00, 0xca, 0xe8, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
2167 0x00, 0x00, 0x8a, 0x11, 0x04, 0xf0, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2168 0x00, 0x00, 0x6a, 0x08, 0x04, 0xb0, 0x00, 0x80, 0x82, 0x9b, 0x81, 0xbc,
2169 0x00, 0x00, 0x8a, 0x11, 0x0d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2170 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2171 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x42, 0x80, 0x2f, 0x35,
2172 0x08, 0xa0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0xb2,
2173 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xe0, 0x06, 0x80, 0x81, 0x32,
2174 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0xe0, 0x06, 0xc0, 0x84, 0x32,
2175 0x00, 0x00, 0x8a, 0x11, 0x04, 0x90, 0x00, 0xe0, 0x06, 0xc0, 0x86, 0xb2,
2176 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0xe8, 0x06, 0x40, 0x81, 0x32,
2177 0x00, 0x00, 0x74, 0x08, 0x2a, 0x5d, 0x01, 0xec, 0x06, 0x80, 0xee, 0xb2,
2178 0x00, 0x00, 0x71, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2179 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2180 0x1d, 0x00, 0x74, 0x08, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2181 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
2182 0x00, 0x00, 0x70, 0x08, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x80, 0x2f, 0x94,
2183 0x10, 0x04, 0x77, 0x08, 0x37, 0x00, 0x00, 0xf8, 0xa2, 0x8d, 0x2f, 0xb1,
2184 0x3b, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x72, 0x81, 0x2f, 0x34,
2186 0x08, 0x00, 0x00, 0x00, 0xca, 0x1c, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x39,
2187 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2188 0x00, 0x00, 0x7d, 0x08, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
2189 0x00, 0x00, 0x7c, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2190 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2191 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2192 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2193 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xc2, 0x00, 0x03, 0xbc,
2194 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80, 0x67, 0xa1, 0x73, 0x39,
2195 0x30, 0x00, 0xa4, 0x03, 0x12, 0x01, 0x00, 0x5c, 0xa2, 0x8d, 0x2c, 0xb2,
2196 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2197 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xd2, 0xe0, 0x83, 0xbc,
2198 0x00, 0x00, 0x8a, 0x11, 0x2a, 0x00, 0x00, 0x78, 0xf9, 0x81, 0x83, 0xb4,
2199 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0xe2, 0xe5, 0x38, 0xb2,
2200 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2201 0x00, 0x00, 0x8a, 0x08, 0x1d, 0x00, 0x00, 0x38, 0x18, 0x81, 0x83, 0xb5,
2202 0x00, 0x00, 0x8a, 0x08, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2203 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2205 0x00, 0x00, 0x8d, 0x08, 0x04, 0x06, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2206 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x42, 0x80, 0x2f, 0x34,
2207 0x08, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0xb2,
2208 0x00, 0x00, 0x90, 0x08, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2209 0x00, 0x00, 0x5c, 0x10, 0x00, 0xa0, 0x01, 0x50, 0x08, 0x00, 0x6e, 0xf2,
2210 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xe0, 0x06, 0x00, 0x85, 0x32,
2211 0x00, 0x00, 0x92, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2212 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2213 0x00, 0x00, 0xae, 0x08, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2214 0x00, 0x00, 0x95, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2215 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0x35,
2217 0x00, 0x00, 0xac, 0x08, 0x04, 0x00, 0x00, 0x80, 0x02, 0x61, 0x80, 0xbc,
2218 0x00, 0x00, 0xa4, 0x08, 0x80, 0xb8, 0x00, 0x00, 0x09, 0xc0, 0x6e, 0xb2,
2219 0x40, 0x00, 0x9c, 0x08, 0x04, 0x00, 0x00, 0x80, 0x82, 0x0d, 0x90, 0xbc,
2220 0x80, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x0d, 0x90, 0xbc,
2221 0x00, 0x00, 0x9c, 0x08, 0x02, 0xb0, 0x00, 0x80, 0x82, 0x1b, 0x84, 0xbc,
2222 0x00, 0x00, 0xa4, 0x08, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x81, 0x2f, 0x94,
2223 0x00, 0x00, 0x8a, 0x11, 0x04, 0x07, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
2224 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xb2, 0x81, 0x2f, 0xb6,
2225 0x00, 0x00, 0x8a, 0x11, 0x80, 0xd6, 0x01, 0x80, 0x52, 0xc0, 0x6e, 0xb6,
2226 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0xec, 0x56, 0xc0, 0x6e, 0x34,
2227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x86, 0x3a,
2228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xb7, 0x01, 0x78, 0x34,
2229 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0xe0, 0x06, 0x00, 0x86, 0x32,
2230 0x40, 0x00, 0xae, 0x08, 0x04, 0x00, 0x00, 0x80, 0x82, 0x0d, 0x90, 0xbc,
2231 0x00, 0x00, 0x8a, 0x11, 0x04, 0xa0, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2232 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x20, 0x80, 0xfa,
2233 0x00, 0x00, 0x8a, 0x11, 0x06, 0x00, 0x00, 0x3c, 0x18, 0x20, 0x84, 0xbc,
2234 0x00, 0x00, 0x8a, 0x11, 0x04, 0xb0, 0x00, 0x3c, 0x88, 0xdb, 0x83, 0xbe,
2235 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x01, 0x78, 0xb6,
2236 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf7, 0x20, 0x78, 0x3a,
2237 0x00, 0x00, 0x00, 0x00, 0x58, 0x78, 0x01, 0xe0, 0xf6, 0x20, 0x86, 0x3a,
2238 0x00, 0x00, 0x25, 0x08, 0x00, 0x00, 0x00, 0x04, 0xf8, 0x60, 0x80, 0x9a,
2239 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x81, 0x2f, 0xb6,
2240 0x2e, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2241 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2242 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xc2, 0x00, 0x03, 0xbc,
2243 0x10, 0x00, 0x00, 0x00, 0xd4, 0x18, 0x00, 0x80, 0x67, 0xa1, 0x73, 0x39,
2244 0x00, 0x00, 0x00, 0x00, 0xda, 0x5c, 0x01, 0xec, 0x06, 0x80, 0xee, 0x32,
2245 0x30, 0x00, 0xaa, 0x07, 0x12, 0x01, 0x00, 0x5c, 0xa2, 0x8d, 0x2c, 0xb2,
2246 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2247 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x81, 0x2f, 0xb6,
2248 0x00, 0x00, 0x1a, 0x08, 0x00, 0x00, 0x00, 0xf8, 0xc2, 0x81, 0x2f, 0x95,
2249 0x00, 0x00, 0xb8, 0x08, 0x80, 0x00, 0x00, 0x80, 0xc2, 0x81, 0x2f, 0xb6,
2250 0x00, 0x00, 0xbb, 0x08, 0x00, 0xd0, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x92,
2251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xc2, 0x81, 0x2f, 0x35,
2252 0x00, 0x00, 0xbb, 0x08, 0x04, 0xd1, 0x01, 0x80, 0x02, 0x80, 0x6e, 0xbc,
2253 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0xec, 0x26, 0xc0, 0x6e, 0x34,
2254 0x00, 0x00, 0xbd, 0x08, 0x80, 0x00, 0x00, 0x80, 0x92, 0x81, 0x2f, 0xb6,
2255 0x00, 0x00, 0xc0, 0x08, 0x00, 0xc8, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x92,
2256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x92, 0x81, 0x2f, 0x35,
2257 0x00, 0x00, 0xc0, 0x08, 0x04, 0xc9, 0x01, 0x80, 0x02, 0x80, 0x6e, 0xbc,
2258 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0x34,
2259 0x10, 0x00, 0xaa, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2260 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2261 0x00, 0x00, 0xaa, 0x07, 0x9a, 0x01, 0x00, 0xf8, 0x42, 0x81, 0x2f, 0xb5,
2262 0x00, 0x00, 0xaa, 0x07, 0x12, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x20, 0xb2,
2263 0x00, 0x00, 0xc7, 0x08, 0x12, 0x01, 0x00, 0x5c, 0x08, 0x80, 0x20, 0xb2,
2264 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x02, 0x80, 0x2c, 0xb2,
2265 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x80, 0xff, 0x9a,
2266 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x79, 0x21, 0x2f, 0x39,
2267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf9, 0x81, 0x97, 0x34,
2268 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x44, 0xe2, 0x25, 0x6e, 0x32,
2269 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x50, 0x08, 0x00, 0x6e, 0x32,
2270 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0x60, 0x08, 0x00, 0x6e, 0x32,
2271 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x0c, 0x09, 0x00, 0x6e, 0x32,
2272 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x1c, 0x09, 0x00, 0x6e, 0x32,
2273 0x00, 0x00, 0x77, 0x10, 0x00, 0xa8, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xf2,
2274 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf8, 0x01, 0xe0, 0x06, 0x00, 0x85, 0x32,
2275 0x00, 0x00, 0x00, 0x00, 0xda, 0x5c, 0x01, 0xec, 0x06, 0x80, 0xee, 0x32,
2276 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2277 0x00, 0x00, 0xd4, 0x08, 0x23, 0x29, 0x02, 0x04, 0x09, 0x80, 0x6e, 0xb2,
2278 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2279 0x08, 0x00, 0xd8, 0x08, 0x1d, 0x1c, 0x01, 0xe8, 0x76, 0x20, 0x81, 0xb9,
2280 0x00, 0x00, 0xd8, 0x08, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2281 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2283 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2284 0x00, 0x00, 0xdc, 0x08, 0x9d, 0x01, 0x00, 0x80, 0x07, 0xc0, 0x90, 0xb2,
2285 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x80, 0x07, 0xc0, 0x91, 0x32,
2286 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x80, 0x07, 0x00, 0xee, 0x32,
2287 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x07, 0xc0, 0x85, 0x32,
2288 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x07, 0x40, 0x90, 0x32,
2289 0x10, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x80, 0x87, 0x8d, 0x85, 0x37,
2290 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x80, 0x07, 0x00, 0x86, 0x32,
2291 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x80, 0x07, 0x00, 0x85, 0x32,
2292 0x00, 0x00, 0xe3, 0x08, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2293 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2294 0x30, 0x00, 0xa4, 0x03, 0x12, 0x01, 0x00, 0x5c, 0xa2, 0x8d, 0x2c, 0xb2,
2295 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2296 0x00, 0x12, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x8d, 0x2f, 0xb0,
2297 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x01, 0x78, 0x09, 0x80, 0x6e, 0x32,
2298 0x00, 0x00, 0xaa, 0x07, 0xdc, 0xd1, 0x01, 0xe8, 0x06, 0x80, 0x97, 0x92,
2299 0x12, 0x00, 0xaa, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2300 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2301 0x00, 0x00, 0x4f, 0x0e, 0x00, 0x00, 0x00, 0x18, 0x09, 0x40, 0x81, 0xf2,
2302 0x00, 0x00, 0x2f, 0x0e, 0x00, 0xa8, 0x01, 0x20, 0x09, 0x00, 0x6e, 0xf2,
2303 0x00, 0x00, 0xaa, 0x07, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x80, 0x2f, 0xb6,
2304 0x30, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2305 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x42, 0x81, 0x2f, 0x94,
2306 0x00, 0x00, 0xaa, 0x07, 0x35, 0x01, 0x00, 0xf8, 0x12, 0x81, 0x2f, 0xb5,
2307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2308 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
2309 0x00, 0xc0, 0xf6, 0x08, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2310 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
2311 0x00, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
2312 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2313 0x00, 0x00, 0x47, 0x10, 0x00, 0x98, 0x01, 0x28, 0x09, 0x00, 0x6e, 0xf2,
2314 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2315 0x00, 0x00, 0xff, 0x08, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x81, 0x2f, 0xb6,
2316 0x00, 0x00, 0xff, 0x08, 0x80, 0x00, 0x00, 0x80, 0x42, 0x81, 0x2f, 0xb6,
2317 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
2318 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x2f, 0xd2,
2319 0x00, 0x00, 0xff, 0x08, 0x08, 0x5b, 0x01, 0xec, 0x06, 0xfb, 0x6e, 0xbc,
2320 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
2321 0x34, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0x32,
2322 0x00, 0x00, 0x06, 0x09, 0x80, 0x01, 0x00, 0x80, 0x92, 0x81, 0x2f, 0xb6,
2323 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xc2, 0x81, 0x2f, 0xb6,
2324 0x00, 0x00, 0x0d, 0x09, 0x08, 0xc9, 0x01, 0xe8, 0x06, 0xbb, 0x6e, 0xbc,
2325 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
2326 0x32, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2327 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x01, 0xf2,
2328 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2329 0x00, 0x00, 0x0d, 0x09, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x81, 0x2f, 0xb6,
2330 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x92, 0x81, 0x2f, 0xb6,
2331 0x00, 0x00, 0x0d, 0x09, 0x08, 0xd1, 0x01, 0xe8, 0x06, 0xbb, 0x6e, 0xbc,
2332 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
2333 0x32, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2334 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x28, 0x09, 0xc0, 0x01, 0xf2,
2335 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2336 0x00, 0x00, 0xaa, 0x07, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x81, 0x2f, 0xb6,
2337 0x17, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0x92,
2338 0x00, 0x00, 0x8a, 0x11, 0x04, 0x07, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
2339 0x00, 0x00, 0x13, 0x09, 0x12, 0x00, 0x00, 0xc8, 0x02, 0x00, 0x20, 0xb2,
2340 0x00, 0x00, 0x16, 0x09, 0x12, 0x01, 0x00, 0x5c, 0x08, 0x80, 0x20, 0xb2,
2341 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x02, 0x80, 0x2c, 0xb2,
2342 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x80, 0xff, 0x3a,
2343 0x00, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
2344 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2345 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x79, 0x21, 0x2f, 0x39,
2346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf9, 0x81, 0x97, 0x34,
2347 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x02, 0x44, 0xe2, 0x25, 0x6e, 0x32,
2348 0x00, 0x00, 0x00, 0x00, 0xd4, 0xa0, 0x01, 0x50, 0x08, 0x00, 0x6e, 0x32,
2349 0x00, 0x00, 0x00, 0x00, 0xdb, 0x79, 0x01, 0x60, 0x08, 0x00, 0x6e, 0x32,
2350 0x00, 0x00, 0x5c, 0x10, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0xf2,
2351 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xe0, 0x06, 0x00, 0x85, 0x32,
2352 0x00, 0x00, 0x1f, 0x09, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2353 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2354 0x30, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0xa2, 0x8d, 0x2c, 0xb2,
2355 0x00, 0x00, 0x8a, 0x11, 0x04, 0x07, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2356 0x00, 0x00, 0xaa, 0x07, 0xda, 0x5c, 0x01, 0xec, 0x06, 0x80, 0xee, 0x92,
2357 0x00, 0x00, 0xaa, 0x07, 0x9f, 0x41, 0x01, 0x80, 0x52, 0x20, 0x6e, 0xbc,
2358 0x00, 0x00, 0x2d, 0x09, 0x9f, 0x98, 0x01, 0x80, 0x52, 0x20, 0x6e, 0xbc,
2359 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2360 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
2361 0x00, 0xc0, 0x2b, 0x09, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2362 0x20, 0x80, 0xaa, 0x07, 0x31, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xb2,
2363 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x12, 0x81, 0x2f, 0x34,
2364 0x3a, 0x00, 0xaa, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2365 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2366 0x00, 0x00, 0x47, 0x10, 0x00, 0x98, 0x01, 0x28, 0x09, 0x00, 0x6e, 0xf2,
2367 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2368 0x00, 0x00, 0xaa, 0x07, 0xd5, 0x41, 0x01, 0xe0, 0x06, 0x40, 0x81, 0x92,
2369 0x00, 0x00, 0xaa, 0x07, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
2370 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x08, 0x00, 0x6e, 0x32,
2371 0x00, 0x00, 0x60, 0x11, 0x00, 0x78, 0x01, 0x60, 0x08, 0x00, 0x6e, 0xf2,
2372 0x00, 0x00, 0xaa, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2373 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x78, 0x09, 0x80, 0x6e, 0x32,
2374 0x00, 0x00, 0x35, 0x09, 0x04, 0xd4, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
2375 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x19, 0x80, 0x97, 0x37,
2376 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xe0, 0xe6, 0x25, 0x6e, 0x3a,
2377 0x00, 0x00, 0x60, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2378 0x00, 0x00, 0x39, 0x09, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2379 0x00, 0x00, 0xaa, 0x07, 0x00, 0x90, 0x01, 0xe0, 0x06, 0x00, 0x80, 0x92,
2380 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xe0, 0x06, 0x00, 0x80, 0x32,
2381 0x00, 0x00, 0x1a, 0x08, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2382 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x00, 0x6e, 0x32,
2383 0x02, 0x00, 0x3f, 0x09, 0x04, 0xb9, 0x00, 0x80, 0x82, 0xcd, 0x6e, 0xbc,
2384 0x00, 0x00, 0x41, 0x09, 0x80, 0x00, 0x00, 0x80, 0x72, 0x80, 0xfc, 0xb6,
2385 0x00, 0x00, 0x44, 0x09, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x92,
2386 0x00, 0x00, 0x41, 0x09, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0xfc, 0xb6,
2387 0x00, 0x00, 0x44, 0x09, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x92,
2388 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0xf5, 0xbc,
2389 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x42, 0xbd, 0x97, 0x30,
2390 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x99, 0xb1, 0xf2, 0xc0, 0x7c, 0x30,
2391 0x00, 0xc0, 0x48, 0x09, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2392 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
2393 0x00, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2394 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2395 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
2396 0x00, 0x00, 0x50, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
2397 0x00, 0x00, 0x8a, 0x11, 0x04, 0x07, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2398 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa2, 0x00, 0x2d, 0x37,
2399 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x00, 0x36, 0x32,
2400 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x99, 0xe1, 0x07, 0x00, 0x00, 0x32,
2401 0x00, 0x00, 0x4d, 0x09, 0x04, 0x01, 0x00, 0x78, 0x19, 0x80, 0x97, 0xbc,
2402 0x02, 0x00, 0x59, 0x09, 0x04, 0xb9, 0x00, 0x80, 0x82, 0xcd, 0x6e, 0xbc,
2403 0x00, 0x00, 0x00, 0x48, 0xd6, 0x01, 0x00, 0x78, 0xc9, 0xcd, 0x2c, 0x32,
2404 0x00, 0x00, 0x51, 0x09, 0xb6, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2405 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x64, 0x02, 0x80, 0x97, 0xb2,
2406 0x00, 0x00, 0x53, 0x09, 0x12, 0x08, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2407 0x00, 0x00, 0x54, 0x09, 0x12, 0x18, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2408 0x00, 0x00, 0x55, 0x09, 0x12, 0x10, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2409 0x00, 0x00, 0x00, 0x00, 0xa6, 0x54, 0x01, 0xec, 0x06, 0x00, 0x2b, 0x32,
2410 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x01, 0xe8, 0x06, 0xc0, 0x2c, 0x32,
2411 0x00, 0x00, 0xa2, 0x07, 0x00, 0x0e, 0x01, 0xec, 0x06, 0x00, 0x00, 0x94,
2412 0x00, 0x20, 0x00, 0x4c, 0xd6, 0x01, 0x00, 0x78, 0xc9, 0xcd, 0x2c, 0x32,
2413 0x00, 0x00, 0x5a, 0x09, 0xb6, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2414 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x64, 0x02, 0x80, 0x97, 0xb2,
2415 0x00, 0x00, 0x5c, 0x09, 0x12, 0x08, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2416 0x00, 0x00, 0x5d, 0x09, 0x12, 0x30, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2417 0x00, 0x00, 0x5e, 0x09, 0x12, 0x38, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2418 0x00, 0x00, 0x5f, 0x09, 0x12, 0x40, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2419 0x00, 0x00, 0x60, 0x09, 0x12, 0x48, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2420 0x00, 0x00, 0x61, 0x09, 0x12, 0x10, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2421 0x00, 0x00, 0x62, 0x09, 0x12, 0x18, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2422 0x00, 0x00, 0x63, 0x09, 0x12, 0x20, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2423 0x00, 0x00, 0x64, 0x09, 0x12, 0x28, 0x00, 0x64, 0x02, 0x00, 0x6e, 0xb2,
2424 0x00, 0x00, 0x00, 0x00, 0xa6, 0x54, 0x01, 0xec, 0x06, 0x00, 0x2b, 0x32,
2425 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x01, 0xe8, 0x06, 0xc0, 0x2c, 0x32,
2426 0x03, 0x00, 0xa2, 0x07, 0x00, 0x0e, 0x01, 0xec, 0x06, 0x00, 0x36, 0x92,
2427 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x02, 0x32,
2428 0x00, 0x00, 0x6b, 0x09, 0x00, 0x00, 0x00, 0x14, 0x08, 0x80, 0x3d, 0x92,
2429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x02, 0x32,
2430 0x00, 0x00, 0x6e, 0x09, 0x04, 0x00, 0x00, 0xdc, 0x53, 0x60, 0x3d, 0xb3,
2431 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x03, 0x39,
2432 0x6a, 0x09, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
2433 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
2434 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2435 0x00, 0xc0, 0x74, 0x09, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2436 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
2437 0x14, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2438 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2439 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x07, 0x00, 0x00, 0x32,
2440 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0x32,
2441 0x00, 0x10, 0x00, 0x82, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
2442 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2443 0x00, 0x00, 0xa2, 0x07, 0xca, 0x01, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x94,
2444 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x62, 0x81, 0x2f, 0xb6,
2445 0x2c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2446 0x00, 0x00, 0x7d, 0x09, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2447 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2448 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2449 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2450 0x29, 0x00, 0xa2, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2451 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2452 0x00, 0x00, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x2c, 0x09, 0xc0, 0x85, 0xd2,
2453 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2454 0x00, 0x00, 0xa1, 0x03, 0x23, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
2455 0x3c, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2456 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2457 0x00, 0x00, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x2c, 0x09, 0xc0, 0x85, 0xd2,
2458 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0x94,
2459 0x00, 0x00, 0x8c, 0x09, 0x38, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0xb2,
2460 0x00, 0x00, 0x8c, 0x09, 0x1e, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2461 0x00, 0x00, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2462 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2463 0x00, 0x00, 0x8f, 0x09, 0x12, 0x01, 0x00, 0x60, 0x08, 0x40, 0x23, 0xb2,
2464 0x00, 0x82, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xf2,
2465 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2466 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x24, 0x08, 0x00, 0x23, 0xb2,
2467 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x20, 0x08, 0xc0, 0x23, 0xb2,
2468 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x18, 0x08, 0x80, 0x23, 0xb2,
2469 0x00, 0xc0, 0x99, 0x09, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2470 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x38, 0x02, 0x80, 0x81, 0xb2,
2471 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x82, 0xb2,
2472 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x30, 0x02, 0x40, 0x82, 0xb2,
2473 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x34, 0x02, 0x00, 0x86, 0xb2,
2474 0x20, 0x80, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xf2,
2475 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2476 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
2477 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x80, 0x32,
2478 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
2479 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x86, 0x32,
2480 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
2481 0x00, 0x00, 0x01, 0x0e, 0x00, 0x30, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0xfa,
2482 0x00, 0x00, 0xa2, 0x09, 0x38, 0x01, 0x00, 0x2c, 0xf8, 0x01, 0x0b, 0xb4,
2483 0x00, 0x00, 0xa2, 0x09, 0x02, 0x0d, 0x02, 0x80, 0xa2, 0x5b, 0x80, 0xbc,
2484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xc8, 0xc1, 0x82, 0x34,
2485 0x00, 0x00, 0x8a, 0x11, 0x9f, 0xa8, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0xbc,
2486 0x00, 0x00, 0x3b, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2487 0x00, 0x00, 0xa7, 0x09, 0x27, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0xb2,
2488 0x00, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x2c, 0xe8, 0xc0, 0x82, 0x34,
2489 0x00, 0x00, 0x00, 0x00, 0xd5, 0x40, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x32,
2490 0x08, 0x00, 0xb0, 0x10, 0x00, 0x18, 0x01, 0xe8, 0x76, 0x20, 0x81, 0xf9,
2491 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2492 0x00, 0x00, 0xab, 0x09, 0x23, 0x19, 0x00, 0x00, 0x07, 0x80, 0x81, 0xb2,
2493 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2494 0x00, 0x00, 0xad, 0x09, 0x1d, 0x21, 0x00, 0x00, 0x07, 0x00, 0x82, 0xb2,
2495 0x00, 0x00, 0xb0, 0x09, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2496 0x00, 0x00, 0xb0, 0x09, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2497 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2498 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2499 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2500 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2501 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x62, 0x80, 0x2d, 0xbc,
2502 0x10, 0x00, 0xb6, 0x09, 0x2c, 0x30, 0x00, 0x00, 0x17, 0xe0, 0x2c, 0xb9,
2503 0x00, 0x00, 0xb8, 0x09, 0x8e, 0x39, 0x00, 0x00, 0x07, 0xc0, 0x82, 0xb2,
2504 0x00, 0x00, 0xb8, 0x09, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x87, 0x92,
2505 0x00, 0x00, 0xb8, 0x09, 0x8e, 0x39, 0x00, 0x00, 0xb7, 0xc1, 0x82, 0xb4,
2506 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x87, 0x32,
2507 0x00, 0x00, 0xba, 0x09, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2508 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2509 0x00, 0x00, 0xc0, 0x09, 0x04, 0x01, 0x00, 0x80, 0x12, 0x80, 0x2d, 0xbc,
2510 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
2511 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
2512 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2513 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2514 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2515 0x00, 0x00, 0xb8, 0x09, 0x9f, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2516 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2517 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x34,
2518 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
2519 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
2520 0x00, 0x00, 0xc8, 0x09, 0x1e, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2521 0x00, 0x00, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2522 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2523 0x00, 0x00, 0x8a, 0x11, 0x9f, 0xa8, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0xbc,
2524 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x00, 0xf2,
2525 0x00, 0x00, 0x3b, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2526 0x00, 0x00, 0xa4, 0x07, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x81, 0xbc,
2527 0x00, 0x00, 0xce, 0x09, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2528 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2529 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2530 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2531 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2532 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
2533 0x00, 0x00, 0xa4, 0x07, 0x12, 0x01, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
2534 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2535 0x00, 0x00, 0xa2, 0x07, 0x80, 0x00, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2536 0x00, 0x00, 0x8a, 0x11, 0x1c, 0x40, 0x02, 0x80, 0x06, 0xc0, 0x85, 0xb2,
2537 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0x94,
2538 0x00, 0x00, 0xa2, 0x07, 0x80, 0x00, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2539 0x00, 0x00, 0x2c, 0x10, 0xd6, 0x01, 0x00, 0x2c, 0x09, 0xc0, 0x85, 0xd2,
2540 0x00, 0x00, 0xa1, 0x03, 0xd2, 0x01, 0x00, 0x94, 0x1e, 0x40, 0xe9, 0x9a,
2541 0x00, 0x00, 0x8a, 0x11, 0x04, 0x20, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2542 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xf2, 0x81, 0x2f, 0xb6,
2543 0x00, 0x00, 0xee, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2544 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x80, 0xbc,
2545 0x00, 0x00, 0x8a, 0x11, 0x04, 0x51, 0x01, 0x80, 0x02, 0x80, 0x6e, 0xbc,
2546 0x00, 0x00, 0x8a, 0x11, 0x04, 0x21, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
2547 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x06, 0x40, 0x81, 0x32,
2548 0x00, 0x00, 0xe4, 0x09, 0x1f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2549 0x00, 0x00, 0xe1, 0x09, 0x9e, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0xb2,
2550 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2551 0x00, 0x00, 0xa4, 0x07, 0x2a, 0x31, 0x01, 0xe0, 0x06, 0x00, 0x00, 0xb2,
2552 0x18, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0x39,
2553 0xa4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x32,
2554 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2555 0x0c, 0x00, 0xeb, 0x09, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00, 0x36, 0x92,
2556 0x00, 0x00, 0xeb, 0x09, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00, 0x00, 0x92,
2557 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00, 0x36, 0x32,
2558 0x00, 0x00, 0x8a, 0x11, 0x04, 0x20, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
2559 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xf2, 0x81, 0x2f, 0xb6,
2560 0x00, 0x00, 0xee, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2561 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x30, 0x00, 0x28, 0x08, 0x00, 0x6e, 0xb2,
2562 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
2563 0x00, 0x00, 0x25, 0x0a, 0x38, 0x00, 0x00, 0xa4, 0x08, 0x80, 0x82, 0xb2,
2564 0x00, 0x00, 0x25, 0x0a, 0x04, 0x28, 0x01, 0x04, 0x08, 0x00, 0x6e, 0xb2,
2565 0x00, 0x00, 0x8a, 0x11, 0x08, 0x50, 0x01, 0x04, 0xa8, 0x5b, 0x80, 0xbc,
2566 0x00, 0x00, 0x8a, 0x11, 0x08, 0x20, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0xbc,
2567 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
2568 0x00, 0x00, 0x0a, 0x0a, 0x08, 0x01, 0x00, 0x28, 0x18, 0xa0, 0x82, 0xbc,
2569 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xe0, 0xa6, 0x20, 0x00, 0x3c,
2570 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2571 0x00, 0xc0, 0xfb, 0x09, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2572 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
2573 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2574 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2575 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x34,
2576 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x09, 0x00, 0x6e, 0x32,
2577 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
2578 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x80, 0x97, 0x32,
2579 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x97, 0x32,
2580 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0x32,
2581 0x00, 0x20, 0x00, 0x80, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
2582 0x00, 0x00, 0x00, 0x00, 0xca, 0x3d, 0x00, 0x0c, 0x07, 0x80, 0x83, 0x32,
2583 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x40, 0x00, 0x32,
2584 0x00, 0x00, 0x08, 0x0a, 0x04, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2585 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3a,
2586 0x00, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
2587 0x00, 0x00, 0x66, 0x0a, 0x12, 0x01, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2588 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2589 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x6c, 0x18, 0x20, 0x6e, 0x3a,
2590 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
2591 0x00, 0x00, 0x0f, 0x0a, 0x00, 0x38, 0x01, 0xe0, 0x06, 0x40, 0x80, 0x92,
2592 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x6c, 0x18, 0x20, 0x6e, 0x3a,
2593 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
2594 0x00, 0x00, 0x11, 0x0a, 0x9f, 0x01, 0x00, 0x04, 0x68, 0x60, 0x80, 0xbc,
2595 0x00, 0x00, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x18, 0x18, 0x20, 0x00, 0x9c,
2596 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2597 0x00, 0x00, 0x14, 0x0a, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2598 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2599 0x00, 0x00, 0x00, 0x00, 0xca, 0x70, 0x00, 0x18, 0x08, 0x00, 0x6e, 0x32,
2600 0x00, 0x00, 0x0d, 0x0a, 0x02, 0x01, 0x00, 0x80, 0x62, 0x60, 0x80, 0xbc,
2601 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2602 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0x35,
2603 0x00, 0xa0, 0x0d, 0x0a, 0x12, 0x01, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
2604 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2605 0x00, 0x00, 0x1f, 0x0a, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2606 0x00, 0x00, 0x1f, 0x0a, 0x04, 0x00, 0x00, 0x80, 0xa2, 0xa0, 0x81, 0xbc,
2607 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2608 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0x35,
2609 0x00, 0xa0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
2610 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
2611 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x06, 0x40, 0x81, 0x32,
2612 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x06, 0x80, 0x82, 0x32,
2613 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x06, 0x80, 0x81, 0x32,
2614 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0xe0, 0x06, 0xc0, 0x86, 0xb2,
2615 0x00, 0x00, 0x27, 0x0a, 0x00, 0x18, 0x00, 0xe0, 0x06, 0xc0, 0x84, 0x92,
2616 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xb2,
2617 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
2618 0x00, 0x00, 0xa3, 0x0e, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xf2,
2619 0x00, 0x00, 0x2a, 0x0a, 0x00, 0x50, 0x01, 0x3c, 0xa8, 0x5b, 0x80, 0x9c,
2620 0x00, 0x00, 0xa4, 0x07, 0x00, 0x30, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x92,
2621 0x00, 0x00, 0x2f, 0x0a, 0x3e, 0x51, 0x01, 0x00, 0xa8, 0x1b, 0x80, 0xba,
2622 0x00, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0xf8, 0xf2, 0x81, 0x2f, 0x34,
2623 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xec, 0x06, 0xc0, 0xee, 0x32,
2624 0x00, 0x00, 0x2f, 0x0a, 0x80, 0x01, 0x00, 0x80, 0x32, 0x80, 0x87, 0xb6,
2625 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x80, 0x2f, 0x34,
2626 0x00, 0x00, 0x4c, 0x0f, 0x60, 0x30, 0x01, 0xe0, 0x06, 0x00, 0x00, 0xf2,
2627 0x00, 0x00, 0x7b, 0x0a, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
2628 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
2629 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x08, 0x00, 0x00, 0x32,
2630 0x00, 0x00, 0x3a, 0x0a, 0x04, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2631 0x00, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3a,
2632 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
2633 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0xa4, 0xa8, 0x60, 0x8a, 0x3c,
2634 0x00, 0x00, 0x8a, 0x11, 0x0f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2635 0x00, 0xc0, 0x3e, 0x0a, 0x12, 0x01, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
2636 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2637 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x32,
2638 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0xa4, 0xa8, 0x60, 0x8a, 0x3c,
2639 0x00, 0x00, 0x8a, 0x11, 0x0f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2640 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
2641 0x00, 0x00, 0x00, 0x00, 0xde, 0xa8, 0x01, 0x20, 0x99, 0x22, 0x6e, 0x3a,
2642 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x02, 0x80, 0x82, 0x1b, 0x92, 0xbc,
2643 0x00, 0x00, 0x42, 0x0a, 0x2f, 0x20, 0x01, 0xe0, 0x96, 0x22, 0x6e, 0xbc,
2644 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2645 0x00, 0x00, 0x4a, 0x0a, 0x1f, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x00, 0xb2,
2646 0x00, 0x00, 0x45, 0x0a, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x83, 0xbc,
2647 0x00, 0x00, 0x4a, 0x0a, 0x00, 0x50, 0x01, 0xe8, 0xf6, 0x60, 0x80, 0x9c,
2648 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x78, 0x39, 0x9a, 0xfe, 0x38,
2649 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2650 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2651 0x08, 0x00, 0x73, 0x11, 0x00, 0x40, 0x02, 0x14, 0x39, 0x9a, 0xfe, 0xd8,
2652 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x68, 0x12, 0x9a, 0xfe, 0x38,
2653 0x00, 0x00, 0x4f, 0x0a, 0x2a, 0xa9, 0x01, 0xe0, 0x06, 0x00, 0x92, 0xb2,
2654 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2655 0x1d, 0x00, 0x4f, 0x0a, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2656 0x00, 0x00, 0x4b, 0x0a, 0x04, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2657 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2658 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2659 0x00, 0x00, 0x52, 0x0a, 0x80, 0x01, 0x00, 0x80, 0x32, 0x80, 0x2f, 0xb6,
2660 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2662 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x32,
2663 0x00, 0xc0, 0x61, 0x0a, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2664 0x18, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x82, 0xb6,
2665 0x00, 0x00, 0x58, 0x0a, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x81, 0xbc,
2666 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2667 0x18, 0x00, 0x5a, 0x0a, 0x2e, 0x49, 0x01, 0xe0, 0xe6, 0xa0, 0x82, 0xb9,
2668 0x00, 0x00, 0x5b, 0x0a, 0x00, 0x5e, 0x01, 0xec, 0x76, 0x00, 0x00, 0x94,
2669 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
2670 0x20, 0x80, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xf2,
2671 0x1b, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2672 0x0c, 0x00, 0xa1, 0x03, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x85, 0xbc,
2673 0x00, 0x00, 0x8a, 0x11, 0x04, 0x30, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
2674 0x00, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2675 0x00, 0x00, 0x9e, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x80, 0x85, 0x92,
2676 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2f, 0xb6,
2677 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
2678 0x00, 0x00, 0xcb, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
2679 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3a,
2681 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2682 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2683 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2684 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
2685 0x00, 0x00, 0x67, 0x0a, 0x0b, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2686 0x00, 0x00, 0x6e, 0x0a, 0x3d, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x85, 0xb2,
2687 0x00, 0x00, 0x6e, 0x0a, 0x34, 0x00, 0x00, 0xf8, 0xd2, 0x81, 0x2f, 0xb5,
2688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x80, 0x2f, 0x34,
2689 0x00, 0x00, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2690 0x00, 0x00, 0x72, 0x0a, 0x80, 0x01, 0x00, 0x80, 0x92, 0x80, 0x2f, 0xb6,
2691 0x2a, 0x00, 0x78, 0x0a, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2692 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2693 0x00, 0x00, 0x75, 0x0a, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2694 0x00, 0x00, 0x78, 0x0a, 0x80, 0x01, 0x00, 0x80, 0x62, 0x81, 0x2f, 0xb6,
2695 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2696 0x00, 0x00, 0x78, 0x0a, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2697 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2698 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2699 0x00, 0x00, 0xa2, 0x07, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x85, 0xbc,
2700 0x00, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2701 0x00, 0x00, 0x9e, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x80, 0x85, 0x92,
2702 0x00, 0x00, 0xa4, 0x07, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2703 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2704 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
2705 0x00, 0x00, 0x80, 0x0a, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
2706 0x00, 0x00, 0x8a, 0x11, 0x04, 0x31, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
2707 0x00, 0x00, 0x8a, 0x11, 0x04, 0x31, 0x00, 0x80, 0x82, 0x9b, 0x82, 0xbc,
2708 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x12, 0xa0, 0x82, 0xbc,
2709 0x00, 0x00, 0x00, 0x00, 0xce, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2710 0x00, 0xc0, 0x86, 0x0a, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2711 0x20, 0x80, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xf2,
2712 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2713 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2714 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2715 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x82, 0xbc,
2716 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2717 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
2718 0x00, 0x00, 0x8f, 0x0a, 0x3f, 0x00, 0x00, 0x3c, 0x08, 0x40, 0x80, 0xb2,
2719 0x00, 0x00, 0x8f, 0x0a, 0x80, 0x01, 0x00, 0x80, 0xe2, 0x81, 0x2f, 0xb6,
2720 0x00, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0xf8, 0xf2, 0x81, 0x2f, 0x34,
2721 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xec, 0x06, 0xc0, 0xee, 0x32,
2722 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x3e,
2723 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
2724 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0x32,
2725 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
2726 0x00, 0x00, 0xda, 0x0a, 0x04, 0x00, 0x00, 0x28, 0xd8, 0xa0, 0x82, 0xbc,
2727 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2728 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0x3c,
2729 0x00, 0x00, 0xb0, 0x0a, 0x04, 0x00, 0x00, 0x3c, 0xd8, 0xe0, 0x83, 0xbc,
2730 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x81, 0xbc,
2731 0x00, 0x00, 0x9b, 0x0a, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
2732 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0x02, 0xc0, 0x38, 0xb2,
2733 0x00, 0x00, 0xae, 0x0a, 0x51, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
2734 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
2735 0x00, 0x00, 0xa7, 0x0a, 0x28, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xb2,
2736 0x00, 0x00, 0xa5, 0x0a, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2737 0x00, 0x00, 0xa1, 0x0a, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
2738 0x00, 0x00, 0xa5, 0x0a, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
2739 0x00, 0x00, 0xa5, 0x0a, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2740 0x00, 0x00, 0xa3, 0x0a, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2741 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
2742 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
2743 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2744 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x16, 0x20, 0x6e, 0x3c,
2745 0x00, 0x00, 0x3c, 0x0e, 0xda, 0x5b, 0x01, 0xec, 0x06, 0x40, 0xed, 0xf2,
2746 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2747 0x00, 0x00, 0xac, 0x0a, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
2748 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2749 0x00, 0x00, 0xa7, 0x0a, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
2750 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2751 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
2752 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
2753 0x00, 0x00, 0xaf, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x20, 0x80, 0xfa,
2754 0x00, 0x00, 0x90, 0x0a, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x9e,
2755 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
2756 0x00, 0x00, 0xbc, 0x0a, 0x28, 0x00, 0x00, 0x80, 0x08, 0x40, 0x00, 0xb2,
2757 0x00, 0x00, 0xba, 0x0a, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2758 0x00, 0x00, 0xb6, 0x0a, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
2759 0x00, 0x00, 0xba, 0x0a, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
2760 0x00, 0x00, 0xba, 0x0a, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2761 0x00, 0x00, 0xb8, 0x0a, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2762 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
2763 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
2764 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2765 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x16, 0x20, 0x6e, 0x3c,
2766 0x00, 0x00, 0x3c, 0x0e, 0xda, 0x5b, 0x01, 0xec, 0x06, 0x40, 0xed, 0xf2,
2767 0x00, 0x00, 0xe0, 0x0a, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
2768 0x00, 0x00, 0xc0, 0x0a, 0x04, 0x21, 0x00, 0xe0, 0x06, 0x80, 0x81, 0xb2,
2769 0x00, 0x00, 0xaf, 0x0e, 0x00, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0xf2,
2770 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x06, 0x80, 0x81, 0x32,
2771 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x06, 0x40, 0x81, 0x32,
2772 0x00, 0x00, 0xc6, 0x0a, 0x2a, 0x11, 0x00, 0xe0, 0xd6, 0xe0, 0x86, 0xba,
2773 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2774 0x1d, 0x00, 0xc6, 0x0a, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2775 0x00, 0x00, 0xc2, 0x0a, 0x9f, 0x01, 0x00, 0x80, 0x18, 0x00, 0x88, 0xbc,
2776 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2777 0x00, 0x00, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2778 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2779 0x08, 0x00, 0xca, 0x0a, 0x23, 0x19, 0x01, 0xe8, 0x76, 0x20, 0x81, 0xb9,
2780 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2781 0x00, 0x00, 0xce, 0x0a, 0x1d, 0x18, 0x00, 0xe0, 0x06, 0xc0, 0x84, 0xb2,
2782 0x00, 0x00, 0xce, 0x0a, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2783 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2784 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2785 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2786 0x00, 0x00, 0xd3, 0x0a, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0x88, 0xbc,
2787 0x00, 0x00, 0xd2, 0x0a, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2788 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2789 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2790 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x80, 0xbc,
2791 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2792 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2793 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2794 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
2795 0x00, 0x00, 0xa4, 0x03, 0x12, 0x01, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
2796 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2797 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x78, 0x19, 0x20, 0x6e, 0x3c,
2798 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xe2, 0xa5, 0x82, 0xbc,
2799 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2800 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x88, 0xbc,
2801 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x80, 0xbc,
2802 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
2803 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
2804 0x00, 0x00, 0xe4, 0x0a, 0x04, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2805 0x00, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
2806 0x00, 0x00, 0xe5, 0x0a, 0xc9, 0x01, 0x00, 0x14, 0x08, 0x00, 0x00, 0x92,
2807 0x00, 0x00, 0x00, 0x00, 0x45, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x32,
2808 0x00, 0x00, 0xef, 0x0a, 0x28, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xb4,
2809 0x00, 0x00, 0xee, 0x0a, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2810 0x00, 0x00, 0xea, 0x0a, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
2811 0x00, 0x00, 0xee, 0x0a, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
2812 0x00, 0x00, 0xee, 0x0a, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2813 0x00, 0x00, 0xec, 0x0a, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2814 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
2815 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
2816 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2817 0x00, 0x00, 0x3c, 0x0e, 0xda, 0x5b, 0x01, 0xec, 0x06, 0x40, 0xed, 0xf2,
2818 0x00, 0x20, 0x00, 0x80, 0xdf, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
2819 0x00, 0x00, 0xf3, 0x0a, 0x3d, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0xb2,
2820 0x00, 0x00, 0xf3, 0x0a, 0x34, 0x00, 0x00, 0xf8, 0xd2, 0x81, 0x2f, 0xb5,
2821 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x80, 0x2f, 0x34,
2822 0x00, 0x00, 0xcb, 0x10, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x81, 0x2f, 0xf5,
2823 0x08, 0x00, 0xb0, 0x10, 0x00, 0x18, 0x01, 0xe8, 0x76, 0x20, 0x81, 0xf9,
2824 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2825 0x00, 0x00, 0xf8, 0x0a, 0x80, 0x01, 0x00, 0x80, 0x32, 0x80, 0x2f, 0xb6,
2826 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2827 0x00, 0x00, 0xfd, 0x0a, 0x29, 0x08, 0x01, 0xe4, 0x06, 0xc0, 0x2d, 0xb2,
2828 0x00, 0x00, 0x02, 0x0b, 0x1d, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2829 0x00, 0x00, 0x02, 0x0b, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2830 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2831 0x00, 0x00, 0x02, 0x0b, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x94,
2832 0x00, 0x00, 0xff, 0x0a, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2833 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2834 0x1d, 0x00, 0x01, 0x0b, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
2835 0x00, 0x00, 0xfe, 0x0a, 0x00, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0x9c,
2836 0x2a, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2837 0x00, 0x00, 0xc7, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2838 0x00, 0x00, 0x05, 0x0b, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x81, 0xbc,
2839 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2840 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2841 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2842 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2843 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2844 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
2845 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
2846 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
2847 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2848 0x00, 0x00, 0x8a, 0x11, 0x04, 0x31, 0x00, 0x80, 0x82, 0x9b, 0x82, 0xbc,
2849 0x00, 0x00, 0x8a, 0x11, 0x02, 0x00, 0x00, 0x80, 0x12, 0xa0, 0x82, 0xbc,
2850 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
2851 0x10, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0xa9, 0x60, 0x80, 0xd9,
2852 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2853 0x00, 0xc0, 0x15, 0x0b, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2854 0x20, 0x80, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xf2,
2855 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2856 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x8d, 0x2f, 0x31,
2857 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x81, 0x32,
2858 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
2859 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0x32,
2860 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
2861 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
2862 0x00, 0x00, 0x20, 0x0b, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
2863 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x60, 0x80, 0x3c,
2864 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x40, 0x80, 0x32,
2865 0x00, 0x00, 0x3b, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x08, 0x80, 0x82, 0xf2,
2866 0x00, 0x00, 0x21, 0x0b, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
2867 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2868 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x20, 0x80, 0x3a,
2869 0x00, 0x00, 0x26, 0x0b, 0x04, 0x00, 0x00, 0x28, 0x68, 0xa0, 0x82, 0xbc,
2870 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
2871 0x00, 0x00, 0xaf, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2872 0x00, 0x00, 0x17, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x81, 0x92,
2873 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
2874 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2875 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
2876 0x00, 0x00, 0xc7, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
2877 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2878 0x00, 0x00, 0x2e, 0x0b, 0x3d, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x85, 0xb2,
2879 0x00, 0x00, 0x2e, 0x0b, 0x34, 0x00, 0x00, 0xf8, 0xd2, 0x81, 0x2f, 0xb5,
2880 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x80, 0x2f, 0x34,
2881 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x04, 0x08, 0x80, 0x86, 0xb2,
2882 0x00, 0x00, 0x3c, 0x0b, 0x04, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
2883 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x28, 0x09, 0x80, 0x80, 0xb2,
2884 0x00, 0x00, 0xef, 0x0f, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xd2,
2885 0x00, 0x00, 0x34, 0x0b, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xbc,
2886 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2887 0x00, 0x00, 0x3a, 0x10, 0x00, 0x00, 0x00, 0x78, 0x38, 0x80, 0x87, 0xf5,
2888 0x00, 0x00, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0xf2,
2889 0x00, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2890 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2891 0x00, 0x00, 0xa5, 0x02, 0x23, 0x01, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0xb4,
2892 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x32, 0x80, 0x2f, 0x35,
2893 0x3c, 0x00, 0xa5, 0x02, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2894 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2895 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2896 0x00, 0x00, 0x3f, 0x0b, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
2897 0x00, 0x00, 0x8a, 0x11, 0x04, 0x31, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
2898 0x00, 0x00, 0x41, 0x0b, 0x12, 0x01, 0x00, 0x60, 0x08, 0x40, 0x23, 0xb2,
2899 0x00, 0x82, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x08, 0xa8, 0x8d, 0x80, 0x92,
2900 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x24, 0x08, 0x00, 0x23, 0xb2,
2901 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x20, 0x08, 0xc0, 0x23, 0xb2,
2902 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x18, 0x08, 0x80, 0x23, 0xb2,
2903 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
2904 0x00, 0xc0, 0x5c, 0x0b, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2905 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa8, 0x8d, 0x80, 0x32,
2906 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x38, 0x02, 0x80, 0x81, 0xb2,
2907 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x82, 0xb2,
2908 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x30, 0x02, 0x40, 0x82, 0xb2,
2909 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x34, 0x02, 0x00, 0x86, 0xb2,
2910 0x00, 0x00, 0x53, 0x0b, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2911 0x00, 0x00, 0x4f, 0x0b, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
2912 0x00, 0x00, 0x53, 0x0b, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
2913 0x00, 0x00, 0x53, 0x0b, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2914 0x00, 0x00, 0x51, 0x0b, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2915 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
2916 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
2917 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2918 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
2919 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x80, 0xd2,
2920 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
2921 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
2922 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2923 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2924 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2925 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0xc0, 0xf5, 0x3a,
2926 0x00, 0x00, 0xa4, 0x07, 0x00, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x92,
2927 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
2928 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x80, 0x32,
2929 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
2930 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
2931 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x86, 0x32,
2932 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
2933 0x00, 0x00, 0x39, 0x10, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0xf2,
2934 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x81, 0x32,
2935 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0xe0, 0x2c, 0x39,
2936 0x00, 0x10, 0x00, 0x80, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
2937 0x00, 0x00, 0xb0, 0x10, 0x00, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0xf2,
2938 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
2939 0x00, 0x00, 0x6a, 0x0b, 0x80, 0x01, 0x00, 0x80, 0x32, 0x80, 0x2f, 0xb6,
2940 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2941 0x00, 0x00, 0xc3, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2942 0x00, 0x00, 0x6e, 0x0b, 0x1d, 0x21, 0x00, 0x00, 0x07, 0x00, 0x82, 0xb2,
2943 0x00, 0x00, 0x71, 0x0b, 0x80, 0x01, 0x00, 0x80, 0x62, 0x81, 0x2f, 0xb6,
2944 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2945 0x00, 0x00, 0x71, 0x0b, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2946 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2947 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2948 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2949 0x00, 0x00, 0x74, 0x0b, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
2950 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
2951 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2952 0x00, 0x00, 0xa4, 0x03, 0xca, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
2953 0x00, 0x00, 0x7e, 0x0b, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
2954 0x00, 0x00, 0x7a, 0x0b, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
2955 0x00, 0x00, 0x7e, 0x0b, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
2956 0x00, 0x00, 0x7e, 0x0b, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
2957 0x00, 0x00, 0x7c, 0x0b, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2958 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
2959 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
2960 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2961 0x00, 0x00, 0x80, 0x0b, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x86, 0xbc,
2962 0x00, 0x00, 0x0a, 0x11, 0x00, 0x90, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xf2,
2963 0x00, 0x00, 0x3f, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
2964 0x00, 0x00, 0x87, 0x0b, 0x33, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0xb2,
2965 0x00, 0x00, 0x87, 0x0b, 0x80, 0x01, 0x00, 0x80, 0xb2, 0x01, 0x72, 0xb6,
2966 0x00, 0x00, 0x87, 0x0b, 0x9f, 0xf0, 0x01, 0x80, 0x82, 0xdb, 0x87, 0xbc,
2967 0x00, 0x00, 0x87, 0x0b, 0x9f, 0xf8, 0x01, 0x80, 0x22, 0x21, 0x6e, 0xbc,
2968 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x01, 0xe0, 0x06, 0x00, 0xee, 0x32,
2969 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x06, 0xc0, 0x87, 0x32,
2970 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x39,
2971 0x00, 0x00, 0x8d, 0x0b, 0x80, 0x01, 0x00, 0x80, 0xd2, 0x80, 0x2f, 0xb6,
2972 0x00, 0x00, 0x8d, 0x0b, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
2973 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0xf8, 0x72, 0x81, 0x2f, 0x34,
2974 0x3b, 0x00, 0x8d, 0x0b, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2975 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
2976 0x00, 0x00, 0x9d, 0x0b, 0x27, 0x09, 0x01, 0xe4, 0x06, 0xc0, 0x2d, 0xb2,
2977 0x00, 0xc0, 0x95, 0x0b, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
2978 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2979 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2980 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
2981 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
2982 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
2983 0x20, 0x80, 0xa4, 0x07, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x92,
2984 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
2985 0x00, 0x00, 0xe2, 0x10, 0x00, 0x98, 0x01, 0x14, 0x09, 0x00, 0x6e, 0xd2,
2986 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xe0, 0x06, 0x40, 0x88, 0x32,
2987 0x00, 0x00, 0x00, 0x00, 0xd5, 0x08, 0x00, 0x00, 0x07, 0x40, 0x88, 0x32,
2988 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0x32,
2989 0x00, 0x40, 0x00, 0x80, 0xca, 0x39, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
2990 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
2991 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x34,
2992 0x00, 0x00, 0xa1, 0x0b, 0x1d, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
2993 0x00, 0x00, 0xa1, 0x0b, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
2994 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
2995 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
2996 0x00, 0x00, 0xc7, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
2997 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
2998 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
2999 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3000 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
3001 0x00, 0x00, 0xa4, 0x03, 0x12, 0x01, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
3002 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3003 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3004 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3005 0x00, 0xc0, 0xae, 0x0b, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3006 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3007 0x00, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
3008 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3009 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3010 0x00, 0x00, 0xee, 0x10, 0x00, 0x20, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xf2,
3011 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x30, 0x00, 0x28, 0x08, 0x00, 0x6e, 0xb2,
3012 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x08, 0x80, 0x82, 0x32,
3013 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xb2,
3014 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x18, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0xf2,
3015 0x00, 0x00, 0xb6, 0x0b, 0x00, 0x50, 0x01, 0x3c, 0xa8, 0x5b, 0x80, 0x9c,
3016 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3017 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0xa8, 0x1b, 0x80, 0x3a,
3018 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x32,
3019 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3020 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x3e,
3021 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
3022 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0x32,
3023 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
3024 0x00, 0x00, 0xee, 0x0b, 0x04, 0x00, 0x00, 0x28, 0xd8, 0xa0, 0x82, 0xbc,
3025 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3026 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0x3c,
3027 0x00, 0x00, 0xd4, 0x0b, 0x04, 0x00, 0x00, 0x3c, 0xd8, 0xe0, 0x83, 0xbc,
3028 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x81, 0xbc,
3029 0x00, 0x00, 0xc5, 0x0b, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
3030 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0x02, 0xc0, 0x38, 0xb2,
3031 0x00, 0x00, 0xcd, 0x0b, 0x51, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
3032 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3033 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3034 0x00, 0x00, 0xcb, 0x0b, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
3035 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3036 0x00, 0x00, 0xc6, 0x0b, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
3037 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
3038 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
3039 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3040 0x00, 0x00, 0xd2, 0x0b, 0x2a, 0x01, 0x00, 0x00, 0xd8, 0x20, 0x80, 0xba,
3041 0x00, 0x00, 0xd1, 0x0b, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3042 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3043 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
3044 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3045 0x00, 0x00, 0xb7, 0x0e, 0x00, 0x60, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xf2,
3046 0x00, 0x00, 0xba, 0x0b, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x9e,
3047 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3048 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3049 0x1d, 0x00, 0xdb, 0x0b, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3050 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3051 0x00, 0x00, 0xd5, 0x0b, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
3052 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3053 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3054 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x78, 0x39, 0x9a, 0xfe, 0x38,
3055 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3056 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3057 0x08, 0x00, 0x73, 0x11, 0x00, 0x40, 0x02, 0x14, 0x39, 0x9a, 0xfe, 0xd8,
3058 0x08, 0x00, 0x8a, 0x11, 0x12, 0x40, 0x02, 0x68, 0x12, 0x9a, 0xfe, 0xb8,
3059 0x00, 0x00, 0x8a, 0x11, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3060 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
3061 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0xba,
3062 0x00, 0x00, 0xa3, 0x0e, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xf2,
3063 0x00, 0x00, 0xe6, 0x0b, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x40, 0x80, 0x92,
3064 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3065 0x00, 0x00, 0xb9, 0x0b, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x81, 0xbc,
3066 0x00, 0x00, 0xec, 0x0b, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3067 0x00, 0x00, 0xeb, 0x0b, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3068 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3069 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
3070 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3071 0x00, 0x00, 0xb7, 0x0e, 0x00, 0x60, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xf2,
3072 0x00, 0x00, 0xba, 0x0b, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x9e,
3073 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3074 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
3075 0x00, 0x00, 0x00, 0x00, 0x45, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x32,
3076 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3077 0x00, 0x00, 0xf6, 0x0b, 0x04, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
3078 0x00, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3a,
3079 0x00, 0xc0, 0xf7, 0x0b, 0x12, 0x01, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
3080 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3081 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
3082 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x20, 0x99, 0x22, 0x6e, 0x3a,
3083 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x02, 0x80, 0x82, 0x1b, 0x92, 0xbc,
3084 0x00, 0x00, 0xfb, 0x0b, 0x2f, 0x20, 0x01, 0xe0, 0x96, 0x22, 0x6e, 0xbc,
3085 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3086 0x00, 0x00, 0xff, 0x0b, 0x04, 0x00, 0x00, 0x3c, 0xd8, 0xe0, 0x83, 0xbc,
3087 0x00, 0x00, 0xfe, 0x0b, 0x9f, 0x31, 0x01, 0xe0, 0x96, 0x22, 0x6e, 0xbc,
3088 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
3089 0x00, 0x00, 0x07, 0x0c, 0x00, 0x50, 0x01, 0xe8, 0xf6, 0x60, 0x80, 0x9c,
3090 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x78, 0x39, 0x9a, 0xfe, 0x38,
3091 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3092 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3093 0x08, 0x00, 0x73, 0x11, 0x00, 0x40, 0x02, 0x14, 0x39, 0x9a, 0xfe, 0xd8,
3094 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x68, 0x12, 0x9a, 0xfe, 0x38,
3095 0x00, 0x00, 0x06, 0x0c, 0x9f, 0x31, 0x01, 0xe0, 0x96, 0x22, 0x6e, 0xbc,
3096 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
3097 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
3098 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0xe0, 0x06, 0x00, 0x92, 0x32,
3099 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3100 0x1d, 0x00, 0x0c, 0x0c, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3101 0x00, 0x00, 0x08, 0x0c, 0x04, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
3102 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3103 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2f, 0xb6,
3104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3105 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
3106 0x00, 0x00, 0xcb, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
3107 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
3108 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
3109 0x00, 0x00, 0x14, 0x0c, 0x23, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0xba,
3110 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3111 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3112 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3113 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3114 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
3115 0x00, 0x00, 0x15, 0x0c, 0x0b, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3116 0x00, 0x00, 0x1c, 0x0c, 0x3d, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x85, 0xb2,
3117 0x00, 0x00, 0x1c, 0x0c, 0x34, 0x00, 0x00, 0xf8, 0xd2, 0x81, 0x2f, 0xb5,
3118 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x80, 0x2f, 0x34,
3119 0x00, 0x00, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3120 0x00, 0x00, 0x20, 0x0c, 0x29, 0x31, 0x01, 0x0c, 0x09, 0x00, 0x6e, 0xb2,
3121 0x2a, 0x00, 0xa2, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3122 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3123 0x00, 0x00, 0x27, 0x0e, 0x00, 0x0c, 0x02, 0x00, 0x09, 0x80, 0x6e, 0xf2,
3124 0x00, 0x00, 0x24, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3125 0x00, 0x00, 0xa2, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x02, 0xe4, 0x2e, 0xb2,
3126 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3127 0x00, 0x00, 0x27, 0x0c, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3128 0x00, 0x00, 0xa2, 0x07, 0x80, 0x01, 0x00, 0x80, 0x62, 0x81, 0x2f, 0xb6,
3129 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3130 0x00, 0x00, 0xa2, 0x07, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
3131 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3132 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x94,
3133 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3134 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x18, 0x09, 0x40, 0x81, 0xb2,
3135 0x00, 0x00, 0x4f, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3136 0x00, 0x00, 0x2f, 0x0e, 0x00, 0xa8, 0x01, 0x20, 0x09, 0x00, 0x6e, 0xf2,
3137 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x0c, 0x09, 0x00, 0x6e, 0x32,
3138 0x00, 0x00, 0x27, 0x0e, 0x00, 0x0c, 0x02, 0x00, 0x09, 0x80, 0x6e, 0xf2,
3139 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3140 0x00, 0x00, 0xb0, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3141 0x00, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3142 0x00, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x90, 0x92,
3143 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3144 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3145 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x78, 0x0b, 0x16, 0x38,
3146 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x78, 0x0b, 0x16, 0x38,
3147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xa8, 0x00, 0x2d, 0x37,
3148 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x88, 0x0d, 0x8b, 0x3a,
3149 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xb4, 0x08, 0x80, 0x6e, 0x32,
3150 0x00, 0x00, 0x45, 0x0c, 0x04, 0x31, 0x01, 0x90, 0x08, 0x00, 0x6e, 0xb2,
3151 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x82, 0x8d, 0x8a, 0x37,
3152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xc2, 0xa2, 0x2c, 0x3a,
3153 0x18, 0x00, 0x43, 0x0c, 0x86, 0x41, 0x02, 0x78, 0x88, 0x0d, 0x78, 0xb6,
3154 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0xa2, 0xe2, 0x8a, 0xbc,
3155 0x00, 0x00, 0x8a, 0x11, 0x04, 0x41, 0x02, 0x80, 0xb2, 0x3f, 0x78, 0xb0,
3156 0x00, 0x00, 0x3c, 0x0c, 0x9f, 0x01, 0x00, 0xa8, 0x18, 0x80, 0x8a, 0xbc,
3157 0xb7, 0x00, 0x3c, 0x0c, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x36, 0x92,
3158 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x04, 0xb8, 0x3f, 0x78, 0x30,
3159 0x00, 0x00, 0x58, 0x0c, 0x00, 0x00, 0x00, 0x04, 0xd8, 0x62, 0x80, 0x9c,
3160 0x00, 0x00, 0x8a, 0x11, 0x02, 0x0c, 0x02, 0x80, 0xa2, 0x1b, 0x89, 0xbc,
3161 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x80, 0x2f, 0xb6,
3162 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x82, 0x8d, 0x8a, 0x37,
3163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xc2, 0xa2, 0x2c, 0x3a,
3164 0x18, 0x00, 0x4e, 0x0c, 0x86, 0x41, 0x02, 0x78, 0x88, 0x0d, 0x78, 0xb6,
3165 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0xa2, 0xe2, 0x8a, 0xbc,
3166 0x00, 0x00, 0x8a, 0x11, 0x04, 0x41, 0x02, 0x80, 0xb2, 0x3f, 0x78, 0xb0,
3167 0x00, 0x00, 0x47, 0x0c, 0x9f, 0x01, 0x00, 0xa8, 0x18, 0x80, 0x8a, 0xbc,
3168 0xb7, 0x00, 0x47, 0x0c, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x36, 0x92,
3169 0x00, 0x00, 0x51, 0x0c, 0x28, 0x40, 0x02, 0x04, 0xb8, 0x3f, 0x78, 0xb0,
3170 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x04, 0xd8, 0x62, 0x80, 0x3c,
3171 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x40, 0x80, 0xb2,
3172 0x00, 0x00, 0x55, 0x0c, 0x02, 0x01, 0x00, 0x90, 0x18, 0x20, 0x89, 0xbc,
3173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0x32,
3174 0x00, 0x00, 0x47, 0x0c, 0x9f, 0x01, 0x00, 0xa8, 0x18, 0x80, 0x8a, 0xbc,
3175 0xb7, 0x00, 0x47, 0x0c, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x36, 0x92,
3176 0x00, 0x00, 0x58, 0x0c, 0x04, 0x00, 0x00, 0x90, 0x18, 0x20, 0x89, 0xba,
3177 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x04, 0x48, 0x62, 0x80, 0xbc,
3178 0x00, 0x00, 0x8a, 0x11, 0x90, 0x00, 0x00, 0xb4, 0x48, 0x62, 0x8b, 0xba,
3179 0x03, 0x00, 0x8a, 0x11, 0x04, 0x40, 0x02, 0x00, 0x08, 0x1e, 0xff, 0xb8,
3180 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x22, 0x80, 0x9a,
3181 0x00, 0x00, 0x89, 0x0c, 0x04, 0x00, 0x00, 0x80, 0xa2, 0xe2, 0x8a, 0xbc,
3182 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x82, 0x8d, 0x8a, 0x37,
3183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xc2, 0xa2, 0x2c, 0x3a,
3184 0x18, 0x00, 0x87, 0x0c, 0x86, 0x40, 0x02, 0x78, 0x88, 0x0d, 0x78, 0xb6,
3185 0x00, 0x00, 0x8a, 0x11, 0x04, 0x40, 0x02, 0x04, 0xb8, 0x3f, 0x78, 0xb0,
3186 0x03, 0x00, 0x8a, 0x11, 0x04, 0x40, 0x02, 0x00, 0x08, 0x1e, 0xff, 0xb8,
3187 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3188 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x80, 0xd2,
3189 0x00, 0x00, 0x67, 0x0c, 0x12, 0x01, 0x00, 0x60, 0x08, 0x40, 0x23, 0xb2,
3190 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3191 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3192 0x00, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
3193 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3194 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x24, 0x08, 0x00, 0x23, 0xb2,
3195 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x20, 0x08, 0xc0, 0x23, 0xb2,
3196 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x18, 0x08, 0x80, 0x23, 0xb2,
3197 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3199 0x00, 0xc0, 0x72, 0x0c, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3200 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x38, 0x02, 0x80, 0x81, 0xb2,
3201 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x82, 0xb2,
3202 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x30, 0x02, 0x40, 0x82, 0xb2,
3203 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x34, 0x02, 0x00, 0x86, 0xb2,
3204 0x20, 0x80, 0x64, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x92,
3205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3206 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0xb8, 0x1b, 0x80, 0x3a,
3207 0x00, 0x00, 0x00, 0x00, 0x64, 0x30, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3a,
3208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x80, 0x32,
3209 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
3210 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
3211 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x86, 0x32,
3212 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3214 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x81, 0x32,
3215 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x07, 0x00, 0x82, 0x32,
3216 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0xe0, 0x2c, 0x39,
3217 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xf7, 0x01, 0x0b, 0x34,
3218 0x00, 0x00, 0x81, 0x0c, 0x80, 0x01, 0x00, 0x80, 0x32, 0x80, 0x87, 0xb6,
3219 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xb7, 0x01, 0x70, 0x34,
3220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x34,
3221 0x00, 0x00, 0x93, 0x0c, 0x02, 0x0c, 0x02, 0x80, 0xa2, 0x1b, 0x89, 0xbc,
3222 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3223 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
3224 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
3225 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3226 0x00, 0x00, 0x5a, 0x0c, 0x9f, 0x01, 0x00, 0xa8, 0x18, 0x80, 0x8a, 0xbc,
3227 0xb7, 0x00, 0x5a, 0x0c, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x00, 0x36, 0x92,
3228 0x27, 0x00, 0x8c, 0x0c, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0x81, 0xbc,
3229 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x78, 0x09, 0x00, 0x6e, 0x32,
3230 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0xa2, 0x97, 0xbc,
3231 0x00, 0x00, 0x8e, 0x0c, 0x23, 0x55, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0xb2,
3232 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3233 0x00, 0x00, 0x90, 0x0c, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3234 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
3235 0x00, 0x00, 0xa2, 0x07, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
3236 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3237 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x94,
3238 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc7, 0x01, 0x70, 0x34,
3239 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
3240 0x08, 0x00, 0x97, 0x0c, 0x23, 0x19, 0x01, 0xe8, 0x76, 0x20, 0x81, 0xb9,
3241 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3242 0x00, 0x00, 0x99, 0x0c, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3243 0x00, 0x00, 0x9c, 0x0c, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
3244 0x00, 0x00, 0x9c, 0x0c, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
3245 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x34,
3247 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3248 0x00, 0x00, 0xc6, 0x0e, 0x00, 0x00, 0x00, 0x2c, 0xf9, 0x01, 0x00, 0xf4,
3249 0x00, 0x00, 0xa0, 0x0c, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
3250 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3251 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
3252 0x00, 0x00, 0xa4, 0x03, 0xca, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
3253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3254 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x08, 0x00, 0x6e, 0x32,
3255 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3256 0x00, 0xc0, 0xad, 0x0c, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3257 0x18, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x82, 0xb6,
3258 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0x32,
3260 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x01, 0xec, 0x66, 0x00, 0x00, 0x34,
3261 0x18, 0x00, 0x00, 0x00, 0x00, 0x48, 0x01, 0xe0, 0xe6, 0xa0, 0x82, 0x39,
3262 0x1b, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3263 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3264 0x00, 0x20, 0x00, 0x84, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
3265 0x00, 0x00, 0xc7, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
3266 0x00, 0x00, 0xa2, 0x07, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3268 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3269 0x00, 0xc0, 0xb6, 0x0c, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3270 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3271 0x00, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
3272 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3273 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x02, 0xf2,
3274 0x00, 0x00, 0xbd, 0x0c, 0x00, 0x00, 0x00, 0x5c, 0x08, 0x00, 0x00, 0x92,
3275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3276 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3277 0x00, 0xc0, 0xbd, 0x0c, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3278 0x20, 0x80, 0x9c, 0x10, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0xf2,
3279 0x00, 0x00, 0xa1, 0x03, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3280 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x08, 0x00, 0x6e, 0x32,
3281 0x00, 0x20, 0x00, 0x84, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
3282 0x00, 0x00, 0xc7, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
3283 0x00, 0x00, 0xc2, 0x0c, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
3284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x32,
3285 0x00, 0x00, 0xc6, 0x0c, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x85, 0xb2,
3286 0x00, 0x00, 0xc6, 0x0c, 0x80, 0x00, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
3287 0x00, 0x00, 0x00, 0x00, 0xd2, 0x41, 0x02, 0x80, 0x06, 0xc0, 0x85, 0x32,
3288 0x00, 0x00, 0x8a, 0x11, 0x1c, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3289 0x00, 0x00, 0x4c, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3290 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3291 0x00, 0x00, 0x4c, 0x0d, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x85, 0x92,
3292 0x00, 0x00, 0x1a, 0x0d, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3293 0x00, 0x00, 0x22, 0x0d, 0x1f, 0x20, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xb2,
3294 0x00, 0x00, 0x1a, 0x0d, 0x04, 0x30, 0x01, 0x08, 0x89, 0x9b, 0x90, 0xbc,
3295 0x00, 0x00, 0xd2, 0x0c, 0x04, 0x31, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
3296 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3297 0x00, 0x00, 0xd0, 0x0c, 0x00, 0x50, 0x01, 0x48, 0x08, 0x80, 0x6e, 0x92,
3298 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x61, 0x80, 0x3c,
3300 0x00, 0x00, 0xeb, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x28, 0x21, 0x80, 0x9a,
3301 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x80, 0x90, 0xb2,
3302 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x30, 0x01, 0x48, 0x08, 0x00, 0x6e, 0xf2,
3303 0x00, 0x00, 0xd6, 0x0c, 0x00, 0x50, 0x01, 0x04, 0xa8, 0x5b, 0x80, 0x9c,
3304 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3305 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0xa8, 0x1b, 0x80, 0x3a,
3306 0x00, 0x00, 0xe8, 0x0c, 0x07, 0x00, 0x00, 0x48, 0x18, 0xa0, 0x84, 0xbc,
3307 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3308 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xa0, 0xfe, 0x38,
3309 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3310 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3311 0x05, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xa0, 0xfe, 0xd8,
3312 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x02, 0xa0, 0xfe, 0x38,
3313 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3314 0x00, 0x00, 0xe1, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3315 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3316 0x00, 0x00, 0xe8, 0x0c, 0x07, 0x00, 0x00, 0x48, 0x18, 0xa0, 0x84, 0xbc,
3317 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3318 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xa0, 0xfe, 0x38,
3319 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3320 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3321 0x05, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xa0, 0xfe, 0xd8,
3322 0x05, 0x00, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x68, 0x02, 0xa0, 0xfe, 0x98,
3323 0x00, 0x00, 0xeb, 0x0c, 0x04, 0x00, 0x00, 0x48, 0x18, 0xa0, 0x84, 0xba,
3324 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x04, 0x28, 0x61, 0x80, 0xbc,
3325 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x21, 0x80, 0x3a,
3326 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3327 0x00, 0x00, 0xf4, 0x0c, 0x12, 0x01, 0x00, 0x60, 0x08, 0x40, 0x23, 0xb2,
3328 0x03, 0x00, 0x8a, 0x11, 0x04, 0x40, 0x02, 0x00, 0x38, 0x1a, 0xff, 0xb8,
3329 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x60, 0x80, 0x39,
3330 0x18, 0x00, 0x00, 0x00, 0xd2, 0x41, 0x02, 0x8c, 0xe6, 0xa1, 0x97, 0x39,
3331 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x80, 0x84, 0x32,
3332 0x00, 0x82, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3333 0x28, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3334 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3335 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x24, 0x08, 0x00, 0x23, 0xb2,
3336 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x20, 0x08, 0xc0, 0x23, 0xb2,
3337 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x18, 0x08, 0x80, 0x23, 0xb2,
3338 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3339 0x00, 0xc0, 0xfe, 0x0c, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3340 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x38, 0x02, 0x80, 0x81, 0xb2,
3341 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x82, 0xb2,
3342 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x30, 0x02, 0x40, 0x82, 0xb2,
3343 0x00, 0x00, 0xed, 0x0c, 0x12, 0x01, 0x00, 0x34, 0x02, 0x00, 0x86, 0xb2,
3344 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3345 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00, 0x00, 0x32,
3347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3348 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x80, 0x32,
3349 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
3350 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
3351 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x86, 0x32,
3352 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3353 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3354 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x81, 0x32,
3355 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x07, 0x00, 0x82, 0x32,
3356 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x17, 0xe0, 0x2c, 0x39,
3357 0x00, 0x00, 0x0d, 0x0d, 0x80, 0x00, 0x00, 0x80, 0x32, 0x80, 0x87, 0xb6,
3358 0x00, 0x10, 0x00, 0x80, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
3359 0x00, 0x00, 0x0e, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3360 0x00, 0x10, 0x00, 0x88, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
3361 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3362 0x05, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xa0, 0xfe, 0xd8,
3363 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x02, 0xa0, 0xfe, 0x38,
3364 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xa0, 0xfe, 0x38,
3365 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3366 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3367 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x34,
3368 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
3369 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3370 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3371 0x00, 0x00, 0xeb, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3372 0x00, 0x00, 0x22, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3373 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3374 0x05, 0x00, 0x1d, 0x0d, 0x00, 0x00, 0x00, 0x68, 0x02, 0xa0, 0xfe, 0x98,
3375 0x00, 0x00, 0x22, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3376 0x05, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xa0, 0xfe, 0xd8,
3377 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xa0, 0xfe, 0x38,
3378 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3379 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3380 0x00, 0x00, 0x1a, 0x0d, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x92,
3381 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3382 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
3383 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x00, 0x2d, 0x37,
3384 0xb4, 0xcc, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x97, 0x3a,
3385 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0xc0, 0x2c, 0x37,
3386 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x8d, 0x97, 0x3a,
3387 0x00, 0x00, 0x8a, 0x11, 0x02, 0x10, 0x00, 0x00, 0x87, 0xbf, 0x97, 0xba,
3388 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x40, 0xfe, 0x32,
3389 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0xb4,
3390 0x00, 0x00, 0x2b, 0x0d, 0xb6, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3391 0x00, 0x20, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x64, 0xa2, 0xcd, 0x2c, 0xb2,
3392 0x00, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
3393 0x00, 0x00, 0x30, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3394 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3395 0x00, 0x00, 0xa2, 0x07, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x92,
3396 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x62, 0x81, 0x2f, 0xb6,
3397 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3398 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3399 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3400 0x00, 0x00, 0x39, 0x0d, 0x12, 0x01, 0x00, 0x60, 0x08, 0x40, 0x23, 0xb2,
3401 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3402 0x28, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3403 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3404 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x24, 0x08, 0x00, 0x23, 0xb2,
3405 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x20, 0x08, 0xc0, 0x23, 0xb2,
3406 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x18, 0x08, 0x80, 0x23, 0xb2,
3407 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3408 0x00, 0xc0, 0x43, 0x0d, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3409 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x38, 0x02, 0x80, 0x81, 0xb2,
3410 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x82, 0xb2,
3411 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x30, 0x02, 0x40, 0x82, 0xb2,
3412 0x00, 0x00, 0xed, 0x0c, 0x12, 0x01, 0x00, 0x34, 0x02, 0x00, 0x86, 0xb2,
3413 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3414 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x00, 0x00, 0x48, 0x08, 0x00, 0x00, 0xf2,
3415 0x00, 0x00, 0x46, 0x0d, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x92,
3416 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3417 0x00, 0x00, 0x00, 0x0d, 0x00, 0x50, 0x01, 0x00, 0xa8, 0x1b, 0x80, 0x9a,
3418 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3419 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3420 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x28, 0x09, 0x80, 0x02, 0xf2,
3421 0x00, 0x00, 0x2b, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3422 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x02, 0xf2,
3423 0x00, 0x00, 0x4f, 0x0d, 0x9a, 0x01, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0xb4,
3424 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x8d, 0x2f, 0x31,
3425 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0xec, 0x06, 0xc0, 0x6e, 0x34,
3426 0x2d, 0x00, 0xa2, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3427 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3428 0x00, 0x00, 0x8a, 0x11, 0x04, 0xa9, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xb2,
3429 0x00, 0x00, 0x5a, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
3430 0x00, 0x00, 0x56, 0x0d, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
3431 0x00, 0x00, 0x5a, 0x0d, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
3432 0x00, 0x00, 0x5a, 0x0d, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
3433 0x00, 0x00, 0x58, 0x0d, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3434 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
3435 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3436 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3437 0x00, 0x00, 0x5c, 0x0d, 0x04, 0x98, 0x01, 0x64, 0x88, 0x1b, 0x87, 0xbc,
3438 0x00, 0x00, 0x0a, 0x11, 0x00, 0x90, 0x01, 0x08, 0x09, 0x80, 0x6e, 0xf2,
3439 0x00, 0x00, 0x3f, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
3440 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
3441 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3442 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3443 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
3444 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
3445 0x30, 0x00, 0xa4, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3446 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3447 0x00, 0x00, 0x6c, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
3448 0x00, 0x00, 0x68, 0x0d, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
3449 0x00, 0x00, 0x6c, 0x0d, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
3450 0x00, 0x00, 0x6c, 0x0d, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
3451 0x00, 0x00, 0x6a, 0x0d, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3452 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
3453 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3454 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3455 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0x3a,
3456 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
3457 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3458 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3459 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
3460 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
3461 0x00, 0x00, 0xa4, 0x07, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
3462 0x36, 0x00, 0xa4, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3463 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3464 0x00, 0x00, 0x7d, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
3465 0x00, 0x00, 0x79, 0x0d, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
3466 0x00, 0x00, 0x7d, 0x0d, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
3467 0x00, 0x00, 0x7d, 0x0d, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
3468 0x00, 0x00, 0x7b, 0x0d, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3469 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
3470 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3471 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3472 0x00, 0x00, 0x88, 0x0d, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3473 0x00, 0x00, 0x86, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
3474 0x00, 0x00, 0x82, 0x0d, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
3475 0x00, 0x00, 0x86, 0x0d, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
3476 0x00, 0x00, 0x86, 0x0d, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
3477 0x00, 0x00, 0x84, 0x0d, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3478 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
3479 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
3480 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3481 0x30, 0x00, 0x88, 0x0d, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3482 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3483 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
3484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
3485 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3486 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3487 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
3488 0x00, 0x00, 0xa4, 0x07, 0x12, 0x01, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
3489 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3490 0x00, 0x00, 0xa2, 0x07, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x81, 0x2f, 0xb6,
3491 0x00, 0x00, 0xa2, 0x07, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x81, 0x2f, 0xb6,
3492 0x00, 0x00, 0x93, 0x0d, 0x80, 0x00, 0x00, 0x80, 0x02, 0x81, 0x2f, 0xb6,
3493 0x00, 0x00, 0x8a, 0x11, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3494 0x00, 0x00, 0x8a, 0x11, 0x04, 0x58, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
3495 0x00, 0x00, 0xa2, 0x07, 0x08, 0x59, 0x01, 0xec, 0x06, 0xfb, 0x6e, 0xbc,
3496 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3497 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3498 0x00, 0xc0, 0x9c, 0x0d, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3499 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xec, 0x06, 0xfb, 0x6e, 0x3a,
3500 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3501 0x00, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
3502 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3503 0x00, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x81, 0x2f, 0xf4,
3504 0x00, 0x00, 0x9f, 0x0d, 0x06, 0x03, 0x01, 0x80, 0x12, 0xc0, 0x6e, 0xbc,
3505 0x18, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
3506 0x19, 0x00, 0x9d, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x36, 0x92,
3507 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x81, 0x2f, 0xb6,
3508 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xe2, 0x81, 0x2f, 0xb6,
3509 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x8d, 0x2f, 0x31,
3510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3511 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
3512 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x28, 0x08, 0x00, 0x6e, 0x32,
3513 0x00, 0x00, 0x00, 0x00, 0x45, 0x30, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x32,
3514 0x00, 0x00, 0xc7, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
3515 0x00, 0x00, 0xad, 0x0d, 0x04, 0x02, 0x01, 0xec, 0x16, 0xc0, 0x6e, 0xbc,
3516 0x00, 0x00, 0x00, 0x00, 0xc9, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3a,
3517 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0x34,
3518 0x00, 0xc0, 0xad, 0x0d, 0x12, 0x01, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
3519 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3520 0x18, 0x00, 0x36, 0x00, 0xca, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3521 0x00, 0x00, 0xad, 0x0d, 0x9f, 0x01, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
3522 0x00, 0x00, 0xb2, 0x0d, 0x3d, 0x01, 0x00, 0xb0, 0x02, 0x00, 0x85, 0xb2,
3523 0x00, 0x00, 0xb2, 0x0d, 0x34, 0x00, 0x00, 0xf8, 0xd2, 0x81, 0x2f, 0xb5,
3524 0x34, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3525 0x00, 0x00, 0xa4, 0x07, 0x80, 0x01, 0x00, 0x80, 0x92, 0x80, 0x2f, 0xb6,
3526 0x2a, 0x00, 0xa4, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3527 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3528 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2f, 0xb6,
3529 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3530 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3531 0x00, 0xc0, 0xbc, 0x0d, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3532 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3533 0x00, 0x00, 0x9d, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x72, 0xe0, 0x2e, 0xb2,
3534 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3535 0x00, 0x20, 0x00, 0x80, 0xdf, 0x00, 0x00, 0x28, 0x09, 0x00, 0x37, 0x32,
3536 0x18, 0x00, 0x00, 0x00, 0x00, 0x48, 0x01, 0x38, 0x88, 0x1b, 0x16, 0x38,
3537 0x00, 0x00, 0x00, 0x00, 0xde, 0x48, 0x01, 0x28, 0x88, 0x04, 0x6e, 0x30,
3538 0x00, 0x00, 0xc1, 0x0d, 0x80, 0x5f, 0x01, 0x80, 0x72, 0xc0, 0x6e, 0xb6,
3539 0x00, 0x00, 0xc3, 0x0d, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x80, 0x2f, 0x94,
3540 0x00, 0x00, 0xc3, 0x0d, 0x80, 0x5f, 0x01, 0x80, 0x62, 0xc0, 0x6e, 0xb6,
3541 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xa9, 0x81, 0x92, 0x34,
3542 0x00, 0x00, 0xcb, 0x10, 0x00, 0x00, 0x00, 0x08, 0xe8, 0x01, 0x00, 0xf4,
3543 0x00, 0x00, 0xc6, 0x0d, 0x12, 0x01, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
3544 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3545 0x00, 0x00, 0xc9, 0x0d, 0x80, 0x01, 0x00, 0x80, 0xd2, 0x81, 0x2f, 0xb6,
3546 0x00, 0x00, 0xc9, 0x0d, 0x34, 0x00, 0x00, 0xf8, 0xd2, 0x81, 0x2f, 0xb5,
3547 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x80, 0x2f, 0x34,
3548 0x00, 0x00, 0xa4, 0x07, 0x04, 0x30, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
3549 0x2a, 0x00, 0xa4, 0x07, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3550 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3551 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0xd8, 0x02, 0x80, 0x01, 0xb2,
3552 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3553 0x00, 0xc0, 0xd2, 0x0d, 0x18, 0x01, 0x00, 0x0c, 0xa8, 0xcd, 0x3e, 0xb2,
3554 0x00, 0x82, 0x00, 0x00, 0xd6, 0x01, 0x00, 0x08, 0x08, 0x80, 0x36, 0x32,
3555 0x1d, 0x00, 0xa1, 0x03, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
3556 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3557 0x00, 0x00, 0xc2, 0x10, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0xf2,
3558 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x80, 0x01, 0x32,
3559 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x01, 0x78, 0x09, 0xc0, 0x6e, 0x32,
3560 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0x32,
3561 0x00, 0x10, 0x00, 0xa0, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
3562 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x07, 0x00, 0xee, 0x32,
3563 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0c, 0x07, 0x80, 0x97, 0x32,
3564 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
3565 0x00, 0xf0, 0xe1, 0x0d, 0x1d, 0x40, 0x02, 0x00, 0xa8, 0x0d, 0x68, 0xb1,
3566 0x00, 0x00, 0x8a, 0x11, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3567 0x00, 0x00, 0x8a, 0x11, 0x1e, 0x40, 0x02, 0x84, 0x06, 0x00, 0x00, 0xb2,
3568 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x80, 0xd0,
3569 0x00, 0x00, 0xde, 0x0d, 0xb6, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3570 0x00, 0xc0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x64, 0xa2, 0x0d, 0x80, 0xb2,
3571 0x00, 0x00, 0xda, 0x0d, 0xa6, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3572 0x00, 0x00, 0xe1, 0x0d, 0xb5, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3573 0x00, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x80, 0xa0, 0x36, 0x0b, 0x6a, 0x35,
3574 0x00, 0x00, 0xe6, 0x0d, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3575 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3576 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
3577 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x80, 0xbc,
3578 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe9, 0x01, 0x00, 0x34,
3579 0x00, 0x00, 0xef, 0x0f, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xd2,
3580 0x00, 0x00, 0xeb, 0x0d, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xbc,
3581 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3582 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x39, 0x0b, 0x2e, 0x32,
3583 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf3, 0x81, 0x97, 0x34,
3584 0x00, 0x00, 0xf1, 0x0d, 0x04, 0x00, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
3585 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3586 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x05, 0x30, 0x30,
3587 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xa4, 0x03, 0x39,
3588 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x0b, 0x2f, 0x32,
3589 0x00, 0x00, 0xa4, 0x03, 0x04, 0x00, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
3590 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3591 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb9, 0x05, 0x30, 0x30,
3592 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x32,
3593 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x02, 0x39,
3594 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x80, 0x97, 0x32,
3595 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3596 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x29, 0xd2,
3597 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x32,
3598 0x00, 0x00, 0xff, 0x0d, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x2f, 0xbc,
3599 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x00, 0x2c, 0x32,
3600 0xd9, 0x02, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0x97, 0xbc,
3601 0x46, 0x03, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0x97, 0xbc,
3602 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3603 0x00, 0x00, 0xf1, 0x0d, 0x00, 0x00, 0x00, 0xf4, 0x02, 0x00, 0x00, 0x92,
3604 0x00, 0x00, 0x18, 0x0e, 0x02, 0x00, 0x00, 0x80, 0xa2, 0x42, 0x80, 0xbc,
3605 0x00, 0x00, 0x18, 0x0e, 0x80, 0x00, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
3606 0x00, 0x00, 0x18, 0x0e, 0x1f, 0x40, 0x02, 0x08, 0xb9, 0xbf, 0x68, 0xb0,
3607 0x00, 0x00, 0x08, 0x0e, 0x80, 0x41, 0x02, 0x80, 0xe2, 0x81, 0x68, 0xb6,
3608 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x79, 0x61, 0x80, 0x39,
3609 0x00, 0x00, 0x00, 0x00, 0xd2, 0x21, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3a,
3610 0x18, 0x00, 0x00, 0x00, 0x00, 0x41, 0x02, 0x88, 0xe6, 0x21, 0x91, 0x79,
3611 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x19, 0xa0, 0x90, 0x3a,
3612 0x00, 0x00, 0x18, 0x0e, 0x06, 0x01, 0x00, 0x80, 0xd2, 0xff, 0x90, 0xbc,
3613 0x00, 0x00, 0x0c, 0x0e, 0x2c, 0x41, 0x02, 0x78, 0xf9, 0x81, 0x68, 0xb4,
3614 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb9, 0x81, 0x97, 0x34,
3615 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3616 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x59, 0xc0, 0x85, 0xd7,
3617 0x03, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x29, 0x1a, 0xff, 0x38,
3618 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0xb9, 0x1b, 0x90, 0x3a,
3619 0x00, 0x00, 0x00, 0x00, 0xd2, 0x41, 0x02, 0x88, 0x16, 0xa0, 0x97, 0x3a,
3620 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
3621 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3a,
3622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x40, 0x80, 0x32,
3623 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x27, 0x24, 0x90, 0x3a,
3624 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0x8a, 0x32,
3625 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x58, 0xf2, 0xc1, 0x38, 0x74,
3626 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3627 0x08, 0x00, 0x23, 0x0e, 0x1e, 0x01, 0x00, 0x34, 0x79, 0x61, 0x80, 0xb9,
3628 0x00, 0x00, 0x8a, 0x11, 0x38, 0x00, 0x00, 0x54, 0x1f, 0x40, 0xf5, 0xba,
3629 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x40, 0x02, 0x00, 0x09, 0x40, 0x68, 0xb2,
3630 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xb9, 0x3f, 0x90, 0x30,
3631 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xe0, 0x26, 0x24, 0x6e, 0x3a,
3632 0x08, 0x00, 0x8a, 0x11, 0x1e, 0x00, 0x00, 0x00, 0x09, 0xa4, 0xfe, 0xb8,
3633 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x05, 0x90, 0xd0,
3634 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0x05, 0x90, 0xb0,
3635 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x05, 0x90, 0x30,
3636 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3637 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3638 0x00, 0x00, 0x00, 0x00, 0xd2, 0x21, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3a,
3639 0x18, 0x00, 0x00, 0x00, 0x1e, 0x41, 0x02, 0x84, 0xe6, 0x61, 0x93, 0x79,
3640 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3641 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3642 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x01, 0x80, 0x82, 0xdb, 0x90, 0x7c,
3643 0x00, 0x00, 0x8a, 0x11, 0x04, 0x20, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
3644 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3645 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x02, 0x80, 0xa2, 0xdb, 0x90, 0x7c,
3646 0x00, 0x00, 0x2d, 0x0e, 0x06, 0x21, 0x01, 0x80, 0x82, 0x1b, 0x90, 0xbc,
3647 0x26, 0x00, 0x2e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x36, 0x92,
3648 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x36, 0x32,
3649 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x12, 0x00, 0x2c, 0x3a,
3650 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3651 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x92, 0xd2,
3652 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0x92, 0xbc,
3653 0x00, 0x00, 0x00, 0x00, 0x2f, 0xa0, 0x01, 0x78, 0x89, 0x1b, 0x92, 0x7a,
3654 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x78, 0x89, 0x9b, 0x97, 0x3c,
3655 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x02, 0x00, 0xf9, 0xba, 0x6e, 0x37,
3656 0x00, 0x00, 0x39, 0x0e, 0x02, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x97, 0xbc,
3657 0x00, 0x00, 0x39, 0x0e, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3658 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x8d, 0x97, 0x37,
3659 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x02, 0x80, 0x82, 0x9b, 0x97, 0x7c,
3660 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0xf2, 0x80, 0x2f, 0x74,
3661 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3662 0x00, 0x00, 0x00, 0x00, 0xda, 0x5b, 0x01, 0xec, 0x06, 0x40, 0xed, 0x32,
3663 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3664 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x40, 0x89, 0xd2,
3665 0x00, 0x00, 0x42, 0x0e, 0x08, 0x5d, 0x01, 0xec, 0x16, 0x40, 0x89, 0xbc,
3666 0x00, 0x00, 0x42, 0x0e, 0x0b, 0x5d, 0x01, 0xec, 0x06, 0x00, 0x00, 0xb2,
3667 0x00, 0x00, 0x42, 0x0e, 0x80, 0x00, 0x00, 0x80, 0x42, 0x81, 0x2f, 0xb6,
3668 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xb2, 0x80, 0x2f, 0x34,
3669 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
3670 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x78, 0x89, 0x1b, 0x87, 0x3c,
3671 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x92, 0xa1, 0x97, 0xbc,
3672 0x00, 0x00, 0x47, 0x0e, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x86, 0xbc,
3673 0x00, 0x00, 0x0a, 0x11, 0x00, 0x90, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xf2,
3674 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3a,
3675 0x00, 0x00, 0x3f, 0x11, 0x33, 0x01, 0x00, 0xf8, 0x82, 0x80, 0x2f, 0xb4,
3676 0x00, 0x00, 0x3f, 0x11, 0x9f, 0xf0, 0x01, 0x80, 0x82, 0xdb, 0x87, 0xbc,
3677 0x00, 0x00, 0x3f, 0x11, 0x9f, 0xf8, 0x01, 0x80, 0x22, 0x21, 0x6e, 0xbc,
3678 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x01, 0xe0, 0x06, 0x00, 0xee, 0x32,
3679 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0xe0, 0x06, 0xc0, 0x87, 0x32,
3680 0x00, 0x00, 0x3f, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3681 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3682 0x00, 0x00, 0x8a, 0x11, 0x08, 0x00, 0x00, 0x80, 0x02, 0x80, 0x91, 0xbc,
3683 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3684 0x10, 0x00, 0xe2, 0x10, 0x00, 0x50, 0x01, 0x14, 0xa9, 0x9b, 0x91, 0xd9,
3685 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3686 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x14, 0x89, 0x0d, 0x6e, 0x37,
3687 0x00, 0x00, 0xe2, 0x10, 0x00, 0x30, 0x01, 0x14, 0x89, 0x5b, 0x91, 0xd2,
3688 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3689 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x2d, 0xd2,
3690 0x00, 0x00, 0x8a, 0x11, 0x06, 0x21, 0x01, 0x80, 0x82, 0x9b, 0x91, 0xbc,
3691 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x78, 0x09, 0x00, 0x6e, 0x32,
3692 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x02, 0x80, 0x82, 0x9b, 0x97, 0xbc,
3693 0x00, 0x00, 0x71, 0x0e, 0x04, 0x21, 0x01, 0x30, 0x69, 0x24, 0x6e, 0xbc,
3694 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0xa9, 0x9b, 0x91, 0x3a,
3695 0x00, 0x00, 0x66, 0x0e, 0x1f, 0x40, 0x02, 0x24, 0x09, 0x40, 0x68, 0xb2,
3696 0x00, 0x00, 0x5c, 0x0e, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x41, 0x92, 0xb6,
3697 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xb9, 0x7f, 0x92, 0x30,
3698 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x24, 0x90, 0x3c,
3699 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0xa4, 0xfe, 0x38,
3700 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3701 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3702 0x08, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x99, 0xa4, 0xfe, 0xd8,
3703 0x08, 0x00, 0x5c, 0x0e, 0x12, 0x01, 0x00, 0x68, 0x92, 0xa4, 0xfe, 0xb8,
3704 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3705 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0xbc,
3706 0x00, 0x00, 0x6b, 0x0e, 0x38, 0x50, 0x01, 0x78, 0x09, 0x80, 0x6e, 0xb2,
3707 0x00, 0x00, 0x6b, 0x0e, 0x04, 0x28, 0x01, 0x80, 0x02, 0x00, 0x6e, 0xbc,
3708 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x28, 0x01, 0x78, 0xe9, 0x25, 0x6e, 0xbc,
3709 0x00, 0x00, 0x8a, 0x11, 0x08, 0x01, 0x00, 0x78, 0x69, 0xa4, 0x97, 0xbc,
3710 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0xe0, 0x66, 0x24, 0x6e, 0x3a,
3711 0x00, 0x00, 0x6e, 0x0e, 0x38, 0x20, 0x01, 0xe0, 0x06, 0x00, 0x93, 0xb2,
3712 0x00, 0x00, 0x6f, 0x0e, 0x00, 0x28, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x92,
3713 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
3714 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
3715 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
3716 0x00, 0x00, 0x77, 0x0e, 0x38, 0x51, 0x01, 0x00, 0xa9, 0x9b, 0x91, 0xba,
3717 0x00, 0x00, 0x75, 0x0e, 0x04, 0x41, 0x02, 0x08, 0xb9, 0xff, 0x68, 0xb0,
3718 0x00, 0x00, 0x8a, 0x11, 0x80, 0x41, 0x02, 0x80, 0xe2, 0xc1, 0x68, 0xb6,
3719 0x00, 0x00, 0x72, 0x0e, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x92,
3720 0x00, 0x00, 0x84, 0x0e, 0x9f, 0x31, 0x01, 0xe0, 0x66, 0x24, 0x6e, 0xbc,
3721 0x00, 0x00, 0x84, 0x0e, 0x00, 0x30, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x92,
3722 0x00, 0x00, 0x81, 0x0e, 0x04, 0x28, 0x01, 0x04, 0x09, 0x00, 0x6e, 0xb2,
3723 0x00, 0x00, 0x8a, 0x11, 0x06, 0x50, 0x01, 0x80, 0xa2, 0x5b, 0x90, 0xbc,
3724 0x00, 0x00, 0x7f, 0x0e, 0x9f, 0x01, 0x00, 0x00, 0x19, 0x24, 0x90, 0xbc,
3725 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0xe0, 0x66, 0x24, 0x6e, 0x3a,
3726 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xe0, 0x06, 0x24, 0x00, 0x3c,
3727 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
3728 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0xe0, 0x06, 0x00, 0x93, 0x32,
3729 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
3730 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
3731 0x00, 0x00, 0x8e, 0x0e, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xbc,
3732 0x00, 0x00, 0x84, 0x0e, 0x04, 0x41, 0x02, 0x08, 0xb9, 0xff, 0x68, 0xb0,
3733 0x00, 0x00, 0x8a, 0x11, 0x80, 0x41, 0x02, 0x80, 0xe2, 0xc1, 0x68, 0xb6,
3734 0x00, 0x00, 0x81, 0x0e, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x92,
3735 0x00, 0x00, 0x88, 0x0e, 0x02, 0x00, 0x00, 0x80, 0x22, 0x24, 0x90, 0xbc,
3736 0x00, 0x00, 0x8e, 0x0e, 0x80, 0x40, 0x02, 0x80, 0xf2, 0xc1, 0x68, 0xb6,
3737 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x8c, 0xb6, 0xc1, 0x68, 0x35,
3738 0x00, 0x00, 0x8e, 0x0e, 0x00, 0x00, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0x94,
3739 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x78, 0x39, 0x9a, 0xfe, 0x38,
3740 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3741 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3742 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x97, 0xd2,
3743 0x08, 0x00, 0x8a, 0x11, 0x12, 0x40, 0x02, 0x68, 0x12, 0x9a, 0xfe, 0xb8,
3744 0x00, 0x00, 0x81, 0x0e, 0x04, 0x01, 0x00, 0x00, 0x29, 0x24, 0x90, 0xbc,
3745 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x32,
3746 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x79, 0x0b, 0x16, 0x38,
3747 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x0b, 0x16, 0x38,
3748 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x42, 0xe4, 0x90, 0xbc,
3749 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xa9, 0x00, 0x2d, 0x37,
3750 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x89, 0x4d, 0x90, 0x3a,
3751 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x82, 0x0d, 0x91, 0x37,
3752 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x12, 0xa4, 0x2a, 0x3a,
3753 0x00, 0x00, 0x99, 0x0e, 0x80, 0x40, 0x02, 0x80, 0xe2, 0x01, 0x7c, 0xb6,
3754 0x00, 0x00, 0x8a, 0x11, 0x04, 0x40, 0x02, 0x78, 0xb9, 0x3f, 0x7c, 0xb0,
3755 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe9, 0xa5, 0x90, 0x3a,
3756 0x00, 0x00, 0x9b, 0x0e, 0x9f, 0x01, 0x00, 0x10, 0x19, 0x00, 0x91, 0xbc,
3757 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3758 0x00, 0x00, 0x94, 0x0e, 0x04, 0x01, 0x00, 0x80, 0x42, 0xe4, 0x90, 0xbc,
3759 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xc9, 0x24, 0x90, 0x3a,
3760 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x22, 0xa4, 0x97, 0xbc,
3761 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0xe0, 0x66, 0x24, 0x6e, 0x3a,
3762 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x90, 0x32,
3763 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0xe0, 0x06, 0x00, 0x93, 0x32,
3764 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
3765 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3766 0x18, 0x00, 0xa5, 0x0e, 0x1f, 0x41, 0x02, 0x78, 0x88, 0xcd, 0x68, 0xb6,
3767 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x12, 0x00, 0x2c, 0x3a,
3768 0x00, 0x00, 0xa8, 0x0e, 0x80, 0x01, 0x00, 0x80, 0x62, 0x80, 0x87, 0xb6,
3769 0x00, 0x00, 0x8a, 0x11, 0x04, 0x41, 0x02, 0x80, 0xb2, 0xff, 0x68, 0xb0,
3770 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x92,
3771 0x03, 0x00, 0x8a, 0x11, 0x04, 0x40, 0x02, 0x00, 0x38, 0x1a, 0xff, 0xb8,
3772 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x40, 0x02, 0x04, 0xb8, 0xff, 0x68, 0xb0,
3773 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x00, 0xb8, 0x1b, 0x80, 0x3a,
3774 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3775 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x00, 0x80, 0xd2,
3776 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
3777 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3778 0x00, 0x00, 0xb6, 0x0e, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3779 0x00, 0x00, 0xb3, 0x0e, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3780 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3781 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
3782 0x1d, 0x00, 0xb6, 0x0e, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3783 0x00, 0x00, 0xb0, 0x0e, 0x9f, 0x01, 0x00, 0x80, 0x18, 0x00, 0x88, 0xbc,
3784 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3785 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0x32,
3786 0x00, 0x00, 0x00, 0x00, 0xca, 0x68, 0x00, 0x4c, 0x08, 0x00, 0x6e, 0x32,
3787 0x00, 0x00, 0x8a, 0x11, 0x04, 0x70, 0x00, 0x18, 0x08, 0x00, 0x6e, 0xb2,
3788 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
3789 0x10, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0xa9, 0x60, 0x81, 0xd9,
3790 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0xa2, 0xa0, 0x81, 0x7c,
3791 0x00, 0x00, 0x8a, 0x11, 0x0d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3792 0x00, 0x00, 0xc1, 0x0e, 0x80, 0x01, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
3793 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3794 0x00, 0x00, 0xc1, 0x0e, 0x1b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3795 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x62, 0xe0, 0x83, 0x7c,
3796 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
3797 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0x35,
3798 0x00, 0xa0, 0x00, 0x00, 0x12, 0x01, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0x72,
3799 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3800 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3801 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0xe4, 0x06, 0xc0, 0x2d, 0x32,
3802 0xee, 0xff, 0x00, 0x00, 0x00, 0x10, 0x01, 0xe0, 0x86, 0x8d, 0x2f, 0x31,
3803 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xb3, 0xe4, 0x39, 0x32,
3804 0x00, 0x00, 0xcd, 0x0e, 0x04, 0x00, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
3805 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3806 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb9, 0x05, 0x30, 0x30,
3807 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe3, 0xa5, 0x03, 0x39,
3808 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x33, 0x0b, 0x2f, 0x32,
3809 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x78, 0xd9, 0x01, 0x30, 0x76,
3810 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3811 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb9, 0x05, 0x30, 0x30,
3812 0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0xe3, 0xa5, 0x03, 0x79,
3813 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3814 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x2d, 0xbc,
3815 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
3816 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x32,
3817 0x00, 0x00, 0xd8, 0x0e, 0x20, 0x00, 0x01, 0x2c, 0x09, 0xc0, 0x6e, 0xb2,
3818 0x00, 0x00, 0xd9, 0x0e, 0x00, 0x16, 0x86, 0xcc, 0x06, 0xc0, 0x92, 0x92,
3819 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x86, 0xcc, 0x06, 0xc0, 0x92, 0x32,
3820 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x40, 0x62, 0x8e, 0x92, 0x52,
3821 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3822 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3823 0x00, 0x00, 0xdf, 0x0e, 0x04, 0x00, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
3824 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x42, 0x80, 0x97, 0xbc,
3825 0xdf, 0x0e, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
3826 0x60, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x2f, 0xb1,
3827 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x38, 0x32,
3828 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x30, 0x32,
3829 0x00, 0x00, 0x22, 0x0f, 0x04, 0x00, 0x00, 0x24, 0xd8, 0x01, 0x30, 0xb6,
3830 0xe4, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0x4d, 0x82, 0x3a,
3831 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3832 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3833 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3834 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3835 0xdf, 0x0e, 0x36, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x36, 0x92,
3836 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3837 0x00, 0x00, 0xec, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x48, 0x05, 0x30, 0x90,
3838 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3839 0x00, 0x00, 0xf7, 0x0e, 0x32, 0x0f, 0x01, 0xbc, 0x08, 0xc0, 0x6e, 0xb2,
3840 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0xdc, 0x02, 0x40, 0x6e, 0x32,
3841 0x00, 0x00, 0xf0, 0x0e, 0x1f, 0x01, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xb2,
3842 0x00, 0x00, 0xf6, 0x0e, 0x1d, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3843 0xe0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
3844 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x00, 0x2d, 0x37,
3845 0x20, 0xcd, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x97, 0x3a,
3846 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x87, 0xa0, 0xea, 0x39,
3847 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0xea, 0x32,
3848 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x38, 0xb2,
3849 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xe0, 0x26, 0x01, 0x6e, 0x35,
3850 0x00, 0x00, 0xfb, 0x0e, 0x80, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x8b, 0xb6,
3851 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0e, 0x82, 0x32,
3852 0x00, 0xe0, 0x03, 0x0f, 0x12, 0x01, 0x00, 0x48, 0xa2, 0x0d, 0x90, 0xb2,
3853 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3854 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x32,
3855 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
3856 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x00, 0x2d, 0x37,
3857 0x00, 0xcc, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x97, 0x3a,
3858 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0x00, 0x82, 0x37,
3859 0x00, 0x00, 0x8a, 0x11, 0x02, 0x10, 0x00, 0x00, 0x87, 0xbf, 0x97, 0xba,
3860 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x40, 0xfe, 0x32,
3861 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0xb4,
3862 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3863 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x89, 0x60, 0x38, 0x32,
3864 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xa4, 0x17, 0x38,
3865 0x00, 0x00, 0x09, 0x0f, 0x80, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x8b, 0xb6,
3866 0x00, 0x00, 0x0a, 0x0f, 0x04, 0x00, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3867 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3868 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x97, 0xbc,
3869 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf3, 0x41, 0x90, 0x34,
3870 0x00, 0x00, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
3871 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3872 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x05, 0x30, 0x30,
3873 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xa4, 0x03, 0x39,
3874 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xce, 0x2c, 0x32,
3875 0x00, 0xe0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0x0d, 0x90, 0xb2,
3876 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3877 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0xdc, 0x02, 0x40, 0x6e, 0x32,
3878 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xa4, 0x17, 0x38,
3879 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x32, 0x80, 0x97, 0xbc,
3880 0x00, 0x00, 0x8a, 0x11, 0x80, 0x10, 0x01, 0x80, 0x22, 0x01, 0x6e, 0xb6,
3881 0x00, 0x00, 0x18, 0x0f, 0x1f, 0x01, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xb2,
3882 0x00, 0x00, 0x20, 0x0f, 0x1d, 0x10, 0x01, 0xf8, 0x02, 0x00, 0x6e, 0xb2,
3883 0xe0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
3884 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x00, 0x2d, 0x37,
3885 0x20, 0xcd, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x97, 0x3a,
3886 0x0a, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x37, 0x8b, 0xea, 0x39,
3887 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0xea, 0x32,
3888 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
3889 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3890 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xf8, 0x02, 0x00, 0x6e, 0x32,
3891 0xee, 0xff, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x2f, 0xb0,
3892 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
3893 0xee, 0xff, 0x8a, 0x11, 0x04, 0x11, 0x01, 0x80, 0x82, 0x0d, 0x6e, 0xb0,
3894 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xf8, 0x02, 0x00, 0x6e, 0x32,
3895 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x01, 0xdc, 0x02, 0x40, 0x6e, 0x72,
3896 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3897 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x32,
3898 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x89, 0x4d, 0x0d, 0x36,
3899 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x0b, 0x32,
3900 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x90, 0x32,
3901 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0x36, 0x32,
3902 0x00, 0x00, 0x2b, 0x0f, 0x12, 0x00, 0x00, 0x4c, 0xf2, 0xc1, 0x38, 0xb4,
3903 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
3904 0x00, 0x00, 0x2c, 0x0f, 0x12, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x21, 0xb2,
3905 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x02, 0x90, 0x3a,
3906 0x00, 0x00, 0x28, 0x0f, 0x04, 0x01, 0x00, 0x04, 0x19, 0x40, 0x90, 0xbc,
3907 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
3908 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3909 0x00, 0x00, 0x3b, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3910 0x00, 0x00, 0x35, 0x0f, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
3911 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3912 0x00, 0x00, 0x3a, 0x0f, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
3913 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x22, 0x80, 0x2d, 0xbc,
3914 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x80, 0x18, 0x00, 0x88, 0xbc,
3915 0x00, 0x00, 0x35, 0x0f, 0x12, 0x01, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
3916 0x00, 0x00, 0x34, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3917 0x00, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
3918 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
3919 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
3920 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x6c, 0x88, 0x1c, 0x83, 0x3a,
3921 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x4c, 0x08, 0x00, 0x72, 0x32,
3922 0x00, 0x00, 0x8a, 0x11, 0x08, 0x50, 0x00, 0x18, 0xc8, 0x20, 0x72, 0xbc,
3923 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x81, 0x7c,
3924 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0x3c,
3925 0x00, 0x00, 0x8a, 0x11, 0x02, 0x00, 0x00, 0x20, 0x88, 0x01, 0x82, 0xba,
3926 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3927 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x06, 0x32,
3928 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x36, 0xbc,
3929 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x77, 0x4a, 0x09, 0x39,
3930 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0x82, 0x32,
3931 0x00, 0x00, 0x00, 0x00, 0xca, 0x19, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
3932 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
3933 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x72,
3934 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3935 0x00, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x3e,
3936 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x80, 0x32,
3937 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0xc0, 0x86, 0x32,
3938 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xc0, 0x84, 0x32,
3939 0x00, 0x00, 0xa3, 0x0f, 0x04, 0x00, 0x00, 0x28, 0xd8, 0xa0, 0x82, 0xbc,
3940 0x00, 0x00, 0x8a, 0x11, 0x09, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3941 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xd8, 0xa0, 0x81, 0x3c,
3942 0x00, 0x00, 0x67, 0x0f, 0x04, 0x00, 0x00, 0x3c, 0xd8, 0xe0, 0x83, 0xbc,
3943 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x81, 0xbc,
3944 0x00, 0x00, 0x58, 0x0f, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
3945 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0x02, 0xc0, 0x38, 0xb2,
3946 0x00, 0x00, 0x60, 0x0f, 0x51, 0x00, 0x00, 0xd8, 0x12, 0x80, 0x2d, 0x9a,
3947 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3948 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3949 0x00, 0x00, 0x5e, 0x0f, 0x04, 0x00, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
3950 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3951 0x00, 0x00, 0x59, 0x0f, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
3952 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
3953 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
3954 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
3955 0x00, 0x00, 0x65, 0x0f, 0x2a, 0x01, 0x00, 0x00, 0xd8, 0x20, 0x80, 0xba,
3956 0x00, 0x00, 0x64, 0x0f, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3957 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3958 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
3959 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3960 0x00, 0x00, 0xb7, 0x0e, 0x00, 0x60, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xf2,
3961 0x00, 0x00, 0x4d, 0x0f, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x9e,
3962 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
3963 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3964 0x1d, 0x00, 0x6e, 0x0f, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3965 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3966 0x00, 0x00, 0x68, 0x0f, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
3967 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3968 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3969 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x78, 0x39, 0x9a, 0xfe, 0x38,
3970 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
3971 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
3972 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x97, 0xd2,
3973 0x08, 0x00, 0x8a, 0x11, 0x12, 0x40, 0x02, 0x68, 0x12, 0x9a, 0xfe, 0xb8,
3974 0x00, 0x00, 0x8a, 0x11, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
3975 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
3976 0x00, 0x00, 0x86, 0x0f, 0x1f, 0x00, 0x00, 0x6c, 0xd8, 0xe0, 0x86, 0xba,
3977 0x00, 0x00, 0xa3, 0x0e, 0x51, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0xf2,
3978 0x00, 0x00, 0x79, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x08, 0x40, 0x80, 0x92,
3979 0x00, 0x00, 0x86, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3980 0x00, 0x00, 0x7e, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x81, 0x2f, 0xb6,
3981 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
3982 0x00, 0x00, 0x7e, 0x0f, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
3983 0x00, 0x00, 0x7e, 0x0f, 0x80, 0x01, 0x00, 0x80, 0x32, 0x80, 0x87, 0xb6,
3984 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe2, 0x80, 0x2f, 0x34,
3985 0x00, 0x00, 0x4c, 0x0f, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x81, 0xbc,
3986 0x00, 0x00, 0x84, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3987 0x00, 0x00, 0x83, 0x0f, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
3988 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
3989 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
3990 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
3991 0x00, 0x00, 0xb7, 0x0e, 0x00, 0x60, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xf2,
3992 0x00, 0x00, 0x4d, 0x0f, 0x4d, 0x00, 0x00, 0x00, 0x67, 0xe0, 0x83, 0x9e,
3993 0x00, 0x00, 0x89, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
3994 0x00, 0x00, 0xa7, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
3995 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
3996 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xa8, 0x60, 0x8a, 0x3c,
3997 0x00, 0x00, 0x8a, 0x11, 0x04, 0x21, 0x01, 0x80, 0x82, 0x5b, 0x8a, 0xbc,
3998 0x00, 0x00, 0x8d, 0x0f, 0x2f, 0xa8, 0x01, 0x20, 0x99, 0x22, 0x6e, 0xba,
3999 0x00, 0x00, 0x2f, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
4000 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x02, 0x80, 0x82, 0x1b, 0x92, 0xbc,
4001 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0xe0, 0x06, 0x00, 0x92, 0x32,
4002 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01, 0xe8, 0x06, 0x00, 0x00, 0x32,
4003 0x00, 0x00, 0x92, 0x0f, 0x23, 0x21, 0x01, 0xe0, 0x06, 0x00, 0x00, 0xb2,
4004 0x3c, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
4005 0x00, 0x00, 0x8a, 0x11, 0x04, 0x30, 0x00, 0xe0, 0x06, 0x80, 0x82, 0xb2,
4006 0x00, 0x00, 0x9c, 0x0f, 0x04, 0x21, 0x00, 0xe0, 0x06, 0x80, 0x81, 0xb2,
4007 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xe2, 0x80, 0x2f, 0xb6,
4008 0x00, 0x00, 0x9a, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4009 0x00, 0x00, 0x99, 0x0f, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
4010 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
4011 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x32,
4012 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
4013 0x00, 0x00, 0xb7, 0x0e, 0x00, 0x60, 0x00, 0x6c, 0x08, 0x00, 0x6e, 0xf2,
4014 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x06, 0x80, 0x81, 0x32,
4015 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x06, 0x40, 0x81, 0x32,
4016 0x00, 0x00, 0x8a, 0x11, 0x04, 0x10, 0x00, 0xe0, 0x06, 0xc0, 0x86, 0xb2,
4017 0x00, 0x00, 0x00, 0x00, 0x2a, 0x19, 0x00, 0xe0, 0x06, 0xc0, 0x84, 0x72,
4018 0x00, 0x00, 0xa1, 0x0f, 0x12, 0x01, 0x00, 0x00, 0x09, 0xc0, 0x21, 0xb2,
4019 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
4020 0x1d, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xa4, 0x17, 0xb8,
4021 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0x75,
4022 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xd8, 0xe0, 0x83, 0x3c,
4023 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0xc1, 0x38, 0xb4,
4024 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4025 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0x34,
4026 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x12, 0x00, 0x2c, 0x3a,
4027 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4028 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x32,
4029 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0x00, 0x00, 0x32,
4030 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x32,
4031 0xee, 0x05, 0xaf, 0x0f, 0x04, 0x01, 0x00, 0x80, 0x82, 0x4d, 0xf5, 0xbc,
4032 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x36, 0x32,
4033 0x00, 0x00, 0xb1, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x09, 0xc0, 0x09, 0x92,
4034 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x36, 0x32,
4035 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x80, 0x09, 0x32,
4036 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x87, 0xcd, 0x00, 0x37,
4037 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x60, 0xc0, 0x07, 0x80, 0x97, 0x32,
4038 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x8d, 0x2a, 0x3a,
4039 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x52, 0x81, 0x97, 0xb4,
4040 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x24, 0x90, 0x3a,
4041 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x0d, 0x90, 0x36,
4042 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, 0x40, 0x90, 0x3c,
4043 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x52, 0x82, 0x2a, 0x3a,
4044 0x00, 0x08, 0xb1, 0x0f, 0x02, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x2a, 0xbc,
4045 0x00, 0x00, 0xc2, 0x0f, 0x06, 0x00, 0x00, 0x80, 0x02, 0x40, 0x90, 0xbc,
4046 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x20, 0xb2,
4047 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x87, 0xcd, 0x00, 0x37,
4048 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xc0, 0x07, 0x80, 0x97, 0x32,
4049 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x5c, 0x52, 0x81, 0x2a, 0xb4,
4050 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x24, 0x90, 0x3a,
4051 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x0d, 0x90, 0x36,
4052 0x00, 0x00, 0xbb, 0x0f, 0x04, 0x01, 0x00, 0x04, 0x19, 0x40, 0x90, 0xbc,
4053 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x89, 0x0d, 0x90, 0x36,
4054 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0e, 0x80, 0x97, 0x32,
4055 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0x80, 0x97, 0xb2,
4056 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x89, 0x0d, 0x90, 0x36,
4057 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x89, 0x4d, 0x92, 0x3c,
4058 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x82, 0x4d, 0x92, 0x36,
4059 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x89, 0x4d, 0x92, 0x30,
4060 0x00, 0x00, 0x8a, 0x11, 0x80, 0x18, 0x9b, 0x81, 0xb2, 0xe4, 0x78, 0xb6,
4061 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x9b, 0x8d, 0xb7, 0xe4, 0x78, 0x34,
4062 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0e, 0x80, 0x97, 0x32,
4063 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x24, 0x90, 0x3a,
4064 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x59, 0x00, 0x90, 0x36,
4065 0x00, 0x00, 0xc4, 0x0f, 0x95, 0x01, 0x00, 0x80, 0x22, 0x24, 0x90, 0xba,
4066 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4067 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4068 0x00, 0x00, 0xec, 0x0f, 0x04, 0x01, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
4069 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x09, 0xc0, 0x29, 0x32,
4070 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xb2, 0x45, 0x28, 0x30,
4071 0x00, 0x00, 0xdd, 0x0f, 0x86, 0x01, 0x00, 0x08, 0x09, 0x80, 0x2f, 0xb2,
4072 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x09, 0x40, 0x81, 0x32,
4073 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x32,
4074 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x02, 0x00, 0x00, 0x32,
4075 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x02, 0x39,
4076 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x80, 0x92, 0x32,
4077 0x00, 0x00, 0xdc, 0x0f, 0x04, 0x07, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0xbc,
4078 0x00, 0x00, 0xe7, 0x0f, 0xc3, 0x07, 0x01, 0xec, 0xb6, 0xe4, 0x6e, 0x9a,
4079 0x00, 0x00, 0xe7, 0x0f, 0x00, 0x06, 0x01, 0xec, 0xb6, 0xe4, 0x6e, 0x9a,
4080 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x52, 0x80, 0x90, 0xb6,
4081 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x09, 0x05, 0x80, 0x30,
4082 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x02, 0x00, 0x00, 0x32,
4083 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x02, 0x00, 0x00, 0x32,
4084 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x02, 0x39,
4085 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x80, 0x92, 0x32,
4086 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xf2, 0xc1, 0x92, 0xb6,
4087 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xfa, 0x92, 0xbc,
4088 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xfa, 0x92, 0xbc,
4089 0x44, 0x00, 0x2c, 0x10, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x8d, 0x2f, 0xd2,
4090 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4091 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x92, 0xd2,
4092 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0x32,
4093 0x00, 0x00, 0xec, 0x0f, 0x04, 0x01, 0x00, 0x78, 0xd9, 0x01, 0x30, 0xb6,
4094 0x00, 0x00, 0xd4, 0x0f, 0x00, 0x00, 0x00, 0x9c, 0xb2, 0x45, 0x28, 0x90,
4095 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x22, 0x80, 0x97, 0x7c,
4096 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4097 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4098 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0xe8, 0xbc,
4099 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x02, 0xc0, 0xe8, 0x32,
4100 0x02, 0x00, 0xf1, 0x0f, 0xb0, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0xb9,
4101 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xab, 0xe4, 0xb0, 0x32,
4102 0x00, 0x00, 0xf6, 0x0f, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x4a, 0xd0, 0xb6,
4103 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x32,
4104 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4105 0x00, 0x00, 0xf9, 0x0f, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0xf8, 0xbc,
4106 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf8, 0x32,
4107 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x09, 0x00, 0x00, 0x52,
4108 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0xcd, 0x4a, 0xd0, 0x34,
4109 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x4a, 0xd0, 0xb6,
4110 0x00, 0x00, 0x00, 0x10, 0x04, 0x01, 0x00, 0x28, 0x09, 0x34, 0xb0, 0xba,
4111 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xc2, 0x4a, 0xd0, 0xb6,
4112 0x00, 0x00, 0xfd, 0x0f, 0xb0, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4113 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0xcd, 0x4a, 0xd0, 0x35,
4114 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x09, 0x00, 0x00, 0x52,
4115 0x00, 0x00, 0x00, 0x10, 0xb0, 0x00, 0x00, 0xa8, 0x22, 0x00, 0x2b, 0xb7,
4116 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x84, 0xc0, 0x37, 0xac, 0xb0, 0xb2,
4117 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x0c, 0x0b, 0x00, 0x00, 0x32,
4118 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x4d, 0xb0, 0x30,
4119 0x00, 0x00, 0x08, 0x10, 0x80, 0x00, 0x00, 0x80, 0x02, 0x40, 0xb0, 0xb6,
4120 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x12, 0x40, 0xb0, 0xb6,
4121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x69, 0x81, 0x97, 0x35,
4122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x0b, 0x00, 0x7c, 0x32,
4123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x25, 0x01, 0x32,
4124 0x00, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x2a, 0x3a,
4125 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0xb0, 0x32,
4126 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0xd0, 0x32,
4127 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0x54,
4128 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4129 0x00, 0x00, 0x0e, 0x10, 0xb0, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xb2,
4130 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xab, 0xe4, 0xb0, 0x32,
4131 0x00, 0x00, 0x13, 0x10, 0x80, 0x01, 0x00, 0x80, 0x02, 0x40, 0xd0, 0xb6,
4132 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x32,
4133 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4134 0x00, 0x00, 0x16, 0x10, 0x04, 0x00, 0x00, 0x80, 0x02, 0x00, 0xf8, 0xbc,
4135 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x80, 0x01, 0x00, 0xf8, 0x32,
4136 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x09, 0x00, 0x00, 0x52,
4137 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0x0d, 0x40, 0xd0, 0x34,
4138 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x02, 0x40, 0xd0, 0xb6,
4139 0x00, 0x00, 0x1d, 0x10, 0x04, 0x01, 0x00, 0x28, 0x09, 0x34, 0xb0, 0xba,
4140 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x02, 0x40, 0xd0, 0xb6,
4141 0x00, 0x00, 0x1a, 0x10, 0xb0, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4142 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x04, 0x0d, 0x40, 0xd0, 0x35,
4143 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x09, 0x00, 0x00, 0x52,
4144 0x00, 0x00, 0x1d, 0x10, 0xb0, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0xb2,
4145 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x84, 0xc0, 0x37, 0xac, 0xb0, 0xb2,
4146 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x0c, 0x0b, 0x00, 0x00, 0x32,
4147 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x4d, 0xb0, 0x30,
4148 0x00, 0x00, 0x25, 0x10, 0x80, 0x00, 0x00, 0x80, 0x02, 0x40, 0xb0, 0xb6,
4149 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x12, 0x40, 0xb0, 0xb6,
4150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x69, 0x81, 0x97, 0x35,
4151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x08, 0x0b, 0x00, 0x7c, 0x32,
4152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x25, 0x01, 0x32,
4153 0x00, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x2a, 0x3a,
4154 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0xb0, 0x32,
4155 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0xd0, 0x32,
4156 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0x54,
4157 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4158 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4159 0x00, 0x00, 0x00, 0x00, 0x1c, 0x41, 0x02, 0x80, 0x06, 0xc0, 0x92, 0x52,
4160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x92, 0x30,
4161 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
4162 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
4163 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x97, 0xd2,
4164 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x92, 0xb0,
4165 0x00, 0x00, 0x8a, 0x11, 0x0b, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x1f, 0xc0, 0xf5, 0x3a,
4167 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4168 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x92, 0xd2,
4169 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0xb0, 0x02, 0xc0, 0x6e, 0x32,
4170 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x08, 0x80, 0x36, 0x52,
4171 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x38, 0x80, 0x87, 0x35,
4173 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x80, 0x87, 0xb6,
4174 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3a,
4175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
4176 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x01, 0xe0, 0x16, 0x20, 0x6e, 0x3c,
4177 0x08, 0x00, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x78, 0xe9, 0xe5, 0x83, 0x39,
4178 0x18, 0x00, 0x8a, 0x11, 0x1f, 0x41, 0x02, 0x84, 0xe6, 0xa1, 0x97, 0xb9,
4179 0x00, 0x00, 0x43, 0x10, 0x36, 0x51, 0x01, 0xe8, 0x16, 0xe0, 0x83, 0xbc,
4180 0x00, 0x00, 0x43, 0x10, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
4182 0x00, 0x00, 0x45, 0x10, 0x38, 0x21, 0x01, 0xe0, 0x06, 0x40, 0x80, 0xb2,
4183 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0xe0, 0x06, 0x40, 0x80, 0x32,
4184 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0xe0, 0x06, 0x00, 0x00, 0x72,
4185 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4186 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4187 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x92, 0xd2,
4188 0x00, 0x00, 0x00, 0x00, 0xd5, 0x08, 0x00, 0x00, 0x07, 0x80, 0x92, 0x32,
4189 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0x32,
4190 0x00, 0x40, 0x00, 0x80, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, 0x37, 0x32,
4191 0x00, 0x00, 0x00, 0x00, 0xca, 0x41, 0x01, 0xe0, 0x06, 0x80, 0x92, 0x32,
4192 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x48, 0x02, 0xc0, 0x80, 0xb2,
4193 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0xe8, 0x01, 0x00, 0x74,
4194 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4195 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4196 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x62, 0x80, 0x2d, 0xbc,
4197 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x80, 0x92, 0x32,
4198 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0x32,
4199 0x00, 0x00, 0x00, 0x00, 0xca, 0x3d, 0x00, 0x0c, 0x07, 0x80, 0x83, 0x32,
4200 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x48, 0x02, 0xc0, 0x80, 0x72,
4201 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4202 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4203 0x00, 0x00, 0x00, 0x00, 0x04, 0x57, 0x01, 0x80, 0x02, 0xc0, 0x6e, 0x7c,
4204 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x01, 0xec, 0x06, 0x80, 0x92, 0x72,
4205 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4206 0x00, 0x00, 0xd1, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x38, 0xf2,
4207 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4208 0x10, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x19, 0xa0, 0x2c, 0xd9,
4209 0x00, 0x00, 0x60, 0x10, 0x9d, 0x11, 0x02, 0x0c, 0x09, 0x00, 0x6e, 0xb2,
4210 0x00, 0x00, 0x61, 0x10, 0x00, 0xf0, 0x01, 0x1c, 0x09, 0x00, 0x6e, 0x92,
4211 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x1c, 0x09, 0x00, 0x6e, 0x32,
4212 0x00, 0x00, 0x63, 0x10, 0x2c, 0xcd, 0x01, 0x18, 0x09, 0x80, 0x6e, 0xb2,
4213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc9, 0xc1, 0x90, 0x34,
4214 0x00, 0x00, 0x67, 0x10, 0x3b, 0x29, 0x02, 0x04, 0x09, 0x80, 0x6e, 0xb2,
4215 0x00, 0x00, 0x8a, 0x11, 0x80, 0xd6, 0x01, 0x80, 0x52, 0xc0, 0x6e, 0xb6,
4216 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x01, 0xec, 0x56, 0xc0, 0x6e, 0x34,
4217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xb9, 0xc1, 0x90, 0x34,
4218 0x00, 0x00, 0x77, 0x10, 0x00, 0xa8, 0x01, 0x08, 0x09, 0x00, 0x6e, 0xf2,
4219 0x00, 0x00, 0x6b, 0x10, 0x9d, 0x01, 0x00, 0x80, 0x17, 0xe0, 0x90, 0xba,
4220 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x80, 0x07, 0xc0, 0x91, 0x32,
4221 0x00, 0x00, 0x6e, 0x10, 0x00, 0x38, 0x00, 0x80, 0x07, 0x00, 0xee, 0x92,
4222 0x00, 0x00, 0x6e, 0x10, 0x04, 0x01, 0x00, 0x80, 0x02, 0xc0, 0x91, 0xbc,
4223 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x01, 0xe0, 0x06, 0x00, 0xee, 0x32,
4224 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x01, 0xe0, 0x06, 0x00, 0x86, 0x32,
4225 0x00, 0x00, 0x71, 0x10, 0x39, 0x08, 0x00, 0x80, 0x07, 0xc0, 0x85, 0xb2,
4226 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xc2, 0x81, 0x2f, 0xb6,
4227 0x00, 0x00, 0x00, 0x00, 0xd9, 0xc9, 0x01, 0xe8, 0x06, 0x80, 0x91, 0x32,
4228 0x00, 0x00, 0x00, 0x00, 0xc8, 0x11, 0x00, 0x80, 0x07, 0x40, 0x90, 0x32,
4229 0x00, 0x00, 0x74, 0x10, 0x3b, 0x21, 0x00, 0x80, 0x07, 0x00, 0x86, 0xb2,
4230 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x60, 0x18, 0x00, 0x86, 0x3a,
4231 0x00, 0x00, 0x00, 0x00, 0x58, 0x78, 0x01, 0xe0, 0x16, 0x20, 0x86, 0x3a,
4232 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x80, 0x07, 0x00, 0x85, 0x72,
4233 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4234 0x00, 0x00, 0x7b, 0x10, 0x02, 0x0c, 0x02, 0x80, 0xa2, 0x9b, 0x90, 0xbc,
4235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x78, 0x29, 0x00, 0x6e, 0x36,
4236 0x00, 0x00, 0x7b, 0x10, 0x02, 0x00, 0x00, 0x80, 0xe2, 0xa5, 0x90, 0xbc,
4237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x32,
4238 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x01, 0x78, 0x49, 0x21, 0x6e, 0x3c,
4239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe9, 0xa5, 0x90, 0x3f,
4240 0x00, 0x00, 0x82, 0x10, 0x04, 0x20, 0x02, 0x08, 0x89, 0x9b, 0x90, 0xbe,
4241 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0x58, 0xb8, 0x9b, 0x90, 0x36,
4242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x49, 0xa1, 0x90, 0x3a,
4243 0x00, 0x00, 0x00, 0x00, 0x9f, 0x88, 0x01, 0x80, 0x82, 0x9b, 0x97, 0x7c,
4244 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x01, 0xe0, 0x06, 0x80, 0x97, 0x72,
4245 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x02, 0x58, 0xb8, 0x9b, 0x90, 0x76,
4246 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4247 0x00, 0x00, 0x8b, 0x10, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4248 0x00, 0x00, 0x89, 0x10, 0x12, 0x01, 0x00, 0x78, 0x09, 0xc0, 0x21, 0xb2,
4249 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
4250 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
4251 0x00, 0x00, 0x8b, 0x10, 0xca, 0x00, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x92,
4252 0x15, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x78, 0xe9, 0x65, 0x17, 0xb8,
4253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0x35,
4254 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0x2d, 0xbc,
4255 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
4256 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x6c, 0x88, 0x1c, 0x83, 0x3a,
4257 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x4c, 0x08, 0x00, 0x72, 0x32,
4258 0x00, 0x00, 0x8a, 0x11, 0x08, 0x50, 0x00, 0x18, 0xc8, 0x20, 0x72, 0xbc,
4259 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x80, 0x62, 0xa0, 0x82, 0x7c,
4260 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x00, 0x00, 0x14, 0x18, 0x40, 0x81, 0xbc,
4261 0x00, 0x00, 0x8a, 0x11, 0x02, 0x00, 0x00, 0x20, 0x88, 0x01, 0x82, 0xba,
4262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
4263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x06, 0x32,
4264 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x02, 0x00, 0x36, 0xbc,
4265 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x77, 0x4a, 0x09, 0x39,
4266 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0x82, 0x32,
4267 0x00, 0x00, 0x00, 0x00, 0xca, 0x19, 0x00, 0x00, 0x07, 0x40, 0x82, 0x32,
4268 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0xc1, 0x38, 0xb4,
4269 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xd8, 0x02, 0x40, 0x84, 0x72,
4270 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4271 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4272 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x85, 0xd2,
4273 0x00, 0x00, 0xa6, 0x10, 0x80, 0x01, 0x00, 0x80, 0xf2, 0xc1, 0x85, 0xb6,
4274 0x00, 0x00, 0xa2, 0x10, 0x1f, 0x40, 0x02, 0x84, 0xe6, 0x01, 0x00, 0xb4,
4275 0x00, 0x00, 0xa6, 0x10, 0x1d, 0x01, 0x00, 0xf8, 0x22, 0x81, 0x2f, 0xb4,
4276 0x00, 0x00, 0xa6, 0x10, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x95,
4277 0x00, 0x00, 0xa4, 0x10, 0x1d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4278 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x62, 0x81, 0x2f, 0x35,
4279 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x80, 0x02, 0x40, 0x68, 0x32,
4280 0x00, 0x00, 0x8a, 0x11, 0x1f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4281 0x00, 0x00, 0x73, 0x11, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc5, 0x85, 0xd0,
4282 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x68, 0x02, 0xc5, 0x85, 0xb0,
4283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x09, 0xc5, 0x85, 0x30,
4284 0x00, 0x00, 0x8a, 0x11, 0x02, 0x01, 0x00, 0x80, 0x82, 0xba, 0x97, 0xbc,
4285 0x00, 0x00, 0x8a, 0x11, 0x06, 0x01, 0x00, 0x80, 0x92, 0xba, 0x97, 0xbc,
4286 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x5c, 0x1f, 0xc0, 0xf5, 0x7a,
4287 0x01, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x8d, 0x2f, 0x70,
4288 0x29, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
4289 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x02, 0x81, 0x2f, 0x74,
4290 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4291 0x80, 0xa8, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0x2f, 0x70,
4292 0x00, 0x00, 0xb7, 0x10, 0x80, 0x01, 0x00, 0x80, 0xd2, 0x80, 0x2f, 0xb6,
4293 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x72, 0x81, 0x2f, 0xb6,
4294 0x00, 0x00, 0xba, 0x10, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
4295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x72, 0x81, 0x2f, 0x34,
4296 0x3b, 0x00, 0xba, 0x10, 0x12, 0x01, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
4297 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4298 0x00, 0x00, 0xba, 0x10, 0x80, 0x01, 0x00, 0x80, 0xf2, 0x80, 0x2f, 0xb6,
4299 0x30, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
4300 0x00, 0x00, 0xbd, 0x10, 0x00, 0x00, 0x00, 0xf8, 0x42, 0x81, 0x2f, 0x94,
4301 0x00, 0x00, 0xbd, 0x10, 0x80, 0x01, 0x00, 0x80, 0xb2, 0x80, 0x2f, 0xb6,
4302 0x34, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
4303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x42, 0x81, 0x2f, 0x34,
4304 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, 0x82, 0x8d, 0x2f, 0x70,
4305 0x02, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x8d, 0x2f, 0x70,
4306 0x3a, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x2c, 0x82, 0xcd, 0x2e, 0xb2,
4307 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x12, 0x81, 0x2f, 0x74,
4308 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4309 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4310 0x00, 0x00, 0x8a, 0x11, 0x04, 0x65, 0x01, 0x80, 0xa2, 0xdb, 0x2c, 0xbc,
4311 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x39,
4312 0xee, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0x71,
4313 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4314 0x00, 0x00, 0xcb, 0x10, 0x00, 0x00, 0x01, 0x38, 0x08, 0xc0, 0x6e, 0xf2,
4315 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x48, 0x02, 0xc0, 0x80, 0x72,
4316 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4317 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4318 0x00, 0x00, 0xcd, 0x10, 0x04, 0x38, 0x01, 0x78, 0x09, 0x00, 0x6e, 0xb2,
4319 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x32,
4320 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4321 0x00, 0x00, 0x00, 0x00, 0xca, 0x11, 0x00, 0x00, 0x07, 0x80, 0x82, 0x32,
4322 0x00, 0x00, 0xd1, 0x10, 0x2e, 0x19, 0x00, 0x00, 0x07, 0x80, 0x97, 0xb2,
4323 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe9, 0x81, 0x92, 0x34,
4324 0x00, 0x00, 0xd5, 0x10, 0x27, 0x31, 0x00, 0x00, 0x07, 0xc0, 0x2c, 0xb2,
4325 0x00, 0x00, 0x00, 0x00, 0xd5, 0x08, 0x00, 0x00, 0x07, 0x00, 0x87, 0x32,
4326 0x00, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x28, 0xe9, 0x80, 0x92, 0x34,
4327 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x32,
4328 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0xe7, 0xa0, 0x92, 0x79,
4329 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4330 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4331 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x40, 0x90, 0xd2,
4332 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x44, 0x12, 0xe4, 0x38, 0xb2,
4333 0x18, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x03, 0xf9,
4334 0x00, 0x00, 0xdf, 0x10, 0x04, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2d, 0xbc,
4335 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4336 0x00, 0x00, 0xda, 0x10, 0x67, 0x00, 0x00, 0xf8, 0xa2, 0x80, 0x2f, 0xb5,
4337 0x00, 0x00, 0x8a, 0x11, 0x12, 0x00, 0x00, 0xe8, 0x02, 0xc0, 0x21, 0xb2,
4338 0x00, 0x00, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0x72, 0x80, 0x2d, 0xbc,
4339 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xd8, 0x02, 0x40, 0x00, 0x72,
4340 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4341 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x79, 0x0a, 0x91, 0x39,
4342 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x39, 0x0b, 0x91, 0x39,
4343 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x59, 0x0a, 0x91, 0x39,
4344 0x09, 0x00, 0xe5, 0x10, 0xf1, 0x01, 0x00, 0x10, 0x69, 0x0b, 0x91, 0xb9,
4345 0x03, 0x00, 0x00, 0x00, 0x00, 0x24, 0x86, 0xa8, 0x82, 0x8d, 0x6c, 0x37,
4346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xe0, 0x07, 0x00, 0x91, 0x32,
4347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xe0, 0x07, 0x40, 0x91, 0x32,
4348 0x00, 0x80, 0xeb, 0x10, 0x02, 0x01, 0x00, 0x80, 0x82, 0x8d, 0x2a, 0xbc,
4349 0x00, 0x00, 0xec, 0x10, 0xe1, 0x24, 0x86, 0xc8, 0x06, 0x00, 0x00, 0x92,
4350 0x03, 0x00, 0x00, 0x00, 0xe1, 0x24, 0x86, 0xc8, 0x86, 0x8d, 0x2a, 0x36,
4351 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4352 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4353 0x00, 0x00, 0xf4, 0x10, 0x04, 0x30, 0x00, 0x80, 0x82, 0x9b, 0x81, 0xbc,
4354 0x00, 0x00, 0x8a, 0x11, 0x0d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4355 0x00, 0x00, 0x8a, 0x11, 0x9f, 0x3c, 0x00, 0x14, 0x28, 0x80, 0x6e, 0xbc,
4356 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4357 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x02, 0x80, 0x2f, 0x35,
4358 0x00, 0xa0, 0x8a, 0x11, 0x12, 0x00, 0x00, 0x40, 0xa2, 0x8d, 0x39, 0xb2,
4359 0x00, 0x00, 0xf6, 0x10, 0x80, 0x39, 0x00, 0x80, 0xe2, 0x80, 0x6e, 0xb6,
4360 0x00, 0x00, 0x8a, 0x11, 0x80, 0x38, 0x00, 0x80, 0xf2, 0x80, 0x6e, 0xb6,
4361 0x00, 0xe0, 0x8a, 0x11, 0x04, 0x01, 0x00, 0x80, 0xa2, 0x8d, 0x2f, 0xb0,
4362 0x00, 0xe0, 0xfd, 0x10, 0x04, 0x38, 0x00, 0x78, 0x89, 0x8d, 0x6e, 0xb0,
4363 0x10, 0x00, 0xfd, 0x10, 0x9f, 0x01, 0x00, 0xf8, 0xe2, 0xa5, 0x2f, 0xb9,
4364 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0xee, 0xbc,
4365 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0x82, 0x81, 0x2f, 0xb6,
4366 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x01, 0xec, 0x06, 0xc0, 0xee, 0x32,
4367 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
4368 0x00, 0x00, 0x00, 0x00, 0x04, 0x28, 0x00, 0x18, 0x09, 0x00, 0x6e, 0x72,
4369 0x00, 0x00, 0x4f, 0x0e, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xf0,
4370 0x00, 0x00, 0x2f, 0x0e, 0x00, 0xa8, 0x01, 0x20, 0x09, 0x00, 0x6e, 0x92,
4371 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4372 0x00, 0x00, 0x8a, 0x11, 0x04, 0xa9, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
4373 0x00, 0x00, 0x00, 0x00, 0x04, 0xb0, 0x00, 0x80, 0x82, 0x9b, 0x81, 0x7c,
4374 0x00, 0x00, 0x8a, 0x11, 0x0d, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4375 0x00, 0x00, 0x8a, 0x11, 0x9f, 0xbc, 0x00, 0x14, 0x28, 0x80, 0x6e, 0xbc,
4376 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4377 0x00, 0x00, 0x00, 0x00, 0xca, 0x01, 0x00, 0xf8, 0x42, 0x80, 0x2f, 0x35,
4378 0x08, 0xa0, 0x00, 0x00, 0x12, 0x01, 0x00, 0x40, 0xa2, 0xcd, 0x39, 0x72,
4379 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4380 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4381 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4382 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x80, 0x90, 0xd2,
4383 0x00, 0x00, 0x0f, 0x11, 0x33, 0xcd, 0x01, 0xbc, 0x08, 0x80, 0x6e, 0xb2,
4384 0x00, 0x00, 0x4e, 0x11, 0x00, 0x00, 0x00, 0x28, 0x29, 0x22, 0xee, 0xdc,
4385 0x00, 0x00, 0x14, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4386 0x00, 0x00, 0x14, 0x11, 0x04, 0xb8, 0x01, 0x28, 0x09, 0x00, 0x6e, 0xb2,
4387 0x00, 0x00, 0x14, 0x11, 0x9f, 0x71, 0x01, 0x80, 0xc2, 0x21, 0x6e, 0xbc,
4388 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xa9, 0x24, 0xee, 0x3c,
4389 0x00, 0x00, 0x4e, 0x11, 0x00, 0x00, 0x00, 0x28, 0x19, 0x80, 0x92, 0xdf,
4390 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
4391 0x00, 0x00, 0x28, 0x11, 0x06, 0x80, 0x01, 0x80, 0x82, 0x9b, 0x90, 0xbc,
4392 0x00, 0x00, 0x8a, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x90, 0xbc,
4393 0xee, 0x05, 0x20, 0x11, 0x06, 0x0c, 0x02, 0x80, 0x82, 0x8d, 0x6e, 0xbc,
4394 0x00, 0x90, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x37, 0x32,
4395 0x00, 0x00, 0x1a, 0x11, 0xb8, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4396 0x00, 0x00, 0x18, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x03, 0x80, 0x90, 0x32,
4398 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0xe0, 0x96, 0x21, 0x6e, 0x3c,
4399 0x00, 0x00, 0x00, 0x00, 0x61, 0x98, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x32,
4400 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
4401 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x78, 0x49, 0x40, 0x3c, 0x37,
4402 0x00, 0x00, 0x2d, 0x11, 0x00, 0x00, 0x00, 0x08, 0xe9, 0xa5, 0x90, 0x9a,
4403 0x60, 0x89, 0x20, 0x00, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x37, 0x32,
4404 0x00, 0x00, 0x23, 0x11, 0xb8, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0xb0,
4405 0x00, 0x00, 0x21, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4406 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x03, 0x80, 0x90, 0x32,
4407 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0xe0, 0x96, 0x21, 0x6e, 0x3c,
4408 0x00, 0x00, 0x00, 0x00, 0x61, 0x98, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x32,
4409 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
4410 0x00, 0x00, 0x2d, 0x11, 0xa8, 0x00, 0x00, 0x08, 0x19, 0x8f, 0x90, 0x9a,
4411 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x99, 0xa1, 0x89, 0x3e,
4412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe9, 0xa5, 0x90, 0x3a,
4413 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0xe0, 0x96, 0x21, 0x6e, 0x3c,
4414 0x00, 0x00, 0x00, 0x00, 0x61, 0x98, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x32,
4415 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x01, 0xec, 0x06, 0x00, 0x00, 0x32,
4416 0x00, 0x00, 0x30, 0x11, 0x06, 0x00, 0x00, 0x80, 0x72, 0xa2, 0x90, 0xbc,
4417 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x80, 0x01, 0xe0, 0x06, 0x00, 0x37, 0x32,
4418 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0xc0, 0x89, 0x32,
4419 0x00, 0x00, 0x36, 0x11, 0x04, 0x79, 0x01, 0x80, 0x82, 0x1b, 0x87, 0xbc,
4420 0x00, 0x00, 0x34, 0x11, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xbc,
4421 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xe0, 0x06, 0x80, 0x90, 0x32,
4422 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x92, 0x81, 0x2f, 0x75,
4423 0x00, 0x00, 0x3c, 0x11, 0x80, 0x00, 0x00, 0x80, 0x52, 0x81, 0x2f, 0xb6,
4424 0x00, 0x00, 0x3c, 0x11, 0xd5, 0x41, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x92,
4425 0x00, 0x00, 0x39, 0x11, 0x3c, 0x90, 0x01, 0xe0, 0x06, 0x80, 0x90, 0xb2,
4426 0x00, 0x00, 0x8a, 0x11, 0x80, 0x01, 0x00, 0x80, 0x92, 0x81, 0x2f, 0xb6,
4427 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x01, 0xe8, 0x06, 0xc0, 0x8b, 0x32,
4428 0x00, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x80, 0x02, 0x80, 0x2f, 0x72,
4429 0x00, 0x00, 0x3d, 0x11, 0x9f, 0x41, 0x01, 0x80, 0x82, 0x1b, 0x87, 0xbc,
4430 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
4431 0x00, 0x00, 0x00, 0x00, 0xd9, 0x90, 0x01, 0xe0, 0x06, 0x80, 0x90, 0x32,
4432 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x72, 0x80, 0x2f, 0x74,
4433 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4434 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4435 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0x40, 0x87, 0xd2,
4436 0x00, 0x00, 0x47, 0x11, 0x9f, 0xd8, 0x01, 0x80, 0x22, 0x21, 0x6e, 0xbc,
4437 0x00, 0x00, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
4438 0x00, 0x00, 0x47, 0x11, 0x9f, 0xe0, 0x01, 0x80, 0xc2, 0x21, 0x6e, 0xbc,
4439 0x00, 0x00, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
4440 0x00, 0x00, 0x47, 0x11, 0x9f, 0xb0, 0x01, 0x80, 0xd2, 0x21, 0x6e, 0xbc,
4441 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x70,
4442 0x00, 0x00, 0x49, 0x11, 0x06, 0x68, 0x01, 0x80, 0x82, 0x5b, 0x87, 0xbc,
4443 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x01, 0xe0, 0x06, 0x40, 0x87, 0x32,
4444 0x00, 0x00, 0x4b, 0x11, 0x37, 0xb0, 0x01, 0xe0, 0x06, 0x40, 0x87, 0xb2,
4445 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xd2, 0x80, 0x2f, 0x34,
4446 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x01, 0xe0, 0x06, 0x80, 0x84, 0x32,
4447 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x01, 0xe0, 0x06, 0x00, 0x87, 0x72,
4448 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4449 0x00, 0x00, 0x8a, 0x11, 0x08, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xbc,
4450 0x00, 0x00, 0x5b, 0x11, 0x04, 0xc1, 0x01, 0x84, 0x02, 0x00, 0x6e, 0xb2,
4451 0x05, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xe8, 0x86, 0x8d, 0x92, 0x37,
4452 0x03, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x01, 0xe8, 0x86, 0x8d, 0x92, 0x37,
4453 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x30,
4454 0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x2c, 0x89, 0x8d, 0x6e, 0x36,
4455 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x2c, 0xa9, 0xdb, 0x92, 0x3a,
4456 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x29, 0xc0, 0x92, 0x36,
4457 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x19, 0xfb, 0x92, 0x3f,
4458 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x29, 0x80, 0x92, 0x3a,
4459 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xa9, 0xe4, 0x92, 0x3f,
4460 0x00, 0x00, 0x00, 0x00, 0x6f, 0xcc, 0x01, 0xe8, 0x26, 0xfb, 0x92, 0x3e,
4461 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x52,
4462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x02, 0x80, 0x92, 0x32,
4463 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xe0, 0x06, 0x40, 0x28, 0x32,
4464 0x10, 0x00, 0x00, 0x00, 0x6f, 0xcc, 0x01, 0xe8, 0x86, 0xcd, 0x2a, 0x36,
4465 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x01, 0xe0, 0x06, 0x00, 0x00, 0x52,
4466 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4467 0x00, 0x00, 0x8a, 0x11, 0x04, 0xb0, 0x00, 0x80, 0x02, 0x00, 0x6e, 0xb2,
4468 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x01, 0xbc, 0x08, 0x00, 0x6e, 0x32,
4469 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0xbc, 0x88, 0xdb, 0x8b, 0x3e,
4470 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0xbc, 0x88, 0xdb, 0x8b, 0x3a,
4471 0x00, 0x00, 0x6a, 0x11, 0x9f, 0x00, 0x00, 0xbc, 0x88, 0xe1, 0x8b, 0xbc,
4472 0x00, 0x00, 0x6a, 0x11, 0x04, 0x0c, 0x02, 0x40, 0xa8, 0xdb, 0x8b, 0xbe,
4473 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x04, 0x88, 0x1b, 0x84, 0x3e,
4474 0x00, 0x00, 0x69, 0x11, 0x04, 0xb1, 0x00, 0x80, 0x82, 0x5b, 0x80, 0xbc,
4475 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0xc2, 0x80, 0x2f, 0x74,
4476 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x02, 0x80, 0xa2, 0x5b, 0x80, 0x7c,
4477 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0x32,
4478 0x00, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x14, 0x09, 0xc0, 0x8b, 0xd2,
4479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x12, 0x00, 0x2c, 0x3a,
4480 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4481 0x00, 0x00, 0x8a, 0x11, 0x04, 0x65, 0x01, 0x80, 0xa2, 0xdb, 0x2c, 0xbc,
4482 0x00, 0x00, 0x8a, 0x11, 0x80, 0x00, 0x00, 0x80, 0xa2, 0x80, 0x2f, 0xb6,
4483 0x08, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0xe8, 0x76, 0x20, 0x81, 0x39,
4484 0xee, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x82, 0x8d, 0x2f, 0x71,
4485 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4486 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xd9, 0x4a, 0x91, 0x39,
4487 0x39, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0xd2,
4488 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x45, 0x91, 0x30,
4489 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x89, 0x4d, 0x91, 0x36,
4490 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x89, 0xcd, 0x93, 0x3c,
4491 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x82, 0xcd, 0x93, 0x36,
4492 0x07, 0x00, 0x79, 0x11, 0xf3, 0x01, 0x00, 0x40, 0x89, 0xcd, 0x93, 0xb0,
4493 0x00, 0x00, 0x8a, 0x11, 0x80, 0x18, 0x9b, 0x81, 0x02, 0xe5, 0x78, 0xb6,
4494 0x00, 0x00, 0x00, 0x00, 0xe3, 0x18, 0x9b, 0x8d, 0x07, 0xe5, 0x78, 0x34,
4495 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4496 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4497 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xd9, 0x4a, 0x91, 0x39,
4498 0x3a, 0x00, 0xe2, 0x10, 0x00, 0x00, 0x00, 0x10, 0x09, 0x00, 0x36, 0xd2,
4499 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x09, 0x45, 0x91, 0x30,
4500 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x89, 0x4d, 0x91, 0x36,
4501 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x89, 0xcd, 0x93, 0x3c,
4502 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x82, 0xcd, 0x93, 0x36,
4503 0x07, 0x00, 0x84, 0x11, 0xf3, 0x01, 0x00, 0x40, 0x89, 0xcd, 0x93, 0xb0,
4504 0x00, 0x00, 0x8a, 0x11, 0x80, 0x19, 0x9b, 0x81, 0x02, 0xe5, 0x78, 0xb6,
4505 0x00, 0x00, 0x00, 0x00, 0xe3, 0x18, 0x9b, 0x8d, 0x07, 0xe5, 0x78, 0x35,
4506 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4507 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4508 0x00, 0x00, 0x8a, 0x11, 0x00, 0x00, 0x00, 0xb4, 0x0f, 0x40, 0xfb, 0x94,
4509 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x0f, 0x40, 0x2b, 0x32,
4510 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x0f, 0x00, 0x28, 0x32,
4511 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x0f, 0x00, 0x29, 0x32,
4512 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x0f, 0x40, 0x18, 0x32,
4513 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x36, 0x32,
4514 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x5f, 0xca, 0xf9, 0x35,
4515 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x03, 0xc0, 0xf9, 0x32,
4516 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x32,
4517 0x41, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
4518 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x00, 0x32,
4519 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
4520 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0f, 0x80, 0x2a, 0x32,
4521 0x4c, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4522 0x98, 0x11, 0x97, 0x12, 0x00, 0x00, 0x00, 0xb0, 0x0f, 0x00, 0x36, 0x92,
4523 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4524 0x00, 0x01, 0x84, 0x12, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x00, 0x36, 0xd2,
4525 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x80, 0x2a, 0x32,
4526 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4527 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x7e, 0x32,
4528 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0x00, 0x7e, 0x32,
4529 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x7e, 0x32,
4530 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x0f, 0x00, 0x7e, 0x32,
4531 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xc0, 0xfa, 0x32,
4532 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0xf9, 0x32,
4533 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xfa, 0x32,
4534 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0xfa, 0x32,
4535 0x00, 0x00, 0xac, 0x11, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0xfa, 0xd2,
4536 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0xfb, 0x32,
4537 0x01, 0x00, 0xcf, 0x11, 0x04, 0x01, 0x00, 0xb4, 0x8f, 0x4d, 0xfb, 0xb0,
4538 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xab, 0xcd, 0xb0, 0x32,
4539 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x5b, 0xca, 0xb0, 0x39,
4540 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x2b, 0xfe, 0xb0, 0x32,
4541 0x00, 0x00, 0xaa, 0x11, 0x12, 0x01, 0x00, 0x80, 0x02, 0x40, 0x20, 0xb2,
4542 0x00, 0x00, 0xbe, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4543 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x01, 0x32,
4544 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x07, 0x80, 0x3f, 0x52,
4545 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x8a, 0x02, 0x39,
4546 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x53, 0x0a, 0x16, 0x35,
4547 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x90, 0x32,
4548 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0x40, 0x90, 0x32,
4549 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0f, 0x80, 0x90, 0x32,
4550 0xa2, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x37, 0x32,
4551 0xb9, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x03, 0x00, 0x36, 0x32,
4552 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x83, 0x0d, 0x00, 0x34,
4553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x83, 0x0d, 0x00, 0x34,
4554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x53, 0x0a, 0x00, 0x34,
4555 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4556 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc0, 0xf9, 0x32,
4557 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0xfa, 0x32,
4558 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x40, 0xfa, 0x32,
4559 0x00, 0x00, 0xc9, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4560 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0x39,
4561 0x00, 0x00, 0xc0, 0x11, 0x80, 0x01, 0x00, 0x80, 0x12, 0x40, 0xb0, 0xb6,
4562 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3b, 0x40, 0xb0, 0x33,
4563 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xcd, 0x4a, 0xd0, 0x35,
4564 0x00, 0x00, 0xc4, 0x11, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x40, 0x90, 0x92,
4565 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0x39,
4566 0x00, 0x00, 0xc4, 0x11, 0x00, 0x00, 0x00, 0x04, 0x6b, 0x41, 0x90, 0x94,
4567 0x00, 0x00, 0xc4, 0x11, 0x12, 0x00, 0x00, 0x00, 0x09, 0x40, 0x20, 0xb2,
4568 0x00, 0x00, 0xc5, 0x11, 0x12, 0x00, 0x00, 0x04, 0x09, 0x40, 0x20, 0xb2,
4569 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0xe4, 0x16, 0x38,
4570 0x00, 0x00, 0xc9, 0x11, 0x9f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
4571 0x00, 0x00, 0xc8, 0x11, 0x12, 0x00, 0x00, 0x08, 0x09, 0x40, 0x20, 0xb2,
4572 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4573 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
4574 0x02, 0x00, 0xc4, 0x11, 0x04, 0x01, 0x00, 0xbc, 0x0f, 0x24, 0x17, 0xb8,
4575 0x06, 0x00, 0xc2, 0x11, 0x04, 0x00, 0x00, 0xbc, 0x0f, 0x64, 0x16, 0xb8,
4576 0x00, 0x00, 0xbd, 0x11, 0x04, 0x00, 0x00, 0x80, 0x22, 0xc0, 0xfb, 0xbc,
4577 0x20, 0x00, 0xc4, 0x11, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xfb, 0xbc,
4578 0x00, 0x00, 0xd7, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4579 0xd1, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x82, 0xcd, 0xf9, 0x3a,
4580 0x00, 0x00, 0xb7, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4581 0x00, 0x00, 0xf7, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4582 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4583 0x00, 0x00, 0xfc, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4584 0x00, 0x00, 0x04, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4585 0x00, 0x00, 0x5d, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4586 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, 0x32,
4587 0x40, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4588 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x80, 0x2a, 0x32,
4589 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x40, 0x90, 0x32,
4590 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x00, 0x32,
4591 0x00, 0x00, 0xde, 0x11, 0x9f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
4592 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x80, 0x90, 0x32,
4593 0x00, 0x00, 0xde, 0x11, 0x12, 0x00, 0x00, 0x40, 0xf2, 0x01, 0x00, 0xb4,
4594 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0x32,
4595 0x00, 0x00, 0xe0, 0x11, 0x12, 0x00, 0x00, 0x9c, 0x0f, 0xc0, 0x21, 0xb2,
4596 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x7e, 0x32,
4597 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0x00, 0x7e, 0x32,
4598 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x7e, 0x32,
4599 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0xfa, 0x52,
4600 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4601 0x4c, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4602 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x80, 0x2a, 0x32,
4603 0x00, 0x00, 0xad, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4604 0x00, 0x00, 0xb3, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4605 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcb, 0xc1, 0xb0, 0x34,
4606 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4607 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
4608 0x00, 0x00, 0xef, 0x0f, 0x00, 0x00, 0x00, 0x28, 0x09, 0xc0, 0xb0, 0xd2,
4609 0x00, 0x00, 0xeb, 0x11, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xb2,
4610 0x00, 0x00, 0xef, 0x11, 0x12, 0x00, 0x00, 0x9c, 0x0f, 0xc0, 0x21, 0xb2,
4611 0x02, 0x00, 0xf2, 0x11, 0x04, 0x01, 0x00, 0xb4, 0x8f, 0x4d, 0xfb, 0xb0,
4612 0x00, 0x00, 0xc4, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4613 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x93, 0x40, 0x01, 0x39,
4614 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x1f, 0x40, 0xfb, 0x35,
4615 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x03, 0x00, 0x36, 0x32,
4616 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x03, 0x00, 0x00, 0x34,
4617 0x00, 0x00, 0xeb, 0x11, 0x00, 0x00, 0x00, 0x0c, 0x8b, 0xc1, 0xb0, 0x94,
4618 0x00, 0x00, 0xbb, 0x12, 0x00, 0x08, 0x00, 0x00, 0x07, 0x40, 0xfa, 0x92,
4619 0x00, 0x00, 0xad, 0x12, 0x00, 0x08, 0x00, 0x00, 0x07, 0x40, 0xfa, 0xd2,
4620 0x00, 0x00, 0xf9, 0x11, 0x12, 0x00, 0x00, 0x50, 0xf2, 0x01, 0x00, 0xb4,
4621 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4622 0x00, 0x00, 0xbd, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4623 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x36, 0x32,
4624 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4625 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x32,
4626 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xb0, 0x32,
4627 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x12, 0x00, 0x2a, 0x3a,
4628 0x00, 0x00, 0xff, 0x11, 0x04, 0x01, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0xbc,
4629 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4630 0x00, 0x00, 0xba, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4631 0x00, 0x00, 0x0c, 0x12, 0x04, 0x01, 0x00, 0x80, 0x02, 0x40, 0xfa, 0xb2,
4632 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4633 0x00, 0x00, 0x0e, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4634 0x00, 0x00, 0x1b, 0x12, 0x00, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0xd2,
4635 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x3c, 0x32,
4636 0x00, 0x00, 0x08, 0x12, 0x8e, 0x01, 0x00, 0x80, 0x02, 0x40, 0x28, 0xb2,
4637 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x36, 0x32,
4638 0x00, 0x00, 0xf7, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4639 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x8f, 0x4d, 0xfa, 0x3a,
4640 0x00, 0x00, 0xf7, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4641 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x00, 0x32,
4642 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x00, 0x37, 0x32,
4643 0x00, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4644 0x08, 0x00, 0x10, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xf9, 0xbc,
4645 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x00, 0x32,
4646 0x0e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x00, 0x37, 0x32,
4647 0x00, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4648 0x0b, 0x00, 0x14, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xf9, 0xbc,
4649 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x36, 0x32,
4650 0x0f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x00, 0x37, 0x32,
4651 0x00, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4652 0x27, 0x00, 0x18, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xf9, 0xbc,
4653 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4654 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x00, 0x32,
4655 0x0f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x00, 0x37, 0x32,
4656 0x00, 0x00, 0x20, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4657 0x20, 0x00, 0x1d, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xf9, 0xbc,
4658 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4659 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x03, 0xc0, 0xf9, 0x32,
4660 0x0d, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x37, 0x32,
4661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0xc0, 0xfa, 0x32,
4662 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x3e, 0x32,
4663 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0x5a,
4664 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0xc0, 0xf9, 0x32,
4665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x3e, 0x32,
4666 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0x3a,
4667 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xac, 0x8f, 0xcd, 0xf9, 0x50,
4668 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x2b, 0x32,
4669 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x32,
4670 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x3e, 0x32,
4671 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x12, 0x00, 0x2b, 0x3a,
4672 0x0f, 0x00, 0x2b, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0x0d, 0x2b, 0xbc,
4673 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x3e, 0x32,
4674 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb0, 0x02, 0xc0, 0xf9, 0x52,
4675 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x3a, 0x32,
4676 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x3a, 0x32,
4677 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x3a, 0x32,
4678 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x3a, 0x32,
4679 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x2b, 0x32,
4680 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x32,
4681 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x3d, 0x32,
4682 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x3d, 0x32,
4683 0x00, 0x00, 0x36, 0x12, 0x84, 0x01, 0x00, 0xb0, 0x12, 0x00, 0x2b, 0xba,
4684 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xb0, 0x02, 0xc0, 0xf9, 0x52,
4685 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x00, 0x32,
4686 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x73, 0x3e, 0x00, 0x39,
4687 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x30, 0x32,
4688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0x3a,
4689 0x70, 0x00, 0x3b, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xf9, 0xbc,
4690 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, 0x32,
4691 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x30, 0x32,
4692 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x32,
4693 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x30, 0x32,
4694 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x00, 0x32,
4695 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0xc0, 0x29, 0x32,
4696 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0xc0, 0xf9, 0x32,
4697 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0f, 0xc0, 0x2c, 0x32,
4698 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0xfa, 0x32,
4699 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x73, 0x7e, 0xfa, 0x39,
4700 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x30, 0x32,
4701 0x00, 0x00, 0x44, 0x12, 0x85, 0x01, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0xba,
4702 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4703 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x37, 0x32,
4704 0x00, 0x00, 0x25, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4705 0x0e, 0x00, 0x53, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xfa, 0xbc,
4706 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x32,
4707 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x32,
4708 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x32,
4709 0x00, 0x00, 0x4d, 0x12, 0x00, 0x00, 0x00, 0x9c, 0x3f, 0xc0, 0xf9, 0x9a,
4710 0x1c, 0x00, 0x4d, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xfa, 0xbc,
4711 0x02, 0x00, 0x25, 0x12, 0x00, 0x00, 0x00, 0x9c, 0x8f, 0xcd, 0xf9, 0xda,
4712 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4713 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x37, 0x32,
4714 0x00, 0x00, 0x25, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4715 0x0e, 0x00, 0x5b, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xfa, 0xbc,
4716 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x32,
4717 0x00, 0x00, 0x57, 0x12, 0x00, 0x00, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0x9a,
4718 0x26, 0x00, 0x57, 0x12, 0x04, 0x01, 0x00, 0x80, 0x82, 0xcd, 0xfa, 0xbc,
4719 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4720 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x0f, 0x40, 0x29, 0x32,
4721 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4722 0x00, 0x00, 0x4c, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4723 0x00, 0x00, 0x56, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4724 0x00, 0x00, 0x29, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4725 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x18, 0x32,
4726 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0f, 0x00, 0x00, 0x32,
4727 0xa2, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x37, 0x32,
4728 0x6b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x03, 0x00, 0x36, 0x32,
4729 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x80, 0x2a, 0x32,
4730 0x00, 0x00, 0x6b, 0x12, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x29, 0xb2,
4731 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x83, 0x3e, 0x00, 0x34,
4732 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x83, 0x3e, 0x00, 0x34,
4733 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x53, 0x0a, 0x00, 0x34,
4734 0x00, 0x00, 0x6c, 0x12, 0x00, 0x00, 0x00, 0x88, 0x0f, 0x40, 0x2b, 0x92,
4735 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x0f, 0x00, 0x28, 0x32,
4736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x0f, 0x00, 0x29, 0x32,
4737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x0f, 0x80, 0x2a, 0x32,
4738 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0xc0, 0xf9, 0x32,
4739 0x71, 0x12, 0x97, 0x12, 0x00, 0x00, 0x00, 0xb0, 0x0f, 0x00, 0x36, 0x92,
4740 0x07, 0x00, 0x74, 0x12, 0x04, 0x00, 0x00, 0x80, 0x82, 0x4d, 0x29, 0xbc,
4741 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x1f, 0x00, 0xfa, 0x3a,
4742 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x80, 0x2a, 0x92,
4743 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x0f, 0x00, 0x36, 0x32,
4744 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x36, 0x32,
4745 0x00, 0x00, 0x84, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4746 0x1f, 0x00, 0x7a, 0x12, 0x04, 0x00, 0x00, 0x80, 0x82, 0xcd, 0x29, 0xbc,
4747 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x8f, 0xcd, 0xfa, 0x3a,
4748 0x00, 0x00, 0x76, 0x12, 0x00, 0x00, 0x00, 0x9c, 0x12, 0xc0, 0x29, 0x9a,
4749 0x00, 0x00, 0x3a, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4750 0x00, 0x00, 0x30, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4751 0x00, 0x00, 0x82, 0x12, 0x04, 0x00, 0x00, 0x80, 0x52, 0x8a, 0xfa, 0xbc,
4752 0xa2, 0x60, 0x03, 0x00, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x37, 0x32,
4753 0x82, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x03, 0x00, 0x36, 0x32,
4754 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xa3, 0x3e, 0x00, 0x34,
4755 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xa3, 0x3e, 0x00, 0x34,
4756 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x53, 0x0a, 0x00, 0x34,
4757 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x36, 0x32,
4758 0x00, 0x00, 0xf7, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4759 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x02, 0xc0, 0xfa, 0x32,
4760 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x36, 0x32,
4761 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x0f, 0x40, 0x2f, 0x32,
4762 0x00, 0x00, 0x8b, 0x12, 0x04, 0x00, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0xbc,
4763 0x00, 0x00, 0x8a, 0x12, 0x04, 0x00, 0x00, 0x80, 0x02, 0x40, 0x2f, 0xb2,
4764 0x00, 0x00, 0x87, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x2c, 0x92,
4765 0x00, 0x00, 0x87, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x36, 0x92,
4766 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x2c, 0x32,
4767 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x2c, 0x32,
4768 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x2c, 0x32,
4769 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x2d, 0x32,
4770 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x2d, 0x32,
4771 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x2d, 0x32,
4772 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x2d, 0x32,
4773 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0xfb, 0x32,
4774 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x2f, 0x32,
4775 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x73, 0x0a, 0x02, 0x39,
4776 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x07, 0x80, 0x3f, 0x52,
4777 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x03, 0x00, 0x36, 0x32,
4778 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0xf9, 0x32,
4779 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x28, 0x32,
4780 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0xf8, 0x32,
4781 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x0f, 0x00, 0x36, 0x32,
4782 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x0f, 0xc0, 0x2b, 0x32,
4783 0x00, 0x00, 0xa0, 0x12, 0x04, 0x00, 0x00, 0x9c, 0x1f, 0xc0, 0xf9, 0xbc,
4784 0x00, 0x00, 0x9f, 0x12, 0x04, 0x00, 0x00, 0x80, 0x02, 0xc0, 0x2b, 0xb2,
4785 0x00, 0x00, 0x9c, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x28, 0x92,
4786 0x00, 0x00, 0x9c, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x36, 0x92,
4787 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0xf9, 0x32,
4788 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x29, 0x32,
4789 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x29, 0x32,
4790 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x29, 0x32,
4791 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x2a, 0x32,
4792 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x2a, 0x32,
4793 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0xf9, 0x32,
4794 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0x2a, 0x32,
4795 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x2b, 0x32,
4796 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x40, 0x2b, 0x32,
4797 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0x80, 0x2b, 0x32,
4798 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x07, 0xc0, 0xfb, 0x32,
4799 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x02, 0x00, 0xfb, 0x32,
4800 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4801 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
4802 0x00, 0x00, 0xb1, 0x12, 0x9f, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
4803 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x07, 0x40, 0x90, 0x52,
4804 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x80, 0x90, 0x32,
4805 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x07, 0x40, 0x90, 0x52,
4806 0x00, 0x00, 0xb3, 0x12, 0x12, 0x00, 0x00, 0x48, 0xf2, 0x01, 0x00, 0xb4,
4807 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x90, 0x32,
4808 0x00, 0x00, 0xb5, 0x12, 0x12, 0x00, 0x00, 0x9c, 0x0f, 0xc0, 0x21, 0xb2,
4809 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x50,
4810 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x0f, 0x40, 0xfb, 0x35,
4811 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4812 0x4c, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x36, 0x32,
4813 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x80, 0x2a, 0x32,
4814 0x00, 0x00, 0xad, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4815 0x00, 0x00, 0xb3, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0xd0,
4816 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xcb, 0xc1, 0xb0, 0x34,
4817 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x32,
4818 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x02, 0x00, 0x00, 0x32,
4819 0x00, 0x00, 0xc4, 0x12, 0x00, 0x00, 0x00, 0x28, 0x09, 0xc0, 0xb0, 0xd2,
4820 0x00, 0x00, 0xbe, 0x12, 0x04, 0x00, 0x00, 0x80, 0x02, 0x80, 0x92, 0xb2,
4821 0x00, 0x00, 0xc2, 0x12, 0x12, 0x00, 0x00, 0x9c, 0x0f, 0xc0, 0x21, 0xb2,
4822 0x00, 0x00, 0xc4, 0x11, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4823 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00, 0x32,
4824 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0x39,
4825 0x00, 0x00, 0xc8, 0x12, 0x04, 0x01, 0x00, 0x28, 0x09, 0x34, 0xb0, 0xba,
4826 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x09, 0x00, 0x00, 0x52,
4827 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x22, 0x00, 0x2b, 0x37,
4828 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xc0, 0x37, 0xac, 0xb0, 0x32,
4829 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0b, 0x00, 0x00, 0x32,
4830 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xa9, 0x4d, 0xb0, 0x30,
4831 0x00, 0x00, 0xd8, 0x12, 0x80, 0x00, 0x00, 0x80, 0x02, 0x40, 0xb0, 0xb6,
4832 0x00, 0x00, 0xcd, 0x12, 0x12, 0x00, 0x00, 0x00, 0x09, 0x40, 0x20, 0xb2,
4833 0x00, 0x00, 0xce, 0x12, 0x12, 0x00, 0x00, 0x04, 0x09, 0x40, 0x20, 0xb2,
4834 0x00, 0x00, 0xd1, 0x12, 0x9f, 0x01, 0x00, 0x80, 0x02, 0x00, 0x90, 0xb2,
4835 0x00, 0x00, 0xd0, 0x12, 0x12, 0x00, 0x00, 0x08, 0x09, 0x40, 0x20, 0xb2,
4836 0x0d, 0x00, 0xcd, 0x12, 0x04, 0x01, 0x00, 0x80, 0x02, 0xe4, 0x16, 0xb8,
4837 0x02, 0x00, 0xcd, 0x12, 0x04, 0x01, 0x00, 0xbc, 0x0f, 0x24, 0x17, 0xb8,
4838 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x0f, 0x64, 0x16, 0x38,
4839 0x00, 0x00, 0xcd, 0x12, 0x04, 0x01, 0x00, 0x80, 0x22, 0xc0, 0xfb, 0xbc,
4840 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc2, 0x0a, 0x00, 0x39,
4841 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3b, 0x40, 0xb0, 0x33,
4842 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xcd, 0x4a, 0xd0, 0x35,
4843 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x25, 0x01, 0x32,
4844 0x00, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x87, 0x8d, 0x2a, 0x3a,
4845 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x00, 0xb0, 0x32,
4846 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0xd0, 0x32,
4847 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x48, 0xf2, 0xc1, 0x38, 0x54,
4848 0x00, 0x00, 0xdc, 0x12, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4849 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4850},
4851{
4852 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x90,
4853},
4854};
diff --git a/drivers/staging/sxg/sxg.c b/drivers/staging/sxg/sxg.c
new file mode 100644
index 00000000000..6ccbee875ab
--- /dev/null
+++ b/drivers/staging/sxg/sxg.c
@@ -0,0 +1,3624 @@
1/**************************************************************************
2 *
3 * Copyright (C) 2000-2008 Alacritech, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials provided
14 * with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * The views and conclusions contained in the software and documentation
30 * are those of the authors and should not be interpreted as representing
31 * official policies, either expressed or implied, of Alacritech, Inc.
32 *
33 **************************************************************************/
34
35/*
36 * FILENAME: sxg.c
37 *
38 * The SXG driver for Alacritech's 10Gbe products.
39 *
40 * NOTE: This is the standard, non-accelerated version of Alacritech's
41 * IS-NIC driver.
42 */
43
44#include <linux/kernel.h>
45#include <linux/string.h>
46#include <linux/errno.h>
47#include <linux/module.h>
48#include <linux/moduleparam.h>
49#include <linux/ioport.h>
50#include <linux/slab.h>
51#include <linux/interrupt.h>
52#include <linux/timer.h>
53#include <linux/pci.h>
54#include <linux/spinlock.h>
55#include <linux/init.h>
56#include <linux/netdevice.h>
57#include <linux/etherdevice.h>
58#include <linux/ethtool.h>
59#include <linux/skbuff.h>
60#include <linux/delay.h>
61#include <linux/types.h>
62#include <linux/dma-mapping.h>
63#include <linux/mii.h>
64
65#define SLIC_DUMP_ENABLED 0
66#define SLIC_GET_STATS_ENABLED 0
67#define LINUX_FREES_ADAPTER_RESOURCES 1
68#define SXG_OFFLOAD_IP_CHECKSUM 0
69#define SXG_POWER_MANAGEMENT_ENABLED 0
70#define VPCI 0
71#define DBG 1
72#define ATK_DEBUG 1
73
74#include "sxg_os.h"
75#include "sxghw.h"
76#include "sxghif.h"
77#include "sxg.h"
78#include "sxgdbg.h"
79
80#include "sxgphycode.h"
81#include "saharadbgdownload.h"
82
83static int sxg_allocate_buffer_memory(p_adapter_t adapter, u32 Size,
84 SXG_BUFFER_TYPE BufferType);
85static void sxg_allocate_rcvblock_complete(p_adapter_t adapter, void *RcvBlock,
86 dma_addr_t PhysicalAddress,
87 u32 Length);
88static void sxg_allocate_sgl_buffer_complete(p_adapter_t adapter,
89 PSXG_SCATTER_GATHER SxgSgl,
90 dma_addr_t PhysicalAddress,
91 u32 Length);
92
93static void sxg_mcast_init_crc32(void);
94
95static int sxg_entry_open(p_net_device dev);
96static int sxg_entry_halt(p_net_device dev);
97static int sxg_ioctl(p_net_device dev, struct ifreq *rq, int cmd);
98static int sxg_send_packets(struct sk_buff *skb, p_net_device dev);
99static int sxg_transmit_packet(p_adapter_t adapter, struct sk_buff *skb);
100static void sxg_dumb_sgl(PSCATTER_GATHER_LIST pSgl, PSXG_SCATTER_GATHER SxgSgl);
101
102static void sxg_handle_interrupt(p_adapter_t adapter);
103static int sxg_process_isr(p_adapter_t adapter, u32 MessageId);
104static u32 sxg_process_event_queue(p_adapter_t adapter, u32 RssId);
105static void sxg_complete_slow_send(p_adapter_t adapter);
106static struct sk_buff *sxg_slow_receive(p_adapter_t adapter, PSXG_EVENT Event);
107static void sxg_process_rcv_error(p_adapter_t adapter, u32 ErrorStatus);
108static bool sxg_mac_filter(p_adapter_t adapter,
109 p_ether_header EtherHdr, ushort length);
110
111#if SLIC_GET_STATS_ENABLED
112static struct net_device_stats *sxg_get_stats(p_net_device dev);
113#endif
114
115static int sxg_mac_set_address(p_net_device dev, void *ptr);
116
117static void sxg_adapter_set_hwaddr(p_adapter_t adapter);
118
119static void sxg_unmap_mmio_space(p_adapter_t adapter);
120static void sxg_mcast_set_mask(p_adapter_t adapter);
121
122static int sxg_initialize_adapter(p_adapter_t adapter);
123static void sxg_stock_rcv_buffers(p_adapter_t adapter);
124static void sxg_complete_descriptor_blocks(p_adapter_t adapter,
125 unsigned char Index);
126static int sxg_initialize_link(p_adapter_t adapter);
127static int sxg_phy_init(p_adapter_t adapter);
128static void sxg_link_event(p_adapter_t adapter);
129static SXG_LINK_STATE sxg_get_link_state(p_adapter_t adapter);
130static void sxg_link_state(p_adapter_t adapter, SXG_LINK_STATE LinkState);
131static int sxg_write_mdio_reg(p_adapter_t adapter,
132 u32 DevAddr, u32 RegAddr, u32 Value);
133static int sxg_read_mdio_reg(p_adapter_t adapter,
134 u32 DevAddr, u32 RegAddr, u32 *pValue);
135static void sxg_mcast_set_list(p_net_device dev);
136
137#define XXXTODO 0
138
139static unsigned int sxg_first_init = 1;
140static char *sxg_banner =
141 "Alacritech SLIC Technology(tm) Server and Storage 10Gbe Accelerator (Non-Accelerated)\n";
142
143static int sxg_debug = 1;
144static int debug = -1;
145static p_net_device head_netdevice = NULL;
146
147static sxgbase_driver_t sxg_global = {
148 .dynamic_intagg = 1,
149};
150static int intagg_delay = 100;
151static u32 dynamic_intagg = 0;
152
153#define DRV_NAME "sxg"
154#define DRV_VERSION "1.0.1"
155#define DRV_AUTHOR "Alacritech, Inc. Engineering"
156#define DRV_DESCRIPTION "Alacritech SLIC Techonology(tm) Non-Accelerated 10Gbe Driver"
157#define DRV_COPYRIGHT "Copyright 2000-2008 Alacritech, Inc. All rights reserved."
158
159MODULE_AUTHOR(DRV_AUTHOR);
160MODULE_DESCRIPTION(DRV_DESCRIPTION);
161MODULE_LICENSE("GPL");
162
163module_param(dynamic_intagg, int, 0);
164MODULE_PARM_DESC(dynamic_intagg, "Dynamic Interrupt Aggregation Setting");
165module_param(intagg_delay, int, 0);
166MODULE_PARM_DESC(intagg_delay, "uSec Interrupt Aggregation Delay");
167
168static struct pci_device_id sxg_pci_tbl[] __devinitdata = {
169 {PCI_DEVICE(SXG_VENDOR_ID, SXG_DEVICE_ID)},
170 {0,}
171};
172
173MODULE_DEVICE_TABLE(pci, sxg_pci_tbl);
174
175/***********************************************************************
176************************************************************************
177************************************************************************
178************************************************************************
179************************************************************************/
180
181static inline void sxg_reg32_write(void __iomem *reg, u32 value, bool flush)
182{
183 writel(value, reg);
184 if (flush)
185 mb();
186}
187
188static inline void sxg_reg64_write(p_adapter_t adapter, void __iomem *reg,
189 u64 value, u32 cpu)
190{
191 u32 value_high = (u32) (value >> 32);
192 u32 value_low = (u32) (value & 0x00000000FFFFFFFF);
193 unsigned long flags;
194
195 spin_lock_irqsave(&adapter->Bit64RegLock, flags);
196 writel(value_high, (void __iomem *)(&adapter->UcodeRegs[cpu].Upper));
197 writel(value_low, reg);
198 spin_unlock_irqrestore(&adapter->Bit64RegLock, flags);
199}
200
201static void sxg_init_driver(void)
202{
203 if (sxg_first_init) {
204 DBG_ERROR("sxg: %s sxg_first_init set jiffies[%lx]\n",
205 __FUNCTION__, jiffies);
206 sxg_first_init = 0;
207 spin_lock_init(&sxg_global.driver_lock);
208 }
209}
210
211static void sxg_dbg_macaddrs(p_adapter_t adapter)
212{
213 DBG_ERROR(" (%s) curr %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
214 adapter->netdev->name, adapter->currmacaddr[0],
215 adapter->currmacaddr[1], adapter->currmacaddr[2],
216 adapter->currmacaddr[3], adapter->currmacaddr[4],
217 adapter->currmacaddr[5]);
218 DBG_ERROR(" (%s) mac %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
219 adapter->netdev->name, adapter->macaddr[0],
220 adapter->macaddr[1], adapter->macaddr[2],
221 adapter->macaddr[3], adapter->macaddr[4],
222 adapter->macaddr[5]);
223 return;
224}
225
226// SXG Globals
227static SXG_DRIVER SxgDriver;
228
229#ifdef ATKDBG
230static sxg_trace_buffer_t LSxgTraceBuffer;
231#endif /* ATKDBG */
232static sxg_trace_buffer_t *SxgTraceBuffer = NULL;
233
234/*
235 * sxg_download_microcode
236 *
237 * Download Microcode to Sahara adapter
238 *
239 * Arguments -
240 * adapter - A pointer to our adapter structure
241 * UcodeSel - microcode file selection
242 *
243 * Return
244 * int
245 */
246static bool sxg_download_microcode(p_adapter_t adapter, SXG_UCODE_SEL UcodeSel)
247{
248 PSXG_HW_REGS HwRegs = adapter->HwRegs;
249 u32 Section;
250 u32 ThisSectionSize;
251 u32 *Instruction = NULL;
252 u32 BaseAddress, AddressOffset, Address;
253// u32 Failure;
254 u32 ValueRead;
255 u32 i;
256 u32 numSections = 0;
257 u32 sectionSize[16];
258 u32 sectionStart[16];
259
260 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DnldUcod",
261 adapter, 0, 0, 0);
262 DBG_ERROR("sxg: %s ENTER\n", __FUNCTION__);
263
264 switch (UcodeSel) {
265 case SXG_UCODE_SAHARA: // Sahara operational ucode
266 numSections = SNumSections;
267 for (i = 0; i < numSections; i++) {
268 sectionSize[i] = SSectionSize[i];
269 sectionStart[i] = SSectionStart[i];
270 }
271 break;
272 default:
273 printk(KERN_ERR KBUILD_MODNAME
274 ": Woah, big error with the microcode!\n");
275 break;
276 }
277
278 DBG_ERROR("sxg: RESET THE CARD\n");
279 // First, reset the card
280 WRITE_REG(HwRegs->Reset, 0xDEAD, FLUSH);
281
282 // Download each section of the microcode as specified in
283 // its download file. The *download.c file is generated using
284 // the saharaobjtoc facility which converts the metastep .obj
285 // file to a .c file which contains a two dimentional array.
286 for (Section = 0; Section < numSections; Section++) {
287 DBG_ERROR("sxg: SECTION # %d\n", Section);
288 switch (UcodeSel) {
289 case SXG_UCODE_SAHARA:
290 Instruction = (u32 *) & SaharaUCode[Section][0];
291 break;
292 default:
293 ASSERT(0);
294 break;
295 }
296 BaseAddress = sectionStart[Section];
297 ThisSectionSize = sectionSize[Section] / 12; // Size in instructions
298 for (AddressOffset = 0; AddressOffset < ThisSectionSize;
299 AddressOffset++) {
300 Address = BaseAddress + AddressOffset;
301 ASSERT((Address & ~MICROCODE_ADDRESS_MASK) == 0);
302 // Write instruction bits 31 - 0
303 WRITE_REG(HwRegs->UcodeDataLow, *Instruction, FLUSH);
304 // Write instruction bits 63-32
305 WRITE_REG(HwRegs->UcodeDataMiddle, *(Instruction + 1),
306 FLUSH);
307 // Write instruction bits 95-64
308 WRITE_REG(HwRegs->UcodeDataHigh, *(Instruction + 2),
309 FLUSH);
310 // Write instruction address with the WRITE bit set
311 WRITE_REG(HwRegs->UcodeAddr,
312 (Address | MICROCODE_ADDRESS_WRITE), FLUSH);
313 // Sahara bug in the ucode download logic - the write to DataLow
314 // for the next instruction could get corrupted. To avoid this,
315 // write to DataLow again for this instruction (which may get
316 // corrupted, but it doesn't matter), then increment the address
317 // and write the data for the next instruction to DataLow. That
318 // write should succeed.
319 WRITE_REG(HwRegs->UcodeDataLow, *Instruction, TRUE);
320 // Advance 3 u32S to start of next instruction
321 Instruction += 3;
322 }
323 }
324 // Now repeat the entire operation reading the instruction back and
325 // checking for parity errors
326 for (Section = 0; Section < numSections; Section++) {
327 DBG_ERROR("sxg: check SECTION # %d\n", Section);
328 switch (UcodeSel) {
329 case SXG_UCODE_SAHARA:
330 Instruction = (u32 *) & SaharaUCode[Section][0];
331 break;
332 default:
333 ASSERT(0);
334 break;
335 }
336 BaseAddress = sectionStart[Section];
337 ThisSectionSize = sectionSize[Section] / 12; // Size in instructions
338 for (AddressOffset = 0; AddressOffset < ThisSectionSize;
339 AddressOffset++) {
340 Address = BaseAddress + AddressOffset;
341 // Write the address with the READ bit set
342 WRITE_REG(HwRegs->UcodeAddr,
343 (Address | MICROCODE_ADDRESS_READ), FLUSH);
344 // Read it back and check parity bit.
345 READ_REG(HwRegs->UcodeAddr, ValueRead);
346 if (ValueRead & MICROCODE_ADDRESS_PARITY) {
347 DBG_ERROR("sxg: %s PARITY ERROR\n",
348 __FUNCTION__);
349
350 return (FALSE); // Parity error
351 }
352 ASSERT((ValueRead & MICROCODE_ADDRESS_MASK) == Address);
353 // Read the instruction back and compare
354 READ_REG(HwRegs->UcodeDataLow, ValueRead);
355 if (ValueRead != *Instruction) {
356 DBG_ERROR("sxg: %s MISCOMPARE LOW\n",
357 __FUNCTION__);
358 return (FALSE); // Miscompare
359 }
360 READ_REG(HwRegs->UcodeDataMiddle, ValueRead);
361 if (ValueRead != *(Instruction + 1)) {
362 DBG_ERROR("sxg: %s MISCOMPARE MIDDLE\n",
363 __FUNCTION__);
364 return (FALSE); // Miscompare
365 }
366 READ_REG(HwRegs->UcodeDataHigh, ValueRead);
367 if (ValueRead != *(Instruction + 2)) {
368 DBG_ERROR("sxg: %s MISCOMPARE HIGH\n",
369 __FUNCTION__);
370 return (FALSE); // Miscompare
371 }
372 // Advance 3 u32S to start of next instruction
373 Instruction += 3;
374 }
375 }
376
377 // Everything OK, Go.
378 WRITE_REG(HwRegs->UcodeAddr, MICROCODE_ADDRESS_GO, FLUSH);
379
380 // Poll the CardUp register to wait for microcode to initialize
381 // Give up after 10,000 attemps (500ms).
382 for (i = 0; i < 10000; i++) {
383 udelay(50);
384 READ_REG(adapter->UcodeRegs[0].CardUp, ValueRead);
385 if (ValueRead == 0xCAFE) {
386 DBG_ERROR("sxg: %s BOO YA 0xCAFE\n", __FUNCTION__);
387 break;
388 }
389 }
390 if (i == 10000) {
391 DBG_ERROR("sxg: %s TIMEOUT\n", __FUNCTION__);
392
393 return (FALSE); // Timeout
394 }
395 // Now write the LoadSync register. This is used to
396 // synchronize with the card so it can scribble on the memory
397 // that contained 0xCAFE from the "CardUp" step above
398 if (UcodeSel == SXG_UCODE_SAHARA) {
399 WRITE_REG(adapter->UcodeRegs[0].LoadSync, 0, FLUSH);
400 }
401
402 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XDnldUcd",
403 adapter, 0, 0, 0);
404 DBG_ERROR("sxg: %s EXIT\n", __FUNCTION__);
405
406 return (TRUE);
407}
408
409/*
410 * sxg_allocate_resources - Allocate memory and locks
411 *
412 * Arguments -
413 * adapter - A pointer to our adapter structure
414 *
415 * Return
416 * int
417 */
418static int sxg_allocate_resources(p_adapter_t adapter)
419{
420 int status;
421 u32 i;
422 u32 RssIds, IsrCount;
423// PSXG_XMT_RING XmtRing;
424// PSXG_RCV_RING RcvRing;
425
426 DBG_ERROR("%s ENTER\n", __FUNCTION__);
427
428 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AllocRes",
429 adapter, 0, 0, 0);
430
431 // Windows tells us how many CPUs it plans to use for
432 // RSS
433 RssIds = SXG_RSS_CPU_COUNT(adapter);
434 IsrCount = adapter->MsiEnabled ? RssIds : 1;
435
436 DBG_ERROR("%s Setup the spinlocks\n", __FUNCTION__);
437
438 // Allocate spinlocks and initialize listheads first.
439 spin_lock_init(&adapter->RcvQLock);
440 spin_lock_init(&adapter->SglQLock);
441 spin_lock_init(&adapter->XmtZeroLock);
442 spin_lock_init(&adapter->Bit64RegLock);
443 spin_lock_init(&adapter->AdapterLock);
444
445 DBG_ERROR("%s Setup the lists\n", __FUNCTION__);
446
447 InitializeListHead(&adapter->FreeRcvBuffers);
448 InitializeListHead(&adapter->FreeRcvBlocks);
449 InitializeListHead(&adapter->AllRcvBlocks);
450 InitializeListHead(&adapter->FreeSglBuffers);
451 InitializeListHead(&adapter->AllSglBuffers);
452
453 // Mark these basic allocations done. This flags essentially
454 // tells the SxgFreeResources routine that it can grab spinlocks
455 // and reference listheads.
456 adapter->BasicAllocations = TRUE;
457 // Main allocation loop. Start with the maximum supported by
458 // the microcode and back off if memory allocation
459 // fails. If we hit a minimum, fail.
460
461 for (;;) {
462 DBG_ERROR("%s Allocate XmtRings size[%lx]\n", __FUNCTION__,
463 (sizeof(SXG_XMT_RING) * 1));
464
465 // Start with big items first - receive and transmit rings. At the moment
466 // I'm going to keep the ring size fixed and adjust the number of
467 // TCBs if we fail. Later we might consider reducing the ring size as well..
468 adapter->XmtRings = pci_alloc_consistent(adapter->pcidev,
469 sizeof(SXG_XMT_RING) *
470 1,
471 &adapter->PXmtRings);
472 DBG_ERROR("%s XmtRings[%p]\n", __FUNCTION__, adapter->XmtRings);
473
474 if (!adapter->XmtRings) {
475 goto per_tcb_allocation_failed;
476 }
477 memset(adapter->XmtRings, 0, sizeof(SXG_XMT_RING) * 1);
478
479 DBG_ERROR("%s Allocate RcvRings size[%lx]\n", __FUNCTION__,
480 (sizeof(SXG_RCV_RING) * 1));
481 adapter->RcvRings =
482 pci_alloc_consistent(adapter->pcidev,
483 sizeof(SXG_RCV_RING) * 1,
484 &adapter->PRcvRings);
485 DBG_ERROR("%s RcvRings[%p]\n", __FUNCTION__, adapter->RcvRings);
486 if (!adapter->RcvRings) {
487 goto per_tcb_allocation_failed;
488 }
489 memset(adapter->RcvRings, 0, sizeof(SXG_RCV_RING) * 1);
490 break;
491
492 per_tcb_allocation_failed:
493 // an allocation failed. Free any successful allocations.
494 if (adapter->XmtRings) {
495 pci_free_consistent(adapter->pcidev,
496 sizeof(SXG_XMT_RING) * 4096,
497 adapter->XmtRings,
498 adapter->PXmtRings);
499 adapter->XmtRings = NULL;
500 }
501 if (adapter->RcvRings) {
502 pci_free_consistent(adapter->pcidev,
503 sizeof(SXG_RCV_RING) * 4096,
504 adapter->RcvRings,
505 adapter->PRcvRings);
506 adapter->RcvRings = NULL;
507 }
508 // Loop around and try again....
509 }
510
511 DBG_ERROR("%s Initialize RCV ZERO and XMT ZERO rings\n", __FUNCTION__);
512 // Initialize rcv zero and xmt zero rings
513 SXG_INITIALIZE_RING(adapter->RcvRingZeroInfo, SXG_RCV_RING_SIZE);
514 SXG_INITIALIZE_RING(adapter->XmtRingZeroInfo, SXG_XMT_RING_SIZE);
515
516 // Sanity check receive data structure format
517 ASSERT((adapter->ReceiveBufferSize == SXG_RCV_DATA_BUFFER_SIZE) ||
518 (adapter->ReceiveBufferSize == SXG_RCV_JUMBO_BUFFER_SIZE));
519 ASSERT(sizeof(SXG_RCV_DESCRIPTOR_BLOCK) ==
520 SXG_RCV_DESCRIPTOR_BLOCK_SIZE);
521
522 // Allocate receive data buffers. We allocate a block of buffers and
523 // a corresponding descriptor block at once. See sxghw.h:SXG_RCV_BLOCK
524 for (i = 0; i < SXG_INITIAL_RCV_DATA_BUFFERS;
525 i += SXG_RCV_DESCRIPTORS_PER_BLOCK) {
526 sxg_allocate_buffer_memory(adapter,
527 SXG_RCV_BLOCK_SIZE(adapter->
528 ReceiveBufferSize),
529 SXG_BUFFER_TYPE_RCV);
530 }
531 // NBL resource allocation can fail in the 'AllocateComplete' routine, which
532 // doesn't return status. Make sure we got the number of buffers we requested
533 if (adapter->FreeRcvBufferCount < SXG_INITIAL_RCV_DATA_BUFFERS) {
534 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAResF6",
535 adapter, adapter->FreeRcvBufferCount, SXG_MAX_ENTRIES,
536 0);
537 return (STATUS_RESOURCES);
538 }
539
540 DBG_ERROR("%s Allocate EventRings size[%lx]\n", __FUNCTION__,
541 (sizeof(SXG_EVENT_RING) * RssIds));
542
543 // Allocate event queues.
544 adapter->EventRings = pci_alloc_consistent(adapter->pcidev,
545 sizeof(SXG_EVENT_RING) *
546 RssIds,
547 &adapter->PEventRings);
548
549 if (!adapter->EventRings) {
550 // Caller will call SxgFreeAdapter to clean up above allocations
551 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAResF8",
552 adapter, SXG_MAX_ENTRIES, 0, 0);
553 status = STATUS_RESOURCES;
554 goto per_tcb_allocation_failed;
555 }
556 memset(adapter->EventRings, 0, sizeof(SXG_EVENT_RING) * RssIds);
557
558 DBG_ERROR("%s Allocate ISR size[%x]\n", __FUNCTION__, IsrCount);
559 // Allocate ISR
560 adapter->Isr = pci_alloc_consistent(adapter->pcidev,
561 IsrCount, &adapter->PIsr);
562 if (!adapter->Isr) {
563 // Caller will call SxgFreeAdapter to clean up above allocations
564 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAResF9",
565 adapter, SXG_MAX_ENTRIES, 0, 0);
566 status = STATUS_RESOURCES;
567 goto per_tcb_allocation_failed;
568 }
569 memset(adapter->Isr, 0, sizeof(u32) * IsrCount);
570
571 DBG_ERROR("%s Allocate shared XMT ring zero index location size[%lx]\n",
572 __FUNCTION__, sizeof(u32));
573
574 // Allocate shared XMT ring zero index location
575 adapter->XmtRingZeroIndex = pci_alloc_consistent(adapter->pcidev,
576 sizeof(u32),
577 &adapter->
578 PXmtRingZeroIndex);
579 if (!adapter->XmtRingZeroIndex) {
580 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAResF10",
581 adapter, SXG_MAX_ENTRIES, 0, 0);
582 status = STATUS_RESOURCES;
583 goto per_tcb_allocation_failed;
584 }
585 memset(adapter->XmtRingZeroIndex, 0, sizeof(u32));
586
587 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAlcResS",
588 adapter, SXG_MAX_ENTRIES, 0, 0);
589
590 DBG_ERROR("%s EXIT\n", __FUNCTION__);
591 return (STATUS_SUCCESS);
592}
593
594/*
595 * sxg_config_pci -
596 *
597 * Set up PCI Configuration space
598 *
599 * Arguments -
600 * pcidev - A pointer to our adapter structure
601 *
602 */
603static void sxg_config_pci(struct pci_dev *pcidev)
604{
605 u16 pci_command;
606 u16 new_command;
607
608 pci_read_config_word(pcidev, PCI_COMMAND, &pci_command);
609 DBG_ERROR("sxg: %s PCI command[%4.4x]\n", __FUNCTION__, pci_command);
610 // Set the command register
611 new_command = pci_command | (PCI_COMMAND_MEMORY | // Memory Space Enable
612 PCI_COMMAND_MASTER | // Bus master enable
613 PCI_COMMAND_INVALIDATE | // Memory write and invalidate
614 PCI_COMMAND_PARITY | // Parity error response
615 PCI_COMMAND_SERR | // System ERR
616 PCI_COMMAND_FAST_BACK); // Fast back-to-back
617 if (pci_command != new_command) {
618 DBG_ERROR("%s -- Updating PCI COMMAND register %4.4x->%4.4x.\n",
619 __FUNCTION__, pci_command, new_command);
620 pci_write_config_word(pcidev, PCI_COMMAND, new_command);
621 }
622}
623
624static int sxg_entry_probe(struct pci_dev *pcidev,
625 const struct pci_device_id *pci_tbl_entry)
626{
627 static int did_version = 0;
628 int err;
629 struct net_device *netdev;
630 p_adapter_t adapter;
631 void __iomem *memmapped_ioaddr;
632 u32 status = 0;
633 ulong mmio_start = 0;
634 ulong mmio_len = 0;
635
636 DBG_ERROR("sxg: %s 2.6 VERSION ENTER jiffies[%lx] cpu %d\n",
637 __FUNCTION__, jiffies, smp_processor_id());
638
639 // Initialize trace buffer
640#ifdef ATKDBG
641 SxgTraceBuffer = &LSxgTraceBuffer;
642 SXG_TRACE_INIT(SxgTraceBuffer, TRACE_NOISY);
643#endif
644
645 sxg_global.dynamic_intagg = dynamic_intagg;
646
647 err = pci_enable_device(pcidev);
648
649 DBG_ERROR("Call pci_enable_device(%p) status[%x]\n", pcidev, err);
650 if (err) {
651 return err;
652 }
653
654 if (sxg_debug > 0 && did_version++ == 0) {
655 printk(KERN_INFO "%s\n", sxg_banner);
656 printk(KERN_INFO "%s\n", DRV_VERSION);
657 }
658
659 if (!(err = pci_set_dma_mask(pcidev, DMA_64BIT_MASK))) {
660 DBG_ERROR("pci_set_dma_mask(DMA_64BIT_MASK) successful\n");
661 } else {
662 if ((err = pci_set_dma_mask(pcidev, DMA_32BIT_MASK))) {
663 DBG_ERROR
664 ("No usable DMA configuration, aborting err[%x]\n",
665 err);
666 return err;
667 }
668 DBG_ERROR("pci_set_dma_mask(DMA_32BIT_MASK) successful\n");
669 }
670
671 DBG_ERROR("Call pci_request_regions\n");
672
673 err = pci_request_regions(pcidev, DRV_NAME);
674 if (err) {
675 DBG_ERROR("pci_request_regions FAILED err[%x]\n", err);
676 return err;
677 }
678
679 DBG_ERROR("call pci_set_master\n");
680 pci_set_master(pcidev);
681
682 DBG_ERROR("call alloc_etherdev\n");
683 netdev = alloc_etherdev(sizeof(adapter_t));
684 if (!netdev) {
685 err = -ENOMEM;
686 goto err_out_exit_sxg_probe;
687 }
688 DBG_ERROR("alloc_etherdev for slic netdev[%p]\n", netdev);
689
690 SET_NETDEV_DEV(netdev, &pcidev->dev);
691
692 pci_set_drvdata(pcidev, netdev);
693 adapter = netdev_priv(netdev);
694 adapter->netdev = netdev;
695 adapter->pcidev = pcidev;
696
697 mmio_start = pci_resource_start(pcidev, 0);
698 mmio_len = pci_resource_len(pcidev, 0);
699
700 DBG_ERROR("sxg: call ioremap(mmio_start[%lx], mmio_len[%lx])\n",
701 mmio_start, mmio_len);
702
703 memmapped_ioaddr = ioremap(mmio_start, mmio_len);
704 DBG_ERROR("sxg: %s MEMMAPPED_IOADDR [%p]\n", __FUNCTION__,
705 memmapped_ioaddr);
706 if (!memmapped_ioaddr) {
707 DBG_ERROR("%s cannot remap MMIO region %lx @ %lx\n",
708 __FUNCTION__, mmio_len, mmio_start);
709 goto err_out_free_mmio_region;
710 }
711
712 DBG_ERROR
713 ("sxg: %s found Alacritech SXG PCI, MMIO at %p, start[%lx] len[%lx], IRQ %d.\n",
714 __func__, memmapped_ioaddr, mmio_start, mmio_len, pcidev->irq);
715
716 adapter->HwRegs = (void *)memmapped_ioaddr;
717 adapter->base_addr = memmapped_ioaddr;
718
719 mmio_start = pci_resource_start(pcidev, 2);
720 mmio_len = pci_resource_len(pcidev, 2);
721
722 DBG_ERROR("sxg: call ioremap(mmio_start[%lx], mmio_len[%lx])\n",
723 mmio_start, mmio_len);
724
725 memmapped_ioaddr = ioremap(mmio_start, mmio_len);
726 DBG_ERROR("sxg: %s MEMMAPPED_IOADDR [%p]\n", __func__,
727 memmapped_ioaddr);
728 if (!memmapped_ioaddr) {
729 DBG_ERROR("%s cannot remap MMIO region %lx @ %lx\n",
730 __FUNCTION__, mmio_len, mmio_start);
731 goto err_out_free_mmio_region;
732 }
733
734 DBG_ERROR("sxg: %s found Alacritech SXG PCI, MMIO at %p, "
735 "start[%lx] len[%lx], IRQ %d.\n", __func__,
736 memmapped_ioaddr, mmio_start, mmio_len, pcidev->irq);
737
738 adapter->UcodeRegs = (void *)memmapped_ioaddr;
739
740 adapter->State = SXG_STATE_INITIALIZING;
741 // Maintain a list of all adapters anchored by
742 // the global SxgDriver structure.
743 adapter->Next = SxgDriver.Adapters;
744 SxgDriver.Adapters = adapter;
745 adapter->AdapterID = ++SxgDriver.AdapterID;
746
747 // Initialize CRC table used to determine multicast hash
748 sxg_mcast_init_crc32();
749
750 adapter->JumboEnabled = FALSE;
751 adapter->RssEnabled = FALSE;
752 if (adapter->JumboEnabled) {
753 adapter->FrameSize = JUMBOMAXFRAME;
754 adapter->ReceiveBufferSize = SXG_RCV_JUMBO_BUFFER_SIZE;
755 } else {
756 adapter->FrameSize = ETHERMAXFRAME;
757 adapter->ReceiveBufferSize = SXG_RCV_DATA_BUFFER_SIZE;
758 }
759
760// status = SXG_READ_EEPROM(adapter);
761// if (!status) {
762// goto sxg_init_bad;
763// }
764
765 DBG_ERROR("sxg: %s ENTER sxg_config_pci\n", __FUNCTION__);
766 sxg_config_pci(pcidev);
767 DBG_ERROR("sxg: %s EXIT sxg_config_pci\n", __FUNCTION__);
768
769 DBG_ERROR("sxg: %s ENTER sxg_init_driver\n", __FUNCTION__);
770 sxg_init_driver();
771 DBG_ERROR("sxg: %s EXIT sxg_init_driver\n", __FUNCTION__);
772
773 adapter->vendid = pci_tbl_entry->vendor;
774 adapter->devid = pci_tbl_entry->device;
775 adapter->subsysid = pci_tbl_entry->subdevice;
776 adapter->busnumber = pcidev->bus->number;
777 adapter->slotnumber = ((pcidev->devfn >> 3) & 0x1F);
778 adapter->functionnumber = (pcidev->devfn & 0x7);
779 adapter->memorylength = pci_resource_len(pcidev, 0);
780 adapter->irq = pcidev->irq;
781 adapter->next_netdevice = head_netdevice;
782 head_netdevice = netdev;
783// adapter->chipid = chip_idx;
784 adapter->port = 0; //adapter->functionnumber;
785 adapter->cardindex = adapter->port;
786
787 // Allocate memory and other resources
788 DBG_ERROR("sxg: %s ENTER sxg_allocate_resources\n", __FUNCTION__);
789 status = sxg_allocate_resources(adapter);
790 DBG_ERROR("sxg: %s EXIT sxg_allocate_resources status %x\n",
791 __FUNCTION__, status);
792 if (status != STATUS_SUCCESS) {
793 goto err_out_unmap;
794 }
795
796 DBG_ERROR("sxg: %s ENTER sxg_download_microcode\n", __FUNCTION__);
797 if (sxg_download_microcode(adapter, SXG_UCODE_SAHARA)) {
798 DBG_ERROR("sxg: %s ENTER sxg_adapter_set_hwaddr\n",
799 __FUNCTION__);
800 sxg_adapter_set_hwaddr(adapter);
801 } else {
802 adapter->state = ADAPT_FAIL;
803 adapter->linkstate = LINK_DOWN;
804 DBG_ERROR("sxg_download_microcode FAILED status[%x]\n", status);
805 }
806
807 netdev->base_addr = (unsigned long)adapter->base_addr;
808 netdev->irq = adapter->irq;
809 netdev->open = sxg_entry_open;
810 netdev->stop = sxg_entry_halt;
811 netdev->hard_start_xmit = sxg_send_packets;
812 netdev->do_ioctl = sxg_ioctl;
813#if XXXTODO
814 netdev->set_mac_address = sxg_mac_set_address;
815#if SLIC_GET_STATS_ENABLED
816 netdev->get_stats = sxg_get_stats;
817#endif
818 netdev->set_multicast_list = sxg_mcast_set_list;
819#endif
820
821 strcpy(netdev->name, "eth%d");
822// strcpy(netdev->name, pci_name(pcidev));
823 if ((err = register_netdev(netdev))) {
824 DBG_ERROR("Cannot register net device, aborting. %s\n",
825 netdev->name);
826 goto err_out_unmap;
827 }
828
829 DBG_ERROR
830 ("sxg: %s addr 0x%lx, irq %d, MAC addr %02X:%02X:%02X:%02X:%02X:%02X\n",
831 netdev->name, netdev->base_addr, pcidev->irq, netdev->dev_addr[0],
832 netdev->dev_addr[1], netdev->dev_addr[2], netdev->dev_addr[3],
833 netdev->dev_addr[4], netdev->dev_addr[5]);
834
835//sxg_init_bad:
836 ASSERT(status == FALSE);
837// sxg_free_adapter(adapter);
838
839 DBG_ERROR("sxg: %s EXIT status[%x] jiffies[%lx] cpu %d\n", __FUNCTION__,
840 status, jiffies, smp_processor_id());
841 return status;
842
843 err_out_unmap:
844 iounmap((void *)memmapped_ioaddr);
845
846 err_out_free_mmio_region:
847 release_mem_region(mmio_start, mmio_len);
848
849 err_out_exit_sxg_probe:
850
851 DBG_ERROR("%s EXIT jiffies[%lx] cpu %d\n", __FUNCTION__, jiffies,
852 smp_processor_id());
853
854 return -ENODEV;
855}
856
857/***********************************************************************
858 * LINE BASE Interrupt routines..
859 ***********************************************************************/
860/*
861 *
862 * sxg_disable_interrupt
863 *
864 * DisableInterrupt Handler
865 *
866 * Arguments:
867 *
868 * adapter: Our adapter structure
869 *
870 * Return Value:
871 * None.
872 */
873static void sxg_disable_interrupt(p_adapter_t adapter)
874{
875 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DisIntr",
876 adapter, adapter->InterruptsEnabled, 0, 0);
877 // For now, RSS is disabled with line based interrupts
878 ASSERT(adapter->RssEnabled == FALSE);
879 ASSERT(adapter->MsiEnabled == FALSE);
880 //
881 // Turn off interrupts by writing to the icr register.
882 //
883 WRITE_REG(adapter->UcodeRegs[0].Icr, SXG_ICR(0, SXG_ICR_DISABLE), TRUE);
884
885 adapter->InterruptsEnabled = 0;
886
887 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XDisIntr",
888 adapter, adapter->InterruptsEnabled, 0, 0);
889}
890
891/*
892 *
893 * sxg_enable_interrupt
894 *
895 * EnableInterrupt Handler
896 *
897 * Arguments:
898 *
899 * adapter: Our adapter structure
900 *
901 * Return Value:
902 * None.
903 */
904static void sxg_enable_interrupt(p_adapter_t adapter)
905{
906 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "EnIntr",
907 adapter, adapter->InterruptsEnabled, 0, 0);
908 // For now, RSS is disabled with line based interrupts
909 ASSERT(adapter->RssEnabled == FALSE);
910 ASSERT(adapter->MsiEnabled == FALSE);
911 //
912 // Turn on interrupts by writing to the icr register.
913 //
914 WRITE_REG(adapter->UcodeRegs[0].Icr, SXG_ICR(0, SXG_ICR_ENABLE), TRUE);
915
916 adapter->InterruptsEnabled = 1;
917
918 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XEnIntr",
919 adapter, 0, 0, 0);
920}
921
922/*
923 *
924 * sxg_isr - Process an line-based interrupt
925 *
926 * Arguments:
927 * Context - Our adapter structure
928 * QueueDefault - Output parameter to queue to default CPU
929 * TargetCpus - Output bitmap to schedule DPC's
930 *
931 * Return Value:
932 * TRUE if our interrupt
933 */
934static irqreturn_t sxg_isr(int irq, void *dev_id)
935{
936 p_net_device dev = (p_net_device) dev_id;
937 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
938// u32 CpuMask = 0, i;
939
940 adapter->Stats.NumInts++;
941 if (adapter->Isr[0] == 0) {
942 // The SLIC driver used to experience a number of spurious interrupts
943 // due to the delay associated with the masking of the interrupt
944 // (we'd bounce back in here). If we see that again with Sahara,
945 // add a READ_REG of the Icr register after the WRITE_REG below.
946 adapter->Stats.FalseInts++;
947 return IRQ_NONE;
948 }
949 //
950 // Move the Isr contents and clear the value in
951 // shared memory, and mask interrupts
952 //
953 adapter->IsrCopy[0] = adapter->Isr[0];
954 adapter->Isr[0] = 0;
955 WRITE_REG(adapter->UcodeRegs[0].Icr, SXG_ICR(0, SXG_ICR_MASK), TRUE);
956// ASSERT(adapter->IsrDpcsPending == 0);
957#if XXXTODO // RSS Stuff
958 // If RSS is enabled and the ISR specifies
959 // SXG_ISR_EVENT, then schedule DPC's
960 // based on event queues.
961 if (adapter->RssEnabled && (adapter->IsrCopy[0] & SXG_ISR_EVENT)) {
962 for (i = 0;
963 i < adapter->RssSystemInfo->ProcessorInfo.RssCpuCount;
964 i++) {
965 PSXG_EVENT_RING EventRing = &adapter->EventRings[i];
966 PSXG_EVENT Event =
967 &EventRing->Ring[adapter->NextEvent[i]];
968 unsigned char Cpu =
969 adapter->RssSystemInfo->RssIdToCpu[i];
970 if (Event->Status & EVENT_STATUS_VALID) {
971 adapter->IsrDpcsPending++;
972 CpuMask |= (1 << Cpu);
973 }
974 }
975 }
976 // Now, either schedule the CPUs specified by the CpuMask,
977 // or queue default
978 if (CpuMask) {
979 *QueueDefault = FALSE;
980 } else {
981 adapter->IsrDpcsPending = 1;
982 *QueueDefault = TRUE;
983 }
984 *TargetCpus = CpuMask;
985#endif
986 //
987 // There are no DPCs in Linux, so call the handler now
988 //
989 sxg_handle_interrupt(adapter);
990
991 return IRQ_HANDLED;
992}
993
994static void sxg_handle_interrupt(p_adapter_t adapter)
995{
996// unsigned char RssId = 0;
997 u32 NewIsr;
998
999 if (adapter->Stats.RcvNoBuffer < 5) {
1000 DBG_ERROR("Enter sxg_handle_interrupt ISR[%x]\n",
1001 adapter->IsrCopy[0]);
1002 }
1003 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "HndlIntr",
1004 adapter, adapter->IsrCopy[0], 0, 0);
1005 // For now, RSS is disabled with line based interrupts
1006 ASSERT(adapter->RssEnabled == FALSE);
1007 ASSERT(adapter->MsiEnabled == FALSE);
1008 ASSERT(adapter->IsrCopy[0]);
1009/////////////////////////////
1010
1011 // Always process the event queue.
1012 sxg_process_event_queue(adapter,
1013 (adapter->RssEnabled ? /*RssId */ 0 : 0));
1014
1015#if XXXTODO // RSS stuff
1016 if (--adapter->IsrDpcsPending) {
1017 // We're done.
1018 ASSERT(adapter->RssEnabled);
1019 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DPCsPend",
1020 adapter, 0, 0, 0);
1021 return;
1022 }
1023#endif
1024 //
1025 // Last (or only) DPC processes the ISR and clears the interrupt.
1026 //
1027 NewIsr = sxg_process_isr(adapter, 0);
1028 //
1029 // Reenable interrupts
1030 //
1031 adapter->IsrCopy[0] = 0;
1032 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "ClearIsr",
1033 adapter, NewIsr, 0, 0);
1034
1035 if (adapter->Stats.RcvNoBuffer < 5) {
1036 DBG_ERROR
1037 ("Exit sxg_handle_interrupt2 after enabling interrupt\n");
1038 }
1039
1040 WRITE_REG(adapter->UcodeRegs[0].Isr, NewIsr, TRUE);
1041
1042 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XHndlInt",
1043 adapter, 0, 0, 0);
1044}
1045
1046/*
1047 *
1048 * sxg_process_isr - Process an interrupt. Called from the line-based and
1049 * message based interrupt DPC routines
1050 *
1051 * Arguments:
1052 * adapter - Our adapter structure
1053 * Queue - The ISR that needs processing
1054 *
1055 * Return Value:
1056 * None
1057 */
1058static int sxg_process_isr(p_adapter_t adapter, u32 MessageId)
1059{
1060 u32 Isr = adapter->IsrCopy[MessageId];
1061 u32 NewIsr = 0;
1062
1063 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "ProcIsr",
1064 adapter, Isr, 0, 0);
1065
1066 // Error
1067 if (Isr & SXG_ISR_ERR) {
1068 if (Isr & SXG_ISR_PDQF) {
1069 adapter->Stats.PdqFull++;
1070 DBG_ERROR("%s: SXG_ISR_ERR PDQF!!\n", __FUNCTION__);
1071 }
1072 // No host buffer
1073 if (Isr & SXG_ISR_RMISS) {
1074 // There is a bunch of code in the SLIC driver which
1075 // attempts to process more receive events per DPC
1076 // if we start to fall behind. We'll probably
1077 // need to do something similar here, but hold
1078 // off for now. I don't want to make the code more
1079 // complicated than strictly needed.
1080 adapter->Stats.RcvNoBuffer++;
1081 if (adapter->Stats.RcvNoBuffer < 5) {
1082 DBG_ERROR("%s: SXG_ISR_ERR RMISS!!\n",
1083 __FUNCTION__);
1084 }
1085 }
1086 // Card crash
1087 if (Isr & SXG_ISR_DEAD) {
1088 // Set aside the crash info and set the adapter state to RESET
1089 adapter->CrashCpu =
1090 (unsigned char)((Isr & SXG_ISR_CPU) >>
1091 SXG_ISR_CPU_SHIFT);
1092 adapter->CrashLocation = (ushort) (Isr & SXG_ISR_CRASH);
1093 adapter->Dead = TRUE;
1094 DBG_ERROR("%s: ISR_DEAD %x, CPU: %d\n", __FUNCTION__,
1095 adapter->CrashLocation, adapter->CrashCpu);
1096 }
1097 // Event ring full
1098 if (Isr & SXG_ISR_ERFULL) {
1099 // Same issue as RMISS, really. This means the
1100 // host is falling behind the card. Need to increase
1101 // event ring size, process more events per interrupt,
1102 // and/or reduce/remove interrupt aggregation.
1103 adapter->Stats.EventRingFull++;
1104 DBG_ERROR("%s: SXG_ISR_ERR EVENT RING FULL!!\n",
1105 __FUNCTION__);
1106 }
1107 // Transmit drop - no DRAM buffers or XMT error
1108 if (Isr & SXG_ISR_XDROP) {
1109 adapter->Stats.XmtDrops++;
1110 adapter->Stats.XmtErrors++;
1111 DBG_ERROR("%s: SXG_ISR_ERR XDROP!!\n", __FUNCTION__);
1112 }
1113 }
1114 // Slowpath send completions
1115 if (Isr & SXG_ISR_SPSEND) {
1116 sxg_complete_slow_send(adapter);
1117 }
1118 // Dump
1119 if (Isr & SXG_ISR_UPC) {
1120 ASSERT(adapter->DumpCmdRunning); // Maybe change when debug is added..
1121 adapter->DumpCmdRunning = FALSE;
1122 }
1123 // Link event
1124 if (Isr & SXG_ISR_LINK) {
1125 sxg_link_event(adapter);
1126 }
1127 // Debug - breakpoint hit
1128 if (Isr & SXG_ISR_BREAK) {
1129 // At the moment AGDB isn't written to support interactive
1130 // debug sessions. When it is, this interrupt will be used
1131 // to signal AGDB that it has hit a breakpoint. For now, ASSERT.
1132 ASSERT(0);
1133 }
1134 // Heartbeat response
1135 if (Isr & SXG_ISR_PING) {
1136 adapter->PingOutstanding = FALSE;
1137 }
1138 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XProcIsr",
1139 adapter, Isr, NewIsr, 0);
1140
1141 return (NewIsr);
1142}
1143
1144/*
1145 *
1146 * sxg_process_event_queue - Process our event queue
1147 *
1148 * Arguments:
1149 * - adapter - Adapter structure
1150 * - RssId - The event queue requiring processing
1151 *
1152 * Return Value:
1153 * None.
1154 */
1155static u32 sxg_process_event_queue(p_adapter_t adapter, u32 RssId)
1156{
1157 PSXG_EVENT_RING EventRing = &adapter->EventRings[RssId];
1158 PSXG_EVENT Event = &EventRing->Ring[adapter->NextEvent[RssId]];
1159 u32 EventsProcessed = 0, Batches = 0;
1160 u32 num_skbs = 0;
1161 struct sk_buff *skb;
1162#ifdef LINUX_HANDLES_RCV_INDICATION_LISTS
1163 struct sk_buff *prev_skb = NULL;
1164 struct sk_buff *IndicationList[SXG_RCV_ARRAYSIZE];
1165 u32 Index;
1166 PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
1167#endif
1168 u32 ReturnStatus = 0;
1169
1170 ASSERT((adapter->State == SXG_STATE_RUNNING) ||
1171 (adapter->State == SXG_STATE_PAUSING) ||
1172 (adapter->State == SXG_STATE_PAUSED) ||
1173 (adapter->State == SXG_STATE_HALTING));
1174 // We may still have unprocessed events on the queue if
1175 // the card crashed. Don't process them.
1176 if (adapter->Dead) {
1177 return (0);
1178 }
1179 // In theory there should only be a single processor that
1180 // accesses this queue, and only at interrupt-DPC time. So
1181 // we shouldn't need a lock for any of this.
1182 while (Event->Status & EVENT_STATUS_VALID) {
1183 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "Event",
1184 Event, Event->Code, Event->Status,
1185 adapter->NextEvent);
1186 switch (Event->Code) {
1187 case EVENT_CODE_BUFFERS:
1188 ASSERT(!(Event->CommandIndex & 0xFF00)); // SXG_RING_INFO Head & Tail == unsigned char
1189 //
1190 sxg_complete_descriptor_blocks(adapter,
1191 Event->CommandIndex);
1192 //
1193 break;
1194 case EVENT_CODE_SLOWRCV:
1195 --adapter->RcvBuffersOnCard;
1196 if ((skb = sxg_slow_receive(adapter, Event))) {
1197 u32 rx_bytes;
1198#ifdef LINUX_HANDLES_RCV_INDICATION_LISTS
1199 // Add it to our indication list
1200 SXG_ADD_RCV_PACKET(adapter, skb, prev_skb,
1201 IndicationList, num_skbs);
1202 // In Linux, we just pass up each skb to the protocol above at this point,
1203 // there is no capability of an indication list.
1204#else
1205// CHECK skb_pull(skb, INIC_RCVBUF_HEADSIZE);
1206 rx_bytes = Event->Length; // (rcvbuf->length & IRHDDR_FLEN_MSK);
1207 skb_put(skb, rx_bytes);
1208 adapter->stats.rx_packets++;
1209 adapter->stats.rx_bytes += rx_bytes;
1210#if SXG_OFFLOAD_IP_CHECKSUM
1211 skb->ip_summed = CHECKSUM_UNNECESSARY;
1212#endif
1213 skb->dev = adapter->netdev;
1214 skb->protocol = eth_type_trans(skb, skb->dev);
1215 netif_rx(skb);
1216#endif
1217 }
1218 break;
1219 default:
1220 DBG_ERROR("%s: ERROR Invalid EventCode %d\n",
1221 __FUNCTION__, Event->Code);
1222// ASSERT(0);
1223 }
1224 // See if we need to restock card receive buffers.
1225 // There are two things to note here:
1226 // First - This test is not SMP safe. The
1227 // adapter->BuffersOnCard field is protected via atomic interlocked calls, but
1228 // we do not protect it with respect to these tests. The only way to do that
1229 // is with a lock, and I don't want to grab a lock every time we adjust the
1230 // BuffersOnCard count. Instead, we allow the buffer replenishment to be off
1231 // once in a while. The worst that can happen is the card is given one
1232 // more-or-less descriptor block than the arbitrary value we've chosen.
1233 // No big deal
1234 // In short DO NOT ADD A LOCK HERE, OR WHERE RcvBuffersOnCard is adjusted.
1235 // Second - We expect this test to rarely evaluate to true. We attempt to
1236 // refill descriptor blocks as they are returned to us
1237 // (sxg_complete_descriptor_blocks), so The only time this should evaluate
1238 // to true is when sxg_complete_descriptor_blocks failed to allocate
1239 // receive buffers.
1240 if (adapter->RcvBuffersOnCard < SXG_RCV_DATA_BUFFERS) {
1241 sxg_stock_rcv_buffers(adapter);
1242 }
1243 // It's more efficient to just set this to zero.
1244 // But clearing the top bit saves potential debug info...
1245 Event->Status &= ~EVENT_STATUS_VALID;
1246 // Advanct to the next event
1247 SXG_ADVANCE_INDEX(adapter->NextEvent[RssId], EVENT_RING_SIZE);
1248 Event = &EventRing->Ring[adapter->NextEvent[RssId]];
1249 EventsProcessed++;
1250 if (EventsProcessed == EVENT_RING_BATCH) {
1251 // Release a batch of events back to the card
1252 WRITE_REG(adapter->UcodeRegs[RssId].EventRelease,
1253 EVENT_RING_BATCH, FALSE);
1254 EventsProcessed = 0;
1255 // If we've processed our batch limit, break out of the
1256 // loop and return SXG_ISR_EVENT to arrange for us to
1257 // be called again
1258 if (Batches++ == EVENT_BATCH_LIMIT) {
1259 SXG_TRACE(TRACE_SXG, SxgTraceBuffer,
1260 TRACE_NOISY, "EvtLimit", Batches,
1261 adapter->NextEvent, 0, 0);
1262 ReturnStatus = SXG_ISR_EVENT;
1263 break;
1264 }
1265 }
1266 }
1267#ifdef LINUX_HANDLES_RCV_INDICATION_LISTS
1268 //
1269 // Indicate any received dumb-nic frames
1270 //
1271 SXG_INDICATE_PACKETS(adapter, IndicationList, num_skbs);
1272#endif
1273 //
1274 // Release events back to the card.
1275 //
1276 if (EventsProcessed) {
1277 WRITE_REG(adapter->UcodeRegs[RssId].EventRelease,
1278 EventsProcessed, FALSE);
1279 }
1280 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XPrcEvnt",
1281 Batches, EventsProcessed, adapter->NextEvent, num_skbs);
1282
1283 return (ReturnStatus);
1284}
1285
1286/*
1287 * sxg_complete_slow_send - Complete slowpath or dumb-nic sends
1288 *
1289 * Arguments -
1290 * adapter - A pointer to our adapter structure
1291
1292 * Return
1293 * None
1294 */
1295static void sxg_complete_slow_send(p_adapter_t adapter)
1296{
1297 PSXG_XMT_RING XmtRing = &adapter->XmtRings[0];
1298 PSXG_RING_INFO XmtRingInfo = &adapter->XmtRingZeroInfo;
1299 u32 *ContextType;
1300 PSXG_CMD XmtCmd;
1301
1302 // NOTE - This lock is dropped and regrabbed in this loop.
1303 // This means two different processors can both be running
1304 // through this loop. Be *very* careful.
1305 spin_lock(&adapter->XmtZeroLock);
1306 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "CmpSnds",
1307 adapter, XmtRingInfo->Head, XmtRingInfo->Tail, 0);
1308
1309 while (XmtRingInfo->Tail != *adapter->XmtRingZeroIndex) {
1310 // Locate the current Cmd (ring descriptor entry), and
1311 // associated SGL, and advance the tail
1312 SXG_RETURN_CMD(XmtRing, XmtRingInfo, XmtCmd, ContextType);
1313 ASSERT(ContextType);
1314 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "CmpSnd",
1315 XmtRingInfo->Head, XmtRingInfo->Tail, XmtCmd, 0);
1316 // Clear the SGL field.
1317 XmtCmd->Sgl = 0;
1318
1319 switch (*ContextType) {
1320 case SXG_SGL_DUMB:
1321 {
1322 struct sk_buff *skb;
1323 // Dumb-nic send. Command context is the dumb-nic SGL
1324 skb = (struct sk_buff *)ContextType;
1325 // Complete the send
1326 SXG_TRACE(TRACE_SXG, SxgTraceBuffer,
1327 TRACE_IMPORTANT, "DmSndCmp", skb, 0,
1328 0, 0);
1329 ASSERT(adapter->Stats.XmtQLen);
1330 adapter->Stats.XmtQLen--; // within XmtZeroLock
1331 adapter->Stats.XmtOk++;
1332 // Now drop the lock and complete the send back to
1333 // Microsoft. We need to drop the lock because
1334 // Microsoft can come back with a chimney send, which
1335 // results in a double trip in SxgTcpOuput
1336 spin_unlock(&adapter->XmtZeroLock);
1337 SXG_COMPLETE_DUMB_SEND(adapter, skb);
1338 // and reacquire..
1339 spin_lock(&adapter->XmtZeroLock);
1340 }
1341 break;
1342 default:
1343 ASSERT(0);
1344 }
1345 }
1346 spin_unlock(&adapter->XmtZeroLock);
1347 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "CmpSnd",
1348 adapter, XmtRingInfo->Head, XmtRingInfo->Tail, 0);
1349}
1350
1351/*
1352 * sxg_slow_receive
1353 *
1354 * Arguments -
1355 * adapter - A pointer to our adapter structure
1356 * Event - Receive event
1357 *
1358 * Return
1359 * skb
1360 */
1361static struct sk_buff *sxg_slow_receive(p_adapter_t adapter, PSXG_EVENT Event)
1362{
1363 PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
1364 struct sk_buff *Packet;
1365
1366 RcvDataBufferHdr = (PSXG_RCV_DATA_BUFFER_HDR) Event->HostHandle;
1367 ASSERT(RcvDataBufferHdr);
1368 ASSERT(RcvDataBufferHdr->State == SXG_BUFFER_ONCARD);
1369 ASSERT(SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr) ==
1370 RcvDataBufferHdr->VirtualAddress);
1371 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_IMPORTANT, "SlowRcv", Event,
1372 RcvDataBufferHdr, RcvDataBufferHdr->State,
1373 RcvDataBufferHdr->VirtualAddress);
1374 // Drop rcv frames in non-running state
1375 switch (adapter->State) {
1376 case SXG_STATE_RUNNING:
1377 break;
1378 case SXG_STATE_PAUSING:
1379 case SXG_STATE_PAUSED:
1380 case SXG_STATE_HALTING:
1381 goto drop;
1382 default:
1383 ASSERT(0);
1384 goto drop;
1385 }
1386
1387 // Change buffer state to UPSTREAM
1388 RcvDataBufferHdr->State = SXG_BUFFER_UPSTREAM;
1389 if (Event->Status & EVENT_STATUS_RCVERR) {
1390 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "RcvError",
1391 Event, Event->Status, Event->HostHandle, 0);
1392 // XXXTODO - Remove this print later
1393 DBG_ERROR("SXG: Receive error %x\n", *(u32 *)
1394 SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr));
1395 sxg_process_rcv_error(adapter, *(u32 *)
1396 SXG_RECEIVE_DATA_LOCATION
1397 (RcvDataBufferHdr));
1398 goto drop;
1399 }
1400#if XXXTODO // VLAN stuff
1401 // If there's a VLAN tag, extract it and validate it
1402 if (((p_ether_header) (SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr)))->
1403 EtherType == ETHERTYPE_VLAN) {
1404 if (SxgExtractVlanHeader(adapter, RcvDataBufferHdr, Event) !=
1405 STATUS_SUCCESS) {
1406 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY,
1407 "BadVlan", Event,
1408 SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr),
1409 Event->Length, 0);
1410 goto drop;
1411 }
1412 }
1413#endif
1414 //
1415 // Dumb-nic frame. See if it passes our mac filter and update stats
1416 //
1417 if (!sxg_mac_filter(adapter, (p_ether_header)
1418 SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr),
1419 Event->Length)) {
1420 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "RcvFiltr",
1421 Event, SXG_RECEIVE_DATA_LOCATION(RcvDataBufferHdr),
1422 Event->Length, 0);
1423 goto drop;
1424 }
1425
1426 Packet = RcvDataBufferHdr->SxgDumbRcvPacket;
1427
1428 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_IMPORTANT, "DumbRcv",
1429 RcvDataBufferHdr, Packet, Event->Length, 0);
1430 //
1431 // Lastly adjust the receive packet length.
1432 //
1433 SXG_ADJUST_RCV_PACKET(Packet, RcvDataBufferHdr, Event);
1434
1435 return (Packet);
1436
1437 drop:
1438 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DropRcv",
1439 RcvDataBufferHdr, Event->Length, 0, 0);
1440 adapter->Stats.RcvDiscards++;
1441 spin_lock(&adapter->RcvQLock);
1442 SXG_FREE_RCV_DATA_BUFFER(adapter, RcvDataBufferHdr);
1443 spin_unlock(&adapter->RcvQLock);
1444 return (NULL);
1445}
1446
1447/*
1448 * sxg_process_rcv_error - process receive error and update
1449 * stats
1450 *
1451 * Arguments:
1452 * adapter - Adapter structure
1453 * ErrorStatus - 4-byte receive error status
1454 *
1455 * Return Value:
1456 * None
1457 */
1458static void sxg_process_rcv_error(p_adapter_t adapter, u32 ErrorStatus)
1459{
1460 u32 Error;
1461
1462 adapter->Stats.RcvErrors++;
1463
1464 if (ErrorStatus & SXG_RCV_STATUS_TRANSPORT_ERROR) {
1465 Error = ErrorStatus & SXG_RCV_STATUS_TRANSPORT_MASK;
1466 switch (Error) {
1467 case SXG_RCV_STATUS_TRANSPORT_CSUM:
1468 adapter->Stats.TransportCsum++;
1469 break;
1470 case SXG_RCV_STATUS_TRANSPORT_UFLOW:
1471 adapter->Stats.TransportUflow++;
1472 break;
1473 case SXG_RCV_STATUS_TRANSPORT_HDRLEN:
1474 adapter->Stats.TransportHdrLen++;
1475 break;
1476 }
1477 }
1478 if (ErrorStatus & SXG_RCV_STATUS_NETWORK_ERROR) {
1479 Error = ErrorStatus & SXG_RCV_STATUS_NETWORK_MASK;
1480 switch (Error) {
1481 case SXG_RCV_STATUS_NETWORK_CSUM:
1482 adapter->Stats.NetworkCsum++;
1483 break;
1484 case SXG_RCV_STATUS_NETWORK_UFLOW:
1485 adapter->Stats.NetworkUflow++;
1486 break;
1487 case SXG_RCV_STATUS_NETWORK_HDRLEN:
1488 adapter->Stats.NetworkHdrLen++;
1489 break;
1490 }
1491 }
1492 if (ErrorStatus & SXG_RCV_STATUS_PARITY) {
1493 adapter->Stats.Parity++;
1494 }
1495 if (ErrorStatus & SXG_RCV_STATUS_LINK_ERROR) {
1496 Error = ErrorStatus & SXG_RCV_STATUS_LINK_MASK;
1497 switch (Error) {
1498 case SXG_RCV_STATUS_LINK_PARITY:
1499 adapter->Stats.LinkParity++;
1500 break;
1501 case SXG_RCV_STATUS_LINK_EARLY:
1502 adapter->Stats.LinkEarly++;
1503 break;
1504 case SXG_RCV_STATUS_LINK_BUFOFLOW:
1505 adapter->Stats.LinkBufOflow++;
1506 break;
1507 case SXG_RCV_STATUS_LINK_CODE:
1508 adapter->Stats.LinkCode++;
1509 break;
1510 case SXG_RCV_STATUS_LINK_DRIBBLE:
1511 adapter->Stats.LinkDribble++;
1512 break;
1513 case SXG_RCV_STATUS_LINK_CRC:
1514 adapter->Stats.LinkCrc++;
1515 break;
1516 case SXG_RCV_STATUS_LINK_OFLOW:
1517 adapter->Stats.LinkOflow++;
1518 break;
1519 case SXG_RCV_STATUS_LINK_UFLOW:
1520 adapter->Stats.LinkUflow++;
1521 break;
1522 }
1523 }
1524}
1525
1526/*
1527 * sxg_mac_filter
1528 *
1529 * Arguments:
1530 * adapter - Adapter structure
1531 * pether - Ethernet header
1532 * length - Frame length
1533 *
1534 * Return Value:
1535 * TRUE if the frame is to be allowed
1536 */
1537static bool sxg_mac_filter(p_adapter_t adapter, p_ether_header EtherHdr,
1538 ushort length)
1539{
1540 bool EqualAddr;
1541
1542 if (SXG_MULTICAST_PACKET(EtherHdr)) {
1543 if (SXG_BROADCAST_PACKET(EtherHdr)) {
1544 // broadcast
1545 if (adapter->MacFilter & MAC_BCAST) {
1546 adapter->Stats.DumbRcvBcastPkts++;
1547 adapter->Stats.DumbRcvBcastBytes += length;
1548 adapter->Stats.DumbRcvPkts++;
1549 adapter->Stats.DumbRcvBytes += length;
1550 return (TRUE);
1551 }
1552 } else {
1553 // multicast
1554 if (adapter->MacFilter & MAC_ALLMCAST) {
1555 adapter->Stats.DumbRcvMcastPkts++;
1556 adapter->Stats.DumbRcvMcastBytes += length;
1557 adapter->Stats.DumbRcvPkts++;
1558 adapter->Stats.DumbRcvBytes += length;
1559 return (TRUE);
1560 }
1561 if (adapter->MacFilter & MAC_MCAST) {
1562 PSXG_MULTICAST_ADDRESS MulticastAddrs =
1563 adapter->MulticastAddrs;
1564 while (MulticastAddrs) {
1565 ETHER_EQ_ADDR(MulticastAddrs->Address,
1566 EtherHdr->ether_dhost,
1567 EqualAddr);
1568 if (EqualAddr) {
1569 adapter->Stats.
1570 DumbRcvMcastPkts++;
1571 adapter->Stats.
1572 DumbRcvMcastBytes += length;
1573 adapter->Stats.DumbRcvPkts++;
1574 adapter->Stats.DumbRcvBytes +=
1575 length;
1576 return (TRUE);
1577 }
1578 MulticastAddrs = MulticastAddrs->Next;
1579 }
1580 }
1581 }
1582 } else if (adapter->MacFilter & MAC_DIRECTED) {
1583 // Not broadcast or multicast. Must be directed at us or
1584 // the card is in promiscuous mode. Either way, consider it
1585 // ours if MAC_DIRECTED is set
1586 adapter->Stats.DumbRcvUcastPkts++;
1587 adapter->Stats.DumbRcvUcastBytes += length;
1588 adapter->Stats.DumbRcvPkts++;
1589 adapter->Stats.DumbRcvBytes += length;
1590 return (TRUE);
1591 }
1592 if (adapter->MacFilter & MAC_PROMISC) {
1593 // Whatever it is, keep it.
1594 adapter->Stats.DumbRcvPkts++;
1595 adapter->Stats.DumbRcvBytes += length;
1596 return (TRUE);
1597 }
1598 adapter->Stats.RcvDiscards++;
1599 return (FALSE);
1600}
1601
1602static int sxg_register_interrupt(p_adapter_t adapter)
1603{
1604 if (!adapter->intrregistered) {
1605 int retval;
1606
1607 DBG_ERROR
1608 ("sxg: %s AllocAdaptRsrcs adapter[%p] dev->irq[%x] %x\n",
1609 __FUNCTION__, adapter, adapter->netdev->irq, NR_IRQS);
1610
1611 spin_unlock_irqrestore(&sxg_global.driver_lock,
1612 sxg_global.flags);
1613
1614 retval = request_irq(adapter->netdev->irq,
1615 &sxg_isr,
1616 IRQF_SHARED,
1617 adapter->netdev->name, adapter->netdev);
1618
1619 spin_lock_irqsave(&sxg_global.driver_lock, sxg_global.flags);
1620
1621 if (retval) {
1622 DBG_ERROR("sxg: request_irq (%s) FAILED [%x]\n",
1623 adapter->netdev->name, retval);
1624 return (retval);
1625 }
1626 adapter->intrregistered = 1;
1627 adapter->IntRegistered = TRUE;
1628 // Disable RSS with line-based interrupts
1629 adapter->MsiEnabled = FALSE;
1630 adapter->RssEnabled = FALSE;
1631 DBG_ERROR("sxg: %s AllocAdaptRsrcs adapter[%p] dev->irq[%x]\n",
1632 __FUNCTION__, adapter, adapter->netdev->irq);
1633 }
1634 return (STATUS_SUCCESS);
1635}
1636
1637static void sxg_deregister_interrupt(p_adapter_t adapter)
1638{
1639 DBG_ERROR("sxg: %s ENTER adapter[%p]\n", __FUNCTION__, adapter);
1640#if XXXTODO
1641 slic_init_cleanup(adapter);
1642#endif
1643 memset(&adapter->stats, 0, sizeof(struct net_device_stats));
1644 adapter->error_interrupts = 0;
1645 adapter->rcv_interrupts = 0;
1646 adapter->xmit_interrupts = 0;
1647 adapter->linkevent_interrupts = 0;
1648 adapter->upr_interrupts = 0;
1649 adapter->num_isrs = 0;
1650 adapter->xmit_completes = 0;
1651 adapter->rcv_broadcasts = 0;
1652 adapter->rcv_multicasts = 0;
1653 adapter->rcv_unicasts = 0;
1654 DBG_ERROR("sxg: %s EXIT\n", __FUNCTION__);
1655}
1656
1657/*
1658 * sxg_if_init
1659 *
1660 * Perform initialization of our slic interface.
1661 *
1662 */
1663static int sxg_if_init(p_adapter_t adapter)
1664{
1665 p_net_device dev = adapter->netdev;
1666 int status = 0;
1667
1668 DBG_ERROR("sxg: %s (%s) ENTER states[%d:%d:%d] flags[%x]\n",
1669 __FUNCTION__, adapter->netdev->name,
1670 adapter->queues_initialized, adapter->state,
1671 adapter->linkstate, dev->flags);
1672
1673 /* adapter should be down at this point */
1674 if (adapter->state != ADAPT_DOWN) {
1675 DBG_ERROR("sxg_if_init adapter->state != ADAPT_DOWN\n");
1676 return (-EIO);
1677 }
1678 ASSERT(adapter->linkstate == LINK_DOWN);
1679
1680 adapter->devflags_prev = dev->flags;
1681 adapter->macopts = MAC_DIRECTED;
1682 if (dev->flags) {
1683 DBG_ERROR("sxg: %s (%s) Set MAC options: ", __FUNCTION__,
1684 adapter->netdev->name);
1685 if (dev->flags & IFF_BROADCAST) {
1686 adapter->macopts |= MAC_BCAST;
1687 DBG_ERROR("BCAST ");
1688 }
1689 if (dev->flags & IFF_PROMISC) {
1690 adapter->macopts |= MAC_PROMISC;
1691 DBG_ERROR("PROMISC ");
1692 }
1693 if (dev->flags & IFF_ALLMULTI) {
1694 adapter->macopts |= MAC_ALLMCAST;
1695 DBG_ERROR("ALL_MCAST ");
1696 }
1697 if (dev->flags & IFF_MULTICAST) {
1698 adapter->macopts |= MAC_MCAST;
1699 DBG_ERROR("MCAST ");
1700 }
1701 DBG_ERROR("\n");
1702 }
1703 status = sxg_register_interrupt(adapter);
1704 if (status != STATUS_SUCCESS) {
1705 DBG_ERROR("sxg_if_init: sxg_register_interrupt FAILED %x\n",
1706 status);
1707 sxg_deregister_interrupt(adapter);
1708 return (status);
1709 }
1710
1711 adapter->state = ADAPT_UP;
1712
1713 /*
1714 * clear any pending events, then enable interrupts
1715 */
1716 DBG_ERROR("sxg: %s ENABLE interrupts(slic)\n", __FUNCTION__);
1717
1718 return (STATUS_SUCCESS);
1719}
1720
1721static int sxg_entry_open(p_net_device dev)
1722{
1723 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
1724 int status;
1725
1726 ASSERT(adapter);
1727 DBG_ERROR("sxg: %s adapter->activated[%d]\n", __FUNCTION__,
1728 adapter->activated);
1729 DBG_ERROR
1730 ("sxg: %s (%s): [jiffies[%lx] cpu %d] dev[%p] adapt[%p] port[%d]\n",
1731 __FUNCTION__, adapter->netdev->name, jiffies, smp_processor_id(),
1732 adapter->netdev, adapter, adapter->port);
1733
1734 netif_stop_queue(adapter->netdev);
1735
1736 spin_lock_irqsave(&sxg_global.driver_lock, sxg_global.flags);
1737 if (!adapter->activated) {
1738 sxg_global.num_sxg_ports_active++;
1739 adapter->activated = 1;
1740 }
1741 // Initialize the adapter
1742 DBG_ERROR("sxg: %s ENTER sxg_initialize_adapter\n", __FUNCTION__);
1743 status = sxg_initialize_adapter(adapter);
1744 DBG_ERROR("sxg: %s EXIT sxg_initialize_adapter status[%x]\n",
1745 __FUNCTION__, status);
1746
1747 if (status == STATUS_SUCCESS) {
1748 DBG_ERROR("sxg: %s ENTER sxg_if_init\n", __FUNCTION__);
1749 status = sxg_if_init(adapter);
1750 DBG_ERROR("sxg: %s EXIT sxg_if_init status[%x]\n", __FUNCTION__,
1751 status);
1752 }
1753
1754 if (status != STATUS_SUCCESS) {
1755 if (adapter->activated) {
1756 sxg_global.num_sxg_ports_active--;
1757 adapter->activated = 0;
1758 }
1759 spin_unlock_irqrestore(&sxg_global.driver_lock,
1760 sxg_global.flags);
1761 return (status);
1762 }
1763 DBG_ERROR("sxg: %s ENABLE ALL INTERRUPTS\n", __FUNCTION__);
1764
1765 // Enable interrupts
1766 SXG_ENABLE_ALL_INTERRUPTS(adapter);
1767
1768 DBG_ERROR("sxg: %s EXIT\n", __FUNCTION__);
1769
1770 spin_unlock_irqrestore(&sxg_global.driver_lock, sxg_global.flags);
1771 return STATUS_SUCCESS;
1772}
1773
1774static void __devexit sxg_entry_remove(struct pci_dev *pcidev)
1775{
1776 p_net_device dev = pci_get_drvdata(pcidev);
1777 u32 mmio_start = 0;
1778 unsigned int mmio_len = 0;
1779 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
1780
1781 ASSERT(adapter);
1782 DBG_ERROR("sxg: %s ENTER dev[%p] adapter[%p]\n", __FUNCTION__, dev,
1783 adapter);
1784 sxg_deregister_interrupt(adapter);
1785 sxg_unmap_mmio_space(adapter);
1786 DBG_ERROR("sxg: %s unregister_netdev\n", __FUNCTION__);
1787 unregister_netdev(dev);
1788
1789 mmio_start = pci_resource_start(pcidev, 0);
1790 mmio_len = pci_resource_len(pcidev, 0);
1791
1792 DBG_ERROR("sxg: %s rel_region(0) start[%x] len[%x]\n", __FUNCTION__,
1793 mmio_start, mmio_len);
1794 release_mem_region(mmio_start, mmio_len);
1795
1796 DBG_ERROR("sxg: %s iounmap dev->base_addr[%x]\n", __FUNCTION__,
1797 (unsigned int)dev->base_addr);
1798 iounmap((char *)dev->base_addr);
1799
1800 DBG_ERROR("sxg: %s deallocate device\n", __FUNCTION__);
1801 kfree(dev);
1802 DBG_ERROR("sxg: %s EXIT\n", __FUNCTION__);
1803}
1804
1805static int sxg_entry_halt(p_net_device dev)
1806{
1807 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
1808
1809 spin_lock_irqsave(&sxg_global.driver_lock, sxg_global.flags);
1810 DBG_ERROR("sxg: %s (%s) ENTER\n", __FUNCTION__, dev->name);
1811
1812 netif_stop_queue(adapter->netdev);
1813 adapter->state = ADAPT_DOWN;
1814 adapter->linkstate = LINK_DOWN;
1815 adapter->devflags_prev = 0;
1816 DBG_ERROR("sxg: %s (%s) set adapter[%p] state to ADAPT_DOWN(%d)\n",
1817 __FUNCTION__, dev->name, adapter, adapter->state);
1818
1819 DBG_ERROR("sxg: %s (%s) EXIT\n", __FUNCTION__, dev->name);
1820 DBG_ERROR("sxg: %s EXIT\n", __FUNCTION__);
1821 spin_unlock_irqrestore(&sxg_global.driver_lock, sxg_global.flags);
1822 return (STATUS_SUCCESS);
1823}
1824
1825static int sxg_ioctl(p_net_device dev, struct ifreq *rq, int cmd)
1826{
1827 ASSERT(rq);
1828// DBG_ERROR("sxg: %s cmd[%x] rq[%p] dev[%p]\n", __FUNCTION__, cmd, rq, dev);
1829 switch (cmd) {
1830 case SIOCSLICSETINTAGG:
1831 {
1832// p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
1833 u32 data[7];
1834 u32 intagg;
1835
1836 if (copy_from_user(data, rq->ifr_data, 28)) {
1837 DBG_ERROR
1838 ("copy_from_user FAILED getting initial params\n");
1839 return -EFAULT;
1840 }
1841 intagg = data[0];
1842 printk(KERN_EMERG
1843 "%s: set interrupt aggregation to %d\n",
1844 __FUNCTION__, intagg);
1845 return 0;
1846 }
1847
1848 default:
1849// DBG_ERROR("sxg: %s UNSUPPORTED[%x]\n", __FUNCTION__, cmd);
1850 return -EOPNOTSUPP;
1851 }
1852 return 0;
1853}
1854
1855#define NORMAL_ETHFRAME 0
1856
1857/*
1858 *
1859 * sxg_send_packets - Send a skb packet
1860 *
1861 * Arguments:
1862 * skb - The packet to send
1863 * dev - Our linux net device that refs our adapter
1864 *
1865 * Return:
1866 * 0 regardless of outcome XXXTODO refer to e1000 driver
1867 */
1868static int sxg_send_packets(struct sk_buff *skb, p_net_device dev)
1869{
1870 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
1871 u32 status = STATUS_SUCCESS;
1872
1873 DBG_ERROR("sxg: %s ENTER sxg_send_packets skb[%p]\n", __FUNCTION__,
1874 skb);
1875 // Check the adapter state
1876 switch (adapter->State) {
1877 case SXG_STATE_INITIALIZING:
1878 case SXG_STATE_HALTED:
1879 case SXG_STATE_SHUTDOWN:
1880 ASSERT(0); // unexpected
1881 // fall through
1882 case SXG_STATE_RESETTING:
1883 case SXG_STATE_SLEEP:
1884 case SXG_STATE_BOOTDIAG:
1885 case SXG_STATE_DIAG:
1886 case SXG_STATE_HALTING:
1887 status = STATUS_FAILURE;
1888 break;
1889 case SXG_STATE_RUNNING:
1890 if (adapter->LinkState != SXG_LINK_UP) {
1891 status = STATUS_FAILURE;
1892 }
1893 break;
1894 default:
1895 ASSERT(0);
1896 status = STATUS_FAILURE;
1897 }
1898 if (status != STATUS_SUCCESS) {
1899 goto xmit_fail;
1900 }
1901 // send a packet
1902 status = sxg_transmit_packet(adapter, skb);
1903 if (status == STATUS_SUCCESS) {
1904 goto xmit_done;
1905 }
1906
1907 xmit_fail:
1908 // reject & complete all the packets if they cant be sent
1909 if (status != STATUS_SUCCESS) {
1910#if XXXTODO
1911// sxg_send_packets_fail(adapter, skb, status);
1912#else
1913 SXG_DROP_DUMB_SEND(adapter, skb);
1914 adapter->stats.tx_dropped++;
1915#endif
1916 }
1917 DBG_ERROR("sxg: %s EXIT sxg_send_packets status[%x]\n", __FUNCTION__,
1918 status);
1919
1920 xmit_done:
1921 return 0;
1922}
1923
1924/*
1925 * sxg_transmit_packet
1926 *
1927 * This function transmits a single packet.
1928 *
1929 * Arguments -
1930 * adapter - Pointer to our adapter structure
1931 * skb - The packet to be sent
1932 *
1933 * Return -
1934 * STATUS of send
1935 */
1936static int sxg_transmit_packet(p_adapter_t adapter, struct sk_buff *skb)
1937{
1938 PSCATTER_GATHER_LIST pSgl;
1939 PSXG_SCATTER_GATHER SxgSgl;
1940 void *SglBuffer;
1941 u32 SglBufferLength;
1942
1943 // The vast majority of work is done in the shared
1944 // sxg_dumb_sgl routine.
1945 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbSend",
1946 adapter, skb, 0, 0);
1947
1948 // Allocate a SGL buffer
1949 SXG_GET_SGL_BUFFER(adapter, SxgSgl);
1950 if (!SxgSgl) {
1951 adapter->Stats.NoSglBuf++;
1952 adapter->Stats.XmtErrors++;
1953 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "SndPktF1",
1954 adapter, skb, 0, 0);
1955 return (STATUS_RESOURCES);
1956 }
1957 ASSERT(SxgSgl->adapter == adapter);
1958 SglBuffer = SXG_SGL_BUFFER(SxgSgl);
1959 SglBufferLength = SXG_SGL_BUF_SIZE;
1960 SxgSgl->VlanTag.VlanTci = 0;
1961 SxgSgl->VlanTag.VlanTpid = 0;
1962 SxgSgl->Type = SXG_SGL_DUMB;
1963 SxgSgl->DumbPacket = skb;
1964 pSgl = NULL;
1965
1966 // Call the common sxg_dumb_sgl routine to complete the send.
1967 sxg_dumb_sgl(pSgl, SxgSgl);
1968 // Return success sxg_dumb_sgl (or something later) will complete it.
1969 return (STATUS_SUCCESS);
1970}
1971
1972/*
1973 * sxg_dumb_sgl
1974 *
1975 * Arguments:
1976 * pSgl -
1977 * SxgSgl - SXG_SCATTER_GATHER
1978 *
1979 * Return Value:
1980 * None.
1981 */
1982static void sxg_dumb_sgl(PSCATTER_GATHER_LIST pSgl, PSXG_SCATTER_GATHER SxgSgl)
1983{
1984 p_adapter_t adapter = SxgSgl->adapter;
1985 struct sk_buff *skb = SxgSgl->DumbPacket;
1986 // For now, all dumb-nic sends go on RSS queue zero
1987 PSXG_XMT_RING XmtRing = &adapter->XmtRings[0];
1988 PSXG_RING_INFO XmtRingInfo = &adapter->XmtRingZeroInfo;
1989 PSXG_CMD XmtCmd = NULL;
1990// u32 Index = 0;
1991 u32 DataLength = skb->len;
1992// unsigned int BufLen;
1993// u32 SglOffset;
1994 u64 phys_addr;
1995
1996 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbSgl",
1997 pSgl, SxgSgl, 0, 0);
1998
1999 // Set aside a pointer to the sgl
2000 SxgSgl->pSgl = pSgl;
2001
2002 // Sanity check that our SGL format is as we expect.
2003 ASSERT(sizeof(SXG_X64_SGE) == sizeof(SCATTER_GATHER_ELEMENT));
2004 // Shouldn't be a vlan tag on this frame
2005 ASSERT(SxgSgl->VlanTag.VlanTci == 0);
2006 ASSERT(SxgSgl->VlanTag.VlanTpid == 0);
2007
2008 // From here below we work with the SGL placed in our
2009 // buffer.
2010
2011 SxgSgl->Sgl.NumberOfElements = 1;
2012
2013 // Grab the spinlock and acquire a command
2014 spin_lock(&adapter->XmtZeroLock);
2015 SXG_GET_CMD(XmtRing, XmtRingInfo, XmtCmd, SxgSgl);
2016 if (XmtCmd == NULL) {
2017 // Call sxg_complete_slow_send to see if we can
2018 // free up any XmtRingZero entries and then try again
2019 spin_unlock(&adapter->XmtZeroLock);
2020 sxg_complete_slow_send(adapter);
2021 spin_lock(&adapter->XmtZeroLock);
2022 SXG_GET_CMD(XmtRing, XmtRingInfo, XmtCmd, SxgSgl);
2023 if (XmtCmd == NULL) {
2024 adapter->Stats.XmtZeroFull++;
2025 goto abortcmd;
2026 }
2027 }
2028 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbCmd",
2029 XmtCmd, XmtRingInfo->Head, XmtRingInfo->Tail, 0);
2030 // Update stats
2031 adapter->Stats.DumbXmtPkts++;
2032 adapter->Stats.DumbXmtBytes += DataLength;
2033#if XXXTODO // Stats stuff
2034 if (SXG_MULTICAST_PACKET(EtherHdr)) {
2035 if (SXG_BROADCAST_PACKET(EtherHdr)) {
2036 adapter->Stats.DumbXmtBcastPkts++;
2037 adapter->Stats.DumbXmtBcastBytes += DataLength;
2038 } else {
2039 adapter->Stats.DumbXmtMcastPkts++;
2040 adapter->Stats.DumbXmtMcastBytes += DataLength;
2041 }
2042 } else {
2043 adapter->Stats.DumbXmtUcastPkts++;
2044 adapter->Stats.DumbXmtUcastBytes += DataLength;
2045 }
2046#endif
2047 // Fill in the command
2048 // Copy out the first SGE to the command and adjust for offset
2049 phys_addr =
2050 pci_map_single(adapter->pcidev, skb->data, skb->len,
2051 PCI_DMA_TODEVICE);
2052 XmtCmd->Buffer.FirstSgeAddress = SXG_GET_ADDR_HIGH(phys_addr);
2053 XmtCmd->Buffer.FirstSgeAddress = XmtCmd->Buffer.FirstSgeAddress << 32;
2054 XmtCmd->Buffer.FirstSgeAddress =
2055 XmtCmd->Buffer.FirstSgeAddress | SXG_GET_ADDR_LOW(phys_addr);
2056// XmtCmd->Buffer.FirstSgeAddress = SxgSgl->Sgl.Elements[Index].Address;
2057// XmtCmd->Buffer.FirstSgeAddress.LowPart += MdlOffset;
2058 XmtCmd->Buffer.FirstSgeLength = DataLength;
2059 // Set a pointer to the remaining SGL entries
2060// XmtCmd->Sgl = SxgSgl->PhysicalAddress;
2061 // Advance the physical address of the SxgSgl structure to
2062 // the second SGE
2063// SglOffset = (u32)((u32 *)(&SxgSgl->Sgl.Elements[Index+1]) -
2064// (u32 *)SxgSgl);
2065// XmtCmd->Sgl.LowPart += SglOffset;
2066 XmtCmd->Buffer.SgeOffset = 0;
2067 // Note - TotalLength might be overwritten with MSS below..
2068 XmtCmd->Buffer.TotalLength = DataLength;
2069 XmtCmd->SgEntries = 1; //(ushort)(SxgSgl->Sgl.NumberOfElements - Index);
2070 XmtCmd->Flags = 0;
2071 //
2072 // Advance transmit cmd descripter by 1.
2073 // NOTE - See comments in SxgTcpOutput where we write
2074 // to the XmtCmd register regarding CPU ID values and/or
2075 // multiple commands.
2076 //
2077 //
2078 WRITE_REG(adapter->UcodeRegs[0].XmtCmd, 1, TRUE);
2079 //
2080 //
2081 adapter->Stats.XmtQLen++; // Stats within lock
2082 spin_unlock(&adapter->XmtZeroLock);
2083 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XDumSgl2",
2084 XmtCmd, pSgl, SxgSgl, 0);
2085 return;
2086
2087 abortcmd:
2088 // NOTE - Only jump to this label AFTER grabbing the
2089 // XmtZeroLock, and DO NOT DROP IT between the
2090 // command allocation and the following abort.
2091 if (XmtCmd) {
2092 SXG_ABORT_CMD(XmtRingInfo);
2093 }
2094 spin_unlock(&adapter->XmtZeroLock);
2095
2096// failsgl:
2097 // Jump to this label if failure occurs before the
2098 // XmtZeroLock is grabbed
2099 adapter->Stats.XmtErrors++;
2100 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_IMPORTANT, "DumSGFal",
2101 pSgl, SxgSgl, XmtRingInfo->Head, XmtRingInfo->Tail);
2102
2103 SXG_COMPLETE_DUMB_SEND(adapter, SxgSgl->DumbPacket); // SxgSgl->DumbPacket is the skb
2104}
2105
2106/***************************************************************
2107 * Link management functions
2108 ***************************************************************/
2109
2110/*
2111 * sxg_initialize_link - Initialize the link stuff
2112 *
2113 * Arguments -
2114 * adapter - A pointer to our adapter structure
2115 *
2116 * Return
2117 * status
2118 */
2119static int sxg_initialize_link(p_adapter_t adapter)
2120{
2121 PSXG_HW_REGS HwRegs = adapter->HwRegs;
2122 u32 Value;
2123 u32 ConfigData;
2124 u32 MaxFrame;
2125 int status;
2126
2127 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "InitLink",
2128 adapter, 0, 0, 0);
2129
2130 // Reset PHY and XGXS module
2131 WRITE_REG(HwRegs->LinkStatus, LS_SERDES_POWER_DOWN, TRUE);
2132
2133 // Reset transmit configuration register
2134 WRITE_REG(HwRegs->XmtConfig, XMT_CONFIG_RESET, TRUE);
2135
2136 // Reset receive configuration register
2137 WRITE_REG(HwRegs->RcvConfig, RCV_CONFIG_RESET, TRUE);
2138
2139 // Reset all MAC modules
2140 WRITE_REG(HwRegs->MacConfig0, AXGMAC_CFG0_SUB_RESET, TRUE);
2141
2142 // Link address 0
2143 // XXXTODO - This assumes the MAC address (0a:0b:0c:0d:0e:0f)
2144 // is stored with the first nibble (0a) in the byte 0
2145 // of the Mac address. Possibly reverse?
2146 Value = *(u32 *) adapter->MacAddr;
2147 WRITE_REG(HwRegs->LinkAddress0Low, Value, TRUE);
2148 // also write the MAC address to the MAC. Endian is reversed.
2149 WRITE_REG(HwRegs->MacAddressLow, ntohl(Value), TRUE);
2150 Value = (*(u16 *) & adapter->MacAddr[4] & 0x0000FFFF);
2151 WRITE_REG(HwRegs->LinkAddress0High, Value | LINK_ADDRESS_ENABLE, TRUE);
2152 // endian swap for the MAC (put high bytes in bits [31:16], swapped)
2153 Value = ntohl(Value);
2154 WRITE_REG(HwRegs->MacAddressHigh, Value, TRUE);
2155 // Link address 1
2156 WRITE_REG(HwRegs->LinkAddress1Low, 0, TRUE);
2157 WRITE_REG(HwRegs->LinkAddress1High, 0, TRUE);
2158 // Link address 2
2159 WRITE_REG(HwRegs->LinkAddress2Low, 0, TRUE);
2160 WRITE_REG(HwRegs->LinkAddress2High, 0, TRUE);
2161 // Link address 3
2162 WRITE_REG(HwRegs->LinkAddress3Low, 0, TRUE);
2163 WRITE_REG(HwRegs->LinkAddress3High, 0, TRUE);
2164
2165 // Enable MAC modules
2166 WRITE_REG(HwRegs->MacConfig0, 0, TRUE);
2167
2168 // Configure MAC
2169 WRITE_REG(HwRegs->MacConfig1, (AXGMAC_CFG1_XMT_PAUSE | // Allow sending of pause
2170 AXGMAC_CFG1_XMT_EN | // Enable XMT
2171 AXGMAC_CFG1_RCV_PAUSE | // Enable detection of pause
2172 AXGMAC_CFG1_RCV_EN | // Enable receive
2173 AXGMAC_CFG1_SHORT_ASSERT | // short frame detection
2174 AXGMAC_CFG1_CHECK_LEN | // Verify frame length
2175 AXGMAC_CFG1_GEN_FCS | // Generate FCS
2176 AXGMAC_CFG1_PAD_64), // Pad frames to 64 bytes
2177 TRUE);
2178
2179 // Set AXGMAC max frame length if jumbo. Not needed for standard MTU
2180 if (adapter->JumboEnabled) {
2181 WRITE_REG(HwRegs->MacMaxFrameLen, AXGMAC_MAXFRAME_JUMBO, TRUE);
2182 }
2183 // AMIIM Configuration Register -
2184 // The value placed in the AXGMAC_AMIIM_CFG_HALF_CLOCK portion
2185 // (bottom bits) of this register is used to determine the
2186 // MDC frequency as specified in the A-XGMAC Design Document.
2187 // This value must not be zero. The following value (62 or 0x3E)
2188 // is based on our MAC transmit clock frequency (MTCLK) of 312.5 MHz.
2189 // Given a maximum MDIO clock frequency of 2.5 MHz (see the PHY spec),
2190 // we get: 312.5/(2*(X+1)) < 2.5 ==> X = 62.
2191 // This value happens to be the default value for this register,
2192 // so we really don't have to do this.
2193 WRITE_REG(HwRegs->MacAmiimConfig, 0x0000003E, TRUE);
2194
2195 // Power up and enable PHY and XAUI/XGXS/Serdes logic
2196 WRITE_REG(HwRegs->LinkStatus,
2197 (LS_PHY_CLR_RESET |
2198 LS_XGXS_ENABLE |
2199 LS_XGXS_CTL | LS_PHY_CLK_EN | LS_ATTN_ALARM), TRUE);
2200 DBG_ERROR("After Power Up and enable PHY in sxg_initialize_link\n");
2201
2202 // Per information given by Aeluros, wait 100 ms after removing reset.
2203 // It's not enough to wait for the self-clearing reset bit in reg 0 to clear.
2204 mdelay(100);
2205
2206 // Verify the PHY has come up by checking that the Reset bit has cleared.
2207 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2208 PHY_PMA_CONTROL1, // PMA/PMD control register
2209 &Value);
2210 if (status != STATUS_SUCCESS)
2211 return (STATUS_FAILURE);
2212 if (Value & PMA_CONTROL1_RESET) // reset complete if bit is 0
2213 return (STATUS_FAILURE);
2214
2215 // The SERDES should be initialized by now - confirm
2216 READ_REG(HwRegs->LinkStatus, Value);
2217 if (Value & LS_SERDES_DOWN) // verify SERDES is initialized
2218 return (STATUS_FAILURE);
2219
2220 // The XAUI link should also be up - confirm
2221 if (!(Value & LS_XAUI_LINK_UP)) // verify XAUI link is up
2222 return (STATUS_FAILURE);
2223
2224 // Initialize the PHY
2225 status = sxg_phy_init(adapter);
2226 if (status != STATUS_SUCCESS)
2227 return (STATUS_FAILURE);
2228
2229 // Enable the Link Alarm
2230 status = sxg_write_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2231 LASI_CONTROL, // LASI control register
2232 LASI_CTL_LS_ALARM_ENABLE); // enable link alarm bit
2233 if (status != STATUS_SUCCESS)
2234 return (STATUS_FAILURE);
2235
2236 // XXXTODO - temporary - verify bit is set
2237 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2238 LASI_CONTROL, // LASI control register
2239 &Value);
2240 if (status != STATUS_SUCCESS)
2241 return (STATUS_FAILURE);
2242 if (!(Value & LASI_CTL_LS_ALARM_ENABLE)) {
2243 DBG_ERROR("Error! LASI Control Alarm Enable bit not set!\n");
2244 }
2245 // Enable receive
2246 MaxFrame = adapter->JumboEnabled ? JUMBOMAXFRAME : ETHERMAXFRAME;
2247 ConfigData = (RCV_CONFIG_ENABLE |
2248 RCV_CONFIG_ENPARSE |
2249 RCV_CONFIG_RCVBAD |
2250 RCV_CONFIG_RCVPAUSE |
2251 RCV_CONFIG_TZIPV6 |
2252 RCV_CONFIG_TZIPV4 |
2253 RCV_CONFIG_HASH_16 |
2254 RCV_CONFIG_SOCKET | RCV_CONFIG_BUFSIZE(MaxFrame));
2255 WRITE_REG(HwRegs->RcvConfig, ConfigData, TRUE);
2256
2257 WRITE_REG(HwRegs->XmtConfig, XMT_CONFIG_ENABLE, TRUE);
2258
2259 // Mark the link as down. We'll get a link event when it comes up.
2260 sxg_link_state(adapter, SXG_LINK_DOWN);
2261
2262 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XInitLnk",
2263 adapter, 0, 0, 0);
2264 return (STATUS_SUCCESS);
2265}
2266
2267/*
2268 * sxg_phy_init - Initialize the PHY
2269 *
2270 * Arguments -
2271 * adapter - A pointer to our adapter structure
2272 *
2273 * Return
2274 * status
2275 */
2276static int sxg_phy_init(p_adapter_t adapter)
2277{
2278 u32 Value;
2279 PPHY_UCODE p;
2280 int status;
2281
2282 DBG_ERROR("ENTER %s\n", __FUNCTION__);
2283
2284 // Read a register to identify the PHY type
2285 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2286 0xC205, // PHY ID register (?)
2287 &Value); // XXXTODO - add def
2288 if (status != STATUS_SUCCESS)
2289 return (STATUS_FAILURE);
2290
2291 if (Value == 0x0012) { // 0x0012 == AEL2005C PHY(?) - XXXTODO - add def
2292 DBG_ERROR
2293 ("AEL2005C PHY detected. Downloading PHY microcode.\n");
2294
2295 // Initialize AEL2005C PHY and download PHY microcode
2296 for (p = PhyUcode; p->Addr != 0xFFFF; p++) {
2297 if (p->Addr == 0) {
2298 // if address == 0, data == sleep time in ms
2299 mdelay(p->Data);
2300 } else {
2301 // write the given data to the specified address
2302 status = sxg_write_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2303 p->Addr, // PHY address
2304 p->Data); // PHY data
2305 if (status != STATUS_SUCCESS)
2306 return (STATUS_FAILURE);
2307 }
2308 }
2309 }
2310 DBG_ERROR("EXIT %s\n", __FUNCTION__);
2311
2312 return (STATUS_SUCCESS);
2313}
2314
2315/*
2316 * sxg_link_event - Process a link event notification from the card
2317 *
2318 * Arguments -
2319 * adapter - A pointer to our adapter structure
2320 *
2321 * Return
2322 * None
2323 */
2324static void sxg_link_event(p_adapter_t adapter)
2325{
2326 PSXG_HW_REGS HwRegs = adapter->HwRegs;
2327 SXG_LINK_STATE LinkState;
2328 int status;
2329 u32 Value;
2330
2331 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "LinkEvnt",
2332 adapter, 0, 0, 0);
2333 DBG_ERROR("ENTER %s\n", __FUNCTION__);
2334
2335 // Check the Link Status register. We should have a Link Alarm.
2336 READ_REG(HwRegs->LinkStatus, Value);
2337 if (Value & LS_LINK_ALARM) {
2338 // We got a Link Status alarm. First, pause to let the
2339 // link state settle (it can bounce a number of times)
2340 mdelay(10);
2341
2342 // Now clear the alarm by reading the LASI status register.
2343 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2344 LASI_STATUS, // LASI status register
2345 &Value);
2346 if (status != STATUS_SUCCESS) {
2347 DBG_ERROR("Error reading LASI Status MDIO register!\n");
2348 sxg_link_state(adapter, SXG_LINK_DOWN);
2349// ASSERT(0);
2350 }
2351 ASSERT(Value & LASI_STATUS_LS_ALARM);
2352
2353 // Now get and set the link state
2354 LinkState = sxg_get_link_state(adapter);
2355 sxg_link_state(adapter, LinkState);
2356 DBG_ERROR("SXG: Link Alarm occurred. Link is %s\n",
2357 ((LinkState == SXG_LINK_UP) ? "UP" : "DOWN"));
2358 } else {
2359 // XXXTODO - Assuming Link Attention is only being generated for the
2360 // Link Alarm pin (and not for a XAUI Link Status change), then it's
2361 // impossible to get here. Yet we've gotten here twice (under extreme
2362 // conditions - bouncing the link up and down many times a second).
2363 // Needs further investigation.
2364 DBG_ERROR("SXG: sxg_link_event: Can't get here!\n");
2365 DBG_ERROR("SXG: Link Status == 0x%08X.\n", Value);
2366// ASSERT(0);
2367 }
2368 DBG_ERROR("EXIT %s\n", __FUNCTION__);
2369
2370}
2371
2372/*
2373 * sxg_get_link_state - Determine if the link is up or down
2374 *
2375 * Arguments -
2376 * adapter - A pointer to our adapter structure
2377 *
2378 * Return
2379 * Link State
2380 */
2381static SXG_LINK_STATE sxg_get_link_state(p_adapter_t adapter)
2382{
2383 int status;
2384 u32 Value;
2385
2386 DBG_ERROR("ENTER %s\n", __FUNCTION__);
2387
2388 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "GetLink",
2389 adapter, 0, 0, 0);
2390
2391 // Per the Xenpak spec (and the IEEE 10Gb spec?), the link is up if
2392 // the following 3 bits (from 3 different MDIO registers) are all true.
2393 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_PMA, // PHY PMA/PMD module
2394 PHY_PMA_RCV_DET, // PMA/PMD Receive Signal Detect register
2395 &Value);
2396 if (status != STATUS_SUCCESS)
2397 goto bad;
2398
2399 // If PMA/PMD receive signal detect is 0, then the link is down
2400 if (!(Value & PMA_RCV_DETECT))
2401 return (SXG_LINK_DOWN);
2402
2403 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_PCS, // PHY PCS module
2404 PHY_PCS_10G_STATUS1, // PCS 10GBASE-R Status 1 register
2405 &Value);
2406 if (status != STATUS_SUCCESS)
2407 goto bad;
2408
2409 // If PCS is not locked to receive blocks, then the link is down
2410 if (!(Value & PCS_10B_BLOCK_LOCK))
2411 return (SXG_LINK_DOWN);
2412
2413 status = sxg_read_mdio_reg(adapter, MIIM_DEV_PHY_XS, // PHY XS module
2414 PHY_XS_LANE_STATUS, // XS Lane Status register
2415 &Value);
2416 if (status != STATUS_SUCCESS)
2417 goto bad;
2418
2419 // If XS transmit lanes are not aligned, then the link is down
2420 if (!(Value & XS_LANE_ALIGN))
2421 return (SXG_LINK_DOWN);
2422
2423 // All 3 bits are true, so the link is up
2424 DBG_ERROR("EXIT %s\n", __FUNCTION__);
2425
2426 return (SXG_LINK_UP);
2427
2428 bad:
2429 // An error occurred reading an MDIO register. This shouldn't happen.
2430 DBG_ERROR("Error reading an MDIO register!\n");
2431 ASSERT(0);
2432 return (SXG_LINK_DOWN);
2433}
2434
2435static void sxg_indicate_link_state(p_adapter_t adapter,
2436 SXG_LINK_STATE LinkState)
2437{
2438 if (adapter->LinkState == SXG_LINK_UP) {
2439 DBG_ERROR("%s: LINK now UP, call netif_start_queue\n",
2440 __FUNCTION__);
2441 netif_start_queue(adapter->netdev);
2442 } else {
2443 DBG_ERROR("%s: LINK now DOWN, call netif_stop_queue\n",
2444 __FUNCTION__);
2445 netif_stop_queue(adapter->netdev);
2446 }
2447}
2448
2449/*
2450 * sxg_link_state - Set the link state and if necessary, indicate.
2451 * This routine the central point of processing for all link state changes.
2452 * Nothing else in the driver should alter the link state or perform
2453 * link state indications
2454 *
2455 * Arguments -
2456 * adapter - A pointer to our adapter structure
2457 * LinkState - The link state
2458 *
2459 * Return
2460 * None
2461 */
2462static void sxg_link_state(p_adapter_t adapter, SXG_LINK_STATE LinkState)
2463{
2464 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_IMPORTANT, "LnkINDCT",
2465 adapter, LinkState, adapter->LinkState, adapter->State);
2466
2467 DBG_ERROR("ENTER %s\n", __FUNCTION__);
2468
2469 // Hold the adapter lock during this routine. Maybe move
2470 // the lock to the caller.
2471 spin_lock(&adapter->AdapterLock);
2472 if (LinkState == adapter->LinkState) {
2473 // Nothing changed..
2474 spin_unlock(&adapter->AdapterLock);
2475 DBG_ERROR("EXIT #0 %s\n", __FUNCTION__);
2476 return;
2477 }
2478 // Save the adapter state
2479 adapter->LinkState = LinkState;
2480
2481 // Drop the lock and indicate link state
2482 spin_unlock(&adapter->AdapterLock);
2483 DBG_ERROR("EXIT #1 %s\n", __FUNCTION__);
2484
2485 sxg_indicate_link_state(adapter, LinkState);
2486}
2487
2488/*
2489 * sxg_write_mdio_reg - Write to a register on the MDIO bus
2490 *
2491 * Arguments -
2492 * adapter - A pointer to our adapter structure
2493 * DevAddr - MDIO device number being addressed
2494 * RegAddr - register address for the specified MDIO device
2495 * Value - value to write to the MDIO register
2496 *
2497 * Return
2498 * status
2499 */
2500static int sxg_write_mdio_reg(p_adapter_t adapter,
2501 u32 DevAddr, u32 RegAddr, u32 Value)
2502{
2503 PSXG_HW_REGS HwRegs = adapter->HwRegs;
2504 u32 AddrOp; // Address operation (written to MIIM field reg)
2505 u32 WriteOp; // Write operation (written to MIIM field reg)
2506 u32 Cmd; // Command (written to MIIM command reg)
2507 u32 ValueRead;
2508 u32 Timeout;
2509
2510// DBG_ERROR("ENTER %s\n", __FUNCTION__);
2511
2512 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "WrtMDIO",
2513 adapter, 0, 0, 0);
2514
2515 // Ensure values don't exceed field width
2516 DevAddr &= 0x001F; // 5-bit field
2517 RegAddr &= 0xFFFF; // 16-bit field
2518 Value &= 0xFFFF; // 16-bit field
2519
2520 // Set MIIM field register bits for an MIIM address operation
2521 AddrOp = (MIIM_PORT_NUM << AXGMAC_AMIIM_FIELD_PORT_SHIFT) |
2522 (DevAddr << AXGMAC_AMIIM_FIELD_DEV_SHIFT) |
2523 (MIIM_TA_10GB << AXGMAC_AMIIM_FIELD_TA_SHIFT) |
2524 (MIIM_OP_ADDR << AXGMAC_AMIIM_FIELD_OP_SHIFT) | RegAddr;
2525
2526 // Set MIIM field register bits for an MIIM write operation
2527 WriteOp = (MIIM_PORT_NUM << AXGMAC_AMIIM_FIELD_PORT_SHIFT) |
2528 (DevAddr << AXGMAC_AMIIM_FIELD_DEV_SHIFT) |
2529 (MIIM_TA_10GB << AXGMAC_AMIIM_FIELD_TA_SHIFT) |
2530 (MIIM_OP_WRITE << AXGMAC_AMIIM_FIELD_OP_SHIFT) | Value;
2531
2532 // Set MIIM command register bits to execute an MIIM command
2533 Cmd = AXGMAC_AMIIM_CMD_START | AXGMAC_AMIIM_CMD_10G_OPERATION;
2534
2535 // Reset the command register command bit (in case it's not 0)
2536 WRITE_REG(HwRegs->MacAmiimCmd, 0, TRUE);
2537
2538 // MIIM write to set the address of the specified MDIO register
2539 WRITE_REG(HwRegs->MacAmiimField, AddrOp, TRUE);
2540
2541 // Write to MIIM Command Register to execute to address operation
2542 WRITE_REG(HwRegs->MacAmiimCmd, Cmd, TRUE);
2543
2544 // Poll AMIIM Indicator register to wait for completion
2545 Timeout = SXG_LINK_TIMEOUT;
2546 do {
2547 udelay(100); // Timeout in 100us units
2548 READ_REG(HwRegs->MacAmiimIndicator, ValueRead);
2549 if (--Timeout == 0) {
2550 return (STATUS_FAILURE);
2551 }
2552 } while (ValueRead & AXGMAC_AMIIM_INDC_BUSY);
2553
2554 // Reset the command register command bit
2555 WRITE_REG(HwRegs->MacAmiimCmd, 0, TRUE);
2556
2557 // MIIM write to set up an MDIO write operation
2558 WRITE_REG(HwRegs->MacAmiimField, WriteOp, TRUE);
2559
2560 // Write to MIIM Command Register to execute the write operation
2561 WRITE_REG(HwRegs->MacAmiimCmd, Cmd, TRUE);
2562
2563 // Poll AMIIM Indicator register to wait for completion
2564 Timeout = SXG_LINK_TIMEOUT;
2565 do {
2566 udelay(100); // Timeout in 100us units
2567 READ_REG(HwRegs->MacAmiimIndicator, ValueRead);
2568 if (--Timeout == 0) {
2569 return (STATUS_FAILURE);
2570 }
2571 } while (ValueRead & AXGMAC_AMIIM_INDC_BUSY);
2572
2573// DBG_ERROR("EXIT %s\n", __FUNCTION__);
2574
2575 return (STATUS_SUCCESS);
2576}
2577
2578/*
2579 * sxg_read_mdio_reg - Read a register on the MDIO bus
2580 *
2581 * Arguments -
2582 * adapter - A pointer to our adapter structure
2583 * DevAddr - MDIO device number being addressed
2584 * RegAddr - register address for the specified MDIO device
2585 * pValue - pointer to where to put data read from the MDIO register
2586 *
2587 * Return
2588 * status
2589 */
2590static int sxg_read_mdio_reg(p_adapter_t adapter,
2591 u32 DevAddr, u32 RegAddr, u32 *pValue)
2592{
2593 PSXG_HW_REGS HwRegs = adapter->HwRegs;
2594 u32 AddrOp; // Address operation (written to MIIM field reg)
2595 u32 ReadOp; // Read operation (written to MIIM field reg)
2596 u32 Cmd; // Command (written to MIIM command reg)
2597 u32 ValueRead;
2598 u32 Timeout;
2599
2600 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "WrtMDIO",
2601 adapter, 0, 0, 0);
2602// DBG_ERROR("ENTER %s\n", __FUNCTION__);
2603
2604 // Ensure values don't exceed field width
2605 DevAddr &= 0x001F; // 5-bit field
2606 RegAddr &= 0xFFFF; // 16-bit field
2607
2608 // Set MIIM field register bits for an MIIM address operation
2609 AddrOp = (MIIM_PORT_NUM << AXGMAC_AMIIM_FIELD_PORT_SHIFT) |
2610 (DevAddr << AXGMAC_AMIIM_FIELD_DEV_SHIFT) |
2611 (MIIM_TA_10GB << AXGMAC_AMIIM_FIELD_TA_SHIFT) |
2612 (MIIM_OP_ADDR << AXGMAC_AMIIM_FIELD_OP_SHIFT) | RegAddr;
2613
2614 // Set MIIM field register bits for an MIIM read operation
2615 ReadOp = (MIIM_PORT_NUM << AXGMAC_AMIIM_FIELD_PORT_SHIFT) |
2616 (DevAddr << AXGMAC_AMIIM_FIELD_DEV_SHIFT) |
2617 (MIIM_TA_10GB << AXGMAC_AMIIM_FIELD_TA_SHIFT) |
2618 (MIIM_OP_READ << AXGMAC_AMIIM_FIELD_OP_SHIFT);
2619
2620 // Set MIIM command register bits to execute an MIIM command
2621 Cmd = AXGMAC_AMIIM_CMD_START | AXGMAC_AMIIM_CMD_10G_OPERATION;
2622
2623 // Reset the command register command bit (in case it's not 0)
2624 WRITE_REG(HwRegs->MacAmiimCmd, 0, TRUE);
2625
2626 // MIIM write to set the address of the specified MDIO register
2627 WRITE_REG(HwRegs->MacAmiimField, AddrOp, TRUE);
2628
2629 // Write to MIIM Command Register to execute to address operation
2630 WRITE_REG(HwRegs->MacAmiimCmd, Cmd, TRUE);
2631
2632 // Poll AMIIM Indicator register to wait for completion
2633 Timeout = SXG_LINK_TIMEOUT;
2634 do {
2635 udelay(100); // Timeout in 100us units
2636 READ_REG(HwRegs->MacAmiimIndicator, ValueRead);
2637 if (--Timeout == 0) {
2638 return (STATUS_FAILURE);
2639 }
2640 } while (ValueRead & AXGMAC_AMIIM_INDC_BUSY);
2641
2642 // Reset the command register command bit
2643 WRITE_REG(HwRegs->MacAmiimCmd, 0, TRUE);
2644
2645 // MIIM write to set up an MDIO register read operation
2646 WRITE_REG(HwRegs->MacAmiimField, ReadOp, TRUE);
2647
2648 // Write to MIIM Command Register to execute the read operation
2649 WRITE_REG(HwRegs->MacAmiimCmd, Cmd, TRUE);
2650
2651 // Poll AMIIM Indicator register to wait for completion
2652 Timeout = SXG_LINK_TIMEOUT;
2653 do {
2654 udelay(100); // Timeout in 100us units
2655 READ_REG(HwRegs->MacAmiimIndicator, ValueRead);
2656 if (--Timeout == 0) {
2657 return (STATUS_FAILURE);
2658 }
2659 } while (ValueRead & AXGMAC_AMIIM_INDC_BUSY);
2660
2661 // Read the MDIO register data back from the field register
2662 READ_REG(HwRegs->MacAmiimField, *pValue);
2663 *pValue &= 0xFFFF; // data is in the lower 16 bits
2664
2665// DBG_ERROR("EXIT %s\n", __FUNCTION__);
2666
2667 return (STATUS_SUCCESS);
2668}
2669
2670/*
2671 * Allocate a mcast_address structure to hold the multicast address.
2672 * Link it in.
2673 */
2674static int sxg_mcast_add_list(p_adapter_t adapter, char *address)
2675{
2676 p_mcast_address_t mcaddr, mlist;
2677 bool equaladdr;
2678
2679 /* Check to see if it already exists */
2680 mlist = adapter->mcastaddrs;
2681 while (mlist) {
2682 ETHER_EQ_ADDR(mlist->address, address, equaladdr);
2683 if (equaladdr) {
2684 return (STATUS_SUCCESS);
2685 }
2686 mlist = mlist->next;
2687 }
2688
2689 /* Doesn't already exist. Allocate a structure to hold it */
2690 mcaddr = kmalloc(sizeof(mcast_address_t), GFP_ATOMIC);
2691 if (mcaddr == NULL)
2692 return 1;
2693
2694 memcpy(mcaddr->address, address, 6);
2695
2696 mcaddr->next = adapter->mcastaddrs;
2697 adapter->mcastaddrs = mcaddr;
2698
2699 return (STATUS_SUCCESS);
2700}
2701
2702/*
2703 * Functions to obtain the CRC corresponding to the destination mac address.
2704 * This is a standard ethernet CRC in that it is a 32-bit, reflected CRC using
2705 * the polynomial:
2706 * x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1.
2707 *
2708 * After the CRC for the 6 bytes is generated (but before the value is complemented),
2709 * we must then transpose the value and return bits 30-23.
2710 *
2711 */
2712static u32 sxg_crc_table[256]; /* Table of CRC's for all possible byte values */
2713static u32 sxg_crc_init; /* Is table initialized */
2714
2715/*
2716 * Contruct the CRC32 table
2717 */
2718static void sxg_mcast_init_crc32(void)
2719{
2720 u32 c; /* CRC shit reg */
2721 u32 e = 0; /* Poly X-or pattern */
2722 int i; /* counter */
2723 int k; /* byte being shifted into crc */
2724
2725 static int p[] = { 0, 1, 2, 4, 5, 7, 8, 10, 11, 12, 16, 22, 23, 26 };
2726
2727 for (i = 0; i < sizeof(p) / sizeof(int); i++) {
2728 e |= 1L << (31 - p[i]);
2729 }
2730
2731 for (i = 1; i < 256; i++) {
2732 c = i;
2733 for (k = 8; k; k--) {
2734 c = c & 1 ? (c >> 1) ^ e : c >> 1;
2735 }
2736 sxg_crc_table[i] = c;
2737 }
2738}
2739
2740/*
2741 * Return the MAC hast as described above.
2742 */
2743static unsigned char sxg_mcast_get_mac_hash(char *macaddr)
2744{
2745 u32 crc;
2746 char *p;
2747 int i;
2748 unsigned char machash = 0;
2749
2750 if (!sxg_crc_init) {
2751 sxg_mcast_init_crc32();
2752 sxg_crc_init = 1;
2753 }
2754
2755 crc = 0xFFFFFFFF; /* Preload shift register, per crc-32 spec */
2756 for (i = 0, p = macaddr; i < 6; ++p, ++i) {
2757 crc = (crc >> 8) ^ sxg_crc_table[(crc ^ *p) & 0xFF];
2758 }
2759
2760 /* Return bits 1-8, transposed */
2761 for (i = 1; i < 9; i++) {
2762 machash |= (((crc >> i) & 1) << (8 - i));
2763 }
2764
2765 return (machash);
2766}
2767
2768static void sxg_mcast_set_bit(p_adapter_t adapter, char *address)
2769{
2770 unsigned char crcpoly;
2771
2772 /* Get the CRC polynomial for the mac address */
2773 crcpoly = sxg_mcast_get_mac_hash(address);
2774
2775 /* We only have space on the SLIC for 64 entries. Lop
2776 * off the top two bits. (2^6 = 64)
2777 */
2778 crcpoly &= 0x3F;
2779
2780 /* OR in the new bit into our 64 bit mask. */
2781 adapter->MulticastMask |= (u64) 1 << crcpoly;
2782}
2783
2784static void sxg_mcast_set_list(p_net_device dev)
2785{
2786#if XXXTODO
2787 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
2788 int status = STATUS_SUCCESS;
2789 int i;
2790 char *addresses;
2791 struct dev_mc_list *mc_list = dev->mc_list;
2792 int mc_count = dev->mc_count;
2793
2794 ASSERT(adapter);
2795
2796 for (i = 1; i <= mc_count; i++) {
2797 addresses = (char *)&mc_list->dmi_addr;
2798 if (mc_list->dmi_addrlen == 6) {
2799 status = sxg_mcast_add_list(adapter, addresses);
2800 if (status != STATUS_SUCCESS) {
2801 break;
2802 }
2803 } else {
2804 status = -EINVAL;
2805 break;
2806 }
2807 sxg_mcast_set_bit(adapter, addresses);
2808 mc_list = mc_list->next;
2809 }
2810
2811 DBG_ERROR("%s a->devflags_prev[%x] dev->flags[%x] status[%x]\n",
2812 __FUNCTION__, adapter->devflags_prev, dev->flags, status);
2813 if (adapter->devflags_prev != dev->flags) {
2814 adapter->macopts = MAC_DIRECTED;
2815 if (dev->flags) {
2816 if (dev->flags & IFF_BROADCAST) {
2817 adapter->macopts |= MAC_BCAST;
2818 }
2819 if (dev->flags & IFF_PROMISC) {
2820 adapter->macopts |= MAC_PROMISC;
2821 }
2822 if (dev->flags & IFF_ALLMULTI) {
2823 adapter->macopts |= MAC_ALLMCAST;
2824 }
2825 if (dev->flags & IFF_MULTICAST) {
2826 adapter->macopts |= MAC_MCAST;
2827 }
2828 }
2829 adapter->devflags_prev = dev->flags;
2830 DBG_ERROR("%s call sxg_config_set adapter->macopts[%x]\n",
2831 __FUNCTION__, adapter->macopts);
2832 sxg_config_set(adapter, TRUE);
2833 } else {
2834 if (status == STATUS_SUCCESS) {
2835 sxg_mcast_set_mask(adapter);
2836 }
2837 }
2838#endif
2839 return;
2840}
2841
2842static void sxg_mcast_set_mask(p_adapter_t adapter)
2843{
2844 PSXG_UCODE_REGS sxg_regs = adapter->UcodeRegs;
2845
2846 DBG_ERROR("%s ENTER (%s) macopts[%x] mask[%llx]\n", __FUNCTION__,
2847 adapter->netdev->name, (unsigned int)adapter->MacFilter,
2848 adapter->MulticastMask);
2849
2850 if (adapter->MacFilter & (MAC_ALLMCAST | MAC_PROMISC)) {
2851 /* Turn on all multicast addresses. We have to do this for promiscuous
2852 * mode as well as ALLMCAST mode. It saves the Microcode from having
2853 * to keep state about the MAC configuration.
2854 */
2855// DBG_ERROR("sxg: %s macopts = MAC_ALLMCAST | MAC_PROMISC\n SLUT MODE!!!\n",__FUNCTION__);
2856 WRITE_REG(sxg_regs->McastLow, 0xFFFFFFFF, FLUSH);
2857 WRITE_REG(sxg_regs->McastHigh, 0xFFFFFFFF, FLUSH);
2858// DBG_ERROR("%s (%s) WRITE to slic_regs slic_mcastlow&high 0xFFFFFFFF\n",__FUNCTION__, adapter->netdev->name);
2859
2860 } else {
2861 /* Commit our multicast mast to the SLIC by writing to the multicast
2862 * address mask registers
2863 */
2864 DBG_ERROR("%s (%s) WRITE mcastlow[%lx] mcasthigh[%lx]\n",
2865 __FUNCTION__, adapter->netdev->name,
2866 ((ulong) (adapter->MulticastMask & 0xFFFFFFFF)),
2867 ((ulong)
2868 ((adapter->MulticastMask >> 32) & 0xFFFFFFFF)));
2869
2870 WRITE_REG(sxg_regs->McastLow,
2871 (u32) (adapter->MulticastMask & 0xFFFFFFFF), FLUSH);
2872 WRITE_REG(sxg_regs->McastHigh,
2873 (u32) ((adapter->
2874 MulticastMask >> 32) & 0xFFFFFFFF), FLUSH);
2875 }
2876}
2877
2878static void sxg_unmap_mmio_space(p_adapter_t adapter)
2879{
2880#if LINUX_FREES_ADAPTER_RESOURCES
2881// if (adapter->Regs) {
2882// iounmap(adapter->Regs);
2883// }
2884// adapter->slic_regs = NULL;
2885#endif
2886}
2887
2888#if XXXTODO
2889/*
2890 * SxgFreeResources - Free everything allocated in SxgAllocateResources
2891 *
2892 * Arguments -
2893 * adapter - A pointer to our adapter structure
2894 *
2895 * Return
2896 * none
2897 */
2898void SxgFreeResources(p_adapter_t adapter)
2899{
2900 u32 RssIds, IsrCount;
2901 PTCP_OBJECT TcpObject;
2902 u32 i;
2903 BOOLEAN TimerCancelled;
2904
2905 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "FreeRes",
2906 adapter, adapter->MaxTcbs, 0, 0);
2907
2908 RssIds = SXG_RSS_CPU_COUNT(adapter);
2909 IsrCount = adapter->MsiEnabled ? RssIds : 1;
2910
2911 if (adapter->BasicAllocations == FALSE) {
2912 // No allocations have been made, including spinlocks,
2913 // or listhead initializations. Return.
2914 return;
2915 }
2916
2917 if (!(IsListEmpty(&adapter->AllRcvBlocks))) {
2918 SxgFreeRcvBlocks(adapter);
2919 }
2920 if (!(IsListEmpty(&adapter->AllSglBuffers))) {
2921 SxgFreeSglBuffers(adapter);
2922 }
2923 // Free event queues.
2924 if (adapter->EventRings) {
2925 pci_free_consistent(adapter->pcidev,
2926 sizeof(SXG_EVENT_RING) * RssIds,
2927 adapter->EventRings, adapter->PEventRings);
2928 }
2929 if (adapter->Isr) {
2930 pci_free_consistent(adapter->pcidev,
2931 sizeof(u32) * IsrCount,
2932 adapter->Isr, adapter->PIsr);
2933 }
2934 if (adapter->XmtRingZeroIndex) {
2935 pci_free_consistent(adapter->pcidev,
2936 sizeof(u32),
2937 adapter->XmtRingZeroIndex,
2938 adapter->PXmtRingZeroIndex);
2939 }
2940 if (adapter->IndirectionTable) {
2941 pci_free_consistent(adapter->pcidev,
2942 SXG_MAX_RSS_TABLE_SIZE,
2943 adapter->IndirectionTable,
2944 adapter->PIndirectionTable);
2945 }
2946
2947 SXG_FREE_PACKET_POOL(adapter->PacketPoolHandle);
2948 SXG_FREE_BUFFER_POOL(adapter->BufferPoolHandle);
2949
2950 // Unmap register spaces
2951 SxgUnmapResources(adapter);
2952
2953 // Deregister DMA
2954 if (adapter->DmaHandle) {
2955 SXG_DEREGISTER_DMA(adapter->DmaHandle);
2956 }
2957 // Deregister interrupt
2958 SxgDeregisterInterrupt(adapter);
2959
2960 // Possibly free system info (5.2 only)
2961 SXG_RELEASE_SYSTEM_INFO(adapter);
2962
2963 SxgDiagFreeResources(adapter);
2964
2965 SxgFreeMCastAddrs(adapter);
2966
2967 if (SXG_TIMER_ALLOCATED(adapter->ResetTimer)) {
2968 SXG_CANCEL_TIMER(adapter->ResetTimer, TimerCancelled);
2969 SXG_FREE_TIMER(adapter->ResetTimer);
2970 }
2971 if (SXG_TIMER_ALLOCATED(adapter->RssTimer)) {
2972 SXG_CANCEL_TIMER(adapter->RssTimer, TimerCancelled);
2973 SXG_FREE_TIMER(adapter->RssTimer);
2974 }
2975 if (SXG_TIMER_ALLOCATED(adapter->OffloadTimer)) {
2976 SXG_CANCEL_TIMER(adapter->OffloadTimer, TimerCancelled);
2977 SXG_FREE_TIMER(adapter->OffloadTimer);
2978 }
2979
2980 adapter->BasicAllocations = FALSE;
2981
2982 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XFreeRes",
2983 adapter, adapter->MaxTcbs, 0, 0);
2984}
2985#endif
2986
2987/*
2988 * sxg_allocate_complete -
2989 *
2990 * This routine is called when a memory allocation has completed.
2991 *
2992 * Arguments -
2993 * p_adapter_t - Our adapter structure
2994 * VirtualAddress - Memory virtual address
2995 * PhysicalAddress - Memory physical address
2996 * Length - Length of memory allocated (or 0)
2997 * Context - The type of buffer allocated
2998 *
2999 * Return
3000 * None.
3001 */
3002static void sxg_allocate_complete(p_adapter_t adapter,
3003 void *VirtualAddress,
3004 dma_addr_t PhysicalAddress,
3005 u32 Length, SXG_BUFFER_TYPE Context)
3006{
3007 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AllocCmp",
3008 adapter, VirtualAddress, Length, Context);
3009 ASSERT(adapter->AllocationsPending);
3010 --adapter->AllocationsPending;
3011
3012 switch (Context) {
3013
3014 case SXG_BUFFER_TYPE_RCV:
3015 sxg_allocate_rcvblock_complete(adapter,
3016 VirtualAddress,
3017 PhysicalAddress, Length);
3018 break;
3019 case SXG_BUFFER_TYPE_SGL:
3020 sxg_allocate_sgl_buffer_complete(adapter, (PSXG_SCATTER_GATHER)
3021 VirtualAddress,
3022 PhysicalAddress, Length);
3023 break;
3024 }
3025 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAlocCmp",
3026 adapter, VirtualAddress, Length, Context);
3027}
3028
3029/*
3030 * sxg_allocate_buffer_memory - Shared memory allocation routine used for
3031 * synchronous and asynchronous buffer allocations
3032 *
3033 * Arguments -
3034 * adapter - A pointer to our adapter structure
3035 * Size - block size to allocate
3036 * BufferType - Type of buffer to allocate
3037 *
3038 * Return
3039 * int
3040 */
3041static int sxg_allocate_buffer_memory(p_adapter_t adapter,
3042 u32 Size, SXG_BUFFER_TYPE BufferType)
3043{
3044 int status;
3045 void *Buffer;
3046 dma_addr_t pBuffer;
3047
3048 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AllocMem",
3049 adapter, Size, BufferType, 0);
3050 // Grab the adapter lock and check the state.
3051 // If we're in anything other than INITIALIZING or
3052 // RUNNING state, fail. This is to prevent
3053 // allocations in an improper driver state
3054 spin_lock(&adapter->AdapterLock);
3055
3056 // Increment the AllocationsPending count while holding
3057 // the lock. Pause processing relies on this
3058 ++adapter->AllocationsPending;
3059 spin_unlock(&adapter->AdapterLock);
3060
3061 // At initialization time allocate resources synchronously.
3062 Buffer = pci_alloc_consistent(adapter->pcidev, Size, &pBuffer);
3063 if (Buffer == NULL) {
3064 spin_lock(&adapter->AdapterLock);
3065 // Decrement the AllocationsPending count while holding
3066 // the lock. Pause processing relies on this
3067 --adapter->AllocationsPending;
3068 spin_unlock(&adapter->AdapterLock);
3069 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AlcMemF1",
3070 adapter, Size, BufferType, 0);
3071 return (STATUS_RESOURCES);
3072 }
3073 sxg_allocate_complete(adapter, Buffer, pBuffer, Size, BufferType);
3074 status = STATUS_SUCCESS;
3075
3076 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAlocMem",
3077 adapter, Size, BufferType, status);
3078 return (status);
3079}
3080
3081/*
3082 * sxg_allocate_rcvblock_complete - Complete a receive descriptor block allocation
3083 *
3084 * Arguments -
3085 * adapter - A pointer to our adapter structure
3086 * RcvBlock - receive block virtual address
3087 * PhysicalAddress - Physical address
3088 * Length - Memory length
3089 *
3090 * Return
3091 *
3092 */
3093static void sxg_allocate_rcvblock_complete(p_adapter_t adapter,
3094 void *RcvBlock,
3095 dma_addr_t PhysicalAddress,
3096 u32 Length)
3097{
3098 u32 i;
3099 u32 BufferSize = adapter->ReceiveBufferSize;
3100 u64 Paddr;
3101 PSXG_RCV_BLOCK_HDR RcvBlockHdr;
3102 unsigned char *RcvDataBuffer;
3103 PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
3104 PSXG_RCV_DESCRIPTOR_BLOCK RcvDescriptorBlock;
3105 PSXG_RCV_DESCRIPTOR_BLOCK_HDR RcvDescriptorBlockHdr;
3106
3107 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AlRcvBlk",
3108 adapter, RcvBlock, Length, 0);
3109 if (RcvBlock == NULL) {
3110 goto fail;
3111 }
3112 memset(RcvBlock, 0, Length);
3113 ASSERT((BufferSize == SXG_RCV_DATA_BUFFER_SIZE) ||
3114 (BufferSize == SXG_RCV_JUMBO_BUFFER_SIZE));
3115 ASSERT(Length == SXG_RCV_BLOCK_SIZE(BufferSize));
3116 // First, initialize the contained pool of receive data
3117 // buffers. This initialization requires NBL/NB/MDL allocations,
3118 // If any of them fail, free the block and return without
3119 // queueing the shared memory
3120 RcvDataBuffer = RcvBlock;
3121#if 0
3122 for (i = 0, Paddr = *PhysicalAddress;
3123 i < SXG_RCV_DESCRIPTORS_PER_BLOCK;
3124 i++, Paddr.LowPart += BufferSize, RcvDataBuffer += BufferSize)
3125#endif
3126 for (i = 0, Paddr = PhysicalAddress;
3127 i < SXG_RCV_DESCRIPTORS_PER_BLOCK;
3128 i++, Paddr += BufferSize, RcvDataBuffer += BufferSize) {
3129 //
3130 RcvDataBufferHdr =
3131 (PSXG_RCV_DATA_BUFFER_HDR) (RcvDataBuffer +
3132 SXG_RCV_DATA_BUFFER_HDR_OFFSET
3133 (BufferSize));
3134 RcvDataBufferHdr->VirtualAddress = RcvDataBuffer;
3135 RcvDataBufferHdr->PhysicalAddress = Paddr;
3136 RcvDataBufferHdr->State = SXG_BUFFER_UPSTREAM; // For FREE macro assertion
3137 RcvDataBufferHdr->Size =
3138 SXG_RCV_BUFFER_DATA_SIZE(BufferSize);
3139
3140 SXG_ALLOCATE_RCV_PACKET(adapter, RcvDataBufferHdr);
3141 if (RcvDataBufferHdr->SxgDumbRcvPacket == NULL)
3142 goto fail;
3143
3144 }
3145
3146 // Place this entire block of memory on the AllRcvBlocks queue so it can be
3147 // free later
3148 RcvBlockHdr =
3149 (PSXG_RCV_BLOCK_HDR) ((unsigned char *)RcvBlock +
3150 SXG_RCV_BLOCK_HDR_OFFSET(BufferSize));
3151 RcvBlockHdr->VirtualAddress = RcvBlock;
3152 RcvBlockHdr->PhysicalAddress = PhysicalAddress;
3153 spin_lock(&adapter->RcvQLock);
3154 adapter->AllRcvBlockCount++;
3155 InsertTailList(&adapter->AllRcvBlocks, &RcvBlockHdr->AllList);
3156 spin_unlock(&adapter->RcvQLock);
3157
3158 // Now free the contained receive data buffers that we initialized above
3159 RcvDataBuffer = RcvBlock;
3160 for (i = 0, Paddr = PhysicalAddress;
3161 i < SXG_RCV_DESCRIPTORS_PER_BLOCK;
3162 i++, Paddr += BufferSize, RcvDataBuffer += BufferSize) {
3163 RcvDataBufferHdr = (PSXG_RCV_DATA_BUFFER_HDR) (RcvDataBuffer +
3164 SXG_RCV_DATA_BUFFER_HDR_OFFSET
3165 (BufferSize));
3166 spin_lock(&adapter->RcvQLock);
3167 SXG_FREE_RCV_DATA_BUFFER(adapter, RcvDataBufferHdr);
3168 spin_unlock(&adapter->RcvQLock);
3169 }
3170
3171 // Locate the descriptor block and put it on a separate free queue
3172 RcvDescriptorBlock =
3173 (PSXG_RCV_DESCRIPTOR_BLOCK) ((unsigned char *)RcvBlock +
3174 SXG_RCV_DESCRIPTOR_BLOCK_OFFSET
3175 (BufferSize));
3176 RcvDescriptorBlockHdr =
3177 (PSXG_RCV_DESCRIPTOR_BLOCK_HDR) ((unsigned char *)RcvBlock +
3178 SXG_RCV_DESCRIPTOR_BLOCK_HDR_OFFSET
3179 (BufferSize));
3180 RcvDescriptorBlockHdr->VirtualAddress = RcvDescriptorBlock;
3181 RcvDescriptorBlockHdr->PhysicalAddress = Paddr;
3182 spin_lock(&adapter->RcvQLock);
3183 SXG_FREE_RCV_DESCRIPTOR_BLOCK(adapter, RcvDescriptorBlockHdr);
3184 spin_unlock(&adapter->RcvQLock);
3185 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAlRBlk",
3186 adapter, RcvBlock, Length, 0);
3187 return;
3188 fail:
3189 // Free any allocated resources
3190 if (RcvBlock) {
3191 RcvDataBuffer = RcvBlock;
3192 for (i = 0; i < SXG_RCV_DESCRIPTORS_PER_BLOCK;
3193 i++, RcvDataBuffer += BufferSize) {
3194 RcvDataBufferHdr =
3195 (PSXG_RCV_DATA_BUFFER_HDR) (RcvDataBuffer +
3196 SXG_RCV_DATA_BUFFER_HDR_OFFSET
3197 (BufferSize));
3198 SXG_FREE_RCV_PACKET(RcvDataBufferHdr);
3199 }
3200 pci_free_consistent(adapter->pcidev,
3201 Length, RcvBlock, PhysicalAddress);
3202 }
3203 DBG_ERROR("%s: OUT OF RESOURCES\n", __FUNCTION__);
3204 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_IMPORTANT, "RcvAFail",
3205 adapter, adapter->FreeRcvBufferCount,
3206 adapter->FreeRcvBlockCount, adapter->AllRcvBlockCount);
3207 adapter->Stats.NoMem++;
3208}
3209
3210/*
3211 * sxg_allocate_sgl_buffer_complete - Complete a SGL buffer allocation
3212 *
3213 * Arguments -
3214 * adapter - A pointer to our adapter structure
3215 * SxgSgl - SXG_SCATTER_GATHER buffer
3216 * PhysicalAddress - Physical address
3217 * Length - Memory length
3218 *
3219 * Return
3220 *
3221 */
3222static void sxg_allocate_sgl_buffer_complete(p_adapter_t adapter,
3223 PSXG_SCATTER_GATHER SxgSgl,
3224 dma_addr_t PhysicalAddress,
3225 u32 Length)
3226{
3227 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "AlSglCmp",
3228 adapter, SxgSgl, Length, 0);
3229 spin_lock(&adapter->SglQLock);
3230 adapter->AllSglBufferCount++;
3231 memset(SxgSgl, 0, sizeof(SXG_SCATTER_GATHER));
3232 SxgSgl->PhysicalAddress = PhysicalAddress; /* *PhysicalAddress; */
3233 SxgSgl->adapter = adapter; // Initialize backpointer once
3234 InsertTailList(&adapter->AllSglBuffers, &SxgSgl->AllList);
3235 spin_unlock(&adapter->SglQLock);
3236 SxgSgl->State = SXG_BUFFER_BUSY;
3237 SXG_FREE_SGL_BUFFER(adapter, SxgSgl, NULL);
3238 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XAlSgl",
3239 adapter, SxgSgl, Length, 0);
3240}
3241
3242static unsigned char temp_mac_address[6] =
3243 { 0x00, 0xab, 0xcd, 0xef, 0x12, 0x69 };
3244
3245static void sxg_adapter_set_hwaddr(p_adapter_t adapter)
3246{
3247// DBG_ERROR ("%s ENTER card->config_set[%x] port[%d] physport[%d] funct#[%d]\n", __FUNCTION__,
3248// card->config_set, adapter->port, adapter->physport, adapter->functionnumber);
3249//
3250// sxg_dbg_macaddrs(adapter);
3251
3252 memcpy(adapter->macaddr, temp_mac_address, sizeof(SXG_CONFIG_MAC));
3253// DBG_ERROR ("%s AFTER copying from config.macinfo into currmacaddr\n", __FUNCTION__);
3254// sxg_dbg_macaddrs(adapter);
3255 if (!(adapter->currmacaddr[0] ||
3256 adapter->currmacaddr[1] ||
3257 adapter->currmacaddr[2] ||
3258 adapter->currmacaddr[3] ||
3259 adapter->currmacaddr[4] || adapter->currmacaddr[5])) {
3260 memcpy(adapter->currmacaddr, adapter->macaddr, 6);
3261 }
3262 if (adapter->netdev) {
3263 memcpy(adapter->netdev->dev_addr, adapter->currmacaddr, 6);
3264 }
3265// DBG_ERROR ("%s EXIT port %d\n", __FUNCTION__, adapter->port);
3266 sxg_dbg_macaddrs(adapter);
3267
3268}
3269
3270static int sxg_mac_set_address(p_net_device dev, void *ptr)
3271{
3272#if XXXTODO
3273 p_adapter_t adapter = (p_adapter_t) netdev_priv(dev);
3274 struct sockaddr *addr = ptr;
3275
3276 DBG_ERROR("%s ENTER (%s)\n", __FUNCTION__, adapter->netdev->name);
3277
3278 if (netif_running(dev)) {
3279 return -EBUSY;
3280 }
3281 if (!adapter) {
3282 return -EBUSY;
3283 }
3284 DBG_ERROR("sxg: %s (%s) curr %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3285 __FUNCTION__, adapter->netdev->name, adapter->currmacaddr[0],
3286 adapter->currmacaddr[1], adapter->currmacaddr[2],
3287 adapter->currmacaddr[3], adapter->currmacaddr[4],
3288 adapter->currmacaddr[5]);
3289 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
3290 memcpy(adapter->currmacaddr, addr->sa_data, dev->addr_len);
3291 DBG_ERROR("sxg: %s (%s) new %2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X\n",
3292 __FUNCTION__, adapter->netdev->name, adapter->currmacaddr[0],
3293 adapter->currmacaddr[1], adapter->currmacaddr[2],
3294 adapter->currmacaddr[3], adapter->currmacaddr[4],
3295 adapter->currmacaddr[5]);
3296
3297 sxg_config_set(adapter, TRUE);
3298#endif
3299 return 0;
3300}
3301
3302/*****************************************************************************/
3303/************* SXG DRIVER FUNCTIONS (below) ********************************/
3304/*****************************************************************************/
3305
3306/*
3307 * sxg_initialize_adapter - Initialize adapter
3308 *
3309 * Arguments -
3310 * adapter - A pointer to our adapter structure
3311 *
3312 * Return
3313 * int
3314 */
3315static int sxg_initialize_adapter(p_adapter_t adapter)
3316{
3317 u32 RssIds, IsrCount;
3318 u32 i;
3319 int status;
3320
3321 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "InitAdpt",
3322 adapter, 0, 0, 0);
3323
3324 RssIds = 1; // XXXTODO SXG_RSS_CPU_COUNT(adapter);
3325 IsrCount = adapter->MsiEnabled ? RssIds : 1;
3326
3327 // Sanity check SXG_UCODE_REGS structure definition to
3328 // make sure the length is correct
3329 ASSERT(sizeof(SXG_UCODE_REGS) == SXG_REGISTER_SIZE_PER_CPU);
3330
3331 // Disable interrupts
3332 SXG_DISABLE_ALL_INTERRUPTS(adapter);
3333
3334 // Set MTU
3335 ASSERT((adapter->FrameSize == ETHERMAXFRAME) ||
3336 (adapter->FrameSize == JUMBOMAXFRAME));
3337 WRITE_REG(adapter->UcodeRegs[0].LinkMtu, adapter->FrameSize, TRUE);
3338
3339 // Set event ring base address and size
3340 WRITE_REG64(adapter,
3341 adapter->UcodeRegs[0].EventBase, adapter->PEventRings, 0);
3342 WRITE_REG(adapter->UcodeRegs[0].EventSize, EVENT_RING_SIZE, TRUE);
3343
3344 // Per-ISR initialization
3345 for (i = 0; i < IsrCount; i++) {
3346 u64 Addr;
3347 // Set interrupt status pointer
3348 Addr = adapter->PIsr + (i * sizeof(u32));
3349 WRITE_REG64(adapter, adapter->UcodeRegs[i].Isp, Addr, i);
3350 }
3351
3352 // XMT ring zero index
3353 WRITE_REG64(adapter,
3354 adapter->UcodeRegs[0].SPSendIndex,
3355 adapter->PXmtRingZeroIndex, 0);
3356
3357 // Per-RSS initialization
3358 for (i = 0; i < RssIds; i++) {
3359 // Release all event ring entries to the Microcode
3360 WRITE_REG(adapter->UcodeRegs[i].EventRelease, EVENT_RING_SIZE,
3361 TRUE);
3362 }
3363
3364 // Transmit ring base and size
3365 WRITE_REG64(adapter,
3366 adapter->UcodeRegs[0].XmtBase, adapter->PXmtRings, 0);
3367 WRITE_REG(adapter->UcodeRegs[0].XmtSize, SXG_XMT_RING_SIZE, TRUE);
3368
3369 // Receive ring base and size
3370 WRITE_REG64(adapter,
3371 adapter->UcodeRegs[0].RcvBase, adapter->PRcvRings, 0);
3372 WRITE_REG(adapter->UcodeRegs[0].RcvSize, SXG_RCV_RING_SIZE, TRUE);
3373
3374 // Populate the card with receive buffers
3375 sxg_stock_rcv_buffers(adapter);
3376
3377 // Initialize checksum offload capabilities. At the moment
3378 // we always enable IP and TCP receive checksums on the card.
3379 // Depending on the checksum configuration specified by the
3380 // user, we can choose to report or ignore the checksum
3381 // information provided by the card.
3382 WRITE_REG(adapter->UcodeRegs[0].ReceiveChecksum,
3383 SXG_RCV_TCP_CSUM_ENABLED | SXG_RCV_IP_CSUM_ENABLED, TRUE);
3384
3385 // Initialize the MAC, XAUI
3386 DBG_ERROR("sxg: %s ENTER sxg_initialize_link\n", __FUNCTION__);
3387 status = sxg_initialize_link(adapter);
3388 DBG_ERROR("sxg: %s EXIT sxg_initialize_link status[%x]\n", __FUNCTION__,
3389 status);
3390 if (status != STATUS_SUCCESS) {
3391 return (status);
3392 }
3393 // Initialize Dead to FALSE.
3394 // SlicCheckForHang or SlicDumpThread will take it from here.
3395 adapter->Dead = FALSE;
3396 adapter->PingOutstanding = FALSE;
3397
3398 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XInit",
3399 adapter, 0, 0, 0);
3400 return (STATUS_SUCCESS);
3401}
3402
3403/*
3404 * sxg_fill_descriptor_block - Populate a descriptor block and give it to
3405 * the card. The caller should hold the RcvQLock
3406 *
3407 * Arguments -
3408 * adapter - A pointer to our adapter structure
3409 * RcvDescriptorBlockHdr - Descriptor block to fill
3410 *
3411 * Return
3412 * status
3413 */
3414static int sxg_fill_descriptor_block(p_adapter_t adapter,
3415 PSXG_RCV_DESCRIPTOR_BLOCK_HDR
3416 RcvDescriptorBlockHdr)
3417{
3418 u32 i;
3419 PSXG_RING_INFO RcvRingInfo = &adapter->RcvRingZeroInfo;
3420 PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
3421 PSXG_RCV_DESCRIPTOR_BLOCK RcvDescriptorBlock;
3422 PSXG_CMD RingDescriptorCmd;
3423 PSXG_RCV_RING RingZero = &adapter->RcvRings[0];
3424
3425 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "FilBlk",
3426 adapter, adapter->RcvBuffersOnCard,
3427 adapter->FreeRcvBufferCount, adapter->AllRcvBlockCount);
3428
3429 ASSERT(RcvDescriptorBlockHdr);
3430
3431 // If we don't have the resources to fill the descriptor block,
3432 // return failure
3433 if ((adapter->FreeRcvBufferCount < SXG_RCV_DESCRIPTORS_PER_BLOCK) ||
3434 SXG_RING_FULL(RcvRingInfo)) {
3435 adapter->Stats.NoMem++;
3436 return (STATUS_FAILURE);
3437 }
3438 // Get a ring descriptor command
3439 SXG_GET_CMD(RingZero,
3440 RcvRingInfo, RingDescriptorCmd, RcvDescriptorBlockHdr);
3441 ASSERT(RingDescriptorCmd);
3442 RcvDescriptorBlockHdr->State = SXG_BUFFER_ONCARD;
3443 RcvDescriptorBlock =
3444 (PSXG_RCV_DESCRIPTOR_BLOCK) RcvDescriptorBlockHdr->VirtualAddress;
3445
3446 // Fill in the descriptor block
3447 for (i = 0; i < SXG_RCV_DESCRIPTORS_PER_BLOCK; i++) {
3448 SXG_GET_RCV_DATA_BUFFER(adapter, RcvDataBufferHdr);
3449 ASSERT(RcvDataBufferHdr);
3450 SXG_REINIATIALIZE_PACKET(RcvDataBufferHdr->SxgDumbRcvPacket);
3451 RcvDataBufferHdr->State = SXG_BUFFER_ONCARD;
3452 RcvDescriptorBlock->Descriptors[i].VirtualAddress =
3453 (void *)RcvDataBufferHdr;
3454 RcvDescriptorBlock->Descriptors[i].PhysicalAddress =
3455 RcvDataBufferHdr->PhysicalAddress;
3456 }
3457 // Add the descriptor block to receive descriptor ring 0
3458 RingDescriptorCmd->Sgl = RcvDescriptorBlockHdr->PhysicalAddress;
3459
3460 // RcvBuffersOnCard is not protected via the receive lock (see
3461 // sxg_process_event_queue) We don't want to grap a lock every time a
3462 // buffer is returned to us, so we use atomic interlocked functions
3463 // instead.
3464 adapter->RcvBuffersOnCard += SXG_RCV_DESCRIPTORS_PER_BLOCK;
3465
3466 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DscBlk",
3467 RcvDescriptorBlockHdr,
3468 RingDescriptorCmd, RcvRingInfo->Head, RcvRingInfo->Tail);
3469
3470 WRITE_REG(adapter->UcodeRegs[0].RcvCmd, 1, true);
3471 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XFilBlk",
3472 adapter, adapter->RcvBuffersOnCard,
3473 adapter->FreeRcvBufferCount, adapter->AllRcvBlockCount);
3474 return (STATUS_SUCCESS);
3475}
3476
3477/*
3478 * sxg_stock_rcv_buffers - Stock the card with receive buffers
3479 *
3480 * Arguments -
3481 * adapter - A pointer to our adapter structure
3482 *
3483 * Return
3484 * None
3485 */
3486static void sxg_stock_rcv_buffers(p_adapter_t adapter)
3487{
3488 PSXG_RCV_DESCRIPTOR_BLOCK_HDR RcvDescriptorBlockHdr;
3489
3490 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "StockBuf",
3491 adapter, adapter->RcvBuffersOnCard,
3492 adapter->FreeRcvBufferCount, adapter->AllRcvBlockCount);
3493 // First, see if we've got less than our minimum threshold of
3494 // receive buffers, there isn't an allocation in progress, and
3495 // we haven't exceeded our maximum.. get another block of buffers
3496 // None of this needs to be SMP safe. It's round numbers.
3497 if ((adapter->FreeRcvBufferCount < SXG_MIN_RCV_DATA_BUFFERS) &&
3498 (adapter->AllRcvBlockCount < SXG_MAX_RCV_BLOCKS) &&
3499 (adapter->AllocationsPending == 0)) {
3500 sxg_allocate_buffer_memory(adapter,
3501 SXG_RCV_BLOCK_SIZE(adapter->
3502 ReceiveBufferSize),
3503 SXG_BUFFER_TYPE_RCV);
3504 }
3505 // Now grab the RcvQLock lock and proceed
3506 spin_lock(&adapter->RcvQLock);
3507 while (adapter->RcvBuffersOnCard < SXG_RCV_DATA_BUFFERS) {
3508 PLIST_ENTRY _ple;
3509
3510 // Get a descriptor block
3511 RcvDescriptorBlockHdr = NULL;
3512 if (adapter->FreeRcvBlockCount) {
3513 _ple = RemoveHeadList(&adapter->FreeRcvBlocks);
3514 RcvDescriptorBlockHdr =
3515 container_of(_ple, SXG_RCV_DESCRIPTOR_BLOCK_HDR,
3516 FreeList);
3517 adapter->FreeRcvBlockCount--;
3518 RcvDescriptorBlockHdr->State = SXG_BUFFER_BUSY;
3519 }
3520
3521 if (RcvDescriptorBlockHdr == NULL) {
3522 // Bail out..
3523 adapter->Stats.NoMem++;
3524 break;
3525 }
3526 // Fill in the descriptor block and give it to the card
3527 if (sxg_fill_descriptor_block(adapter, RcvDescriptorBlockHdr) ==
3528 STATUS_FAILURE) {
3529 // Free the descriptor block
3530 SXG_FREE_RCV_DESCRIPTOR_BLOCK(adapter,
3531 RcvDescriptorBlockHdr);
3532 break;
3533 }
3534 }
3535 spin_unlock(&adapter->RcvQLock);
3536 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XFilBlks",
3537 adapter, adapter->RcvBuffersOnCard,
3538 adapter->FreeRcvBufferCount, adapter->AllRcvBlockCount);
3539}
3540
3541/*
3542 * sxg_complete_descriptor_blocks - Return descriptor blocks that have been
3543 * completed by the microcode
3544 *
3545 * Arguments -
3546 * adapter - A pointer to our adapter structure
3547 * Index - Where the microcode is up to
3548 *
3549 * Return
3550 * None
3551 */
3552static void sxg_complete_descriptor_blocks(p_adapter_t adapter,
3553 unsigned char Index)
3554{
3555 PSXG_RCV_RING RingZero = &adapter->RcvRings[0];
3556 PSXG_RING_INFO RcvRingInfo = &adapter->RcvRingZeroInfo;
3557 PSXG_RCV_DESCRIPTOR_BLOCK_HDR RcvDescriptorBlockHdr;
3558 PSXG_CMD RingDescriptorCmd;
3559
3560 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "CmpRBlks",
3561 adapter, Index, RcvRingInfo->Head, RcvRingInfo->Tail);
3562
3563 // Now grab the RcvQLock lock and proceed
3564 spin_lock(&adapter->RcvQLock);
3565 ASSERT(Index != RcvRingInfo->Tail);
3566 while (RcvRingInfo->Tail != Index) {
3567 //
3568 // Locate the current Cmd (ring descriptor entry), and
3569 // associated receive descriptor block, and advance
3570 // the tail
3571 //
3572 SXG_RETURN_CMD(RingZero,
3573 RcvRingInfo,
3574 RingDescriptorCmd, RcvDescriptorBlockHdr);
3575 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "CmpRBlk",
3576 RcvRingInfo->Head, RcvRingInfo->Tail,
3577 RingDescriptorCmd, RcvDescriptorBlockHdr);
3578
3579 // Clear the SGL field
3580 RingDescriptorCmd->Sgl = 0;
3581 // Attempt to refill it and hand it right back to the
3582 // card. If we fail to refill it, free the descriptor block
3583 // header. The card will be restocked later via the
3584 // RcvBuffersOnCard test
3585 if (sxg_fill_descriptor_block(adapter, RcvDescriptorBlockHdr) ==
3586 STATUS_FAILURE) {
3587 SXG_FREE_RCV_DESCRIPTOR_BLOCK(adapter,
3588 RcvDescriptorBlockHdr);
3589 }
3590 }
3591 spin_unlock(&adapter->RcvQLock);
3592 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "XCRBlks",
3593 adapter, Index, RcvRingInfo->Head, RcvRingInfo->Tail);
3594}
3595
3596static struct pci_driver sxg_driver = {
3597 .name = DRV_NAME,
3598 .id_table = sxg_pci_tbl,
3599 .probe = sxg_entry_probe,
3600 .remove = sxg_entry_remove,
3601#if SXG_POWER_MANAGEMENT_ENABLED
3602 .suspend = sxgpm_suspend,
3603 .resume = sxgpm_resume,
3604#endif
3605/* .shutdown = slic_shutdown, MOOK_INVESTIGATE */
3606};
3607
3608static int __init sxg_module_init(void)
3609{
3610 sxg_init_driver();
3611
3612 if (debug >= 0)
3613 sxg_debug = debug;
3614
3615 return pci_register_driver(&sxg_driver);
3616}
3617
3618static void __exit sxg_module_cleanup(void)
3619{
3620 pci_unregister_driver(&sxg_driver);
3621}
3622
3623module_init(sxg_module_init);
3624module_exit(sxg_module_cleanup);
diff --git a/drivers/staging/sxg/sxg.h b/drivers/staging/sxg/sxg.h
new file mode 100644
index 00000000000..844ca56f280
--- /dev/null
+++ b/drivers/staging/sxg/sxg.h
@@ -0,0 +1,773 @@
1/**************************************************************************
2 *
3 * Copyright © 2000-2008 Alacritech, Inc. All rights reserved.
4 *
5 * $Id: sxg.h,v 1.3 2008/07/24 17:25:08 chris Exp $
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
28 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * The views and conclusions contained in the software and documentation
32 * are those of the authors and should not be interpreted as representing
33 * official policies, either expressed or implied, of Alacritech, Inc.
34 *
35 **************************************************************************/
36
37/*
38 * FILENAME: sxg.h
39 *
40 * This is the base set of header definitions for the SXG driver.
41 */
42#ifndef __SXG_DRIVER_H__
43#define __SXG_DRIVER_H__
44
45#define p_net_device struct net_device *
46// SXG_STATS - Probably move these to someplace where
47// the slicstat (sxgstat?) program can get them.
48typedef struct _SXG_STATS {
49 // Xmt
50 u32 XmtNBL; // Offload send NBL count
51 u64 DumbXmtBytes; // Dumbnic send bytes
52 u64 SlowXmtBytes; // Slowpath send bytes
53 u64 FastXmtBytes; // Fastpath send bytes
54 u64 DumbXmtPkts; // Dumbnic send packets
55 u64 SlowXmtPkts; // Slowpath send packets
56 u64 FastXmtPkts; // Fastpath send packets
57 u64 DumbXmtUcastPkts; // directed packets
58 u64 DumbXmtMcastPkts; // Multicast packets
59 u64 DumbXmtBcastPkts; // OID_GEN_BROADCAST_FRAMES_RCV
60 u64 DumbXmtUcastBytes; // OID_GEN_DIRECTED_BYTES_XMIT
61 u64 DumbXmtMcastBytes; // OID_GEN_MULTICAST_BYTES_XMIT
62 u64 DumbXmtBcastBytes; // OID_GEN_BROADCAST_BYTES_XMIT
63 u64 XmtErrors; // OID_GEN_XMIT_ERROR
64 u64 XmtDiscards; // OID_GEN_XMIT_DISCARDS
65 u64 XmtOk; // OID_GEN_XMIT_OK
66 u64 XmtQLen; // OID_GEN_TRANSMIT_QUEUE_LENGTH
67 u64 XmtZeroFull; // Transmit ring zero full
68 // Rcv
69 u32 RcvNBL; // Offload recieve NBL count
70 u64 DumbRcvBytes; // dumbnic recv bytes
71 u64 DumbRcvUcastBytes; // OID_GEN_DIRECTED_BYTES_RCV
72 u64 DumbRcvMcastBytes; // OID_GEN_MULTICAST_BYTES_RCV
73 u64 DumbRcvBcastBytes; // OID_GEN_BROADCAST_BYTES_RCV
74 u64 SlowRcvBytes; // Slowpath recv bytes
75 u64 FastRcvBytes; // Fastpath recv bytes
76 u64 DumbRcvPkts; // OID_GEN_DIRECTED_FRAMES_RCV
77 u64 DumbRcvTcpPkts; // See SxgCollectStats
78 u64 DumbRcvUcastPkts; // directed packets
79 u64 DumbRcvMcastPkts; // Multicast packets
80 u64 DumbRcvBcastPkts; // OID_GEN_BROADCAST_FRAMES_RCV
81 u64 SlowRcvPkts; // OID_GEN_DIRECTED_FRAMES_RCV
82 u64 RcvErrors; // OID_GEN_RCV_ERROR
83 u64 RcvDiscards; // OID_GEN_RCV_DISCARDS
84 u64 RcvNoBuffer; // OID_GEN_RCV_NO_BUFFER
85 u64 PdqFull; // Processed Data Queue Full
86 u64 EventRingFull; // Event ring full
87 // Verbose stats
88 u64 MaxSends; // Max sends outstanding
89 u64 NoSglBuf; // SGL buffer allocation failure
90 u64 SglFail; // NDIS SGL failure
91 u64 SglAsync; // NDIS SGL failure
92 u64 NoMem; // Memory allocation failure
93 u64 NumInts; // Interrupts
94 u64 FalseInts; // Interrupt with ISR == 0
95 u64 XmtDrops; // No sahara DRAM buffer for xmt
96 // Sahara receive status
97 u64 TransportCsum; // SXG_RCV_STATUS_TRANSPORT_CSUM
98 u64 TransportUflow; // SXG_RCV_STATUS_TRANSPORT_UFLOW
99 u64 TransportHdrLen; // SXG_RCV_STATUS_TRANSPORT_HDRLEN
100 u64 NetworkCsum; // SXG_RCV_STATUS_NETWORK_CSUM:
101 u64 NetworkUflow; // SXG_RCV_STATUS_NETWORK_UFLOW:
102 u64 NetworkHdrLen; // SXG_RCV_STATUS_NETWORK_HDRLEN:
103 u64 Parity; // SXG_RCV_STATUS_PARITY
104 u64 LinkParity; // SXG_RCV_STATUS_LINK_PARITY:
105 u64 LinkEarly; // SXG_RCV_STATUS_LINK_EARLY:
106 u64 LinkBufOflow; // SXG_RCV_STATUS_LINK_BUFOFLOW:
107 u64 LinkCode; // SXG_RCV_STATUS_LINK_CODE:
108 u64 LinkDribble; // SXG_RCV_STATUS_LINK_DRIBBLE:
109 u64 LinkCrc; // SXG_RCV_STATUS_LINK_CRC:
110 u64 LinkOflow; // SXG_RCV_STATUS_LINK_OFLOW:
111 u64 LinkUflow; // SXG_RCV_STATUS_LINK_UFLOW:
112} SXG_STATS, *PSXG_STATS;
113
114
115/****************************************************************************
116 * DUMB-NIC Send path definitions
117 ****************************************************************************/
118
119#define SXG_COMPLETE_DUMB_SEND(_pAdapt, _skb) { \
120 ASSERT(_skb); \
121 dev_kfree_skb_irq(_skb); \
122}
123
124#define SXG_DROP_DUMB_SEND(_pAdapt, _skb) { \
125 ASSERT(_skb); \
126 dev_kfree_skb(_skb); \
127}
128
129// Locate current receive header buffer location. Use this
130// instead of RcvDataHdr->VirtualAddress since the data
131// may have been offset by SXG_ADVANCE_MDL_OFFSET
132#define SXG_RECEIVE_DATA_LOCATION(_RcvDataHdr) (_RcvDataHdr)->skb->data
133
134/************************************************************************
135 * Dumb-NIC receive processing
136 ************************************************************************/
137// Define an SXG_PACKET as an NDIS_PACKET
138#define PSXG_PACKET struct sk_buff *
139// Indications array size
140#define SXG_RCV_ARRAYSIZE 64
141
142#define SXG_ALLOCATE_RCV_PACKET(_pAdapt, _RcvDataBufferHdr) { \
143 struct sk_buff * skb; \
144 skb = alloc_skb(2048, GFP_ATOMIC); \
145 if (skb) { \
146 (_RcvDataBufferHdr)->skb = skb; \
147 skb->next = NULL; \
148 } else { \
149 (_RcvDataBufferHdr)->skb = NULL; \
150 } \
151}
152
153#define SXG_FREE_RCV_PACKET(_RcvDataBufferHdr) { \
154 if((_RcvDataBufferHdr)->skb) { \
155 dev_kfree_skb((_RcvDataBufferHdr)->skb); \
156 } \
157}
158
159// Macro to add a NDIS_PACKET to an indication array
160// If we fill up our array of packet pointers, then indicate this
161// block up now and start on a new one.
162#define SXG_ADD_RCV_PACKET(_pAdapt, _Packet, _PrevPacket, _IndicationList, _NumPackets) { \
163 (_IndicationList)[_NumPackets] = (_Packet); \
164 (_NumPackets)++; \
165 if((_NumPackets) == SXG_RCV_ARRAYSIZE) { \
166 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "IndicRcv", \
167 (_NumPackets), 0, 0, 0); \
168 netif_rx((_IndicationList),(_NumPackets)); \
169 (_NumPackets) = 0; \
170 } \
171}
172
173#define SXG_INDICATE_PACKETS(_pAdapt, _IndicationList, _NumPackets) { \
174 if(_NumPackets) { \
175 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "IndicRcv", \
176 (_NumPackets), 0, 0, 0); \
177 netif_rx((_IndicationList),(_NumPackets)); \
178 (_NumPackets) = 0; \
179 } \
180}
181
182#define SXG_REINIATIALIZE_PACKET(_Packet) \
183 {} /*_NdisReinitializePacket(_Packet)*/ /* this is not necessary with an skb */
184
185// Definitions to initialize Dumb-nic Receive NBLs
186#define SXG_RCV_PACKET_BUFFER_HDR(_Packet) (((PSXG_RCV_NBL_RESERVED)((_Packet)->MiniportReservedEx))->RcvDataBufferHdr)
187
188#define SXG_RCV_SET_CHECKSUM_INFO(_Packet, _Cpi) \
189 NDIS_PER_PACKET_INFO_FROM_PACKET((_Packet), TcpIpChecksumPacketInfo) = (PVOID)(_Cpi)
190
191#define SXG_RCV_SET_TOEPLITZ(_Packet, _Toeplitz, _Type, _Function) { \
192 NDIS_PACKET_SET_HASH_VALUE((_Packet), (_Toeplitz)); \
193 NDIS_PACKET_SET_HASH_TYPE((_Packet), (_Type)); \
194 NDIS_PACKET_SET_HASH_FUNCTION((_Packet), (_Function)); \
195}
196
197#define SXG_RCV_SET_VLAN_INFO(_Packet, _VlanId, _Priority) { \
198 NDIS_PACKET_8021Q_INFO _Packet8021qInfo; \
199 _Packet8021qInfo.TagHeader.VlanId = (_VlanId); \
200 _Packet8021qInfo.TagHeader.UserPriority = (_Priority); \
201 NDIS_PER_PACKET_INFO_FROM_PACKET((_Packet), Ieee8021QNetBufferListInfo) = \
202 _Packet8021qInfo.Value; \
203}
204
205#define SXG_ADJUST_RCV_PACKET(_Packet, _RcvDataBufferHdr, _Event) { \
206 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "DumbRcv", \
207 (_RcvDataBufferHdr), (_Packet), \
208 (_Event)->Status, 0); \
209 ASSERT((_Event)->Length <= (_RcvDataBufferHdr)->Size); \
210 Packet->len = (_Event)->Length; \
211}
212
213///////////////////////////////////////////////////////////////////////////////
214// Macros to free a receive data buffer and receive data descriptor block
215///////////////////////////////////////////////////////////////////////////////
216// NOTE - Lock must be held with RCV macros
217#define SXG_GET_RCV_DATA_BUFFER(_pAdapt, _Hdr) { \
218 PLIST_ENTRY _ple; \
219 _Hdr = NULL; \
220 if((_pAdapt)->FreeRcvBufferCount) { \
221 ASSERT(!(IsListEmpty(&(_pAdapt)->FreeRcvBuffers))); \
222 _ple = RemoveHeadList(&(_pAdapt)->FreeRcvBuffers); \
223 (_Hdr) = container_of(_ple, SXG_RCV_DATA_BUFFER_HDR, FreeList); \
224 (_pAdapt)->FreeRcvBufferCount--; \
225 ASSERT((_Hdr)->State == SXG_BUFFER_FREE); \
226 } \
227}
228
229#define SXG_FREE_RCV_DATA_BUFFER(_pAdapt, _Hdr) { \
230 SXG_TRACE(TRACE_SXG, SxgTraceBuffer, TRACE_NOISY, "RtnDHdr", \
231 (_Hdr), (_pAdapt)->FreeRcvBufferCount, \
232 (_Hdr)->State, (_Hdr)->VirtualAddress); \
233/* SXG_RESTORE_MDL_OFFSET(_Hdr); */ \
234 (_pAdapt)->FreeRcvBufferCount++; \
235 ASSERT(((_pAdapt)->AllRcvBlockCount * SXG_RCV_DESCRIPTORS_PER_BLOCK) >= (_pAdapt)->FreeRcvBufferCount); \
236 ASSERT((_Hdr)->State != SXG_BUFFER_FREE); \
237 (_Hdr)->State = SXG_BUFFER_FREE; \
238 InsertTailList(&(_pAdapt)->FreeRcvBuffers, &((_Hdr)->FreeList)); \
239}
240
241#define SXG_FREE_RCV_DESCRIPTOR_BLOCK(_pAdapt, _Hdr) { \
242 ASSERT((_Hdr)->State != SXG_BUFFER_FREE); \
243 (_Hdr)->State = SXG_BUFFER_FREE; \
244 (_pAdapt)->FreeRcvBlockCount++; \
245 ASSERT((_pAdapt)->AllRcvBlockCount >= (_pAdapt)->FreeRcvBlockCount); \
246 InsertTailList(&(_pAdapt)->FreeRcvBlocks, &(_Hdr)->FreeList); \
247}
248
249// SGL macros
250#define SXG_FREE_SGL_BUFFER(_pAdapt, _Sgl, _NB) { \
251 spin_lock(&(_pAdapt)->SglQLock); \
252 (_pAdapt)->FreeSglBufferCount++; \
253 ASSERT((_pAdapt)->AllSglBufferCount >= (_pAdapt)->FreeSglBufferCount);\
254 ASSERT(!((_Sgl)->State & SXG_BUFFER_FREE)); \
255 (_Sgl)->State = SXG_BUFFER_FREE; \
256 InsertTailList(&(_pAdapt)->FreeSglBuffers, &(_Sgl)->FreeList); \
257 spin_unlock(&(_pAdapt)->SglQLock); \
258}
259
260// Get an SGL buffer from the free queue. The first part of this macro
261// attempts to keep ahead of buffer depletion by allocating more when
262// we hit a minimum threshold. Note that we don't grab the lock
263// until after that. We're dealing with round numbers here, so we don't need to,
264// and not grabbing it avoids a possible double-trip.
265#define SXG_GET_SGL_BUFFER(_pAdapt, _Sgl) { \
266 PLIST_ENTRY _ple; \
267 if ((_pAdapt->FreeSglBufferCount < SXG_MIN_SGL_BUFFERS) && \
268 (_pAdapt->AllSglBufferCount < SXG_MAX_SGL_BUFFERS) && \
269 (_pAdapt->AllocationsPending == 0)) { \
270 sxg_allocate_buffer_memory(_pAdapt, \
271 (sizeof(SXG_SCATTER_GATHER) + SXG_SGL_BUF_SIZE),\
272 SXG_BUFFER_TYPE_SGL); \
273 } \
274 _Sgl = NULL; \
275 spin_lock(&(_pAdapt)->SglQLock); \
276 if((_pAdapt)->FreeSglBufferCount) { \
277 ASSERT(!(IsListEmpty(&(_pAdapt)->FreeSglBuffers))); \
278 _ple = RemoveHeadList(&(_pAdapt)->FreeSglBuffers); \
279 (_Sgl) = container_of(_ple, SXG_SCATTER_GATHER, FreeList); \
280 (_pAdapt)->FreeSglBufferCount--; \
281 ASSERT((_Sgl)->State == SXG_BUFFER_FREE); \
282 (_Sgl)->State = SXG_BUFFER_BUSY; \
283 (_Sgl)->pSgl = NULL; \
284 } \
285 spin_unlock(&(_pAdapt)->SglQLock); \
286}
287
288//
289// SXG_MULTICAST_ADDRESS
290//
291// Linked list of multicast addresses.
292typedef struct _SXG_MULTICAST_ADDRESS {
293 unsigned char Address[6];
294 struct _SXG_MULTICAST_ADDRESS *Next;
295} SXG_MULTICAST_ADDRESS, *PSXG_MULTICAST_ADDRESS;
296
297// Structure to maintain chimney send and receive buffer queues.
298// This structure maintains NET_BUFFER_LIST queues that are
299// given to us via the Chimney MiniportTcpOffloadSend and
300// MiniportTcpOffloadReceive routines. This structure DOES NOT
301// manage our data buffer queue
302typedef struct _SXG_BUFFER_QUEUE {
303 u32 Type; // Slow or fast - See below
304 u32 Direction; // Xmt or Rcv
305 u32 Bytes; // Byte count
306 u32 * Head; // Send queue head
307 u32 * Tail; // Send queue tail
308// PNET_BUFFER_LIST NextNBL; // Short cut - next NBL
309// PNET_BUFFER NextNB; // Short cut - next NB
310} SXG_BUFFER_QUEUE, *PSXG_BUFFER_QUEUE;
311
312#define SXG_SLOW_SEND_BUFFER 0
313#define SXG_FAST_SEND_BUFFER 1
314#define SXG_RECEIVE_BUFFER 2
315
316#define SXG_INIT_BUFFER(_Buffer, _Type) { \
317 (_Buffer)->Type = (_Type); \
318 if((_Type) == SXG_RECEIVE_BUFFER) { \
319 (_Buffer)->Direction = 0; \
320 } else { \
321 (_Buffer)->Direction = NDIS_SG_LIST_WRITE_TO_DEVICE; \
322 } \
323 (_Buffer)->Bytes = 0; \
324 (_Buffer)->Head = NULL; \
325 (_Buffer)->Tail = NULL; \
326}
327
328
329#define SXG_RSS_CPU_COUNT(_pAdapt) \
330 ((_pAdapt)->RssEnabled ? NR_CPUS : 1)
331
332/****************************************************************************
333 * DRIVER and ADAPTER structures
334 ****************************************************************************/
335
336// Adapter states - These states closely match the adapter states
337// documented in the DDK (with a few exceptions).
338typedef enum _SXG_STATE {
339 SXG_STATE_INITIALIZING, // Initializing
340 SXG_STATE_BOOTDIAG, // Boot-Diagnostic mode
341 SXG_STATE_PAUSING, // Pausing
342 SXG_STATE_PAUSED, // Paused
343 SXG_STATE_RUNNING, // Running
344 SXG_STATE_RESETTING, // Reset in progress
345 SXG_STATE_SLEEP, // Sleeping
346 SXG_STATE_DIAG, // Diagnostic mode
347 SXG_STATE_HALTING, // Halting
348 SXG_STATE_HALTED, // Down or not-initialized
349 SXG_STATE_SHUTDOWN // shutdown
350} SXG_STATE, *PSXG_STATE;
351
352// Link state
353typedef enum _SXG_LINK_STATE {
354 SXG_LINK_DOWN,
355 SXG_LINK_UP
356} SXG_LINK_STATE, *PSXG_LINK_STATE;
357
358// Link initialization timeout in 100us units
359#define SXG_LINK_TIMEOUT 100000 // 10 Seconds - REDUCE!
360
361
362// Microcode file selection codes
363typedef enum _SXG_UCODE_SEL {
364 SXG_UCODE_SAHARA, // Sahara ucode
365 SXG_UCODE_SDIAGCPU, // Sahara CPU diagnostic ucode
366 SXG_UCODE_SDIAGSYS // Sahara system diagnostic ucode
367} SXG_UCODE_SEL;
368
369
370#define SXG_DISABLE_ALL_INTERRUPTS(_padapt) sxg_disable_interrupt(_padapt)
371#define SXG_ENABLE_ALL_INTERRUPTS(_padapt) sxg_enable_interrupt(_padapt)
372
373// This probably lives in a proto.h file. Move later
374#define SXG_MULTICAST_PACKET(_pether) ((_pether)->ether_dhost[0] & 0x01)
375#define SXG_BROADCAST_PACKET(_pether) ((*(u32 *)(_pether)->ether_dhost == 0xFFFFFFFF) && \
376 (*(u16 *)&(_pether)->ether_dhost[4] == 0xFFFF))
377
378// For DbgPrints
379#define SXG_ID DPFLTR_IHVNETWORK_ID
380#define SXG_ERROR DPFLTR_ERROR_LEVEL
381
382//
383// SXG_DRIVER structure -
384//
385// contains information about the sxg driver. There is only
386// one of these, and it is defined as a global.
387typedef struct _SXG_DRIVER {
388 struct _adapter_t *Adapters; // Linked list of adapters
389 ushort AdapterID; // Maintain unique adapter ID
390} SXG_DRIVER, *PSXG_DRIVER;
391
392#ifdef STATUS_SUCCESS
393#undef STATUS_SUCCESS
394#endif
395
396#define STATUS_SUCCESS 0
397#define STATUS_PENDING 0
398#define STATUS_FAILURE -1
399#define STATUS_ERROR -2
400#define STATUS_NOT_SUPPORTED -3
401#define STATUS_BUFFER_TOO_SHORT -4
402#define STATUS_RESOURCES -5
403
404#define SLIC_MAX_CARDS 32
405#define SLIC_MAX_PORTS 4 /* Max # of ports per card */
406#if SLIC_DUMP_ENABLED
407// Dump buffer size
408//
409// This cannot be bigger than the max DMA size the card supports,
410// given the current code structure in the host and ucode.
411// Mojave supports 16K, Oasis supports 16K-1, so
412// just set this at 15K, shouldnt make that much of a diff.
413#define DUMP_BUF_SIZE 0x3C00
414#endif
415
416#define MIN(a, b) ((u32)(a) < (u32)(b) ? (a) : (b))
417#define MAX(a, b) ((u32)(a) > (u32)(b) ? (a) : (b))
418
419typedef struct _mcast_address_t
420{
421 unsigned char address[6];
422 struct _mcast_address_t *next;
423} mcast_address_t, *p_mcast_address_t;
424
425#define CARD_DOWN 0x00000000
426#define CARD_UP 0x00000001
427#define CARD_FAIL 0x00000002
428#define CARD_DIAG 0x00000003
429#define CARD_SLEEP 0x00000004
430
431#define ADAPT_DOWN 0x00
432#define ADAPT_UP 0x01
433#define ADAPT_FAIL 0x02
434#define ADAPT_RESET 0x03
435#define ADAPT_SLEEP 0x04
436
437#define ADAPT_FLAGS_BOOTTIME 0x0001
438#define ADAPT_FLAGS_IS64BIT 0x0002
439#define ADAPT_FLAGS_PENDINGLINKDOWN 0x0004
440#define ADAPT_FLAGS_FIBERMEDIA 0x0008
441#define ADAPT_FLAGS_LOCKS_ALLOCED 0x0010
442#define ADAPT_FLAGS_INT_REGISTERED 0x0020
443#define ADAPT_FLAGS_LOAD_TIMER_SET 0x0040
444#define ADAPT_FLAGS_STATS_TIMER_SET 0x0080
445#define ADAPT_FLAGS_RESET_TIMER_SET 0x0100
446
447#define LINK_DOWN 0x00
448#define LINK_CONFIG 0x01
449#define LINK_UP 0x02
450
451#define LINK_10MB 0x00
452#define LINK_100MB 0x01
453#define LINK_AUTOSPEED 0x02
454#define LINK_1000MB 0x03
455#define LINK_10000MB 0x04
456
457#define LINK_HALFD 0x00
458#define LINK_FULLD 0x01
459#define LINK_AUTOD 0x02
460
461#define MAC_DIRECTED 0x00000001
462#define MAC_BCAST 0x00000002
463#define MAC_MCAST 0x00000004
464#define MAC_PROMISC 0x00000008
465#define MAC_LOOPBACK 0x00000010
466#define MAC_ALLMCAST 0x00000020
467
468#define SLIC_DUPLEX(x) ((x==LINK_FULLD) ? "FDX" : "HDX")
469#define SLIC_SPEED(x) ((x==LINK_100MB) ? "100Mb" : ((x==LINK_1000MB) ? "1000Mb" : " 10Mb"))
470#define SLIC_LINKSTATE(x) ((x==LINK_DOWN) ? "Down" : "Up ")
471#define SLIC_ADAPTER_STATE(x) ((x==ADAPT_UP) ? "UP" : "Down")
472#define SLIC_CARD_STATE(x) ((x==CARD_UP) ? "UP" : "Down")
473
474
475typedef struct _ether_header
476{
477 unsigned char ether_dhost[6];
478 unsigned char ether_shost[6];
479 ushort ether_type;
480} ether_header, *p_ether_header;
481
482
483#define NUM_CFG_SPACES 2
484#define NUM_CFG_REGS 64
485
486typedef struct _physcard_t
487{
488 struct _adapter_t *adapter[SLIC_MAX_PORTS];
489 struct _physcard_t *next;
490 unsigned int adapters_allocd;
491} physcard_t, *p_physcard_t;
492
493typedef struct _sxgbase_driver
494{
495 spinlock_t driver_lock;
496 unsigned long flags; /* irqsave for spinlock */
497 u32 num_sxg_cards;
498 u32 num_sxg_ports;
499 u32 num_sxg_ports_active;
500 u32 dynamic_intagg;
501 p_physcard_t phys_card;
502} sxgbase_driver_t;
503
504
505typedef struct _adapter_t
506{
507 void * ifp;
508 unsigned int port;
509 p_physcard_t physcard;
510 unsigned int physport;
511 unsigned int cardindex;
512 unsigned int card_size;
513 unsigned int chipid;
514 unsigned int busnumber;
515 unsigned int slotnumber;
516 unsigned int functionnumber;
517 ushort vendid;
518 ushort devid;
519 ushort subsysid;
520 u32 irq;
521
522 void * sxg_adapter;
523 u32 nBusySend;
524
525 void __iomem * base_addr;
526 u32 memorylength;
527 u32 drambase;
528 u32 dramlength;
529 unsigned int queues_initialized;
530 unsigned int allocated;
531 unsigned int activated;
532 u32 intrregistered;
533 unsigned int isp_initialized;
534 unsigned int gennumber;
535 u32 curaddrupper;
536 u32 isrcopy;
537 unsigned char state;
538 unsigned char linkstate;
539 unsigned char linkspeed;
540 unsigned char linkduplex;
541 unsigned int flags;
542 unsigned char macaddr[6];
543 unsigned char currmacaddr[6];
544 u32 macopts;
545 ushort devflags_prev;
546 u64 mcastmask;
547 p_mcast_address_t mcastaddrs;
548 struct timer_list pingtimer;
549 u32 pingtimerset;
550 struct timer_list statstimer;
551 u32 statstimerset;
552 struct timer_list vpci_timer;
553 u32 vpci_timerset;
554 struct timer_list loadtimer;
555 u32 loadtimerset;
556
557 u32 xmitq_full;
558 u32 all_reg_writes;
559 u32 icr_reg_writes;
560 u32 isr_reg_writes;
561 u32 error_interrupts;
562 u32 error_rmiss_interrupts;
563 u32 rx_errors;
564 u32 rcv_drops;
565 u32 rcv_interrupts;
566 u32 xmit_interrupts;
567 u32 linkevent_interrupts;
568 u32 upr_interrupts;
569 u32 num_isrs;
570 u32 false_interrupts;
571 u32 tx_packets;
572 u32 xmit_completes;
573 u32 tx_drops;
574 u32 rcv_broadcasts;
575 u32 rcv_multicasts;
576 u32 rcv_unicasts;
577 u32 max_isr_rcvs;
578 u32 max_isr_xmits;
579 u32 rcv_interrupt_yields;
580 u32 intagg_period;
581 struct net_device_stats stats;
582 u32 * MiniportHandle; // Our miniport handle
583 SXG_STATE State; // Adapter state
584 SXG_LINK_STATE LinkState; // Link state
585 u64 LinkSpeed; // Link Speed
586 u32 PowerState; // NDIS power state
587 struct _adapter_t *Next; // Linked list
588 ushort AdapterID; // 1..n
589 unsigned char MacAddr[6]; // Our permanent HW mac address
590 unsigned char CurrMacAddr[6]; // Our Current mac address
591 p_net_device netdev;
592 p_net_device next_netdevice;
593 struct pci_dev * pcidev;
594
595 PSXG_MULTICAST_ADDRESS MulticastAddrs; // Multicast list
596 u64 MulticastMask; // Multicast mask
597 u32 * InterruptHandle; // Register Interrupt handle
598 u32 InterruptLevel; // From Resource list
599 u32 InterruptVector; // From Resource list
600 spinlock_t AdapterLock; /* Serialize access adapter routines */
601 spinlock_t Bit64RegLock; /* For writing 64-bit addresses */
602 PSXG_HW_REGS HwRegs; // Sahara HW Register Memory (BAR0/1)
603 PSXG_UCODE_REGS UcodeRegs; // Microcode Register Memory (BAR2/3)
604 PSXG_TCB_REGS TcbRegs; // Same as Ucode regs - See sxghw.h
605 ushort ResetDpcCount; // For timeout
606 ushort RssDpcCount; // For timeout
607 ushort VendorID; // Vendor ID
608 ushort DeviceID; // Device ID
609 ushort SubSystemID; // Sub-System ID
610 ushort FrameSize; // Maximum frame size
611 u32 * DmaHandle; // NDIS DMA handle
612 u32 * PacketPoolHandle; // Used with NDIS 5.2 only. Don't ifdef out
613 u32 * BufferPoolHandle; // Used with NDIS 5.2 only. Don't ifdef out
614 u32 MacFilter; // NDIS MAC Filter
615 ushort IpId; // For slowpath
616 PSXG_EVENT_RING EventRings; // Host event rings. 1/CPU to 16 max
617 dma_addr_t PEventRings; // Physical address
618 u32 NextEvent[SXG_MAX_RSS]; // Current location in ring
619 dma_addr_t PTcbBuffers; // TCB Buffers - physical address
620 dma_addr_t PTcbCompBuffers; // TCB Composite Buffers - phys addr
621 PSXG_XMT_RING XmtRings; // Transmit rings
622 dma_addr_t PXmtRings; // Transmit rings - physical address
623 SXG_RING_INFO XmtRingZeroInfo; // Transmit ring 0 info
624 spinlock_t XmtZeroLock; /* Transmit ring 0 lock */
625 u32 * XmtRingZeroIndex; // Shared XMT ring 0 index
626 dma_addr_t PXmtRingZeroIndex; // Shared XMT ring 0 index - physical
627 LIST_ENTRY FreeProtocolHeaders;// Free protocol headers
628 u32 FreeProtoHdrCount; // Count
629 void * ProtocolHeaders; // Block of protocol header
630 dma_addr_t PProtocolHeaders; // Block of protocol headers - phys
631
632 PSXG_RCV_RING RcvRings; // Receive rings
633 dma_addr_t PRcvRings; // Receive rings - physical address
634 SXG_RING_INFO RcvRingZeroInfo; // Receive ring 0 info
635
636 u32 * Isr; // Interrupt status register
637 dma_addr_t PIsr; // ISR - physical address
638 u32 IsrCopy[SXG_MAX_RSS]; // Copy of ISR
639 ushort InterruptsEnabled; // Bitmask of enabled vectors
640 unsigned char * IndirectionTable; // RSS indirection table
641 dma_addr_t PIndirectionTable; // Physical address
642 ushort RssTableSize; // From NDIS_RECEIVE_SCALE_PARAMETERS
643 ushort HashKeySize; // From NDIS_RECEIVE_SCALE_PARAMETERS
644 unsigned char HashSecretKey[40]; // rss key
645 u32 HashInformation;
646 // Receive buffer queues
647 spinlock_t RcvQLock; /* Receive Queue Lock */
648 LIST_ENTRY FreeRcvBuffers; // Free SXG_DATA_BUFFER queue
649 LIST_ENTRY FreeRcvBlocks; // Free SXG_RCV_DESCRIPTOR_BLOCK Q
650 LIST_ENTRY AllRcvBlocks; // All SXG_RCV_BLOCKs
651 ushort FreeRcvBufferCount; // Number of free rcv data buffers
652 ushort FreeRcvBlockCount; // # of free rcv descriptor blocks
653 ushort AllRcvBlockCount; // Number of total receive blocks
654 ushort ReceiveBufferSize; // SXG_RCV_DATA/JUMBO_BUFFER_SIZE only
655 u32 AllocationsPending; // Receive allocation pending
656 u32 RcvBuffersOnCard; // SXG_DATA_BUFFERS owned by card
657 // SGL buffers
658 spinlock_t SglQLock; /* SGL Queue Lock */
659 LIST_ENTRY FreeSglBuffers; // Free SXG_SCATTER_GATHER
660 LIST_ENTRY AllSglBuffers; // All SXG_SCATTER_GATHER
661 ushort FreeSglBufferCount; // Number of free SGL buffers
662 ushort AllSglBufferCount; // Number of total SGL buffers
663 u32 CurrentTime; // Tick count
664 u32 FastpathConnections;// # of fastpath connections
665 // Various single-bit flags:
666 u32 BasicAllocations:1; // Locks and listheads
667 u32 IntRegistered:1; // Interrupt registered
668 u32 PingOutstanding:1; // Ping outstanding to card
669 u32 Dead:1; // Card dead
670 u32 DumpDriver:1; // OID_SLIC_DRIVER_DUMP request
671 u32 DumpCard:1; // OID_SLIC_CARD_DUMP request
672 u32 DumpCmdRunning:1; // Dump command in progress
673 u32 DebugRunning:1; // AGDB debug in progress
674 u32 JumboEnabled:1; // Jumbo frames enabled
675 u32 MsiEnabled:1; // MSI interrupt enabled
676 u32 RssEnabled:1; // RSS Enabled
677 u32 FailOnBadEeprom:1; // Fail on Bad Eeprom
678 u32 DiagStart:1; // Init adapter for diagnostic start
679 // Stats
680 u32 PendingRcvCount; // Outstanding rcv indications
681 u32 PendingXmtCount; // Outstanding send requests
682 SXG_STATS Stats; // Statistics
683 u32 ReassBufs; // Number of reassembly buffers
684 // Card Crash Info
685 ushort CrashLocation; // Microcode crash location
686 unsigned char CrashCpu; // Sahara CPU ID
687 // Diagnostics
688 // PDIAG_CMD DiagCmds; // List of free diagnostic commands
689 // PDIAG_BUFFER DiagBuffers; // List of free diagnostic buffers
690 // PDIAG_REQ DiagReqQ; // List of outstanding (asynchronous) diag requests
691 // u32 DiagCmdTimeout; // Time out for diag cmds (seconds) XXXTODO - replace with SXG_PARAM var?
692 // unsigned char DiagDmaDesc[DMA_CPU_CTXS]; // Free DMA descriptors bit field (32 CPU ctx * 8 DMA ctx)
693
694 /////////////////////////////////////////////////////////////////////
695 // Put preprocessor-conditional fields at the end so we don't
696 // have to recompile sxgdbg everytime we reconfigure the driver
697 /////////////////////////////////////////////////////////////////////
698 void * PendingSetRss; // Pending RSS parameter change
699 u32 IPv4HdrSize; // Shared 5.2/6.0 encap param
700 unsigned char * InterruptInfo; // Allocated by us during AddDevice
701#if defined(CONFIG_X86)
702 u32 AddrUpper; // Upper 32 bits of 64-bit register
703#endif
704 //#if SXG_FAILURE_DUMP
705 // NDIS_EVENT DumpThreadEvent; // syncronize dump thread
706 // BOOLEAN DumpThreadRunning; // termination flag
707 // PSXG_DUMP_CMD DumpBuffer; // 68k - Cmd and Buffer
708 // dma_addr_t PDumpBuffer; // Physical address
709 //#endif // SXG_FAILURE_DUMP
710
711} adapter_t, *p_adapter_t;
712
713#if SLIC_DUMP_ENABLED
714#define SLIC_DUMP_REQUESTED 1
715#define SLIC_DUMP_IN_PROGRESS 2
716#define SLIC_DUMP_DONE 3
717
718/****************************************************************************
719 *
720 * Microcode crash information structure. This
721 * structure is written out to the card's SRAM when the microcode panic's.
722 *
723 ****************************************************************************/
724typedef struct _slic_crash_info {
725 ushort cpu_id;
726 ushort crash_pc;
727} slic_crash_info, *p_slic_crash_info;
728
729#define CRASH_INFO_OFFSET 0x155C
730
731#endif
732
733#define UPDATE_STATS(largestat, newstat, oldstat) \
734{ \
735 if ((newstat) < (oldstat)) \
736 (largestat) += ((newstat) + (0xFFFFFFFF - oldstat + 1)); \
737 else \
738 (largestat) += ((newstat) - (oldstat)); \
739}
740
741#define UPDATE_STATS_GB(largestat, newstat, oldstat) \
742{ \
743 (largestat) += ((newstat) - (oldstat)); \
744}
745
746#define ETHER_EQ_ADDR(_AddrA, _AddrB, _Result) \
747{ \
748 _Result = TRUE; \
749 if (*(u32 *)(_AddrA) != *(u32 *)(_AddrB)) \
750 _Result = FALSE; \
751 if (*(u16 *)(&((_AddrA)[4])) != *(u16 *)(&((_AddrB)[4]))) \
752 _Result = FALSE; \
753}
754
755#define ETHERMAXFRAME 1514
756#define JUMBOMAXFRAME 9014
757
758#if defined(CONFIG_X86_64) || defined(CONFIG_IA64)
759#define SXG_GET_ADDR_LOW(_addr) (u32)((u64)(_addr) & 0x00000000FFFFFFFF)
760#define SXG_GET_ADDR_HIGH(_addr) (u32)(((u64)(_addr) >> 32) & 0x00000000FFFFFFFF)
761#else
762#define SXG_GET_ADDR_LOW(_addr) (u32)_addr
763#define SXG_GET_ADDR_HIGH(_addr) (u32)0
764#endif
765
766#define FLUSH TRUE
767#define DONT_FLUSH FALSE
768
769#define SIOCSLICDUMPCARD SIOCDEVPRIVATE+9
770#define SIOCSLICSETINTAGG SIOCDEVPRIVATE+10
771#define SIOCSLICTRACEDUMP SIOCDEVPRIVATE+11
772
773#endif /* __SXG_DRIVER_H__ */
diff --git a/drivers/staging/sxg/sxg_os.h b/drivers/staging/sxg/sxg_os.h
new file mode 100644
index 00000000000..26fb0ffafa5
--- /dev/null
+++ b/drivers/staging/sxg/sxg_os.h
@@ -0,0 +1,154 @@
1/**************************************************************************
2 *
3 * Copyright (C) 2000-2008 Alacritech, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following
13 * disclaimer in the documentation and/or other materials provided
14 * with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * The views and conclusions contained in the software and documentation
30 * are those of the authors and should not be interpreted as representing
31 * official policies, either expressed or implied, of Alacritech, Inc.
32 *
33 **************************************************************************/
34
35/*
36 * FILENAME: sxg_os.h
37 *
38 * These are the Linux-specific definitions required for the SLICOSS
39 * driver, which should allow for greater portability to other OSes.
40 */
41#ifndef _SLIC_OS_SPECIFIC_H_
42#define _SLIC_OS_SPECIFIC_H_
43
44#define FALSE (0)
45#define TRUE (1)
46
47
48typedef struct _LIST_ENTRY {
49 struct _LIST_ENTRY *nle_flink;
50 struct _LIST_ENTRY *nle_blink;
51} list_entry, LIST_ENTRY, *PLIST_ENTRY;
52
53#define InitializeListHead(l) \
54 (l)->nle_flink = (l)->nle_blink = (l)
55
56#define IsListEmpty(h) \
57 ((h)->nle_flink == (h))
58
59#define RemoveEntryList(e) \
60 do { \
61 list_entry *b; \
62 list_entry *f; \
63 \
64 f = (e)->nle_flink; \
65 b = (e)->nle_blink; \
66 b->nle_flink = f; \
67 f->nle_blink = b; \
68 } while (0)
69
70/* These two have to be inlined since they return things. */
71
72static __inline PLIST_ENTRY
73RemoveHeadList(list_entry *l)
74{
75 list_entry *f;
76 list_entry *e;
77
78 e = l->nle_flink;
79 f = e->nle_flink;
80 l->nle_flink = f;
81 f->nle_blink = l;
82
83 return (e);
84}
85
86static __inline PLIST_ENTRY
87RemoveTailList(list_entry *l)
88{
89 list_entry *b;
90 list_entry *e;
91
92 e = l->nle_blink;
93 b = e->nle_blink;
94 l->nle_blink = b;
95 b->nle_flink = l;
96
97 return (e);
98}
99
100
101#define InsertTailList(l, e) \
102 do { \
103 list_entry *b; \
104 \
105 b = (l)->nle_blink; \
106 (e)->nle_flink = (l); \
107 (e)->nle_blink = b; \
108 b->nle_flink = (e); \
109 (l)->nle_blink = (e); \
110 } while (0)
111
112#define InsertHeadList(l, e) \
113 do { \
114 list_entry *f; \
115 \
116 f = (l)->nle_flink; \
117 (e)->nle_flink = f; \
118 (e)->nle_blink = l; \
119 f->nle_blink = (e); \
120 (l)->nle_flink = (e); \
121 } while (0)
122
123
124#define ATK_DEBUG 1
125
126#if ATK_DEBUG
127#define SLIC_TIMESTAMP(value) { \
128 struct timeval timev; \
129 do_gettimeofday(&timev); \
130 value = timev.tv_sec*1000000 + timev.tv_usec; \
131}
132#else
133#define SLIC_TIMESTAMP(value)
134#endif
135
136
137/****************** SXG DEFINES *****************************************/
138
139#ifdef ATKDBG
140#define SXG_TIMESTAMP(value) { \
141 struct timeval timev; \
142 do_gettimeofday(&timev); \
143 value = timev.tv_sec*1000000 + timev.tv_usec; \
144}
145#else
146#define SXG_TIMESTAMP(value)
147#endif
148
149#define WRITE_REG(reg,value,flush) sxg_reg32_write((&reg), (value), (flush))
150#define WRITE_REG64(a,reg,value,cpu) sxg_reg64_write((a),(&reg),(value),(cpu))
151#define READ_REG(reg,value) (value) = readl((void __iomem *)(&reg))
152
153#endif /* _SLIC_OS_SPECIFIC_H_ */
154
diff --git a/drivers/staging/sxg/sxgdbg.h b/drivers/staging/sxg/sxgdbg.h
new file mode 100644
index 00000000000..cfb6c7c77a9
--- /dev/null
+++ b/drivers/staging/sxg/sxgdbg.h
@@ -0,0 +1,190 @@
1/**************************************************************************
2 *
3 * Copyright © 2000-2008 Alacritech, Inc. All rights reserved.
4 *
5 * $Id: sxgdbg.h,v 1.1 2008/06/27 12:49:28 mook Exp $
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY ALACRITECH, INC. ``AS IS'' AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ALACRITECH, INC. OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
25 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
28 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * The views and conclusions contained in the software and documentation
32 * are those of the authors and should not be interpreted as representing
33 * official policies, either expressed or implied, of Alacritech, Inc.
34 *
35 **************************************************************************/
36
37/*
38 * FILENAME: sxgdbg.h
39 *
40 * All debug and assertion-based definitions and macros are included
41 * in this file for the SXGOSS driver.
42 */
43#ifndef _SXG_DEBUG_H_
44#define _SXG_DEBUG_H_
45
46#define ATKDBG 1
47#define ATK_TRACE_ENABLED 1
48
49#define DBG_ERROR(n, args...) printk(KERN_EMERG n, ##args)
50
51#ifdef ASSERT
52#undef ASSERT
53#endif
54
55#ifdef SXG_ASSERT_ENABLED
56#ifndef ASSERT
57#define ASSERT(a) \
58 { \
59 if (!(a)) { \
60 DBG_ERROR("ASSERT() Failure: file %s, function %s line %d\n",\
61 __FILE__, __FUNCTION__, __LINE__); \
62 } \
63 }
64#endif
65#else
66#ifndef ASSERT
67#define ASSERT(a)
68#endif
69#endif /* SXG_ASSERT_ENABLED */
70
71
72#ifdef ATKDBG
73/*
74 * Global for timer granularity; every driver must have an instance
75 * of this initialized to 0
76 */
77
78extern ulong ATKTimerDiv;
79
80/*
81 * trace_entry_t -
82 *
83 * This structure defines an entry in the trace buffer. The
84 * first few fields mean the same from entry to entry, while
85 * the meaning of last several fields change to suit the
86 * needs of the trace entry. Typically they are function call
87 * parameters.
88 */
89typedef struct _trace_entry_s {
90 char name[8]; /* 8 character name - like 's'i'm'b'a'r'c'v' */
91 u32 time; /* Current clock tic */
92 unsigned char cpu; /* Current CPU */
93 unsigned char irql; /* Current IRQL */
94 unsigned char driver; /* The driver which added the trace call */
95 unsigned char pad2; /* pad to 4 byte boundary - will probably get used */
96 u32 arg1; /* Caller arg1 */
97 u32 arg2; /* Caller arg2 */
98 u32 arg3; /* Caller arg3 */
99 u32 arg4; /* Caller arg4 */
100} trace_entry_t, *ptrace_entry_t;
101
102/*
103 * Driver types for driver field in trace_entry_t
104 */
105#define TRACE_SXG 1
106#define TRACE_VPCI 2
107#define TRACE_SLIC 3
108
109#define TRACE_ENTRIES 1024
110
111typedef struct _sxg_trace_buffer_t
112{
113 unsigned int size; /* aid for windbg extension */
114 unsigned int in; /* Where to add */
115 unsigned int level; /* Current Trace level */
116 spinlock_t lock; /* For MP tracing */
117 trace_entry_t entries[TRACE_ENTRIES];/* The circular buffer */
118} sxg_trace_buffer_t;
119
120/*
121 * The trace levels
122 *
123 * XXX At the moment I am only defining critical, important, and noisy.
124 * I am leaving room for more if anyone wants them.
125 */
126#define TRACE_NONE 0 /* For trace level - if no tracing wanted */
127#define TRACE_CRITICAL 1 /* minimal tracing - only critical stuff */
128#define TRACE_IMPORTANT 5 /* more tracing - anything important */
129#define TRACE_NOISY 10 /* Everything in the world */
130
131
132/**********************************************************************
133 *
134 * The macros themselves -
135 *
136 *********************************************************************/
137#if ATK_TRACE_ENABLED
138#define SXG_TRACE_INIT(buffer, tlevel) \
139{ \
140 memset((buffer), 0, sizeof(sxg_trace_buffer_t)); \
141 (buffer)->level = (tlevel); \
142 (buffer)->size = TRACE_ENTRIES; \
143 spin_lock_init(&(buffer)->lock); \
144}
145#else
146#define SXG_TRACE_INIT(buffer, tlevel)
147#endif
148
149/*
150 * The trace macro. This is active only if ATK_TRACE_ENABLED is set.
151 */
152#if ATK_TRACE_ENABLED
153#define SXG_TRACE(tdriver, buffer, tlevel, tname, a1, a2, a3, a4) { \
154 if ((buffer) && ((buffer)->level >= (tlevel))) { \
155 unsigned int trace_irql = 0; /* ?????? FIX THIS */ \
156 unsigned int trace_len; \
157 ptrace_entry_t trace_entry; \
158 struct timeval timev; \
159 \
160 spin_lock(&(buffer)->lock); \
161 trace_entry = &(buffer)->entries[(buffer)->in]; \
162 do_gettimeofday(&timev); \
163 \
164 memset(trace_entry->name, 0, 8); \
165 trace_len = strlen(tname); \
166 trace_len = trace_len > 8 ? 8 : trace_len; \
167 memcpy(trace_entry->name, (tname), trace_len); \
168 trace_entry->time = timev.tv_usec; \
169 trace_entry->cpu = (unsigned char)(smp_processor_id() & 0xFF); \
170 trace_entry->driver = (tdriver); \
171 trace_entry->irql = trace_irql; \
172 trace_entry->arg1 = (ulong)(a1); \
173 trace_entry->arg2 = (ulong)(a2); \
174 trace_entry->arg3 = (ulong)(a3); \
175 trace_entry->arg4 = (ulong)(a4); \
176 \
177 (buffer)->in++; \
178 if ((buffer)->in == TRACE_ENTRIES) \
179 (buffer)->in = 0; \
180 \
181 spin_unlock(&(buffer)->lock); \
182 } \
183}
184#else
185#define SXG_TRACE(tdriver, buffer, tlevel, tname, a1, a2, a3, a4)
186#endif
187
188#endif
189
190#endif /* _SXG_DEBUG_H_ */
diff --git a/drivers/staging/sxg/sxghif.h b/drivers/staging/sxg/sxghif.h
new file mode 100644
index 00000000000..ed26ceaa131
--- /dev/null
+++ b/drivers/staging/sxg/sxghif.h
@@ -0,0 +1,861 @@
1/*
2 * Copyright © 1997-2007 Alacritech, Inc. All rights reserved
3 *
4 * $Id: sxghif.h,v 1.5 2008/07/24 19:18:22 chris Exp $
5 *
6 * sxghif.h:
7 *
8 * This file contains structures and definitions for the
9 * Alacritech Sahara host interface
10 */
11
12/*******************************************************************************
13 * UCODE Registers
14 *******************************************************************************/
15typedef struct _SXG_UCODE_REGS {
16 // Address 0 - 0x3F = Command codes 0-15 for TCB 0. Excode 0
17 u32 Icr; // Code = 0 (extended), ExCode = 0 - Int control
18 u32 RsvdReg1; // Code = 1 - TOE -NA
19 u32 RsvdReg2; // Code = 2 - TOE -NA
20 u32 RsvdReg3; // Code = 3 - TOE -NA
21 u32 RsvdReg4; // Code = 4 - TOE -NA
22 u32 RsvdReg5; // Code = 5 - TOE -NA
23 u32 CardUp; // Code = 6 - Microcode initialized when 1
24 u32 RsvdReg7; // Code = 7 - TOE -NA
25 u32 CodeNotUsed[8]; // Codes 8-15 not used. ExCode = 0
26 // This brings us to ExCode 1 at address 0x40 = Interrupt status pointer
27 u32 Isp; // Code = 0 (extended), ExCode = 1
28 u32 PadEx1[15]; // Codes 1-15 not used with extended codes
29 // ExCode 2 = Interrupt Status Register
30 u32 Isr; // Code = 0 (extended), ExCode = 2
31 u32 PadEx2[15];
32 // ExCode 3 = Event base register. Location of event rings
33 u32 EventBase; // Code = 0 (extended), ExCode = 3
34 u32 PadEx3[15];
35 // ExCode 4 = Event ring size
36 u32 EventSize; // Code = 0 (extended), ExCode = 4
37 u32 PadEx4[15];
38 // ExCode 5 = TCB Buffers base address
39 u32 TcbBase; // Code = 0 (extended), ExCode = 5
40 u32 PadEx5[15];
41 // ExCode 6 = TCB Composite Buffers base address
42 u32 TcbCompBase; // Code = 0 (extended), ExCode = 6
43 u32 PadEx6[15];
44 // ExCode 7 = Transmit ring base address
45 u32 XmtBase; // Code = 0 (extended), ExCode = 7
46 u32 PadEx7[15];
47 // ExCode 8 = Transmit ring size
48 u32 XmtSize; // Code = 0 (extended), ExCode = 8
49 u32 PadEx8[15];
50 // ExCode 9 = Receive ring base address
51 u32 RcvBase; // Code = 0 (extended), ExCode = 9
52 u32 PadEx9[15];
53 // ExCode 10 = Receive ring size
54 u32 RcvSize; // Code = 0 (extended), ExCode = 10
55 u32 PadEx10[15];
56 // ExCode 11 = Read EEPROM Config
57 u32 Config; // Code = 0 (extended), ExCode = 11
58 u32 PadEx11[15];
59 // ExCode 12 = Multicast bits 31:0
60 u32 McastLow; // Code = 0 (extended), ExCode = 12
61 u32 PadEx12[15];
62 // ExCode 13 = Multicast bits 63:32
63 u32 McastHigh; // Code = 0 (extended), ExCode = 13
64 u32 PadEx13[15];
65 // ExCode 14 = Ping
66 u32 Ping; // Code = 0 (extended), ExCode = 14
67 u32 PadEx14[15];
68 // ExCode 15 = Link MTU
69 u32 LinkMtu; // Code = 0 (extended), ExCode = 15
70 u32 PadEx15[15];
71 // ExCode 16 = Download synchronization
72 u32 LoadSync; // Code = 0 (extended), ExCode = 16
73 u32 PadEx16[15];
74 // ExCode 17 = Upper DRAM address bits on 32-bit systems
75 u32 Upper; // Code = 0 (extended), ExCode = 17
76 u32 PadEx17[15];
77 // ExCode 18 = Slowpath Send Index Address
78 u32 SPSendIndex; // Code = 0 (extended), ExCode = 18
79 u32 PadEx18[15];
80 u32 RsvdXF; // Code = 0 (extended), ExCode = 19
81 u32 PadEx19[15];
82 // ExCode 20 = Aggregation
83 u32 Aggregation; // Code = 0 (extended), ExCode = 20
84 u32 PadEx20[15];
85 // ExCode 21 = Receive MDL push timer
86 u32 PushTicks; // Code = 0 (extended), ExCode = 21
87 u32 PadEx21[15];
88 // ExCode 22 = TOE NA
89 u32 AckFrequency; // Code = 0 (extended), ExCode = 22
90 u32 PadEx22[15];
91 // ExCode 23 = TOE NA
92 u32 RsvdReg23;
93 u32 PadEx23[15];
94 // ExCode 24 = TOE NA
95 u32 RsvdReg24;
96 u32 PadEx24[15];
97 // ExCode 25 = TOE NA
98 u32 RsvdReg25; // Code = 0 (extended), ExCode = 25
99 u32 PadEx25[15];
100 // ExCode 26 = Receive checksum requirements
101 u32 ReceiveChecksum; // Code = 0 (extended), ExCode = 26
102 u32 PadEx26[15];
103 // ExCode 27 = RSS Requirements
104 u32 Rss; // Code = 0 (extended), ExCode = 27
105 u32 PadEx27[15];
106 // ExCode 28 = RSS Table
107 u32 RssTable; // Code = 0 (extended), ExCode = 28
108 u32 PadEx28[15];
109 // ExCode 29 = Event ring release entries
110 u32 EventRelease; // Code = 0 (extended), ExCode = 29
111 u32 PadEx29[15];
112 // ExCode 30 = Number of receive bufferlist commands on ring 0
113 u32 RcvCmd; // Code = 0 (extended), ExCode = 30
114 u32 PadEx30[15];
115 // ExCode 31 = slowpath transmit command - Data[31:0] = 1
116 u32 XmtCmd; // Code = 0 (extended), ExCode = 31
117 u32 PadEx31[15];
118 // ExCode 32 = Dump command
119 u32 DumpCmd; // Code = 0 (extended), ExCode = 32
120 u32 PadEx32[15];
121 // ExCode 33 = Debug command
122 u32 DebugCmd; // Code = 0 (extended), ExCode = 33
123 u32 PadEx33[15];
124 // There are 128 possible extended commands - each of account for 16
125 // words (including the non-relevent base command codes 1-15).
126 // Pad for the remainder of these here to bring us to the next CPU
127 // base. As extended codes are added, reduce the first array value in
128 // the following field
129 u32 PadToNextCpu[94][16]; // 94 = 128 - 34 (34 = Excodes 0 - 33)
130} SXG_UCODE_REGS, *PSXG_UCODE_REGS;
131
132// Interrupt control register (0) values
133#define SXG_ICR_DISABLE 0x00000000
134#define SXG_ICR_ENABLE 0x00000001
135#define SXG_ICR_MASK 0x00000002
136#define SXG_ICR_MSGID_MASK 0xFFFF0000
137#define SXG_ICR_MSGID_SHIFT 16
138#define SXG_ICR(_MessageId, _Data) \
139 ((((_MessageId) << SXG_ICR_MSGID_SHIFT) & \
140 SXG_ICR_MSGID_MASK) | (_Data))
141
142// The Microcode supports up to 16 RSS queues
143#define SXG_MAX_RSS 16
144#define SXG_MAX_RSS_TABLE_SIZE 256 // 256-byte max
145
146#define SXG_RSS_TCP6 0x00000001 // RSS TCP over IPv6
147#define SXG_RSS_TCP4 0x00000002 // RSS TCP over IPv4
148#define SXG_RSS_LEGACY 0x00000004 // Line-base interrupts
149#define SXG_RSS_TABLE_SIZE 0x0000FF00 // Table size mask
150#define SXG_RSS_TABLE_SHIFT 8
151#define SXG_RSS_BASE_CPU 0x00FF0000 // Base CPU (not used)
152#define SXG_RSS_BASE_SHIFT 16
153
154#define SXG_RCV_IP_CSUM_ENABLED 0x00000001 // ExCode 26 (ReceiveChecksum)
155#define SXG_RCV_TCP_CSUM_ENABLED 0x00000002 // ExCode 26 (ReceiveChecksum)
156
157#define SXG_XMT_CPUID_SHIFT 16
158
159#if VPCI
160#define SXG_CHECK_FOR_HANG_TIME 3000
161#else
162#define SXG_CHECK_FOR_HANG_TIME 5
163#endif
164
165/*
166 * TCB registers - This is really the same register memory area as UCODE_REGS
167 * above, but defined differently. Bits 17:06 of the address define the TCB,
168 * which means each TCB area occupies 0x40 (64) bytes, or 16 u32S. What really
169 * is happening is that these registers occupy the "PadEx[15]" areas in the
170 * SXG_UCODE_REGS definition above
171 */
172typedef struct _SXG_TCB_REGS {
173 u32 ExCode; /* Extended codes - see SXG_UCODE_REGS */
174 u32 Xmt; /* Code = 1 - # of Xmt descriptors added to ring */
175 u32 Rcv; /* Code = 2 - # of Rcv descriptors added to ring */
176 u32 Rsvd1; /* Code = 3 - TOE NA */
177 u32 Rsvd2; /* Code = 4 - TOE NA */
178 u32 Rsvd3; /* Code = 5 - TOE NA */
179 u32 Invalid; /* Code = 6 - Reserved for "CardUp" see above */
180 u32 Rsvd4; /* Code = 7 - TOE NA */
181 u32 Rsvd5; /* Code = 8 - TOE NA */
182 u32 Pad[7]; /* Codes 8-15 - Not used. */
183} SXG_TCB_REGS, *PSXG_TCB_REGS;
184
185/***************************************************************************
186 * ISR Format
187 * 31 0
188 * _______________________________________
189 * | | | | | | | | |
190 * |____|____|____|____|____|____|____|____|
191 * ^^^^ ^^^^ ^^^^ ^^^^ \ /
192 * ERR --|||| |||| |||| |||| -----------------
193 * EVENT ---||| |||| |||| |||| |
194 * ----|| |||| |||| |||| |-- Crash Address
195 * UPC -----| |||| |||| ||||
196 * LEVENT -------|||| |||| ||||
197 * PDQF --------||| |||| ||||
198 * RMISS ---------|| |||| ||||
199 * BREAK ----------| |||| ||||
200 * HBEATOK ------------|||| ||||
201 * NOHBEAT -------------||| ||||
202 * ERFULL --------------|| ||||
203 * XDROP ---------------| ||||
204 * -----------------||||
205 * -----------------||||--\
206 * ||---|-CpuId of crash
207 * |----/
208 ***************************************************************************/
209#define SXG_ISR_ERR 0x80000000 // Error
210#define SXG_ISR_EVENT 0x40000000 // Event ring event
211#define SXG_ISR_NONE1 0x20000000 // Not used
212#define SXG_ISR_UPC 0x10000000 // Dump/debug command complete
213#define SXG_ISR_LINK 0x08000000 // Link event
214#define SXG_ISR_PDQF 0x04000000 // Processed data queue full
215#define SXG_ISR_RMISS 0x02000000 // Drop - no host buf
216#define SXG_ISR_BREAK 0x01000000 // Breakpoint hit
217#define SXG_ISR_PING 0x00800000 // Heartbeat response
218#define SXG_ISR_DEAD 0x00400000 // Card crash
219#define SXG_ISR_ERFULL 0x00200000 // Event ring full
220#define SXG_ISR_XDROP 0x00100000 // XMT Drop - no DRAM bufs or XMT err
221#define SXG_ISR_SPSEND 0x00080000 // Slow send complete
222#define SXG_ISR_CPU 0x00070000 // Dead CPU mask
223#define SXG_ISR_CPU_SHIFT 16 // Dead CPU shift
224#define SXG_ISR_CRASH 0x0000FFFF // Crash address mask
225
226/***************************************************************************
227 *
228 * Event Ring entry
229 *
230 ***************************************************************************/
231/*
232 * 31 15 0
233 * .___________________.___________________.
234 * |<------------ Pad 0 ------------>|
235 * |_________|_________|_________|_________|0 0x00
236 * |<------------ Pad 1 ------------>|
237 * |_________|_________|_________|_________|4 0x04
238 * |<------------ Pad 2 ------------>|
239 * |_________|_________|_________|_________|8 0x08
240 * |<----------- Event Word 0 ------------>|
241 * |_________|_________|_________|_________|12 0x0c
242 * |<----------- Event Word 1 ------------>|
243 * |_________|_________|_________|_________|16 0x10
244 * |<------------- Toeplitz ------------>|
245 * |_________|_________|_________|_________|20 0x14
246 * |<----- Length ---->|<------ TCB Id --->|
247 * |_________|_________|_________|_________|24 0x18
248 * |<----- Status ---->|Evnt Code|Flsh Code|
249 * |_________|_________|_________|_________|28 0x1c
250 * ^ ^^^^ ^^^^
251 * |- VALID |||| ||||- RBUFC
252 * |||| |||-- SLOWR
253 * |||| ||--- UNUSED
254 * |||| |---- FASTC
255 * ||||------ FASTR
256 * |||-------
257 * ||--------
258 * |---------
259 *
260 * Slowpath status:
261 * _______________________________________
262 * |<----- Status ---->|Evnt Code|Flsh Code|
263 * |_________|Cmd Index|_________|_________|28 0x1c
264 * ^^^ ^^^^
265 * ||| ||||- ISTCPIP6
266 * ||| |||-- IPONLY
267 * ||| ||--- RCVERR
268 * ||| |---- IPCBAD
269 * |||------ TCPCBAD
270 * ||------- ISTCPIP
271 * |-------- SCERR
272 *
273 */
274#pragma pack(push, 1)
275typedef struct _SXG_EVENT {
276 u32 Pad[1]; // not used
277 u32 SndUna; // SndUna value
278 u32 Resid; // receive MDL resid
279 union {
280 void * HostHandle; // Receive host handle
281 u32 Rsvd1; // TOE NA
282 struct {
283 u32 NotUsed;
284 u32 Rsvd2; // TOE NA
285 } Flush;
286 };
287 u32 Toeplitz; // RSS Toeplitz hash
288 union {
289 ushort Rsvd3; // TOE NA
290 ushort HdrOffset; // Slowpath
291 };
292 ushort Length; //
293 unsigned char Rsvd4; // TOE NA
294 unsigned char Code; // Event code
295 unsigned char CommandIndex; // New ring index
296 unsigned char Status; // Event status
297} SXG_EVENT, *PSXG_EVENT;
298#pragma pack(pop)
299
300// Event code definitions
301#define EVENT_CODE_BUFFERS 0x01 // Receive buffer list command (ring 0)
302#define EVENT_CODE_SLOWRCV 0x02 // Slowpath receive
303#define EVENT_CODE_UNUSED 0x04 // Was slowpath commands complete
304
305// Status values
306#define EVENT_STATUS_VALID 0x80 // Entry valid
307
308// Slowpath status
309#define EVENT_STATUS_ERROR 0x40 // Completed with error. Index in next byte
310#define EVENT_STATUS_TCPIP4 0x20 // TCPIPv4 frame
311#define EVENT_STATUS_TCPBAD 0x10 // Bad TCP checksum
312#define EVENT_STATUS_IPBAD 0x08 // Bad IP checksum
313#define EVENT_STATUS_RCVERR 0x04 // Slowpath receive error
314#define EVENT_STATUS_IPONLY 0x02 // IP frame
315#define EVENT_STATUS_TCPIP6 0x01 // TCPIPv6 frame
316#define EVENT_STATUS_TCPIP 0x21 // Combination of v4 and v6
317
318// Event ring
319// Size must be power of 2, between 128 and 16k
320#define EVENT_RING_SIZE 4096 // ??
321#define EVENT_RING_BATCH 16 // Hand entries back 16 at a time.
322#define EVENT_BATCH_LIMIT 256 // Stop processing events after 256 (16 * 16)
323
324typedef struct _SXG_EVENT_RING {
325 SXG_EVENT Ring[EVENT_RING_SIZE];
326}SXG_EVENT_RING, *PSXG_EVENT_RING;
327
328/***************************************************************************
329 *
330 * TCB Buffers
331 *
332 ***************************************************************************/
333// Maximum number of TCBS supported by hardware/microcode
334#define SXG_MAX_TCB 4096
335// Minimum TCBs before we fail initialization
336#define SXG_MIN_TCB 512
337// TCB Hash
338// The bucket is determined by bits 11:4 of the toeplitz if we support 4k
339// offloaded connections, 10:4 if we support 2k and so on.
340#define SXG_TCB_BUCKET_SHIFT 4
341#define SXG_TCB_PER_BUCKET 16
342#define SXG_TCB_BUCKET_MASK 0xFF0 // Bucket portion of TCB ID
343#define SXG_TCB_ELEMENT_MASK 0x00F // Element within bucket
344#define SXG_TCB_BUCKETS 256 // 256 * 16 = 4k
345
346#define SXG_TCB_BUFFER_SIZE 512 // ASSERT format is correct
347
348#define SXG_TCB_RCVQ_SIZE 736
349
350#define SXG_TCB_COMPOSITE_BUFFER_SIZE 1024
351
352#define SXG_LOCATE_TCP_FRAME_HDR(_TcpObject, _IPv6) \
353 (((_TcpObject)->VlanId) ? \
354 ((_IPv6) ? /* Vlan frame header = yes */ \
355 &(_TcpObject)->CompBuffer->Frame.HasVlan.TcpIp6.SxgTcp : \
356 &(_TcpObject)->CompBuffer->Frame.HasVlan.TcpIp.SxgTcp) : \
357 ((_IPv6) ? /* Vlan frame header = No */ \
358 &(_TcpObject)->CompBuffer->Frame.NoVlan.TcpIp6.SxgTcp : \
359 &(_TcpObject)->CompBuffer->Frame.NoVlan.TcpIp.SxgTcp))
360
361#define SXG_LOCATE_IP_FRAME_HDR(_TcpObject) \
362 (_TcpObject)->VlanId ? \
363 &(_TcpObject)->CompBuffer->Frame.HasVlan.TcpIp.Ip : \
364 &(_TcpObject)->CompBuffer->Frame.NoVlan.TcpIp.Ip
365
366#define SXG_LOCATE_IP6_FRAME_HDR(_TcpObject) \
367 (_TcpObject)->VlanId ? \
368 &(_TcpObject)->CompBuffer->Frame.HasVlan.TcpIp6.Ip : \
369 &(_TcpObject)->CompBuffer->Frame.NoVlan.TcpIp6.Ip
370
371
372#if DBG
373// Horrible kludge to distinguish dumb-nic, slowpath, and
374// fastpath traffic. Decrement the HopLimit by one
375// for slowpath, two for fastpath. This assumes the limit is measurably
376// greater than two, which I think is reasonable.
377// Obviously this is DBG only. Maybe remove later, or #if 0 so we
378// can set it when needed
379#define SXG_DBG_HOP_LIMIT(_TcpObject, _FastPath) { \
380 PIPV6_HDR _Ip6FrameHdr; \
381 if((_TcpObject)->IPv6) { \
382 _Ip6FrameHdr = SXG_LOCATE_IP6_FRAME_HDR((_TcpObject)); \
383 if(_FastPath) { \
384 _Ip6FrameHdr->HopLimit = (_TcpObject)->Cached.TtlOrHopLimit - 2; \
385 } else { \
386 _Ip6FrameHdr->HopLimit = (_TcpObject)->Cached.TtlOrHopLimit - 1; \
387 } \
388 } \
389}
390#else
391// Do nothing with free build
392#define SXG_DBG_HOP_LIMIT(_TcpObject, _FastPath)
393#endif
394
395/***************************************************************************
396 * Receive and transmit rings
397 ***************************************************************************/
398#define SXG_MAX_RING_SIZE 256
399#define SXG_XMT_RING_SIZE 128 // Start with 128
400#define SXG_RCV_RING_SIZE 128 // Start with 128
401#define SXG_MAX_ENTRIES 4096
402
403// Structure and macros to manage a ring
404typedef struct _SXG_RING_INFO {
405 unsigned char Head; // Where we add entries - Note unsigned char:RING_SIZE
406 unsigned char Tail; // Where we pull off completed entries
407 ushort Size; // Ring size - Must be multiple of 2
408 void * Context[SXG_MAX_RING_SIZE]; // Shadow ring
409} SXG_RING_INFO, *PSXG_RING_INFO;
410
411#define SXG_INITIALIZE_RING(_ring, _size) { \
412 (_ring).Head = 0; \
413 (_ring).Tail = 0; \
414 (_ring).Size = (_size); \
415}
416#define SXG_ADVANCE_INDEX(_index, _size) ((_index) = ((_index) + 1) & ((_size) - 1))
417#define SXG_PREVIOUS_INDEX(_index, _size) (((_index) - 1) &((_size) - 1))
418#define SXG_RING_EMPTY(_ring) ((_ring)->Head == (_ring)->Tail)
419#define SXG_RING_FULL(_ring) ((((_ring)->Head + 1) & ((_ring)->Size - 1)) == (_ring)->Tail)
420#define SXG_RING_ADVANCE_HEAD(_ring) SXG_ADVANCE_INDEX((_ring)->Head, ((_ring)->Size))
421#define SXG_RING_RETREAT_HEAD(_ring) ((_ring)->Head = \
422 SXG_PREVIOUS_INDEX((_ring)->Head, (_ring)->Size))
423#define SXG_RING_ADVANCE_TAIL(_ring) { \
424 ASSERT((_ring)->Tail != (_ring)->Head); \
425 SXG_ADVANCE_INDEX((_ring)->Tail, ((_ring)->Size)); \
426}
427// Set cmd to the next available ring entry, set the shadow context
428// entry and advance the ring.
429// The appropriate lock must be held when calling this macro
430#define SXG_GET_CMD(_ring, _ringinfo, _cmd, _context) { \
431 if(SXG_RING_FULL(_ringinfo)) { \
432 (_cmd) = NULL; \
433 } else { \
434 (_cmd) = &(_ring)->Descriptors[(_ringinfo)->Head]; \
435 (_ringinfo)->Context[(_ringinfo)->Head] = (void *)(_context);\
436 SXG_RING_ADVANCE_HEAD(_ringinfo); \
437 } \
438}
439
440// Abort the previously allocated command by retreating the head.
441// NOTE - The appopriate lock MUST NOT BE DROPPED between the SXG_GET_CMD
442// and SXG_ABORT_CMD calls.
443#define SXG_ABORT_CMD(_ringinfo) { \
444 ASSERT(!(SXG_RING_EMPTY(_ringinfo))); \
445 SXG_RING_RETREAT_HEAD(_ringinfo); \
446 (_ringinfo)->Context[(_ringinfo)->Head] = NULL; \
447}
448
449// For the given ring, return a pointer to the tail cmd and context,
450// clear the context and advance the tail
451#define SXG_RETURN_CMD(_ring, _ringinfo, _cmd, _context) { \
452 (_cmd) = &(_ring)->Descriptors[(_ringinfo)->Tail]; \
453 (_context) = (_ringinfo)->Context[(_ringinfo)->Tail]; \
454 (_ringinfo)->Context[(_ringinfo)->Tail] = NULL; \
455 SXG_RING_ADVANCE_TAIL(_ringinfo); \
456}
457
458/***************************************************************************
459 *
460 * Host Command Buffer - commands to INIC via the Cmd Rings
461 *
462 ***************************************************************************/
463/*
464 * 31 15 0
465 * .___________________.___________________.
466 * |<-------------- Sgl Low -------------->|
467 * |_________|_________|_________|_________|0 0x00
468 * |<-------------- Sgl High ------------->|
469 * |_________|_________|_________|_________|4 0x04
470 * |<------------- Sge 0 Low ----------->|
471 * |_________|_________|_________|_________|8 0x08
472 * |<------------- Sge 0 High ----------->|
473 * |_________|_________|_________|_________|12 0x0c
474 * |<------------ Sge 0 Length ---------->|
475 * |_________|_________|_________|_________|16 0x10
476 * |<----------- Window Update ----------->|
477 * |<-------- SP 1st SGE offset ---------->|
478 * |_________|_________|_________|_________|20 0x14
479 * |<----------- Total Length ------------>|
480 * |_________|_________|_________|_________|24 0x18
481 * |<----- LCnt ------>|<----- Flags ----->|
482 * |_________|_________|_________|_________|28 0x1c
483 */
484#pragma pack(push, 1)
485typedef struct _SXG_CMD {
486 dma_addr_t Sgl; // Physical address of SGL
487 union {
488 struct {
489 dma64_addr_t FirstSgeAddress;// Address of first SGE
490 u32 FirstSgeLength; // Length of first SGE
491 union {
492 u32 Rsvd1; // TOE NA
493 u32 SgeOffset; // Slowpath - 2nd SGE offset
494 u32 Resid; // MDL completion - clobbers update
495 };
496 union {
497 u32 TotalLength; // Total transfer length
498 u32 Mss; // LSO MSS
499 };
500 } Buffer;
501 };
502 union {
503 struct {
504 unsigned char Flags:4; // slowpath flags
505 unsigned char IpHl:4; // Ip header length (>>2)
506 unsigned char MacLen; // Mac header len
507 } CsumFlags;
508 struct {
509 ushort Flags:4; // slowpath flags
510 ushort TcpHdrOff:7; // TCP
511 ushort MacLen:5; // Mac header len
512 } LsoFlags;
513 ushort Flags; // flags
514 };
515 union {
516 ushort SgEntries; // SG entry count including first sge
517 struct {
518 unsigned char Status; // Copied from event status
519 unsigned char NotUsed;
520 } Status;
521 };
522} SXG_CMD, *PSXG_CMD;
523#pragma pack(pop)
524
525#pragma pack(push, 1)
526typedef struct _VLAN_HDR {
527 ushort VlanTci;
528 ushort VlanTpid;
529} VLAN_HDR, *PVLAN_HDR;
530#pragma pack(pop)
531
532/*
533 * Slowpath Flags:
534 *
535 *
536 * LSS Flags:
537 * .---
538 * /.--- TCP Large segment send
539 * //.---
540 * ///.---
541 * 3 1 1 ////
542 * 1 5 0 ||||
543 * .___________________.____________vvvv.
544 * | |MAC | TCP | |
545 * | LCnt |hlen|hdroff|Flgs|
546 * |___________________|||||||||||||____|
547 *
548 *
549 * Checksum Flags
550 *
551 * .---
552 * /.---
553 * //.--- Checksum TCP
554 * ///.--- Checksum IP
555 * 3 1 //// No bits - normal send
556 * 1 5 7 ||||
557 * .___________________._______________vvvv.
558 * | | Offload | IP | |
559 * | LCnt |MAC hlen |Hlen|Flgs|
560 * |___________________|____|____|____|____|
561 *
562 */
563// Slowpath CMD flags
564#define SXG_SLOWCMD_CSUM_IP 0x01 // Checksum IP
565#define SXG_SLOWCMD_CSUM_TCP 0x02 // Checksum TCP
566#define SXG_SLOWCMD_LSO 0x04 // Large segment send
567
568typedef struct _SXG_XMT_RING {
569 SXG_CMD Descriptors[SXG_XMT_RING_SIZE];
570} SXG_XMT_RING, *PSXG_XMT_RING;
571
572typedef struct _SXG_RCV_RING {
573 SXG_CMD Descriptors[SXG_RCV_RING_SIZE];
574} SXG_RCV_RING, *PSXG_RCV_RING;
575
576/***************************************************************************
577 * Share memory buffer types - Used to identify asynchronous
578 * shared memory allocation
579 ***************************************************************************/
580typedef enum {
581 SXG_BUFFER_TYPE_RCV, // Receive buffer
582 SXG_BUFFER_TYPE_SGL // SGL buffer
583} SXG_BUFFER_TYPE;
584
585// State for SXG buffers
586#define SXG_BUFFER_FREE 0x01
587#define SXG_BUFFER_BUSY 0x02
588#define SXG_BUFFER_ONCARD 0x04
589#define SXG_BUFFER_UPSTREAM 0x08
590
591/***************************************************************************
592 * Receive data buffers
593 *
594 * Receive data buffers are given to the Sahara card 128 at a time.
595 * This is accomplished by filling in a "receive descriptor block"
596 * with 128 "receive descriptors". Each descriptor consists of
597 * a physical address, which the card uses as the address to
598 * DMA data into, and a virtual address, which is given back
599 * to the host in the "HostHandle" portion of an event.
600 * The receive descriptor data structure is defined below
601 * as SXG_RCV_DATA_DESCRIPTOR, and the corresponding block
602 * is defined as SXG_RCV_DESCRIPTOR_BLOCK.
603 *
604 * This receive descriptor block is given to the card by filling
605 * in the Sgl field of a SXG_CMD entry from pAdapt->RcvRings[0]
606 * with the physical address of the receive descriptor block.
607 *
608 * Both the receive buffers and the receive descriptor blocks
609 * require additional data structures to maintain them
610 * on a free queue and contain other information associated with them.
611 * Those data structures are defined as the SXG_RCV_DATA_BUFFER_HDR
612 * and SXG_RCV_DESCRIPTOR_BLOCK_HDR respectively.
613 *
614 * Since both the receive buffers and the receive descriptor block
615 * must be accessible by the card, both must be allocated out of
616 * shared memory. To ensure that we always have a descriptor
617 * block available for every 128 buffers, we allocate all of
618 * these resources together in a single block. This entire
619 * block is managed by a SXG_RCV_BLOCK_HDR, who's sole purpose
620 * is to maintain address information so that the entire block
621 * can be free later.
622 *
623 * Further complicating matters is the fact that the receive
624 * buffers must be variable in length in order to accomodate
625 * jumbo frame configurations. We configure the buffer
626 * length so that the buffer and it's corresponding SXG_RCV_DATA_BUFFER_HDR
627 * structure add up to an even boundary. Then we place the
628 * remaining data structures after 128 of them as shown in
629 * the following diagram:
630 *
631 * _________________________________________
632 * | |
633 * | Variable length receive buffer #1 |
634 * |_________________________________________|
635 * | |
636 * | SXG_RCV_DATA_BUFFER_HDR #1 |
637 * |_________________________________________| <== Even 2k or 10k boundary
638 * | |
639 * | ... repeat 2-128 .. |
640 * |_________________________________________|
641 * | |
642 * | SXG_RCV_DESCRIPTOR_BLOCK |
643 * | Contains SXG_RCV_DATA_DESCRIPTOR * 128 |
644 * |_________________________________________|
645 * | |
646 * | SXG_RCV_DESCRIPTOR_BLOCK_HDR |
647 * |_________________________________________|
648 * | |
649 * | SXG_RCV_BLOCK_HDR |
650 * |_________________________________________|
651 *
652 * Memory consumption:
653 * Non-jumbo:
654 * Buffers and SXG_RCV_DATA_BUFFER_HDR = 2k * 128 = 256k
655 * + SXG_RCV_DESCRIPTOR_BLOCK = 2k
656 * + SXG_RCV_DESCRIPTOR_BLOCK_HDR = ~32
657 * + SXG_RCV_BLOCK_HDR = ~32
658 * => Total = ~258k/block
659 *
660 * Jumbo:
661 * Buffers and SXG_RCV_DATA_BUFFER_HDR = 10k * 128 = 1280k
662 * + SXG_RCV_DESCRIPTOR_BLOCK = 2k
663 * + SXG_RCV_DESCRIPTOR_BLOCK_HDR = ~32
664 * + SXG_RCV_BLOCK_HDR = ~32
665 * => Total = ~1282k/block
666 *
667 ***************************************************************************/
668#define SXG_RCV_DATA_BUFFERS 4096 // Amount to give to the card
669#define SXG_INITIAL_RCV_DATA_BUFFERS 8192 // Initial pool of buffers
670#define SXG_MIN_RCV_DATA_BUFFERS 2048 // Minimum amount and when to get more
671#define SXG_MAX_RCV_BLOCKS 128 // = 16384 receive buffers
672
673// Receive buffer header
674typedef struct _SXG_RCV_DATA_BUFFER_HDR {
675 dma_addr_t PhysicalAddress; // Buffer physical address
676 // Note - DO NOT USE the VirtualAddress field to locate data.
677 // Use the sxg.h:SXG_RECEIVE_DATA_LOCATION macro instead.
678 void *VirtualAddress; // Start of buffer
679 LIST_ENTRY FreeList; // Free queue of buffers
680 struct _SXG_RCV_DATA_BUFFER_HDR *Next; // Fastpath data buffer queue
681 u32 Size; // Buffer size
682 u32 ByteOffset; // See SXG_RESTORE_MDL_OFFSET
683 unsigned char State; // See SXG_BUFFER state above
684 unsigned char Status; // Event status (to log PUSH)
685 struct sk_buff * skb; // Double mapped (nbl and pkt)
686} SXG_RCV_DATA_BUFFER_HDR, *PSXG_RCV_DATA_BUFFER_HDR;
687
688// SxgSlowReceive uses the PACKET (skb) contained
689// in the SXG_RCV_DATA_BUFFER_HDR when indicating dumb-nic data
690#define SxgDumbRcvPacket skb
691
692#define SXG_RCV_DATA_HDR_SIZE 256 // Space for SXG_RCV_DATA_BUFFER_HDR
693#define SXG_RCV_DATA_BUFFER_SIZE 2048 // Non jumbo = 2k including HDR
694#define SXG_RCV_JUMBO_BUFFER_SIZE 10240 // jumbo = 10k including HDR
695
696// Receive data descriptor
697typedef struct _SXG_RCV_DATA_DESCRIPTOR {
698 union {
699 struct sk_buff * VirtualAddress; // Host handle
700 u64 ForceTo8Bytes; // Force x86 to 8-byte boundary
701 };
702 dma_addr_t PhysicalAddress;
703} SXG_RCV_DATA_DESCRIPTOR, *PSXG_RCV_DATA_DESCRIPTOR;
704
705// Receive descriptor block
706#define SXG_RCV_DESCRIPTORS_PER_BLOCK 128
707#define SXG_RCV_DESCRIPTOR_BLOCK_SIZE 2048 // For sanity check
708typedef struct _SXG_RCV_DESCRIPTOR_BLOCK {
709 SXG_RCV_DATA_DESCRIPTOR Descriptors[SXG_RCV_DESCRIPTORS_PER_BLOCK];
710} SXG_RCV_DESCRIPTOR_BLOCK, *PSXG_RCV_DESCRIPTOR_BLOCK;
711
712// Receive descriptor block header
713typedef struct _SXG_RCV_DESCRIPTOR_BLOCK_HDR {
714 void * VirtualAddress; // Start of 2k buffer
715 dma_addr_t PhysicalAddress; // ..and it's physical address
716 LIST_ENTRY FreeList; // Free queue of descriptor blocks
717 unsigned char State; // See SXG_BUFFER state above
718} SXG_RCV_DESCRIPTOR_BLOCK_HDR, *PSXG_RCV_DESCRIPTOR_BLOCK_HDR;
719
720// Receive block header
721typedef struct _SXG_RCV_BLOCK_HDR {
722 void * VirtualAddress; // Start of virtual memory
723 dma_addr_t PhysicalAddress; // ..and it's physical address
724 LIST_ENTRY AllList; // Queue of all SXG_RCV_BLOCKS
725} SXG_RCV_BLOCK_HDR, *PSXG_RCV_BLOCK_HDR;
726
727// Macros to determine data structure offsets into receive block
728#define SXG_RCV_BLOCK_SIZE(_Buffersize) \
729 (((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK) + \
730 (sizeof(SXG_RCV_DESCRIPTOR_BLOCK)) + \
731 (sizeof(SXG_RCV_DESCRIPTOR_BLOCK_HDR)) + \
732 (sizeof(SXG_RCV_BLOCK_HDR)))
733#define SXG_RCV_BUFFER_DATA_SIZE(_Buffersize) \
734 ((_Buffersize) - SXG_RCV_DATA_HDR_SIZE)
735#define SXG_RCV_DATA_BUFFER_HDR_OFFSET(_Buffersize) \
736 ((_Buffersize) - SXG_RCV_DATA_HDR_SIZE)
737#define SXG_RCV_DESCRIPTOR_BLOCK_OFFSET(_Buffersize) \
738 ((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK)
739#define SXG_RCV_DESCRIPTOR_BLOCK_HDR_OFFSET(_Buffersize) \
740 (((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK) + \
741 (sizeof(SXG_RCV_DESCRIPTOR_BLOCK)))
742#define SXG_RCV_BLOCK_HDR_OFFSET(_Buffersize) \
743 (((_Buffersize) * SXG_RCV_DESCRIPTORS_PER_BLOCK) + \
744 (sizeof(SXG_RCV_DESCRIPTOR_BLOCK)) + \
745 (sizeof(SXG_RCV_DESCRIPTOR_BLOCK_HDR)))
746
747// Use the miniport reserved portion of the NBL to locate
748// our SXG_RCV_DATA_BUFFER_HDR structure.
749typedef struct _SXG_RCV_NBL_RESERVED {
750 PSXG_RCV_DATA_BUFFER_HDR RcvDataBufferHdr;
751 void * Available;
752} SXG_RCV_NBL_RESERVED, *PSXG_RCV_NBL_RESERVED;
753
754#define SXG_RCV_NBL_BUFFER_HDR(_NBL) (((PSXG_RCV_NBL_RESERVED)NET_BUFFER_LIST_MINIPORT_RESERVED(_NBL))->RcvDataBufferHdr)
755
756/***************************************************************************
757 * Scatter gather list buffer
758 ***************************************************************************/
759#define SXG_INITIAL_SGL_BUFFERS 8192 // Initial pool of SGL buffers
760#define SXG_MIN_SGL_BUFFERS 2048 // Minimum amount and when to get more
761#define SXG_MAX_SGL_BUFFERS 16384 // Maximum to allocate (note ADAPT:ushort)
762
763
764// Self identifying structure type
765typedef enum _SXG_SGL_TYPE {
766 SXG_SGL_DUMB, // Dumb NIC SGL
767 SXG_SGL_SLOW, // Slowpath protocol header - see below
768 SXG_SGL_CHIMNEY // Chimney offload SGL
769} SXG_SGL_TYPE, PSXG_SGL_TYPE;
770
771// Note - the description below is Microsoft specific
772//
773// The following definition specifies the amount of shared memory to allocate
774// for the SCATTER_GATHER_LIST portion of the SXG_SCATTER_GATHER data structure.
775// The following considerations apply when setting this value:
776// - First, the Sahara card is designed to read the Microsoft SGL structure
777// straight out of host memory. This means that the SGL must reside in
778// shared memory. If the length here is smaller than the SGL for the
779// NET_BUFFER, then NDIS will allocate its own buffer. The buffer
780// that NDIS allocates is not in shared memory, so when this happens,
781// the SGL will need to be copied to a set of SXG_SCATTER_GATHER buffers.
782// In other words.. we don't want this value to be too small.
783// - On the other hand.. we're allocating up to 16k of these things. If
784// we make this too big, we start to consume a ton of memory..
785// At the moment, I'm going to limit the number of SG entries to 150.
786// If each entry maps roughly 4k, then this should cover roughly 600kB
787// NET_BUFFERs. Furthermore, since each entry is 24 bytes, the total
788// SGE portion of the structure consumes 3600 bytes, which should allow
789// the entire SXG_SCATTER_GATHER structure to reside comfortably within
790// a 4k block, providing the remaining fields stay under 500 bytes.
791//
792// So with 150 entries, the SXG_SCATTER_GATHER structure becomes roughly
793// 4k. At 16k of them, that amounts to 64M of shared memory. A ton, but
794// manageable.
795#define SXG_SGL_ENTRIES 150
796
797// The ucode expects an NDIS SGL structure that
798// is formatted for an x64 system. When running
799// on an x64 system, we can simply hand the NDIS SGL
800// to the card directly. For x86 systems we must reconstruct
801// the SGL. The following structure defines an x64
802// formatted SGL entry
803typedef struct _SXG_X64_SGE {
804 dma64_addr_t Address; // same as wdm.h
805 u32 Length; // same as wdm.h
806 u32 CompilerPad;// The compiler pads to 8-bytes
807 u64 Reserved; // u32 * in wdm.h. Force to 8 bytes
808} SXG_X64_SGE, *PSXG_X64_SGE;
809
810typedef struct _SCATTER_GATHER_ELEMENT {
811 dma64_addr_t Address; // same as wdm.h
812 u32 Length; // same as wdm.h
813 u32 CompilerPad;// The compiler pads to 8-bytes
814 u64 Reserved; // u32 * in wdm.h. Force to 8 bytes
815} SCATTER_GATHER_ELEMENT, *PSCATTER_GATHER_ELEMENT;
816
817
818typedef struct _SCATTER_GATHER_LIST {
819 u32 NumberOfElements;
820 u32 * Reserved;
821 SCATTER_GATHER_ELEMENT Elements[];
822} SCATTER_GATHER_LIST, *PSCATTER_GATHER_LIST;
823
824// The card doesn't care about anything except elements, so
825// we can leave the u32 * reserved field alone in the following
826// SGL structure. But redefine from wdm.h:SCATTER_GATHER_LIST so
827// we can specify SXG_X64_SGE and define a fixed number of elements
828typedef struct _SXG_X64_SGL {
829 u32 NumberOfElements;
830 u32 * Reserved;
831 SXG_X64_SGE Elements[SXG_SGL_ENTRIES];
832} SXG_X64_SGL, *PSXG_X64_SGL;
833
834typedef struct _SXG_SCATTER_GATHER {
835 SXG_SGL_TYPE Type; // FIRST! Dumb-nic or offload
836 void * adapter; // Back pointer to adapter
837 LIST_ENTRY FreeList; // Free SXG_SCATTER_GATHER blocks
838 LIST_ENTRY AllList; // All SXG_SCATTER_GATHER blocks
839 dma_addr_t PhysicalAddress;// physical address
840 unsigned char State; // See SXG_BUFFER state above
841 unsigned char CmdIndex; // Command ring index
842 struct sk_buff * DumbPacket; // Associated Packet
843 u32 Direction; // For asynchronous completions
844 u32 CurOffset; // Current SGL offset
845 u32 SglRef; // SGL reference count
846 VLAN_HDR VlanTag; // VLAN tag to be inserted into SGL
847 PSCATTER_GATHER_LIST pSgl; // SGL Addr. Possibly &Sgl
848 SXG_X64_SGL Sgl; // SGL handed to card
849} SXG_SCATTER_GATHER, *PSXG_SCATTER_GATHER;
850
851#if defined(CONFIG_X86_64)
852#define SXG_SGL_BUFFER(_SxgSgl) (&_SxgSgl->Sgl)
853#define SXG_SGL_BUF_SIZE sizeof(SXG_X64_SGL)
854#elif defined(CONFIG_X86)
855// Force NDIS to give us it's own buffer so we can reformat to our own
856#define SXG_SGL_BUFFER(_SxgSgl) NULL
857#define SXG_SGL_BUF_SIZE 0
858#else
859 Stop Compilation;
860#endif
861
diff --git a/drivers/staging/sxg/sxghw.h b/drivers/staging/sxg/sxghw.h
new file mode 100644
index 00000000000..8f4f6effdd9
--- /dev/null
+++ b/drivers/staging/sxg/sxghw.h
@@ -0,0 +1,734 @@
1/*
2 * Copyright © 1997-2007 Alacritech, Inc. All rights reserved
3 *
4 * $Id: sxghw.h,v 1.2 2008/07/24 17:24:23 chris Exp $
5 *
6 * sxghw.h:
7 *
8 * This file contains structures and definitions for the
9 * Alacritech Sahara hardware
10 */
11
12
13/*******************************************************************************
14 * Configuration space
15 *******************************************************************************/
16// PCI Vendor ID
17#define SXG_VENDOR_ID 0x139A // Alacritech's Vendor ID
18
19// PCI Device ID
20#define SXG_DEVICE_ID 0x0009 // Sahara Device ID
21
22//
23// Subsystem IDs.
24//
25// The subsystem ID value is broken into bit fields as follows:
26// Bits [15:12] - Function
27// Bits [11:8] - OEM and/or operating system.
28// Bits [7:0] - Base SID.
29//
30// SSID field (bit) masks
31#define SSID_BASE_MASK 0x00FF // Base subsystem ID mask
32#define SSID_OEM_MASK 0x0F00 // Subsystem OEM mask
33#define SSID_FUNC_MASK 0xF000 // Subsystem function mask
34
35// Base SSID's
36#define SSID_SAHARA_PROTO 0x0018 // 100022 Sahara prototype (XenPak) board
37#define SSID_SAHARA_FIBER 0x0019 // 100023 Sahara 1-port fiber board
38#define SSID_SAHARA_COPPER 0x001A // 100024 Sahara 1-port copper board
39
40// Useful SSID macros
41#define SSID_BASE(ssid) ((ssid) & SSID_BASE_MASK) // isolate base SSID bits
42#define SSID_OEM(ssid) ((ssid) & SSID_OEM_MASK) // isolate SSID OEM bits
43#define SSID_FUNC(ssid) ((ssid) & SSID_FUNC_MASK) // isolate SSID function bits
44
45/*******************************************************************************
46 * HW Register Space
47 *******************************************************************************/
48#define SXG_HWREG_MEMSIZE 0x4000 // 16k
49
50#pragma pack(push, 1)
51typedef struct _SXG_HW_REGS {
52 u32 Reset; // Write 0xdead to invoke soft reset
53 u32 Pad1; // No register defined at offset 4
54 u32 InterruptMask0; // Deassert legacy interrupt on function 0
55 u32 InterruptMask1; // Deassert legacy interrupt on function 1
56 u32 UcodeDataLow; // Store microcode instruction bits 31-0
57 u32 UcodeDataMiddle; // Store microcode instruction bits 63-32
58 u32 UcodeDataHigh; // Store microcode instruction bits 95-64
59 u32 UcodeAddr; // Store microcode address - See flags below
60 u32 PadTo0x80[24]; // Pad to Xcv configuration registers
61 u32 MacConfig0; // 0x80 - AXGMAC Configuration Register 0
62 u32 MacConfig1; // 0x84 - AXGMAC Configuration Register 1
63 u32 MacConfig2; // 0x88 - AXGMAC Configuration Register 2
64 u32 MacConfig3; // 0x8C - AXGMAC Configuration Register 3
65 u32 MacAddressLow; // 0x90 - AXGMAC MAC Station Address - octets 1-4
66 u32 MacAddressHigh; // 0x94 - AXGMAC MAC Station Address - octets 5-6
67 u32 MacReserved1[2]; // 0x98 - AXGMAC Reserved
68 u32 MacMaxFrameLen; // 0xA0 - AXGMAC Maximum Frame Length
69 u32 MacReserved2[2]; // 0xA4 - AXGMAC Reserved
70 u32 MacRevision; // 0xAC - AXGMAC Revision Level Register
71 u32 MacReserved3[4]; // 0xB0 - AXGMAC Reserved
72 u32 MacAmiimCmd; // 0xC0 - AXGMAC AMIIM Command Register
73 u32 MacAmiimField; // 0xC4 - AXGMAC AMIIM Field Register
74 u32 MacAmiimConfig; // 0xC8 - AXGMAC AMIIM Configuration Register
75 u32 MacAmiimLink; // 0xCC - AXGMAC AMIIM Link Fail Vector Register
76 u32 MacAmiimIndicator; // 0xD0 - AXGMAC AMIIM Indicator Registor
77 u32 PadTo0x100[11]; // 0xD4 - 0x100 - Pad
78 u32 XmtConfig; // 0x100 - Transmit Configuration Register
79 u32 RcvConfig; // 0x104 - Receive Configuration Register 1
80 u32 LinkAddress0Low; // 0x108 - Link address 0
81 u32 LinkAddress0High; // 0x10C - Link address 0
82 u32 LinkAddress1Low; // 0x110 - Link address 1
83 u32 LinkAddress1High; // 0x114 - Link address 1
84 u32 LinkAddress2Low; // 0x118 - Link address 2
85 u32 LinkAddress2High; // 0x11C - Link address 2
86 u32 LinkAddress3Low; // 0x120 - Link address 3
87 u32 LinkAddress3High; // 0x124 - Link address 3
88 u32 ToeplitzKey[10]; // 0x128 - 0x150 - Toeplitz key
89 u32 SocketKey[10]; // 0x150 - 0x178 - Socket Key
90 u32 LinkStatus; // 0x178 - Link status
91 u32 ClearStats; // 0x17C - Clear Stats
92 u32 XmtErrorsLow; // 0x180 - Transmit stats - errors
93 u32 XmtErrorsHigh; // 0x184 - Transmit stats - errors
94 u32 XmtFramesLow; // 0x188 - Transmit stats - frame count
95 u32 XmtFramesHigh; // 0x18C - Transmit stats - frame count
96 u32 XmtBytesLow; // 0x190 - Transmit stats - byte count
97 u32 XmtBytesHigh; // 0x194 - Transmit stats - byte count
98 u32 XmtTcpSegmentsLow; // 0x198 - Transmit stats - TCP segments
99 u32 XmtTcpSegmentsHigh; // 0x19C - Transmit stats - TCP segments
100 u32 XmtTcpBytesLow; // 0x1A0 - Transmit stats - TCP bytes
101 u32 XmtTcpBytesHigh; // 0x1A4 - Transmit stats - TCP bytes
102 u32 RcvErrorsLow; // 0x1A8 - Receive stats - errors
103 u32 RcvErrorsHigh; // 0x1AC - Receive stats - errors
104 u32 RcvFramesLow; // 0x1B0 - Receive stats - frame count
105 u32 RcvFramesHigh; // 0x1B4 - Receive stats - frame count
106 u32 RcvBytesLow; // 0x1B8 - Receive stats - byte count
107 u32 RcvBytesHigh; // 0x1BC - Receive stats - byte count
108 u32 RcvTcpSegmentsLow; // 0x1C0 - Receive stats - TCP segments
109 u32 RcvTcpSegmentsHigh; // 0x1C4 - Receive stats - TCP segments
110 u32 RcvTcpBytesLow; // 0x1C8 - Receive stats - TCP bytes
111 u32 RcvTcpBytesHigh; // 0x1CC - Receive stats - TCP bytes
112 u32 PadTo0x200[12]; // 0x1D0 - 0x200 - Pad
113 u32 Software[1920]; // 0x200 - 0x2000 - Software defined (not used)
114 u32 MsixTable[1024]; // 0x2000 - 0x3000 - MSIX Table
115 u32 MsixBitArray[1024]; // 0x3000 - 0x4000 - MSIX Pending Bit Array
116} SXG_HW_REGS, *PSXG_HW_REGS;
117#pragma pack(pop)
118
119// Microcode Address Flags
120#define MICROCODE_ADDRESS_GO 0x80000000 // Start microcode
121#define MICROCODE_ADDRESS_WRITE 0x40000000 // Store microcode
122#define MICROCODE_ADDRESS_READ 0x20000000 // Read microcode
123#define MICROCODE_ADDRESS_PARITY 0x10000000 // Parity error detected
124#define MICROCODE_ADDRESS_MASK 0x00001FFF // Address bits
125
126// Link Address Registers
127#define LINK_ADDRESS_ENABLE 0x80000000 // Applied to link address high
128
129// Microsoft register space size
130#define SXG_UCODEREG_MEMSIZE 0x40000 // 256k
131
132// Sahara microcode register address format. The command code,
133// extended command code, and associated processor are encoded in
134// the address bits as follows
135#define SXG_ADDRESS_CODE_SHIFT 2 // Base command code
136#define SXG_ADDRESS_CODE_MASK 0x0000003C
137#define SXG_ADDRESS_EXCODE_SHIFT 6 // Extended (or sub) command code
138#define SXG_ADDRESS_EXCODE_MASK 0x00001FC0
139#define SXG_ADDRESS_CPUID_SHIFT 13 // CPU
140#define SXG_ADDRESS_CPUID_MASK 0x0003E000
141#define SXG_REGISTER_SIZE_PER_CPU 0x00002000 // Used to sanity check UCODE_REGS structure
142
143// Sahara receive sequencer status values
144#define SXG_RCV_STATUS_ATTN 0x80000000 // Attention
145#define SXG_RCV_STATUS_TRANSPORT_MASK 0x3F000000 // Transport mask
146#define SXG_RCV_STATUS_TRANSPORT_ERROR 0x20000000 // Transport error
147#define SXG_RCV_STATUS_TRANSPORT_CSUM 0x23000000 // Transport cksum error
148#define SXG_RCV_STATUS_TRANSPORT_UFLOW 0x22000000 // Transport underflow
149#define SXG_RCV_STATUS_TRANSPORT_HDRLEN 0x20000000 // Transport header length
150#define SXG_RCV_STATUS_TRANSPORT_FLAGS 0x10000000 // Transport flags detected
151#define SXG_RCV_STATUS_TRANSPORT_OPTS 0x08000000 // Transport options detected
152#define SXG_RCV_STATUS_TRANSPORT_SESS_MASK 0x07000000 // Transport DDP
153#define SXG_RCV_STATUS_TRANSPORT_DDP 0x06000000 // Transport DDP
154#define SXG_RCV_STATUS_TRANSPORT_iSCSI 0x05000000 // Transport iSCSI
155#define SXG_RCV_STATUS_TRANSPORT_NFS 0x04000000 // Transport NFS
156#define SXG_RCV_STATUS_TRANSPORT_FTP 0x03000000 // Transport FTP
157#define SXG_RCV_STATUS_TRANSPORT_HTTP 0x02000000 // Transport HTTP
158#define SXG_RCV_STATUS_TRANSPORT_SMB 0x01000000 // Transport SMB
159#define SXG_RCV_STATUS_NETWORK_MASK 0x00FF0000 // Network mask
160#define SXG_RCV_STATUS_NETWORK_ERROR 0x00800000 // Network error
161#define SXG_RCV_STATUS_NETWORK_CSUM 0x00830000 // Network cksum error
162#define SXG_RCV_STATUS_NETWORK_UFLOW 0x00820000 // Network underflow error
163#define SXG_RCV_STATUS_NETWORK_HDRLEN 0x00800000 // Network header length
164#define SXG_RCV_STATUS_NETWORK_OFLOW 0x00400000 // Network overflow detected
165#define SXG_RCV_STATUS_NETWORK_MCAST 0x00200000 // Network multicast detected
166#define SXG_RCV_STATUS_NETWORK_OPTIONS 0x00100000 // Network options detected
167#define SXG_RCV_STATUS_NETWORK_OFFSET 0x00080000 // Network offset detected
168#define SXG_RCV_STATUS_NETWORK_FRAGMENT 0x00040000 // Network fragment detected
169#define SXG_RCV_STATUS_NETWORK_TRANS_MASK 0x00030000 // Network transport type mask
170#define SXG_RCV_STATUS_NETWORK_UDP 0x00020000 // UDP
171#define SXG_RCV_STATUS_NETWORK_TCP 0x00010000 // TCP
172#define SXG_RCV_STATUS_IPONLY 0x00008000 // IP-only not TCP
173#define SXG_RCV_STATUS_PKT_PRI 0x00006000 // Receive priority
174#define SXG_RCV_STATUS_PKT_PRI_SHFT 13 // Receive priority shift
175#define SXG_RCV_STATUS_PARITY 0x00001000 // MAC Receive RAM parity error
176#define SXG_RCV_STATUS_ADDRESS_MASK 0x00000F00 // Link address detection mask
177#define SXG_RCV_STATUS_ADDRESS_D 0x00000B00 // Link address D
178#define SXG_RCV_STATUS_ADDRESS_C 0x00000A00 // Link address C
179#define SXG_RCV_STATUS_ADDRESS_B 0x00000900 // Link address B
180#define SXG_RCV_STATUS_ADDRESS_A 0x00000800 // Link address A
181#define SXG_RCV_STATUS_ADDRESS_BCAST 0x00000300 // Link address broadcast
182#define SXG_RCV_STATUS_ADDRESS_MCAST 0x00000200 // Link address multicast
183#define SXG_RCV_STATUS_ADDRESS_CMCAST 0x00000100 // Link control multicast
184#define SXG_RCV_STATUS_LINK_MASK 0x000000FF // Link status mask
185#define SXG_RCV_STATUS_LINK_ERROR 0x00000080 // Link error
186#define SXG_RCV_STATUS_LINK_MASK 0x000000FF // Link status mask
187#define SXG_RCV_STATUS_LINK_PARITY 0x00000087 // RcvMacQ parity error
188#define SXG_RCV_STATUS_LINK_EARLY 0x00000086 // Data early
189#define SXG_RCV_STATUS_LINK_BUFOFLOW 0x00000085 // Buffer overflow
190#define SXG_RCV_STATUS_LINK_CODE 0x00000084 // Link code error
191#define SXG_RCV_STATUS_LINK_DRIBBLE 0x00000083 // Dribble nibble
192#define SXG_RCV_STATUS_LINK_CRC 0x00000082 // CRC error
193#define SXG_RCV_STATUS_LINK_OFLOW 0x00000081 // Link overflow
194#define SXG_RCV_STATUS_LINK_UFLOW 0x00000080 // Link underflow
195#define SXG_RCV_STATUS_LINK_8023 0x00000020 // 802.3
196#define SXG_RCV_STATUS_LINK_SNAP 0x00000010 // Snap
197#define SXG_RCV_STATUS_LINK_VLAN 0x00000008 // VLAN
198#define SXG_RCV_STATUS_LINK_TYPE_MASK 0x00000007 // Network type mask
199#define SXG_RCV_STATUS_LINK_CONTROL 0x00000003 // Control packet
200#define SXG_RCV_STATUS_LINK_IPV6 0x00000002 // IPv6 packet
201#define SXG_RCV_STATUS_LINK_IPV4 0x00000001 // IPv4 packet
202
203/***************************************************************************
204 * Sahara receive and transmit configuration registers
205 ***************************************************************************/
206#define RCV_CONFIG_RESET 0x80000000 // RcvConfig register reset
207#define RCV_CONFIG_ENABLE 0x40000000 // Enable the receive logic
208#define RCV_CONFIG_ENPARSE 0x20000000 // Enable the receive parser
209#define RCV_CONFIG_SOCKET 0x10000000 // Enable the socket detector
210#define RCV_CONFIG_RCVBAD 0x08000000 // Receive all bad frames
211#define RCV_CONFIG_CONTROL 0x04000000 // Receive all control frames
212#define RCV_CONFIG_RCVPAUSE 0x02000000 // Enable pause transmit when attn
213#define RCV_CONFIG_TZIPV6 0x01000000 // Include TCP port w/ IPv6 toeplitz
214#define RCV_CONFIG_TZIPV4 0x00800000 // Include TCP port w/ IPv4 toeplitz
215#define RCV_CONFIG_FLUSH 0x00400000 // Flush buffers
216#define RCV_CONFIG_PRIORITY_MASK 0x00300000 // Priority level
217#define RCV_CONFIG_HASH_MASK 0x00030000 // Hash depth
218#define RCV_CONFIG_HASH_8 0x00000000 // Hash depth 8
219#define RCV_CONFIG_HASH_16 0x00010000 // Hash depth 16
220#define RCV_CONFIG_HASH_4 0x00020000 // Hash depth 4
221#define RCV_CONFIG_HASH_2 0x00030000 // Hash depth 2
222#define RCV_CONFIG_BUFLEN_MASK 0x0000FFF0 // Buffer length bits 15:4. ie multiple of 16.
223#define RCV_CONFIG_SKT_DIS 0x00000008 // Disable socket detection on attn
224// Macro to determine RCV_CONFIG_BUFLEN based on maximum frame size.
225// We add 18 bytes for Sahara receive status and padding, plus 4 bytes for CRC,
226// and round up to nearest 16 byte boundary
227#define RCV_CONFIG_BUFSIZE(_MaxFrame) ((((_MaxFrame) + 22) + 15) & RCV_CONFIG_BUFLEN_MASK)
228
229#define XMT_CONFIG_RESET 0x80000000 // XmtConfig register reset
230#define XMT_CONFIG_ENABLE 0x40000000 // Enable transmit logic
231#define XMT_CONFIG_MAC_PARITY 0x20000000 // Inhibit MAC RAM parity error
232#define XMT_CONFIG_BUF_PARITY 0x10000000 // Inhibit D2F buffer parity error
233#define XMT_CONFIG_MEM_PARITY 0x08000000 // Inhibit 1T SRAM parity error
234#define XMT_CONFIG_INVERT_PARITY 0x04000000 // Invert MAC RAM parity
235#define XMT_CONFIG_INITIAL_IPID 0x0000FFFF // Initial IPID
236
237/***************************************************************************
238 * A-XGMAC Registers - Occupy 0x80 - 0xD4 of the SXG_HW_REGS
239 *
240 * Full register descriptions can be found in axgmac.pdf
241 ***************************************************************************/
242// A-XGMAC Configuration Register 0
243#define AXGMAC_CFG0_SUB_RESET 0x80000000 // Sub module reset
244#define AXGMAC_CFG0_RCNTRL_RESET 0x00400000 // Receive control reset
245#define AXGMAC_CFG0_RFUNC_RESET 0x00200000 // Receive function reset
246#define AXGMAC_CFG0_TCNTRL_RESET 0x00040000 // Transmit control reset
247#define AXGMAC_CFG0_TFUNC_RESET 0x00020000 // Transmit function reset
248#define AXGMAC_CFG0_MII_RESET 0x00010000 // MII Management reset
249
250// A-XGMAC Configuration Register 1
251#define AXGMAC_CFG1_XMT_PAUSE 0x80000000 // Allow the sending of Pause frames
252#define AXGMAC_CFG1_XMT_EN 0x40000000 // Enable transmit
253#define AXGMAC_CFG1_RCV_PAUSE 0x20000000 // Allow the detection of Pause frames
254#define AXGMAC_CFG1_RCV_EN 0x10000000 // Enable receive
255#define AXGMAC_CFG1_XMT_STATE 0x04000000 // Current transmit state - READ ONLY
256#define AXGMAC_CFG1_RCV_STATE 0x01000000 // Current receive state - READ ONLY
257#define AXGMAC_CFG1_XOFF_SHORT 0x00001000 // Only pause for 64 slot on XOFF
258#define AXGMAC_CFG1_XMG_FCS1 0x00000400 // Delay transmit FCS 1 4-byte word
259#define AXGMAC_CFG1_XMG_FCS2 0x00000800 // Delay transmit FCS 2 4-byte words
260#define AXGMAC_CFG1_XMG_FCS3 0x00000C00 // Delay transmit FCS 3 4-byte words
261#define AXGMAC_CFG1_RCV_FCS1 0x00000100 // Delay receive FCS 1 4-byte word
262#define AXGMAC_CFG1_RCV_FCS2 0x00000200 // Delay receive FCS 2 4-byte words
263#define AXGMAC_CFG1_RCV_FCS3 0x00000300 // Delay receive FCS 3 4-byte words
264#define AXGMAC_CFG1_PKT_OVERRIDE 0x00000080 // Per-packet override enable
265#define AXGMAC_CFG1_SWAP 0x00000040 // Byte swap enable
266#define AXGMAC_CFG1_SHORT_ASSERT 0x00000020 // ASSERT srdrpfrm on short frame (<64)
267#define AXGMAC_CFG1_RCV_STRICT 0x00000010 // RCV only 802.3AE when CLEAR
268#define AXGMAC_CFG1_CHECK_LEN 0x00000008 // Verify frame length
269#define AXGMAC_CFG1_GEN_FCS 0x00000004 // Generate FCS
270#define AXGMAC_CFG1_PAD_MASK 0x00000003 // Mask for pad bits
271#define AXGMAC_CFG1_PAD_64 0x00000001 // Pad frames to 64 bytes
272#define AXGMAC_CFG1_PAD_VLAN 0x00000002 // Detect VLAN and pad to 68 bytes
273#define AXGMAC_CFG1_PAD_68 0x00000003 // Pad to 68 bytes
274
275// A-XGMAC Configuration Register 2
276#define AXGMAC_CFG2_GEN_PAUSE 0x80000000 // Generate single pause frame (test)
277#define AXGMAC_CFG2_LF_MANUAL 0x08000000 // Manual link fault sequence
278#define AXGMAC_CFG2_LF_AUTO 0x04000000 // Auto link fault sequence
279#define AXGMAC_CFG2_LF_REMOTE 0x02000000 // Remote link fault (READ ONLY)
280#define AXGMAC_CFG2_LF_LOCAL 0x01000000 // Local link fault (READ ONLY)
281#define AXGMAC_CFG2_IPG_MASK 0x001F0000 // Inter packet gap
282#define AXGMAC_CFG2_IPG_SHIFT 16
283#define AXGMAC_CFG2_PAUSE_XMT 0x00008000 // Pause transmit module
284#define AXGMAC_CFG2_IPG_EXTEN 0x00000020 // Enable IPG extension algorithm
285#define AXGMAC_CFG2_IPGEX_MASK 0x0000001F // IPG extension
286
287// A-XGMAC Configuration Register 3
288#define AXGMAC_CFG3_RCV_DROP 0xFFFF0000 // Receive frame drop filter
289#define AXGMAC_CFG3_RCV_DONT_CARE 0x0000FFFF // Receive frame don't care filter
290
291// A-XGMAC Station Address Register - Octets 1-4
292#define AXGMAC_SARLOW_OCTET_ONE 0xFF000000 // First octet
293#define AXGMAC_SARLOW_OCTET_TWO 0x00FF0000 // Second octet
294#define AXGMAC_SARLOW_OCTET_THREE 0x0000FF00 // Third octet
295#define AXGMAC_SARLOW_OCTET_FOUR 0x000000FF // Fourth octet
296
297// A-XGMAC Station Address Register - Octets 5-6
298#define AXGMAC_SARHIGH_OCTET_FIVE 0xFF000000 // Fifth octet
299#define AXGMAC_SARHIGH_OCTET_SIX 0x00FF0000 // Sixth octet
300
301// A-XGMAC Maximum frame length register
302#define AXGMAC_MAXFRAME_XMT 0x3FFF0000 // Maximum transmit frame length
303#define AXGMAC_MAXFRAME_XMT_SHIFT 16
304#define AXGMAC_MAXFRAME_RCV 0x0000FFFF // Maximum receive frame length
305// This register doesn't need to be written for standard MTU.
306// For jumbo, I'll just statically define the value here. This
307// value sets the receive byte count to 9036 (0x234C) and the
308// transmit WORD count to 2259 (0x8D3). These values include 22
309// bytes of padding beyond the jumbo MTU of 9014
310#define AXGMAC_MAXFRAME_JUMBO 0x08D3234C
311
312// A-XGMAC Revision level
313#define AXGMAC_REVISION_MASK 0x0000FFFF // Revision level
314
315// A-XGMAC AMIIM Command Register
316#define AXGMAC_AMIIM_CMD_START 0x00000008 // Command start
317#define AXGMAC_AMIIM_CMD_MASK 0x00000007 // Command
318#define AXGMAC_AMIIM_CMD_LEGACY_WRITE 1 // 10/100/1000 Mbps Phy Write
319#define AXGMAC_AMIIM_CMD_LEGACY_READ 2 // 10/100/1000 Mbps Phy Read
320#define AXGMAC_AMIIM_CMD_MONITOR_SINGLE 3 // Monitor single PHY
321#define AXGMAC_AMIIM_CMD_MONITOR_MULTIPLE 4 // Monitor multiple contiguous PHYs
322#define AXGMAC_AMIIM_CMD_10G_OPERATION 5 // Present AMIIM Field Reg
323#define AXGMAC_AMIIM_CMD_CLEAR_LINK_FAIL 6 // Clear Link Fail Bit in MIIM
324
325// A-XGMAC AMIIM Field Register
326#define AXGMAC_AMIIM_FIELD_ST 0xC0000000 // 2-bit ST field
327#define AXGMAC_AMIIM_FIELD_ST_SHIFT 30
328#define AXGMAC_AMIIM_FIELD_OP 0x30000000 // 2-bit OP field
329#define AXGMAC_AMIIM_FIELD_OP_SHIFT 28
330#define AXGMAC_AMIIM_FIELD_PORT_ADDR 0x0F800000 // Port address field (hstphyadx in spec)
331#define AXGMAC_AMIIM_FIELD_PORT_SHIFT 23
332#define AXGMAC_AMIIM_FIELD_DEV_ADDR 0x007C0000 // Device address field (hstregadx in spec)
333#define AXGMAC_AMIIM_FIELD_DEV_SHIFT 18
334#define AXGMAC_AMIIM_FIELD_TA 0x00030000 // 2-bit TA field
335#define AXGMAC_AMIIM_FIELD_TA_SHIFT 16
336#define AXGMAC_AMIIM_FIELD_DATA 0x0000FFFF // Data field
337
338// Values for the AXGMAC_AMIIM_FIELD_OP field in the A-XGMAC AMIIM Field Register
339#define MIIM_OP_ADDR 0 // MIIM Address set operation
340#define MIIM_OP_WRITE 1 // MIIM Write register operation
341#define MIIM_OP_READ 2 // MIIM Read register operation
342#define MIIM_OP_ADDR_SHIFT (MIIM_OP_ADDR << AXGMAC_AMIIM_FIELD_OP_SHIFT)
343
344// Values for the AXGMAC_AMIIM_FIELD_PORT_ADDR field in the A-XGMAC AMIIM Field Register
345#define MIIM_PORT_NUM 1 // All Sahara MIIM modules use port 1
346
347// Values for the AXGMAC_AMIIM_FIELD_DEV_ADDR field in the A-XGMAC AMIIM Field Register
348#define MIIM_DEV_PHY_PMA 1 // PHY PMA/PMD module MIIM device number
349#define MIIM_DEV_PHY_PCS 3 // PHY PCS module MIIM device number
350#define MIIM_DEV_PHY_XS 4 // PHY XS module MIIM device number
351#define MIIM_DEV_XGXS 5 // XGXS MIIM device number
352
353// Values for the AXGMAC_AMIIM_FIELD_TA field in the A-XGMAC AMIIM Field Register
354#define MIIM_TA_10GB 2 // set to 2 for 10 GB operation
355
356// A-XGMAC AMIIM Configuration Register
357#define AXGMAC_AMIIM_CFG_NOPREAM 0x00000080 // Bypass preamble of mngmt frame
358#define AXGMAC_AMIIM_CFG_HALF_CLOCK 0x0000007F // half-clock duration of MDC output
359
360// A-XGMAC AMIIM Indicator Register
361#define AXGMAC_AMIIM_INDC_LINK 0x00000010 // Link status from legacy PHY or MMD
362#define AXGMAC_AMIIM_INDC_MPHY 0x00000008 // Multiple phy operation in progress
363#define AXGMAC_AMIIM_INDC_SPHY 0x00000004 // Single phy operation in progress
364#define AXGMAC_AMIIM_INDC_MON 0x00000002 // Single or multiple monitor cmd
365#define AXGMAC_AMIIM_INDC_BUSY 0x00000001 // Set until cmd operation complete
366
367// Link Status and Control Register
368#define LS_PHY_CLR_RESET 0x80000000 // Clear reset signal to PHY
369#define LS_SERDES_POWER_DOWN 0x40000000 // Power down the Sahara Serdes
370#define LS_XGXS_ENABLE 0x20000000 // Enable the XAUI XGXS logic
371#define LS_XGXS_CTL 0x10000000 // Hold XAUI XGXS logic reset until Serdes is up
372#define LS_SERDES_DOWN 0x08000000 // When 0, XAUI Serdes is up and initialization is complete
373#define LS_TRACE_DOWN 0x04000000 // When 0, Trace Serdes is up and initialization is complete
374#define LS_PHY_CLK_25MHZ 0x02000000 // Set PHY clock to 25 MHz (else 156.125 MHz)
375#define LS_PHY_CLK_EN 0x01000000 // Enable clock to PHY
376#define LS_XAUI_LINK_UP 0x00000010 // XAUI link is up
377#define LS_XAUI_LINK_CHNG 0x00000008 // XAUI link status has changed
378#define LS_LINK_ALARM 0x00000004 // Link alarm pin
379#define LS_ATTN_CTRL_MASK 0x00000003 // Mask link attention control bits
380#define LS_ATTN_ALARM 0x00000000 // 00 => Attn on link alarm
381#define LS_ATTN_ALARM_OR_STAT_CHNG 0x00000001 // 01 => Attn on link alarm or status change
382#define LS_ATTN_STAT_CHNG 0x00000002 // 10 => Attn on link status change
383#define LS_ATTN_NONE 0x00000003 // 11 => no Attn
384
385// Link Address High Registers
386#define LINK_ADDR_ENABLE 0x80000000 // Enable this link address
387
388
389/***************************************************************************
390 * XGXS XAUI XGMII Extender registers
391 *
392 * Full register descriptions can be found in mxgxs.pdf
393 ***************************************************************************/
394// XGXS Register Map
395#define XGXS_ADDRESS_CONTROL1 0x0000 // XS Control 1
396#define XGXS_ADDRESS_STATUS1 0x0001 // XS Status 1
397#define XGXS_ADDRESS_DEVID_LOW 0x0002 // XS Device ID (low)
398#define XGXS_ADDRESS_DEVID_HIGH 0x0003 // XS Device ID (high)
399#define XGXS_ADDRESS_SPEED 0x0004 // XS Speed ability
400#define XGXS_ADDRESS_DEV_LOW 0x0005 // XS Devices in package
401#define XGXS_ADDRESS_DEV_HIGH 0x0006 // XS Devices in package
402#define XGXS_ADDRESS_STATUS2 0x0008 // XS Status 2
403#define XGXS_ADDRESS_PKGID_lOW 0x000E // XS Package Identifier
404#define XGXS_ADDRESS_PKGID_HIGH 0x000F // XS Package Identifier
405#define XGXS_ADDRESS_LANE_STATUS 0x0018 // 10G XGXS Lane Status
406#define XGXS_ADDRESS_TEST_CTRL 0x0019 // 10G XGXS Test Control
407#define XGXS_ADDRESS_RESET_LO1 0x8000 // Vendor-Specific Reset Lo 1
408#define XGXS_ADDRESS_RESET_LO2 0x8001 // Vendor-Specific Reset Lo 2
409#define XGXS_ADDRESS_RESET_HI1 0x8002 // Vendor-Specific Reset Hi 1
410#define XGXS_ADDRESS_RESET_HI2 0x8003 // Vendor-Specific Reset Hi 2
411
412// XS Control 1 register bit definitions
413#define XGXS_CONTROL1_RESET 0x8000 // Reset - self clearing
414#define XGXS_CONTROL1_LOOPBACK 0x4000 // Enable loopback
415#define XGXS_CONTROL1_SPEED1 0x2000 // 0 = unspecified, 1 = 10Gb+
416#define XGXS_CONTROL1_LOWPOWER 0x0400 // 1 = Low power mode
417#define XGXS_CONTROL1_SPEED2 0x0040 // Same as SPEED1 (?)
418#define XGXS_CONTROL1_SPEED 0x003C // Everything reserved except zero (?)
419
420// XS Status 1 register bit definitions
421#define XGXS_STATUS1_FAULT 0x0080 // Fault detected
422#define XGXS_STATUS1_LINK 0x0004 // 1 = Link up
423#define XGXS_STATUS1_LOWPOWER 0x0002 // 1 = Low power supported
424
425// XS Speed register bit definitions
426#define XGXS_SPEED_10G 0x0001 // 1 = 10G capable
427
428// XS Devices register bit definitions
429#define XGXS_DEVICES_DTE 0x0020 // DTE XS Present
430#define XGXS_DEVICES_PHY 0x0010 // PHY XS Present
431#define XGXS_DEVICES_PCS 0x0008 // PCS Present
432#define XGXS_DEVICES_WIS 0x0004 // WIS Present
433#define XGXS_DEVICES_PMD 0x0002 // PMD/PMA Present
434#define XGXS_DEVICES_CLAUSE22 0x0001 // Clause 22 registers present
435
436// XS Devices High register bit definitions
437#define XGXS_DEVICES_VENDOR2 0x8000 // Vendor specific device 2
438#define XGXS_DEVICES_VENDOR1 0x4000 // Vendor specific device 1
439
440// XS Status 2 register bit definitions
441#define XGXS_STATUS2_DEV_MASK 0xC000 // Device present mask
442#define XGXS_STATUS2_DEV_RESPOND 0x8000 // Device responding
443#define XGXS_STATUS2_XMT_FAULT 0x0800 // Transmit fault
444#define XGXS_STATUS2_RCV_FAULT 0x0400 // Receive fault
445
446// XS Package ID High register bit definitions
447#define XGXS_PKGID_HIGH_ORG 0xFC00 // Organizationally Unique
448#define XGXS_PKGID_HIGH_MFG 0x03F0 // Manufacturer Model
449#define XGXS_PKGID_HIGH_REV 0x000F // Revision Number
450
451// XS Lane Status register bit definitions
452#define XGXS_LANE_PHY 0x1000 // PHY/DTE lane alignment status
453#define XGXS_LANE_PATTERN 0x0800 // Pattern testing ability
454#define XGXS_LANE_LOOPBACK 0x0400 // PHY loopback ability
455#define XGXS_LANE_SYNC3 0x0008 // Lane 3 sync
456#define XGXS_LANE_SYNC2 0x0004 // Lane 2 sync
457#define XGXS_LANE_SYNC1 0x0002 // Lane 1 sync
458#define XGXS_LANE_SYNC0 0x0001 // Lane 0 sync
459
460// XS Test Control register bit definitions
461#define XGXS_TEST_PATTERN_ENABLE 0x0004 // Test pattern enabled
462#define XGXS_TEST_PATTERN_MASK 0x0003 // Test patterns
463#define XGXS_TEST_PATTERN_RSVD 0x0003 // Test pattern - reserved
464#define XGXS_TEST_PATTERN_MIX 0x0002 // Test pattern - mixed
465#define XGXS_TEST_PATTERN_LOW 0x0001 // Test pattern - low
466#define XGXS_TEST_PATTERN_HIGH 0x0001 // Test pattern - high
467
468/***************************************************************************
469 * External MDIO Bus Registers
470 *
471 * Full register descriptions can be found in PHY/XENPAK/IEEE specs
472 ***************************************************************************/
473// LASI (Link Alarm Status Interrupt) Registers (located in MIIM_DEV_PHY_PMA device)
474#define LASI_RX_ALARM_CONTROL 0x9000 // LASI RX_ALARM Control
475#define LASI_TX_ALARM_CONTROL 0x9001 // LASI TX_ALARM Control
476#define LASI_CONTROL 0x9002 // LASI Control
477#define LASI_RX_ALARM_STATUS 0x9003 // LASI RX_ALARM Status
478#define LASI_TX_ALARM_STATUS 0x9004 // LASI TX_ALARM Status
479#define LASI_STATUS 0x9005 // LASI Status
480
481// LASI_CONTROL bit definitions
482#define LASI_CTL_RX_ALARM_ENABLE 0x0004 // Enable RX_ALARM interrupts
483#define LASI_CTL_TX_ALARM_ENABLE 0x0002 // Enable TX_ALARM interrupts
484#define LASI_CTL_LS_ALARM_ENABLE 0x0001 // Enable Link Status interrupts
485
486// LASI_STATUS bit definitions
487#define LASI_STATUS_RX_ALARM 0x0004 // RX_ALARM status
488#define LASI_STATUS_TX_ALARM 0x0002 // TX_ALARM status
489#define LASI_STATUS_LS_ALARM 0x0001 // Link Status
490
491// PHY registers - PMA/PMD (device 1)
492#define PHY_PMA_CONTROL1 0x0000 // PMA/PMD Control 1
493#define PHY_PMA_STATUS1 0x0001 // PMA/PMD Status 1
494#define PHY_PMA_RCV_DET 0x000A // PMA/PMD Receive Signal Detect
495 // other PMA/PMD registers exist and can be defined as needed
496
497// PHY registers - PCS (device 3)
498#define PHY_PCS_CONTROL1 0x0000 // PCS Control 1
499#define PHY_PCS_STATUS1 0x0001 // PCS Status 1
500#define PHY_PCS_10G_STATUS1 0x0020 // PCS 10GBASE-R Status 1
501 // other PCS registers exist and can be defined as needed
502
503// PHY registers - XS (device 4)
504#define PHY_XS_CONTROL1 0x0000 // XS Control 1
505#define PHY_XS_STATUS1 0x0001 // XS Status 1
506#define PHY_XS_LANE_STATUS 0x0018 // XS Lane Status
507 // other XS registers exist and can be defined as needed
508
509// PHY_PMA_CONTROL1 register bit definitions
510#define PMA_CONTROL1_RESET 0x8000 // PMA/PMD reset
511
512// PHY_PMA_RCV_DET register bit definitions
513#define PMA_RCV_DETECT 0x0001 // PMA/PMD receive signal detect
514
515// PHY_PCS_10G_STATUS1 register bit definitions
516#define PCS_10B_BLOCK_LOCK 0x0001 // PCS 10GBASE-R locked to receive blocks
517
518// PHY_XS_LANE_STATUS register bit definitions
519#define XS_LANE_ALIGN 0x1000 // XS transmit lanes aligned
520
521// PHY Microcode download data structure
522typedef struct _PHY_UCODE {
523 ushort Addr;
524 ushort Data;
525} PHY_UCODE, *PPHY_UCODE;
526
527
528/*****************************************************************************
529 * Transmit Sequencer Command Descriptor definitions
530 *****************************************************************************/
531
532// This descriptor must be placed in GRAM. The address of this descriptor
533// (along with a couple of control bits) is pushed onto the PxhCmdQ or PxlCmdQ
534// (Proxy high or low command queue). This data is read by the Proxy Sequencer,
535// which pushes it onto the XmtCmdQ, which is (eventually) read by the Transmit
536// Sequencer, causing a packet to be transmitted. Not all fields are valid for
537// all commands - see the Sahara spec for details. Note that this structure is
538// only valid when compiled on a little endian machine.
539#pragma pack(push, 1)
540typedef struct _XMT_DESC {
541 ushort XmtLen; // word 0, bits [15:0] - transmit length
542 unsigned char XmtCtl; // word 0, bits [23:16] - transmit control byte
543 unsigned char Cmd; // word 0, bits [31:24] - transmit command plus misc.
544 u32 XmtBufId; // word 1, bits [31:0] - transmit buffer ID
545 unsigned char TcpStrt; // word 2, bits [7:0] - byte address of TCP header
546 unsigned char IpStrt; // word 2, bits [15:8] - byte address of IP header
547 ushort IpCkSum; // word 2, bits [31:16] - partial IP checksum
548 ushort TcpCkSum; // word 3, bits [15:0] - partial TCP checksum
549 ushort Rsvd1; // word 3, bits [31:16] - PAD
550 u32 Rsvd2; // word 4, bits [31:0] - PAD
551 u32 Rsvd3; // word 5, bits [31:0] - PAD
552 u32 Rsvd4; // word 6, bits [31:0] - PAD
553 u32 Rsvd5; // word 7, bits [31:0] - PAD
554} XMT_DESC, *PXMT_DESC;
555#pragma pack(pop)
556
557// XMT_DESC Cmd byte definitions
558 // command codes
559#define XMT_DESC_CMD_RAW_SEND 0 // raw send descriptor
560#define XMT_DESC_CMD_CSUM_INSERT 1 // checksum insert descriptor
561#define XMT_DESC_CMD_FORMAT 2 // format descriptor
562#define XMT_DESC_CMD_PRIME 3 // prime descriptor
563#define XMT_DESC_CMD_CODE_SHFT 6 // comand code shift (shift to bits [31:30] in word 0)
564 // shifted command codes
565#define XMT_RAW_SEND (XMT_DESC_CMD_RAW_SEND << XMT_DESC_CMD_CODE_SHFT)
566#define XMT_CSUM_INSERT (XMT_DESC_CMD_CSUM_INSERT << XMT_DESC_CMD_CODE_SHFT)
567#define XMT_FORMAT (XMT_DESC_CMD_FORMAT << XMT_DESC_CMD_CODE_SHFT)
568#define XMT_PRIME (XMT_DESC_CMD_PRIME << XMT_DESC_CMD_CODE_SHFT)
569
570// XMT_DESC Control Byte (XmtCtl) definitions
571// NOTE: These bits do not work on Sahara (Rev A)!
572#define XMT_CTL_PAUSE_FRAME 0x80 // current frame is a pause control frame (for statistics)
573#define XMT_CTL_CONTROL_FRAME 0x40 // current frame is a control frame (for statistics)
574#define XMT_CTL_PER_PKT_QUAL 0x20 // per packet qualifier
575#define XMT_CTL_PAD_MODE_NONE 0x00 // do not pad frame
576#define XMT_CTL_PAD_MODE_64 0x08 // pad frame to 64 bytes
577#define XMT_CTL_PAD_MODE_VLAN_68 0x10 // pad frame to 64 bytes, and VLAN frames to 68 bytes
578#define XMT_CTL_PAD_MODE_68 0x18 // pad frame to 68 bytes
579#define XMT_CTL_GEN_FCS 0x04 // generate FCS (CRC) for this frame
580#define XMT_CTL_DELAY_FCS_0 0x00 // do not delay FCS calcution
581#define XMT_CTL_DELAY_FCS_1 0x01 // delay FCS calculation by 1 (4-byte) word
582#define XMT_CTL_DELAY_FCS_2 0x02 // delay FCS calculation by 2 (4-byte) words
583#define XMT_CTL_DELAY_FCS_3 0x03 // delay FCS calculation by 3 (4-byte) words
584
585// XMT_DESC XmtBufId definition
586#define XMT_BUF_ID_SHFT 8 // The Xmt buffer ID is formed by dividing
587 // the buffer (DRAM) address by 256 (or << 8)
588
589/*****************************************************************************
590 * Receiver Sequencer Definitions
591 *****************************************************************************/
592
593// Receive Event Queue (queues 3 - 6) bit definitions
594#define RCV_EVTQ_RBFID_MASK 0x0000FFFF // bit mask for the Receive Buffer ID
595
596// Receive Buffer ID definition
597#define RCV_BUF_ID_SHFT 5 // The Rcv buffer ID is formed by dividing
598 // the buffer (DRAM) address by 32 (or << 5)
599
600// Format of the 18 byte Receive Buffer returned by the
601// Receive Sequencer for received packets
602#pragma pack(push, 1)
603typedef struct _RCV_BUF_HDR {
604 u32 Status; // Status word from Rcv Seq Parser
605 ushort Length; // Rcv packet byte count
606 union {
607 ushort TcpCsum; // TCP checksum
608 struct {
609 unsigned char TcpCsumL; // lower 8 bits of the TCP checksum
610 unsigned char LinkHash; // Link hash (multicast frames only)
611 };
612 };
613 ushort SktHash; // Socket hash
614 unsigned char TcpHdrOffset; // TCP header offset into packet
615 unsigned char IpHdrOffset; // IP header offset into packet
616 u32 TpzHash; // Toeplitz hash
617 ushort Reserved; // Reserved
618} RCV_BUF_HDR, *PRCV_BUF_HDR;
619#pragma pack(pop)
620
621
622/*****************************************************************************
623 * Queue definitions
624 *****************************************************************************/
625
626// Ingress (read only) queue numbers
627#define PXY_BUF_Q 0 // Proxy Buffer Queue
628#define HST_EVT_Q 1 // Host Event Queue
629#define XMT_BUF_Q 2 // Transmit Buffer Queue
630#define SKT_EVL_Q 3 // RcvSqr Socket Event Low Priority Queue
631#define RCV_EVL_Q 4 // RcvSqr Rcv Event Low Priority Queue
632#define SKT_EVH_Q 5 // RcvSqr Socket Event High Priority Queue
633#define RCV_EVH_Q 6 // RcvSqr Rcv Event High Priority Queue
634#define DMA_RSP_Q 7 // Dma Response Queue - one per CPU context
635// Local (read/write) queue numbers
636#define LOCAL_A_Q 8 // Spare local Queue
637#define LOCAL_B_Q 9 // Spare local Queue
638#define LOCAL_C_Q 10 // Spare local Queue
639#define FSM_EVT_Q 11 // Finite-State-Machine Event Queue
640#define SBF_PAL_Q 12 // System Buffer Physical Address (low) Queue
641#define SBF_PAH_Q 13 // System Buffer Physical Address (high) Queue
642#define SBF_VAL_Q 14 // System Buffer Virtual Address (low) Queue
643#define SBF_VAH_Q 15 // System Buffer Virtual Address (high) Queue
644// Egress (write only) queue numbers
645#define H2G_CMD_Q 16 // Host to GlbRam DMA Command Queue
646#define H2D_CMD_Q 17 // Host to DRAM DMA Command Queue
647#define G2H_CMD_Q 18 // GlbRam to Host DMA Command Queue
648#define G2D_CMD_Q 19 // GlbRam to DRAM DMA Command Queue
649#define D2H_CMD_Q 20 // DRAM to Host DMA Command Queue
650#define D2G_CMD_Q 21 // DRAM to GlbRam DMA Command Queue
651#define D2D_CMD_Q 22 // DRAM to DRAM DMA Command Queue
652#define PXL_CMD_Q 23 // Low Priority Proxy Command Queue
653#define PXH_CMD_Q 24 // High Priority Proxy Command Queue
654#define RSQ_CMD_Q 25 // Receive Sequencer Command Queue
655#define RCV_BUF_Q 26 // Receive Buffer Queue
656
657// Bit definitions for the Proxy Command queues (PXL_CMD_Q and PXH_CMD_Q)
658#define PXY_COPY_EN 0x00200000 // enable copy of xmt descriptor to xmt command queue
659#define PXY_SIZE_16 0x00000000 // copy 16 bytes
660#define PXY_SIZE_32 0x00100000 // copy 32 bytes
661
662/*****************************************************************************
663 * SXG EEPROM/Flash Configuration Definitions
664 *****************************************************************************/
665#pragma pack(push, 1)
666
667//
668typedef struct _HW_CFG_DATA {
669 ushort Addr;
670 union {
671 ushort Data;
672 ushort Checksum;
673 };
674} HW_CFG_DATA, *PHW_CFG_DATA;
675
676//
677#define NUM_HW_CFG_ENTRIES ((128/sizeof(HW_CFG_DATA)) - 4)
678
679// MAC address
680typedef struct _SXG_CONFIG_MAC {
681 unsigned char MacAddr[6]; // MAC Address
682} SXG_CONFIG_MAC, *PSXG_CONFIG_MAC;
683
684//
685typedef struct _ATK_FRU {
686 unsigned char PartNum[6];
687 unsigned char Revision[2];
688 unsigned char Serial[14];
689} ATK_FRU, *PATK_FRU;
690
691// OEM FRU Format types
692#define ATK_FRU_FORMAT 0x0000
693#define CPQ_FRU_FORMAT 0x0001
694#define DELL_FRU_FORMAT 0x0002
695#define HP_FRU_FORMAT 0x0003
696#define IBM_FRU_FORMAT 0x0004
697#define EMC_FRU_FORMAT 0x0005
698#define NO_FRU_FORMAT 0xFFFF
699
700// EEPROM/Flash Format
701typedef struct _SXG_CONFIG {
702 //
703 // Section 1 (128 bytes)
704 //
705 ushort MagicWord; // EEPROM/FLASH Magic code 'A5A5'
706 ushort SpiClks; // SPI bus clock dividers
707 HW_CFG_DATA HwCfg[NUM_HW_CFG_ENTRIES];
708 //
709 //
710 //
711 ushort Version; // EEPROM format version
712 SXG_CONFIG_MAC MacAddr[4]; // space for 4 MAC addresses
713 ATK_FRU AtkFru; // FRU information
714 ushort OemFruFormat; // OEM FRU format type
715 unsigned char OemFru[76]; // OEM FRU information (optional)
716 ushort Checksum; // Checksum of section 2
717 // CS info XXXTODO
718} SXG_CONFIG, *PSXG_CONFIG;
719#pragma pack(pop)
720
721/*****************************************************************************
722 * Miscellaneous Hardware definitions
723 *****************************************************************************/
724
725// Sahara (ASIC level) defines
726#define SAHARA_GRAM_SIZE 0x020000 // GRAM size - 128 KB
727#define SAHARA_DRAM_SIZE 0x200000 // DRAM size - 2 MB
728#define SAHARA_QRAM_SIZE 0x004000 // QRAM size - 16K entries (64 KB)
729#define SAHARA_WCS_SIZE 0x002000 // WCS - 8K instructions (x 108 bits)
730
731// Arabia (board level) defines
732#define FLASH_SIZE 0x080000 // 512 KB (4 Mb)
733#define EEPROM_SIZE_XFMR 512 // true EEPROM size (bytes), including xfmr area
734#define EEPROM_SIZE_NO_XFMR 256 // EEPROM size excluding xfmr area
diff --git a/drivers/staging/sxg/sxgphycode.h b/drivers/staging/sxg/sxgphycode.h
new file mode 100644
index 00000000000..26b36c81eb1
--- /dev/null
+++ b/drivers/staging/sxg/sxgphycode.h
@@ -0,0 +1,349 @@
1/*
2 * Copyright (C) 1997-2008 Alacritech, Inc. All rights reserved
3 *
4 * sxgphycode.h:
5 *
6 * This file PHY microcode and register initialization data.
7 */
8
9/**********************************************************************
10 * PHY Microcode
11 *
12 * The following contains both PHY microcode and PHY register
13 * initialization data. It is specific to both the PHY and the
14 * type of transceiver.
15 *
16 **********************************************************************/
17
18/*
19 * Download for AEL2005C PHY with SR/LR transceiver (10GBASE-SR or 10GBASE-LR)
20 */
21static PHY_UCODE PhyUcode[] = {
22 /*
23 * NOTE: An address of 0 is a special case. When the download routine
24 * sees an address of 0, it does not write to the PHY. Instead, it
25 * delays the download. The length of the delay (in ms) is given in
26 * the data field.
27 *
28 * Delays are required at certain points.
29 */
30
31 /*
32 * Platform-specific MDIO Patches:
33 * (include patches for 10G RX polarity flip, 50Mhz Synth, etc)
34 */
35 /* Addr, Data */
36 {0xc017, 0xfeb0}, /* flip RX_LOS polarity (mandatory */
37 /* patch for SFP+ applications) */
38 {0xC001, 0x0428}, /* flip RX serial polarity */
39
40 {0xc013, 0xf341}, /* invert lxmit clock (mandatory patch) */
41 {0xc210, 0x8000}, /* reset datapath (mandatory patch) */
42 {0xc210, 0x8100}, /* reset datapath (mandatory patch) */
43 {0xc210, 0x8000}, /* reset datapath (mandatory patch) */
44 {0xc210, 0x0000}, /* reset datapath (mandatory patch) */
45 {0x0000, 0x0032}, /* wait for 50ms for datapath reset to */
46 /* complete. (mandatory patch) */
47
48 /* Configure the LED's */
49 {0xc214, 0x0099}, /* configure the LED drivers */
50 {0xc216, 0x5f5f}, /* configure the Activity LED */
51 {0xc217, 0x33ff}, /* configure the Link LED */
52
53 /* Transceiver-specific MDIO Patches: */
54 {0xc010, 0x448a}, /* (bit 14) mask out high BER input from the */
55 /* LOS signal in 1.000A */
56 /* (mandatory patch for SR code)*/
57 {0xc003, 0x0181}, /* (bit 7) enable the CDR inc setting in */
58 /* 1.C005 (mandatory patch for SR code) */
59
60 /* Transceiver-specific Microcontroller Initialization: */
61 {0xc04a, 0x5200}, /* activate microcontroller and pause */
62 {0x0000, 0x0032}, /* wait 50ms for microcontroller before */
63 /* writing in code. */
64
65 /* code block starts here: */
66 {0xcc00, 0x2009},
67 {0xcc01, 0x3009},
68 {0xcc02, 0x27ff},
69 {0xcc03, 0x300f},
70 {0xcc04, 0x200c},
71 {0xcc05, 0x300c},
72 {0xcc06, 0x20c4},
73 {0xcc07, 0x3c04},
74 {0xcc08, 0x6437},
75 {0xcc09, 0x20c4},
76 {0xcc0a, 0x3c04},
77 {0xcc0b, 0x6437},
78 {0xcc0c, 0x25c4},
79 {0xcc0d, 0x3c54},
80 {0xcc0e, 0x6724},
81 {0xcc0f, 0x25c4},
82 {0xcc10, 0x3c54},
83 {0xcc11, 0x6724},
84 {0xcc12, 0x2042},
85 {0xcc13, 0x3012},
86 {0xcc14, 0x1002},
87 {0xcc15, 0x2482},
88 {0xcc16, 0x3012},
89 {0xcc17, 0x1002},
90 {0xcc18, 0x2a32},
91 {0xcc19, 0x3002},
92 {0xcc1a, 0x1002},
93 {0xcc1b, 0x200d},
94 {0xcc1c, 0x304d},
95 {0xcc1d, 0x2862},
96 {0xcc1e, 0x3012},
97 {0xcc1f, 0x1002},
98 {0xcc20, 0x2982},
99 {0xcc21, 0x3002},
100 {0xcc22, 0x1002},
101 {0xcc23, 0x628f},
102 {0xcc24, 0x20a4},
103 {0xcc25, 0x3004},
104 {0xcc26, 0x6438},
105 {0xcc27, 0x20a4},
106 {0xcc28, 0x3004},
107 {0xcc29, 0x6438},
108 {0xcc2a, 0x2015},
109 {0xcc2b, 0x3005},
110 {0xcc2c, 0x5853},
111 {0xcc2d, 0x2bd2},
112 {0xcc2e, 0x3002},
113 {0xcc2f, 0x1342},
114 {0xcc30, 0x200c},
115 {0xcc31, 0x300c},
116 {0xcc32, 0x2ff7},
117 {0xcc33, 0x30f7},
118 {0xcc34, 0x20c4},
119 {0xcc35, 0x3c04},
120 {0xcc36, 0x6724},
121 {0xcc37, 0x20c4},
122 {0xcc38, 0x3c04},
123 {0xcc39, 0x6724},
124 {0xcc3a, 0x2d32},
125 {0xcc3b, 0x3002},
126 {0xcc3c, 0x1002},
127 {0xcc3d, 0x2008},
128 {0xcc3e, 0x3008},
129 {0xcc3f, 0x5c83},
130 {0xcc40, 0x2d52},
131 {0xcc41, 0x3002},
132 {0xcc42, 0x1352},
133 {0xcc43, 0x2008},
134 {0xcc44, 0x3008},
135 {0xcc45, 0x5c83},
136 {0xcc46, 0x2d32},
137 {0xcc47, 0x3002},
138 {0xcc48, 0x1352},
139 {0xcc49, 0x201c},
140 {0xcc4a, 0x300c},
141 {0xcc4b, 0x200d},
142 {0xcc4c, 0x310d},
143 {0xcc4d, 0x2862},
144 {0xcc4e, 0x3012},
145 {0xcc4f, 0x1002},
146 {0xcc50, 0x2ed2},
147 {0xcc51, 0x3002},
148 {0xcc52, 0x1342},
149 {0xcc53, 0x6f72},
150 {0xcc54, 0x1002},
151 {0xcc55, 0x628f},
152 {0xcc56, 0x2514},
153 {0xcc57, 0x3c64},
154 {0xcc58, 0x6436},
155 {0xcc59, 0x2514},
156 {0xcc5a, 0x3c64},
157 {0xcc5b, 0x6436},
158 {0xcc5c, 0x2fa4},
159 {0xcc5d, 0x3cd4},
160 {0xcc5e, 0x6624},
161 {0xcc5f, 0x2fa4},
162 {0xcc60, 0x3cd4},
163 {0xcc61, 0x6624},
164 {0xcc62, 0x2f45},
165 {0xcc63, 0x3015},
166 {0xcc64, 0x5653},
167 {0xcc65, 0x2eb2},
168 {0xcc66, 0x3002},
169 {0xcc67, 0x13d2},
170 {0xcc68, 0x2ed2},
171 {0xcc69, 0x3002},
172 {0xcc6a, 0x1002},
173 {0xcc6b, 0x6f72},
174 {0xcc6c, 0x1002},
175 {0xcc6d, 0x628f},
176 {0xcc6e, 0x2602},
177 {0xcc6f, 0x3012},
178 {0xcc70, 0x1002},
179 {0xcc71, 0x200d},
180 {0xcc72, 0x320d},
181 {0xcc73, 0x2862},
182 {0xcc74, 0x3012},
183 {0xcc75, 0x1002},
184 {0xcc76, 0x25c4},
185 {0xcc77, 0x3c54},
186 {0xcc78, 0x6437},
187 {0xcc79, 0x25c4},
188 {0xcc7a, 0x3c54},
189 {0xcc7b, 0x6437},
190 {0xcc7c, 0x20c4},
191 {0xcc7d, 0x3c04},
192 {0xcc7e, 0x6724},
193 {0xcc7f, 0x20c4},
194 {0xcc80, 0x3c04},
195 {0xcc81, 0x6724},
196 {0xcc82, 0x6f72},
197 {0xcc83, 0x1002},
198 {0xcc84, 0x628f},
199 {0xcc85, 0x26f2},
200 {0xcc86, 0x3012},
201 {0xcc87, 0x1002},
202 {0xcc88, 0xc503},
203 {0xcc89, 0xd5d5},
204 {0xcc8a, 0xc600},
205 {0xcc8b, 0x2a6d},
206 {0xcc8c, 0xc601},
207 {0xcc8d, 0x2a4c},
208 {0xcc8e, 0xc602},
209 {0xcc8f, 0x0111},
210 {0xcc90, 0xc60c},
211 {0xcc91, 0x5900},
212 {0xcc92, 0xc710},
213 {0xcc93, 0x0700},
214 {0xcc94, 0xc718},
215 {0xcc95, 0x0700},
216 {0xcc96, 0xc720},
217 {0xcc97, 0x4700},
218 {0xcc98, 0xc801},
219 {0xcc99, 0x7f50},
220 {0xcc9a, 0xc802},
221 {0xcc9b, 0x7760},
222 {0xcc9c, 0xc803},
223 {0xcc9d, 0x7fce},
224 {0xcc9e, 0xc804},
225 {0xcc9f, 0x5700},
226 {0xcca0, 0xc805},
227 {0xcca1, 0x5f11},
228 {0xcca2, 0xc806},
229 {0xcca3, 0x4751},
230 {0xcca4, 0xc807},
231 {0xcca5, 0x57e1},
232 {0xcca6, 0xc808},
233 {0xcca7, 0x2700},
234 {0xcca8, 0xc809},
235 {0xcca9, 0x0000},
236 {0xccaa, 0xc821},
237 {0xccab, 0x0002},
238 {0xccac, 0xc822},
239 {0xccad, 0x0014},
240 {0xccae, 0xc832},
241 {0xccaf, 0x1186},
242 {0xccb0, 0xc847},
243 {0xccb1, 0x1e02},
244 {0xccb2, 0xc013},
245 {0xccb3, 0xf341},
246 {0xccb4, 0xc01a},
247 {0xccb5, 0x0446},
248 {0xccb6, 0xc024},
249 {0xccb7, 0x1000},
250 {0xccb8, 0xc025},
251 {0xccb9, 0x0a00},
252 {0xccba, 0xc026},
253 {0xccbb, 0x0c0c},
254 {0xccbc, 0xc027},
255 {0xccbd, 0x0c0c},
256 {0xccbe, 0xc029},
257 {0xccbf, 0x00a0},
258 {0xccc0, 0xc030},
259 {0xccc1, 0x0a00},
260 {0xccc2, 0xc03c},
261 {0xccc3, 0x001c},
262 {0xccc4, 0xc005},
263 {0xccc5, 0x7a06},
264 {0xccc6, 0x0000},
265 {0xccc7, 0x0000},
266 {0xccc8, 0x628f},
267 {0xccc9, 0x26f2},
268 {0xccca, 0x3012},
269 {0xcccb, 0x1002},
270 {0xcccc, 0xc620},
271 {0xcccd, 0x0000},
272 {0xccce, 0xc621},
273 {0xcccf, 0x003f},
274 {0xccd0, 0xc622},
275 {0xccd1, 0x0000},
276 {0xccd2, 0xc623},
277 {0xccd3, 0x0000},
278 {0xccd4, 0xc624},
279 {0xccd5, 0x0000},
280 {0xccd6, 0xc625},
281 {0xccd7, 0x0000},
282 {0xccd8, 0xc627},
283 {0xccd9, 0x0000},
284 {0xccda, 0xc628},
285 {0xccdb, 0x0000},
286 {0xccdc, 0xc62c},
287 {0xccdd, 0x0000},
288 {0xccde, 0x0000},
289 {0xccdf, 0x0000},
290 {0xcce0, 0x628f},
291 {0xcce1, 0xd019},
292 {0xcce2, 0x26f2},
293 {0xcce3, 0x3012},
294 {0xcce4, 0x1002},
295 {0xcce5, 0xc210},
296 {0xcce6, 0x8000},
297 {0xcce7, 0xc210},
298 {0xcce8, 0x8010},
299 {0xcce9, 0xc210},
300 {0xccea, 0x8000},
301 {0xcceb, 0xc210},
302 {0xccec, 0x0000},
303 {0xcced, 0x0000},
304 {0xccee, 0x0000},
305 {0xccef, 0x8221},
306 {0xccf0, 0x2752},
307 {0xccf1, 0x3012},
308 {0xccf2, 0x1002},
309 {0xccf3, 0x6f72},
310 {0xccf4, 0x1002},
311 {0xccf5, 0x2806},
312 {0xccf6, 0x3006},
313 {0xccf7, 0x2007},
314 {0xccf8, 0x3cc7},
315 {0xccf9, 0xe161},
316 {0xccfa, 0xc171},
317 {0xccfb, 0x6134},
318 {0xccfc, 0x6135},
319 {0xccfd, 0x5453},
320 {0xccfe, 0x2858},
321 {0xccff, 0x3018},
322 {0xcd00, 0x1348},
323 {0xcd01, 0x6524},
324 {0xcd02, 0x27b8},
325 {0xcd03, 0x3018},
326 {0xcd04, 0x1008},
327 {0xcd05, 0x1002},
328 {0xcd06, 0x628f},
329 {0xcd07, 0x5dd3},
330 {0xcd08, 0x2906},
331 {0xcd09, 0x3016},
332 {0xcd0a, 0x1306},
333 {0xcd0b, 0x2ff7},
334 {0xcd0c, 0x30f7},
335 {0xcd0d, 0x60b7},
336 {0xcd0e, 0xdffd},
337 {0xcd0f, 0x0008},
338 {0xcd10, 0x6f72},
339 {0xcd11, 0x1002},
340 {0xcd12, 0x0000},
341 {0xcdff, 0x0a01},
342 /* end of code block */
343
344 /* Unpause the microcontroller to start program */
345 {0xca00, 0x0080},
346 {0xca12, 0x0000},
347 {0x0000, 0x000A}, /* wait 10ms just to be safe */
348 {0xffff, 0xffff} /* table terminator */
349};
diff --git a/drivers/staging/usbip/Kconfig b/drivers/staging/usbip/Kconfig
new file mode 100644
index 00000000000..7426235ccc4
--- /dev/null
+++ b/drivers/staging/usbip/Kconfig
@@ -0,0 +1,36 @@
1config USB_IP_COMMON
2 tristate "USB IP support (EXPERIMENTAL)"
3 depends on USB && EXPERIMENTAL
4 default N
5 ---help---
6 This enables pushing USB packets over IP to allow remote
7 machines access to USB devices directly. For more details,
8 and links to the userspace utility programs to let this work
9 properly, see http://usbip.naist.jp/
10
11 To compile this driver as a module, choose M here: the
12 module will be called usbip_common_mod.
13
14 If unsure, say N.
15
16config USB_IP_VHCI_HCD
17 tristate "USB IP client driver"
18 depends on USB_IP_COMMON
19 default N
20 ---help---
21 This enables the USB IP host controller driver which will
22 run on the client machine.
23
24 To compile this driver as a module, choose M here: the
25 module will be called vhci_hcd.
26
27config USB_IP_HOST
28 tristate "USB IP host driver"
29 depends on USB_IP_COMMON
30 default N
31 ---help---
32 This enables the USB IP device driver which will run on the
33 host machine.
34
35 To compile this driver as a module, choose M here: the
36 module will be called usbip.
diff --git a/drivers/staging/usbip/Makefile b/drivers/staging/usbip/Makefile
new file mode 100644
index 00000000000..179f4211f96
--- /dev/null
+++ b/drivers/staging/usbip/Makefile
@@ -0,0 +1,12 @@
1obj-$(CONFIG_USB_IP_COMMON) += usbip_common_mod.o
2usbip_common_mod-objs := usbip_common.o usbip_event.o
3
4obj-$(CONFIG_USB_IP_VHCI_HCD) += vhci-hcd.o
5vhci-hcd-objs := vhci_sysfs.o vhci_tx.o vhci_rx.o vhci_hcd.o
6
7obj-$(CONFIG_USB_IP_HOST) += usbip.o
8usbip-objs := stub_dev.o stub_main.o stub_rx.o stub_tx.o
9
10ifeq ($(CONFIG_USB_DEBUG),y)
11 EXTRA_CFLAGS += -DDEBUG
12endif
diff --git a/drivers/staging/usbip/README b/drivers/staging/usbip/README
new file mode 100644
index 00000000000..c11be573548
--- /dev/null
+++ b/drivers/staging/usbip/README
@@ -0,0 +1,6 @@
1TODO:
2 - more discussion about the protocol
3 - testing
4 - review of the userspace interface
5
6Please send patches for this code to Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/usbip/stub.h b/drivers/staging/usbip/stub.h
new file mode 100644
index 00000000000..f541a3a83bd
--- /dev/null
+++ b/drivers/staging/usbip/stub.h
@@ -0,0 +1,95 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include <linux/kernel.h>
21#include <linux/list.h>
22#include <linux/spinlock.h>
23#include <linux/slab.h>
24#include <linux/string.h>
25#include <linux/module.h>
26#include <linux/net.h>
27
28struct stub_device {
29 struct usb_interface *interface;
30 struct list_head list;
31
32 struct usbip_device ud;
33 __u32 devid;
34
35 /*
36 * stub_priv preserves private data of each urb.
37 * It is allocated as stub_priv_cache and assigned to urb->context.
38 *
39 * stub_priv is always linked to any one of 3 lists;
40 * priv_init: linked to this until the comletion of a urb.
41 * priv_tx : linked to this after the completion of a urb.
42 * priv_free: linked to this after the sending of the result.
43 *
44 * Any of these list operations should be locked by priv_lock.
45 */
46 spinlock_t priv_lock;
47 struct list_head priv_init;
48 struct list_head priv_tx;
49 struct list_head priv_free;
50
51 /* see comments for unlinking in stub_rx.c */
52 struct list_head unlink_tx;
53 struct list_head unlink_free;
54
55
56 wait_queue_head_t tx_waitq;
57};
58
59/* private data into urb->priv */
60struct stub_priv {
61 unsigned long seqnum;
62 struct list_head list;
63 struct stub_device *sdev;
64 struct urb *urb;
65
66 int unlinking;
67};
68
69struct stub_unlink {
70 unsigned long seqnum;
71 struct list_head list;
72 __u32 status;
73};
74
75
76extern struct kmem_cache *stub_priv_cache;
77
78
79/*-------------------------------------------------------------------------*/
80/* prototype declarations */
81
82/* stub_tx.c */
83void stub_complete(struct urb *);
84void stub_tx_loop(struct usbip_task *);
85
86/* stub_dev.c */
87extern struct usb_driver stub_driver;
88
89/* stub_rx.c */
90void stub_rx_loop(struct usbip_task *);
91void stub_enqueue_ret_unlink(struct stub_device *, __u32, __u32);
92
93/* stub_main.c */
94int match_busid(char *busid);
95void stub_device_cleanup_urbs(struct stub_device *sdev);
diff --git a/drivers/staging/usbip/stub_dev.c b/drivers/staging/usbip/stub_dev.c
new file mode 100644
index 00000000000..ee455a087ea
--- /dev/null
+++ b/drivers/staging/usbip/stub_dev.c
@@ -0,0 +1,483 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21#include "stub.h"
22
23
24
25static int stub_probe(struct usb_interface *interface,
26 const struct usb_device_id *id);
27static void stub_disconnect(struct usb_interface *interface);
28
29
30/*
31 * Define device IDs here if you want to explicitly limit exportable devices.
32 * In the most cases, wild card matching will be ok because driver binding can
33 * be changed dynamically by a userland program.
34 */
35static struct usb_device_id stub_table[] = {
36#if 0
37 /* just an example */
38 { USB_DEVICE(0x05ac, 0x0301) }, /* Mac 1 button mouse */
39 { USB_DEVICE(0x0430, 0x0009) }, /* Plat Home Keyboard */
40 { USB_DEVICE(0x059b, 0x0001) }, /* Iomega USB Zip 100 */
41 { USB_DEVICE(0x04b3, 0x4427) }, /* IBM USB CD-ROM */
42 { USB_DEVICE(0x05a9, 0xa511) }, /* LifeView USB cam */
43 { USB_DEVICE(0x55aa, 0x0201) }, /* Imation card reader */
44 { USB_DEVICE(0x046d, 0x0870) }, /* Qcam Express(QV-30) */
45 { USB_DEVICE(0x04bb, 0x0101) }, /* IO-DATA HD 120GB */
46 { USB_DEVICE(0x04bb, 0x0904) }, /* IO-DATA USB-ET/TX */
47 { USB_DEVICE(0x04bb, 0x0201) }, /* IO-DATA USB-ET/TX */
48 { USB_DEVICE(0x08bb, 0x2702) }, /* ONKYO USB Speaker */
49 { USB_DEVICE(0x046d, 0x08b2) }, /* Logicool Qcam 4000 Pro */
50#endif
51 /* magic for wild card */
52 { .driver_info = 1 },
53 { 0, } /* Terminating entry */
54};
55MODULE_DEVICE_TABLE(usb, stub_table);
56
57struct usb_driver stub_driver = {
58 .name = "usbip",
59 .probe = stub_probe,
60 .disconnect = stub_disconnect,
61 .id_table = stub_table,
62};
63
64
65/*-------------------------------------------------------------------------*/
66
67/* Define sysfs entries for a usbip-bound device */
68
69
70/*
71 * usbip_status shows status of usbip as long as this driver is bound to the
72 * target device.
73 */
74static ssize_t show_status(struct device *dev, struct device_attribute *attr,
75 char *buf)
76{
77 struct stub_device *sdev = dev_get_drvdata(dev);
78 int status;
79
80 if (!sdev) {
81 dev_err(dev, "sdev is null\n");
82 return -ENODEV;
83 }
84
85 spin_lock(&sdev->ud.lock);
86 status = sdev->ud.status;
87 spin_unlock(&sdev->ud.lock);
88
89 return snprintf(buf, PAGE_SIZE, "%d\n", status);
90}
91static DEVICE_ATTR(usbip_status, S_IRUGO, show_status, NULL);
92
93/*
94 * usbip_sockfd gets a socket descriptor of an established TCP connection that
95 * is used to transfer usbip requests by kernel threads. -1 is a magic number
96 * by which usbip connection is finished.
97 */
98static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
99 const char *buf, size_t count)
100{
101 struct stub_device *sdev = dev_get_drvdata(dev);
102 int sockfd = 0;
103 struct socket *socket;
104
105 if (!sdev) {
106 dev_err(dev, "sdev is null\n");
107 return -ENODEV;
108 }
109
110 sscanf(buf, "%d", &sockfd);
111
112 if (sockfd != -1) {
113 dev_info(dev, "stub up\n");
114
115 spin_lock(&sdev->ud.lock);
116
117 if (sdev->ud.status != SDEV_ST_AVAILABLE) {
118 dev_err(dev, "not ready\n");
119 spin_unlock(&sdev->ud.lock);
120 return -EINVAL;
121 }
122
123 socket = sockfd_to_socket(sockfd);
124 if (!socket) {
125 spin_unlock(&sdev->ud.lock);
126 return -EINVAL;
127 }
128
129#if 0
130 setnodelay(socket);
131 setkeepalive(socket);
132 setreuse(socket);
133#endif
134
135 sdev->ud.tcp_socket = socket;
136
137 spin_unlock(&sdev->ud.lock);
138
139 usbip_start_threads(&sdev->ud);
140
141 spin_lock(&sdev->ud.lock);
142 sdev->ud.status = SDEV_ST_USED;
143 spin_unlock(&sdev->ud.lock);
144
145 } else {
146 dev_info(dev, "stub down\n");
147
148 spin_lock(&sdev->ud.lock);
149 if (sdev->ud.status != SDEV_ST_USED) {
150 spin_unlock(&sdev->ud.lock);
151 return -EINVAL;
152 }
153 spin_unlock(&sdev->ud.lock);
154
155 usbip_event_add(&sdev->ud, SDEV_EVENT_DOWN);
156 }
157
158 return count;
159}
160static DEVICE_ATTR(usbip_sockfd, S_IWUSR, NULL, store_sockfd);
161
162static int stub_add_files(struct device *dev)
163{
164 int err = 0;
165
166 err = device_create_file(dev, &dev_attr_usbip_status);
167 if (err)
168 goto err_status;
169
170 err = device_create_file(dev, &dev_attr_usbip_sockfd);
171 if (err)
172 goto err_sockfd;
173
174 err = device_create_file(dev, &dev_attr_usbip_debug);
175 if (err)
176 goto err_debug;
177
178 return 0;
179
180err_debug:
181 device_remove_file(dev, &dev_attr_usbip_sockfd);
182
183err_sockfd:
184 device_remove_file(dev, &dev_attr_usbip_status);
185
186err_status:
187 return err;
188}
189
190static void stub_remove_files(struct device *dev)
191{
192 device_remove_file(dev, &dev_attr_usbip_status);
193 device_remove_file(dev, &dev_attr_usbip_sockfd);
194 device_remove_file(dev, &dev_attr_usbip_debug);
195}
196
197
198
199/*-------------------------------------------------------------------------*/
200
201/* Event handler functions called by an event handler thread */
202
203static void stub_shutdown_connection(struct usbip_device *ud)
204{
205 struct stub_device *sdev = container_of(ud, struct stub_device, ud);
206
207 /*
208 * When removing an exported device, kernel panic sometimes occurred
209 * and then EIP was sk_wait_data of stub_rx thread. Is this because
210 * sk_wait_data returned though stub_rx thread was already finished by
211 * step 1?
212 */
213 if (ud->tcp_socket) {
214 udbg("shutdown tcp_socket %p\n", ud->tcp_socket);
215 kernel_sock_shutdown(ud->tcp_socket, SHUT_RDWR);
216 }
217
218 /* 1. stop threads */
219 usbip_stop_threads(ud);
220
221 /* 2. close the socket */
222 /*
223 * tcp_socket is freed after threads are killed.
224 * So usbip_xmit do not touch NULL socket.
225 */
226 if (ud->tcp_socket) {
227 sock_release(ud->tcp_socket);
228 ud->tcp_socket = NULL;
229 }
230
231 /* 3. free used data */
232 stub_device_cleanup_urbs(sdev);
233
234 /* 4. free stub_unlink */
235 {
236 unsigned long flags;
237 struct stub_unlink *unlink, *tmp;
238
239 spin_lock_irqsave(&sdev->priv_lock, flags);
240
241 list_for_each_entry_safe(unlink, tmp, &sdev->unlink_tx, list) {
242 list_del(&unlink->list);
243 kfree(unlink);
244 }
245
246 list_for_each_entry_safe(unlink, tmp,
247 &sdev->unlink_free, list) {
248 list_del(&unlink->list);
249 kfree(unlink);
250 }
251
252 spin_unlock_irqrestore(&sdev->priv_lock, flags);
253 }
254}
255
256static void stub_device_reset(struct usbip_device *ud)
257{
258 struct stub_device *sdev = container_of(ud, struct stub_device, ud);
259 struct usb_device *udev = interface_to_usbdev(sdev->interface);
260 int ret;
261
262 udbg("device reset");
263 ret = usb_lock_device_for_reset(udev, sdev->interface);
264 if (ret < 0) {
265 dev_err(&udev->dev, "lock for reset\n");
266
267 spin_lock(&ud->lock);
268 ud->status = SDEV_ST_ERROR;
269 spin_unlock(&ud->lock);
270
271 return;
272 }
273
274 /* try to reset the device */
275 ret = usb_reset_device(udev);
276
277 usb_unlock_device(udev);
278
279 spin_lock(&ud->lock);
280 if (ret) {
281 dev_err(&udev->dev, "device reset\n");
282 ud->status = SDEV_ST_ERROR;
283
284 } else {
285 dev_info(&udev->dev, "device reset\n");
286 ud->status = SDEV_ST_AVAILABLE;
287
288 }
289 spin_unlock(&ud->lock);
290
291 return;
292}
293
294static void stub_device_unusable(struct usbip_device *ud)
295{
296 spin_lock(&ud->lock);
297 ud->status = SDEV_ST_ERROR;
298 spin_unlock(&ud->lock);
299}
300
301
302/*-------------------------------------------------------------------------*/
303
304/**
305 * stub_device_alloc - allocate a new stub_device struct
306 * @interface: usb_interface of a new device
307 *
308 * Allocates and initializes a new stub_device struct.
309 */
310static struct stub_device *stub_device_alloc(struct usb_interface *interface)
311{
312 struct stub_device *sdev;
313 int busnum = interface_to_busnum(interface);
314 int devnum = interface_to_devnum(interface);
315
316 dev_dbg(&interface->dev, "allocating stub device");
317
318 /* yes, it's a new device */
319 sdev = kzalloc(sizeof(struct stub_device), GFP_KERNEL);
320 if (!sdev) {
321 dev_err(&interface->dev, "no memory for stub_device\n");
322 return NULL;
323 }
324
325 sdev->interface = interface;
326
327 /*
328 * devid is defined with devnum when this driver is first allocated.
329 * devnum may change later if a device is reset. However, devid never
330 * changes during a usbip connection.
331 */
332 sdev->devid = (busnum << 16) | devnum;
333
334 usbip_task_init(&sdev->ud.tcp_rx, "stub_rx", stub_rx_loop);
335 usbip_task_init(&sdev->ud.tcp_tx, "stub_tx", stub_tx_loop);
336
337 sdev->ud.side = USBIP_STUB;
338 sdev->ud.status = SDEV_ST_AVAILABLE;
339 /* sdev->ud.lock = SPIN_LOCK_UNLOCKED; */
340 spin_lock_init(&sdev->ud.lock);
341 sdev->ud.tcp_socket = NULL;
342
343 INIT_LIST_HEAD(&sdev->priv_init);
344 INIT_LIST_HEAD(&sdev->priv_tx);
345 INIT_LIST_HEAD(&sdev->priv_free);
346 INIT_LIST_HEAD(&sdev->unlink_free);
347 INIT_LIST_HEAD(&sdev->unlink_tx);
348 /* sdev->priv_lock = SPIN_LOCK_UNLOCKED; */
349 spin_lock_init(&sdev->priv_lock);
350
351 init_waitqueue_head(&sdev->tx_waitq);
352
353 sdev->ud.eh_ops.shutdown = stub_shutdown_connection;
354 sdev->ud.eh_ops.reset = stub_device_reset;
355 sdev->ud.eh_ops.unusable = stub_device_unusable;
356
357 usbip_start_eh(&sdev->ud);
358
359 udbg("register new interface\n");
360 return sdev;
361}
362
363static int stub_device_free(struct stub_device *sdev)
364{
365 if (!sdev)
366 return -EINVAL;
367
368 kfree(sdev);
369 udbg("kfree udev ok\n");
370
371 return 0;
372}
373
374
375/*-------------------------------------------------------------------------*/
376
377/*
378 * If a usb device has multiple active interfaces, this driver is bound to all
379 * the active interfaces. However, usbip exports *a* usb device (i.e., not *an*
380 * active interface). Currently, a userland program must ensure that it
381 * looks at the usbip's sysfs entries of only the first active interface.
382 *
383 * TODO: use "struct usb_device_driver" to bind a usb device.
384 * However, it seems it is not fully supported in mainline kernel yet
385 * (2.6.19.2).
386 */
387static int stub_probe(struct usb_interface *interface,
388 const struct usb_device_id *id)
389{
390 struct usb_device *udev = interface_to_usbdev(interface);
391 struct stub_device *sdev = NULL;
392 char *udev_busid = interface->dev.parent->bus_id;
393 int err = 0;
394
395 dev_dbg(&interface->dev, "Enter\n");
396
397 /* check we should claim or not by busid_table */
398 if (match_busid(udev_busid)) {
399 dev_info(&interface->dev,
400 "this device %s is not in match_busid table. skip!\n",
401 udev_busid);
402
403 /*
404 * Return value should be ENODEV or ENOXIO to continue trying
405 * other matched drivers by the driver core.
406 * See driver_probe_device() in driver/base/dd.c
407 */
408 return -ENODEV;
409 }
410
411 if (udev->descriptor.bDeviceClass == USB_CLASS_HUB) {
412 udbg("this device %s is a usb hub device. skip!\n",
413 udev_busid);
414 return -ENODEV;
415 }
416
417 if (!strcmp(udev->bus->bus_name, "vhci_hcd")) {
418 udbg("this device %s is attached on vhci_hcd. skip!\n",
419 udev_busid);
420 return -ENODEV;
421 }
422
423 /* ok. this is my device. */
424 sdev = stub_device_alloc(interface);
425 if (!sdev)
426 return -ENOMEM;
427
428 dev_info(&interface->dev, "USB/IP Stub: register a new interface "
429 "(bus %u dev %u ifn %u)\n", udev->bus->busnum, udev->devnum,
430 interface->cur_altsetting->desc.bInterfaceNumber);
431
432 /* set private data to usb_interface */
433 usb_set_intfdata(interface, sdev);
434
435 err = stub_add_files(&interface->dev);
436 if (err) {
437 dev_err(&interface->dev, "create sysfs files for %s\n",
438 udev_busid);
439 return err;
440 }
441
442 return 0;
443}
444
445
446/*
447 * called in usb_disconnect() or usb_deregister()
448 * but only if actconfig(active configuration) exists
449 */
450static void stub_disconnect(struct usb_interface *interface)
451{
452 struct stub_device *sdev = usb_get_intfdata(interface);
453
454 udbg("Enter\n");
455
456 /* get stub_device */
457 if (!sdev) {
458 err(" could not get device from inteface data");
459 /* BUG(); */
460 return;
461 }
462
463 usb_set_intfdata(interface, NULL);
464
465
466 /*
467 * NOTE:
468 * rx/tx threads are invoked for each usb_device.
469 */
470 stub_remove_files(&interface->dev);
471
472 /* 1. shutdown the current connection */
473 usbip_event_add(&sdev->ud, SDEV_EVENT_REMOVED);
474
475 /* 2. wait for the stop of the event handler */
476 usbip_stop_eh(&sdev->ud);
477
478 /* 3. free sdev */
479 stub_device_free(sdev);
480
481
482 udbg("bye\n");
483}
diff --git a/drivers/staging/usbip/stub_main.c b/drivers/staging/usbip/stub_main.c
new file mode 100644
index 00000000000..c665d7f1ca9
--- /dev/null
+++ b/drivers/staging/usbip/stub_main.c
@@ -0,0 +1,300 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20
21#include "usbip_common.h"
22#include "stub.h"
23
24/* Version Information */
25#define DRIVER_VERSION "1.0"
26#define DRIVER_AUTHOR "Takahiro Hirofuchi"
27#define DRIVER_DESC "Stub Driver for USB/IP"
28
29/* stub_priv is allocated from stub_priv_cache */
30struct kmem_cache *stub_priv_cache;
31
32/*-------------------------------------------------------------------------*/
33
34/* Define sysfs entries for the usbip driver */
35
36
37/*
38 * busid_tables defines matching busids that usbip can grab. A user can change
39 * dynamically what device is locally used and what device is exported to a
40 * remote host.
41 */
42#define MAX_BUSID 16
43static char busid_table[MAX_BUSID][BUS_ID_SIZE];
44static spinlock_t busid_table_lock;
45
46
47int match_busid(char *busid)
48{
49 int i;
50
51 spin_lock(&busid_table_lock);
52
53 for (i = 0; i < MAX_BUSID; i++)
54 if (busid_table[i][0])
55 if (!strncmp(busid_table[i], busid, BUS_ID_SIZE)) {
56 /* already registerd */
57 spin_unlock(&busid_table_lock);
58 return 0;
59 }
60
61 spin_unlock(&busid_table_lock);
62
63 return 1;
64}
65
66static ssize_t show_match_busid(struct device_driver *drv, char *buf)
67{
68 int i;
69 char *out = buf;
70
71 spin_lock(&busid_table_lock);
72
73 for (i = 0; i < MAX_BUSID; i++)
74 if (busid_table[i][0])
75 out += sprintf(out, "%s ", busid_table[i]);
76
77 spin_unlock(&busid_table_lock);
78
79 out += sprintf(out, "\n");
80
81 return out - buf;
82}
83
84static int add_match_busid(char *busid)
85{
86 int i;
87
88 if (!match_busid(busid))
89 return 0;
90
91 spin_lock(&busid_table_lock);
92
93 for (i = 0; i < MAX_BUSID; i++)
94 if (!busid_table[i][0]) {
95 strncpy(busid_table[i], busid, BUS_ID_SIZE);
96 spin_unlock(&busid_table_lock);
97 return 0;
98 }
99
100 spin_unlock(&busid_table_lock);
101
102 return -1;
103}
104
105static int del_match_busid(char *busid)
106{
107 int i;
108
109 spin_lock(&busid_table_lock);
110
111 for (i = 0; i < MAX_BUSID; i++)
112 if (!strncmp(busid_table[i], busid, BUS_ID_SIZE)) {
113 /* found */
114 memset(busid_table[i], 0, BUS_ID_SIZE);
115 spin_unlock(&busid_table_lock);
116 return 0;
117 }
118
119 spin_unlock(&busid_table_lock);
120
121 return -1;
122}
123
124static ssize_t store_match_busid(struct device_driver *dev, const char *buf,
125 size_t count)
126{
127 int len;
128 char busid[BUS_ID_SIZE];
129
130 if (count < 5)
131 return -EINVAL;
132
133 /* strnlen() does not include \0 */
134 len = strnlen(buf + 4, BUS_ID_SIZE);
135
136 /* busid needs to include \0 termination */
137 if (!(len < BUS_ID_SIZE))
138 return -EINVAL;
139
140 strncpy(busid, buf + 4, BUS_ID_SIZE);
141
142
143 if (!strncmp(buf, "add ", 4)) {
144 if (add_match_busid(busid) < 0)
145 return -ENOMEM;
146 else {
147 udbg("add busid %s\n", busid);
148 return count;
149 }
150 } else if (!strncmp(buf, "del ", 4)) {
151 if (del_match_busid(busid) < 0)
152 return -ENODEV;
153 else {
154 udbg("del busid %s\n", busid);
155 return count;
156 }
157 } else
158 return -EINVAL;
159}
160
161static DRIVER_ATTR(match_busid, S_IRUSR|S_IWUSR, show_match_busid,
162 store_match_busid);
163
164
165
166/*-------------------------------------------------------------------------*/
167
168/* Cleanup functions used to free private data */
169
170static struct stub_priv *stub_priv_pop_from_listhead(struct list_head *listhead)
171{
172 struct stub_priv *priv, *tmp;
173
174 list_for_each_entry_safe(priv, tmp, listhead, list) {
175 list_del(&priv->list);
176 return priv;
177 }
178
179 return NULL;
180}
181
182static struct stub_priv *stub_priv_pop(struct stub_device *sdev)
183{
184 unsigned long flags;
185 struct stub_priv *priv;
186
187 spin_lock_irqsave(&sdev->priv_lock, flags);
188
189 priv = stub_priv_pop_from_listhead(&sdev->priv_init);
190 if (priv) {
191 spin_unlock_irqrestore(&sdev->priv_lock, flags);
192 return priv;
193 }
194
195 priv = stub_priv_pop_from_listhead(&sdev->priv_tx);
196 if (priv) {
197 spin_unlock_irqrestore(&sdev->priv_lock, flags);
198 return priv;
199 }
200
201 priv = stub_priv_pop_from_listhead(&sdev->priv_free);
202 if (priv) {
203 spin_unlock_irqrestore(&sdev->priv_lock, flags);
204 return priv;
205 }
206
207 spin_unlock_irqrestore(&sdev->priv_lock, flags);
208 return NULL;
209}
210
211void stub_device_cleanup_urbs(struct stub_device *sdev)
212{
213 struct stub_priv *priv;
214
215 udbg("free sdev %p\n", sdev);
216
217 while ((priv = stub_priv_pop(sdev))) {
218 struct urb *urb = priv->urb;
219
220 udbg(" free urb %p\n", urb);
221 usb_kill_urb(urb);
222
223 kmem_cache_free(stub_priv_cache, priv);
224
225 if (urb->transfer_buffer != NULL)
226 kfree(urb->transfer_buffer);
227
228 if (urb->setup_packet != NULL)
229 kfree(urb->setup_packet);
230
231 usb_free_urb(urb);
232 }
233}
234
235
236/*-------------------------------------------------------------------------*/
237
238static int __init usb_stub_init(void)
239{
240 int ret;
241
242 stub_priv_cache = kmem_cache_create("stub_priv",
243 sizeof(struct stub_priv), 0,
244 SLAB_HWCACHE_ALIGN, NULL);
245
246 if (!stub_priv_cache) {
247 printk(KERN_ERR KBUILD_MODNAME
248 ": create stub_priv_cache error\n");
249 return -ENOMEM;
250 }
251
252 ret = usb_register(&stub_driver);
253 if (ret) {
254 printk(KERN_ERR KBUILD_MODNAME ": usb_register failed %d\n",
255 ret);
256 goto error_usb_register;
257 }
258
259 printk(KERN_INFO KBUILD_MODNAME ":"
260 DRIVER_DESC ":" DRIVER_VERSION "\n");
261
262 memset(busid_table, 0, sizeof(busid_table));
263 spin_lock_init(&busid_table_lock);
264
265 ret = driver_create_file(&stub_driver.drvwrap.driver,
266 &driver_attr_match_busid);
267
268 if (ret) {
269 printk(KERN_ERR KBUILD_MODNAME ": create driver sysfs\n");
270 goto error_create_file;
271 }
272
273 return ret;
274error_create_file:
275 usb_deregister(&stub_driver);
276error_usb_register:
277 kmem_cache_destroy(stub_priv_cache);
278 return ret;
279}
280
281static void __exit usb_stub_exit(void)
282{
283 driver_remove_file(&stub_driver.drvwrap.driver,
284 &driver_attr_match_busid);
285
286 /*
287 * deregister() calls stub_disconnect() for all devices. Device
288 * specific data is cleared in stub_disconnect().
289 */
290 usb_deregister(&stub_driver);
291
292 kmem_cache_destroy(stub_priv_cache);
293}
294
295module_init(usb_stub_init);
296module_exit(usb_stub_exit);
297
298MODULE_AUTHOR(DRIVER_AUTHOR);
299MODULE_DESCRIPTION(DRIVER_DESC);
300MODULE_LICENSE("GPL");
diff --git a/drivers/staging/usbip/stub_rx.c b/drivers/staging/usbip/stub_rx.c
new file mode 100644
index 00000000000..36ce898fced
--- /dev/null
+++ b/drivers/staging/usbip/stub_rx.c
@@ -0,0 +1,615 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21#include "stub.h"
22#include "../../usb/core/hcd.h"
23
24
25static int is_clear_halt_cmd(struct urb *urb)
26{
27 struct usb_ctrlrequest *req;
28
29 req = (struct usb_ctrlrequest *) urb->setup_packet;
30
31 return (req->bRequest == USB_REQ_CLEAR_FEATURE) &&
32 (req->bRequestType == USB_RECIP_ENDPOINT) &&
33 (req->wValue == USB_ENDPOINT_HALT);
34}
35
36static int is_set_interface_cmd(struct urb *urb)
37{
38 struct usb_ctrlrequest *req;
39
40 req = (struct usb_ctrlrequest *) urb->setup_packet;
41
42 return (req->bRequest == USB_REQ_SET_INTERFACE) &&
43 (req->bRequestType == USB_RECIP_INTERFACE);
44}
45
46static int is_set_configuration_cmd(struct urb *urb)
47{
48 struct usb_ctrlrequest *req;
49
50 req = (struct usb_ctrlrequest *) urb->setup_packet;
51
52 return (req->bRequest == USB_REQ_SET_CONFIGURATION) &&
53 (req->bRequestType == USB_RECIP_DEVICE);
54}
55
56static int is_reset_device_cmd(struct urb *urb)
57{
58 struct usb_ctrlrequest *req;
59 __u16 value;
60 __u16 index;
61
62 req = (struct usb_ctrlrequest *) urb->setup_packet;
63 value = le16_to_cpu(req->wValue);
64 index = le16_to_cpu(req->wIndex);
65
66 if ((req->bRequest == USB_REQ_SET_FEATURE) &&
67 (req->bRequestType == USB_RT_PORT) &&
68 (value = USB_PORT_FEAT_RESET)) {
69 dbg_stub_rx("reset_device_cmd, port %u\n", index);
70 return 1;
71 } else
72 return 0;
73}
74
75static int tweak_clear_halt_cmd(struct urb *urb)
76{
77 struct usb_ctrlrequest *req;
78 int target_endp;
79 int target_dir;
80 int target_pipe;
81 int ret;
82
83 req = (struct usb_ctrlrequest *) urb->setup_packet;
84
85 /*
86 * The stalled endpoint is specified in the wIndex value. The endpoint
87 * of the urb is the target of this clear_halt request (i.e., control
88 * endpoint).
89 */
90 target_endp = le16_to_cpu(req->wIndex) & 0x000f;
91
92 /* the stalled endpoint direction is IN or OUT?. USB_DIR_IN is 0x80. */
93 target_dir = le16_to_cpu(req->wIndex) & 0x0080;
94
95 if (target_dir)
96 target_pipe = usb_rcvctrlpipe(urb->dev, target_endp);
97 else
98 target_pipe = usb_sndctrlpipe(urb->dev, target_endp);
99
100 ret = usb_clear_halt(urb->dev, target_pipe);
101 if (ret < 0)
102 uinfo("clear_halt error: devnum %d endp %d, %d\n",
103 urb->dev->devnum, target_endp, ret);
104 else
105 uinfo("clear_halt done: devnum %d endp %d\n",
106 urb->dev->devnum, target_endp);
107
108 return ret;
109}
110
111static int tweak_set_interface_cmd(struct urb *urb)
112{
113 struct usb_ctrlrequest *req;
114 __u16 alternate;
115 __u16 interface;
116 int ret;
117
118 req = (struct usb_ctrlrequest *) urb->setup_packet;
119 alternate = le16_to_cpu(req->wValue);
120 interface = le16_to_cpu(req->wIndex);
121
122 dbg_stub_rx("set_interface: inf %u alt %u\n", interface, alternate);
123
124 ret = usb_set_interface(urb->dev, interface, alternate);
125 if (ret < 0)
126 uinfo("set_interface error: inf %u alt %u, %d\n",
127 interface, alternate, ret);
128 else
129 uinfo("set_interface done: inf %u alt %u\n",
130 interface,
131 alternate);
132
133 return ret;
134}
135
136static int tweak_set_configuration_cmd(struct urb *urb)
137{
138 struct usb_ctrlrequest *req;
139 __u16 config;
140
141 req = (struct usb_ctrlrequest *) urb->setup_packet;
142 config = le16_to_cpu(req->wValue);
143
144 /*
145 * I have never seen a multi-config device. Very rare.
146 * For most devices, this will be called to choose a default
147 * configuration only once in an initialization phase.
148 *
149 * set_configuration may change a device configuration and its device
150 * drivers will be unbound and assigned for a new device configuration.
151 * This means this usbip driver will be also unbound when called, then
152 * eventually reassigned to the device as far as driver matching
153 * condition is kept.
154 *
155 * Unfortunatelly, an existing usbip connection will be dropped
156 * due to this driver unbinding. So, skip here.
157 * A user may need to set a special configuration value before
158 * exporting the device.
159 */
160 uinfo("set_configuration (%d) to %s\n", config, urb->dev->dev.bus_id);
161 uinfo("but, skip!\n");
162
163 return 0;
164 /* return usb_driver_set_configuration(urb->dev, config); */
165}
166
167static int tweak_reset_device_cmd(struct urb *urb)
168{
169 struct usb_ctrlrequest *req;
170 __u16 value;
171 __u16 index;
172 int ret;
173
174 req = (struct usb_ctrlrequest *) urb->setup_packet;
175 value = le16_to_cpu(req->wValue);
176 index = le16_to_cpu(req->wIndex);
177
178 uinfo("reset_device (port %d) to %s\n", index, urb->dev->dev.bus_id);
179
180 /* all interfaces should be owned by usbip driver, so just reset it. */
181 ret = usb_lock_device_for_reset(urb->dev, NULL);
182 if (ret < 0) {
183 dev_err(&urb->dev->dev, "lock for reset\n");
184 return ret;
185 }
186
187 /* try to reset the device */
188 ret = usb_reset_device(urb->dev);
189 if (ret < 0)
190 dev_err(&urb->dev->dev, "device reset\n");
191
192 usb_unlock_device(urb->dev);
193
194 return ret;
195}
196
197/*
198 * clear_halt, set_interface, and set_configuration require special tricks.
199 */
200static void tweak_special_requests(struct urb *urb)
201{
202 if (!urb || !urb->setup_packet)
203 return;
204
205 if (usb_pipetype(urb->pipe) != PIPE_CONTROL)
206 return;
207
208 if (is_clear_halt_cmd(urb))
209 /* tweak clear_halt */
210 tweak_clear_halt_cmd(urb);
211
212 else if (is_set_interface_cmd(urb))
213 /* tweak set_interface */
214 tweak_set_interface_cmd(urb);
215
216 else if (is_set_configuration_cmd(urb))
217 /* tweak set_configuration */
218 tweak_set_configuration_cmd(urb);
219
220 else if (is_reset_device_cmd(urb))
221 tweak_reset_device_cmd(urb);
222 else
223 dbg_stub_rx("no need to tweak\n");
224}
225
226/*
227 * stub_recv_unlink() unlinks the URB by a call to usb_unlink_urb().
228 * By unlinking the urb asynchronously, stub_rx can continuously
229 * process coming urbs. Even if the urb is unlinked, its completion
230 * handler will be called and stub_tx will send a return pdu.
231 *
232 * See also comments about unlinking strategy in vhci_hcd.c.
233 */
234static int stub_recv_cmd_unlink(struct stub_device *sdev,
235 struct usbip_header *pdu)
236{
237 struct list_head *listhead = &sdev->priv_init;
238 struct list_head *ptr;
239 unsigned long flags;
240
241 struct stub_priv *priv;
242
243
244 spin_lock_irqsave(&sdev->priv_lock, flags);
245
246 for (ptr = listhead->next; ptr != listhead; ptr = ptr->next) {
247 priv = list_entry(ptr, struct stub_priv, list);
248 if (priv->seqnum == pdu->u.cmd_unlink.seqnum) {
249 int ret;
250
251 dev_info(&priv->urb->dev->dev, "unlink urb %p\n",
252 priv->urb);
253
254 /*
255 * This matched urb is not completed yet (i.e., be in
256 * flight in usb hcd hardware/driver). Now we are
257 * cancelling it. The unlinking flag means that we are
258 * now not going to return the normal result pdu of a
259 * submission request, but going to return a result pdu
260 * of the unlink request.
261 */
262 priv->unlinking = 1;
263
264 /*
265 * In the case that unlinking flag is on, prev->seqnum
266 * is changed from the seqnum of the cancelling urb to
267 * the seqnum of the unlink request. This will be used
268 * to make the result pdu of the unlink request.
269 */
270 priv->seqnum = pdu->base.seqnum;
271
272 spin_unlock_irqrestore(&sdev->priv_lock, flags);
273
274 /*
275 * usb_unlink_urb() is now out of spinlocking to avoid
276 * spinlock recursion since stub_complete() is
277 * sometimes called in this context but not in the
278 * interrupt context. If stub_complete() is executed
279 * before we call usb_unlink_urb(), usb_unlink_urb()
280 * will return an error value. In this case, stub_tx
281 * will return the result pdu of this unlink request
282 * though submission is completed and actual unlinking
283 * is not executed. OK?
284 */
285 /* In the above case, urb->status is not -ECONNRESET,
286 * so a driver in a client host will know the failure
287 * of the unlink request ?
288 */
289 ret = usb_unlink_urb(priv->urb);
290 if (ret != -EINPROGRESS)
291 dev_err(&priv->urb->dev->dev,
292 "failed to unlink a urb %p, ret %d\n",
293 priv->urb, ret);
294 return 0;
295 }
296 }
297
298 dbg_stub_rx("seqnum %d is not pending\n", pdu->u.cmd_unlink.seqnum);
299
300 /*
301 * The urb of the unlink target is not found in priv_init queue. It was
302 * already completed and its results is/was going to be sent by a
303 * CMD_RET pdu. In this case, usb_unlink_urb() is not needed. We only
304 * return the completeness of this unlink request to vhci_hcd.
305 */
306 stub_enqueue_ret_unlink(sdev, pdu->base.seqnum, 0);
307
308 spin_unlock_irqrestore(&sdev->priv_lock, flags);
309
310
311 return 0;
312}
313
314static int valid_request(struct stub_device *sdev, struct usbip_header *pdu)
315{
316 struct usbip_device *ud = &sdev->ud;
317
318 if (pdu->base.devid == sdev->devid) {
319 spin_lock(&ud->lock);
320 if (ud->status == SDEV_ST_USED) {
321 /* A request is valid. */
322 spin_unlock(&ud->lock);
323 return 1;
324 }
325 spin_unlock(&ud->lock);
326 }
327
328 return 0;
329}
330
331static struct stub_priv *stub_priv_alloc(struct stub_device *sdev,
332 struct usbip_header *pdu)
333{
334 struct stub_priv *priv;
335 struct usbip_device *ud = &sdev->ud;
336 unsigned long flags;
337
338 spin_lock_irqsave(&sdev->priv_lock, flags);
339
340 priv = kmem_cache_alloc(stub_priv_cache, GFP_ATOMIC);
341 if (!priv) {
342 dev_err(&sdev->interface->dev, "alloc stub_priv\n");
343 spin_unlock_irqrestore(&sdev->priv_lock, flags);
344 usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC);
345 return NULL;
346 }
347
348 memset(priv, 0, sizeof(struct stub_priv));
349
350 priv->seqnum = pdu->base.seqnum;
351 priv->sdev = sdev;
352
353 /*
354 * After a stub_priv is linked to a list_head,
355 * our error handler can free allocated data.
356 */
357 list_add_tail(&priv->list, &sdev->priv_init);
358
359 spin_unlock_irqrestore(&sdev->priv_lock, flags);
360
361 return priv;
362}
363
364
365static struct usb_host_endpoint *get_ep_from_epnum(struct usb_device *udev,
366 int epnum0)
367{
368 struct usb_host_config *config;
369 int i = 0, j = 0;
370 struct usb_host_endpoint *ep = NULL;
371 int epnum;
372 int found = 0;
373
374 if (epnum0 == 0)
375 return &udev->ep0;
376
377 config = udev->actconfig;
378 if (!config)
379 return NULL;
380
381 for (i = 0; i < config->desc.bNumInterfaces; i++) {
382 struct usb_host_interface *setting;
383
384 setting = config->interface[i]->cur_altsetting;
385
386 for (j = 0; j < setting->desc.bNumEndpoints; j++) {
387 ep = &setting->endpoint[j];
388 epnum = (ep->desc.bEndpointAddress & 0x7f);
389
390 if (epnum == epnum0) {
391 /* uinfo("found epnum %d\n", epnum0); */
392 found = 1;
393 break;
394 }
395 }
396 }
397
398 if (found)
399 return ep;
400 else
401 return NULL;
402}
403
404
405static int get_pipe(struct stub_device *sdev, int epnum, int dir)
406{
407 struct usb_device *udev = interface_to_usbdev(sdev->interface);
408 struct usb_host_endpoint *ep;
409 struct usb_endpoint_descriptor *epd = NULL;
410
411 ep = get_ep_from_epnum(udev, epnum);
412 if (!ep) {
413 dev_err(&sdev->interface->dev, "no such endpoint?, %d\n",
414 epnum);
415 BUG();
416 }
417
418 epd = &ep->desc;
419
420
421#if 0
422 /* epnum 0 is always control */
423 if (epnum == 0) {
424 if (dir == USBIP_DIR_OUT)
425 return usb_sndctrlpipe(udev, 0);
426 else
427 return usb_rcvctrlpipe(udev, 0);
428 }
429#endif
430
431 if (usb_endpoint_xfer_control(epd)) {
432 if (dir == USBIP_DIR_OUT)
433 return usb_sndctrlpipe(udev, epnum);
434 else
435 return usb_rcvctrlpipe(udev, epnum);
436 }
437
438 if (usb_endpoint_xfer_bulk(epd)) {
439 if (dir == USBIP_DIR_OUT)
440 return usb_sndbulkpipe(udev, epnum);
441 else
442 return usb_rcvbulkpipe(udev, epnum);
443 }
444
445 if (usb_endpoint_xfer_int(epd)) {
446 if (dir == USBIP_DIR_OUT)
447 return usb_sndintpipe(udev, epnum);
448 else
449 return usb_rcvintpipe(udev, epnum);
450 }
451
452 if (usb_endpoint_xfer_isoc(epd)) {
453 if (dir == USBIP_DIR_OUT)
454 return usb_sndisocpipe(udev, epnum);
455 else
456 return usb_rcvisocpipe(udev, epnum);
457 }
458
459 /* NOT REACHED */
460 dev_err(&sdev->interface->dev, "get pipe, epnum %d\n", epnum);
461 return 0;
462}
463
464static void stub_recv_cmd_submit(struct stub_device *sdev,
465 struct usbip_header *pdu)
466{
467 int ret;
468 struct stub_priv *priv;
469 struct usbip_device *ud = &sdev->ud;
470 struct usb_device *udev = interface_to_usbdev(sdev->interface);
471 int pipe = get_pipe(sdev, pdu->base.ep, pdu->base.direction);
472
473
474 priv = stub_priv_alloc(sdev, pdu);
475 if (!priv)
476 return;
477
478 /* setup a urb */
479 if (usb_pipeisoc(pipe))
480 priv->urb = usb_alloc_urb(pdu->u.cmd_submit.number_of_packets,
481 GFP_KERNEL);
482 else
483 priv->urb = usb_alloc_urb(0, GFP_KERNEL);
484
485 if (!priv->urb) {
486 dev_err(&sdev->interface->dev, "malloc urb\n");
487 usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC);
488 return;
489 }
490
491 /* set priv->urb->transfer_buffer */
492 if (pdu->u.cmd_submit.transfer_buffer_length > 0) {
493 priv->urb->transfer_buffer =
494 kzalloc(pdu->u.cmd_submit.transfer_buffer_length,
495 GFP_KERNEL);
496 if (!priv->urb->transfer_buffer) {
497 dev_err(&sdev->interface->dev, "malloc x_buff\n");
498 usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC);
499 return;
500 }
501 }
502
503 /* set priv->urb->setup_packet */
504 priv->urb->setup_packet = kzalloc(8, GFP_KERNEL);
505 if (!priv->urb->setup_packet) {
506 dev_err(&sdev->interface->dev, "allocate setup_packet\n");
507 usbip_event_add(ud, SDEV_EVENT_ERROR_MALLOC);
508 return;
509 }
510 memcpy(priv->urb->setup_packet, &pdu->u.cmd_submit.setup, 8);
511
512 /* set other members from the base header of pdu */
513 priv->urb->context = (void *) priv;
514 priv->urb->dev = udev;
515 priv->urb->pipe = pipe;
516 priv->urb->complete = stub_complete;
517
518 usbip_pack_pdu(pdu, priv->urb, USBIP_CMD_SUBMIT, 0);
519
520
521 if (usbip_recv_xbuff(ud, priv->urb) < 0)
522 return;
523
524 if (usbip_recv_iso(ud, priv->urb) < 0)
525 return;
526
527 /* no need to submit an intercepted request, but harmless? */
528 tweak_special_requests(priv->urb);
529
530 /* urb is now ready to submit */
531 ret = usb_submit_urb(priv->urb, GFP_KERNEL);
532
533 if (ret == 0)
534 dbg_stub_rx("submit urb ok, seqnum %u\n", pdu->base.seqnum);
535 else {
536 dev_err(&sdev->interface->dev, "submit_urb error, %d\n", ret);
537 usbip_dump_header(pdu);
538 usbip_dump_urb(priv->urb);
539
540 /*
541 * Pessimistic.
542 * This connection will be discarded.
543 */
544 usbip_event_add(ud, SDEV_EVENT_ERROR_SUBMIT);
545 }
546
547 dbg_stub_rx("Leave\n");
548 return;
549}
550
551/* recv a pdu */
552static void stub_rx_pdu(struct usbip_device *ud)
553{
554 int ret;
555 struct usbip_header pdu;
556 struct stub_device *sdev = container_of(ud, struct stub_device, ud);
557 struct device *dev = &sdev->interface->dev;
558
559 dbg_stub_rx("Enter\n");
560
561 memset(&pdu, 0, sizeof(pdu));
562
563 /* 1. receive a pdu header */
564 ret = usbip_xmit(0, ud->tcp_socket, (char *) &pdu, sizeof(pdu), 0);
565 if (ret != sizeof(pdu)) {
566 dev_err(dev, "recv a header, %d\n", ret);
567 usbip_event_add(ud, SDEV_EVENT_ERROR_TCP);
568 return;
569 }
570
571 usbip_header_correct_endian(&pdu, 0);
572
573 if (dbg_flag_stub_rx)
574 usbip_dump_header(&pdu);
575
576 if (!valid_request(sdev, &pdu)) {
577 dev_err(dev, "recv invalid request\n");
578 usbip_event_add(ud, SDEV_EVENT_ERROR_TCP);
579 return;
580 }
581
582 switch (pdu.base.command) {
583 case USBIP_CMD_UNLINK:
584 stub_recv_cmd_unlink(sdev, &pdu);
585 break;
586
587 case USBIP_CMD_SUBMIT:
588 stub_recv_cmd_submit(sdev, &pdu);
589 break;
590
591 default:
592 /* NOTREACHED */
593 dev_err(dev, "unknown pdu\n");
594 usbip_event_add(ud, SDEV_EVENT_ERROR_TCP);
595 return;
596 }
597
598}
599
600void stub_rx_loop(struct usbip_task *ut)
601{
602 struct usbip_device *ud = container_of(ut, struct usbip_device, tcp_rx);
603
604 while (1) {
605 if (signal_pending(current)) {
606 dbg_stub_rx("signal caught!\n");
607 break;
608 }
609
610 if (usbip_event_happend(ud))
611 break;
612
613 stub_rx_pdu(ud);
614 }
615}
diff --git a/drivers/staging/usbip/stub_tx.c b/drivers/staging/usbip/stub_tx.c
new file mode 100644
index 00000000000..d5563cd980b
--- /dev/null
+++ b/drivers/staging/usbip/stub_tx.c
@@ -0,0 +1,371 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21#include "stub.h"
22
23
24static void stub_free_priv_and_urb(struct stub_priv *priv)
25{
26 struct urb *urb = priv->urb;
27
28 kfree(urb->setup_packet);
29 kfree(urb->transfer_buffer);
30 list_del(&priv->list);
31 kmem_cache_free(stub_priv_cache, priv);
32 usb_free_urb(urb);
33}
34
35/* be in spin_lock_irqsave(&sdev->priv_lock, flags) */
36void stub_enqueue_ret_unlink(struct stub_device *sdev, __u32 seqnum,
37 __u32 status)
38{
39 struct stub_unlink *unlink;
40
41 unlink = kzalloc(sizeof(struct stub_unlink), GFP_ATOMIC);
42 if (!unlink) {
43 dev_err(&sdev->interface->dev, "alloc stub_unlink\n");
44 usbip_event_add(&sdev->ud, VDEV_EVENT_ERROR_MALLOC);
45 return;
46 }
47
48 unlink->seqnum = seqnum;
49 unlink->status = status;
50
51 list_add_tail(&unlink->list, &sdev->unlink_tx);
52}
53
54/**
55 * stub_complete - completion handler of a usbip urb
56 * @urb: pointer to the urb completed
57 * @regs:
58 *
59 * When a urb has completed, the USB core driver calls this function mostly in
60 * the interrupt context. To return the result of a urb, the completed urb is
61 * linked to the pending list of returning.
62 *
63 */
64void stub_complete(struct urb *urb)
65{
66 struct stub_priv *priv = (struct stub_priv *) urb->context;
67 struct stub_device *sdev = priv->sdev;
68 unsigned long flags;
69
70 dbg_stub_tx("complete! status %d\n", urb->status);
71
72
73 switch (urb->status) {
74 case 0:
75 /* OK */
76 break;
77 case -ENOENT:
78 uinfo("stopped by a call of usb_kill_urb() because of"
79 "cleaning up a virtual connection\n");
80 return;
81 case -ECONNRESET:
82 uinfo("unlinked by a call of usb_unlink_urb()\n");
83 break;
84 case -EPIPE:
85 uinfo("endpoint %d is stalled\n", usb_pipeendpoint(urb->pipe));
86 break;
87 case -ESHUTDOWN:
88 uinfo("device removed?\n");
89 break;
90 default:
91 uinfo("urb completion with non-zero status %d\n", urb->status);
92 }
93
94 /* link a urb to the queue of tx. */
95 spin_lock_irqsave(&sdev->priv_lock, flags);
96
97 if (priv->unlinking) {
98 stub_enqueue_ret_unlink(sdev, priv->seqnum, urb->status);
99 stub_free_priv_and_urb(priv);
100 } else
101 list_move_tail(&priv->list, &sdev->priv_tx);
102
103
104 spin_unlock_irqrestore(&sdev->priv_lock, flags);
105
106 /* wake up tx_thread */
107 wake_up(&sdev->tx_waitq);
108}
109
110
111/*-------------------------------------------------------------------------*/
112/* fill PDU */
113
114static inline void setup_base_pdu(struct usbip_header_basic *base,
115 __u32 command, __u32 seqnum)
116{
117 base->command = command;
118 base->seqnum = seqnum;
119 base->devid = 0;
120 base->ep = 0;
121 base->direction = 0;
122}
123
124static void setup_ret_submit_pdu(struct usbip_header *rpdu, struct urb *urb)
125{
126 struct stub_priv *priv = (struct stub_priv *) urb->context;
127
128 setup_base_pdu(&rpdu->base, USBIP_RET_SUBMIT, priv->seqnum);
129
130 usbip_pack_pdu(rpdu, urb, USBIP_RET_SUBMIT, 1);
131}
132
133static void setup_ret_unlink_pdu(struct usbip_header *rpdu,
134 struct stub_unlink *unlink)
135{
136 setup_base_pdu(&rpdu->base, USBIP_RET_UNLINK, unlink->seqnum);
137
138 rpdu->u.ret_unlink.status = unlink->status;
139}
140
141
142/*-------------------------------------------------------------------------*/
143/* send RET_SUBMIT */
144
145static struct stub_priv *dequeue_from_priv_tx(struct stub_device *sdev)
146{
147 unsigned long flags;
148 struct stub_priv *priv, *tmp;
149
150 spin_lock_irqsave(&sdev->priv_lock, flags);
151
152 list_for_each_entry_safe(priv, tmp, &sdev->priv_tx, list) {
153 list_move_tail(&priv->list, &sdev->priv_free);
154 spin_unlock_irqrestore(&sdev->priv_lock, flags);
155 return priv;
156 }
157
158 spin_unlock_irqrestore(&sdev->priv_lock, flags);
159
160 return NULL;
161}
162
163static int stub_send_ret_submit(struct stub_device *sdev)
164{
165 unsigned long flags;
166 struct stub_priv *priv, *tmp;
167
168 struct msghdr msg;
169 struct kvec iov[3];
170 size_t txsize;
171
172 size_t total_size = 0;
173
174 while ((priv = dequeue_from_priv_tx(sdev)) != NULL) {
175 int ret;
176 struct urb *urb = priv->urb;
177 struct usbip_header pdu_header;
178 void *iso_buffer = NULL;
179
180 txsize = 0;
181 memset(&pdu_header, 0, sizeof(pdu_header));
182 memset(&msg, 0, sizeof(msg));
183 memset(&iov, 0, sizeof(iov));
184
185 dbg_stub_tx("setup txdata urb %p\n", urb);
186
187
188 /* 1. setup usbip_header */
189 setup_ret_submit_pdu(&pdu_header, urb);
190 usbip_header_correct_endian(&pdu_header, 1);
191
192 iov[0].iov_base = &pdu_header;
193 iov[0].iov_len = sizeof(pdu_header);
194 txsize += sizeof(pdu_header);
195
196 /* 2. setup transfer buffer */
197 if (usb_pipein(urb->pipe) && urb->actual_length > 0) {
198 iov[1].iov_base = urb->transfer_buffer;
199 iov[1].iov_len = urb->actual_length;
200 txsize += urb->actual_length;
201 }
202
203 /* 3. setup iso_packet_descriptor */
204 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) {
205 ssize_t len = 0;
206
207 iso_buffer = usbip_alloc_iso_desc_pdu(urb, &len);
208 if (!iso_buffer) {
209 usbip_event_add(&sdev->ud,
210 SDEV_EVENT_ERROR_MALLOC);
211 return -1;
212 }
213
214 iov[2].iov_base = iso_buffer;
215 iov[2].iov_len = len;
216 txsize += len;
217 }
218
219 ret = kernel_sendmsg(sdev->ud.tcp_socket, &msg, iov,
220 3, txsize);
221 if (ret != txsize) {
222 dev_err(&sdev->interface->dev,
223 "sendmsg failed!, retval %d for %zd\n",
224 ret, txsize);
225 kfree(iso_buffer);
226 usbip_event_add(&sdev->ud, SDEV_EVENT_ERROR_TCP);
227 return -1;
228 }
229
230 kfree(iso_buffer);
231 dbg_stub_tx("send txdata\n");
232
233 total_size += txsize;
234 }
235
236
237 spin_lock_irqsave(&sdev->priv_lock, flags);
238
239 list_for_each_entry_safe(priv, tmp, &sdev->priv_free, list) {
240 stub_free_priv_and_urb(priv);
241 }
242
243 spin_unlock_irqrestore(&sdev->priv_lock, flags);
244
245 return total_size;
246}
247
248
249/*-------------------------------------------------------------------------*/
250/* send RET_UNLINK */
251
252static struct stub_unlink *dequeue_from_unlink_tx(struct stub_device *sdev)
253{
254 unsigned long flags;
255 struct stub_unlink *unlink, *tmp;
256
257 spin_lock_irqsave(&sdev->priv_lock, flags);
258
259 list_for_each_entry_safe(unlink, tmp, &sdev->unlink_tx, list) {
260 list_move_tail(&unlink->list, &sdev->unlink_free);
261 spin_unlock_irqrestore(&sdev->priv_lock, flags);
262 return unlink;
263 }
264
265 spin_unlock_irqrestore(&sdev->priv_lock, flags);
266
267 return NULL;
268}
269
270
271static int stub_send_ret_unlink(struct stub_device *sdev)
272{
273 unsigned long flags;
274 struct stub_unlink *unlink, *tmp;
275
276 struct msghdr msg;
277 struct kvec iov[1];
278 size_t txsize;
279
280 size_t total_size = 0;
281
282 while ((unlink = dequeue_from_unlink_tx(sdev)) != NULL) {
283 int ret;
284 struct usbip_header pdu_header;
285
286 txsize = 0;
287 memset(&pdu_header, 0, sizeof(pdu_header));
288 memset(&msg, 0, sizeof(msg));
289 memset(&iov, 0, sizeof(iov));
290
291 dbg_stub_tx("setup ret unlink %lu\n", unlink->seqnum);
292
293 /* 1. setup usbip_header */
294 setup_ret_unlink_pdu(&pdu_header, unlink);
295 usbip_header_correct_endian(&pdu_header, 1);
296
297 iov[0].iov_base = &pdu_header;
298 iov[0].iov_len = sizeof(pdu_header);
299 txsize += sizeof(pdu_header);
300
301 ret = kernel_sendmsg(sdev->ud.tcp_socket, &msg, iov,
302 1, txsize);
303 if (ret != txsize) {
304 dev_err(&sdev->interface->dev,
305 "sendmsg failed!, retval %d for %zd\n",
306 ret, txsize);
307 usbip_event_add(&sdev->ud, SDEV_EVENT_ERROR_TCP);
308 return -1;
309 }
310
311
312 dbg_stub_tx("send txdata\n");
313
314 total_size += txsize;
315 }
316
317
318 spin_lock_irqsave(&sdev->priv_lock, flags);
319
320 list_for_each_entry_safe(unlink, tmp, &sdev->unlink_free, list) {
321 list_del(&unlink->list);
322 kfree(unlink);
323 }
324
325 spin_unlock_irqrestore(&sdev->priv_lock, flags);
326
327 return total_size;
328}
329
330
331/*-------------------------------------------------------------------------*/
332
333void stub_tx_loop(struct usbip_task *ut)
334{
335 struct usbip_device *ud = container_of(ut, struct usbip_device, tcp_tx);
336 struct stub_device *sdev = container_of(ud, struct stub_device, ud);
337
338 while (1) {
339 if (signal_pending(current)) {
340 dbg_stub_tx("signal catched\n");
341 break;
342 }
343
344 if (usbip_event_happend(ud))
345 break;
346
347 /*
348 * send_ret_submit comes earlier than send_ret_unlink. stub_rx
349 * looks at only priv_init queue. If the completion of a URB is
350 * earlier than the receive of CMD_UNLINK, priv is moved to
351 * priv_tx queue and stub_rx does not find the target priv. In
352 * this case, vhci_rx receives the result of the submit request
353 * and then receives the result of the unlink request. The
354 * result of the submit is given back to the usbcore as the
355 * completion of the unlink request. The request of the
356 * unlink is ignored. This is ok because a driver who calls
357 * usb_unlink_urb() understands the unlink was too late by
358 * getting the status of the given-backed URB which has the
359 * status of usb_submit_urb().
360 */
361 if (stub_send_ret_submit(sdev) < 0)
362 break;
363
364 if (stub_send_ret_unlink(sdev) < 0)
365 break;
366
367 wait_event_interruptible(sdev->tx_waitq,
368 (!list_empty(&sdev->priv_tx) ||
369 !list_empty(&sdev->unlink_tx)));
370 }
371}
diff --git a/drivers/staging/usbip/usbip_common.c b/drivers/staging/usbip/usbip_common.c
new file mode 100644
index 00000000000..e64918f42ff
--- /dev/null
+++ b/drivers/staging/usbip/usbip_common.c
@@ -0,0 +1,997 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include <linux/kernel.h>
21#include <linux/file.h>
22#include <linux/tcp.h>
23#include <linux/in.h>
24#include "usbip_common.h"
25
26/* version information */
27#define DRIVER_VERSION "1.0"
28#define DRIVER_AUTHOR "Takahiro Hirofuchi <hirofuchi _at_ users.sourceforge.net>"
29#define DRIVER_DESC "usbip common driver"
30
31/*-------------------------------------------------------------------------*/
32/* debug routines */
33
34#ifdef CONFIG_USB_DEBUG
35unsigned long usbip_debug_flag = 0xffffffff;
36#else
37unsigned long usbip_debug_flag;
38#endif
39EXPORT_SYMBOL_GPL(usbip_debug_flag);
40
41
42/* FIXME */
43struct device_attribute dev_attr_usbip_debug;
44EXPORT_SYMBOL_GPL(dev_attr_usbip_debug);
45
46
47static ssize_t show_flag(struct device *dev, struct device_attribute *attr,
48 char *buf)
49{
50 return sprintf(buf, "%lx\n", usbip_debug_flag);
51}
52
53static ssize_t store_flag(struct device *dev, struct device_attribute *attr,
54 const char *buf, size_t count)
55{
56 unsigned long flag;
57
58 sscanf(buf, "%lx", &flag);
59 usbip_debug_flag = flag;
60
61 return count;
62}
63DEVICE_ATTR(usbip_debug, (S_IRUGO | S_IWUSR), show_flag, store_flag);
64
65static void usbip_dump_buffer(char *buff, int bufflen)
66{
67 int i;
68
69 if (bufflen > 128) {
70 for (i = 0; i < 128; i++) {
71 if (i%24 == 0)
72 printk(" ");
73 printk("%02x ", (unsigned char) buff[i]);
74 if (i%4 == 3)
75 printk("| ");
76 if (i%24 == 23)
77 printk("\n");
78 }
79 printk("... (%d byte)\n", bufflen);
80 return;
81 }
82
83 for (i = 0; i < bufflen; i++) {
84 if (i%24 == 0)
85 printk(" ");
86 printk("%02x ", (unsigned char) buff[i]);
87 if (i%4 == 3)
88 printk("| ");
89 if (i%24 == 23)
90 printk("\n");
91 }
92 printk("\n");
93
94}
95
96static void usbip_dump_pipe(unsigned int p)
97{
98 unsigned char type = usb_pipetype(p);
99 unsigned char ep = usb_pipeendpoint(p);
100 unsigned char dev = usb_pipedevice(p);
101 unsigned char dir = usb_pipein(p);
102
103 printk("dev(%d) ", dev);
104 printk("ep(%d) ", ep);
105 printk("%s ", dir ? "IN" : "OUT");
106
107 switch (type) {
108 case PIPE_ISOCHRONOUS:
109 printk("%s ", "ISO");
110 break;
111 case PIPE_INTERRUPT:
112 printk("%s ", "INT");
113 break;
114 case PIPE_CONTROL:
115 printk("%s ", "CTL");
116 break;
117 case PIPE_BULK:
118 printk("%s ", "BLK");
119 break;
120 default:
121 printk("ERR");
122 }
123
124 printk("\n");
125
126}
127
128static void usbip_dump_usb_device(struct usb_device *udev)
129{
130 struct device *dev = &udev->dev;
131 int i;
132
133 dev_dbg(dev, " devnum(%d) devpath(%s)",
134 udev->devnum, udev->devpath);
135
136 switch (udev->speed) {
137 case USB_SPEED_HIGH:
138 printk(" SPD_HIGH");
139 break;
140 case USB_SPEED_FULL:
141 printk(" SPD_FULL");
142 break;
143 case USB_SPEED_LOW:
144 printk(" SPD_LOW");
145 break;
146 case USB_SPEED_UNKNOWN:
147 printk(" SPD_UNKNOWN");
148 break;
149 default:
150 printk(" SPD_ERROR");
151 }
152
153 printk(" tt %p, ttport %d", udev->tt, udev->ttport);
154 printk("\n");
155
156 dev_dbg(dev, " ");
157 for (i = 0; i < 16; i++)
158 printk(" %2u", i);
159 printk("\n");
160
161 dev_dbg(dev, " toggle0(IN) :");
162 for (i = 0; i < 16; i++)
163 printk(" %2u", (udev->toggle[0] & (1 << i)) ? 1 : 0);
164 printk("\n");
165
166 dev_dbg(dev, " toggle1(OUT):");
167 for (i = 0; i < 16; i++)
168 printk(" %2u", (udev->toggle[1] & (1 << i)) ? 1 : 0);
169 printk("\n");
170
171
172 dev_dbg(dev, " epmaxp_in :");
173 for (i = 0; i < 16; i++) {
174 if (udev->ep_in[i])
175 printk(" %2u",
176 le16_to_cpu(udev->ep_in[i]->desc.wMaxPacketSize));
177 }
178 printk("\n");
179
180 dev_dbg(dev, " epmaxp_out :");
181 for (i = 0; i < 16; i++) {
182 if (udev->ep_out[i])
183 printk(" %2u",
184 le16_to_cpu(udev->ep_out[i]->desc.wMaxPacketSize));
185 }
186 printk("\n");
187
188 dev_dbg(dev, "parent %p, bus %p\n", udev->parent, udev->bus);
189
190 dev_dbg(dev, "descriptor %p, config %p, actconfig %p, "
191 "rawdescriptors %p\n", &udev->descriptor, udev->config,
192 udev->actconfig, udev->rawdescriptors);
193
194 dev_dbg(dev, "have_langid %d, string_langid %d\n",
195 udev->have_langid, udev->string_langid);
196
197 dev_dbg(dev, "maxchild %d, children %p\n",
198 udev->maxchild, udev->children);
199}
200
201static void usbip_dump_request_type(__u8 rt)
202{
203 switch (rt & USB_RECIP_MASK) {
204 case USB_RECIP_DEVICE:
205 printk("DEVICE");
206 break;
207 case USB_RECIP_INTERFACE:
208 printk("INTERF");
209 break;
210 case USB_RECIP_ENDPOINT:
211 printk("ENDPOI");
212 break;
213 case USB_RECIP_OTHER:
214 printk("OTHER ");
215 break;
216 default:
217 printk("------");
218 }
219}
220
221static void usbip_dump_usb_ctrlrequest(struct usb_ctrlrequest *cmd)
222{
223 if (!cmd) {
224 printk(" %s : null pointer\n", __FUNCTION__);
225 return;
226 }
227
228 printk(" ");
229 printk("bRequestType(%02X) ", cmd->bRequestType);
230 printk("bRequest(%02X) " , cmd->bRequest);
231 printk("wValue(%04X) ", cmd->wValue);
232 printk("wIndex(%04X) ", cmd->wIndex);
233 printk("wLength(%04X) ", cmd->wLength);
234
235 printk("\n ");
236
237 if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_STANDARD) {
238 printk("STANDARD ");
239 switch (cmd->bRequest) {
240 case USB_REQ_GET_STATUS:
241 printk("GET_STATUS");
242 break;
243 case USB_REQ_CLEAR_FEATURE:
244 printk("CLEAR_FEAT");
245 break;
246 case USB_REQ_SET_FEATURE:
247 printk("SET_FEAT ");
248 break;
249 case USB_REQ_SET_ADDRESS:
250 printk("SET_ADDRRS");
251 break;
252 case USB_REQ_GET_DESCRIPTOR:
253 printk("GET_DESCRI");
254 break;
255 case USB_REQ_SET_DESCRIPTOR:
256 printk("SET_DESCRI");
257 break;
258 case USB_REQ_GET_CONFIGURATION:
259 printk("GET_CONFIG");
260 break;
261 case USB_REQ_SET_CONFIGURATION:
262 printk("SET_CONFIG");
263 break;
264 case USB_REQ_GET_INTERFACE:
265 printk("GET_INTERF");
266 break;
267 case USB_REQ_SET_INTERFACE:
268 printk("SET_INTERF");
269 break;
270 case USB_REQ_SYNCH_FRAME:
271 printk("SYNC_FRAME");
272 break;
273 default:
274 printk("REQ(%02X) ", cmd->bRequest);
275 }
276
277 printk(" ");
278 usbip_dump_request_type(cmd->bRequestType);
279
280 } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_CLASS)
281 printk("CLASS ");
282
283 else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_VENDOR)
284 printk("VENDOR ");
285
286 else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_RESERVED)
287 printk("RESERVED");
288
289 printk("\n");
290}
291
292void usbip_dump_urb(struct urb *urb)
293{
294 struct device *dev;
295
296 if (!urb) {
297 printk(KERN_DEBUG KBUILD_MODNAME
298 ":%s: urb: null pointer!!\n", __func__);
299 return;
300 }
301
302 if (!urb->dev) {
303 printk(KERN_DEBUG KBUILD_MODNAME
304 ":%s: urb->dev: null pointer!!\n", __func__);
305 return;
306 }
307 dev = &urb->dev->dev;
308
309 dev_dbg(dev, " urb :%p\n", urb);
310 dev_dbg(dev, " dev :%p\n", urb->dev);
311
312 usbip_dump_usb_device(urb->dev);
313
314 dev_dbg(dev, " pipe :%08x ", urb->pipe);
315
316 usbip_dump_pipe(urb->pipe);
317
318 dev_dbg(dev, " status :%d\n", urb->status);
319 dev_dbg(dev, " transfer_flags :%08X\n", urb->transfer_flags);
320 dev_dbg(dev, " transfer_buffer :%p\n", urb->transfer_buffer);
321 dev_dbg(dev, " transfer_buffer_length:%d\n", urb->transfer_buffer_length);
322 dev_dbg(dev, " actual_length :%d\n", urb->actual_length);
323 dev_dbg(dev, " setup_packet :%p\n", urb->setup_packet);
324
325 if (urb->setup_packet && usb_pipetype(urb->pipe) == PIPE_CONTROL)
326 usbip_dump_usb_ctrlrequest(
327 (struct usb_ctrlrequest *)urb->setup_packet);
328
329 dev_dbg(dev, " start_frame :%d\n", urb->start_frame);
330 dev_dbg(dev, " number_of_packets :%d\n", urb->number_of_packets);
331 dev_dbg(dev, " interval :%d\n", urb->interval);
332 dev_dbg(dev, " error_count :%d\n", urb->error_count);
333 dev_dbg(dev, " context :%p\n", urb->context);
334 dev_dbg(dev, " complete :%p\n", urb->complete);
335}
336EXPORT_SYMBOL_GPL(usbip_dump_urb);
337
338void usbip_dump_header(struct usbip_header *pdu)
339{
340 udbg("BASE: cmd %u seq %u devid %u dir %u ep %u\n",
341 pdu->base.command,
342 pdu->base.seqnum,
343 pdu->base.devid,
344 pdu->base.direction,
345 pdu->base.ep);
346
347 switch (pdu->base.command) {
348 case USBIP_CMD_SUBMIT:
349 udbg("CMD_SUBMIT: x_flags %u x_len %u sf %u #p %u iv %u\n",
350 pdu->u.cmd_submit.transfer_flags,
351 pdu->u.cmd_submit.transfer_buffer_length,
352 pdu->u.cmd_submit.start_frame,
353 pdu->u.cmd_submit.number_of_packets,
354 pdu->u.cmd_submit.interval);
355 break;
356 case USBIP_CMD_UNLINK:
357 udbg("CMD_UNLINK: seq %u\n", pdu->u.cmd_unlink.seqnum);
358 break;
359 case USBIP_RET_SUBMIT:
360 udbg("RET_SUBMIT: st %d al %u sf %d ec %d\n",
361 pdu->u.ret_submit.status,
362 pdu->u.ret_submit.actual_length,
363 pdu->u.ret_submit.start_frame,
364 pdu->u.ret_submit.error_count);
365 case USBIP_RET_UNLINK:
366 udbg("RET_UNLINK: status %d\n", pdu->u.ret_unlink.status);
367 break;
368 default:
369 /* NOT REACHED */
370 udbg("UNKNOWN\n");
371 }
372}
373EXPORT_SYMBOL_GPL(usbip_dump_header);
374
375
376/*-------------------------------------------------------------------------*/
377/* thread routines */
378
379int usbip_thread(void *param)
380{
381 struct usbip_task *ut = param;
382
383 if (!ut)
384 return -EINVAL;
385
386 lock_kernel();
387 daemonize(ut->name);
388 allow_signal(SIGKILL);
389 ut->thread = current;
390 unlock_kernel();
391
392 /* srv.rb must wait for rx_thread starting */
393 complete(&ut->thread_done);
394
395 /* start of while loop */
396 ut->loop_ops(ut);
397
398 /* end of loop */
399 ut->thread = NULL;
400
401 complete_and_exit(&ut->thread_done, 0);
402}
403
404void usbip_start_threads(struct usbip_device *ud)
405{
406 /*
407 * threads are invoked per one device (per one connection).
408 */
409 kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
410 kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
411
412 /* confirm threads are starting */
413 wait_for_completion(&ud->tcp_rx.thread_done);
414 wait_for_completion(&ud->tcp_tx.thread_done);
415}
416EXPORT_SYMBOL_GPL(usbip_start_threads);
417
418void usbip_stop_threads(struct usbip_device *ud)
419{
420 /* kill threads related to this sdev, if v.c. exists */
421 if (ud->tcp_rx.thread != NULL) {
422 send_sig(SIGKILL, ud->tcp_rx.thread, 1);
423 wait_for_completion(&ud->tcp_rx.thread_done);
424 udbg("rx_thread for ud %p has finished\n", ud);
425 }
426
427 if (ud->tcp_tx.thread != NULL) {
428 send_sig(SIGKILL, ud->tcp_tx.thread, 1);
429 wait_for_completion(&ud->tcp_tx.thread_done);
430 udbg("tx_thread for ud %p has finished\n", ud);
431 }
432}
433EXPORT_SYMBOL_GPL(usbip_stop_threads);
434
435void usbip_task_init(struct usbip_task *ut, char *name,
436 void (*loop_ops)(struct usbip_task *))
437{
438 ut->thread = NULL;
439 init_completion(&ut->thread_done);
440 ut->name = name;
441 ut->loop_ops = loop_ops;
442}
443EXPORT_SYMBOL_GPL(usbip_task_init);
444
445
446/*-------------------------------------------------------------------------*/
447/* socket routines */
448
449 /* Send/receive messages over TCP/IP. I refer drivers/block/nbd.c */
450int usbip_xmit(int send, struct socket *sock, char *buf,
451 int size, int msg_flags)
452{
453 int result;
454 struct msghdr msg;
455 struct kvec iov;
456 int total = 0;
457
458 /* for blocks of if (dbg_flag_xmit) */
459 char *bp = buf;
460 int osize = size;
461
462 dbg_xmit("enter\n");
463
464 if (!sock || !buf || !size) {
465 printk(KERN_ERR "%s: invalid arg, sock %p buff %p size %d\n",
466 __func__, sock, buf, size);
467 return -EINVAL;
468 }
469
470
471 if (dbg_flag_xmit) {
472 if (send) {
473 if (!in_interrupt())
474 printk(KERN_DEBUG "%-10s:", current->comm);
475 else
476 printk(KERN_DEBUG "interupt :");
477
478 printk("%s: sending... , sock %p, buf %p, "
479 "size %d, msg_flags %d\n", __func__,
480 sock, buf, size, msg_flags);
481 usbip_dump_buffer(buf, size);
482 }
483 }
484
485
486 do {
487 sock->sk->sk_allocation = GFP_NOIO;
488 iov.iov_base = buf;
489 iov.iov_len = size;
490 msg.msg_name = NULL;
491 msg.msg_namelen = 0;
492 msg.msg_control = NULL;
493 msg.msg_controllen = 0;
494 msg.msg_namelen = 0;
495 msg.msg_flags = msg_flags | MSG_NOSIGNAL;
496
497 if (send)
498 result = kernel_sendmsg(sock, &msg, &iov, 1, size);
499 else
500 result = kernel_recvmsg(sock, &msg, &iov, 1, size,
501 MSG_WAITALL);
502
503 if (result <= 0) {
504 udbg("usbip_xmit: %s sock %p buf %p size %u ret %d"
505 " total %d\n",
506 send ? "send" : "receive", sock, buf,
507 size, result, total);
508 goto err;
509 }
510
511 size -= result;
512 buf += result;
513 total += result;
514
515 } while (size > 0);
516
517
518 if (dbg_flag_xmit) {
519 if (!send) {
520 if (!in_interrupt())
521 printk(KERN_DEBUG "%-10s:", current->comm);
522 else
523 printk(KERN_DEBUG "interupt :");
524
525 printk("usbip_xmit: receiving....\n");
526 usbip_dump_buffer(bp, osize);
527 printk("usbip_xmit: received, osize %d ret %d size %d "
528 "total %d\n", osize, result, size,
529 total);
530 }
531
532 if (send)
533 printk("usbip_xmit: send, total %d\n", total);
534 }
535
536 return total;
537
538err:
539 return result;
540}
541EXPORT_SYMBOL_GPL(usbip_xmit);
542
543
544/* now a usrland utility should set options. */
545#if 0
546int setquickack(struct socket *socket)
547{
548 mm_segment_t oldfs;
549 int val = 1;
550 int ret;
551
552 oldfs = get_fs();
553 set_fs(get_ds());
554 ret = socket->ops->setsockopt(socket, SOL_TCP, TCP_QUICKACK,
555 (char __user *) &val, sizeof(ret));
556 set_fs(oldfs);
557
558 return ret;
559}
560
561int setnodelay(struct socket *socket)
562{
563 mm_segment_t oldfs;
564 int val = 1;
565 int ret;
566
567 oldfs = get_fs();
568 set_fs(get_ds());
569 ret = socket->ops->setsockopt(socket, SOL_TCP, TCP_NODELAY,
570 (char __user *) &val, sizeof(ret));
571 set_fs(oldfs);
572
573 return ret;
574}
575
576int setkeepalive(struct socket *socket)
577{
578 mm_segment_t oldfs;
579 int val = 1;
580 int ret;
581
582 oldfs = get_fs();
583 set_fs(get_ds());
584 ret = socket->ops->setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE,
585 (char __user *) &val, sizeof(ret));
586 set_fs(oldfs);
587
588 return ret;
589}
590
591void setreuse(struct socket *socket)
592{
593 socket->sk->sk_reuse = 1;
594}
595#endif
596
597struct socket *sockfd_to_socket(unsigned int sockfd)
598{
599 struct socket *socket;
600 struct file *file;
601 struct inode *inode;
602
603 file = fget(sockfd);
604 if (!file) {
605 printk(KERN_ERR "%s: invalid sockfd\n", __func__);
606 return NULL;
607 }
608
609 inode = file->f_dentry->d_inode;
610
611 if (!inode || !S_ISSOCK(inode->i_mode))
612 return NULL;
613
614 socket = SOCKET_I(inode);
615
616 return socket;
617}
618EXPORT_SYMBOL_GPL(sockfd_to_socket);
619
620
621
622/*-------------------------------------------------------------------------*/
623/* pdu routines */
624
625/* there may be more cases to tweak the flags. */
626static unsigned int tweak_transfer_flags(unsigned int flags)
627{
628
629 if (flags & URB_NO_TRANSFER_DMA_MAP)
630 /*
631 * vhci_hcd does not provide DMA-mapped I/O. The upper
632 * driver does not need to set this flag. The remote
633 * usbip.ko does not still perform DMA-mapped I/O for
634 * DMA-caplable host controllers. So, clear this flag.
635 */
636 flags &= ~URB_NO_TRANSFER_DMA_MAP;
637
638 if (flags & URB_NO_SETUP_DMA_MAP)
639 flags &= ~URB_NO_SETUP_DMA_MAP;
640
641 return flags;
642}
643
644static void usbip_pack_cmd_submit(struct usbip_header *pdu, struct urb *urb,
645 int pack)
646{
647 struct usbip_header_cmd_submit *spdu = &pdu->u.cmd_submit;
648
649 /*
650 * Some members are not still implemented in usbip. I hope this issue
651 * will be discussed when usbip is ported to other operating systems.
652 */
653 if (pack) {
654 /* vhci_tx.c */
655 spdu->transfer_flags =
656 tweak_transfer_flags(urb->transfer_flags);
657 spdu->transfer_buffer_length = urb->transfer_buffer_length;
658 spdu->start_frame = urb->start_frame;
659 spdu->number_of_packets = urb->number_of_packets;
660 spdu->interval = urb->interval;
661 } else {
662 /* stub_rx.c */
663 urb->transfer_flags = spdu->transfer_flags;
664
665 urb->transfer_buffer_length = spdu->transfer_buffer_length;
666 urb->start_frame = spdu->start_frame;
667 urb->number_of_packets = spdu->number_of_packets;
668 urb->interval = spdu->interval;
669 }
670}
671
672static void usbip_pack_ret_submit(struct usbip_header *pdu, struct urb *urb,
673 int pack)
674{
675 struct usbip_header_ret_submit *rpdu = &pdu->u.ret_submit;
676
677 if (pack) {
678 /* stub_tx.c */
679
680 rpdu->status = urb->status;
681 rpdu->actual_length = urb->actual_length;
682 rpdu->start_frame = urb->start_frame;
683 rpdu->error_count = urb->error_count;
684 } else {
685 /* vhci_rx.c */
686
687 urb->status = rpdu->status;
688 urb->actual_length = rpdu->actual_length;
689 urb->start_frame = rpdu->start_frame;
690 urb->error_count = rpdu->error_count;
691 }
692}
693
694
695void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd,
696 int pack)
697{
698 switch (cmd) {
699 case USBIP_CMD_SUBMIT:
700 usbip_pack_cmd_submit(pdu, urb, pack);
701 break;
702 case USBIP_RET_SUBMIT:
703 usbip_pack_ret_submit(pdu, urb, pack);
704 break;
705 default:
706 err("unknown command");
707 /* NOTREACHED */
708 /* BUG(); */
709 }
710}
711EXPORT_SYMBOL_GPL(usbip_pack_pdu);
712
713
714static void correct_endian_basic(struct usbip_header_basic *base, int send)
715{
716 if (send) {
717 base->command = cpu_to_be32(base->command);
718 base->seqnum = cpu_to_be32(base->seqnum);
719 base->devid = cpu_to_be32(base->devid);
720 base->direction = cpu_to_be32(base->direction);
721 base->ep = cpu_to_be32(base->ep);
722 } else {
723 base->command = be32_to_cpu(base->command);
724 base->seqnum = be32_to_cpu(base->seqnum);
725 base->devid = be32_to_cpu(base->devid);
726 base->direction = be32_to_cpu(base->direction);
727 base->ep = be32_to_cpu(base->ep);
728 }
729}
730
731static void correct_endian_cmd_submit(struct usbip_header_cmd_submit *pdu,
732 int send)
733{
734 if (send) {
735 pdu->transfer_flags = cpu_to_be32(pdu->transfer_flags);
736
737 cpu_to_be32s(&pdu->transfer_buffer_length);
738 cpu_to_be32s(&pdu->start_frame);
739 cpu_to_be32s(&pdu->number_of_packets);
740 cpu_to_be32s(&pdu->interval);
741 } else {
742 pdu->transfer_flags = be32_to_cpu(pdu->transfer_flags);
743
744 be32_to_cpus(&pdu->transfer_buffer_length);
745 be32_to_cpus(&pdu->start_frame);
746 be32_to_cpus(&pdu->number_of_packets);
747 be32_to_cpus(&pdu->interval);
748 }
749}
750
751static void correct_endian_ret_submit(struct usbip_header_ret_submit *pdu,
752 int send)
753{
754 if (send) {
755 cpu_to_be32s(&pdu->status);
756 cpu_to_be32s(&pdu->actual_length);
757 cpu_to_be32s(&pdu->start_frame);
758 cpu_to_be32s(&pdu->error_count);
759 } else {
760 be32_to_cpus(&pdu->status);
761 be32_to_cpus(&pdu->actual_length);
762 be32_to_cpus(&pdu->start_frame);
763 be32_to_cpus(&pdu->error_count);
764 }
765}
766
767static void correct_endian_cmd_unlink(struct usbip_header_cmd_unlink *pdu,
768 int send)
769{
770 if (send)
771 pdu->seqnum = cpu_to_be32(pdu->seqnum);
772 else
773 pdu->seqnum = be32_to_cpu(pdu->seqnum);
774}
775
776static void correct_endian_ret_unlink(struct usbip_header_ret_unlink *pdu,
777 int send)
778{
779 if (send)
780 cpu_to_be32s(&pdu->status);
781 else
782 be32_to_cpus(&pdu->status);
783}
784
785void usbip_header_correct_endian(struct usbip_header *pdu, int send)
786{
787 __u32 cmd = 0;
788
789 if (send)
790 cmd = pdu->base.command;
791
792 correct_endian_basic(&pdu->base, send);
793
794 if (!send)
795 cmd = pdu->base.command;
796
797 switch (cmd) {
798 case USBIP_CMD_SUBMIT:
799 correct_endian_cmd_submit(&pdu->u.cmd_submit, send);
800 break;
801 case USBIP_RET_SUBMIT:
802 correct_endian_ret_submit(&pdu->u.ret_submit, send);
803 break;
804 case USBIP_CMD_UNLINK:
805 correct_endian_cmd_unlink(&pdu->u.cmd_unlink, send);
806 break;
807 case USBIP_RET_UNLINK:
808 correct_endian_ret_unlink(&pdu->u.ret_unlink, send);
809 break;
810 default:
811 /* NOTREACHED */
812 err("unknown command in pdu header: %d", cmd);
813 /* BUG(); */
814 }
815}
816EXPORT_SYMBOL_GPL(usbip_header_correct_endian);
817
818static void usbip_iso_pakcet_correct_endian(
819 struct usbip_iso_packet_descriptor *iso,
820 int send)
821{
822 /* does not need all members. but copy all simply. */
823 if (send) {
824 iso->offset = cpu_to_be32(iso->offset);
825 iso->length = cpu_to_be32(iso->length);
826 iso->status = cpu_to_be32(iso->status);
827 iso->actual_length = cpu_to_be32(iso->actual_length);
828 } else {
829 iso->offset = be32_to_cpu(iso->offset);
830 iso->length = be32_to_cpu(iso->length);
831 iso->status = be32_to_cpu(iso->status);
832 iso->actual_length = be32_to_cpu(iso->actual_length);
833 }
834}
835
836static void usbip_pack_iso(struct usbip_iso_packet_descriptor *iso,
837 struct usb_iso_packet_descriptor *uiso, int pack)
838{
839 if (pack) {
840 iso->offset = uiso->offset;
841 iso->length = uiso->length;
842 iso->status = uiso->status;
843 iso->actual_length = uiso->actual_length;
844 } else {
845 uiso->offset = iso->offset;
846 uiso->length = iso->length;
847 uiso->status = iso->status;
848 uiso->actual_length = iso->actual_length;
849 }
850}
851
852
853/* must free buffer */
854void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen)
855{
856 void *buff;
857 struct usbip_iso_packet_descriptor *iso;
858 int np = urb->number_of_packets;
859 ssize_t size = np * sizeof(*iso);
860 int i;
861
862 buff = kzalloc(size, GFP_KERNEL);
863 if (!buff)
864 return NULL;
865
866 for (i = 0; i < np; i++) {
867 iso = buff + (i * sizeof(*iso));
868
869 usbip_pack_iso(iso, &urb->iso_frame_desc[i], 1);
870 usbip_iso_pakcet_correct_endian(iso, 1);
871 }
872
873 *bufflen = size;
874
875 return buff;
876}
877EXPORT_SYMBOL_GPL(usbip_alloc_iso_desc_pdu);
878
879/* some members of urb must be substituted before. */
880int usbip_recv_iso(struct usbip_device *ud, struct urb *urb)
881{
882 void *buff;
883 struct usbip_iso_packet_descriptor *iso;
884 int np = urb->number_of_packets;
885 int size = np * sizeof(*iso);
886 int i;
887 int ret;
888
889 if (!usb_pipeisoc(urb->pipe))
890 return 0;
891
892 /* my Bluetooth dongle gets ISO URBs which are np = 0 */
893 if (np == 0) {
894 /* uinfo("iso np == 0\n"); */
895 /* usbip_dump_urb(urb); */
896 return 0;
897 }
898
899 buff = kzalloc(size, GFP_KERNEL);
900 if (!buff)
901 return -ENOMEM;
902
903 ret = usbip_xmit(0, ud->tcp_socket, buff, size, 0);
904 if (ret != size) {
905 dev_err(&urb->dev->dev, "recv iso_frame_descriptor, %d\n",
906 ret);
907 kfree(buff);
908
909 if (ud->side == USBIP_STUB)
910 usbip_event_add(ud, SDEV_EVENT_ERROR_TCP);
911 else
912 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
913
914 return -EPIPE;
915 }
916
917 for (i = 0; i < np; i++) {
918 iso = buff + (i * sizeof(*iso));
919
920 usbip_iso_pakcet_correct_endian(iso, 0);
921 usbip_pack_iso(iso, &urb->iso_frame_desc[i], 0);
922 }
923
924
925 kfree(buff);
926
927 return ret;
928}
929EXPORT_SYMBOL_GPL(usbip_recv_iso);
930
931
932/* some members of urb must be substituted before. */
933int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb)
934{
935 int ret;
936 int size;
937
938 if (ud->side == USBIP_STUB) {
939 /* stub_rx.c */
940 /* the direction of urb must be OUT. */
941 if (usb_pipein(urb->pipe))
942 return 0;
943
944 size = urb->transfer_buffer_length;
945 } else {
946 /* vhci_rx.c */
947 /* the direction of urb must be IN. */
948 if (usb_pipeout(urb->pipe))
949 return 0;
950
951 size = urb->actual_length;
952 }
953
954 /* no need to recv xbuff */
955 if (!(size > 0))
956 return 0;
957
958 ret = usbip_xmit(0, ud->tcp_socket, (char *)urb->transfer_buffer,
959 size, 0);
960 if (ret != size) {
961 dev_err(&urb->dev->dev, "recv xbuf, %d\n", ret);
962 if (ud->side == USBIP_STUB) {
963 usbip_event_add(ud, SDEV_EVENT_ERROR_TCP);
964 } else {
965 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
966 return -EPIPE;
967 }
968 }
969
970 return ret;
971}
972EXPORT_SYMBOL_GPL(usbip_recv_xbuff);
973
974
975/*-------------------------------------------------------------------------*/
976
977static int __init usbip_common_init(void)
978{
979 printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_DESC "" DRIVER_VERSION);
980
981 return 0;
982}
983
984static void __exit usbip_common_exit(void)
985{
986 return;
987}
988
989
990
991
992module_init(usbip_common_init);
993module_exit(usbip_common_exit);
994
995MODULE_AUTHOR(DRIVER_AUTHOR);
996MODULE_DESCRIPTION(DRIVER_DESC);
997MODULE_LICENSE("GPL");
diff --git a/drivers/staging/usbip/usbip_common.h b/drivers/staging/usbip/usbip_common.h
new file mode 100644
index 00000000000..b0186b76637
--- /dev/null
+++ b/drivers/staging/usbip/usbip_common.h
@@ -0,0 +1,406 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#ifndef __VHCI_COMMON_H
21#define __VHCI_COMMON_H
22
23
24#include <linux/version.h>
25#include <linux/usb.h>
26#include <asm/byteorder.h>
27#include <net/sock.h>
28
29/*-------------------------------------------------------------------------*/
30
31/*
32 * define macros to print messages
33 */
34
35/**
36 * udbg - print debug messages if CONFIG_USB_DEBUG is defined
37 * @fmt:
38 * @args:
39 */
40
41#ifdef CONFIG_USB_DEBUG
42
43#define udbg(fmt, args...) \
44 do { \
45 printk(KERN_DEBUG "%-10s:(%s,%d) %s: " fmt, \
46 (in_interrupt() ? "interrupt" : (current)->comm),\
47 __FILE__, __LINE__, __func__, ##args); \
48 } while (0)
49
50#else /* CONFIG_USB_DEBUG */
51
52#define udbg(fmt, args...) do { } while (0)
53
54#endif /* CONFIG_USB_DEBUG */
55
56
57enum {
58 usbip_debug_xmit = (1 << 0),
59 usbip_debug_sysfs = (1 << 1),
60 usbip_debug_urb = (1 << 2),
61 usbip_debug_eh = (1 << 3),
62
63 usbip_debug_stub_cmp = (1 << 8),
64 usbip_debug_stub_dev = (1 << 9),
65 usbip_debug_stub_rx = (1 << 10),
66 usbip_debug_stub_tx = (1 << 11),
67
68 usbip_debug_vhci_rh = (1 << 8),
69 usbip_debug_vhci_hc = (1 << 9),
70 usbip_debug_vhci_rx = (1 << 10),
71 usbip_debug_vhci_tx = (1 << 11),
72 usbip_debug_vhci_sysfs = (1 << 12)
73};
74
75#define dbg_flag_xmit (usbip_debug_flag & usbip_debug_xmit)
76#define dbg_flag_vhci_rh (usbip_debug_flag & usbip_debug_vhci_rh)
77#define dbg_flag_vhci_hc (usbip_debug_flag & usbip_debug_vhci_hc)
78#define dbg_flag_vhci_rx (usbip_debug_flag & usbip_debug_vhci_rx)
79#define dbg_flag_vhci_tx (usbip_debug_flag & usbip_debug_vhci_tx)
80#define dbg_flag_vhci_sysfs (usbip_debug_flag & usbip_debug_vhci_sysfs)
81#define dbg_flag_stub_rx (usbip_debug_flag & usbip_debug_stub_rx)
82#define dbg_flag_stub_tx (usbip_debug_flag & usbip_debug_stub_tx)
83
84extern unsigned long usbip_debug_flag;
85extern struct device_attribute dev_attr_usbip_debug;
86
87#define dbg_with_flag(flag, fmt, args...) \
88 do { \
89 if (flag & usbip_debug_flag) \
90 udbg(fmt , ##args); \
91 } while (0)
92
93#define dbg_sysfs(fmt, args...) \
94 dbg_with_flag(usbip_debug_sysfs, fmt , ##args)
95#define dbg_xmit(fmt, args...) \
96 dbg_with_flag(usbip_debug_xmit, fmt , ##args)
97#define dbg_urb(fmt, args...) \
98 dbg_with_flag(usbip_debug_urb, fmt , ##args)
99#define dbg_eh(fmt, args...) \
100 dbg_with_flag(usbip_debug_eh, fmt , ##args)
101
102#define dbg_vhci_rh(fmt, args...) \
103 dbg_with_flag(usbip_debug_vhci_rh, fmt , ##args)
104#define dbg_vhci_hc(fmt, args...) \
105 dbg_with_flag(usbip_debug_vhci_hc, fmt , ##args)
106#define dbg_vhci_rx(fmt, args...) \
107 dbg_with_flag(usbip_debug_vhci_rx, fmt , ##args)
108#define dbg_vhci_tx(fmt, args...) \
109 dbg_with_flag(usbip_debug_vhci_tx, fmt , ##args)
110#define dbg_vhci_sysfs(fmt, args...) \
111 dbg_with_flag(usbip_debug_vhci_sysfs, fmt , ##args)
112
113#define dbg_stub_cmp(fmt, args...) \
114 dbg_with_flag(usbip_debug_stub_cmp, fmt , ##args)
115#define dbg_stub_rx(fmt, args...) \
116 dbg_with_flag(usbip_debug_stub_rx, fmt , ##args)
117#define dbg_stub_tx(fmt, args...) \
118 dbg_with_flag(usbip_debug_stub_tx, fmt , ##args)
119
120
121/**
122 * uerr - print error messages
123 * @fmt:
124 * @args:
125 */
126#define uerr(fmt, args...) \
127 do { \
128 printk(KERN_ERR "%-10s: ***ERROR*** (%s,%d) %s: " fmt, \
129 (in_interrupt() ? "interrupt" : (current)->comm),\
130 __FILE__, __LINE__, __func__, ##args); \
131 } while (0)
132
133/**
134 * uinfo - print information messages
135 * @fmt:
136 * @args:
137 */
138#define uinfo(fmt, args...) \
139 do { \
140 printk(KERN_INFO "usbip: " fmt , ## args); \
141 } while (0)
142
143
144/*-------------------------------------------------------------------------*/
145
146/*
147 * USB/IP request headers.
148 * Currently, we define 4 request types:
149 *
150 * - CMD_SUBMIT transfers a USB request, corresponding to usb_submit_urb().
151 * (client to server)
152 * - RET_RETURN transfers the result of CMD_SUBMIT.
153 * (server to client)
154 * - CMD_UNLINK transfers an unlink request of a pending USB request.
155 * (client to server)
156 * - RET_UNLINK transfers the result of CMD_UNLINK.
157 * (server to client)
158 *
159 * Note: The below request formats are based on the USB subsystem of Linux. Its
160 * details will be defined when other implementations come.
161 *
162 *
163 */
164
165/*
166 * A basic header followed by other additional headers.
167 */
168struct usbip_header_basic {
169#define USBIP_CMD_SUBMIT 0x0001
170#define USBIP_CMD_UNLINK 0x0002
171#define USBIP_RET_SUBMIT 0x0003
172#define USBIP_RET_UNLINK 0x0004
173 __u32 command;
174
175 /* sequencial number which identifies requests.
176 * incremented per connections */
177 __u32 seqnum;
178
179 /* devid is used to specify a remote USB device uniquely instead
180 * of busnum and devnum in Linux. In the case of Linux stub_driver,
181 * this value is ((busnum << 16) | devnum) */
182 __u32 devid;
183
184#define USBIP_DIR_OUT 0
185#define USBIP_DIR_IN 1
186 __u32 direction;
187 __u32 ep; /* endpoint number */
188} __attribute__ ((packed));
189
190/*
191 * An additional header for a CMD_SUBMIT packet.
192 */
193struct usbip_header_cmd_submit {
194 /* these values are basically the same as in a URB. */
195
196 /* the same in a URB. */
197 __u32 transfer_flags;
198
199 /* set the following data size (out),
200 * or expected reading data size (in) */
201 __s32 transfer_buffer_length;
202
203 /* it is difficult for usbip to sync frames (reserved only?) */
204 __s32 start_frame;
205
206 /* the number of iso descriptors that follows this header */
207 __s32 number_of_packets;
208
209 /* the maximum time within which this request works in a host
210 * controller of a server side */
211 __s32 interval;
212
213 /* set setup packet data for a CTRL request */
214 unsigned char setup[8];
215} __attribute__ ((packed));
216
217/*
218 * An additional header for a RET_SUBMIT packet.
219 */
220struct usbip_header_ret_submit {
221 __s32 status;
222 __s32 actual_length; /* returned data length */
223 __s32 start_frame; /* ISO and INT */
224 __s32 number_of_packets; /* ISO only */
225 __s32 error_count; /* ISO only */
226} __attribute__ ((packed));
227
228/*
229 * An additional header for a CMD_UNLINK packet.
230 */
231struct usbip_header_cmd_unlink {
232 __u32 seqnum; /* URB's seqnum which will be unlinked */
233} __attribute__ ((packed));
234
235
236/*
237 * An additional header for a RET_UNLINK packet.
238 */
239struct usbip_header_ret_unlink {
240 __s32 status;
241} __attribute__ ((packed));
242
243
244/* the same as usb_iso_packet_descriptor but packed for pdu */
245struct usbip_iso_packet_descriptor {
246 __u32 offset;
247 __u32 length; /* expected length */
248 __u32 actual_length;
249 __u32 status;
250} __attribute__ ((packed));
251
252
253/*
254 * All usbip packets use a common header to keep code simple.
255 */
256struct usbip_header {
257 struct usbip_header_basic base;
258
259 union {
260 struct usbip_header_cmd_submit cmd_submit;
261 struct usbip_header_ret_submit ret_submit;
262 struct usbip_header_cmd_unlink cmd_unlink;
263 struct usbip_header_ret_unlink ret_unlink;
264 } u;
265} __attribute__ ((packed));
266
267
268
269
270/*-------------------------------------------------------------------------*/
271
272
273int usbip_xmit(int, struct socket *, char *, int, int);
274int usbip_sendmsg(struct socket *, struct msghdr *, int);
275
276
277static inline int interface_to_busnum(struct usb_interface *interface)
278{
279 struct usb_device *udev = interface_to_usbdev(interface);
280 return udev->bus->busnum;
281}
282
283static inline int interface_to_devnum(struct usb_interface *interface)
284{
285 struct usb_device *udev = interface_to_usbdev(interface);
286 return udev->devnum;
287}
288
289static inline int interface_to_infnum(struct usb_interface *interface)
290{
291 return interface->cur_altsetting->desc.bInterfaceNumber;
292}
293
294#if 0
295int setnodelay(struct socket *);
296int setquickack(struct socket *);
297int setkeepalive(struct socket *socket);
298void setreuse(struct socket *);
299#endif
300
301struct socket *sockfd_to_socket(unsigned int);
302int set_sockaddr(struct socket *socket, struct sockaddr_storage *ss);
303
304void usbip_dump_urb(struct urb *purb);
305void usbip_dump_header(struct usbip_header *pdu);
306
307
308struct usbip_device;
309
310struct usbip_task {
311 struct task_struct *thread;
312 struct completion thread_done;
313 char *name;
314 void (*loop_ops)(struct usbip_task *);
315};
316
317enum usbip_side {
318 USBIP_VHCI,
319 USBIP_STUB,
320};
321
322enum usbip_status {
323 /* sdev is available. */
324 SDEV_ST_AVAILABLE = 0x01,
325 /* sdev is now used. */
326 SDEV_ST_USED,
327 /* sdev is unusable because of a fatal error. */
328 SDEV_ST_ERROR,
329
330 /* vdev does not connect a remote device. */
331 VDEV_ST_NULL,
332 /* vdev is used, but the USB address is not assigned yet */
333 VDEV_ST_NOTASSIGNED,
334 VDEV_ST_USED,
335 VDEV_ST_ERROR
336};
337
338/* a common structure for stub_device and vhci_device */
339struct usbip_device {
340 enum usbip_side side;
341
342 enum usbip_status status;
343
344 /* lock for status */
345 spinlock_t lock;
346
347 struct socket *tcp_socket;
348
349 struct usbip_task tcp_rx;
350 struct usbip_task tcp_tx;
351
352 /* event handler */
353#define USBIP_EH_SHUTDOWN (1 << 0)
354#define USBIP_EH_BYE (1 << 1)
355#define USBIP_EH_RESET (1 << 2)
356#define USBIP_EH_UNUSABLE (1 << 3)
357
358#define SDEV_EVENT_REMOVED (USBIP_EH_SHUTDOWN | USBIP_EH_RESET | USBIP_EH_BYE)
359#define SDEV_EVENT_DOWN (USBIP_EH_SHUTDOWN | USBIP_EH_RESET)
360#define SDEV_EVENT_ERROR_TCP (USBIP_EH_SHUTDOWN | USBIP_EH_RESET)
361#define SDEV_EVENT_ERROR_SUBMIT (USBIP_EH_SHUTDOWN | USBIP_EH_RESET)
362#define SDEV_EVENT_ERROR_MALLOC (USBIP_EH_SHUTDOWN | USBIP_EH_UNUSABLE)
363
364#define VDEV_EVENT_REMOVED (USBIP_EH_SHUTDOWN | USBIP_EH_BYE)
365#define VDEV_EVENT_DOWN (USBIP_EH_SHUTDOWN | USBIP_EH_RESET)
366#define VDEV_EVENT_ERROR_TCP (USBIP_EH_SHUTDOWN | USBIP_EH_RESET)
367#define VDEV_EVENT_ERROR_MALLOC (USBIP_EH_SHUTDOWN | USBIP_EH_UNUSABLE)
368
369 unsigned long event;
370 struct usbip_task eh;
371 wait_queue_head_t eh_waitq;
372
373 struct eh_ops {
374 void (*shutdown)(struct usbip_device *);
375 void (*reset)(struct usbip_device *);
376 void (*unusable)(struct usbip_device *);
377 } eh_ops;
378};
379
380
381void usbip_task_init(struct usbip_task *ut, char *,
382 void (*loop_ops)(struct usbip_task *));
383
384void usbip_start_threads(struct usbip_device *ud);
385void usbip_stop_threads(struct usbip_device *ud);
386int usbip_thread(void *param);
387
388void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd,
389 int pack);
390
391void usbip_header_correct_endian(struct usbip_header *pdu, int send);
392/* some members of urb must be substituted before. */
393int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb);
394/* some members of urb must be substituted before. */
395int usbip_recv_iso(struct usbip_device *ud, struct urb *urb);
396void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen);
397
398
399/* usbip_event.c */
400void usbip_start_eh(struct usbip_device *ud);
401void usbip_stop_eh(struct usbip_device *ud);
402void usbip_event_add(struct usbip_device *ud, unsigned long event);
403int usbip_event_happend(struct usbip_device *ud);
404
405
406#endif
diff --git a/drivers/staging/usbip/usbip_event.c b/drivers/staging/usbip/usbip_event.c
new file mode 100644
index 00000000000..4318553ab20
--- /dev/null
+++ b/drivers/staging/usbip/usbip_event.c
@@ -0,0 +1,141 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21
22static int event_handler(struct usbip_device *ud)
23{
24 dbg_eh("enter\n");
25
26 /*
27 * Events are handled by only this thread.
28 */
29 while (usbip_event_happend(ud)) {
30 dbg_eh("pending event %lx\n", ud->event);
31
32 /*
33 * NOTE: shutdown must come first.
34 * Shutdown the device.
35 */
36 if (ud->event & USBIP_EH_SHUTDOWN) {
37 ud->eh_ops.shutdown(ud);
38
39 ud->event &= ~USBIP_EH_SHUTDOWN;
40
41 break;
42 }
43
44 /* Stop the error handler. */
45 if (ud->event & USBIP_EH_BYE)
46 return -1;
47
48 /* Reset the device. */
49 if (ud->event & USBIP_EH_RESET) {
50 ud->eh_ops.reset(ud);
51
52 ud->event &= ~USBIP_EH_RESET;
53
54 break;
55 }
56
57 /* Mark the device as unusable. */
58 if (ud->event & USBIP_EH_UNUSABLE) {
59 ud->eh_ops.unusable(ud);
60
61 ud->event &= ~USBIP_EH_UNUSABLE;
62
63 break;
64 }
65
66 /* NOTREACHED */
67 printk(KERN_ERR "%s: unknown event\n", __func__);
68 return -1;
69 }
70
71 return 0;
72}
73
74static void event_handler_loop(struct usbip_task *ut)
75{
76 struct usbip_device *ud = container_of(ut, struct usbip_device, eh);
77
78 while (1) {
79 if (signal_pending(current)) {
80 dbg_eh("signal catched!\n");
81 break;
82 }
83
84 if (event_handler(ud) < 0)
85 break;
86
87 wait_event_interruptible(ud->eh_waitq, usbip_event_happend(ud));
88 dbg_eh("wakeup\n");
89 }
90}
91
92void usbip_start_eh(struct usbip_device *ud)
93{
94 struct usbip_task *eh = &ud->eh;
95
96 init_waitqueue_head(&ud->eh_waitq);
97 ud->event = 0;
98
99 usbip_task_init(eh, "usbip_eh", event_handler_loop);
100
101 kernel_thread(usbip_thread, (void *)eh, 0);
102
103 wait_for_completion(&eh->thread_done);
104}
105EXPORT_SYMBOL_GPL(usbip_start_eh);
106
107void usbip_stop_eh(struct usbip_device *ud)
108{
109 struct usbip_task *eh = &ud->eh;
110
111 wait_for_completion(&eh->thread_done);
112 dbg_eh("usbip_eh has finished\n");
113}
114EXPORT_SYMBOL_GPL(usbip_stop_eh);
115
116void usbip_event_add(struct usbip_device *ud, unsigned long event)
117{
118 spin_lock(&ud->lock);
119
120 ud->event |= event;
121
122 wake_up(&ud->eh_waitq);
123
124 spin_unlock(&ud->lock);
125}
126EXPORT_SYMBOL_GPL(usbip_event_add);
127
128int usbip_event_happend(struct usbip_device *ud)
129{
130 int happend = 0;
131
132 spin_lock(&ud->lock);
133
134 if (ud->event != 0)
135 happend = 1;
136
137 spin_unlock(&ud->lock);
138
139 return happend;
140}
141EXPORT_SYMBOL_GPL(usbip_event_happend);
diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h
new file mode 100644
index 00000000000..5e375173bbc
--- /dev/null
+++ b/drivers/staging/usbip/vhci.h
@@ -0,0 +1,142 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include <linux/platform_device.h>
21#include "../../usb/core/hcd.h"
22
23
24struct vhci_device {
25 struct usb_device *udev;
26
27 /*
28 * devid specifies a remote usb device uniquely instead
29 * of combination of busnum and devnum.
30 */
31 __u32 devid;
32
33 /* speed of a remote device */
34 enum usb_device_speed speed;
35
36 /* vhci root-hub port to which this device is attached */
37 __u32 rhport;
38
39 struct usbip_device ud;
40
41
42 /* lock for the below link lists */
43 spinlock_t priv_lock;
44
45 /* vhci_priv is linked to one of them. */
46 struct list_head priv_tx;
47 struct list_head priv_rx;
48
49 /* vhci_unlink is linked to one of them */
50 struct list_head unlink_tx;
51 struct list_head unlink_rx;
52
53 /* vhci_tx thread sleeps for this queue */
54 wait_queue_head_t waitq_tx;
55};
56
57
58/* urb->hcpriv, use container_of() */
59struct vhci_priv {
60 unsigned long seqnum;
61 struct list_head list;
62
63 struct vhci_device *vdev;
64 struct urb *urb;
65};
66
67
68struct vhci_unlink {
69 /* seqnum of this request */
70 unsigned long seqnum;
71
72 struct list_head list;
73
74 /* seqnum of the unlink target */
75 unsigned long unlink_seqnum;
76};
77
78/*
79 * The number of ports is less than 16 ?
80 * USB_MAXCHILDREN is statically defined to 16 in usb.h. Its maximum value
81 * would be 31 because the event_bits[1] of struct usb_hub is defined as
82 * unsigned long in hub.h
83 */
84#define VHCI_NPORTS 8
85
86/* for usb_bus.hcpriv */
87struct vhci_hcd {
88 spinlock_t lock;
89
90 u32 port_status[VHCI_NPORTS];
91
92 unsigned resuming:1;
93 unsigned long re_timeout;
94
95 atomic_t seqnum;
96
97 /*
98 * NOTE:
99 * wIndex shows the port number and begins from 1.
100 * But, the index of this array begins from 0.
101 */
102 struct vhci_device vdev[VHCI_NPORTS];
103
104 /* vhci_device which has not been assiged its address yet */
105 int pending_port;
106};
107
108
109extern struct vhci_hcd *the_controller;
110extern struct attribute_group dev_attr_group;
111
112
113/*-------------------------------------------------------------------------*/
114/* prototype declaration */
115
116/* vhci_hcd.c */
117void rh_port_connect(int rhport, enum usb_device_speed speed);
118void rh_port_disconnect(int rhport);
119void vhci_rx_loop(struct usbip_task *ut);
120void vhci_tx_loop(struct usbip_task *ut);
121
122#define hardware (&the_controller->pdev.dev)
123
124static inline struct vhci_device *port_to_vdev(__u32 port)
125{
126 return &the_controller->vdev[port];
127}
128
129static inline struct vhci_hcd *hcd_to_vhci(struct usb_hcd *hcd)
130{
131 return (struct vhci_hcd *) (hcd->hcd_priv);
132}
133
134static inline struct usb_hcd *vhci_to_hcd(struct vhci_hcd *vhci)
135{
136 return container_of((void *) vhci, struct usb_hcd, hcd_priv);
137}
138
139static inline struct device *vhci_dev(struct vhci_hcd *vhci)
140{
141 return vhci_to_hcd(vhci)->self.controller;
142}
diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c
new file mode 100644
index 00000000000..5b5a2e348ec
--- /dev/null
+++ b/drivers/staging/usbip/vhci_hcd.c
@@ -0,0 +1,1275 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20
21#include "usbip_common.h"
22#include "vhci.h"
23
24#define DRIVER_VERSION "1.0"
25#define DRIVER_AUTHOR "Takahiro Hirofuchi"
26#define DRIVER_DESC "Virtual Host Controller Interface Driver for USB/IP"
27#define DRIVER_LICENCE "GPL"
28MODULE_AUTHOR(DRIVER_AUTHOR);
29MODULE_DESCRIPTION(DRIVER_DESC);
30MODULE_LICENSE(DRIVER_LICENCE);
31
32
33
34/*
35 * TODO
36 * - update root hub emulation
37 * - move the emulation code to userland ?
38 * porting to other operating systems
39 * minimize kernel code
40 * - add suspend/resume code
41 * - clean up everything
42 */
43
44
45/* See usb gadget dummy hcd */
46
47
48static int vhci_hub_status(struct usb_hcd *hcd, char *buff);
49static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
50 u16 wIndex, char *buff, u16 wLength);
51static int vhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb,
52 gfp_t mem_flags);
53static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status);
54static int vhci_start(struct usb_hcd *vhci_hcd);
55static void vhci_stop(struct usb_hcd *hcd);
56static int vhci_get_frame_number(struct usb_hcd *hcd);
57
58static const char driver_name[] = "vhci_hcd";
59static const char driver_desc[] = "USB/IP Virtual Host Contoroller";
60
61struct vhci_hcd *the_controller;
62
63static const char *bit_desc[] = {
64 "CONNECTION", /*0*/
65 "ENABLE", /*1*/
66 "SUSPEND", /*2*/
67 "OVER_CURRENT", /*3*/
68 "RESET", /*4*/
69 "R5", /*5*/
70 "R6", /*6*/
71 "R7", /*7*/
72 "POWER", /*8*/
73 "LOWSPEED", /*9*/
74 "HIGHSPEED", /*10*/
75 "PORT_TEST", /*11*/
76 "INDICATOR", /*12*/
77 "R13", /*13*/
78 "R14", /*14*/
79 "R15", /*15*/
80 "C_CONNECTION", /*16*/
81 "C_ENABLE", /*17*/
82 "C_SUSPEND", /*18*/
83 "C_OVER_CURRENT", /*19*/
84 "C_RESET", /*20*/
85 "R21", /*21*/
86 "R22", /*22*/
87 "R23", /*23*/
88 "R24", /*24*/
89 "R25", /*25*/
90 "R26", /*26*/
91 "R27", /*27*/
92 "R28", /*28*/
93 "R29", /*29*/
94 "R30", /*30*/
95 "R31", /*31*/
96};
97
98
99static void dump_port_status(u32 status)
100{
101 int i = 0;
102
103 printk(KERN_DEBUG "status %08x:", status);
104 for (i = 0; i < 32; i++) {
105 if (status & (1 << i))
106 printk(" %s", bit_desc[i]);
107 }
108
109 printk("\n");
110}
111
112
113
114void rh_port_connect(int rhport, enum usb_device_speed speed)
115{
116 unsigned long flags;
117
118 dbg_vhci_rh("rh_port_connect %d\n", rhport);
119
120 spin_lock_irqsave(&the_controller->lock, flags);
121
122 the_controller->port_status[rhport] |= USB_PORT_STAT_CONNECTION
123 | (1 << USB_PORT_FEAT_C_CONNECTION);
124
125 switch (speed) {
126 case USB_SPEED_HIGH:
127 the_controller->port_status[rhport] |= USB_PORT_STAT_HIGH_SPEED;
128 break;
129 case USB_SPEED_LOW:
130 the_controller->port_status[rhport] |= USB_PORT_STAT_LOW_SPEED;
131 break;
132 default:
133 break;
134 }
135
136 /* spin_lock(&the_controller->vdev[rhport].ud.lock);
137 * the_controller->vdev[rhport].ud.status = VDEV_CONNECT;
138 * spin_unlock(&the_controller->vdev[rhport].ud.lock); */
139
140 the_controller->pending_port = rhport;
141
142 spin_unlock_irqrestore(&the_controller->lock, flags);
143
144 usb_hcd_poll_rh_status(vhci_to_hcd(the_controller));
145}
146
147void rh_port_disconnect(int rhport)
148{
149 unsigned long flags;
150
151 dbg_vhci_rh("rh_port_disconnect %d\n", rhport);
152
153 spin_lock_irqsave(&the_controller->lock, flags);
154 /* stop_activity(dum, driver); */
155 the_controller->port_status[rhport] &= ~USB_PORT_STAT_CONNECTION;
156 the_controller->port_status[rhport] |=
157 (1 << USB_PORT_FEAT_C_CONNECTION);
158
159
160 /* not yet complete the disconnection
161 * spin_lock(&vdev->ud.lock);
162 * vdev->ud.status = VHC_ST_DISCONNECT;
163 * spin_unlock(&vdev->ud.lock); */
164
165 spin_unlock_irqrestore(&the_controller->lock, flags);
166}
167
168
169
170/*----------------------------------------------------------------------*/
171
172#define PORT_C_MASK \
173 ((USB_PORT_STAT_C_CONNECTION \
174 | USB_PORT_STAT_C_ENABLE \
175 | USB_PORT_STAT_C_SUSPEND \
176 | USB_PORT_STAT_C_OVERCURRENT \
177 | USB_PORT_STAT_C_RESET) << 16)
178
179/*
180 * This function is almostly the same as dummy_hcd.c:dummy_hub_status() without
181 * suspend/resume support. But, it is modified to provide multiple ports.
182 *
183 * @buf: a bitmap to show which port status has been changed.
184 * bit 0: reserved or used for another purpose?
185 * bit 1: the status of port 0 has been changed.
186 * bit 2: the status of port 1 has been changed.
187 * ...
188 * bit 7: the status of port 6 has been changed.
189 * bit 8: the status of port 7 has been changed.
190 * ...
191 * bit 15: the status of port 14 has been changed.
192 *
193 * So, the maximum number of ports is 31 ( port 0 to port 30) ?
194 *
195 * The return value is the actual transfered length in byte. If nothing has
196 * been changed, return 0. In the case that the number of ports is less than or
197 * equal to 6 (VHCI_NPORTS==7), return 1.
198 *
199 */
200static int vhci_hub_status(struct usb_hcd *hcd, char *buf)
201{
202 struct vhci_hcd *vhci;
203 unsigned long flags;
204 int retval = 0;
205
206 /* the enough buffer is allocated according to USB_MAXCHILDREN */
207 unsigned long *event_bits = (unsigned long *) buf;
208 int rhport;
209 int changed = 0;
210
211
212 *event_bits = 0;
213
214 vhci = hcd_to_vhci(hcd);
215
216 spin_lock_irqsave(&vhci->lock, flags);
217 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) {
218 dbg_vhci_rh("hw accessible flag in on?\n");
219 goto done;
220 }
221
222 /* check pseudo status register for each port */
223 for (rhport = 0; rhport < VHCI_NPORTS; rhport++) {
224 if ((vhci->port_status[rhport] & PORT_C_MASK)) {
225 /* The status of a port has been changed, */
226 dbg_vhci_rh("port %d is changed\n", rhport);
227
228 *event_bits |= 1 << (rhport + 1);
229 changed = 1;
230 }
231 }
232
233 uinfo("changed %d\n", changed);
234
235 if (hcd->state == HC_STATE_SUSPENDED)
236 usb_hcd_resume_root_hub(hcd);
237
238 if (changed)
239 retval = 1 + (VHCI_NPORTS / 8);
240 else
241 retval = 0;
242
243done:
244 spin_unlock_irqrestore(&vhci->lock, flags);
245 return retval;
246}
247
248/* See hub_configure in hub.c */
249static inline void hub_descriptor(struct usb_hub_descriptor *desc)
250{
251 memset(desc, 0, sizeof(*desc));
252 desc->bDescriptorType = 0x29;
253 desc->bDescLength = 9;
254 desc->wHubCharacteristics = (__force __u16)
255 (__constant_cpu_to_le16(0x0001));
256 desc->bNbrPorts = VHCI_NPORTS;
257 desc->bitmap[0] = 0xff;
258 desc->bitmap[1] = 0xff;
259}
260
261static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
262 u16 wIndex, char *buf, u16 wLength)
263{
264 struct vhci_hcd *dum;
265 int retval = 0;
266 unsigned long flags;
267 int rhport;
268
269 u32 prev_port_status[VHCI_NPORTS];
270
271 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))
272 return -ETIMEDOUT;
273
274 /*
275 * NOTE:
276 * wIndex shows the port number and begins from 1.
277 */
278 dbg_vhci_rh("typeReq %x wValue %x wIndex %x\n", typeReq, wValue,
279 wIndex);
280 if (wIndex > VHCI_NPORTS)
281 printk(KERN_ERR "%s: invalid port number %d\n", __func__, wIndex);
282 rhport = ((__u8)(wIndex & 0x00ff)) - 1;
283
284 dum = hcd_to_vhci(hcd);
285
286 spin_lock_irqsave(&dum->lock, flags);
287
288 /* store old status and compare now and old later */
289 if (dbg_flag_vhci_rh) {
290 int i = 0;
291 for (i = 0; i < VHCI_NPORTS; i++)
292 prev_port_status[i] = dum->port_status[i];
293 }
294
295 switch (typeReq) {
296 case ClearHubFeature:
297 dbg_vhci_rh(" ClearHubFeature\n");
298 break;
299 case ClearPortFeature:
300 switch (wValue) {
301 case USB_PORT_FEAT_SUSPEND:
302 if (dum->port_status[rhport] & USB_PORT_STAT_SUSPEND) {
303 /* 20msec signaling */
304 dum->resuming = 1;
305 dum->re_timeout =
306 jiffies + msecs_to_jiffies(20);
307 }
308 break;
309 case USB_PORT_FEAT_POWER:
310 dbg_vhci_rh(" ClearPortFeature: USB_PORT_FEAT_POWER\n");
311 dum->port_status[rhport] = 0;
312 /* dum->address = 0; */
313 /* dum->hdev = 0; */
314 dum->resuming = 0;
315 break;
316 case USB_PORT_FEAT_C_RESET:
317 dbg_vhci_rh(" ClearPortFeature: "
318 "USB_PORT_FEAT_C_RESET\n");
319 switch (dum->vdev[rhport].speed) {
320 case USB_SPEED_HIGH:
321 dum->port_status[rhport] |=
322 USB_PORT_STAT_HIGH_SPEED;
323 break;
324 case USB_SPEED_LOW:
325 dum->port_status[rhport] |=
326 USB_PORT_STAT_LOW_SPEED;
327 break;
328 default:
329 break;
330 }
331 default:
332 dbg_vhci_rh(" ClearPortFeature: default %x\n", wValue);
333 dum->port_status[rhport] &= ~(1 << wValue);
334 }
335 break;
336 case GetHubDescriptor:
337 dbg_vhci_rh(" GetHubDescriptor\n");
338 hub_descriptor((struct usb_hub_descriptor *) buf);
339 break;
340 case GetHubStatus:
341 dbg_vhci_rh(" GetHubStatus\n");
342 *(__le32 *) buf = __constant_cpu_to_le32(0);
343 break;
344 case GetPortStatus:
345 dbg_vhci_rh(" GetPortStatus port %x\n", wIndex);
346 if (wIndex > VHCI_NPORTS || wIndex < 1) {
347 printk(KERN_ERR "%s: invalid port number %d\n",
348 __func__, wIndex);
349 retval = -EPIPE;
350 }
351
352 /* we do no care of resume. */
353
354 /* whoever resets or resumes must GetPortStatus to
355 * complete it!!
356 * */
357 if (dum->resuming && time_after(jiffies, dum->re_timeout)) {
358 printk(KERN_ERR "%s: not yet\n", __func__);
359 dum->port_status[rhport] |=
360 (1 << USB_PORT_FEAT_C_SUSPEND);
361 dum->port_status[rhport] &=
362 ~(1 << USB_PORT_FEAT_SUSPEND);
363 dum->resuming = 0;
364 dum->re_timeout = 0;
365 /* if (dum->driver && dum->driver->resume) {
366 * spin_unlock (&dum->lock);
367 * dum->driver->resume (&dum->gadget);
368 * spin_lock (&dum->lock);
369 * } */
370 }
371
372 if ((dum->port_status[rhport] & (1 << USB_PORT_FEAT_RESET)) !=
373 0 && time_after(jiffies, dum->re_timeout)) {
374 dum->port_status[rhport] |=
375 (1 << USB_PORT_FEAT_C_RESET);
376 dum->port_status[rhport] &=
377 ~(1 << USB_PORT_FEAT_RESET);
378 dum->re_timeout = 0;
379
380 if (dum->vdev[rhport].ud.status ==
381 VDEV_ST_NOTASSIGNED) {
382 dbg_vhci_rh(" enable rhport %d (status %u)\n",
383 rhport,
384 dum->vdev[rhport].ud.status);
385 dum->port_status[rhport] |=
386 USB_PORT_STAT_ENABLE;
387 }
388#if 0
389 if (dum->driver) {
390
391 dum->port_status[rhport] |=
392 USB_PORT_STAT_ENABLE;
393 /* give it the best speed we agree on */
394 dum->gadget.speed = dum->driver->speed;
395 dum->gadget.ep0->maxpacket = 64;
396 switch (dum->gadget.speed) {
397 case USB_SPEED_HIGH:
398 dum->port_status[rhport] |=
399 USB_PORT_STAT_HIGH_SPEED;
400 break;
401 case USB_SPEED_LOW:
402 dum->gadget.ep0->maxpacket = 8;
403 dum->port_status[rhport] |=
404 USB_PORT_STAT_LOW_SPEED;
405 break;
406 default:
407 dum->gadget.speed = USB_SPEED_FULL;
408 break;
409 }
410 }
411#endif
412
413 }
414 ((u16 *) buf)[0] = cpu_to_le16(dum->port_status[rhport]);
415 ((u16 *) buf)[1] =
416 cpu_to_le16(dum->port_status[rhport] >> 16);
417
418 dbg_vhci_rh(" GetPortStatus bye %x %x\n", ((u16 *)buf)[0],
419 ((u16 *)buf)[1]);
420 break;
421 case SetHubFeature:
422 dbg_vhci_rh(" SetHubFeature\n");
423 retval = -EPIPE;
424 break;
425 case SetPortFeature:
426 switch (wValue) {
427 case USB_PORT_FEAT_SUSPEND:
428 dbg_vhci_rh(" SetPortFeature: "
429 "USB_PORT_FEAT_SUSPEND\n");
430 printk(KERN_ERR "%s: not yet\n", __func__);
431#if 0
432 dum->port_status[rhport] |=
433 (1 << USB_PORT_FEAT_SUSPEND);
434 if (dum->driver->suspend) {
435 spin_unlock(&dum->lock);
436 dum->driver->suspend(&dum->gadget);
437 spin_lock(&dum->lock);
438 }
439#endif
440 break;
441 case USB_PORT_FEAT_RESET:
442 dbg_vhci_rh(" SetPortFeature: USB_PORT_FEAT_RESET\n");
443 /* if it's already running, disconnect first */
444 if (dum->port_status[rhport] & USB_PORT_STAT_ENABLE) {
445 dum->port_status[rhport] &=
446 ~(USB_PORT_STAT_ENABLE |
447 USB_PORT_STAT_LOW_SPEED |
448 USB_PORT_STAT_HIGH_SPEED);
449#if 0
450 if (dum->driver) {
451 dev_dbg(hardware, "disconnect\n");
452 stop_activity(dum, dum->driver);
453 }
454#endif
455
456 /* FIXME test that code path! */
457 }
458 /* 50msec reset signaling */
459 dum->re_timeout = jiffies + msecs_to_jiffies(50);
460
461 /* FALLTHROUGH */
462 default:
463 dbg_vhci_rh(" SetPortFeature: default %d\n", wValue);
464 dum->port_status[rhport] |= (1 << wValue);
465 }
466 break;
467
468 default:
469 printk(KERN_ERR "%s: default: no such request\n", __func__);
470 /* dev_dbg (hardware,
471 * "hub control req%04x v%04x i%04x l%d\n",
472 * typeReq, wValue, wIndex, wLength); */
473
474 /* "protocol stall" on error */
475 retval = -EPIPE;
476 }
477
478 if (dbg_flag_vhci_rh) {
479 printk(KERN_DEBUG "port %d\n", rhport);
480 dump_port_status(prev_port_status[rhport]);
481 dump_port_status(dum->port_status[rhport]);
482 }
483 dbg_vhci_rh(" bye\n");
484
485 spin_unlock_irqrestore(&dum->lock, flags);
486
487 return retval;
488}
489
490
491
492/*----------------------------------------------------------------------*/
493
494static struct vhci_device *get_vdev(struct usb_device *udev)
495{
496 int i;
497
498 if (!udev)
499 return NULL;
500
501 for (i = 0; i < VHCI_NPORTS; i++)
502 if (the_controller->vdev[i].udev == udev)
503 return port_to_vdev(i);
504
505 return NULL;
506}
507
508static void vhci_tx_urb(struct urb *urb)
509{
510 struct vhci_device *vdev = get_vdev(urb->dev);
511 struct vhci_priv *priv;
512 unsigned long flag;
513
514 if (!vdev) {
515 err("could not get virtual device");
516 /* BUG(); */
517 return;
518 }
519
520 spin_lock_irqsave(&vdev->priv_lock, flag);
521
522 priv = kzalloc(sizeof(struct vhci_priv), GFP_ATOMIC);
523 if (!priv) {
524 dev_err(&urb->dev->dev, "malloc vhci_priv\n");
525 spin_unlock_irqrestore(&vdev->priv_lock, flag);
526 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_MALLOC);
527 return;
528 }
529
530 priv->seqnum = atomic_inc_return(&the_controller->seqnum);
531 if (priv->seqnum == 0xffff)
532 uinfo("seqnum max\n");
533
534 priv->vdev = vdev;
535 priv->urb = urb;
536
537 urb->hcpriv = (void *) priv;
538
539
540 list_add_tail(&priv->list, &vdev->priv_tx);
541
542 wake_up(&vdev->waitq_tx);
543 spin_unlock_irqrestore(&vdev->priv_lock, flag);
544}
545
546static int vhci_urb_enqueue(struct usb_hcd *hcd, struct urb *urb,
547 gfp_t mem_flags)
548{
549 struct device *dev = &urb->dev->dev;
550 int ret = 0;
551 unsigned long flags;
552
553 dbg_vhci_hc("enter, usb_hcd %p urb %p mem_flags %d\n",
554 hcd, urb, mem_flags);
555
556 /* patch to usb_sg_init() is in 2.5.60 */
557 BUG_ON(!urb->transfer_buffer && urb->transfer_buffer_length);
558
559 spin_lock_irqsave(&the_controller->lock, flags);
560
561 /* check HC is active or not */
562 if (!HC_IS_RUNNING(hcd->state)) {
563 dev_err(dev, "HC is not running\n");
564 spin_unlock_irqrestore(&the_controller->lock, flags);
565 return -ENODEV;
566 }
567
568 if (urb->status != -EINPROGRESS) {
569 dev_err(dev, "URB already unlinked!, status %d\n", urb->status);
570 spin_unlock_irqrestore(&the_controller->lock, flags);
571 return urb->status;
572 }
573
574 ret = usb_hcd_link_urb_to_ep(hcd, urb);
575 if (ret)
576 goto no_need_unlink;
577
578 /*
579 * The enumelation process is as follows;
580 *
581 * 1. Get_Descriptor request to DevAddrs(0) EndPoint(0)
582 * to get max packet length of default pipe
583 *
584 * 2. Set_Address request to DevAddr(0) EndPoint(0)
585 *
586 */
587
588 if (usb_pipedevice(urb->pipe) == 0) {
589 __u8 type = usb_pipetype(urb->pipe);
590 struct usb_ctrlrequest *ctrlreq =
591 (struct usb_ctrlrequest *) urb->setup_packet;
592 struct vhci_device *vdev =
593 port_to_vdev(the_controller->pending_port);
594
595 if (type != PIPE_CONTROL || !ctrlreq) {
596 dev_err(dev, "invalid request to devnum 0\n");
597 ret = EINVAL;
598 goto no_need_xmit;
599 }
600
601 switch (ctrlreq->bRequest) {
602 case USB_REQ_SET_ADDRESS:
603 /* set_address may come when a device is reset */
604 dev_info(dev, "SetAddress Request (%d) to port %d\n",
605 ctrlreq->wValue, vdev->rhport);
606
607 vdev->udev = urb->dev;
608
609 spin_lock(&vdev->ud.lock);
610 vdev->ud.status = VDEV_ST_USED;
611 spin_unlock(&vdev->ud.lock);
612
613 if (urb->status == -EINPROGRESS) {
614 /* This request is successfully completed. */
615 /* If not -EINPROGRESS, possibly unlinked. */
616 urb->status = 0;
617 }
618
619 goto no_need_xmit;
620
621 case USB_REQ_GET_DESCRIPTOR:
622 if (ctrlreq->wValue == (USB_DT_DEVICE << 8))
623 dbg_vhci_hc("Not yet?: "
624 "Get_Descriptor to device 0 "
625 "(get max pipe size)\n");
626
627 /* FIXME: reference count? (usb_get_dev()) */
628 vdev->udev = urb->dev;
629 goto out;
630
631 default:
632 /* NOT REACHED */
633 dev_err(dev, "invalid request to devnum 0 bRequest %u, "
634 "wValue %u\n", ctrlreq->bRequest,
635 ctrlreq->wValue);
636 ret = -EINVAL;
637 goto no_need_xmit;
638 }
639
640 }
641
642out:
643 vhci_tx_urb(urb);
644
645 spin_unlock_irqrestore(&the_controller->lock, flags);
646
647 return 0;
648
649no_need_xmit:
650 usb_hcd_unlink_urb_from_ep(hcd, urb);
651no_need_unlink:
652 spin_unlock_irqrestore(&the_controller->lock, flags);
653
654 usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, urb->status);
655
656 return 0;
657}
658
659/*
660 * vhci_rx gives back the urb after receiving the reply of the urb. If an
661 * unlink pdu is sent or not, vhci_rx receives a normal return pdu and gives
662 * back its urb. For the driver unlinking the urb, the content of the urb is
663 * not important, but the calling to its completion handler is important; the
664 * completion of unlinking is notified by the completion handler.
665 *
666 *
667 * CLIENT SIDE
668 *
669 * - When vhci_hcd receives RET_SUBMIT,
670 *
671 * - case 1a). the urb of the pdu is not unlinking.
672 * - normal case
673 * => just give back the urb
674 *
675 * - case 1b). the urb of the pdu is unlinking.
676 * - usbip.ko will return a reply of the unlinking request.
677 * => give back the urb now and go to case 2b).
678 *
679 * - When vhci_hcd receives RET_UNLINK,
680 *
681 * - case 2a). a submit request is still pending in vhci_hcd.
682 * - urb was really pending in usbip.ko and urb_unlink_urb() was
683 * completed there.
684 * => free a pending submit request
685 * => notify unlink completeness by giving back the urb
686 *
687 * - case 2b). a submit request is *not* pending in vhci_hcd.
688 * - urb was already given back to the core driver.
689 * => do not give back the urb
690 *
691 *
692 * SERVER SIDE
693 *
694 * - When usbip receives CMD_UNLINK,
695 *
696 * - case 3a). the urb of the unlink request is now in submission.
697 * => do usb_unlink_urb().
698 * => after the unlink is completed, send RET_UNLINK.
699 *
700 * - case 3b). the urb of the unlink request is not in submission.
701 * - may be already completed or never be received
702 * => send RET_UNLINK
703 *
704 */
705static int vhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
706{
707 unsigned long flags;
708 struct vhci_priv *priv;
709 struct vhci_device *vdev;
710
711 uinfo("vhci_hcd: dequeue a urb %p\n", urb);
712
713
714 spin_lock_irqsave(&the_controller->lock, flags);
715
716 priv = urb->hcpriv;
717 if (!priv) {
718 /* URB was never linked! or will be soon given back by
719 * vhci_rx. */
720 spin_unlock_irqrestore(&the_controller->lock, flags);
721 return 0;
722 }
723
724 {
725 int ret = 0;
726 ret = usb_hcd_check_unlink_urb(hcd, urb, status);
727 if (ret) {
728 spin_unlock_irqrestore(&the_controller->lock, flags);
729 return 0;
730 }
731 }
732
733 /* send unlink request here? */
734 vdev = priv->vdev;
735
736 if (!vdev->ud.tcp_socket) {
737 /* tcp connection is closed */
738 unsigned long flags2;
739
740 spin_lock_irqsave(&vdev->priv_lock, flags2);
741
742 uinfo("vhci_hcd: device %p seems to be disconnected\n", vdev);
743 list_del(&priv->list);
744 kfree(priv);
745 urb->hcpriv = NULL;
746
747 spin_unlock_irqrestore(&vdev->priv_lock, flags2);
748
749 } else {
750 /* tcp connection is alive */
751 unsigned long flags2;
752 struct vhci_unlink *unlink;
753
754 spin_lock_irqsave(&vdev->priv_lock, flags2);
755
756 /* setup CMD_UNLINK pdu */
757 unlink = kzalloc(sizeof(struct vhci_unlink), GFP_ATOMIC);
758 if (!unlink) {
759 uerr("malloc vhci_unlink\n");
760 spin_unlock_irqrestore(&vdev->priv_lock, flags2);
761 spin_unlock_irqrestore(&the_controller->lock, flags);
762 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_MALLOC);
763 return -ENOMEM;
764 }
765
766 unlink->seqnum = atomic_inc_return(&the_controller->seqnum);
767 if (unlink->seqnum == 0xffff)
768 uinfo("seqnum max\n");
769
770 unlink->unlink_seqnum = priv->seqnum;
771
772 uinfo("vhci_hcd: device %p seems to be still connected\n",
773 vdev);
774
775 /* send cmd_unlink and try to cancel the pending URB in the
776 * peer */
777 list_add_tail(&unlink->list, &vdev->unlink_tx);
778 wake_up(&vdev->waitq_tx);
779
780 spin_unlock_irqrestore(&vdev->priv_lock, flags2);
781 }
782
783
784 /*
785 * If tcp connection is alive, we have sent CMD_UNLINK.
786 * vhci_rx will receive RET_UNLINK and give back the URB.
787 * Otherwise, we give back it here.
788 */
789 if (!vdev->ud.tcp_socket) {
790 /* tcp connection is closed */
791 uinfo("vhci_hcd: vhci_urb_dequeue() gives back urb %p\n", urb);
792
793 usb_hcd_unlink_urb_from_ep(hcd, urb);
794
795 spin_unlock_irqrestore(&the_controller->lock, flags);
796 usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb,
797 urb->status);
798 spin_lock_irqsave(&the_controller->lock, flags);
799 }
800
801 spin_unlock_irqrestore(&the_controller->lock, flags);
802
803 dbg_vhci_hc("leave\n");
804 return 0;
805}
806
807
808static void vhci_device_unlink_cleanup(struct vhci_device *vdev)
809{
810 struct vhci_unlink *unlink, *tmp;
811
812 spin_lock(&vdev->priv_lock);
813
814 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_tx, list) {
815 list_del(&unlink->list);
816 kfree(unlink);
817 }
818
819 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_rx, list) {
820 list_del(&unlink->list);
821 kfree(unlink);
822 }
823
824 spin_unlock(&vdev->priv_lock);
825}
826
827/*
828 * The important thing is that only one context begins cleanup.
829 * This is why error handling and cleanup become simple.
830 * We do not want to consider race condition as possible.
831 */
832static void vhci_shutdown_connection(struct usbip_device *ud)
833{
834 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud);
835
836 /* need this? see stub_dev.c */
837 if (ud->tcp_socket) {
838 udbg("shutdown tcp_socket %p\n", ud->tcp_socket);
839 kernel_sock_shutdown(ud->tcp_socket, SHUT_RDWR);
840 }
841
842 usbip_stop_threads(&vdev->ud);
843 uinfo("stop threads\n");
844
845 /* active connection is closed */
846 if (vdev->ud.tcp_socket != NULL) {
847 sock_release(vdev->ud.tcp_socket);
848 vdev->ud.tcp_socket = NULL;
849 }
850 uinfo("release socket\n");
851
852 vhci_device_unlink_cleanup(vdev);
853
854 /*
855 * rh_port_disconnect() is a trigger of ...
856 * usb_disable_device():
857 * disable all the endpoints for a USB device.
858 * usb_disable_endpoint():
859 * disable endpoints. pending urbs are unlinked(dequeued).
860 *
861 * NOTE: After calling rh_port_disconnect(), the USB device drivers of a
862 * deteched device should release used urbs in a cleanup function(i.e.
863 * xxx_disconnect()). Therefore, vhci_hcd does not need to release
864 * pushed urbs and their private data in this function.
865 *
866 * NOTE: vhci_dequeue() must be considered carefully. When shutdowning
867 * a connection, vhci_shutdown_connection() expects vhci_dequeue()
868 * gives back pushed urbs and frees their private data by request of
869 * the cleanup function of a USB driver. When unlinking a urb with an
870 * active connection, vhci_dequeue() does not give back the urb which
871 * is actually given back by vhci_rx after receiving its return pdu.
872 *
873 */
874 rh_port_disconnect(vdev->rhport);
875
876 uinfo("disconnect device\n");
877}
878
879
880static void vhci_device_reset(struct usbip_device *ud)
881{
882 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud);
883
884 spin_lock(&ud->lock);
885
886 vdev->speed = 0;
887 vdev->devid = 0;
888
889 ud->tcp_socket = NULL;
890
891 ud->status = VDEV_ST_NULL;
892
893 spin_unlock(&ud->lock);
894}
895
896static void vhci_device_unusable(struct usbip_device *ud)
897{
898 spin_lock(&ud->lock);
899
900 ud->status = VDEV_ST_ERROR;
901
902 spin_unlock(&ud->lock);
903}
904
905static void vhci_device_init(struct vhci_device *vdev)
906{
907 memset(vdev, 0, sizeof(*vdev));
908
909 usbip_task_init(&vdev->ud.tcp_rx, "vhci_rx", vhci_rx_loop);
910 usbip_task_init(&vdev->ud.tcp_tx, "vhci_tx", vhci_tx_loop);
911
912 vdev->ud.side = USBIP_VHCI;
913 vdev->ud.status = VDEV_ST_NULL;
914 /* vdev->ud.lock = SPIN_LOCK_UNLOCKED; */
915 spin_lock_init(&vdev->ud.lock);
916
917 INIT_LIST_HEAD(&vdev->priv_rx);
918 INIT_LIST_HEAD(&vdev->priv_tx);
919 INIT_LIST_HEAD(&vdev->unlink_tx);
920 INIT_LIST_HEAD(&vdev->unlink_rx);
921 /* vdev->priv_lock = SPIN_LOCK_UNLOCKED; */
922 spin_lock_init(&vdev->priv_lock);
923
924 init_waitqueue_head(&vdev->waitq_tx);
925
926 vdev->ud.eh_ops.shutdown = vhci_shutdown_connection;
927 vdev->ud.eh_ops.reset = vhci_device_reset;
928 vdev->ud.eh_ops.unusable = vhci_device_unusable;
929
930 usbip_start_eh(&vdev->ud);
931}
932
933
934/*----------------------------------------------------------------------*/
935
936static int vhci_start(struct usb_hcd *hcd)
937{
938 struct vhci_hcd *vhci = hcd_to_vhci(hcd);
939 int rhport;
940 int err = 0;
941
942 dbg_vhci_hc("enter vhci_start\n");
943
944
945 /* initialize private data of usb_hcd */
946
947 for (rhport = 0; rhport < VHCI_NPORTS; rhport++) {
948 struct vhci_device *vdev = &vhci->vdev[rhport];
949 vhci_device_init(vdev);
950 vdev->rhport = rhport;
951 }
952
953 atomic_set(&vhci->seqnum, 0);
954 spin_lock_init(&vhci->lock);
955
956
957
958 hcd->power_budget = 0; /* no limit */
959 hcd->state = HC_STATE_RUNNING;
960 hcd->uses_new_polling = 1;
961
962
963 /* vhci_hcd is now ready to be controlled through sysfs */
964 err = sysfs_create_group(&vhci_dev(vhci)->kobj, &dev_attr_group);
965 if (err) {
966 uerr("create sysfs files\n");
967 return err;
968 }
969
970 return 0;
971}
972
973static void vhci_stop(struct usb_hcd *hcd)
974{
975 struct vhci_hcd *vhci = hcd_to_vhci(hcd);
976 int rhport = 0;
977
978 dbg_vhci_hc("stop VHCI controller\n");
979
980
981 /* 1. remove the userland interface of vhci_hcd */
982 sysfs_remove_group(&vhci_dev(vhci)->kobj, &dev_attr_group);
983
984 /* 2. shutdown all the ports of vhci_hcd */
985 for (rhport = 0 ; rhport < VHCI_NPORTS; rhport++) {
986 struct vhci_device *vdev = &vhci->vdev[rhport];
987
988 usbip_event_add(&vdev->ud, VDEV_EVENT_REMOVED);
989 usbip_stop_eh(&vdev->ud);
990 }
991
992
993 uinfo("vhci_stop done\n");
994}
995
996/*----------------------------------------------------------------------*/
997
998static int vhci_get_frame_number(struct usb_hcd *hcd)
999{
1000 uerr("Not yet implemented\n");
1001 return 0;
1002}
1003
1004
1005#ifdef CONFIG_PM
1006
1007/* FIXME: suspend/resume */
1008static int vhci_bus_suspend(struct usb_hcd *hcd)
1009{
1010 struct vhci_hcd *vhci = hcd_to_vhci(hcd);
1011
1012 dev_dbg(&hcd->self.root_hub->dev, "%s\n", __func__);
1013
1014 spin_lock_irq(&vhci->lock);
1015 /* vhci->rh_state = DUMMY_RH_SUSPENDED;
1016 * set_link_state(vhci); */
1017 hcd->state = HC_STATE_SUSPENDED;
1018 spin_unlock_irq(&vhci->lock);
1019
1020 return 0;
1021}
1022
1023static int vhci_bus_resume(struct usb_hcd *hcd)
1024{
1025 struct vhci_hcd *vhci = hcd_to_vhci(hcd);
1026 int rc = 0;
1027
1028 dev_dbg(&hcd->self.root_hub->dev, "%s\n", __func__);
1029
1030 spin_lock_irq(&vhci->lock);
1031 if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) {
1032 rc = -ESHUTDOWN;
1033 } else {
1034 /* vhci->rh_state = DUMMY_RH_RUNNING;
1035 * set_link_state(vhci);
1036 * if (!list_empty(&vhci->urbp_list))
1037 * mod_timer(&vhci->timer, jiffies); */
1038 hcd->state = HC_STATE_RUNNING;
1039 }
1040 spin_unlock_irq(&vhci->lock);
1041 return rc;
1042
1043 return 0;
1044}
1045
1046#else
1047
1048#define vhci_bus_suspend NULL
1049#define vhci_bus_resume NULL
1050#endif
1051
1052
1053
1054static struct hc_driver vhci_hc_driver = {
1055 .description = driver_name,
1056 .product_desc = driver_desc,
1057 .hcd_priv_size = sizeof(struct vhci_hcd),
1058
1059 .flags = HCD_USB2,
1060
1061 .start = vhci_start,
1062 .stop = vhci_stop,
1063
1064 .urb_enqueue = vhci_urb_enqueue,
1065 .urb_dequeue = vhci_urb_dequeue,
1066
1067 .get_frame_number = vhci_get_frame_number,
1068
1069 .hub_status_data = vhci_hub_status,
1070 .hub_control = vhci_hub_control,
1071 .bus_suspend = vhci_bus_suspend,
1072 .bus_resume = vhci_bus_resume,
1073};
1074
1075static int vhci_hcd_probe(struct platform_device *pdev)
1076{
1077 struct usb_hcd *hcd;
1078 int ret;
1079
1080 uinfo("proving...\n");
1081
1082 dbg_vhci_hc("name %s id %d\n", pdev->name, pdev->id);
1083
1084 /* will be removed */
1085 if (pdev->dev.dma_mask) {
1086 dev_info(&pdev->dev, "vhci_hcd DMA not supported\n");
1087 return -EINVAL;
1088 }
1089
1090 /*
1091 * Allocate and initialize hcd.
1092 * Our private data is also allocated automatically.
1093 */
1094 hcd = usb_create_hcd(&vhci_hc_driver, &pdev->dev, pdev->dev.bus_id);
1095 if (!hcd) {
1096 uerr("create hcd failed\n");
1097 return -ENOMEM;
1098 }
1099
1100
1101 /* this is private data for vhci_hcd */
1102 the_controller = hcd_to_vhci(hcd);
1103
1104 /*
1105 * Finish generic HCD structure initialization and register.
1106 * Call the driver's reset() and start() routines.
1107 */
1108 ret = usb_add_hcd(hcd, 0, 0);
1109 if (ret != 0) {
1110 uerr("usb_add_hcd failed %d\n", ret);
1111 usb_put_hcd(hcd);
1112 the_controller = NULL;
1113 return ret;
1114 }
1115
1116
1117 dbg_vhci_hc("bye\n");
1118 return 0;
1119}
1120
1121
1122static int vhci_hcd_remove(struct platform_device *pdev)
1123{
1124 struct usb_hcd *hcd;
1125
1126 hcd = platform_get_drvdata(pdev);
1127 if (!hcd)
1128 return 0;
1129
1130 /*
1131 * Disconnects the root hub,
1132 * then reverses the effects of usb_add_hcd(),
1133 * invoking the HCD's stop() methods.
1134 */
1135 usb_remove_hcd(hcd);
1136 usb_put_hcd(hcd);
1137 the_controller = NULL;
1138
1139
1140 return 0;
1141}
1142
1143
1144
1145#ifdef CONFIG_PM
1146
1147/* what should happen for USB/IP under suspend/resume? */
1148static int vhci_hcd_suspend(struct platform_device *pdev, pm_message_t state)
1149{
1150 struct usb_hcd *hcd;
1151 int rhport = 0;
1152 int connected = 0;
1153 int ret = 0;
1154
1155 dev_dbg(&pdev->dev, "%s\n", __func__);
1156
1157 hcd = platform_get_drvdata(pdev);
1158
1159 spin_lock(&the_controller->lock);
1160
1161 for (rhport = 0; rhport < VHCI_NPORTS; rhport++)
1162 if (the_controller->port_status[rhport] &
1163 USB_PORT_STAT_CONNECTION)
1164 connected += 1;
1165
1166 spin_unlock(&the_controller->lock);
1167
1168 if (connected > 0) {
1169 uinfo("We have %d active connection%s. Do not suspend.\n",
1170 connected, (connected == 1 ? "" : "s"));
1171 ret = -EBUSY;
1172 } else {
1173 uinfo("suspend vhci_hcd");
1174 clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
1175 }
1176
1177 return ret;
1178}
1179
1180static int vhci_hcd_resume(struct platform_device *pdev)
1181{
1182 struct usb_hcd *hcd;
1183
1184 dev_dbg(&pdev->dev, "%s\n", __func__);
1185
1186 hcd = platform_get_drvdata(pdev);
1187 set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
1188 usb_hcd_poll_rh_status(hcd);
1189
1190 return 0;
1191}
1192
1193#else
1194
1195#define vhci_hcd_suspend NULL
1196#define vhci_hcd_resume NULL
1197
1198#endif
1199
1200
1201static struct platform_driver vhci_driver = {
1202 .probe = vhci_hcd_probe,
1203 .remove = __devexit_p(vhci_hcd_remove),
1204 .suspend = vhci_hcd_suspend,
1205 .resume = vhci_hcd_resume,
1206 .driver = {
1207 .name = (char *) driver_name,
1208 .owner = THIS_MODULE,
1209 },
1210};
1211
1212/*----------------------------------------------------------------------*/
1213
1214/*
1215 * The VHCI 'device' is 'virtual'; not a real plug&play hardware.
1216 * We need to add this virtual device as a platform device arbitrarily:
1217 * 1. platform_device_register()
1218 */
1219static void the_pdev_release(struct device *dev)
1220{
1221 return;
1222}
1223
1224static struct platform_device the_pdev = {
1225 /* should be the same name as driver_name */
1226 .name = (char *) driver_name,
1227 .id = -1,
1228 .dev = {
1229 /* .driver = &vhci_driver, */
1230 .release = the_pdev_release,
1231 },
1232};
1233
1234static int __init vhci_init(void)
1235{
1236 int ret;
1237
1238 dbg_vhci_hc("enter\n");
1239 if (usb_disabled())
1240 return -ENODEV;
1241
1242 printk(KERN_INFO KBUILD_MODNAME ": %s, %s\n", driver_name,
1243 DRIVER_VERSION);
1244
1245 ret = platform_driver_register(&vhci_driver);
1246 if (ret < 0)
1247 goto err_driver_register;
1248
1249 ret = platform_device_register(&the_pdev);
1250 if (ret < 0)
1251 goto err_platform_device_register;
1252
1253 dbg_vhci_hc("bye\n");
1254 return ret;
1255
1256 /* error occurred */
1257err_platform_device_register:
1258 platform_driver_unregister(&vhci_driver);
1259
1260err_driver_register:
1261 dbg_vhci_hc("bye\n");
1262 return ret;
1263}
1264module_init(vhci_init);
1265
1266static void __exit vhci_cleanup(void)
1267{
1268 dbg_vhci_hc("enter\n");
1269
1270 platform_device_unregister(&the_pdev);
1271 platform_driver_unregister(&vhci_driver);
1272
1273 dbg_vhci_hc("bye\n");
1274}
1275module_exit(vhci_cleanup);
diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/staging/usbip/vhci_rx.c
new file mode 100644
index 00000000000..933ccaf50af
--- /dev/null
+++ b/drivers/staging/usbip/vhci_rx.c
@@ -0,0 +1,251 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21#include "vhci.h"
22
23
24/* get URB from transmitted urb queue */
25static struct urb *pickup_urb_and_free_priv(struct vhci_device *vdev,
26 __u32 seqnum)
27{
28 struct vhci_priv *priv, *tmp;
29 struct urb *urb = NULL;
30 int status;
31
32 spin_lock(&vdev->priv_lock);
33
34 list_for_each_entry_safe(priv, tmp, &vdev->priv_rx, list) {
35 if (priv->seqnum == seqnum) {
36 urb = priv->urb;
37 status = urb->status;
38
39 dbg_vhci_rx("find urb %p vurb %p seqnum %u\n",
40 urb, priv, seqnum);
41
42 /* TODO: fix logic here to improve indent situtation */
43 if (status != -EINPROGRESS) {
44 if (status == -ENOENT ||
45 status == -ECONNRESET)
46 dev_info(&urb->dev->dev,
47 "urb %p was unlinked "
48 "%ssynchronuously.\n", urb,
49 status == -ENOENT ? "" : "a");
50 else
51 dev_info(&urb->dev->dev,
52 "urb %p may be in a error, "
53 "status %d\n", urb, status);
54 }
55
56 list_del(&priv->list);
57 kfree(priv);
58 urb->hcpriv = NULL;
59
60 break;
61 }
62 }
63
64 spin_unlock(&vdev->priv_lock);
65
66 return urb;
67}
68
69static void vhci_recv_ret_submit(struct vhci_device *vdev,
70 struct usbip_header *pdu)
71{
72 struct usbip_device *ud = &vdev->ud;
73 struct urb *urb;
74
75
76 urb = pickup_urb_and_free_priv(vdev, pdu->base.seqnum);
77
78
79 if (!urb) {
80 uerr("cannot find a urb of seqnum %u\n", pdu->base.seqnum);
81 uinfo("max seqnum %d\n", atomic_read(&the_controller->seqnum));
82 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
83 return;
84 }
85
86
87 /* unpack the pdu to a urb */
88 usbip_pack_pdu(pdu, urb, USBIP_RET_SUBMIT, 0);
89
90
91 /* recv transfer buffer */
92 if (usbip_recv_xbuff(ud, urb) < 0)
93 return;
94
95
96 /* recv iso_packet_descriptor */
97 if (usbip_recv_iso(ud, urb) < 0)
98 return;
99
100
101 if (dbg_flag_vhci_rx)
102 usbip_dump_urb(urb);
103
104
105 dbg_vhci_rx("now giveback urb %p\n", urb);
106
107 spin_lock(&the_controller->lock);
108 usb_hcd_unlink_urb_from_ep(vhci_to_hcd(the_controller), urb);
109 spin_unlock(&the_controller->lock);
110
111 usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, urb->status);
112
113
114 dbg_vhci_rx("Leave\n");
115
116 return;
117}
118
119
120static struct vhci_unlink *dequeue_pending_unlink(struct vhci_device *vdev,
121 struct usbip_header *pdu)
122{
123 struct vhci_unlink *unlink, *tmp;
124
125 spin_lock(&vdev->priv_lock);
126
127 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_rx, list) {
128 uinfo("unlink->seqnum %lu\n", unlink->seqnum);
129 if (unlink->seqnum == pdu->base.seqnum) {
130 dbg_vhci_rx("found pending unlink, %lu\n",
131 unlink->seqnum);
132 list_del(&unlink->list);
133
134 spin_unlock(&vdev->priv_lock);
135 return unlink;
136 }
137 }
138
139 spin_unlock(&vdev->priv_lock);
140
141 return NULL;
142}
143
144
145static void vhci_recv_ret_unlink(struct vhci_device *vdev,
146 struct usbip_header *pdu)
147{
148 struct vhci_unlink *unlink;
149 struct urb *urb;
150
151 usbip_dump_header(pdu);
152
153 unlink = dequeue_pending_unlink(vdev, pdu);
154 if (!unlink) {
155 uinfo("cannot find the pending unlink %u\n", pdu->base.seqnum);
156 return;
157 }
158
159 urb = pickup_urb_and_free_priv(vdev, unlink->unlink_seqnum);
160 if (!urb) {
161 /*
162 * I get the result of a unlink request. But, it seems that I
163 * already received the result of its submit result and gave
164 * back the URB.
165 */
166 uinfo("the urb (seqnum %d) was already given backed\n",
167 pdu->base.seqnum);
168 } else {
169 dbg_vhci_rx("now giveback urb %p\n", urb);
170
171 /* If unlink is succeed, status is -ECONNRESET */
172 urb->status = pdu->u.ret_unlink.status;
173 uinfo("%d\n", urb->status);
174
175 spin_lock(&the_controller->lock);
176 usb_hcd_unlink_urb_from_ep(vhci_to_hcd(the_controller), urb);
177 spin_unlock(&the_controller->lock);
178
179 usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb,
180 urb->status);
181 }
182
183 kfree(unlink);
184
185 return;
186}
187
188/* recv a pdu */
189static void vhci_rx_pdu(struct usbip_device *ud)
190{
191 int ret;
192 struct usbip_header pdu;
193 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud);
194
195
196 dbg_vhci_rx("Enter\n");
197
198 memset(&pdu, 0, sizeof(pdu));
199
200
201 /* 1. receive a pdu header */
202 ret = usbip_xmit(0, ud->tcp_socket, (char *) &pdu, sizeof(pdu), 0);
203 if (ret != sizeof(pdu)) {
204 uerr("receiving pdu failed! size is %d, should be %d\n",
205 ret, sizeof(pdu));
206 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
207 return;
208 }
209
210 usbip_header_correct_endian(&pdu, 0);
211
212 if (dbg_flag_vhci_rx)
213 usbip_dump_header(&pdu);
214
215 switch (pdu.base.command) {
216 case USBIP_RET_SUBMIT:
217 vhci_recv_ret_submit(vdev, &pdu);
218 break;
219 case USBIP_RET_UNLINK:
220 vhci_recv_ret_unlink(vdev, &pdu);
221 break;
222 default:
223 /* NOTREACHED */
224 uerr("unknown pdu %u\n", pdu.base.command);
225 usbip_dump_header(&pdu);
226 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP);
227 }
228}
229
230
231/*-------------------------------------------------------------------------*/
232
233void vhci_rx_loop(struct usbip_task *ut)
234{
235 struct usbip_device *ud = container_of(ut, struct usbip_device, tcp_rx);
236
237
238 while (1) {
239 if (signal_pending(current)) {
240 dbg_vhci_rx("signal catched!\n");
241 break;
242 }
243
244
245 if (usbip_event_happend(ud))
246 break;
247
248 vhci_rx_pdu(ud);
249 }
250}
251
diff --git a/drivers/staging/usbip/vhci_sysfs.c b/drivers/staging/usbip/vhci_sysfs.c
new file mode 100644
index 00000000000..24c2851a8f8
--- /dev/null
+++ b/drivers/staging/usbip/vhci_sysfs.c
@@ -0,0 +1,250 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21#include "vhci.h"
22
23#include <linux/in.h>
24
25/* TODO: refine locking ?*/
26
27/* Sysfs entry to show port status */
28static ssize_t show_status(struct device *dev, struct device_attribute *attr,
29 char *out)
30{
31 char *s = out;
32 int i = 0;
33
34 if (!the_controller || !out)
35 BUG();
36
37 spin_lock(&the_controller->lock);
38
39 /*
40 * output example:
41 * prt sta spd dev socket local_busid
42 * 000 004 000 000 c5a7bb80 1-2.3
43 * 001 004 000 000 d8cee980 2-3.4
44 *
45 * IP address can be retrieved from a socket pointer address by looking
46 * up /proc/net/{tcp,tcp6}. Also, a userland program may remember a
47 * port number and its peer IP address.
48 */
49 out += sprintf(out, "prt sta spd bus dev socket "
50 "local_busid\n");
51
52 for (i = 0; i < VHCI_NPORTS; i++) {
53 struct vhci_device *vdev = port_to_vdev(i);
54
55 spin_lock(&vdev->ud.lock);
56
57 out += sprintf(out, "%03u %03u ", i, vdev->ud.status);
58
59 if (vdev->ud.status == VDEV_ST_USED) {
60 out += sprintf(out, "%03u %08x ",
61 vdev->speed, vdev->devid);
62 out += sprintf(out, "%16p ", vdev->ud.tcp_socket);
63 out += sprintf(out, "%s", vdev->udev->dev.bus_id);
64
65 } else
66 out += sprintf(out, "000 000 000 0000000000000000 0-0");
67
68 out += sprintf(out, "\n");
69
70 spin_unlock(&vdev->ud.lock);
71 }
72
73 spin_unlock(&the_controller->lock);
74
75 return out - s;
76}
77static DEVICE_ATTR(status, S_IRUGO, show_status, NULL);
78
79/* Sysfs entry to shutdown a virtual connection */
80static int vhci_port_disconnect(__u32 rhport)
81{
82 struct vhci_device *vdev;
83
84 dbg_vhci_sysfs("enter\n");
85
86 /* lock */
87 spin_lock(&the_controller->lock);
88
89 vdev = port_to_vdev(rhport);
90
91 spin_lock(&vdev->ud.lock);
92 if (vdev->ud.status == VDEV_ST_NULL) {
93 uerr("not connected %d\n", vdev->ud.status);
94
95 /* unlock */
96 spin_unlock(&vdev->ud.lock);
97 spin_unlock(&the_controller->lock);
98
99 return -EINVAL;
100 }
101
102 /* unlock */
103 spin_unlock(&vdev->ud.lock);
104 spin_unlock(&the_controller->lock);
105
106 usbip_event_add(&vdev->ud, VDEV_EVENT_DOWN);
107
108 return 0;
109}
110
111static ssize_t store_detach(struct device *dev, struct device_attribute *attr,
112 const char *buf, size_t count)
113{
114 int err;
115 __u32 rhport = 0;
116
117 sscanf(buf, "%u", &rhport);
118
119 /* check rhport */
120 if (rhport >= VHCI_NPORTS) {
121 uerr("invalid port %u\n", rhport);
122 return -EINVAL;
123 }
124
125 err = vhci_port_disconnect(rhport);
126 if (err < 0)
127 return -EINVAL;
128
129 dbg_vhci_sysfs("Leave\n");
130 return count;
131}
132static DEVICE_ATTR(detach, S_IWUSR, NULL, store_detach);
133
134/* Sysfs entry to establish a virtual connection */
135static int valid_args(__u32 rhport, enum usb_device_speed speed)
136{
137 /* check rhport */
138 if ((rhport < 0) || (rhport >= VHCI_NPORTS)) {
139 uerr("port %u\n", rhport);
140 return -EINVAL;
141 }
142
143 /* check speed */
144 switch (speed) {
145 case USB_SPEED_LOW:
146 case USB_SPEED_FULL:
147 case USB_SPEED_HIGH:
148 case USB_SPEED_VARIABLE:
149 break;
150 default:
151 uerr("speed %d\n", speed);
152 return -EINVAL;
153 }
154
155 return 0;
156}
157
158/*
159 * To start a new USB/IP attachment, a userland program needs to setup a TCP
160 * connection and then write its socket descriptor with remote device
161 * information into this sysfs file.
162 *
163 * A remote device is virtually attached to the root-hub port of @rhport with
164 * @speed. @devid is embedded into a request to specify the remote device in a
165 * server host.
166 *
167 * write() returns 0 on success, else negative errno.
168 */
169static ssize_t store_attach(struct device *dev, struct device_attribute *attr,
170 const char *buf, size_t count)
171{
172 struct vhci_device *vdev;
173 struct socket *socket;
174 int sockfd = 0;
175 __u32 rhport = 0, devid = 0, speed = 0;
176
177 /*
178 * @rhport: port number of vhci_hcd
179 * @sockfd: socket descriptor of an established TCP connection
180 * @devid: unique device identifier in a remote host
181 * @speed: usb device speed in a remote host
182 */
183 sscanf(buf, "%u %u %u %u", &rhport, &sockfd, &devid, &speed);
184
185 dbg_vhci_sysfs("rhport(%u) sockfd(%u) devid(%u) speed(%u)\n",
186 rhport, sockfd, devid, speed);
187
188
189 /* check received parameters */
190 if (valid_args(rhport, speed) < 0)
191 return -EINVAL;
192
193 /* check sockfd */
194 socket = sockfd_to_socket(sockfd);
195 if (!socket)
196 return -EINVAL;
197
198 /* now need lock until setting vdev status as used */
199
200 /* begin a lock */
201 spin_lock(&the_controller->lock);
202
203 vdev = port_to_vdev(rhport);
204
205 spin_lock(&vdev->ud.lock);
206
207 if (vdev->ud.status != VDEV_ST_NULL) {
208 /* end of the lock */
209 spin_unlock(&vdev->ud.lock);
210 spin_unlock(&the_controller->lock);
211
212 uerr("port %d already used\n", rhport);
213 return -EINVAL;
214 }
215
216 uinfo("rhport(%u) sockfd(%d) devid(%u) speed(%u)\n",
217 rhport, sockfd, devid, speed);
218
219 vdev->devid = devid;
220 vdev->speed = speed;
221 vdev->ud.tcp_socket = socket;
222 vdev->ud.status = VDEV_ST_NOTASSIGNED;
223
224 spin_unlock(&vdev->ud.lock);
225 spin_unlock(&the_controller->lock);
226 /* end the lock */
227
228 /*
229 * this function will sleep, so should be out of the lock. but, it's ok
230 * because we already marked vdev as being used. really?
231 */
232 usbip_start_threads(&vdev->ud);
233
234 rh_port_connect(rhport, speed);
235
236 return count;
237}
238static DEVICE_ATTR(attach, S_IWUSR, NULL, store_attach);
239
240static struct attribute *dev_attrs[] = {
241 &dev_attr_status.attr,
242 &dev_attr_detach.attr,
243 &dev_attr_attach.attr,
244 &dev_attr_usbip_debug.attr,
245 NULL,
246};
247
248struct attribute_group dev_attr_group = {
249 .attrs = dev_attrs,
250};
diff --git a/drivers/staging/usbip/vhci_tx.c b/drivers/staging/usbip/vhci_tx.c
new file mode 100644
index 00000000000..1f552a95f48
--- /dev/null
+++ b/drivers/staging/usbip/vhci_tx.c
@@ -0,0 +1,239 @@
1/*
2 * Copyright (C) 2003-2008 Takahiro Hirofuchi
3 *
4 * This is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 * USA.
18 */
19
20#include "usbip_common.h"
21#include "vhci.h"
22
23
24static void setup_cmd_submit_pdu(struct usbip_header *pdup, struct urb *urb)
25{
26 struct vhci_priv *priv = ((struct vhci_priv *)urb->hcpriv);
27 struct vhci_device *vdev = priv->vdev;
28
29 dbg_vhci_tx("URB, local devnum %u, remote devid %u\n",
30 usb_pipedevice(urb->pipe), vdev->devid);
31
32 pdup->base.command = USBIP_CMD_SUBMIT;
33 pdup->base.seqnum = priv->seqnum;
34 pdup->base.devid = vdev->devid;
35 if (usb_pipein(urb->pipe))
36 pdup->base.direction = USBIP_DIR_IN;
37 else
38 pdup->base.direction = USBIP_DIR_OUT;
39 pdup->base.ep = usb_pipeendpoint(urb->pipe);
40
41 usbip_pack_pdu(pdup, urb, USBIP_CMD_SUBMIT, 1);
42
43 if (urb->setup_packet)
44 memcpy(pdup->u.cmd_submit.setup, urb->setup_packet, 8);
45}
46
47static struct vhci_priv *dequeue_from_priv_tx(struct vhci_device *vdev)
48{
49 unsigned long flags;
50 struct vhci_priv *priv, *tmp;
51
52 spin_lock_irqsave(&vdev->priv_lock, flags);
53
54 list_for_each_entry_safe(priv, tmp, &vdev->priv_tx, list) {
55 list_move_tail(&priv->list, &vdev->priv_rx);
56 spin_unlock_irqrestore(&vdev->priv_lock, flags);
57 return priv;
58 }
59
60 spin_unlock_irqrestore(&vdev->priv_lock, flags);
61
62 return NULL;
63}
64
65
66
67static int vhci_send_cmd_submit(struct vhci_device *vdev)
68{
69 struct vhci_priv *priv = NULL;
70
71 struct msghdr msg;
72 struct kvec iov[3];
73 size_t txsize;
74
75 size_t total_size = 0;
76
77 while ((priv = dequeue_from_priv_tx(vdev)) != NULL) {
78 int ret;
79 struct urb *urb = priv->urb;
80 struct usbip_header pdu_header;
81 void *iso_buffer = NULL;
82
83 txsize = 0;
84 memset(&pdu_header, 0, sizeof(pdu_header));
85 memset(&msg, 0, sizeof(msg));
86 memset(&iov, 0, sizeof(iov));
87
88 dbg_vhci_tx("setup txdata urb %p\n", urb);
89
90
91 /* 1. setup usbip_header */
92 setup_cmd_submit_pdu(&pdu_header, urb);
93 usbip_header_correct_endian(&pdu_header, 1);
94
95 iov[0].iov_base = &pdu_header;
96 iov[0].iov_len = sizeof(pdu_header);
97 txsize += sizeof(pdu_header);
98
99 /* 2. setup transfer buffer */
100 if (!usb_pipein(urb->pipe) && urb->transfer_buffer_length > 0) {
101 iov[1].iov_base = urb->transfer_buffer;
102 iov[1].iov_len = urb->transfer_buffer_length;
103 txsize += urb->transfer_buffer_length;
104 }
105
106 /* 3. setup iso_packet_descriptor */
107 if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) {
108 ssize_t len = 0;
109
110 iso_buffer = usbip_alloc_iso_desc_pdu(urb, &len);
111 if (!iso_buffer) {
112 usbip_event_add(&vdev->ud,
113 SDEV_EVENT_ERROR_MALLOC);
114 return -1;
115 }
116
117 iov[2].iov_base = iso_buffer;
118 iov[2].iov_len = len;
119 txsize += len;
120 }
121
122 ret = kernel_sendmsg(vdev->ud.tcp_socket, &msg, iov, 3, txsize);
123 if (ret != txsize) {
124 uerr("sendmsg failed!, retval %d for %zd\n", ret,
125 txsize);
126 kfree(iso_buffer);
127 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_TCP);
128 return -1;
129 }
130
131 kfree(iso_buffer);
132 dbg_vhci_tx("send txdata\n");
133
134 total_size += txsize;
135 }
136
137 return total_size;
138}
139
140
141/*-------------------------------------------------------------------------*/
142
143static struct vhci_unlink *dequeue_from_unlink_tx(struct vhci_device *vdev)
144{
145 unsigned long flags;
146 struct vhci_unlink *unlink, *tmp;
147
148 spin_lock_irqsave(&vdev->priv_lock, flags);
149
150 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_tx, list) {
151 list_move_tail(&unlink->list, &vdev->unlink_rx);
152 spin_unlock_irqrestore(&vdev->priv_lock, flags);
153 return unlink;
154 }
155
156 spin_unlock_irqrestore(&vdev->priv_lock, flags);
157
158 return NULL;
159}
160
161static int vhci_send_cmd_unlink(struct vhci_device *vdev)
162{
163 struct vhci_unlink *unlink = NULL;
164
165 struct msghdr msg;
166 struct kvec iov[3];
167 size_t txsize;
168
169 size_t total_size = 0;
170
171 while ((unlink = dequeue_from_unlink_tx(vdev)) != NULL) {
172 int ret;
173 struct usbip_header pdu_header;
174
175 txsize = 0;
176 memset(&pdu_header, 0, sizeof(pdu_header));
177 memset(&msg, 0, sizeof(msg));
178 memset(&iov, 0, sizeof(iov));
179
180 dbg_vhci_tx("setup cmd unlink, %lu \n", unlink->seqnum);
181
182
183 /* 1. setup usbip_header */
184 pdu_header.base.command = USBIP_CMD_UNLINK;
185 pdu_header.base.seqnum = unlink->seqnum;
186 pdu_header.base.devid = vdev->devid;
187 pdu_header.base.ep = 0;
188 pdu_header.u.cmd_unlink.seqnum = unlink->unlink_seqnum;
189
190 usbip_header_correct_endian(&pdu_header, 1);
191
192 iov[0].iov_base = &pdu_header;
193 iov[0].iov_len = sizeof(pdu_header);
194 txsize += sizeof(pdu_header);
195
196 ret = kernel_sendmsg(vdev->ud.tcp_socket, &msg, iov, 1, txsize);
197 if (ret != txsize) {
198 uerr("sendmsg failed!, retval %d for %zd\n", ret,
199 txsize);
200 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_TCP);
201 return -1;
202 }
203
204
205 dbg_vhci_tx("send txdata\n");
206
207 total_size += txsize;
208 }
209
210 return total_size;
211}
212
213
214/*-------------------------------------------------------------------------*/
215
216void vhci_tx_loop(struct usbip_task *ut)
217{
218 struct usbip_device *ud = container_of(ut, struct usbip_device, tcp_tx);
219 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud);
220
221 while (1) {
222 if (signal_pending(current)) {
223 uinfo("vhci_tx signal catched\n");
224 break;
225 }
226
227 if (vhci_send_cmd_submit(vdev) < 0)
228 break;
229
230 if (vhci_send_cmd_unlink(vdev) < 0)
231 break;
232
233 wait_event_interruptible(vdev->waitq_tx,
234 (!list_empty(&vdev->priv_tx) ||
235 !list_empty(&vdev->unlink_tx)));
236
237 dbg_vhci_tx("pending urbs ?, now wake up\n");
238 }
239}
diff --git a/drivers/staging/winbond/Kconfig b/drivers/staging/winbond/Kconfig
new file mode 100644
index 00000000000..10d72bec88a
--- /dev/null
+++ b/drivers/staging/winbond/Kconfig
@@ -0,0 +1,7 @@
1config W35UND
2 tristate "Winbond driver"
3 depends on MAC80211 && WLAN_80211 && EXPERIMENTAL && !4KSTACKS
4 default n
5 ---help---
6 This is highly experimental driver for winbond wifi card on some Kohjinsha notebooks
7 Check http://code.google.com/p/winbondport/ for new version
diff --git a/drivers/staging/winbond/Makefile b/drivers/staging/winbond/Makefile
new file mode 100644
index 00000000000..29c98bf1bc9
--- /dev/null
+++ b/drivers/staging/winbond/Makefile
@@ -0,0 +1,18 @@
1 DRIVER_DIR=./linux
2
3w35und-objs := $(DRIVER_DIR)/wbusb.o $(DRIVER_DIR)/wb35reg.o $(DRIVER_DIR)/wb35rx.o $(DRIVER_DIR)/wb35tx.o \
4 mds.o \
5 mlmetxrx.o \
6 mto.o \
7 phy_calibration.o \
8 reg.o \
9 rxisr.o \
10 sme_api.o \
11 wbhal.o \
12 wblinux.o \
13
14
15obj-$(CONFIG_W35UND) += w35und.o
16
17
18
diff --git a/drivers/staging/winbond/README b/drivers/staging/winbond/README
new file mode 100644
index 00000000000..707b6b354dc
--- /dev/null
+++ b/drivers/staging/winbond/README
@@ -0,0 +1,10 @@
1TODO:
2 - sparse cleanups
3 - checkpatch cleanups
4 - kerneldoc cleanups
5 - remove typedefs
6 - remove unused ioctls
7 - use cfg80211 for regulatory stuff
8
9Please send patches to Greg Kroah-Hartman <greg@kroah.com> and
10Pavel Machek <pavel@suse.cz>
diff --git a/drivers/staging/winbond/adapter.h b/drivers/staging/winbond/adapter.h
new file mode 100644
index 00000000000..609701d21cf
--- /dev/null
+++ b/drivers/staging/winbond/adapter.h
@@ -0,0 +1,23 @@
1//
2// ADAPTER.H -
3// Windows NDIS global variable 'Adapter' typedef
4//
5#define MAX_ANSI_STRING 40
6typedef struct WB32_ADAPTER
7{
8 u32 AdapterIndex; // 20060703.4 Add for using pAdapterContext global Adapter point
9
10 WB_LOCALDESCRIPT sLocalPara; // Myself connected parameters
11 PWB_BSSDESCRIPTION asBSSDescriptElement;
12
13 MLME_FRAME sMlmeFrame; // connect to peerSTA parameters
14
15 MTO_PARAMETERS sMtoPara; // MTO_struct ...
16 hw_data_t sHwData; //For HAL
17 MDS Mds;
18
19 WBLINUX WbLinux;
20 struct iw_statistics iw_stats;
21
22 u8 LinkName[MAX_ANSI_STRING];
23} WB32_ADAPTER, ADAPTER, *PWB32_ADAPTER, *PADAPTER;
diff --git a/drivers/staging/winbond/bss_f.h b/drivers/staging/winbond/bss_f.h
new file mode 100644
index 00000000000..c957bc94f08
--- /dev/null
+++ b/drivers/staging/winbond/bss_f.h
@@ -0,0 +1,59 @@
1//
2// BSS descriptor DataBase management global function
3//
4
5void vBSSdescriptionInit(PWB32_ADAPTER Adapter);
6void vBSSfoundList(PWB32_ADAPTER Adapter);
7u8 boChanFilter(PWB32_ADAPTER Adapter, u8 ChanNo);
8u16 wBSSallocateEntry(PWB32_ADAPTER Adapter);
9u16 wBSSGetEntry(PWB32_ADAPTER Adapter);
10void vSimpleHouseKeeping(PWB32_ADAPTER Adapter);
11u16 wBSShouseKeeping(PWB32_ADAPTER Adapter);
12void ClearBSSdescpt(PWB32_ADAPTER Adapter, u16 i);
13u16 wBSSfindBssID(PWB32_ADAPTER Adapter, u8 *pbBssid);
14u16 wBSSfindDedicateCandidate(PWB32_ADAPTER Adapter, struct SSID_Element *psSsid, u8 *pbBssid);
15u16 wBSSfindMACaddr(PWB32_ADAPTER Adapter, u8 *pbMacAddr);
16u16 wBSSsearchMACaddr(PWB32_ADAPTER Adapter, u8 *pbMacAddr, u8 band);
17u16 wBSSaddScanData(PWB32_ADAPTER, u16, psRXDATA);
18u16 wBSSUpdateScanData(PWB32_ADAPTER Adapter, u16 wBssIdx, psRXDATA psRcvData);
19u16 wBSScreateIBSSdata(PWB32_ADAPTER Adapter, PWB_BSSDESCRIPTION psDesData);
20void DesiredRate2BSSdescriptor(PWB32_ADAPTER Adapter, PWB_BSSDESCRIPTION psDesData,
21 u8 *pBasicRateSet, u8 BasicRateCount,
22 u8 *pOperationRateSet, u8 OperationRateCount);
23void DesiredRate2InfoElement(PWB32_ADAPTER Adapter, u8 *addr, u16 *iFildOffset,
24 u8 *pBasicRateSet, u8 BasicRateCount,
25 u8 *pOperationRateSet, u8 OperationRateCount);
26void BSSAddIBSSdata(PWB32_ADAPTER Adapter, PWB_BSSDESCRIPTION psDesData);
27unsigned char boCmpMacAddr( PUCHAR, PUCHAR );
28unsigned char boCmpSSID(struct SSID_Element *psSSID1, struct SSID_Element *psSSID2);
29u16 wBSSfindSSID(PWB32_ADAPTER Adapter, struct SSID_Element *psSsid);
30u16 wRoamingQuery(PWB32_ADAPTER Adapter);
31void vRateToBitmap(PWB32_ADAPTER Adapter, u16 index);
32u8 bRateToBitmapIndex(PWB32_ADAPTER Adapter, u8 bRate);
33u8 bBitmapToRate(u8 i);
34unsigned char boIsERPsta(PWB32_ADAPTER Adapter, u16 i);
35unsigned char boCheckConnect(PWB32_ADAPTER Adapter);
36unsigned char boCheckSignal(PWB32_ADAPTER Adapter);
37void AddIBSSIe(PWB32_ADAPTER Adapter,PWB_BSSDESCRIPTION psDesData );//added by ws for WPA_None06/01/04
38void BssScanUpToDate(PWB32_ADAPTER Adapter);
39void BssUpToDate(PWB32_ADAPTER Adapter);
40void RateSort(u8 *RateArray, u8 num, u8 mode);
41void RateReSortForSRate(PWB32_ADAPTER Adapter, u8 *RateArray, u8 num);
42void Assemble_IE(PWB32_ADAPTER Adapter, u16 wBssIdx);
43void SetMaxTxRate(PWB32_ADAPTER Adapter);
44
45void CreateWpaIE(PWB32_ADAPTER Adapter, u16* iFildOffset, PUCHAR msg, struct Management_Frame* msgHeader,
46 struct Association_Request_Frame_Body* msgBody, u16 iMSindex); //added by WS 05/14/05
47
48#ifdef _WPA2_
49void CreateRsnIE(PWB32_ADAPTER Adapter, u16* iFildOffset, PUCHAR msg, struct Management_Frame* msgHeader,
50 struct Association_Request_Frame_Body* msgBody, u16 iMSindex);//added by WS 05/14/05
51
52u16 SearchPmkid(PWB32_ADAPTER Adapter, struct Management_Frame* msgHeader,
53 struct PMKID_Information_Element * AssoReq_PMKID );
54#endif
55
56
57
58
59
diff --git a/drivers/staging/winbond/bssdscpt.h b/drivers/staging/winbond/bssdscpt.h
new file mode 100644
index 00000000000..97150a2655f
--- /dev/null
+++ b/drivers/staging/winbond/bssdscpt.h
@@ -0,0 +1,156 @@
1//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2// bssdscpt.c
3// BSS descriptor data base
4// history :
5//
6// Description:
7// BSS descriptor data base will store the information of the stations at the
8// surrounding environment. The first entry( psBSS(0) ) will not be used and the
9// second one( psBSS(1) ) will be used for the broadcast address.
10//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11
12//#define MAX_ACC_RSSI_COUNT 10
13#define MAX_ACC_RSSI_COUNT 6
14
15///////////////////////////////////////////////////////////////////////////
16//
17// BSS Description set Element , to store scan received Beacon information
18//
19// Our's differs slightly from the specs. The specify a PHY_Parameter_Set.
20// Since we're only doing a DS design right now, we just have a DS structure.
21//////////////////////////////////////////////////////////////////////////////
22typedef struct BSSDescriptionElement
23{
24 u32 SlotValid;
25 u32 PowerSaveMode;
26 RXLAYER1 RxLayer1;
27
28 u8 abPeerAddress[ MAC_ADDR_LENGTH + 2 ]; // peer MAC Address associated with this session. 6-OCTET value
29 u32 dwBgScanStamp; // BgScan Sequence Counter stamp, record psROAM->dwScanCounter.
30
31 u16 Beacon_Period;
32 u16 wATIM_Window;
33
34 u8 abBssID[ MAC_ADDR_LENGTH + 2 ]; // 6B
35
36 u8 bBssType;
37 u8 DTIM_Period; // 1 octet usually from TIM element, if present
38 u8 boInTimerHandler;
39 u8 boERP; // analysis ERP or (extended) supported rate element
40
41 u8 Timestamp[8];
42 u8 BasicRate[32];
43 u8 OperationalRate[32];
44 u32 dwBasicRateBitmap; //bit map, retrieve from SupportedRateSet
45 u32 dwOperationalRateBitmap; //bit map, retrieve from SupportedRateSet and
46 // ExtendedSupportedRateSet
47 // For RSSI calculating
48 u32 HalRssi[MAX_ACC_RSSI_COUNT]; // Encode. It must use MACRO of HAL to get the LNA and AGC data
49 u32 HalRssiIndex;
50
51 ////From beacon/probe response
52 struct SSID_Element SSID; // 34B
53 u8 reserved_1[ 2 ];
54
55 struct Capability_Information_Element CapabilityInformation; // 2B
56 u8 reserved_2[ 2 ];
57
58 struct CF_Parameter_Set_Element CF_Parameter_Set; // 8B
59 struct IBSS_Parameter_Set_Element IBSS_Parameter_Set; // 4B
60 struct TIM_Element TIM_Element_Set; // 256B
61
62 struct DS_Parameter_Set_Element DS_Parameter_Set; // 3B
63 u8 reserved_3;
64
65 struct ERP_Information_Element ERP_Information_Set; // 3B
66 u8 reserved_4;
67
68 struct Supported_Rates_Element SupportedRateSet; // 10B
69 u8 reserved_5[2];
70
71 struct Extended_Supported_Rates_Element ExtendedSupportedRateSet; // 257B
72 u8 reserved_6[3];
73
74 u8 band;
75 u8 reserved_7[3];
76
77 // for MLME module
78 u16 wState; // the current state of the system
79 u16 wIndex; // THIS BSS element entry index
80
81 void* psAdapter; // pointer to THIS Adapter
82 OS_TIMER nTimer; // MLME timer
83
84 // Authentication
85 u16 wAuthAlgo; // peer MAC MLME use Auth algorithm, default OPEN_AUTH
86 u16 wAuthSeqNum; // current local MAC sendout AuthReq sequence number
87
88 u8 auth_challengeText[128];
89
90 ////For XP:
91 u32 ies_len; // information element length
92 u8 ies[256]; // information element
93
94 ////For WPA
95 u8 RsnIe_Type[2]; //added by ws for distinguish WPA and WPA2 05/14/04
96 u8 RsnIe_len;
97 u8 Rsn_Num;
98
99 // to record the rsn cipher suites,addded by ws 09/05/04
100 SUITE_SELECTOR group_cipher; // 4B
101 SUITE_SELECTOR pairwise_key_cipher_suites[WLAN_MAX_PAIRWISE_CIPHER_SUITE_COUNT];
102 SUITE_SELECTOR auth_key_mgt_suites[WLAN_MAX_AUTH_KEY_MGT_SUITE_LIST_COUNT];
103
104 u16 pairwise_key_cipher_suite_count;
105 u16 auth_key_mgt_suite_count;
106
107 u8 pairwise_key_cipher_suite_selected;
108 u8 auth_key_mgt_suite_selected;
109 u8 reserved_8[2];
110
111 struct RSN_Capability_Element rsn_capabilities; // 2B
112 u8 reserved_9[2];
113
114 //to record the rsn cipher suites for WPA2
115 #ifdef _WPA2_
116 u32 pre_auth; //added by WS for distinguish for 05/04/04
117 SUITE_SELECTOR wpa2_group_cipher; // 4B
118 SUITE_SELECTOR wpa2_pairwise_key_cipher_suites[WLAN_MAX_PAIRWISE_CIPHER_SUITE_COUNT];
119 SUITE_SELECTOR wpa2_auth_key_mgt_suites[WLAN_MAX_AUTH_KEY_MGT_SUITE_LIST_COUNT];
120
121 u16 wpa2_pairwise_key_cipher_suite_count;
122 u16 wpa2_auth_key_mgt_suite_count;
123
124 u8 wpa2_pairwise_key_cipher_suite_selected;
125 u8 wpa2_auth_key_mgt_suite_selected;
126 u8 reserved_10[2];
127
128 struct RSN_Capability_Element wpa2_rsn_capabilities; // 2B
129 u8 reserved_11[2];
130 #endif //endif _WPA2_
131
132 //For Replay protection
133// u8 PairwiseTSC[6];
134// u8 GroupTSC[6];
135
136 ////For up-to-date
137 u32 ScanTimeStamp; //for the decision whether the station/AP(may exist at
138 //different channels) has left. It must be detected by
139 //scanning. Local device may connected or disconnected.
140 u32 BssTimeStamp; //Only for the decision whether the station/AP(exist in
141 //the same channel, and no scanning) if local device has
142 //connected successfully.
143
144 // 20061108 Add for storing WPS_IE. [E id][Length][OUI][Data]
145 u8 WPS_IE_Data[MAX_IE_APPEND_SIZE];
146 u16 WPS_IE_length;
147 u16 WPS_IE_length_tmp; // For verify there is an WPS_IE in Beacon or probe response
148
149} WB_BSSDESCRIPTION, *PWB_BSSDESCRIPTION;
150
151#define wBSSConnectedSTA(Adapter) \
152 ((u16)(Adapter)->sLocalPara.wConnectedSTAindex)
153
154#define psBSS(i) (&(Adapter->asBSSDescriptElement[(i)]))
155
156
diff --git a/drivers/staging/winbond/ds_tkip.h b/drivers/staging/winbond/ds_tkip.h
new file mode 100644
index 00000000000..29e5055b45a
--- /dev/null
+++ b/drivers/staging/winbond/ds_tkip.h
@@ -0,0 +1,33 @@
1// Rotation functions on 32 bit values
2#define ROL32( A, n ) \
3 ( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) )
4
5#define ROR32( A, n ) ROL32( (A), 32-(n) )
6
7
8typedef struct tkip
9{
10 u32 K0, K1; // Key
11 union
12 {
13 struct // Current state
14 {
15 u32 L;
16 u32 R;
17 };
18 u8 LR[8];
19 };
20 union
21 {
22 u32 M; // Message accumulator (single word)
23 u8 Mb[4];
24 };
25 s32 bytes_in_M; // # bytes in M
26} tkip_t;
27
28//void _append_data( PUCHAR pData, u16 size, tkip_t *p );
29void Mds_MicGet( void* Adapter, void* pRxLayer1, PUCHAR pKey, PUCHAR pMic );
30void Mds_MicFill( void* Adapter, void* pDes, PUCHAR XmitBufAddress );
31
32
33
diff --git a/drivers/staging/winbond/gl_80211.h b/drivers/staging/winbond/gl_80211.h
new file mode 100644
index 00000000000..1806d817496
--- /dev/null
+++ b/drivers/staging/winbond/gl_80211.h
@@ -0,0 +1,125 @@
1
2#ifndef __GL_80211_H__
3#define __GL_80211_H__
4
5/****************** CONSTANT AND MACRO SECTION ******************************/
6
7/* BSS Type */
8enum {
9 WLAN_BSSTYPE_INFRASTRUCTURE = 0,
10 WLAN_BSSTYPE_INDEPENDENT,
11 WLAN_BSSTYPE_ANY_BSS,
12};
13
14
15
16/* Preamble_Type, see <SFS-802.11G-MIB-203> */
17typedef enum preamble_type {
18 WLAN_PREAMBLE_TYPE_SHORT,
19 WLAN_PREAMBLE_TYPE_LONG,
20} preamble_type_e;
21
22
23/* Slot_Time_Type, see <SFS-802.11G-MIB-208> */
24typedef enum slot_time_type {
25 WLAN_SLOT_TIME_TYPE_LONG,
26 WLAN_SLOT_TIME_TYPE_SHORT,
27} slot_time_type_e;
28
29/*--------------------------------------------------------------------------*/
30/* Encryption Mode */
31typedef enum {
32 WEP_DISABLE = 0,
33 WEP_64,
34 WEP_128,
35
36 ENCRYPT_DISABLE,
37 ENCRYPT_WEP,
38 ENCRYPT_WEP_NOKEY,
39 ENCRYPT_TKIP,
40 ENCRYPT_TKIP_NOKEY,
41 ENCRYPT_CCMP,
42 ENCRYPT_CCMP_NOKEY,
43} encryption_mode_e;
44
45typedef enum _WLAN_RADIO {
46 WLAN_RADIO_ON,
47 WLAN_RADIO_OFF,
48 WLAN_RADIO_MAX, // not a real type, defined as an upper bound
49} WLAN_RADIO;
50
51typedef struct _WLAN_RADIO_STATUS {
52 WLAN_RADIO HWStatus;
53 WLAN_RADIO SWStatus;
54} WLAN_RADIO_STATUS;
55
56//----------------------------------------------------------------------------
57// 20041021 1.1.81.1000 ybjiang
58// add for radio notification
59typedef
60void (*RADIO_NOTIFICATION_HANDLER)(
61 void *Data,
62 void *RadioStatusBuffer,
63 u32 RadioStatusBufferLen
64 );
65
66typedef struct _WLAN_RADIO_NOTIFICATION
67{
68 RADIO_NOTIFICATION_HANDLER RadioChangeHandler;
69 void *Data;
70} WLAN_RADIO_NOTIFICATION;
71
72//----------------------------------------------------------------------------
73// 20041102 1.1.91.1000 ybjiang
74// add for OID_802_11_CUST_REGION_CAPABILITIES and OID_802_11_OID_REGION
75typedef enum _WLAN_REGION_CODE
76{
77 WLAN_REGION_UNKNOWN,
78 WLAN_REGION_EUROPE,
79 WLAN_REGION_JAPAN,
80 WLAN_REGION_USA,
81 WLAN_REGION_FRANCE,
82 WLAN_REGION_SPAIN,
83 WLAN_REGION_ISRAEL,
84 WLAN_REGION_MAX, // not a real type, defined as an upper bound
85} WLAN_REGION_CODE;
86
87#define REGION_NAME_MAX_LENGTH 256
88
89typedef struct _WLAN_REGION_CHANNELS
90{
91 u32 Length;
92 u32 NameLength;
93 u8 Name[REGION_NAME_MAX_LENGTH];
94 WLAN_REGION_CODE Code;
95 u32 Frequency[1];
96} WLAN_REGION_CHANNELS;
97
98typedef struct _WLAN_REGION_CAPABILITIES
99{
100 u32 NumberOfItems;
101 WLAN_REGION_CHANNELS Region[1];
102} WLAN_REGION_CAPABILITIES;
103
104typedef struct _region_name_map {
105 WLAN_REGION_CODE region;
106 u8 *name;
107 u32 *channels;
108} region_name_map;
109
110/*--------------------------------------------------------------------------*/
111#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
112#define MACSTR "%02X:%02X:%02X:%02X:%02X:%02X"
113
114// TODO: 0627 kevin
115#define MIC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5], (a)[6], (a)[7]
116#define MICSTR "%02X %02X %02X %02X %02X %02X %02X %02X"
117
118#define MICKEY2STR(a) MIC2STR(a)
119#define MICKEYSTR MICSTR
120
121
122#endif /* __GL_80211_H__ */
123/*** end of file ***/
124
125
diff --git a/drivers/staging/winbond/ioctls.h b/drivers/staging/winbond/ioctls.h
new file mode 100644
index 00000000000..e8b35dc7e32
--- /dev/null
+++ b/drivers/staging/winbond/ioctls.h
@@ -0,0 +1,678 @@
1//============================================================================
2// IOCTLS.H -
3//
4// Description:
5// Define the IOCTL codes.
6//
7// Revision history:
8// --------------------------------------------------------------------------
9//
10// Copyright (c) 2002-2004 Winbond Electronics Corp. All rights reserved.
11//=============================================================================
12
13#ifndef _IOCTLS_H
14#define _IOCTLS_H
15
16// PD43 Keep it - Used with the Win33 application
17// #include <winioctl.h>
18
19//========================================================
20// 20040108 ADD the follow for test
21//========================================================
22#define INFORMATION_LENGTH sizeof(unsigned int)
23
24#define WB32_IOCTL_INDEX 0x0900 //­×§ÄĽHŤKŹŰŽe//
25
26#define Wb32_RegisterRead CTL_CODE( \
27 FILE_DEVICE_UNKNOWN, \
28 WB32_IOCTL_INDEX + 0, \
29 METHOD_BUFFERED, \
30 FILE_ANY_ACCESS)
31
32#define Wb32_RegisterWrite CTL_CODE( \
33 FILE_DEVICE_UNKNOWN, \
34 WB32_IOCTL_INDEX + 1, \
35 METHOD_BUFFERED, \
36 FILE_ANY_ACCESS)
37
38#define Wb32_SendPacket CTL_CODE( \
39 FILE_DEVICE_UNKNOWN, \
40 WB32_IOCTL_INDEX + 2, \
41 METHOD_BUFFERED, \
42 FILE_ANY_ACCESS)
43
44#define Wb32_QuerySendResult CTL_CODE( \
45 FILE_DEVICE_UNKNOWN, \
46 WB32_IOCTL_INDEX + 3, \
47 METHOD_BUFFERED, \
48 FILE_ANY_ACCESS)
49
50#define Wb32_SetFragmentThreshold CTL_CODE( \
51 FILE_DEVICE_UNKNOWN, \
52 WB32_IOCTL_INDEX + 4, \
53 METHOD_BUFFERED, \
54 FILE_ANY_ACCESS)
55
56#define Wb32_SetLinkStatus CTL_CODE( \
57 FILE_DEVICE_UNKNOWN, \
58 WB32_IOCTL_INDEX + 5, \
59 METHOD_BUFFERED, \
60 FILE_ANY_ACCESS)
61
62#define Wb32_SetBulkIn CTL_CODE( \
63 FILE_DEVICE_UNKNOWN, \
64 WB32_IOCTL_INDEX + 6, \
65 METHOD_BUFFERED, \
66 FILE_ANY_ACCESS)
67
68#define Wb32_LoopbackTest CTL_CODE( \
69 FILE_DEVICE_UNKNOWN, \
70 WB32_IOCTL_INDEX + 7, \
71 METHOD_BUFFERED, \
72 FILE_ANY_ACCESS)
73
74#define Wb35_EEPromRead CTL_CODE( \
75 FILE_DEVICE_UNKNOWN, \
76 WB32_IOCTL_INDEX + 8, \
77 METHOD_BUFFERED, \
78 FILE_ANY_ACCESS)
79
80#define Wb35_EEPromWrite CTL_CODE( \
81 FILE_DEVICE_UNKNOWN, \
82 WB32_IOCTL_INDEX + 9, \
83 METHOD_BUFFERED, \
84 FILE_ANY_ACCESS)
85
86#define Wb35_FlashReadData CTL_CODE( \
87 FILE_DEVICE_UNKNOWN, \
88 WB32_IOCTL_INDEX + 10, \
89 METHOD_BUFFERED, \
90 FILE_ANY_ACCESS)
91
92#define Wb35_FlashWrite CTL_CODE( \
93 FILE_DEVICE_UNKNOWN, \
94 WB32_IOCTL_INDEX + 11, \
95 METHOD_BUFFERED, \
96 FILE_ANY_ACCESS)
97
98#define Wb35_FlashWriteBurst CTL_CODE( \
99 FILE_DEVICE_UNKNOWN, \
100 WB32_IOCTL_INDEX + 12, \
101 METHOD_BUFFERED, \
102 FILE_ANY_ACCESS)
103
104#define Wb35_TxBurstStart CTL_CODE( \
105 FILE_DEVICE_UNKNOWN, \
106 WB32_IOCTL_INDEX + 13, \
107 METHOD_BUFFERED, \
108 FILE_ANY_ACCESS)
109
110#define Wb35_TxBurstStop CTL_CODE( \
111 FILE_DEVICE_UNKNOWN, \
112 WB32_IOCTL_INDEX + 14, \
113 METHOD_BUFFERED, \
114 FILE_ANY_ACCESS)
115
116#define Wb35_TxBurstStatus CTL_CODE( \
117 FILE_DEVICE_UNKNOWN, \
118 WB32_IOCTL_INDEX + 15, \
119 METHOD_BUFFERED, \
120 FILE_ANY_ACCESS)
121
122// For IOCTL interface
123//================================================
124#define LINKNAME_STRING "\\DosDevices\\W35UND"
125#define NTDEVICE_STRING "\\Device\\W35UND"
126#define APPLICATION_LINK "\\\\.\\W35UND"
127
128#define WB_IOCTL_INDEX 0x0800
129#define WB_IOCTL_TS_INDEX WB_IOCTL_INDEX + 60
130#define WB_IOCTL_DUT_INDEX WB_IOCTL_TS_INDEX + 40
131
132//=============================================================================
133// IOCTLS defined for DUT (Device Under Test)
134
135// IOCTL_WB_802_11_DUT_MAC_ADDRESS
136// Query: Return the dot11StationID
137// Set : Set the dot11StationID. Demo only.
138//
139#define IOCTL_WB_802_11_DUT_MAC_ADDRESS CTL_CODE( \
140 FILE_DEVICE_UNKNOWN, \
141 WB_IOCTL_DUT_INDEX + 1, \
142 METHOD_BUFFERED, \
143 FILE_ANY_ACCESS)
144
145// IOCTL_WB_802_11_DUT_BSS_DESCRIPTION
146// Query: Return the info. of the current connected BSS.
147// Set : None.
148//
149#define IOCTL_WB_802_11_DUT_BSS_DESCRIPTION CTL_CODE( \
150 FILE_DEVICE_UNKNOWN, \
151 WB_IOCTL_DUT_INDEX + 2, \
152 METHOD_BUFFERED, \
153 FILE_ANY_ACCESS)
154
155// IOCTL_WB_802_11_DUT_TX_RATE
156// Query: Return the current transmission rate.
157// Set : Set the transmission rate of the Tx packets.
158//
159#define IOCTL_WB_802_11_DUT_TX_RATE CTL_CODE( \
160 FILE_DEVICE_UNKNOWN, \
161 WB_IOCTL_DUT_INDEX + 3, \
162 METHOD_BUFFERED, \
163 FILE_ANY_ACCESS)
164
165// IOCTL_WB_802_11_DUT_CURRENT_STA_STATE
166// Query: Return the current STA state. (WB_STASTATE type)
167// Set : None.
168//
169#define IOCTL_WB_802_11_DUT_CURRENT_STA_STATE CTL_CODE( \
170 FILE_DEVICE_UNKNOWN, \
171 WB_IOCTL_DUT_INDEX + 4, \
172 METHOD_BUFFERED, \
173 FILE_ANY_ACCESS)
174
175/////////// 10/31/02' Added /////////////////////
176
177// IOCTL_WB_802_11_DUT_START_IBSS_REQUEST
178// Query: None.
179// Set : Start a new IBSS
180//
181#define IOCTL_WB_802_11_DUT_START_IBSS_REQUEST CTL_CODE( \
182 FILE_DEVICE_UNKNOWN, \
183 WB_IOCTL_DUT_INDEX + 5, \
184 METHOD_BUFFERED, \
185 FILE_ANY_ACCESS)
186
187// IOCTL_WB_802_11_DUT_JOIN_REQUEST
188// Query: None.
189// Set : Synchronize with the selected BSS
190//
191#define IOCTL_WB_802_11_DUT_JOIN_REQUEST CTL_CODE( \
192 FILE_DEVICE_UNKNOWN, \
193 WB_IOCTL_DUT_INDEX + 6, \
194 METHOD_BUFFERED, \
195 FILE_ANY_ACCESS)
196
197// IOCTL_WB_802_11_DUT_AUTHEN_REQUEST
198// Query: None.
199// Set : Authenticate with the BSS
200//
201#define IOCTL_WB_802_11_DUT_AUTHEN_REQUEST CTL_CODE( \
202 FILE_DEVICE_UNKNOWN, \
203 WB_IOCTL_DUT_INDEX + 7, \
204 METHOD_BUFFERED, \
205 FILE_ANY_ACCESS)
206
207// IOCTL_WB_802_11_DUT_DEAUTHEN_REQUEST
208// Query: None.
209// Set : DeAuthenticate withe the BSS
210//
211#define IOCTL_WB_802_11_DUT_DEAUTHEN_REQUEST CTL_CODE( \
212 FILE_DEVICE_UNKNOWN, \
213 WB_IOCTL_DUT_INDEX + 8, \
214 METHOD_BUFFERED, \
215 FILE_ANY_ACCESS)
216
217// IOCTL_WB_802_11_DUT_ASSOC_REQUEST
218// Query: None.
219// Set : Associate withe the BSS
220//
221#define IOCTL_WB_802_11_DUT_ASSOC_REQUEST CTL_CODE( \
222 FILE_DEVICE_UNKNOWN, \
223 WB_IOCTL_DUT_INDEX + 9, \
224 METHOD_BUFFERED, \
225 FILE_ANY_ACCESS)
226
227// IOCTL_WB_802_11_DUT_REASSOC_REQUEST
228// Query: None.
229// Set : ReAssociate withe the BSS
230//
231#define IOCTL_WB_802_11_DUT_REASSOC_REQUEST CTL_CODE( \
232 FILE_DEVICE_UNKNOWN, \
233 WB_IOCTL_DUT_INDEX + 10, \
234 METHOD_BUFFERED, \
235 FILE_ANY_ACCESS)
236
237
238// IOCTL_WB_802_11_DUT_DISASSOC_REQUEST
239// Query: None.
240// Set : DisAssociate withe the BSS
241//
242#define IOCTL_WB_802_11_DUT_DISASSOC_REQUEST CTL_CODE( \
243 FILE_DEVICE_UNKNOWN, \
244 WB_IOCTL_DUT_INDEX + 11, \
245 METHOD_BUFFERED, \
246 FILE_ANY_ACCESS)
247
248// IOCTL_WB_802_11_DUT_FRAG_THRESHOLD
249// Query: Return the dot11FragmentThreshold
250// Set : Set the dot11FragmentThreshold
251//
252#define IOCTL_WB_802_11_DUT_FRAG_THRESHOLD CTL_CODE( \
253 FILE_DEVICE_UNKNOWN, \
254 WB_IOCTL_DUT_INDEX + 12, \
255 METHOD_BUFFERED, \
256 FILE_ANY_ACCESS)
257
258// IOCTL_WB_802_11_DUT_RTS_THRESHOLD
259// Query: Return the dot11RTSThreshold
260// Set : Set the dot11RTSThresold
261//
262#define IOCTL_WB_802_11_DUT_RTS_THRESHOLD CTL_CODE( \
263 FILE_DEVICE_UNKNOWN, \
264 WB_IOCTL_DUT_INDEX + 13, \
265 METHOD_BUFFERED, \
266 FILE_ANY_ACCESS)
267
268// IOCTL_WB_802_11_DUT_WEP_KEYMODE
269// Query: Get the WEP key mode.
270// Set : Set the WEP key mode: disable/64 bits/128 bits
271//
272#define IOCTL_WB_802_11_DUT_WEP_KEYMODE CTL_CODE( \
273 FILE_DEVICE_UNKNOWN, \
274 WB_IOCTL_DUT_INDEX + 14, \
275 METHOD_BUFFERED, \
276 FILE_ANY_ACCESS)
277
278// IOCTL_WB_802_11_DUT_WEP_KEYVALUE
279// Query: None.
280// Set : fill in the WEP key value
281//
282#define IOCTL_WB_802_11_DUT_WEP_KEYVALUE CTL_CODE( \
283 FILE_DEVICE_UNKNOWN, \
284 WB_IOCTL_DUT_INDEX + 15, \
285 METHOD_BUFFERED, \
286 FILE_ANY_ACCESS)
287
288// IOCTL_WB_802_11_DUT_RESET
289// Query: None.
290// Set : Reset S/W and H/W
291//
292#define IOCTL_WB_802_11_DUT_RESET CTL_CODE( \
293 FILE_DEVICE_UNKNOWN, \
294 WB_IOCTL_DUT_INDEX + 16, \
295 METHOD_BUFFERED, \
296 FILE_ANY_ACCESS)
297
298// IOCTL_WB_802_11_DUT_POWER_SAVE
299// Query: None.
300// Set : Set Power Save Mode
301//
302#define IOCTL_WB_802_11_DUT_POWER_SAVE CTL_CODE( \
303 FILE_DEVICE_UNKNOWN, \
304 WB_IOCTL_DUT_INDEX + 17, \
305 METHOD_BUFFERED, \
306 FILE_ANY_ACCESS)
307
308// IOCTL_WB_802_11_DUT_BSSID_LIST_SCAN
309// Query: None.
310// Set :
311//
312#define IOCTL_WB_802_11_DUT_BSSID_LIST_SCAN CTL_CODE( \
313 FILE_DEVICE_UNKNOWN, \
314 WB_IOCTL_DUT_INDEX + 18, \
315 METHOD_BUFFERED, \
316 FILE_ANY_ACCESS)
317
318// IOCTL_WB_802_11_DUT_BSSID_LIST
319// Query: Return the BSS info of BSSs in the last scanning process
320// Set : None.
321//
322#define IOCTL_WB_802_11_DUT_BSSID_LIST CTL_CODE( \
323 FILE_DEVICE_UNKNOWN, \
324 WB_IOCTL_DUT_INDEX + 19, \
325 METHOD_BUFFERED, \
326 FILE_ANY_ACCESS)
327
328// IOCTL_WB_802_11_DUT_STATISTICS
329// Query: Return the statistics of Tx/Rx.
330// Set : None.
331//
332#define IOCTL_WB_802_11_DUT_STATISTICS CTL_CODE( \
333 FILE_DEVICE_UNKNOWN, \
334 WB_IOCTL_DUT_INDEX + 20, \
335 METHOD_BUFFERED, \
336 FILE_ANY_ACCESS)
337
338// IOCTL_WB_802_11_DUT_ACCEPT_BEACON
339// Query: Return the current mode to accept beacon or not.
340// Set : Enable or disable allowing the HW-MAC to pass the beacon to the SW-MAC
341// Arguments: unsigned char
342//
343#define IOCTL_WB_802_11_DUT_ACCEPT_BEACON CTL_CODE( \
344 FILE_DEVICE_UNKNOWN, \
345 WB_IOCTL_DUT_INDEX + 21, \
346 METHOD_BUFFERED, \
347 FILE_ANY_ACCESS)
348
349// IOCTL_WB_802_11_DUT_ROAMING
350// Query: Return the roaming function status
351// Set : Enable/Disable the roaming function.
352#define IOCTL_WB_802_11_DUT_ROAMING CTL_CODE( \
353 FILE_DEVICE_UNKNOWN, \
354 WB_IOCTL_DUT_INDEX + 22, \
355 METHOD_BUFFERED, \
356 FILE_ANY_ACCESS)
357
358// IOCTL_WB_802_11_DUT_DTO
359// Query: Return the DTO(Data Throughput Optimization)
360// function status (TRUE or FALSE)
361// Set : Enable/Disable the DTO function.
362//
363#define IOCTL_WB_802_11_DUT_DTO CTL_CODE( \
364 FILE_DEVICE_UNKNOWN, \
365 WB_IOCTL_DUT_INDEX + 23, \
366 METHOD_BUFFERED, \
367 FILE_ANY_ACCESS)
368
369// IOCTL_WB_802_11_DUT_ANTENNA_DIVERSITY
370// Query: Return the antenna diversity status. (TRUE/ON or FALSE/OFF)
371// Set : Enable/Disable the antenna diversity.
372//
373#define IOCTL_WB_802_11_DUT_ANTENNA_DIVERSITY CTL_CODE( \
374 FILE_DEVICE_UNKNOWN, \
375 WB_IOCTL_DUT_INDEX + 24, \
376 METHOD_BUFFERED, \
377 FILE_ANY_ACCESS)
378
379//-------------- new added for a+b+g ---------------------
380// IOCTL_WB_802_11_DUT_MAC_OPERATION_MODE
381// Query: Return the MAC operation mode. (MODE_802_11_BG, MODE_802_11_A,
382// MODE_802_11_ABG, MODE_802_11_BG_IBSS)
383// Set : Set the MAC operation mode.
384//
385#define IOCTL_WB_802_11_DUT_MAC_OPERATION_MODE CTL_CODE( \
386 FILE_DEVICE_UNKNOWN, \
387 WB_IOCTL_DUT_INDEX + 25, \
388 METHOD_BUFFERED, \
389 FILE_ANY_ACCESS)
390
391// IOCTL_WB_802_11_DUT_TX_RATE_REDEFINED
392// Query: Return the current tx rate which follows the definition in spec. (for
393// example, 5.5M => 0x0b)
394// Set : None
395//
396#define IOCTL_WB_802_11_DUT_TX_RATE_REDEFINED CTL_CODE( \
397 FILE_DEVICE_UNKNOWN, \
398 WB_IOCTL_DUT_INDEX + 26, \
399 METHOD_BUFFERED, \
400 FILE_ANY_ACCESS)
401
402// IOCTL_WB_802_11_DUT_PREAMBLE_MODE
403// Query: Return the preamble mode. (auto or long)
404// Set : Set the preamble mode.
405//
406#define IOCTL_WB_802_11_DUT_PREAMBLE_MODE CTL_CODE( \
407 FILE_DEVICE_UNKNOWN, \
408 WB_IOCTL_DUT_INDEX + 27, \
409 METHOD_BUFFERED, \
410 FILE_ANY_ACCESS)
411
412// IOCTL_WB_802_11_DUT_SLOT_TIME_MODE
413// Query: Return the slot time mode. (auto or long)
414// Set : Set the slot time mode.
415//
416#define IOCTL_WB_802_11_DUT_SLOT_TIME_MODE CTL_CODE( \
417 FILE_DEVICE_UNKNOWN, \
418 WB_IOCTL_DUT_INDEX + 28, \
419 METHOD_BUFFERED, \
420 FILE_ANY_ACCESS)
421//------------------------------------------------------------------
422
423// IOCTL_WB_802_11_DUT_ADVANCE_STATUS
424// Query:
425// Set : NONE
426//
427#define IOCTL_WB_802_11_DUT_ADVANCE_STATUS CTL_CODE( \
428 FILE_DEVICE_UNKNOWN, \
429 WB_IOCTL_DUT_INDEX + 29, \
430 METHOD_BUFFERED, \
431 FILE_ANY_ACCESS)
432
433// IOCTL_WB_802_11_DUT_TX_RATE_MODE
434// Query: Return the tx rate mode. (RATE_AUTO, RATE_1M, .., RATE_54M, RATE_MAX)
435// Set : Set the tx rate mode. (RATE_AUTO, RATE_1M, .., RATE_54M, RATE_MAX)
436//
437#define IOCTL_WB_802_11_DUT_TX_RATE_MODE CTL_CODE( \
438 FILE_DEVICE_UNKNOWN, \
439 WB_IOCTL_DUT_INDEX + 30, \
440 METHOD_BUFFERED, \
441 FILE_ANY_ACCESS)
442
443// IOCTL_WB_802_11_DUT_DTO_PARA
444// Query: Return the DTO parameters
445// Set : Set the DTO parameters
446//
447#define IOCTL_WB_802_11_DUT_DTO_PARA CTL_CODE( \
448 FILE_DEVICE_UNKNOWN, \
449 WB_IOCTL_DUT_INDEX + 31, \
450 METHOD_BUFFERED, \
451 FILE_ANY_ACCESS)
452
453// IOCTL_WB_802_11_DUT_EVENT_LOG
454// Query: Return event log
455// Set : Reset event log
456//
457#define IOCTL_WB_802_11_DUT_EVENT_LOG CTL_CODE( \
458 FILE_DEVICE_UNKNOWN, \
459 WB_IOCTL_DUT_INDEX + 32, \
460 METHOD_BUFFERED, \
461 FILE_ANY_ACCESS)
462
463// IOCTL_WB_802_11_DUT_CWMIN
464// Query: NONE(It will be obtained by IOCTL_WB_802_11_DUT_ADVANCE_STATUS)
465// Set : Set CWMin value
466//
467#define IOCTL_WB_802_11_DUT_CWMIN CTL_CODE( \
468 FILE_DEVICE_UNKNOWN, \
469 WB_IOCTL_DUT_INDEX + 33, \
470 METHOD_BUFFERED, \
471 FILE_ANY_ACCESS)
472
473// IOCTL_WB_802_11_DUT_CWMAX
474// Query: NONE(It will be obtained by IOCTL_WB_802_11_DUT_ADVANCE_STATUS)
475// Set : Set CWMax value
476//
477#define IOCTL_WB_802_11_DUT_CWMAX CTL_CODE( \
478 FILE_DEVICE_UNKNOWN, \
479 WB_IOCTL_DUT_INDEX + 34, \
480 METHOD_BUFFERED, \
481 FILE_ANY_ACCESS)
482
483
484//==========================================================
485// IOCTLs for Testing
486
487// IOCTL_WB_802_11_TS_SET_CXX_REG
488// Query: None
489// Set : Write the value to one of Cxx register.
490//
491#define IOCTL_WB_802_11_TS_SET_CXX_REG CTL_CODE( \
492 FILE_DEVICE_UNKNOWN, \
493 WB_IOCTL_TS_INDEX + 0, \
494 METHOD_BUFFERED, \
495 FILE_ANY_ACCESS)
496
497// IOCTL_WB_802_11_TS_GET_CXX_REG
498// Query: Return the value of the Cxx register.
499// Set : Write the reg no. (0x00, 0x04, 0x08 etc)
500//
501#define IOCTL_WB_802_11_TS_GET_CXX_REG CTL_CODE( \
502 FILE_DEVICE_UNKNOWN, \
503 WB_IOCTL_TS_INDEX + 1, \
504 METHOD_BUFFERED, \
505 FILE_ANY_ACCESS)
506
507// IOCTL_WB_802_11_TS_SET_DXX_REG
508// Query: None
509// Set : Write the value to one of Dxx register.
510//
511#define IOCTL_WB_802_11_TS_SET_DXX_REG CTL_CODE( \
512 FILE_DEVICE_UNKNOWN, \
513 WB_IOCTL_TS_INDEX + 2, \
514 METHOD_BUFFERED, \
515 FILE_ANY_ACCESS)
516
517// IOCTL_WB_802_11_TS_GET_DXX_REG
518// Query: Return the value of the Dxx register.
519// Set : Write the reg no. (0x00, 0x04, 0x08 etc)
520//
521#define IOCTL_WB_802_11_TS_GET_DXX_REG CTL_CODE( \
522 FILE_DEVICE_UNKNOWN, \
523 WB_IOCTL_TS_INDEX + 3, \
524 METHOD_BUFFERED, \
525 FILE_ANY_ACCESS)
526
527//============================================================
528// [TS]
529
530#define IOCTL_WB_802_11_TS_TX_RATE CTL_CODE( \
531 FILE_DEVICE_UNKNOWN, \
532 WB_IOCTL_TS_INDEX + 4, \
533 METHOD_BUFFERED, \
534 FILE_ANY_ACCESS)
535
536#define IOCTL_WB_802_11_TS_CURRENT_CHANNEL CTL_CODE( \
537 FILE_DEVICE_UNKNOWN, \
538 WB_IOCTL_TS_INDEX + 5, \
539 METHOD_BUFFERED, \
540 FILE_ANY_ACCESS)
541
542#define IOCTL_WB_802_11_TS_ENABLE_SEQNO CTL_CODE( \
543 FILE_DEVICE_UNKNOWN, \
544 WB_IOCTL_TS_INDEX + 6, \
545 METHOD_BUFFERED, \
546 FILE_ANY_ACCESS)
547
548#define IOCTL_WB_802_11_TS_ENALBE_ACKEDPACKET CTL_CODE( \
549 FILE_DEVICE_UNKNOWN, \
550 WB_IOCTL_TS_INDEX + 7, \
551 METHOD_BUFFERED, \
552 FILE_ANY_ACCESS)
553
554#define IOCTL_WB_802_11_TS_INHIBIT_CRC CTL_CODE( \
555 FILE_DEVICE_UNKNOWN, \
556 WB_IOCTL_TS_INDEX + 8, \
557 METHOD_BUFFERED, \
558 FILE_ANY_ACCESS)
559
560#define IOCTL_WB_802_11_TS_RESET_RCV_COUNTER CTL_CODE( \
561 FILE_DEVICE_UNKNOWN, \
562 WB_IOCTL_TS_INDEX + 9, \
563 METHOD_BUFFERED, \
564 FILE_ANY_ACCESS)
565
566#define IOCTL_WB_802_11_TS_SET_TX_TRIGGER CTL_CODE( \
567 FILE_DEVICE_UNKNOWN, \
568 WB_IOCTL_TS_INDEX + 10, \
569 METHOD_BUFFERED, \
570 FILE_ANY_ACCESS)
571
572#define IOCTL_WB_802_11_TS_FAILED_TX_COUNT CTL_CODE( \
573 FILE_DEVICE_UNKNOWN, \
574 WB_IOCTL_TS_INDEX + 11, \
575 METHOD_BUFFERED, \
576 FILE_ANY_ACCESS)
577
578// [TS1]
579#define IOCTL_WB_802_11_TS_TX_POWER CTL_CODE( \
580 FILE_DEVICE_UNKNOWN, \
581 WB_IOCTL_TS_INDEX + 12, \
582 METHOD_BUFFERED, \
583 FILE_ANY_ACCESS)
584
585#define IOCTL_WB_802_11_TS_MODE_ENABLE CTL_CODE( \
586 FILE_DEVICE_UNKNOWN, \
587 WB_IOCTL_TS_INDEX + 13, \
588 METHOD_BUFFERED, \
589 FILE_ANY_ACCESS)
590
591#define IOCTL_WB_802_11_TS_MODE_DISABLE CTL_CODE( \
592 FILE_DEVICE_UNKNOWN, \
593 WB_IOCTL_TS_INDEX + 14, \
594 METHOD_BUFFERED, \
595 FILE_ANY_ACCESS)
596
597#define IOCTL_WB_802_11_TS_ANTENNA CTL_CODE( \
598 FILE_DEVICE_UNKNOWN, \
599 WB_IOCTL_TS_INDEX + 15, \
600 METHOD_BUFFERED, \
601 FILE_ANY_ACCESS)
602
603#define IOCTL_WB_802_11_TS_ADAPTER_INFO CTL_CODE( \
604 FILE_DEVICE_UNKNOWN, \
605 WB_IOCTL_TS_INDEX + 16, \
606 METHOD_BUFFERED, \
607 FILE_ANY_ACCESS)
608
609#define IOCTL_WB_802_11_TS_MAC_ADDRESS CTL_CODE( \
610 FILE_DEVICE_UNKNOWN, \
611 WB_IOCTL_TS_INDEX + 17, \
612 METHOD_BUFFERED, \
613 FILE_ANY_ACCESS)
614
615#define IOCTL_WB_802_11_TS_BSSID CTL_CODE( \
616 FILE_DEVICE_UNKNOWN, \
617 WB_IOCTL_TS_INDEX + 18, \
618 METHOD_BUFFERED, \
619 FILE_ANY_ACCESS)
620
621#define IOCTL_WB_802_11_TS_RF_PARAMETER CTL_CODE( \
622 FILE_DEVICE_UNKNOWN, \
623 WB_IOCTL_TS_INDEX + 19, \
624 METHOD_BUFFERED, \
625 FILE_ANY_ACCESS)
626
627#define IOCTL_WB_802_11_TS_FILTER CTL_CODE( \
628 FILE_DEVICE_UNKNOWN, \
629 WB_IOCTL_TS_INDEX + 20, \
630 METHOD_BUFFERED, \
631 FILE_ANY_ACCESS)
632
633#define IOCTL_WB_802_11_TS_CALIBRATION CTL_CODE( \
634 FILE_DEVICE_UNKNOWN, \
635 WB_IOCTL_TS_INDEX + 21, \
636 METHOD_BUFFERED, \
637 FILE_ANY_ACCESS)
638
639#define IOCTL_WB_802_11_TS_BSS_MODE CTL_CODE( \
640 FILE_DEVICE_UNKNOWN, \
641 WB_IOCTL_TS_INDEX + 22, \
642 METHOD_BUFFERED, \
643 FILE_ANY_ACCESS)
644
645#define IOCTL_WB_802_11_TS_SET_SSID CTL_CODE( \
646 FILE_DEVICE_UNKNOWN, \
647 WB_IOCTL_TS_INDEX + 23, \
648 METHOD_BUFFERED, \
649 FILE_ANY_ACCESS)
650
651#define IOCTL_WB_802_11_TS_IBSS_CHANNEL CTL_CODE( \
652 FILE_DEVICE_UNKNOWN, \
653 WB_IOCTL_TS_INDEX + 24, \
654 METHOD_BUFFERED, \
655 FILE_ANY_ACCESS)
656
657// set/query the slot time value(short or long slot time)
658#define IOCTL_WB_802_11_TS_SLOT_TIME CTL_CODE( \
659 FILE_DEVICE_UNKNOWN, \
660 WB_IOCTL_TS_INDEX + 25, \
661 METHOD_BUFFERED, \
662 FILE_ANY_ACCESS)
663
664#define IOCTL_WB_802_11_TS_SLOT_TIME CTL_CODE( \
665 FILE_DEVICE_UNKNOWN, \
666 WB_IOCTL_TS_INDEX + 25, \
667 METHOD_BUFFERED, \
668 FILE_ANY_ACCESS)
669
670#define IOCTL_WB_802_11_TS_RX_STATISTICS CTL_CODE( \
671 FILE_DEVICE_UNKNOWN, \
672 WB_IOCTL_TS_INDEX + 26, \
673 METHOD_BUFFERED, \
674 FILE_ANY_ACCESS)
675
676#endif // #ifndef _IOCTLS_H
677
678
diff --git a/drivers/staging/winbond/linux/common.h b/drivers/staging/winbond/linux/common.h
new file mode 100644
index 00000000000..6b00bad74f7
--- /dev/null
+++ b/drivers/staging/winbond/linux/common.h
@@ -0,0 +1,143 @@
1//
2// common.h
3//
4// This file contains the OS dependant definition and function.
5// Every OS has this file individual.
6//
7
8#define DebugUsbdStatusInformation( _A )
9
10#ifndef COMMON_DEF
11#define COMMON_DEF
12
13#include <linux/version.h>
14#include <linux/usb.h>
15#include <linux/kernel.h> //need for kernel alert
16#include <linux/autoconf.h>
17#include <linux/sched.h>
18#include <linux/signal.h>
19#include <linux/slab.h> //memory allocate
20#include <linux/module.h>
21#include <linux/netdevice.h>
22#include <linux/etherdevice.h>
23#include <linux/init.h>//need for init and exit modules marco
24#include <linux/ctype.h>
25#include <linux/wait.h>
26#include <linux/list.h>
27#include <linux/wireless.h>
28#include <linux/if_arp.h>
29#include <asm/uaccess.h>
30#include <net/iw_handler.h>
31#include <linux/skbuff.h>
32
33
34//#define DEBUG_ENABLED 1
35
36
37
38//===============================================================
39// Common type definition
40//===============================================================
41
42typedef u8* PUCHAR;
43typedef s8* PCHAR;
44typedef u8* PBOOLEAN;
45typedef u16* PUSHORT;
46typedef u32* PULONG;
47typedef s16* PSHORT;
48
49
50//===========================================
51#define IGNORE 2
52#define SUCCESS 1
53#define FAILURE 0
54
55
56#ifndef true
57#define true 1
58#endif
59
60#ifndef false
61#define false 0
62#endif
63
64// PD43 20021108
65#ifndef TRUE
66#define TRUE 1
67#endif
68
69#ifndef FALSE
70#define FALSE 0
71#endif
72
73#define STATUS_MEDIA_CONNECT 1
74#define STATUS_MEDIA_DISCONNECT 0
75
76#ifndef BIT
77#define BIT(x) (1 << (x))
78#endif
79
80typedef struct urb * PURB;
81
82
83
84//==================================================================================================
85// Common function definition
86//==================================================================================================
87#ifndef abs
88#define abs(_T) ((_T) < 0 ? -_T : _T)
89#endif
90#define DEBUG_ENABLED
91#define ETH_LENGTH_OF_ADDRESS 6
92#ifdef DEBUG_ENABLED
93#define WBDEBUG( _M ) printk _M
94#else
95#define WBDEBUG( _M ) 0
96#endif
97
98#define OS_DISCONNECTED 0
99#define OS_CONNECTED 1
100
101
102#define OS_EVENT_INDICATE( _A, _B, _F )
103#define OS_PMKID_STATUS_EVENT( _A )
104
105
106/* Uff, no, longs are not atomic on all architectures Linux
107 * supports. This should really use atomic_t */
108
109#define OS_ATOMIC u32
110#define OS_ATOMIC_READ( _A, _V ) _V
111#define OS_ATOMIC_INC( _A, _V ) EncapAtomicInc( _A, (void*)_V )
112#define OS_ATOMIC_DEC( _A, _V ) EncapAtomicDec( _A, (void*)_V )
113#define OS_MEMORY_CLEAR( _A, _S ) memset( (PUCHAR)_A,0,_S)
114#define OS_MEMORY_COMPARE( _A, _B, _S ) (memcmp(_A,_B,_S)? 0 : 1) // Definition is reverse with Ndis 1: the same 0: different
115
116
117#define OS_SPIN_LOCK spinlock_t
118#define OS_SPIN_LOCK_ALLOCATE( _S ) spin_lock_init( _S );
119#define OS_SPIN_LOCK_FREE( _S )
120#define OS_SPIN_LOCK_ACQUIRED( _S ) spin_lock_irq( _S )
121#define OS_SPIN_LOCK_RELEASED( _S ) spin_unlock_irq( _S );
122
123#define OS_TIMER struct timer_list
124#define OS_TIMER_INITIAL( _T, _F, _P ) \
125{ \
126 init_timer( _T ); \
127 (_T)->function = (void *)_F##_1a; \
128 (_T)->data = (unsigned long)_P; \
129}
130
131// _S : Millisecond
132// 20060420 At least 1 large than jiffies
133#define OS_TIMER_SET( _T, _S ) \
134{ \
135 (_T)->expires = jiffies + ((_S*HZ+999)/1000);\
136 add_timer( _T ); \
137}
138#define OS_TIMER_CANCEL( _T, _B ) del_timer_sync( _T )
139#define OS_TIMER_GET_SYS_TIME( _T ) (*_T=jiffies)
140
141
142#endif // COMMON_DEF
143
diff --git a/drivers/staging/winbond/linux/sysdef.h b/drivers/staging/winbond/linux/sysdef.h
new file mode 100644
index 00000000000..d46d63e5c67
--- /dev/null
+++ b/drivers/staging/winbond/linux/sysdef.h
@@ -0,0 +1,73 @@
1
2
3//
4// Winbond WLAN System Configuration defines
5//
6
7//=====================================================================
8// Current directory is Linux
9// The definition WB_LINUX is a keyword for this OS
10//=====================================================================
11#ifndef SYS_DEF_H
12#define SYS_DEF_H
13#define WB_LINUX
14#define WB_LINUX_WPA_PSK
15
16
17//#define _IBSS_BEACON_SEQ_STICK_
18#define _USE_FALLBACK_RATE_
19//#define ANTDIV_DEFAULT_ON
20
21#define _WPA2_ // 20061122 It's needed for current Linux driver
22
23
24#ifndef _WPA_PSK_DEBUG
25#undef _WPA_PSK_DEBUG
26#endif
27
28// debug print options, mark what debug you don't need
29
30#ifdef FULL_DEBUG
31#define _PE_STATE_DUMP_
32#define _PE_TX_DUMP_
33#define _PE_RX_DUMP_
34#define _PE_OID_DUMP_
35#define _PE_DTO_DUMP_
36#define _PE_REG_DUMP_
37#define _PE_USB_INI_DUMP_
38#endif
39
40
41
42#include "common.h" // Individual file depends on OS
43
44#include "../wb35_ver.h"
45#include "../mac_structures.h"
46#include "../ds_tkip.h"
47#include "../localpara.h"
48#include "../sme_s.h"
49#include "../scan_s.h"
50#include "../mds_s.h"
51#include "../mlme_s.h"
52#include "../bssdscpt.h"
53#include "../sme_api.h"
54#include "../gl_80211.h"
55#include "../mto.h"
56#include "../wblinux_s.h"
57#include "../wbhal_s.h"
58
59
60#include "../adapter.h"
61
62#include "../mlme_mib.h"
63#include "../mds_f.h"
64#include "../bss_f.h"
65#include "../mlmetxrx_f.h"
66#include "../mto_f.h"
67#include "../wbhal_f.h"
68#include "../wblinux_f.h"
69// Kernel Timer resolution, NDIS is 10ms, 10000us
70#define MIN_TIMEOUT_VAL (10) //ms
71
72
73#endif
diff --git a/drivers/staging/winbond/linux/wb35reg.c b/drivers/staging/winbond/linux/wb35reg.c
new file mode 100644
index 00000000000..2c0b454e8ca
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35reg.c
@@ -0,0 +1,747 @@
1#include "sysdef.h"
2
3extern void phy_calibration_winbond(hw_data_t *phw_data, u32 frequency);
4
5// TRUE : read command process successfully
6// FALSE : register not support
7// RegisterNo : start base
8// pRegisterData : data point
9// NumberOfData : number of register data
10// Flag : AUTO_INCREMENT - RegisterNo will auto increment 4
11// NO_INCREMENT - Function will write data into the same register
12unsigned char
13Wb35Reg_BurstWrite(phw_data_t pHwData, u16 RegisterNo, PULONG pRegisterData, u8 NumberOfData, u8 Flag)
14{
15 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
16 PURB pUrb = NULL;
17 PREG_QUEUE pRegQueue = NULL;
18 u16 UrbSize;
19 struct usb_ctrlrequest *dr;
20 u16 i, DataSize = NumberOfData*4;
21
22 // Module shutdown
23 if (pHwData->SurpriseRemove)
24 return FALSE;
25
26 // Trying to use burst write function if use new hardware
27 UrbSize = sizeof(REG_QUEUE) + DataSize + sizeof(struct usb_ctrlrequest);
28 OS_MEMORY_ALLOC( (void* *)&pRegQueue, UrbSize );
29 pUrb = wb_usb_alloc_urb(0);
30 if( pUrb && pRegQueue ) {
31 pRegQueue->DIRECT = 2;// burst write register
32 pRegQueue->INDEX = RegisterNo;
33 pRegQueue->pBuffer = (PULONG)((PUCHAR)pRegQueue + sizeof(REG_QUEUE));
34 memcpy( pRegQueue->pBuffer, pRegisterData, DataSize );
35 //the function for reversing register data from little endian to big endian
36 for( i=0; i<NumberOfData ; i++ )
37 pRegQueue->pBuffer[i] = cpu_to_le32( pRegQueue->pBuffer[i] );
38
39 dr = (struct usb_ctrlrequest *)((PUCHAR)pRegQueue + sizeof(REG_QUEUE) + DataSize);
40 dr->bRequestType = USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE;
41 dr->bRequest = 0x04; // USB or vendor-defined request code, burst mode
42 dr->wValue = cpu_to_le16( Flag ); // 0: Register number auto-increment, 1: No auto increment
43 dr->wIndex = cpu_to_le16( RegisterNo );
44 dr->wLength = cpu_to_le16( DataSize );
45 pRegQueue->Next = NULL;
46 pRegQueue->pUsbReq = dr;
47 pRegQueue->pUrb = pUrb;
48
49 OS_SPIN_LOCK_ACQUIRED( &pWb35Reg->EP0VM_spin_lock );
50 if (pWb35Reg->pRegFirst == NULL)
51 pWb35Reg->pRegFirst = pRegQueue;
52 else
53 pWb35Reg->pRegLast->Next = pRegQueue;
54 pWb35Reg->pRegLast = pRegQueue;
55
56 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
57
58 // Start EP0VM
59 Wb35Reg_EP0VM_start(pHwData);
60
61 return TRUE;
62 } else {
63 if (pUrb)
64 usb_free_urb(pUrb);
65 if (pRegQueue)
66 kfree(pRegQueue);
67 return FALSE;
68 }
69 return FALSE;
70}
71
72void
73Wb35Reg_Update(phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue)
74{
75 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
76 switch (RegisterNo) {
77 case 0x3b0: pWb35Reg->U1B0 = RegisterValue; break;
78 case 0x3bc: pWb35Reg->U1BC_LEDConfigure = RegisterValue; break;
79 case 0x400: pWb35Reg->D00_DmaControl = RegisterValue; break;
80 case 0x800: pWb35Reg->M00_MacControl = RegisterValue; break;
81 case 0x804: pWb35Reg->M04_MulticastAddress1 = RegisterValue; break;
82 case 0x808: pWb35Reg->M08_MulticastAddress2 = RegisterValue; break;
83 case 0x824: pWb35Reg->M24_MacControl = RegisterValue; break;
84 case 0x828: pWb35Reg->M28_MacControl = RegisterValue; break;
85 case 0x82c: pWb35Reg->M2C_MacControl = RegisterValue; break;
86 case 0x838: pWb35Reg->M38_MacControl = RegisterValue; break;
87 case 0x840: pWb35Reg->M40_MacControl = RegisterValue; break;
88 case 0x844: pWb35Reg->M44_MacControl = RegisterValue; break;
89 case 0x848: pWb35Reg->M48_MacControl = RegisterValue; break;
90 case 0x84c: pWb35Reg->M4C_MacStatus = RegisterValue; break;
91 case 0x860: pWb35Reg->M60_MacControl = RegisterValue; break;
92 case 0x868: pWb35Reg->M68_MacControl = RegisterValue; break;
93 case 0x870: pWb35Reg->M70_MacControl = RegisterValue; break;
94 case 0x874: pWb35Reg->M74_MacControl = RegisterValue; break;
95 case 0x878: pWb35Reg->M78_ERPInformation = RegisterValue; break;
96 case 0x87C: pWb35Reg->M7C_MacControl = RegisterValue; break;
97 case 0x880: pWb35Reg->M80_MacControl = RegisterValue; break;
98 case 0x884: pWb35Reg->M84_MacControl = RegisterValue; break;
99 case 0x888: pWb35Reg->M88_MacControl = RegisterValue; break;
100 case 0x898: pWb35Reg->M98_MacControl = RegisterValue; break;
101 case 0x100c: pWb35Reg->BB0C = RegisterValue; break;
102 case 0x102c: pWb35Reg->BB2C = RegisterValue; break;
103 case 0x1030: pWb35Reg->BB30 = RegisterValue; break;
104 case 0x103c: pWb35Reg->BB3C = RegisterValue; break;
105 case 0x1048: pWb35Reg->BB48 = RegisterValue; break;
106 case 0x104c: pWb35Reg->BB4C = RegisterValue; break;
107 case 0x1050: pWb35Reg->BB50 = RegisterValue; break;
108 case 0x1054: pWb35Reg->BB54 = RegisterValue; break;
109 case 0x1058: pWb35Reg->BB58 = RegisterValue; break;
110 case 0x105c: pWb35Reg->BB5C = RegisterValue; break;
111 case 0x1060: pWb35Reg->BB60 = RegisterValue; break;
112 }
113}
114
115// TRUE : read command process successfully
116// FALSE : register not support
117unsigned char
118Wb35Reg_WriteSync( phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue )
119{
120 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
121 int ret = -1;
122
123 // Module shutdown
124 if (pHwData->SurpriseRemove)
125 return FALSE;
126
127 RegisterValue = cpu_to_le32(RegisterValue);
128
129 // update the register by send usb message------------------------------------
130 pWb35Reg->SyncIoPause = 1;
131
132 // 20060717.5 Wait until EP0VM stop
133 while (pWb35Reg->EP0vm_state != VM_STOP)
134 OS_SLEEP(10000);
135
136 // Sync IoCallDriver
137 pWb35Reg->EP0vm_state = VM_RUNNING;
138 ret = usb_control_msg( pHwData->WbUsb.udev,
139 usb_sndctrlpipe( pHwData->WbUsb.udev, 0 ),
140 0x03, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
141 0x0,RegisterNo, &RegisterValue, 4, HZ*100 );
142 pWb35Reg->EP0vm_state = VM_STOP;
143 pWb35Reg->SyncIoPause = 0;
144
145 Wb35Reg_EP0VM_start(pHwData);
146
147 if (ret < 0) {
148 #ifdef _PE_REG_DUMP_
149 WBDEBUG(("EP0 Write register usb message sending error\n"));
150 #endif
151
152 pHwData->SurpriseRemove = 1; // 20060704.2
153 return FALSE;
154 }
155
156 return TRUE;
157}
158
159// TRUE : read command process successfully
160// FALSE : register not support
161unsigned char
162Wb35Reg_Write( phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue )
163{
164 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
165 struct usb_ctrlrequest *dr;
166 PURB pUrb = NULL;
167 PREG_QUEUE pRegQueue = NULL;
168 u16 UrbSize;
169
170
171 // Module shutdown
172 if (pHwData->SurpriseRemove)
173 return FALSE;
174
175 // update the register by send urb request------------------------------------
176 UrbSize = sizeof(REG_QUEUE) + sizeof(struct usb_ctrlrequest);
177 OS_MEMORY_ALLOC( (void* *)&pRegQueue, UrbSize );
178 pUrb = wb_usb_alloc_urb(0);
179 if (pUrb && pRegQueue) {
180 pRegQueue->DIRECT = 1;// burst write register
181 pRegQueue->INDEX = RegisterNo;
182 pRegQueue->VALUE = cpu_to_le32(RegisterValue);
183 pRegQueue->RESERVED_VALID = FALSE;
184 dr = (struct usb_ctrlrequest *)((PUCHAR)pRegQueue + sizeof(REG_QUEUE));
185 dr->bRequestType = USB_TYPE_VENDOR|USB_DIR_OUT |USB_RECIP_DEVICE;
186 dr->bRequest = 0x03; // USB or vendor-defined request code, burst mode
187 dr->wValue = cpu_to_le16(0x0);
188 dr->wIndex = cpu_to_le16(RegisterNo);
189 dr->wLength = cpu_to_le16(4);
190
191 // Enter the sending queue
192 pRegQueue->Next = NULL;
193 pRegQueue->pUsbReq = dr;
194 pRegQueue->pUrb = pUrb;
195
196 OS_SPIN_LOCK_ACQUIRED(&pWb35Reg->EP0VM_spin_lock );
197 if (pWb35Reg->pRegFirst == NULL)
198 pWb35Reg->pRegFirst = pRegQueue;
199 else
200 pWb35Reg->pRegLast->Next = pRegQueue;
201 pWb35Reg->pRegLast = pRegQueue;
202
203 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
204
205 // Start EP0VM
206 Wb35Reg_EP0VM_start(pHwData);
207
208 return TRUE;
209 } else {
210 if (pUrb)
211 usb_free_urb(pUrb);
212 kfree(pRegQueue);
213 return FALSE;
214 }
215}
216
217//This command will be executed with a user defined value. When it completes,
218//this value is useful. For example, hal_set_current_channel will use it.
219// TRUE : read command process successfully
220// FALSE : register not support
221unsigned char
222Wb35Reg_WriteWithCallbackValue( phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue,
223 PCHAR pValue, s8 Len)
224{
225 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
226 struct usb_ctrlrequest *dr;
227 PURB pUrb = NULL;
228 PREG_QUEUE pRegQueue = NULL;
229 u16 UrbSize;
230
231 // Module shutdown
232 if (pHwData->SurpriseRemove)
233 return FALSE;
234
235 // update the register by send urb request------------------------------------
236 UrbSize = sizeof(REG_QUEUE) + sizeof(struct usb_ctrlrequest);
237 OS_MEMORY_ALLOC((void* *) &pRegQueue, UrbSize );
238 pUrb = wb_usb_alloc_urb(0);
239 if (pUrb && pRegQueue) {
240 pRegQueue->DIRECT = 1;// burst write register
241 pRegQueue->INDEX = RegisterNo;
242 pRegQueue->VALUE = cpu_to_le32(RegisterValue);
243 //NOTE : Users must guarantee the size of value will not exceed the buffer size.
244 memcpy(pRegQueue->RESERVED, pValue, Len);
245 pRegQueue->RESERVED_VALID = TRUE;
246 dr = (struct usb_ctrlrequest *)((PUCHAR)pRegQueue + sizeof(REG_QUEUE));
247 dr->bRequestType = USB_TYPE_VENDOR|USB_DIR_OUT |USB_RECIP_DEVICE;
248 dr->bRequest = 0x03; // USB or vendor-defined request code, burst mode
249 dr->wValue = cpu_to_le16(0x0);
250 dr->wIndex = cpu_to_le16(RegisterNo);
251 dr->wLength = cpu_to_le16(4);
252
253 // Enter the sending queue
254 pRegQueue->Next = NULL;
255 pRegQueue->pUsbReq = dr;
256 pRegQueue->pUrb = pUrb;
257 OS_SPIN_LOCK_ACQUIRED (&pWb35Reg->EP0VM_spin_lock );
258 if( pWb35Reg->pRegFirst == NULL )
259 pWb35Reg->pRegFirst = pRegQueue;
260 else
261 pWb35Reg->pRegLast->Next = pRegQueue;
262 pWb35Reg->pRegLast = pRegQueue;
263
264 OS_SPIN_LOCK_RELEASED ( &pWb35Reg->EP0VM_spin_lock );
265
266 // Start EP0VM
267 Wb35Reg_EP0VM_start(pHwData);
268 return TRUE;
269 } else {
270 if (pUrb)
271 usb_free_urb(pUrb);
272 kfree(pRegQueue);
273 return FALSE;
274 }
275}
276
277// TRUE : read command process successfully
278// FALSE : register not support
279// pRegisterValue : It must be a resident buffer due to asynchronous read register.
280unsigned char
281Wb35Reg_ReadSync( phw_data_t pHwData, u16 RegisterNo, PULONG pRegisterValue )
282{
283 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
284 PULONG pltmp = pRegisterValue;
285 int ret = -1;
286
287 // Module shutdown
288 if (pHwData->SurpriseRemove)
289 return FALSE;
290
291 // Read the register by send usb message------------------------------------
292
293 pWb35Reg->SyncIoPause = 1;
294
295 // 20060717.5 Wait until EP0VM stop
296 while (pWb35Reg->EP0vm_state != VM_STOP)
297 OS_SLEEP(10000);
298
299 pWb35Reg->EP0vm_state = VM_RUNNING;
300 ret = usb_control_msg( pHwData->WbUsb.udev,
301 usb_rcvctrlpipe(pHwData->WbUsb.udev, 0),
302 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
303 0x0, RegisterNo, pltmp, 4, HZ*100 );
304
305 *pRegisterValue = cpu_to_le32(*pltmp);
306
307 pWb35Reg->EP0vm_state = VM_STOP;
308
309 Wb35Reg_Update( pHwData, RegisterNo, *pRegisterValue );
310 pWb35Reg->SyncIoPause = 0;
311
312 Wb35Reg_EP0VM_start( pHwData );
313
314 if (ret < 0) {
315 #ifdef _PE_REG_DUMP_
316 WBDEBUG(("EP0 Read register usb message sending error\n"));
317 #endif
318
319 pHwData->SurpriseRemove = 1; // 20060704.2
320 return FALSE;
321 }
322
323 return TRUE;
324}
325
326// TRUE : read command process successfully
327// FALSE : register not support
328// pRegisterValue : It must be a resident buffer due to asynchronous read register.
329unsigned char
330Wb35Reg_Read(phw_data_t pHwData, u16 RegisterNo, PULONG pRegisterValue )
331{
332 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
333 struct usb_ctrlrequest * dr;
334 PURB pUrb;
335 PREG_QUEUE pRegQueue;
336 u16 UrbSize;
337
338 // Module shutdown
339 if (pHwData->SurpriseRemove)
340 return FALSE;
341
342 // update the variable by send Urb to read register ------------------------------------
343 UrbSize = sizeof(REG_QUEUE) + sizeof(struct usb_ctrlrequest);
344 OS_MEMORY_ALLOC( (void* *)&pRegQueue, UrbSize );
345 pUrb = wb_usb_alloc_urb(0);
346 if( pUrb && pRegQueue )
347 {
348 pRegQueue->DIRECT = 0;// read register
349 pRegQueue->INDEX = RegisterNo;
350 pRegQueue->pBuffer = pRegisterValue;
351 dr = (struct usb_ctrlrequest *)((PUCHAR)pRegQueue + sizeof(REG_QUEUE));
352 dr->bRequestType = USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN;
353 dr->bRequest = 0x01; // USB or vendor-defined request code, burst mode
354 dr->wValue = cpu_to_le16(0x0);
355 dr->wIndex = cpu_to_le16 (RegisterNo);
356 dr->wLength = cpu_to_le16 (4);
357
358 // Enter the sending queue
359 pRegQueue->Next = NULL;
360 pRegQueue->pUsbReq = dr;
361 pRegQueue->pUrb = pUrb;
362 OS_SPIN_LOCK_ACQUIRED ( &pWb35Reg->EP0VM_spin_lock );
363 if( pWb35Reg->pRegFirst == NULL )
364 pWb35Reg->pRegFirst = pRegQueue;
365 else
366 pWb35Reg->pRegLast->Next = pRegQueue;
367 pWb35Reg->pRegLast = pRegQueue;
368
369 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
370
371 // Start EP0VM
372 Wb35Reg_EP0VM_start( pHwData );
373
374 return TRUE;
375 } else {
376 if (pUrb)
377 usb_free_urb( pUrb );
378 kfree(pRegQueue);
379 return FALSE;
380 }
381}
382
383
384void
385Wb35Reg_EP0VM_start( phw_data_t pHwData )
386{
387 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
388
389 if (OS_ATOMIC_INC( pHwData->Adapter, &pWb35Reg->RegFireCount) == 1) {
390 pWb35Reg->EP0vm_state = VM_RUNNING;
391 Wb35Reg_EP0VM(pHwData);
392 } else
393 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Reg->RegFireCount );
394}
395
396void
397Wb35Reg_EP0VM(phw_data_t pHwData )
398{
399 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
400 PURB pUrb;
401 struct usb_ctrlrequest *dr;
402 PULONG pBuffer;
403 int ret = -1;
404 PREG_QUEUE pRegQueue;
405
406
407 if (pWb35Reg->SyncIoPause)
408 goto cleanup;
409
410 if (pHwData->SurpriseRemove)
411 goto cleanup;
412
413 // Get the register data and send to USB through Irp
414 OS_SPIN_LOCK_ACQUIRED( &pWb35Reg->EP0VM_spin_lock );
415 pRegQueue = pWb35Reg->pRegFirst;
416 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
417
418 if (!pRegQueue)
419 goto cleanup;
420
421 // Get an Urb, send it
422 pUrb = (PURB)pRegQueue->pUrb;
423
424 dr = pRegQueue->pUsbReq;
425 pUrb = pRegQueue->pUrb;
426 pBuffer = pRegQueue->pBuffer;
427 if (pRegQueue->DIRECT == 1) // output
428 pBuffer = &pRegQueue->VALUE;
429
430 usb_fill_control_urb( pUrb, pHwData->WbUsb.udev,
431 REG_DIRECTION(pHwData->WbUsb.udev,pRegQueue),
432 (PUCHAR)dr,pBuffer,cpu_to_le16(dr->wLength),
433 Wb35Reg_EP0VM_complete, (void*)pHwData);
434
435 pWb35Reg->EP0vm_state = VM_RUNNING;
436
437 ret = wb_usb_submit_urb( pUrb );
438
439 if (ret < 0) {
440#ifdef _PE_REG_DUMP_
441 WBDEBUG(("EP0 Irp sending error\n"));
442#endif
443 goto cleanup;
444 }
445
446 return;
447
448 cleanup:
449 pWb35Reg->EP0vm_state = VM_STOP;
450 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Reg->RegFireCount );
451}
452
453
454void
455Wb35Reg_EP0VM_complete(PURB pUrb)
456{
457 phw_data_t pHwData = (phw_data_t)pUrb->context;
458 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
459 PREG_QUEUE pRegQueue;
460
461
462 // Variable setting
463 pWb35Reg->EP0vm_state = VM_COMPLETED;
464 pWb35Reg->EP0VM_status = pUrb->status;
465
466 if (pHwData->SurpriseRemove) { // Let WbWlanHalt to handle surprise remove
467 pWb35Reg->EP0vm_state = VM_STOP;
468 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Reg->RegFireCount );
469 } else {
470 // Complete to send, remove the URB from the first
471 OS_SPIN_LOCK_ACQUIRED( &pWb35Reg->EP0VM_spin_lock );
472 pRegQueue = pWb35Reg->pRegFirst;
473 if (pRegQueue == pWb35Reg->pRegLast)
474 pWb35Reg->pRegLast = NULL;
475 pWb35Reg->pRegFirst = pWb35Reg->pRegFirst->Next;
476 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
477
478 if (pWb35Reg->EP0VM_status) {
479#ifdef _PE_REG_DUMP_
480 WBDEBUG(("EP0 IoCompleteRoutine return error\n"));
481 DebugUsbdStatusInformation( pWb35Reg->EP0VM_status );
482#endif
483 pWb35Reg->EP0vm_state = VM_STOP;
484 pHwData->SurpriseRemove = 1;
485 } else {
486 // Success. Update the result
487
488 // Start the next send
489 Wb35Reg_EP0VM(pHwData);
490 }
491
492 kfree(pRegQueue);
493 }
494
495 usb_free_urb(pUrb);
496}
497
498
499void
500Wb35Reg_destroy(phw_data_t pHwData)
501{
502 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
503 PURB pUrb;
504 PREG_QUEUE pRegQueue;
505
506
507 Uxx_power_off_procedure(pHwData);
508
509 // Wait for Reg operation completed
510 do {
511 OS_SLEEP(10000); // Delay for waiting function enter 940623.1.a
512 } while (pWb35Reg->EP0vm_state != VM_STOP);
513 OS_SLEEP(10000); // Delay for waiting function enter 940623.1.b
514
515 // Release all the data in RegQueue
516 OS_SPIN_LOCK_ACQUIRED( &pWb35Reg->EP0VM_spin_lock );
517 pRegQueue = pWb35Reg->pRegFirst;
518 while (pRegQueue) {
519 if (pRegQueue == pWb35Reg->pRegLast)
520 pWb35Reg->pRegLast = NULL;
521 pWb35Reg->pRegFirst = pWb35Reg->pRegFirst->Next;
522
523 pUrb = pRegQueue->pUrb;
524 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
525 if (pUrb) {
526 usb_free_urb(pUrb);
527 kfree(pRegQueue);
528 } else {
529 #ifdef _PE_REG_DUMP_
530 WBDEBUG(("EP0 queue release error\n"));
531 #endif
532 }
533 OS_SPIN_LOCK_ACQUIRED( &pWb35Reg->EP0VM_spin_lock );
534
535 pRegQueue = pWb35Reg->pRegFirst;
536 }
537 OS_SPIN_LOCK_RELEASED( &pWb35Reg->EP0VM_spin_lock );
538
539 // Free resource
540 OS_SPIN_LOCK_FREE( &pWb35Reg->EP0VM_spin_lock );
541}
542
543//====================================================================================
544// The function can be run in passive-level only.
545//====================================================================================
546unsigned char Wb35Reg_initial(phw_data_t pHwData)
547{
548 PWB35REG pWb35Reg=&pHwData->Wb35Reg;
549 u32 ltmp;
550 u32 SoftwareSet, VCO_trim, TxVga, Region_ScanInterval;
551
552 // Spin lock is acquired for read and write IRP command
553 OS_SPIN_LOCK_ALLOCATE( &pWb35Reg->EP0VM_spin_lock );
554
555 // Getting RF module type from EEPROM ------------------------------------
556 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x080d0000 ); // Start EEPROM access + Read + address(0x0d)
557 Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp );
558
559 //Update RF module type and determine the PHY type by inf or EEPROM
560 pWb35Reg->EEPROMPhyType = (u8)( ltmp & 0xff );
561 // 0 V MAX2825, 1 V MAX2827, 2 V MAX2828, 3 V MAX2829
562 // 16V AL2230, 17 - AL7230, 18 - AL2230S
563 // 32 Reserved
564 // 33 - W89RF242(TxVGA 0~19), 34 - W89RF242(TxVGA 0~34)
565 if (pWb35Reg->EEPROMPhyType != RF_DECIDE_BY_INF) {
566 if( (pWb35Reg->EEPROMPhyType == RF_MAXIM_2825) ||
567 (pWb35Reg->EEPROMPhyType == RF_MAXIM_2827) ||
568 (pWb35Reg->EEPROMPhyType == RF_MAXIM_2828) ||
569 (pWb35Reg->EEPROMPhyType == RF_MAXIM_2829) ||
570 (pWb35Reg->EEPROMPhyType == RF_MAXIM_V1) ||
571 (pWb35Reg->EEPROMPhyType == RF_AIROHA_2230) ||
572 (pWb35Reg->EEPROMPhyType == RF_AIROHA_2230S) ||
573 (pWb35Reg->EEPROMPhyType == RF_AIROHA_7230) ||
574 (pWb35Reg->EEPROMPhyType == RF_WB_242) ||
575 (pWb35Reg->EEPROMPhyType == RF_WB_242_1))
576 pHwData->phy_type = pWb35Reg->EEPROMPhyType;
577 }
578
579 // Power On procedure running. The relative parameter will be set according to phy_type
580 Uxx_power_on_procedure( pHwData );
581
582 // Reading MAC address
583 Uxx_ReadEthernetAddress( pHwData );
584
585 // Read VCO trim for RF parameter
586 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08200000 );
587 Wb35Reg_ReadSync( pHwData, 0x03b4, &VCO_trim );
588
589 // Read Antenna On/Off of software flag
590 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08210000 );
591 Wb35Reg_ReadSync( pHwData, 0x03b4, &SoftwareSet );
592
593 // Read TXVGA
594 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08100000 );
595 Wb35Reg_ReadSync( pHwData, 0x03b4, &TxVga );
596
597 // Get Scan interval setting from EEPROM offset 0x1c
598 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x081d0000 );
599 Wb35Reg_ReadSync( pHwData, 0x03b4, &Region_ScanInterval );
600
601 // Update Ethernet address
602 memcpy( pHwData->CurrentMacAddress, pHwData->PermanentMacAddress, ETH_LENGTH_OF_ADDRESS );
603
604 // Update software variable
605 pHwData->SoftwareSet = (u16)(SoftwareSet & 0xffff);
606 TxVga &= 0x000000ff;
607 pHwData->PowerIndexFromEEPROM = (u8)TxVga;
608 pHwData->VCO_trim = (u8)VCO_trim & 0xff;
609 if (pHwData->VCO_trim == 0xff)
610 pHwData->VCO_trim = 0x28;
611
612 pWb35Reg->EEPROMRegion = (u8)(Region_ScanInterval>>8); // 20060720
613 if( pWb35Reg->EEPROMRegion<1 || pWb35Reg->EEPROMRegion>6 )
614 pWb35Reg->EEPROMRegion = REGION_AUTO;
615
616 //For Get Tx VGA from EEPROM 20060315.5 move here
617 GetTxVgaFromEEPROM( pHwData );
618
619 // Set Scan Interval
620 pHwData->Scan_Interval = (u8)(Region_ScanInterval & 0xff) * 10;
621 if ((pHwData->Scan_Interval == 2550) || (pHwData->Scan_Interval < 10)) // Is default setting 0xff * 10
622 pHwData->Scan_Interval = SCAN_MAX_CHNL_TIME;
623
624 // Initial register
625 RFSynthesizer_initial(pHwData);
626
627 BBProcessor_initial(pHwData); // Async write, must wait until complete
628
629 Wb35Reg_phy_calibration(pHwData);
630
631 Mxx_initial(pHwData);
632 Dxx_initial(pHwData);
633
634 if (pHwData->SurpriseRemove)
635 return FALSE;
636 else
637 return TRUE; // Initial fail
638}
639
640//===================================================================================
641// CardComputeCrc --
642//
643// Description:
644// Runs the AUTODIN II CRC algorithm on buffer Buffer of length, Length.
645//
646// Arguments:
647// Buffer - the input buffer
648// Length - the length of Buffer
649//
650// Return Value:
651// The 32-bit CRC value.
652//
653// Note:
654// This is adapted from the comments in the assembly language
655// version in _GENREQ.ASM of the DWB NE1000/2000 driver.
656//==================================================================================
657u32
658CardComputeCrc(PUCHAR Buffer, u32 Length)
659{
660 u32 Crc, Carry;
661 u32 i, j;
662 u8 CurByte;
663
664 Crc = 0xffffffff;
665
666 for (i = 0; i < Length; i++) {
667
668 CurByte = Buffer[i];
669
670 for (j = 0; j < 8; j++) {
671
672 Carry = ((Crc & 0x80000000) ? 1 : 0) ^ (CurByte & 0x01);
673 Crc <<= 1;
674 CurByte >>= 1;
675
676 if (Carry) {
677 Crc =(Crc ^ 0x04c11db6) | Carry;
678 }
679 }
680 }
681
682 return Crc;
683}
684
685
686//==================================================================
687// BitReverse --
688// Reverse the bits in the input argument, dwData, which is
689// regarded as a string of bits with the length, DataLength.
690//
691// Arguments:
692// dwData :
693// DataLength :
694//
695// Return:
696// The converted value.
697//==================================================================
698u32 BitReverse( u32 dwData, u32 DataLength)
699{
700 u32 HalfLength, i, j;
701 u32 BitA, BitB;
702
703 if ( DataLength <= 0) return 0; // No conversion is done.
704 dwData = dwData & (0xffffffff >> (32 - DataLength));
705
706 HalfLength = DataLength / 2;
707 for ( i = 0, j = DataLength-1 ; i < HalfLength; i++, j--)
708 {
709 BitA = GetBit( dwData, i);
710 BitB = GetBit( dwData, j);
711 if (BitA && !BitB) {
712 dwData = ClearBit( dwData, i);
713 dwData = SetBit( dwData, j);
714 } else if (!BitA && BitB) {
715 dwData = SetBit( dwData, i);
716 dwData = ClearBit( dwData, j);
717 } else
718 {
719 // Do nothing since these two bits are of the save values.
720 }
721 }
722
723 return dwData;
724}
725
726void Wb35Reg_phy_calibration( phw_data_t pHwData )
727{
728 u32 BB3c, BB54;
729
730 if ((pHwData->phy_type == RF_WB_242) ||
731 (pHwData->phy_type == RF_WB_242_1)) {
732 phy_calibration_winbond ( pHwData, 2412 ); // Sync operation
733 Wb35Reg_ReadSync( pHwData, 0x103c, &BB3c );
734 Wb35Reg_ReadSync( pHwData, 0x1054, &BB54 );
735
736 pHwData->BB3c_cal = BB3c;
737 pHwData->BB54_cal = BB54;
738
739 RFSynthesizer_initial(pHwData);
740 BBProcessor_initial(pHwData); // Async operation
741
742 Wb35Reg_WriteSync( pHwData, 0x103c, BB3c );
743 Wb35Reg_WriteSync( pHwData, 0x1054, BB54 );
744 }
745}
746
747
diff --git a/drivers/staging/winbond/linux/wb35reg_f.h b/drivers/staging/winbond/linux/wb35reg_f.h
new file mode 100644
index 00000000000..38e2906b51a
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35reg_f.h
@@ -0,0 +1,56 @@
1//====================================
2// Interface function declare
3//====================================
4unsigned char Wb35Reg_initial( phw_data_t pHwData );
5void Uxx_power_on_procedure( phw_data_t pHwData );
6void Uxx_power_off_procedure( phw_data_t pHwData );
7void Uxx_ReadEthernetAddress( phw_data_t pHwData );
8void Dxx_initial( phw_data_t pHwData );
9void Mxx_initial( phw_data_t pHwData );
10void RFSynthesizer_initial( phw_data_t pHwData );
11//void RFSynthesizer_SwitchingChannel( phw_data_t pHwData, s8 Channel );
12void RFSynthesizer_SwitchingChannel( phw_data_t pHwData, ChanInfo Channel );
13void BBProcessor_initial( phw_data_t pHwData );
14void BBProcessor_RateChanging( phw_data_t pHwData, u8 rate ); // 20060613.1
15//void RF_RateChanging( phw_data_t pHwData, u8 rate ); // 20060626.5.c Add
16u8 RFSynthesizer_SetPowerIndex( phw_data_t pHwData, u8 PowerIndex );
17u8 RFSynthesizer_SetMaxim2828_24Power( phw_data_t, u8 index );
18u8 RFSynthesizer_SetMaxim2828_50Power( phw_data_t, u8 index );
19u8 RFSynthesizer_SetMaxim2827_24Power( phw_data_t, u8 index );
20u8 RFSynthesizer_SetMaxim2827_50Power( phw_data_t, u8 index );
21u8 RFSynthesizer_SetMaxim2825Power( phw_data_t, u8 index );
22u8 RFSynthesizer_SetAiroha2230Power( phw_data_t, u8 index );
23u8 RFSynthesizer_SetAiroha7230Power( phw_data_t, u8 index );
24u8 RFSynthesizer_SetWinbond242Power( phw_data_t, u8 index );
25void GetTxVgaFromEEPROM( phw_data_t pHwData );
26void EEPROMTxVgaAdjust( phw_data_t pHwData ); // 20060619.5 Add
27
28#define RFWriteControlData( _A, _V ) Wb35Reg_Write( _A, 0x0864, _V )
29
30void Wb35Reg_destroy( phw_data_t pHwData );
31
32unsigned char Wb35Reg_Read( phw_data_t pHwData, u16 RegisterNo, PULONG pRegisterValue );
33unsigned char Wb35Reg_ReadSync( phw_data_t pHwData, u16 RegisterNo, PULONG pRegisterValue );
34unsigned char Wb35Reg_Write( phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue );
35unsigned char Wb35Reg_WriteSync( phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue );
36unsigned char Wb35Reg_WriteWithCallbackValue( phw_data_t pHwData,
37 u16 RegisterNo,
38 u32 RegisterValue,
39 PCHAR pValue,
40 s8 Len);
41unsigned char Wb35Reg_BurstWrite( phw_data_t pHwData, u16 RegisterNo, PULONG pRegisterData, u8 NumberOfData, u8 Flag );
42
43void Wb35Reg_EP0VM( phw_data_t pHwData );
44void Wb35Reg_EP0VM_start( phw_data_t pHwData );
45void Wb35Reg_EP0VM_complete( PURB pUrb );
46
47u32 BitReverse( u32 dwData, u32 DataLength);
48
49void CardGetMulticastBit( u8 Address[MAC_ADDR_LENGTH], u8 *Byte, u8 *Value );
50u32 CardComputeCrc( PUCHAR Buffer, u32 Length );
51
52void Wb35Reg_phy_calibration( phw_data_t pHwData );
53void Wb35Reg_Update( phw_data_t pHwData, u16 RegisterNo, u32 RegisterValue );
54unsigned char adjust_TXVGA_for_iq_mag( phw_data_t pHwData );
55
56
diff --git a/drivers/staging/winbond/linux/wb35reg_s.h b/drivers/staging/winbond/linux/wb35reg_s.h
new file mode 100644
index 00000000000..a7595b1e733
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35reg_s.h
@@ -0,0 +1,170 @@
1//=======================================================================================
2/*
3 HAL setting function
4
5 ========================================
6 |Uxx| |Dxx| |Mxx| |BB| |RF|
7 ========================================
8 | |
9 Wb35Reg_Read Wb35Reg_Write
10
11 ----------------------------------------
12 WbUsb_CallUSBDASync supplied By WbUsb module
13*/
14//=======================================================================================
15
16#define GetBit( dwData, i) ( dwData & (0x00000001 << i))
17#define SetBit( dwData, i) ( dwData | (0x00000001 << i))
18#define ClearBit( dwData, i) ( dwData & ~(0x00000001 << i))
19
20#define IGNORE_INCREMENT 0
21#define AUTO_INCREMENT 0
22#define NO_INCREMENT 1
23#define REG_DIRECTION(_x,_y) ((_y)->DIRECT ==0 ? usb_rcvctrlpipe(_x,0) : usb_sndctrlpipe(_x,0))
24#define REG_BUF_SIZE(_x) ((_x)->bRequest== 0x04 ? cpu_to_le16((_x)->wLength) : 4)
25
26// 20060613.2 Add the follow definition
27#define BB48_DEFAULT_AL2230_11B 0x0033447c
28#define BB4C_DEFAULT_AL2230_11B 0x0A00FEFF
29#define BB48_DEFAULT_AL2230_11G 0x00332C1B
30#define BB4C_DEFAULT_AL2230_11G 0x0A00FEFF
31
32
33#define BB48_DEFAULT_WB242_11B 0x00292315 //backoff 2dB
34#define BB4C_DEFAULT_WB242_11B 0x0800FEFF //backoff 2dB
35//#define BB48_DEFAULT_WB242_11B 0x00201B11 //backoff 4dB
36//#define BB4C_DEFAULT_WB242_11B 0x0600FF00 //backoff 4dB
37#define BB48_DEFAULT_WB242_11G 0x00453B24
38#define BB4C_DEFAULT_WB242_11G 0x0E00FEFF
39
40//====================================
41// Default setting for Mxx
42//====================================
43#define DEFAULT_CWMIN 31 //(M2C) CWmin. Its value is in the range 0-31.
44#define DEFAULT_CWMAX 1023 //(M2C) CWmax. Its value is in the range 0-1023.
45#define DEFAULT_AID 1 //(M34) AID. Its value is in the range 1-2007.
46
47#ifdef _USE_FALLBACK_RATE_
48#define DEFAULT_RATE_RETRY_LIMIT 2 //(M38) as named
49#else
50#define DEFAULT_RATE_RETRY_LIMIT 7 //(M38) as named
51#endif
52
53#define DEFAULT_LONG_RETRY_LIMIT 7 //(M38) LongRetryLimit. Its value is in the range 0-15.
54#define DEFAULT_SHORT_RETRY_LIMIT 7 //(M38) ShortRetryLimit. Its value is in the range 0-15.
55#define DEFAULT_PIFST 25 //(M3C) PIFS Time. Its value is in the range 0-65535.
56#define DEFAULT_EIFST 354 //(M3C) EIFS Time. Its value is in the range 0-1048575.
57#define DEFAULT_DIFST 45 //(M3C) DIFS Time. Its value is in the range 0-65535.
58#define DEFAULT_SIFST 5 //(M3C) SIFS Time. Its value is in the range 0-65535.
59#define DEFAULT_OSIFST 10 //(M3C) Original SIFS Time. Its value is in the range 0-15.
60#define DEFAULT_ATIMWD 0 //(M40) ATIM Window. Its value is in the range 0-65535.
61#define DEFAULT_SLOT_TIME 20 //(M40) ($) SlotTime. Its value is in the range 0-255.
62#define DEFAULT_MAX_TX_MSDU_LIFE_TIME 512 //(M44) MaxTxMSDULifeTime. Its value is in the range 0-4294967295.
63#define DEFAULT_BEACON_INTERVAL 500 //(M48) Beacon Interval. Its value is in the range 0-65535.
64#define DEFAULT_PROBE_DELAY_TIME 200 //(M48) Probe Delay Time. Its value is in the range 0-65535.
65#define DEFAULT_PROTOCOL_VERSION 0 //(M4C)
66#define DEFAULT_MAC_POWER_STATE 2 //(M4C) 2: MAC at power active
67#define DEFAULT_DTIM_ALERT_TIME 0
68
69
70typedef struct _REG_QUEUE
71{
72 struct urb *pUrb;
73 void* pUsbReq;
74 void* Next;
75 union
76 {
77 u32 VALUE;
78 PULONG pBuffer;
79 };
80 u8 RESERVED[4];// space reserved for communication
81
82 u16 INDEX; // For storing the register index
83 u8 RESERVED_VALID; //Indicate whether the RESERVED space is valid at this command.
84 u8 DIRECT; // 0:In 1:Out
85
86} REG_QUEUE, *PREG_QUEUE;
87
88//====================================
89// Internal variable for module
90//====================================
91#define MAX_SQ3_FILTER_SIZE 5
92typedef struct _WB35REG
93{
94 //============================
95 // Register Bank backup
96 //============================
97 u32 U1B0; //bit16 record the h/w radio on/off status
98 u32 U1BC_LEDConfigure;
99 u32 D00_DmaControl;
100 u32 M00_MacControl;
101 union {
102 struct {
103 u32 M04_MulticastAddress1;
104 u32 M08_MulticastAddress2;
105 };
106 u8 Multicast[8]; // contents of card multicast registers
107 };
108
109 u32 M24_MacControl;
110 u32 M28_MacControl;
111 u32 M2C_MacControl;
112 u32 M38_MacControl;
113 u32 M3C_MacControl; // 20060214 backup only
114 u32 M40_MacControl;
115 u32 M44_MacControl; // 20060214 backup only
116 u32 M48_MacControl; // 20060214 backup only
117 u32 M4C_MacStatus;
118 u32 M60_MacControl; // 20060214 backup only
119 u32 M68_MacControl; // 20060214 backup only
120 u32 M70_MacControl; // 20060214 backup only
121 u32 M74_MacControl; // 20060214 backup only
122 u32 M78_ERPInformation;//930206.2.b
123 u32 M7C_MacControl; // 20060214 backup only
124 u32 M80_MacControl; // 20060214 backup only
125 u32 M84_MacControl; // 20060214 backup only
126 u32 M88_MacControl; // 20060214 backup only
127 u32 M98_MacControl; // 20060214 backup only
128
129 //[20040722 WK]
130 //Baseband register
131 u32 BB0C; // Used for LNA calculation
132 u32 BB2C; //
133 u32 BB30; //11b acquisition control register
134 u32 BB3C;
135 u32 BB48; // 20051221.1.a 20060613.1 Fix OBW issue of 11b/11g rate
136 u32 BB4C; // 20060613.1 Fix OBW issue of 11b/11g rate
137 u32 BB50; //mode control register
138 u32 BB54;
139 u32 BB58; //IQ_ALPHA
140 u32 BB5C; // For test
141 u32 BB60; // for WTO read value
142
143 //-------------------
144 // VM
145 //-------------------
146 OS_SPIN_LOCK EP0VM_spin_lock; // 4B
147 u32 EP0VM_status;//$$
148 PREG_QUEUE pRegFirst;
149 PREG_QUEUE pRegLast;
150 OS_ATOMIC RegFireCount;
151
152 // Hardware status
153 u8 EP0vm_state;
154 u8 mac_power_save;
155 u8 EEPROMPhyType; // 0 ~ 15 for Maxim (0 Ä„V MAX2825, 1 Ä„V MAX2827, 2 Ä„V MAX2828, 3 Ä„V MAX2829),
156 // 16 ~ 31 for Airoha (16 Ä„V AL2230, 11 - AL7230)
157 // 32 ~ Reserved
158 // 33 ~ 47 For WB242 ( 33 - WB242, 34 - WB242 with new Txvga 0.5 db step)
159 // 48 ~ 255 ARE RESERVED.
160 u8 EEPROMRegion; //Region setting in EEPROM
161
162 u32 SyncIoPause; // If user use the Sync Io to access Hw, then pause the async access
163
164 u8 LNAValue[4]; //Table for speed up running
165 u32 SQ3_filter[MAX_SQ3_FILTER_SIZE];
166 u32 SQ3_index;
167
168} WB35REG, *PWB35REG;
169
170
diff --git a/drivers/staging/winbond/linux/wb35rx.c b/drivers/staging/winbond/linux/wb35rx.c
new file mode 100644
index 00000000000..26157eb3d5a
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35rx.c
@@ -0,0 +1,337 @@
1//============================================================================
2// Copyright (c) 1996-2002 Winbond Electronic Corporation
3//
4// Module Name:
5// Wb35Rx.c
6//
7// Abstract:
8// Processing the Rx message from down layer
9//
10//============================================================================
11#include "sysdef.h"
12
13
14void Wb35Rx_start(phw_data_t pHwData)
15{
16 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
17
18 // Allow only one thread to run into the Wb35Rx() function
19 if (OS_ATOMIC_INC(pHwData->Adapter, &pWb35Rx->RxFireCounter) == 1) {
20 pWb35Rx->EP3vm_state = VM_RUNNING;
21 Wb35Rx(pHwData);
22 } else
23 OS_ATOMIC_DEC(pHwData->Adapter, &pWb35Rx->RxFireCounter);
24}
25
26// This function cannot reentrain
27void Wb35Rx( phw_data_t pHwData )
28{
29 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
30 PUCHAR pRxBufferAddress;
31 PURB pUrb = (PURB)pWb35Rx->RxUrb;
32 int retv;
33 u32 RxBufferId;
34
35 //
36 // Issuing URB
37 //
38 do {
39 if (pHwData->SurpriseRemove || pHwData->HwStop)
40 break;
41
42 if (pWb35Rx->rx_halt)
43 break;
44
45 // Get RxBuffer's ID
46 RxBufferId = pWb35Rx->RxBufferId;
47 if (!pWb35Rx->RxOwner[RxBufferId]) {
48 // It's impossible to run here.
49 #ifdef _PE_RX_DUMP_
50 WBDEBUG(("Rx driver fifo unavailable\n"));
51 #endif
52 break;
53 }
54
55 // Update buffer point, then start to bulkin the data from USB
56 pWb35Rx->RxBufferId++;
57 pWb35Rx->RxBufferId %= MAX_USB_RX_BUFFER_NUMBER;
58
59 pWb35Rx->CurrentRxBufferId = RxBufferId;
60
61 if (1 != OS_MEMORY_ALLOC((void* *)&pWb35Rx->pDRx, MAX_USB_RX_BUFFER)) {
62 printk("w35und: Rx memory alloc failed\n");
63 break;
64 }
65 pRxBufferAddress = pWb35Rx->pDRx;
66
67 usb_fill_bulk_urb(pUrb, pHwData->WbUsb.udev,
68 usb_rcvbulkpipe(pHwData->WbUsb.udev, 3),
69 pRxBufferAddress, MAX_USB_RX_BUFFER,
70 Wb35Rx_Complete, pHwData);
71
72 pWb35Rx->EP3vm_state = VM_RUNNING;
73
74 retv = wb_usb_submit_urb(pUrb);
75
76 if (retv != 0) {
77 printk("Rx URB sending error\n");
78 break;
79 }
80 return;
81 } while(FALSE);
82
83 // VM stop
84 pWb35Rx->EP3vm_state = VM_STOP;
85 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Rx->RxFireCounter );
86}
87
88void Wb35Rx_Complete(PURB pUrb)
89{
90 phw_data_t pHwData = pUrb->context;
91 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
92 PUCHAR pRxBufferAddress;
93 u32 SizeCheck;
94 u16 BulkLength;
95 u32 RxBufferId;
96 R00_DESCRIPTOR R00;
97
98 // Variable setting
99 pWb35Rx->EP3vm_state = VM_COMPLETED;
100 pWb35Rx->EP3VM_status = pUrb->status;//Store the last result of Irp
101
102 do {
103 RxBufferId = pWb35Rx->CurrentRxBufferId;
104
105 pRxBufferAddress = pWb35Rx->pDRx;
106 BulkLength = (u16)pUrb->actual_length;
107
108 // The IRP is completed
109 pWb35Rx->EP3vm_state = VM_COMPLETED;
110
111 if (pHwData->SurpriseRemove || pHwData->HwStop) // Must be here, or RxBufferId is invalid
112 break;
113
114 if (pWb35Rx->rx_halt)
115 break;
116
117 // Start to process the data only in successful condition
118 pWb35Rx->RxOwner[ RxBufferId ] = 0; // Set the owner to driver
119 R00.value = le32_to_cpu(*(PULONG)pRxBufferAddress);
120
121 // The URB is completed, check the result
122 if (pWb35Rx->EP3VM_status != 0) {
123 #ifdef _PE_USB_STATE_DUMP_
124 WBDEBUG(("EP3 IoCompleteRoutine return error\n"));
125 DebugUsbdStatusInformation( pWb35Rx->EP3VM_status );
126 #endif
127 pWb35Rx->EP3vm_state = VM_STOP;
128 break;
129 }
130
131 // 20060220 For recovering. check if operating in single USB mode
132 if (!HAL_USB_MODE_BURST(pHwData)) {
133 SizeCheck = R00.R00_receive_byte_count; //20060926 anson's endian
134 if ((SizeCheck & 0x03) > 0)
135 SizeCheck -= 4;
136 SizeCheck = (SizeCheck + 3) & ~0x03;
137 SizeCheck += 12; // 8 + 4 badbeef
138 if ((BulkLength > 1600) ||
139 (SizeCheck > 1600) ||
140 (BulkLength != SizeCheck) ||
141 (BulkLength == 0)) { // Add for fail Urb
142 pWb35Rx->EP3vm_state = VM_STOP;
143 pWb35Rx->Ep3ErrorCount2++;
144 }
145 }
146
147 // Indicating the receiving data
148 pWb35Rx->ByteReceived += BulkLength;
149 pWb35Rx->RxBufferSize[ RxBufferId ] = BulkLength;
150
151 if (!pWb35Rx->RxOwner[ RxBufferId ])
152 Wb35Rx_indicate(pHwData);
153
154 kfree(pWb35Rx->pDRx);
155 // Do the next receive
156 Wb35Rx(pHwData);
157 return;
158
159 } while(FALSE);
160
161 pWb35Rx->RxOwner[ RxBufferId ] = 1; // Set the owner to hardware
162 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Rx->RxFireCounter );
163 pWb35Rx->EP3vm_state = VM_STOP;
164}
165
166//=====================================================================================
167unsigned char Wb35Rx_initial(phw_data_t pHwData)
168{
169 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
170
171 // Initial the Buffer Queue
172 Wb35Rx_reset_descriptor( pHwData );
173
174 pWb35Rx->RxUrb = wb_usb_alloc_urb(0);
175 return (!!pWb35Rx->RxUrb);
176}
177
178void Wb35Rx_stop(phw_data_t pHwData)
179{
180 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
181
182 // Canceling the Irp if already sends it out.
183 if (pWb35Rx->EP3vm_state == VM_RUNNING) {
184 usb_unlink_urb( pWb35Rx->RxUrb ); // Only use unlink, let Wb35Rx_destroy to free them
185 #ifdef _PE_RX_DUMP_
186 WBDEBUG(("EP3 Rx stop\n"));
187 #endif
188 }
189}
190
191// Needs process context
192void Wb35Rx_destroy(phw_data_t pHwData)
193{
194 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
195
196 do {
197 OS_SLEEP(10000); // Delay for waiting function enter 940623.1.a
198 } while (pWb35Rx->EP3vm_state != VM_STOP);
199 OS_SLEEP(10000); // Delay for waiting function exit 940623.1.b
200
201 if (pWb35Rx->RxUrb)
202 usb_free_urb( pWb35Rx->RxUrb );
203 #ifdef _PE_RX_DUMP_
204 WBDEBUG(("Wb35Rx_destroy OK\n"));
205 #endif
206}
207
208void Wb35Rx_reset_descriptor( phw_data_t pHwData )
209{
210 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
211 u32 i;
212
213 pWb35Rx->ByteReceived = 0;
214 pWb35Rx->RxProcessIndex = 0;
215 pWb35Rx->RxBufferId = 0;
216 pWb35Rx->EP3vm_state = VM_STOP;
217 pWb35Rx->rx_halt = 0;
218
219 // Initial the Queue. The last buffer is reserved for used if the Rx resource is unavailable.
220 for( i=0; i<MAX_USB_RX_BUFFER_NUMBER; i++ )
221 pWb35Rx->RxOwner[i] = 1;
222}
223
224void Wb35Rx_adjust(PDESCRIPTOR pRxDes)
225{
226 PULONG pRxBufferAddress;
227 u32 DecryptionMethod;
228 u32 i;
229 u16 BufferSize;
230
231 DecryptionMethod = pRxDes->R01.R01_decryption_method;
232 pRxBufferAddress = pRxDes->buffer_address[0];
233 BufferSize = pRxDes->buffer_size[0];
234
235 // Adjust the last part of data. Only data left
236 BufferSize -= 4; // For CRC-32
237 if (DecryptionMethod)
238 BufferSize -= 4;
239 if (DecryptionMethod == 3) // For CCMP
240 BufferSize -= 4;
241
242 // Adjust the IV field which after 802.11 header and ICV field.
243 if (DecryptionMethod == 1) // For WEP
244 {
245 for( i=6; i>0; i-- )
246 pRxBufferAddress[i] = pRxBufferAddress[i-1];
247 pRxDes->buffer_address[0] = pRxBufferAddress + 1;
248 BufferSize -= 4; // 4 byte for IV
249 }
250 else if( DecryptionMethod ) // For TKIP and CCMP
251 {
252 for (i=7; i>1; i--)
253 pRxBufferAddress[i] = pRxBufferAddress[i-2];
254 pRxDes->buffer_address[0] = pRxBufferAddress + 2;//Update the descriptor, shift 8 byte
255 BufferSize -= 8; // 8 byte for IV + ICV
256 }
257 pRxDes->buffer_size[0] = BufferSize;
258}
259
260extern void packet_came(char *pRxBufferAddress, int PacketSize);
261
262
263u16 Wb35Rx_indicate(phw_data_t pHwData)
264{
265 DESCRIPTOR RxDes;
266 PWB35RX pWb35Rx = &pHwData->Wb35Rx;
267 PUCHAR pRxBufferAddress;
268 u16 PacketSize;
269 u16 stmp, BufferSize, stmp2 = 0;
270 u32 RxBufferId;
271
272 // Only one thread be allowed to run into the following
273 do {
274 RxBufferId = pWb35Rx->RxProcessIndex;
275 if (pWb35Rx->RxOwner[ RxBufferId ]) //Owner by VM
276 break;
277
278 pWb35Rx->RxProcessIndex++;
279 pWb35Rx->RxProcessIndex %= MAX_USB_RX_BUFFER_NUMBER;
280
281 pRxBufferAddress = pWb35Rx->pDRx;
282 BufferSize = pWb35Rx->RxBufferSize[ RxBufferId ];
283
284 // Parse the bulkin buffer
285 while (BufferSize >= 4) {
286 if ((cpu_to_le32(*(PULONG)pRxBufferAddress) & 0x0fffffff) == RX_END_TAG) //Is ending? 921002.9.a
287 break;
288
289 // Get the R00 R01 first
290 RxDes.R00.value = le32_to_cpu(*(PULONG)pRxBufferAddress);
291 PacketSize = (u16)RxDes.R00.R00_receive_byte_count;
292 RxDes.R01.value = le32_to_cpu(*((PULONG)(pRxBufferAddress+4)));
293 // For new DMA 4k
294 if ((PacketSize & 0x03) > 0)
295 PacketSize -= 4;
296
297 // Basic check for Rx length. Is length valid?
298 if (PacketSize > MAX_PACKET_SIZE) {
299 #ifdef _PE_RX_DUMP_
300 WBDEBUG(("Serious ERROR : Rx data size too long, size =%d\n", PacketSize));
301 #endif
302
303 pWb35Rx->EP3vm_state = VM_STOP;
304 pWb35Rx->Ep3ErrorCount2++;
305 break;
306 }
307
308 // Start to process Rx buffer
309// RxDes.Descriptor_ID = RxBufferId; // Due to synchronous indicate, the field doesn't necessary to use.
310 BufferSize -= 8; //subtract 8 byte for 35's USB header length
311 pRxBufferAddress += 8;
312
313 RxDes.buffer_address[0] = pRxBufferAddress;
314 RxDes.buffer_size[0] = PacketSize;
315 RxDes.buffer_number = 1;
316 RxDes.buffer_start_index = 0;
317 RxDes.buffer_total_size = RxDes.buffer_size[0];
318 Wb35Rx_adjust(&RxDes);
319
320 packet_came(pRxBufferAddress, PacketSize);
321
322 // Move RxBuffer point to the next
323 stmp = PacketSize + 3;
324 stmp &= ~0x03; // 4n alignment
325 pRxBufferAddress += stmp;
326 BufferSize -= stmp;
327 stmp2 += stmp;
328 }
329
330 // Reclaim resource
331 pWb35Rx->RxOwner[ RxBufferId ] = 1;
332 } while(TRUE);
333
334 return stmp2;
335}
336
337
diff --git a/drivers/staging/winbond/linux/wb35rx_f.h b/drivers/staging/winbond/linux/wb35rx_f.h
new file mode 100644
index 00000000000..daa3e73042b
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35rx_f.h
@@ -0,0 +1,17 @@
1//====================================
2// Interface function declare
3//====================================
4void Wb35Rx_reset_descriptor( phw_data_t pHwData );
5unsigned char Wb35Rx_initial( phw_data_t pHwData );
6void Wb35Rx_destroy( phw_data_t pHwData );
7void Wb35Rx_stop( phw_data_t pHwData );
8u16 Wb35Rx_indicate( phw_data_t pHwData );
9void Wb35Rx_adjust( PDESCRIPTOR pRxDes );
10void Wb35Rx_start( phw_data_t pHwData );
11
12void Wb35Rx( phw_data_t pHwData );
13void Wb35Rx_Complete( PURB pUrb );
14
15
16
17
diff --git a/drivers/staging/winbond/linux/wb35rx_s.h b/drivers/staging/winbond/linux/wb35rx_s.h
new file mode 100644
index 00000000000..53b831fdeb7
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35rx_s.h
@@ -0,0 +1,48 @@
1//============================================================================
2// wb35rx.h --
3//============================================================================
4
5// Definition for this module used
6#define MAX_USB_RX_BUFFER 4096 // This parameter must be 4096 931130.4.f
7
8#define MAX_USB_RX_BUFFER_NUMBER ETHERNET_RX_DESCRIPTORS // Maximum 254, 255 is RESERVED ID
9#define RX_INTERFACE 0 // Interface 1
10#define RX_PIPE 2 // Pipe 3
11#define MAX_PACKET_SIZE 1600 //1568 // 8 + 1532 + 4 + 24(IV EIV MIC ICV CRC) for check DMA data 931130.4.g
12#define RX_END_TAG 0x0badbeef
13
14
15//====================================
16// Internal variable for module
17//====================================
18typedef struct _WB35RX
19{
20 u32 ByteReceived;// For calculating throughput of BulkIn
21 OS_ATOMIC RxFireCounter;// Does Wb35Rx module fire?
22
23 u8 RxBuffer[ MAX_USB_RX_BUFFER_NUMBER ][ ((MAX_USB_RX_BUFFER+3) & ~0x03 ) ];
24 u16 RxBufferSize[ ((MAX_USB_RX_BUFFER_NUMBER+1) & ~0x01) ];
25 u8 RxOwner[ ((MAX_USB_RX_BUFFER_NUMBER+3) & ~0x03 ) ];//Ownership of buffer 0: SW 1:HW
26
27 u32 RxProcessIndex;//The next index to process
28 u32 RxBufferId;
29 u32 EP3vm_state;
30
31 u32 rx_halt; // For VM stopping
32
33 u16 MoreDataSize;
34 u16 PacketSize;
35
36 u32 CurrentRxBufferId; // For complete routine usage
37 u32 Rx3UrbCancel;
38
39 u32 LastR1; // For RSSI reporting
40 struct urb * RxUrb;
41 u32 Ep3ErrorCount2; // 20060625.1 Usbd for Rx DMA error count
42
43 int EP3VM_status;
44 PUCHAR pDRx;
45
46} WB35RX, *PWB35RX;
47
48
diff --git a/drivers/staging/winbond/linux/wb35tx.c b/drivers/staging/winbond/linux/wb35tx.c
new file mode 100644
index 00000000000..cf19c3bc524
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35tx.c
@@ -0,0 +1,313 @@
1//============================================================================
2// Copyright (c) 1996-2002 Winbond Electronic Corporation
3//
4// Module Name:
5// Wb35Tx.c
6//
7// Abstract:
8// Processing the Tx message and put into down layer
9//
10//============================================================================
11#include "sysdef.h"
12
13
14unsigned char
15Wb35Tx_get_tx_buffer(phw_data_t pHwData, PUCHAR *pBuffer )
16{
17 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
18
19 *pBuffer = pWb35Tx->TxBuffer[0];
20 return TRUE;
21}
22
23void Wb35Tx_start(phw_data_t pHwData)
24{
25 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
26
27 // Allow only one thread to run into function
28 if (OS_ATOMIC_INC(pHwData->Adapter, &pWb35Tx->TxFireCounter) == 1) {
29 pWb35Tx->EP4vm_state = VM_RUNNING;
30 Wb35Tx(pHwData);
31 } else
32 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Tx->TxFireCounter );
33}
34
35
36void Wb35Tx(phw_data_t pHwData)
37{
38 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
39 PADAPTER Adapter = pHwData->Adapter;
40 PUCHAR pTxBufferAddress;
41 PMDS pMds = &Adapter->Mds;
42 struct urb * pUrb = (struct urb *)pWb35Tx->Tx4Urb;
43 int retv;
44 u32 SendIndex;
45
46
47 if (pHwData->SurpriseRemove || pHwData->HwStop)
48 goto cleanup;
49
50 if (pWb35Tx->tx_halt)
51 goto cleanup;
52
53 // Ownership checking
54 SendIndex = pWb35Tx->TxSendIndex;
55 if (!pMds->TxOwner[SendIndex]) //No more data need to be sent, return immediately
56 goto cleanup;
57
58 pTxBufferAddress = pWb35Tx->TxBuffer[SendIndex];
59 //
60 // Issuing URB
61 //
62 usb_fill_bulk_urb(pUrb, pHwData->WbUsb.udev,
63 usb_sndbulkpipe(pHwData->WbUsb.udev, 4),
64 pTxBufferAddress, pMds->TxBufferSize[ SendIndex ],
65 Wb35Tx_complete, pHwData);
66
67 pWb35Tx->EP4vm_state = VM_RUNNING;
68 retv = wb_usb_submit_urb( pUrb );
69 if (retv<0) {
70 printk("EP4 Tx Irp sending error\n");
71 goto cleanup;
72 }
73
74 // Check if driver needs issue Irp for EP2
75 pWb35Tx->TxFillCount += pMds->TxCountInBuffer[SendIndex];
76 if (pWb35Tx->TxFillCount > 12)
77 Wb35Tx_EP2VM_start( pHwData );
78
79 pWb35Tx->ByteTransfer += pMds->TxBufferSize[SendIndex];
80 return;
81
82 cleanup:
83 pWb35Tx->EP4vm_state = VM_STOP;
84 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Tx->TxFireCounter );
85}
86
87
88void Wb35Tx_complete(struct urb * pUrb)
89{
90 phw_data_t pHwData = pUrb->context;
91 PADAPTER Adapter = (PADAPTER)pHwData->Adapter;
92 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
93 PMDS pMds = &Adapter->Mds;
94
95 printk("wb35: tx complete\n");
96 // Variable setting
97 pWb35Tx->EP4vm_state = VM_COMPLETED;
98 pWb35Tx->EP4VM_status = pUrb->status; //Store the last result of Irp
99 pMds->TxOwner[ pWb35Tx->TxSendIndex ] = 0;// Set the owner. Free the owner bit always.
100 pWb35Tx->TxSendIndex++;
101 pWb35Tx->TxSendIndex %= MAX_USB_TX_BUFFER_NUMBER;
102
103 do {
104 if (pHwData->SurpriseRemove || pHwData->HwStop) // Let WbWlanHalt to handle surprise remove
105 break;
106
107 if (pWb35Tx->tx_halt)
108 break;
109
110 // The URB is completed, check the result
111 if (pWb35Tx->EP4VM_status != 0) {
112 printk("URB submission failed\n");
113 pWb35Tx->EP4vm_state = VM_STOP;
114 break; // Exit while(FALSE);
115 }
116
117 Mds_Tx(Adapter);
118 Wb35Tx(pHwData);
119 return;
120 } while(FALSE);
121
122 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Tx->TxFireCounter );
123 pWb35Tx->EP4vm_state = VM_STOP;
124}
125
126void Wb35Tx_reset_descriptor( phw_data_t pHwData )
127{
128 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
129
130 pWb35Tx->TxSendIndex = 0;
131 pWb35Tx->tx_halt = 0;
132}
133
134unsigned char Wb35Tx_initial(phw_data_t pHwData)
135{
136 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
137
138 pWb35Tx->Tx4Urb = wb_usb_alloc_urb(0);
139 if (!pWb35Tx->Tx4Urb)
140 return FALSE;
141
142 pWb35Tx->Tx2Urb = wb_usb_alloc_urb(0);
143 if (!pWb35Tx->Tx2Urb)
144 {
145 usb_free_urb( pWb35Tx->Tx4Urb );
146 return FALSE;
147 }
148
149 return TRUE;
150}
151
152//======================================================
153void Wb35Tx_stop(phw_data_t pHwData)
154{
155 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
156
157 // Trying to canceling the Trp of EP2
158 if (pWb35Tx->EP2vm_state == VM_RUNNING)
159 usb_unlink_urb( pWb35Tx->Tx2Urb ); // Only use unlink, let Wb35Tx_destrot to free them
160 #ifdef _PE_TX_DUMP_
161 WBDEBUG(("EP2 Tx stop\n"));
162 #endif
163
164 // Trying to canceling the Irp of EP4
165 if (pWb35Tx->EP4vm_state == VM_RUNNING)
166 usb_unlink_urb( pWb35Tx->Tx4Urb ); // Only use unlink, let Wb35Tx_destrot to free them
167 #ifdef _PE_TX_DUMP_
168 WBDEBUG(("EP4 Tx stop\n"));
169 #endif
170}
171
172//======================================================
173void Wb35Tx_destroy(phw_data_t pHwData)
174{
175 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
176
177 // Wait for VM stop
178 do {
179 OS_SLEEP(10000); // Delay for waiting function enter 940623.1.a
180 } while( (pWb35Tx->EP2vm_state != VM_STOP) && (pWb35Tx->EP4vm_state != VM_STOP) );
181 OS_SLEEP(10000); // Delay for waiting function enter 940623.1.b
182
183 if (pWb35Tx->Tx4Urb)
184 usb_free_urb( pWb35Tx->Tx4Urb );
185
186 if (pWb35Tx->Tx2Urb)
187 usb_free_urb( pWb35Tx->Tx2Urb );
188
189 #ifdef _PE_TX_DUMP_
190 WBDEBUG(("Wb35Tx_destroy OK\n"));
191 #endif
192}
193
194void Wb35Tx_CurrentTime(phw_data_t pHwData, u32 TimeCount)
195{
196 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
197 unsigned char Trigger = FALSE;
198
199 if (pWb35Tx->TxTimer > TimeCount)
200 Trigger = TRUE;
201 else if (TimeCount > (pWb35Tx->TxTimer+500))
202 Trigger = TRUE;
203
204 if (Trigger) {
205 pWb35Tx->TxTimer = TimeCount;
206 Wb35Tx_EP2VM_start( pHwData );
207 }
208}
209
210void Wb35Tx_EP2VM_start(phw_data_t pHwData)
211{
212 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
213
214 // Allow only one thread to run into function
215 if (OS_ATOMIC_INC( pHwData->Adapter, &pWb35Tx->TxResultCount ) == 1) {
216 pWb35Tx->EP2vm_state = VM_RUNNING;
217 Wb35Tx_EP2VM( pHwData );
218 }
219 else
220 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Tx->TxResultCount );
221}
222
223
224void Wb35Tx_EP2VM(phw_data_t pHwData)
225{
226 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
227 struct urb * pUrb = (struct urb *)pWb35Tx->Tx2Urb;
228 PULONG pltmp = (PULONG)pWb35Tx->EP2_buf;
229 int retv;
230
231 do {
232 if (pHwData->SurpriseRemove || pHwData->HwStop)
233 break;
234
235 if (pWb35Tx->tx_halt)
236 break;
237
238 //
239 // Issuing URB
240 //
241 usb_fill_int_urb( pUrb, pHwData->WbUsb.udev, usb_rcvintpipe(pHwData->WbUsb.udev,2),
242 pltmp, MAX_INTERRUPT_LENGTH, Wb35Tx_EP2VM_complete, pHwData, 32);
243
244 pWb35Tx->EP2vm_state = VM_RUNNING;
245 retv = wb_usb_submit_urb( pUrb );
246
247 if(retv < 0) {
248 #ifdef _PE_TX_DUMP_
249 WBDEBUG(("EP2 Tx Irp sending error\n"));
250 #endif
251 break;
252 }
253
254 return;
255
256 } while(FALSE);
257
258 pWb35Tx->EP2vm_state = VM_STOP;
259 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Tx->TxResultCount );
260}
261
262
263void Wb35Tx_EP2VM_complete(struct urb * pUrb)
264{
265 phw_data_t pHwData = pUrb->context;
266 T02_DESCRIPTOR T02, TSTATUS;
267 PADAPTER Adapter = (PADAPTER)pHwData->Adapter;
268 PWB35TX pWb35Tx = &pHwData->Wb35Tx;
269 PULONG pltmp = (PULONG)pWb35Tx->EP2_buf;
270 u32 i;
271 u16 InterruptInLength;
272
273
274 // Variable setting
275 pWb35Tx->EP2vm_state = VM_COMPLETED;
276 pWb35Tx->EP2VM_status = pUrb->status;
277
278 do {
279 // For Linux 2.4. Interrupt will always trigger
280 if( pHwData->SurpriseRemove || pHwData->HwStop ) // Let WbWlanHalt to handle surprise remove
281 break;
282
283 if( pWb35Tx->tx_halt )
284 break;
285
286 //The Urb is completed, check the result
287 if (pWb35Tx->EP2VM_status != 0) {
288 WBDEBUG(("EP2 IoCompleteRoutine return error\n"));
289 pWb35Tx->EP2vm_state= VM_STOP;
290 break; // Exit while(FALSE);
291 }
292
293 // Update the Tx result
294 InterruptInLength = pUrb->actual_length;
295 // Modify for minimum memory access and DWORD alignment.
296 T02.value = cpu_to_le32(pltmp[0]) >> 8; // [31:8] -> [24:0]
297 InterruptInLength -= 1;// 20051221.1.c Modify the follow for more stable
298 InterruptInLength >>= 2; // InterruptInLength/4
299 for (i=1; i<=InterruptInLength; i++) {
300 T02.value |= ((cpu_to_le32(pltmp[i]) & 0xff) << 24);
301
302 TSTATUS.value = T02.value; //20061009 anson's endian
303 Mds_SendComplete( Adapter, &TSTATUS );
304 T02.value = cpu_to_le32(pltmp[i]) >> 8;
305 }
306
307 return;
308 } while(FALSE);
309
310 OS_ATOMIC_DEC( pHwData->Adapter, &pWb35Tx->TxResultCount );
311 pWb35Tx->EP2vm_state = VM_STOP;
312}
313
diff --git a/drivers/staging/winbond/linux/wb35tx_f.h b/drivers/staging/winbond/linux/wb35tx_f.h
new file mode 100644
index 00000000000..7705a8454dc
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35tx_f.h
@@ -0,0 +1,20 @@
1//====================================
2// Interface function declare
3//====================================
4unsigned char Wb35Tx_initial( phw_data_t pHwData );
5void Wb35Tx_destroy( phw_data_t pHwData );
6unsigned char Wb35Tx_get_tx_buffer( phw_data_t pHwData, PUCHAR *pBuffer );
7
8void Wb35Tx_EP2VM( phw_data_t pHwData );
9void Wb35Tx_EP2VM_start( phw_data_t pHwData );
10void Wb35Tx_EP2VM_complete( PURB purb );
11
12void Wb35Tx_start( phw_data_t pHwData );
13void Wb35Tx_stop( phw_data_t pHwData );
14void Wb35Tx( phw_data_t pHwData );
15void Wb35Tx_complete( PURB purb );
16void Wb35Tx_reset_descriptor( phw_data_t pHwData );
17
18void Wb35Tx_CurrentTime( phw_data_t pHwData, u32 TimeCount );
19
20
diff --git a/drivers/staging/winbond/linux/wb35tx_s.h b/drivers/staging/winbond/linux/wb35tx_s.h
new file mode 100644
index 00000000000..ac432573676
--- /dev/null
+++ b/drivers/staging/winbond/linux/wb35tx_s.h
@@ -0,0 +1,47 @@
1//====================================
2// IS89C35 Tx related definition
3//====================================
4#define TX_INTERFACE 0 // Interface 1
5#define TX_PIPE 3 // endpoint 4
6#define TX_INTERRUPT 1 // endpoint 2
7#define MAX_INTERRUPT_LENGTH 64 // It must be 64 for EP2 hardware
8
9
10
11//====================================
12// Internal variable for module
13//====================================
14
15
16typedef struct _WB35TX
17{
18 // For Tx buffer
19 u8 TxBuffer[ MAX_USB_TX_BUFFER_NUMBER ][ MAX_USB_TX_BUFFER ];
20
21 // For Interrupt pipe
22 u8 EP2_buf[MAX_INTERRUPT_LENGTH];
23
24 OS_ATOMIC TxResultCount;// For thread control of EP2 931130.4.m
25 OS_ATOMIC TxFireCounter;// For thread control of EP4 931130.4.n
26 u32 ByteTransfer;
27
28 u32 TxSendIndex;// The next index of Mds array to be sent
29 u32 EP2vm_state; // for EP2vm state
30 u32 EP4vm_state; // for EP4vm state
31 u32 tx_halt; // Stopping VM
32
33 struct urb * Tx4Urb;
34 struct urb * Tx2Urb;
35
36 int EP2VM_status;
37 int EP4VM_status;
38
39 u32 TxFillCount; // 20060928
40 u32 TxTimer; // 20060928 Add if sending packet not great than 13
41
42} WB35TX, *PWB35TX;
43
44
45
46
47
diff --git a/drivers/staging/winbond/linux/wbusb.c b/drivers/staging/winbond/linux/wbusb.c
new file mode 100644
index 00000000000..cbad5fb0595
--- /dev/null
+++ b/drivers/staging/winbond/linux/wbusb.c
@@ -0,0 +1,404 @@
1/*
2 * Copyright 2008 Pavel Machek <pavel@suse.cz>
3 *
4 * Distribute under GPLv2.
5 */
6#include "sysdef.h"
7#include <net/mac80211.h>
8
9
10MODULE_AUTHOR( DRIVER_AUTHOR );
11MODULE_DESCRIPTION( DRIVER_DESC );
12MODULE_LICENSE("GPL");
13MODULE_VERSION("0.1");
14
15
16//============================================================
17// vendor ID and product ID can into here for others
18//============================================================
19static struct usb_device_id Id_Table[] =
20{
21 {USB_DEVICE( 0x0416, 0x0035 )},
22 {USB_DEVICE( 0x18E8, 0x6201 )},
23 {USB_DEVICE( 0x18E8, 0x6206 )},
24 {USB_DEVICE( 0x18E8, 0x6217 )},
25 {USB_DEVICE( 0x18E8, 0x6230 )},
26 {USB_DEVICE( 0x18E8, 0x6233 )},
27 {USB_DEVICE( 0x1131, 0x2035 )},
28 { }
29};
30
31MODULE_DEVICE_TABLE(usb, Id_Table);
32
33static struct usb_driver wb35_driver = {
34 .name = "w35und",
35 .probe = wb35_probe,
36 .disconnect = wb35_disconnect,
37 .id_table = Id_Table,
38};
39
40static const struct ieee80211_rate wbsoft_rates[] = {
41 { .bitrate = 10, .flags = IEEE80211_RATE_SHORT_PREAMBLE },
42};
43
44static const struct ieee80211_channel wbsoft_channels[] = {
45 { .center_freq = 2412},
46};
47
48int wbsoft_enabled;
49struct ieee80211_hw *my_dev;
50PADAPTER my_adapter;
51
52static int wbsoft_add_interface(struct ieee80211_hw *dev,
53 struct ieee80211_if_init_conf *conf)
54{
55 printk("wbsoft_add interface called\n");
56 return 0;
57}
58
59static void wbsoft_remove_interface(struct ieee80211_hw *dev,
60 struct ieee80211_if_init_conf *conf)
61{
62 printk("wbsoft_remove interface called\n");
63}
64
65static int wbsoft_nop(void)
66{
67 printk("wbsoft_nop called\n");
68 return 0;
69}
70
71static void wbsoft_configure_filter(struct ieee80211_hw *dev,
72 unsigned int changed_flags,
73 unsigned int *total_flags,
74 int mc_count, struct dev_mc_list *mclist)
75{
76 unsigned int bit_nr, new_flags;
77 u32 mc_filter[2];
78 int i;
79
80 new_flags = 0;
81
82 if (*total_flags & FIF_PROMISC_IN_BSS) {
83 new_flags |= FIF_PROMISC_IN_BSS;
84 mc_filter[1] = mc_filter[0] = ~0;
85 } else if ((*total_flags & FIF_ALLMULTI) || (mc_count > 32)) {
86 new_flags |= FIF_ALLMULTI;
87 mc_filter[1] = mc_filter[0] = ~0;
88 } else {
89 mc_filter[1] = mc_filter[0] = 0;
90 for (i = 0; i < mc_count; i++) {
91 if (!mclist)
92 break;
93 printk("Should call ether_crc here\n");
94 //bit_nr = ether_crc(ETH_ALEN, mclist->dmi_addr) >> 26;
95 bit_nr = 0;
96
97 bit_nr &= 0x3F;
98 mc_filter[bit_nr >> 5] |= 1 << (bit_nr & 31);
99 mclist = mclist->next;
100 }
101 }
102
103 dev->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS;
104
105 *total_flags = new_flags;
106}
107
108static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb,
109 struct ieee80211_tx_control *control)
110{
111 char *buffer = kmalloc(skb->len, GFP_ATOMIC);
112 printk("Sending frame %d bytes\n", skb->len);
113 memcpy(buffer, skb->data, skb->len);
114 if (1 == MLMESendFrame(my_adapter, buffer, skb->len, FRAME_TYPE_802_11_MANAGEMENT))
115 printk("frame sent ok (%d bytes)?\n", skb->len);
116 return NETDEV_TX_OK;
117}
118
119
120static int wbsoft_start(struct ieee80211_hw *dev)
121{
122 wbsoft_enabled = 1;
123 printk("wbsoft_start called\n");
124 return 0;
125}
126
127static int wbsoft_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf)
128{
129 ChanInfo ch;
130 printk("wbsoft_config called\n");
131
132 ch.band = 1;
133 ch.ChanNo = 1; /* Should use channel_num, or something, as that is already pre-translated */
134
135
136 hal_set_current_channel(&my_adapter->sHwData, ch);
137 hal_set_beacon_period(&my_adapter->sHwData, conf->beacon_int);
138// hal_set_cap_info(&my_adapter->sHwData, ?? );
139// hal_set_ssid(phw_data_t pHwData, PUCHAR pssid, u8 ssid_len); ??
140 hal_set_accept_broadcast(&my_adapter->sHwData, 1);
141 hal_set_accept_promiscuous(&my_adapter->sHwData, 1);
142 hal_set_accept_multicast(&my_adapter->sHwData, 1);
143 hal_set_accept_beacon(&my_adapter->sHwData, 1);
144 hal_set_radio_mode(&my_adapter->sHwData, 0);
145 //hal_set_antenna_number( phw_data_t pHwData, u8 number )
146 //hal_set_rf_power(phw_data_t pHwData, u8 PowerIndex)
147
148
149// hal_start_bss(&my_adapter->sHwData, WLAN_BSSTYPE_INFRASTRUCTURE); ??
150
151//void hal_set_rates(phw_data_t pHwData, PUCHAR pbss_rates,
152// u8 length, unsigned char basic_rate_set)
153
154 return 0;
155}
156
157static int wbsoft_config_interface(struct ieee80211_hw *dev,
158 struct ieee80211_vif *vif,
159 struct ieee80211_if_conf *conf)
160{
161 printk("wbsoft_config_interface called\n");
162 return 0;
163}
164
165static u64 wbsoft_get_tsf(struct ieee80211_hw *dev)
166{
167 printk("wbsoft_get_tsf called\n");
168 return 0;
169}
170
171static const struct ieee80211_ops wbsoft_ops = {
172 .tx = wbsoft_tx,
173 .start = wbsoft_start, /* Start can be pretty much empty as we do WbWLanInitialize() during probe? */
174 .stop = wbsoft_nop,
175 .add_interface = wbsoft_add_interface,
176 .remove_interface = wbsoft_remove_interface,
177 .config = wbsoft_config,
178 .config_interface = wbsoft_config_interface,
179 .configure_filter = wbsoft_configure_filter,
180 .get_stats = wbsoft_nop,
181 .get_tx_stats = wbsoft_nop,
182 .get_tsf = wbsoft_get_tsf,
183// conf_tx: hal_set_cwmin()/hal_set_cwmax;
184};
185
186struct wbsoft_priv {
187};
188
189
190int __init wb35_init(void)
191{
192 printk("[w35und]driver init\n");
193 return usb_register(&wb35_driver);
194}
195
196void __exit wb35_exit(void)
197{
198 printk("[w35und]driver exit\n");
199 usb_deregister( &wb35_driver );
200}
201
202module_init(wb35_init);
203module_exit(wb35_exit);
204
205// Usb kernel subsystem will call this function when a new device is plugged into.
206int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id_table)
207{
208 PADAPTER Adapter;
209 PWBLINUX pWbLinux;
210 PWBUSB pWbUsb;
211 struct usb_host_interface *interface;
212 struct usb_endpoint_descriptor *endpoint;
213 int i, ret = -1;
214 u32 ltmp;
215 struct usb_device *udev = interface_to_usbdev(intf);
216
217 usb_get_dev(udev);
218
219 printk("[w35und]wb35_probe ->\n");
220
221 do {
222 for (i=0; i<(sizeof(Id_Table)/sizeof(struct usb_device_id)); i++ ) {
223 if ((udev->descriptor.idVendor == Id_Table[i].idVendor) &&
224 (udev->descriptor.idProduct == Id_Table[i].idProduct)) {
225 printk("[w35und]Found supported hardware\n");
226 break;
227 }
228 }
229 if ((i == (sizeof(Id_Table)/sizeof(struct usb_device_id)))) {
230 #ifdef _PE_USB_INI_DUMP_
231 WBDEBUG(("[w35und] This is not the one we are interested about\n"));
232 #endif
233 return -ENODEV;
234 }
235
236 // 20060630.2 Check the device if it already be opened
237 ret = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ),
238 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
239 0x0, 0x400, &ltmp, 4, HZ*100 );
240 if( ret < 0 )
241 break;
242
243 ltmp = cpu_to_le32(ltmp);
244 if (ltmp) // Is already initialized?
245 break;
246
247
248 Adapter = kzalloc(sizeof(ADAPTER), GFP_KERNEL);
249
250 my_adapter = Adapter;
251 pWbLinux = &Adapter->WbLinux;
252 pWbUsb = &Adapter->sHwData.WbUsb;
253 pWbUsb->udev = udev;
254
255 interface = intf->cur_altsetting;
256 endpoint = &interface->endpoint[0].desc;
257
258 if (endpoint[2].wMaxPacketSize == 512) {
259 printk("[w35und] Working on USB 2.0\n");
260 pWbUsb->IsUsb20 = 1;
261 }
262
263 if (!WbWLanInitialize(Adapter)) {
264 printk("[w35und]WbWLanInitialize fail\n");
265 break;
266 }
267
268 {
269 struct wbsoft_priv *priv;
270 struct ieee80211_hw *dev;
271 int res;
272
273 dev = ieee80211_alloc_hw(sizeof(*priv), &wbsoft_ops);
274
275 if (!dev) {
276 printk("w35und: ieee80211 alloc failed\n" );
277 BUG();
278 }
279
280 my_dev = dev;
281
282 SET_IEEE80211_DEV(dev, &udev->dev);
283 {
284 phw_data_t pHwData = &Adapter->sHwData;
285 unsigned char dev_addr[MAX_ADDR_LEN];
286 hal_get_permanent_address(pHwData, dev_addr);
287 SET_IEEE80211_PERM_ADDR(dev, dev_addr);
288 }
289
290
291 dev->extra_tx_headroom = 12; /* FIXME */
292 dev->flags = 0;
293
294 dev->channel_change_time = 1000;
295// dev->max_rssi = 100;
296
297 dev->queues = 1;
298
299 static struct ieee80211_supported_band band;
300
301 band.channels = wbsoft_channels;
302 band.n_channels = ARRAY_SIZE(wbsoft_channels);
303 band.bitrates = wbsoft_rates;
304 band.n_bitrates = ARRAY_SIZE(wbsoft_rates);
305
306 dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &band;
307#if 0
308 wbsoft_modes[0].num_channels = 1;
309 wbsoft_modes[0].channels = wbsoft_channels;
310 wbsoft_modes[0].mode = MODE_IEEE80211B;
311 wbsoft_modes[0].num_rates = ARRAY_SIZE(wbsoft_rates);
312 wbsoft_modes[0].rates = wbsoft_rates;
313
314 res = ieee80211_register_hwmode(dev, &wbsoft_modes[0]);
315 BUG_ON(res);
316#endif
317
318 res = ieee80211_register_hw(dev);
319 BUG_ON(res);
320 }
321
322 usb_set_intfdata( intf, Adapter );
323
324 printk("[w35und] _probe OK\n");
325 return 0;
326
327 } while(FALSE);
328
329 return -ENOMEM;
330}
331
332void packet_came(char *pRxBufferAddress, int PacketSize)
333{
334 struct sk_buff *skb;
335 struct ieee80211_rx_status rx_status = {0};
336
337 if (!wbsoft_enabled)
338 return;
339
340 skb = dev_alloc_skb(PacketSize);
341 if (!skb) {
342 printk("Not enough memory for packet, FIXME\n");
343 return;
344 }
345
346 memcpy(skb_put(skb, PacketSize),
347 pRxBufferAddress,
348 PacketSize);
349
350/*
351 rx_status.rate = 10;
352 rx_status.channel = 1;
353 rx_status.freq = 12345;
354 rx_status.phymode = MODE_IEEE80211B;
355*/
356
357 ieee80211_rx_irqsafe(my_dev, skb, &rx_status);
358}
359
360unsigned char
361WbUsb_initial(phw_data_t pHwData)
362{
363 return 1;
364}
365
366
367void
368WbUsb_destroy(phw_data_t pHwData)
369{
370}
371
372int wb35_open(struct net_device *netdev)
373{
374 PADAPTER Adapter = (PADAPTER)netdev->priv;
375 phw_data_t pHwData = &Adapter->sHwData;
376
377 netif_start_queue(netdev);
378
379 //TODO : put here temporarily
380 hal_set_accept_broadcast(pHwData, 1); // open accept broadcast
381
382 return 0;
383}
384
385int wb35_close(struct net_device *netdev)
386{
387 netif_stop_queue(netdev);
388 return 0;
389}
390
391void wb35_disconnect(struct usb_interface *intf)
392{
393 PWBLINUX pWbLinux;
394 PADAPTER Adapter = usb_get_intfdata(intf);
395 usb_set_intfdata(intf, NULL);
396
397 pWbLinux = &Adapter->WbLinux;
398
399 // Card remove
400 WbWlanHalt(Adapter);
401
402}
403
404
diff --git a/drivers/staging/winbond/linux/wbusb_f.h b/drivers/staging/winbond/linux/wbusb_f.h
new file mode 100644
index 00000000000..cae29e107e1
--- /dev/null
+++ b/drivers/staging/winbond/linux/wbusb_f.h
@@ -0,0 +1,34 @@
1//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2// Copyright (c) 1996-2004 Winbond Electronic Corporation
3//
4// Module Name:
5// wbusb_f.h
6//
7// Abstract:
8// Linux driver.
9//
10// Author:
11//
12//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13
14int wb35_open(struct net_device *netdev);
15int wb35_close(struct net_device *netdev);
16unsigned char WbUsb_initial(phw_data_t pHwData);
17void WbUsb_destroy(phw_data_t pHwData);
18unsigned char WbWLanInitialize(PADAPTER Adapter);
19#define WbUsb_Stop( _A )
20
21int wb35_probe(struct usb_interface *intf,const struct usb_device_id *id_table);
22void wb35_disconnect(struct usb_interface *intf);
23
24
25#define wb_usb_submit_urb(_A) usb_submit_urb(_A, GFP_ATOMIC)
26#define wb_usb_alloc_urb(_A) usb_alloc_urb(_A, GFP_ATOMIC)
27
28#define WbUsb_CheckForHang( _P )
29#define WbUsb_DetectStart( _P, _I )
30
31
32
33
34
diff --git a/drivers/staging/winbond/linux/wbusb_s.h b/drivers/staging/winbond/linux/wbusb_s.h
new file mode 100644
index 00000000000..d5c1d53de70
--- /dev/null
+++ b/drivers/staging/winbond/linux/wbusb_s.h
@@ -0,0 +1,42 @@
1//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2// Copyright (c) 1996-2004 Winbond Electronic Corporation
3//
4// Module Name:
5// wbusb_s.h
6//
7// Abstract:
8// Linux driver.
9//
10// Author:
11//
12//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13
14#define OS_SLEEP( _MT ) { set_current_state(TASK_INTERRUPTIBLE); \
15 schedule_timeout( _MT*HZ/1000000 ); }
16
17
18//---------------------------------------------------------------------------
19// RW_CONTEXT --
20//
21// Used to track driver-generated io irps
22//---------------------------------------------------------------------------
23typedef struct _RW_CONTEXT
24{
25 void* pHwData;
26 PURB pUrb;
27 void* pCallBackFunctionParameter;
28} RW_CONTEXT, *PRW_CONTEXT;
29
30
31
32
33#define DRIVER_AUTHOR "Original by: Jeff Lee<YY_Lee@issc.com.tw> Adapted to 2.6.x by Costantino Leandro (Rxart Desktop) <le_costantino@pixartargentina.com.ar>"
34#define DRIVER_DESC "IS89C35 802.11bg WLAN USB Driver"
35
36
37
38typedef struct _WBUSB {
39 u32 IsUsb20;
40 struct usb_device *udev;
41 u32 DetectCount;
42} WBUSB, *PWBUSB;
diff --git a/drivers/staging/winbond/localpara.h b/drivers/staging/winbond/localpara.h
new file mode 100644
index 00000000000..268cf916ab4
--- /dev/null
+++ b/drivers/staging/winbond/localpara.h
@@ -0,0 +1,275 @@
1//=============================================================
2// LocalPara.h -
3//=============================================================
4//Define the local ability
5
6#define LOCAL_DEFAULT_BEACON_PERIOD 100 //ms
7#define LOCAL_DEFAULT_ATIM_WINDOW 0
8#define LOCAL_DEFAULT_ERP_CAPABILITY 0x0431 //0x0001: ESS
9 //0x0010: Privacy
10 //0x0020: short preamble
11 //0x0400: short slot time
12#define LOCAL_DEFAULT_LISTEN_INTERVAL 5
13
14//#define LOCAL_DEFAULT_24_CHANNEL_NUM 11 // channel 1..11
15#define LOCAL_DEFAULT_24_CHANNEL_NUM 13 // channel 1..13
16#define LOCAL_DEFAULT_5_CHANNEL_NUM 8 // channel 36..64
17
18#define LOCAL_USA_24_CHANNEL_NUM 11
19#define LOCAL_USA_5_CHANNEL_NUM 12
20#define LOCAL_EUROPE_24_CHANNEL_NUM 13
21#define LOCAL_EUROPE_5_CHANNEL_NUM 19
22#define LOCAL_JAPAN_24_CHANNEL_NUM 14
23#define LOCAL_JAPAN_5_CHANNEL_NUM 11
24#define LOCAL_UNKNOWN_24_CHANNEL_NUM 14
25#define LOCAL_UNKNOWN_5_CHANNEL_NUM 34 //not include 165
26
27
28#define psLOCAL (&(Adapter->sLocalPara))
29
30#define MODE_802_11_BG 0
31#define MODE_802_11_A 1
32#define MODE_802_11_ABG 2
33#define MODE_802_11_BG_IBSS 3
34#define MODE_802_11_B 4
35#define MODE_AUTO 255
36
37#define BAND_TYPE_DSSS 0
38#define BAND_TYPE_OFDM_24 1
39#define BAND_TYPE_OFDM_5 2
40
41//refer Bitmap2RateValue table
42#define LOCAL_ALL_SUPPORTED_RATES_BITMAP 0x130c1a66 //the bitmap value of all the H/W supported rates
43 //1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54
44#define LOCAL_OFDM_SUPPORTED_RATES_BITMAP 0x130c1240 //the bitmap value of all the H/W supported rates
45 //except to non-OFDM rates
46 //6, 9, 12, 18, 24, 36, 48, 54
47
48#define LOCAL_11B_SUPPORTED_RATE_BITMAP 0x826
49#define LOCAL_11B_BASIC_RATE_BITMAP 0x826
50#define LOCAL_11B_OPERATION_RATE_BITMAP 0x826
51#define LOCAL_11G_BASIC_RATE_BITMAP 0x826 //1, 2, 5.5, 11
52#define LOCAL_11G_OPERATION_RATE_BITMAP 0x130c1240 //6, 9, 12, 18, 24, 36, 48, 54
53#define LOCAL_11A_BASIC_RATE_BITMAP 0x01001040 //6, 12, 24
54#define LOCAL_11A_OPERATION_RATE_BITMAP 0x120c0200 //9, 18, 36, 48, 54
55
56
57
58#define PWR_ACTIVE 0
59#define PWR_SAVE 1
60#define PWR_TX_IDLE_CYCLE 6
61
62//bPreambleMode and bSlotTimeMode
63#define AUTO_MODE 0
64#define LONG_MODE 1
65
66//Region definition
67#define REGION_AUTO 0xff
68#define REGION_UNKNOWN 0
69#define REGION_EUROPE 1 //ETSI
70#define REGION_JAPAN 2 //MKK
71#define REGION_USA 3 //FCC
72#define REGION_FRANCE 4 //FRANCE
73#define REGION_SPAIN 5 //SPAIN
74#define REGION_ISRAEL 6 //ISRAEL
75//#define REGION_CANADA 7 //IC
76
77#define MAX_BSS_DESCRIPT_ELEMENT 32
78#define MAX_PMKID_CandidateList 16
79
80//High byte : Event number, low byte : reason
81//Event definition
82//-- SME/MLME event
83#define EVENT_RCV_DEAUTH 0x0100
84#define EVENT_JOIN_FAIL 0x0200
85#define EVENT_AUTH_FAIL 0x0300
86#define EVENT_ASSOC_FAIL 0x0400
87#define EVENT_LOST_SIGNAL 0x0500
88#define EVENT_BSS_DESCRIPT_LACK 0x0600
89#define EVENT_COUNTERMEASURE 0x0700
90#define EVENT_JOIN_FILTER 0x0800
91//-- TX/RX event
92#define EVENT_RX_BUFF_UNAVAILABLE 0x4100
93
94#define EVENT_CONNECT 0x8100
95#define EVENT_DISCONNECT 0x8200
96#define EVENT_SCAN_REQ 0x8300
97
98//Reason of Event
99#define EVENT_REASON_FILTER_BASIC_RATE 0x0001
100#define EVENT_REASON_FILTER_PRIVACY 0x0002
101#define EVENT_REASON_FILTER_AUTH_MODE 0x0003
102#define EVENT_REASON_TIMEOUT 0x00ff
103
104// 20061108 WPS IE buffer
105#define MAX_IE_APPEND_SIZE 256 + 4 // Due to [E id][Length][OUI][Data] may 257 bytes
106
107typedef struct _EVENTLOG
108{
109 u16 Count; //Total count from start
110 u16 index; //Buffer index, 0 ~ 63
111 u32 EventValue[64]; //BYTE 3~2 : count, BYTE 1 : Event, BYTE 0 : reason
112} Event_Log, *pEvent_Log;
113
114typedef struct _ChanInfo
115{
116 u8 band;
117 u8 ChanNo;
118} ChanInfo, *pChanInfo;
119
120typedef struct _CHAN_LIST
121{
122 u16 Count;
123 ChanInfo Channel[50]; // 100B
124} CHAN_LIST, *psCHAN_LIST;
125
126typedef struct _RadioOff
127{
128 u8 boHwRadioOff;
129 u8 boSwRadioOff;
130} RadioOff, *psRadioOff;
131
132//===========================================================================
133typedef struct LOCAL_PARA
134{
135 u8 PermanentAddress[ MAC_ADDR_LENGTH + 2 ]; // read from EPROM, manufacture set for each NetCard
136 u8 ThisMacAddress[ MAC_ADDR_LENGTH + 2 ]; // the driver will use actually.
137
138 u32 MTUsize; // Ind to Uplayer, Max transmission unit size
139
140 u8 region_INF; //region setting from INF
141 u8 region; //real region setting of the device
142 u8 Reserved_1[2];
143
144 //// power-save variables
145 u8 iPowerSaveMode; // 0 indicates it is on, 1 indicates it is off
146 u8 ShutDowned;
147 u8 ATIMmode;
148 u8 ExcludeUnencrypted;
149
150 u16 CheckCountForPS; //Unit ime count for the decision to enter PS mode
151 u8 boHasTxActivity; //tx activity has occurred
152 u8 boMacPsValid; //Power save mode obtained from H/W is valid or not
153
154 //// Rate
155 u8 TxRateMode; // Initial, input from Registry, may be updated by GUI
156 //Tx Rate Mode: auto(DTO on), max, 1M, 2M, ..
157 u8 CurrentTxRate; // The current Tx rate
158 u8 CurrentTxRateForMng; // The current Tx rate for management frames
159 // It will be decided before connection succeeds.
160 u8 CurrentTxFallbackRate;
161
162 //for Rate handler
163 u8 BRateSet[32]; //basic rate set
164 u8 SRateSet[32]; //support rate set
165
166 u8 NumOfBRate;
167 u8 NumOfSRate;
168 u8 NumOfDsssRateInSRate; //number of DSSS rates in supported rate set
169 u8 reserved1;
170
171 u32 dwBasicRateBitmap; //bit map of basic rates
172 u32 dwSupportRateBitmap; //bit map of all support rates including
173 //basic and operational rates
174
175 ////For SME/MLME handler
176 u16 wOldSTAindex; // valid when boHandover=TRUE, store old connected STA index
177 u16 wConnectedSTAindex; // Index of peerly connected AP or IBSS in
178 // the descriptionset.
179 u16 Association_ID; // The Association ID in the (Re)Association
180 // Response frame.
181 u16 ListenInterval; // The listen interval when SME invoking MLME_
182 // (Re)Associate_Request().
183
184 RadioOff RadioOffStatus;
185 u8 Reserved0[2];
186
187 u8 boMsRadioOff; // Ndis demands to be true when set Disassoc. OID and be false when set SSID OID.
188 u8 boAntennaDiversity; //TRUE/ON or FALSE/OFF
189 u8 bAntennaNo; //which antenna
190 u8 bConnectFlag; //the connect status flag for roaming task
191
192 u8 RoamStatus;
193 u8 reserved7[3];
194
195 ChanInfo CurrentChan; //Current channel no. and channel band. It may be changed by scanning.
196 u8 boHandover; // Roaming, Hnadover to other AP.
197 u8 boCCAbusy;
198
199 u16 CWMax; // It may not be the real value that H/W used
200 u8 CWMin; // 255: set according to 802.11 spec.
201 u8 reserved2;
202
203 //11G:
204 u8 bMacOperationMode; // operation in 802.11b or 802.11g
205 u8 bSlotTimeMode; //AUTO, s32
206 u8 bPreambleMode; //AUTO, s32
207 u8 boNonERPpresent;
208
209 u8 boProtectMechanism; // H/W will take the necessary action based on this variable
210 u8 boShortPreamble; // H/W will take the necessary action based on this variable
211 u8 boShortSlotTime; // H/W will take the necessary action based on this variable
212 u8 reserved_3;
213
214 u32 RSN_IE_Bitmap; //added by WS
215 u32 RSN_OUI_Type; //added by WS
216
217 //For the BSSID
218 u8 HwBssid[MAC_ADDR_LENGTH + 2];
219 u32 HwBssidValid;
220
221 //For scan list
222 u8 BssListCount; //Total count of valid descriptor indexes
223 u8 boReceiveUncorrectInfo; //important settings in beacon/probe resp. have been changed
224 u8 NoOfJoinerInIbss;
225 u8 reserved_4;
226
227 u8 BssListIndex[ (MAX_BSS_DESCRIPT_ELEMENT+3) & ~0x03 ]; //Store the valid descriptor indexes obtained from scannings
228 u8 JoinerInIbss[ (MAX_BSS_DESCRIPT_ELEMENT+3) & ~0x03 ]; //save the BssDescriptor index in this
229 //IBSS. The index 0 is local descriptor
230 //(psLOCAL->wConnectedSTAindex).
231 //If CONNECTED : NoOfJoinerInIbss >=2
232 // else : NoOfJoinerInIbss <=1
233
234 //// General Statistics, count at Rx_handler or Tx_callback interrupt handler
235 u64 GS_XMIT_OK; // Good Frames Transmitted
236 u64 GS_RCV_OK; // Good Frames Received
237 u32 GS_RCV_ERROR; // Frames received with crc error
238 u32 GS_XMIT_ERROR; // Bad Frames Transmitted
239 u32 GS_RCV_NO_BUFFER; // Receive Buffer underrun
240 u32 GS_XMIT_ONE_COLLISION; // one collision
241 u32 GS_XMIT_MORE_COLLISIONS;// more collisions
242
243 //================================================================
244 // Statistics (no matter whether it had done successfully) -wkchen
245 //================================================================
246 u32 _NumRxMSDU;
247 u32 _NumTxMSDU;
248 u32 _dot11WEPExcludedCount;
249 u32 _dot11WEPUndecryptableCount;
250 u32 _dot11FrameDuplicateCount;
251
252 ChanInfo IbssChanSetting; // 2B. Start IBSS Channel setting by registry or WWU.
253 u8 reserved_5[2]; //It may not be used after considering RF type,
254 //region and modulation type.
255
256 CHAN_LIST sSupportChanList; // 86B. It will be obtained according to RF type and region
257 u8 reserved_6[2]; //two variables are for wep key error detection added by ws 02/02/04
258
259 u32 bWepKeyError;
260 u32 bToSelfPacketReceived;
261 u32 WepKeyDetectTimerCount;
262
263 Event_Log EventLog;
264
265 u16 SignalLostTh;
266 u16 SignalRoamTh;
267
268 // 20061108 WPS IE Append
269 u8 IE_Append_data[MAX_IE_APPEND_SIZE];
270 u16 IE_Append_size;
271 u16 reserved_7;
272
273} WB_LOCALDESCRIPT, *PWB_LOCALDESCRIPT;
274
275
diff --git a/drivers/staging/winbond/mac_structures.h b/drivers/staging/winbond/mac_structures.h
new file mode 100644
index 00000000000..031d2cb6cd6
--- /dev/null
+++ b/drivers/staging/winbond/mac_structures.h
@@ -0,0 +1,670 @@
1//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2// MAC_Structures.h
3//
4// This file contains the definitions and data structures used by SW-MAC.
5//
6// Revision Histoy
7//=================
8// 0.1 2002 UN00
9// 0.2 20021004 PD43 CCLiu6
10// 20021018 PD43 CCLiu6
11// Add enum_TxRate type
12// Modify enum_STAState type
13// 0.3 20021023 PE23 CYLiu update MAC session struct
14// 20021108
15// 20021122 PD43 Austin
16// Deleted some unused.
17// 20021129 PD43 Austin
18// 20030617 increase the 802.11g definition
19//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
20
21#ifndef _MAC_Structures_H_
22#define _MAC_Structures_H_
23
24
25//=========================================================
26// Some miscellaneous definitions
27//-----
28#define MAX_CHANNELS 30
29#define MAC_ADDR_LENGTH 6
30#define MAX_WEP_KEY_SIZE 16 // 128 bits
31#define MAX_802_11_FRAGMENT_NUMBER 10 // By spec
32
33//========================================================
34// 802.11 Frame define
35//-----
36#define MASK_PROTOCOL_VERSION_TYPE 0x0F
37#define MASK_FRAGMENT_NUMBER 0x000F
38#define SEQUENCE_NUMBER_SHIFT 4
39#define DIFFER_11_TO_3 18
40#define DOT_11_MAC_HEADER_SIZE 24
41#define DOT_11_SNAP_SIZE 6
42#define DOT_11_DURATION_OFFSET 2
43#define DOT_11_SEQUENCE_OFFSET 22 //Sequence control offset
44#define DOT_11_TYPE_OFFSET 30 //The start offset of 802.11 Frame//
45#define DOT_11_DATA_OFFSET 24
46#define DOT_11_DA_OFFSET 4
47#define DOT_3_TYPE_ARP 0x80F3
48#define DOT_3_TYPE_IPX 0x8137
49#define DOT_3_TYPE_OFFSET 12
50
51
52#define ETHERNET_HEADER_SIZE 14
53#define MAX_ETHERNET_PACKET_SIZE 1514
54
55
56//----- management : Type of Bits (2, 3) and Subtype of Bits (4, 5, 6, 7)
57#define MAC_SUBTYPE_MNGMNT_ASSOC_REQUEST 0x00
58#define MAC_SUBTYPE_MNGMNT_ASSOC_RESPONSE 0x10
59#define MAC_SUBTYPE_MNGMNT_REASSOC_REQUEST 0x20
60#define MAC_SUBTYPE_MNGMNT_REASSOC_RESPONSE 0x30
61#define MAC_SUBTYPE_MNGMNT_PROBE_REQUEST 0x40
62#define MAC_SUBTYPE_MNGMNT_PROBE_RESPONSE 0x50
63#define MAC_SUBTYPE_MNGMNT_BEACON 0x80
64#define MAC_SUBTYPE_MNGMNT_ATIM 0x90
65#define MAC_SUBTYPE_MNGMNT_DISASSOCIATION 0xA0
66#define MAC_SUBTYPE_MNGMNT_AUTHENTICATION 0xB0
67#define MAC_SUBTYPE_MNGMNT_DEAUTHENTICATION 0xC0
68
69//----- control : Type of Bits (2, 3) and Subtype of Bits (4, 5, 6, 7)
70#define MAC_SUBTYPE_CONTROL_PSPOLL 0xA4
71#define MAC_SUBTYPE_CONTROL_RTS 0xB4
72#define MAC_SUBTYPE_CONTROL_CTS 0xC4
73#define MAC_SUBTYPE_CONTROL_ACK 0xD4
74#define MAC_SUBTYPE_CONTROL_CFEND 0xE4
75#define MAC_SUBTYPE_CONTROL_CFEND_CFACK 0xF4
76
77//----- data : Type of Bits (2, 3) and Subtype of Bits (4, 5, 6, 7)
78#define MAC_SUBTYPE_DATA 0x08
79#define MAC_SUBTYPE_DATA_CFACK 0x18
80#define MAC_SUBTYPE_DATA_CFPOLL 0x28
81#define MAC_SUBTYPE_DATA_CFACK_CFPOLL 0x38
82#define MAC_SUBTYPE_DATA_NULL 0x48
83#define MAC_SUBTYPE_DATA_CFACK_NULL 0x58
84#define MAC_SUBTYPE_DATA_CFPOLL_NULL 0x68
85#define MAC_SUBTYPE_DATA_CFACK_CFPOLL_NULL 0x78
86
87//----- Frame Type of Bits (2, 3)
88#define MAC_TYPE_MANAGEMENT 0x00
89#define MAC_TYPE_CONTROL 0x04
90#define MAC_TYPE_DATA 0x08
91
92//----- definitions for Management Frame Element ID (1 BYTE)
93#define ELEMENT_ID_SSID 0
94#define ELEMENT_ID_SUPPORTED_RATES 1
95#define ELEMENT_ID_FH_PARAMETER_SET 2
96#define ELEMENT_ID_DS_PARAMETER_SET 3
97#define ELEMENT_ID_CF_PARAMETER_SET 4
98#define ELEMENT_ID_TIM 5
99#define ELEMENT_ID_IBSS_PARAMETER_SET 6
100// 7~15 reserverd
101#define ELEMENT_ID_CHALLENGE_TEXT 16
102// 17~31 reserved for challenge text extension
103// 32~255 reserved
104//-- 11G --
105#define ELEMENT_ID_ERP_INFORMATION 42
106#define ELEMENT_ID_EXTENDED_SUPPORTED_RATES 50
107
108//-- WPA --
109
110#define ELEMENT_ID_RSN_WPA 221
111#ifdef _WPA2_
112#define ELEMENT_ID_RSN_WPA2 48
113#endif //endif WPA2
114
115#define WLAN_MAX_PAIRWISE_CIPHER_SUITE_COUNT ((u16) 6)
116#define WLAN_MAX_AUTH_KEY_MGT_SUITE_LIST_COUNT ((u16) 2)
117
118#ifdef WB_LINUX
119#define UNALIGNED
120#endif
121
122//========================================================
123typedef enum enum_PowerManagementMode
124{
125 ACTIVE = 0,
126 POWER_SAVE
127} WB_PM_Mode, *PWB_PM_MODE;
128
129//===================================================================
130// Reason Code (Table 18): indicate the reason of DisAssoc, DeAuthen
131// length of ReasonCode is 2 Octs.
132//===================================================================
133#define REASON_REASERED 0
134#define REASON_UNSPECIDIED 1
135#define REASON_PREAUTH_INVALID 2
136#define DEAUTH_REASON_LEFT_BSS 3
137#define DISASS_REASON_AP_INACTIVE 4
138#define DISASS_REASON_AP_BUSY 5
139#define REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6
140#define REASON_CLASS3_FRAME_FROM_NONASSO_STA 7
141#define DISASS_REASON_LEFT_BSS 8
142#define REASON_NOT_AUTH_YET 9
143//802.11i define
144#define REASON_INVALID_IE 13
145#define REASON_MIC_ERROR 14
146#define REASON_4WAY_HANDSHAKE_TIMEOUT 15
147#define REASON_GROUPKEY_UPDATE_TIMEOUT 16
148#define REASON_IE_DIFF_4WAY_ASSOC 17
149#define REASON_INVALID_MULTICAST_CIPHER 18
150#define REASON_INVALID_UNICAST_CIPHER 19
151#define REASON_INVALID_AKMP 20
152#define REASON_UNSUPPORTED_RSNIE_VERSION 21
153#define REASON_INVALID_RSNIE_CAPABILITY 22
154#define REASON_802_1X_AUTH_FAIL 23
155#define REASON_CIPHER_REJECT_PER_SEC_POLICY 14
156
157/*
158//===========================================================
159// enum_MMPDUResultCode --
160// Status code (2 Octs) in the MMPDU's frame body. Table.19
161//
162//===========================================================
163enum enum_MMPDUResultCode
164{
165// SUCCESS = 0, // Redefined
166 UNSPECIFIED_FAILURE = 1,
167
168 // 2 - 9 Reserved
169
170 NOT_SUPPROT_CAPABILITIES = 10,
171
172 //REASSOCIATION_DENIED
173 //
174 REASSOC_DENIED_UNABLE_CFM_ASSOC_EXIST = 11,
175
176 //ASSOCIATION_DENIED_NOT_IN_STANDARD
177 //
178 ASSOC_DENIED_REASON_NOT_IN_STANDARD = 12,
179 PEER_NOT_SUPPORT_AUTH_ALGORITHM = 13,
180 AUTH_SEQNUM_OUT_OF_EXPECT = 14,
181 AUTH_REJECT_REASON_CHALLENGE_FAIL = 15,
182 AUTH_REJECT_REASON_WAIT_TIMEOUT = 16,
183 ASSOC_DENIED_REASON_AP_BUSY = 17,
184 ASSOC_DENIED_REASON_NOT_SUPPORT_BASIC_RATE = 18
185} WB_MMPDURESULTCODE, *PWB_MMPDURESULTCODE;
186*/
187
188//===========================================================
189// enum_TxRate --
190// Define the transmission constants based on W89C32 MAC
191// target specification.
192//===========================================================
193typedef enum enum_TxRate
194{
195 TXRATE_1M = 0,
196 TXRATE_2MLONG = 2,
197 TXRATE_2MSHORT = 3,
198 TXRATE_55MLONG = 4,
199 TXRATE_55MSHORT = 5,
200 TXRATE_11MLONG = 6,
201 TXRATE_11MSHORT = 7,
202 TXRATE_AUTO = 255 // PD43 20021108
203} WB_TXRATE, *PWB_TXRATE;
204
205
206#define RATE_BITMAP_1M 1
207#define RATE_BITMAP_2M 2
208#define RATE_BITMAP_5dot5M 5
209#define RATE_BITMAP_6M 6
210#define RATE_BITMAP_9M 9
211#define RATE_BITMAP_11M 11
212#define RATE_BITMAP_12M 12
213#define RATE_BITMAP_18M 18
214#define RATE_BITMAP_22M 22
215#define RATE_BITMAP_24M 24
216#define RATE_BITMAP_33M 17
217#define RATE_BITMAP_36M 19
218#define RATE_BITMAP_48M 25
219#define RATE_BITMAP_54M 28
220
221#define RATE_AUTO 0
222#define RATE_1M 2
223#define RATE_2M 4
224#define RATE_5dot5M 11
225#define RATE_6M 12
226#define RATE_9M 18
227#define RATE_11M 22
228#define RATE_12M 24
229#define RATE_18M 36
230#define RATE_22M 44
231#define RATE_24M 48
232#define RATE_33M 66
233#define RATE_36M 72
234#define RATE_48M 96
235#define RATE_54M 108
236#define RATE_MAX 255
237
238//CAPABILITY
239#define CAPABILITY_ESS_BIT 0x0001
240#define CAPABILITY_IBSS_BIT 0x0002
241#define CAPABILITY_CF_POLL_BIT 0x0004
242#define CAPABILITY_CF_POLL_REQ_BIT 0x0008
243#define CAPABILITY_PRIVACY_BIT 0x0010
244#define CAPABILITY_SHORT_PREAMBLE_BIT 0x0020
245#define CAPABILITY_PBCC_BIT 0x0040
246#define CAPABILITY_CHAN_AGILITY_BIT 0x0080
247#define CAPABILITY_SHORT_SLOT_TIME_BIT 0x0400
248#define CAPABILITY_DSSS_OFDM_BIT 0x2000
249
250
251struct Capability_Information_Element
252{
253 union
254 {
255 u16 __attribute__ ((packed)) wValue;
256 #ifdef _BIG_ENDIAN_ //20060926 add by anson's endian
257 struct _Capability
258 {
259 //-- 11G --
260 u8 Reserved3 : 2;
261 u8 DSSS_OFDM : 1;
262 u8 Reserved2 : 2;
263 u8 Short_Slot_Time : 1;
264 u8 Reserved1 : 2;
265 u8 Channel_Agility : 1;
266 u8 PBCC : 1;
267 u8 ShortPreamble : 1;
268 u8 CF_Privacy : 1;
269 u8 CF_Poll_Request : 1;
270 u8 CF_Pollable : 1;
271 u8 IBSS : 1;
272 u8 ESS : 1;
273 } __attribute__ ((packed)) Capability;
274 #else
275 struct _Capability
276 {
277 u8 ESS : 1;
278 u8 IBSS : 1;
279 u8 CF_Pollable : 1;
280 u8 CF_Poll_Request : 1;
281 u8 CF_Privacy : 1;
282 u8 ShortPreamble : 1;
283 u8 PBCC : 1;
284 u8 Channel_Agility : 1;
285 u8 Reserved1 : 2;
286 //-- 11G --
287 u8 Short_Slot_Time : 1;
288 u8 Reserved2 : 2;
289 u8 DSSS_OFDM : 1;
290 u8 Reserved3 : 2;
291 } __attribute__ ((packed)) Capability;
292 #endif
293 }__attribute__ ((packed)) ;
294}__attribute__ ((packed));
295
296struct FH_Parameter_Set_Element
297{
298 u8 Element_ID;
299 u8 Length;
300 u8 Dwell_Time[2];
301 u8 Hop_Set;
302 u8 Hop_Pattern;
303 u8 Hop_Index;
304};
305
306struct DS_Parameter_Set_Element
307{
308 u8 Element_ID;
309 u8 Length;
310 u8 Current_Channel;
311};
312
313struct Supported_Rates_Element
314{
315 u8 Element_ID;
316 u8 Length;
317 u8 SupportedRates[8];
318}__attribute__ ((packed));
319
320struct SSID_Element
321{
322 u8 Element_ID;
323 u8 Length;
324 u8 SSID[32];
325}__attribute__ ((packed)) ;
326
327struct CF_Parameter_Set_Element
328{
329 u8 Element_ID;
330 u8 Length;
331 u8 CFP_Count;
332 u8 CFP_Period;
333 u8 CFP_MaxDuration[2]; // in Time Units
334 u8 CFP_DurRemaining[2]; // in time units
335};
336
337struct TIM_Element
338{
339 u8 Element_ID;
340 u8 Length;
341 u8 DTIM_Count;
342 u8 DTIM_Period;
343 u8 Bitmap_Control;
344 u8 Partial_Virtual_Bitmap[251];
345};
346
347struct IBSS_Parameter_Set_Element
348{
349 u8 Element_ID;
350 u8 Length;
351 u8 ATIM_Window[2];
352};
353
354struct Challenge_Text_Element
355{
356 u8 Element_ID;
357 u8 Length;
358 u8 Challenge_Text[253];
359};
360
361struct PHY_Parameter_Set_Element
362{
363// int aSlotTime;
364// int aSifsTime;
365 s32 aCCATime;
366 s32 aRxTxTurnaroundTime;
367 s32 aTxPLCPDelay;
368 s32 RxPLCPDelay;
369 s32 aRxTxSwitchTime;
370 s32 aTxRampOntime;
371 s32 aTxRampOffTime;
372 s32 aTxRFDelay;
373 s32 aRxRFDelay;
374 s32 aAirPropagationTime;
375 s32 aMACProcessingDelay;
376 s32 aPreambleLength;
377 s32 aPLCPHeaderLength;
378 s32 aMPDUDurationFactor;
379 s32 aMPDUMaxLength;
380// int aCWmin;
381// int aCWmax;
382};
383
384//-- 11G --
385struct ERP_Information_Element
386{
387 u8 Element_ID;
388 u8 Length;
389 #ifdef _BIG_ENDIAN_ //20060926 add by anson's endian
390 u8 Reserved:5; //20060926 add by anson
391 u8 Barker_Preamble_Mode:1;
392 u8 Use_Protection:1;
393 u8 NonERP_Present:1;
394 #else
395 u8 NonERP_Present:1;
396 u8 Use_Protection:1;
397 u8 Barker_Preamble_Mode:1;
398 u8 Reserved:5;
399 #endif
400};
401
402struct Extended_Supported_Rates_Element
403{
404 u8 Element_ID;
405 u8 Length;
406 u8 ExtendedSupportedRates[255];
407}__attribute__ ((packed));
408
409//WPA(802.11i draft 3.0)
410#define VERSION_WPA 1
411#ifdef _WPA2_
412#define VERSION_WPA2 1
413#endif //end def _WPA2_
414#define OUI_WPA 0x00F25000 //WPA2.0 OUI=00:50:F2, the MSB is reserved for suite type
415#ifdef _WPA2_
416#define OUI_WPA2 0x00AC0F00 // for wpa2 change to 0x00ACOF04 by Ws 26/04/04
417#endif //end def _WPA2_
418
419#define OUI_WPA_ADDITIONAL 0x01
420#define WLAN_MIN_RSN_WPA_LENGTH 6 //added by ws 09/10/04
421#ifdef _WPA2_
422#define WLAN_MIN_RSN_WPA2_LENGTH 2 // Fix to 2 09/14/05
423#endif //end def _WPA2_
424
425#define oui_wpa (u32)(OUI_WPA|OUI_WPA_ADDITIONAL)
426
427#define WPA_OUI_BIG ((u32) 0x01F25000)//added by ws 09/23/04
428#define WPA_OUI_LITTLE ((u32) 0x01F25001)//added by ws 09/23/04
429
430#define WPA_WPS_OUI cpu_to_le32(0x04F25000) // 20061108 For WPS. It's little endian. Big endian is 0x0050F204
431
432//-----WPA2-----
433#ifdef _WPA2_
434#define WPA2_OUI_BIG ((u32)0x01AC0F00)
435#define WPA2_OUI_LITTLE ((u32)0x01AC0F01)
436#endif //end def _WPA2_
437
438//Authentication suite
439#define OUI_AUTH_WPA_NONE 0x00 //for WPA_NONE
440#define OUI_AUTH_8021X 0x01
441#define OUI_AUTH_PSK 0x02
442//Cipher suite
443#define OUI_CIPHER_GROUP_KEY 0x00 //added by ws 05/21/04
444#define OUI_CIPHER_WEP_40 0x01
445#define OUI_CIPHER_TKIP 0x02
446#define OUI_CIPHER_CCMP 0x04
447#define OUI_CIPHER_WEP_104 0x05
448
449typedef struct _SUITE_SELECTOR_
450{
451 union
452 {
453 u8 Value[4];
454 struct _SUIT_
455 {
456 u8 OUI[3];
457 u8 Type;
458 }SuitSelector;
459 };
460}SUITE_SELECTOR;
461
462//-- WPA --
463struct RSN_Information_Element
464{
465 u8 Element_ID;
466 u8 Length;
467 UNALIGNED SUITE_SELECTOR OuiWPAAdditional;//WPA version 2.0 additional field, and should be 00:50:F2:01
468 u16 Version;
469 SUITE_SELECTOR GroupKeySuite;
470 u16 PairwiseKeySuiteCount;
471 SUITE_SELECTOR PairwiseKeySuite[1];
472}__attribute__ ((packed));
473struct RSN_Auth_Sub_Information_Element
474{
475 u16 AuthKeyMngtSuiteCount;
476 SUITE_SELECTOR AuthKeyMngtSuite[1];
477}__attribute__ ((packed));
478
479//-- WPA2 --
480struct RSN_Capability_Element
481{
482 union
483 {
484 u16 __attribute__ ((packed)) wValue;
485 #ifdef _BIG_ENDIAN_ //20060927 add by anson's endian
486 struct _RSN_Capability
487 {
488 u16 __attribute__ ((packed)) Reserved2 : 8; // 20051201
489 u16 __attribute__ ((packed)) Reserved1 : 2;
490 u16 __attribute__ ((packed)) GTK_Replay_Counter : 2;
491 u16 __attribute__ ((packed)) PTK_Replay_Counter : 2;
492 u16 __attribute__ ((packed)) No_Pairwise : 1;
493 u16 __attribute__ ((packed)) Pre_Auth : 1;
494 }__attribute__ ((packed)) RSN_Capability;
495 #else
496 struct _RSN_Capability
497 {
498 u16 __attribute__ ((packed)) Pre_Auth : 1;
499 u16 __attribute__ ((packed)) No_Pairwise : 1;
500 u16 __attribute__ ((packed)) PTK_Replay_Counter : 2;
501 u16 __attribute__ ((packed)) GTK_Replay_Counter : 2;
502 u16 __attribute__ ((packed)) Reserved1 : 2;
503 u16 __attribute__ ((packed)) Reserved2 : 8; // 20051201
504 }__attribute__ ((packed)) RSN_Capability;
505 #endif
506
507 }__attribute__ ((packed)) ;
508}__attribute__ ((packed)) ;
509
510#ifdef _WPA2_
511typedef struct _PMKID
512{
513 u8 pValue[16];
514}PMKID;
515
516struct WPA2_RSN_Information_Element
517{
518 u8 Element_ID;
519 u8 Length;
520 u16 Version;
521 SUITE_SELECTOR GroupKeySuite;
522 u16 PairwiseKeySuiteCount;
523 SUITE_SELECTOR PairwiseKeySuite[1];
524
525}__attribute__ ((packed));
526
527struct WPA2_RSN_Auth_Sub_Information_Element
528{
529 u16 AuthKeyMngtSuiteCount;
530 SUITE_SELECTOR AuthKeyMngtSuite[1];
531}__attribute__ ((packed));
532
533
534struct PMKID_Information_Element
535{
536 u16 PMKID_Count;
537 PMKID pmkid [16] ;
538}__attribute__ ((packed));
539
540#endif //enddef _WPA2_
541//============================================================
542// MAC Frame structure (different type) and subfield structure
543//============================================================
544struct MAC_frame_control
545{
546 u8 mac_frame_info; // a combination of the [Protocol Version, Control Type, Control Subtype]
547 #ifdef _BIG_ENDIAN_ //20060927 add by anson's endian
548 u8 order:1;
549 u8 WEP:1;
550 u8 more_data:1;
551 u8 pwr_mgt:1;
552 u8 retry:1;
553 u8 more_frag:1;
554 u8 from_ds:1;
555 u8 to_ds:1;
556 #else
557 u8 to_ds:1;
558 u8 from_ds:1;
559 u8 more_frag:1;
560 u8 retry:1;
561 u8 pwr_mgt:1;
562 u8 more_data:1;
563 u8 WEP:1;
564 u8 order:1;
565 #endif
566} __attribute__ ((packed));
567
568struct Management_Frame {
569 struct MAC_frame_control frame_control; // 2B, ToDS,FromDS,MoreFrag,MoreData,Order=0
570 u16 duration;
571 u8 DA[MAC_ADDR_LENGTH]; // Addr1
572 u8 SA[MAC_ADDR_LENGTH]; // Addr2
573 u8 BSSID[MAC_ADDR_LENGTH]; // Addr3
574 u16 Sequence_Control;
575 // Management Frame Body <= 325 bytes
576 // FCS 4 bytes
577}__attribute__ ((packed));
578
579// SW-MAC don't Tx/Rx Control-Frame, HW-MAC do it.
580struct Control_Frame {
581 struct MAC_frame_control frame_control; // ToDS,FromDS,MoreFrag,Retry,MoreData,WEP,Order=0
582 u16 duration;
583 u8 RA[MAC_ADDR_LENGTH];
584 u8 TA[MAC_ADDR_LENGTH];
585 u16 FCS;
586}__attribute__ ((packed));
587
588struct Data_Frame {
589 struct MAC_frame_control frame_control;
590 u16 duration;
591 u8 Addr1[MAC_ADDR_LENGTH];
592 u8 Addr2[MAC_ADDR_LENGTH];
593 u8 Addr3[MAC_ADDR_LENGTH];
594 u16 Sequence_Control;
595 u8 Addr4[MAC_ADDR_LENGTH]; // only exist when ToDS=FromDS=1
596 // Data Frame Body <= 2312
597 // FCS
598}__attribute__ ((packed));
599
600struct Disassociation_Frame_Body
601{
602 u16 reasonCode;
603}__attribute__ ((packed));
604
605struct Association_Request_Frame_Body
606{
607 u16 capability_information;
608 u16 listenInterval;
609 u8 Current_AP_Address[MAC_ADDR_LENGTH];//for reassociation only
610 // SSID (2+32 bytes)
611 // Supported_Rates (2+8 bytes)
612}__attribute__ ((packed));
613
614struct Association_Response_Frame_Body
615{
616 u16 capability_information;
617 u16 statusCode;
618 u16 Association_ID;
619 struct Supported_Rates_Element supportedRates;
620}__attribute__ ((packed));
621
622/*struct Reassociation_Request_Frame_Body
623{
624 u16 capability_information;
625 u16 listenInterval;
626 u8 Current_AP_Address[MAC_ADDR_LENGTH];
627 // SSID (2+32 bytes)
628 // Supported_Rates (2+8 bytes)
629};*/
630// eliminated by WS 07/22/04 comboined with associateion request frame.
631
632struct Reassociation_Response_Frame_Body
633{
634 u16 capability_information;
635 u16 statusCode;
636 u16 Association_ID;
637 struct Supported_Rates_Element supportedRates;
638}__attribute__ ((packed));
639
640struct Deauthentication_Frame_Body
641{
642 u16 reasonCode;
643}__attribute__ ((packed));
644
645
646struct Probe_Response_Frame_Body
647{
648 u16 Timestamp;
649 u16 Beacon_Interval;
650 u16 Capability_Information;
651 // SSID
652 // Supported_Rates
653 // PHY parameter Set (DS Parameters)
654 // CF parameter Set
655 // IBSS parameter Set
656}__attribute__ ((packed));
657
658struct Authentication_Frame_Body
659{
660 u16 algorithmNumber;
661 u16 sequenceNumber;
662 u16 statusCode;
663 // NB: don't include ChallengeText in this structure
664 // struct Challenge_Text_Element sChallengeTextElement; // wkchen added
665}__attribute__ ((packed));
666
667
668#endif // _MAC_Structure_H_
669
670
diff --git a/drivers/staging/winbond/mds.c b/drivers/staging/winbond/mds.c
new file mode 100644
index 00000000000..8ce6389c413
--- /dev/null
+++ b/drivers/staging/winbond/mds.c
@@ -0,0 +1,630 @@
1#include "os_common.h"
2
3void
4Mds_reset_descriptor(PADAPTER Adapter)
5{
6 PMDS pMds = &Adapter->Mds;
7
8 pMds->TxPause = 0;
9 pMds->TxThreadCount = 0;
10 pMds->TxFillIndex = 0;
11 pMds->TxDesIndex = 0;
12 pMds->ScanTxPause = 0;
13 memset(pMds->TxOwner, 0, ((MAX_USB_TX_BUFFER_NUMBER + 3) & ~0x03));
14}
15
16unsigned char
17Mds_initial(PADAPTER Adapter)
18{
19 PMDS pMds = &Adapter->Mds;
20
21 pMds->TxPause = FALSE;
22 pMds->TxRTSThreshold = DEFAULT_RTSThreshold;
23 pMds->TxFragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
24
25 vRxTimerInit(Adapter);//for WPA countermeasure
26
27 return hal_get_tx_buffer( &Adapter->sHwData, &pMds->pTxBuffer );
28}
29
30void
31Mds_Destroy(PADAPTER Adapter)
32{
33 vRxTimerStop(Adapter);
34}
35
36void
37Mds_Tx(PADAPTER Adapter)
38{
39 phw_data_t pHwData = &Adapter->sHwData;
40 PMDS pMds = &Adapter->Mds;
41 DESCRIPTOR TxDes;
42 PDESCRIPTOR pTxDes = &TxDes;
43 PUCHAR XmitBufAddress;
44 u16 XmitBufSize, PacketSize, stmp, CurrentSize, FragmentThreshold;
45 u8 FillIndex, TxDesIndex, FragmentCount, FillCount;
46 unsigned char BufferFilled = FALSE, MICAdd = 0;
47
48
49 if (pMds->TxPause)
50 return;
51 if (!hal_driver_init_OK(pHwData))
52 return;
53
54 //Only one thread can be run here
55 if (!OS_ATOMIC_INC( Adapter, &pMds->TxThreadCount) == 1)
56 goto cleanup;
57
58 // Start to fill the data
59 do {
60 FillIndex = pMds->TxFillIndex;
61 if (pMds->TxOwner[FillIndex]) { // Is owned by software 0:Yes 1:No
62#ifdef _PE_TX_DUMP_
63 WBDEBUG(("[Mds_Tx] Tx Owner is H/W.\n"));
64#endif
65 break;
66 }
67
68 XmitBufAddress = pMds->pTxBuffer + (MAX_USB_TX_BUFFER * FillIndex); //Get buffer
69 XmitBufSize = 0;
70 FillCount = 0;
71 do {
72 PacketSize = Adapter->sMlmeFrame.len;
73 if (!PacketSize)
74 break;
75
76 //For Check the buffer resource
77 FragmentThreshold = CURRENT_FRAGMENT_THRESHOLD;
78 //931130.5.b
79 FragmentCount = PacketSize/FragmentThreshold + 1;
80 stmp = PacketSize + FragmentCount*32 + 8;//931130.5.c 8:MIC
81 if ((XmitBufSize + stmp) >= MAX_USB_TX_BUFFER) {
82 printk("[Mds_Tx] Excess max tx buffer.\n");
83 break; // buffer is not enough
84 }
85
86
87 //
88 // Start transmitting
89 //
90 BufferFilled = TRUE;
91
92 /* Leaves first u8 intact */
93 memset((PUCHAR)pTxDes + 1, 0, sizeof(DESCRIPTOR) - 1);
94
95 TxDesIndex = pMds->TxDesIndex;//Get the current ID
96 pTxDes->Descriptor_ID = TxDesIndex;
97 pMds->TxDesFrom[ TxDesIndex ] = 2;//Storing the information of source comming from
98 pMds->TxDesIndex++;
99 pMds->TxDesIndex %= MAX_USB_TX_DESCRIPTOR;
100
101 MLME_GetNextPacket( Adapter, pTxDes );
102
103 // Copy header. 8byte USB + 24byte 802.11Hdr. Set TxRate, Preamble type
104 Mds_HeaderCopy( Adapter, pTxDes, XmitBufAddress );
105
106 // For speed up Key setting
107 if (pTxDes->EapFix) {
108#ifdef _PE_TX_DUMP_
109 WBDEBUG(("35: EPA 4th frame detected. Size = %d\n", PacketSize));
110#endif
111 pHwData->IsKeyPreSet = 1;
112 }
113
114 // Copy (fragment) frame body, and set USB, 802.11 hdr flag
115 CurrentSize = Mds_BodyCopy(Adapter, pTxDes, XmitBufAddress);
116
117 // Set RTS/CTS and Normal duration field into buffer
118 Mds_DurationSet(Adapter, pTxDes, XmitBufAddress);
119
120 //
121 // Calculation MIC from buffer which maybe fragment, then fill into temporary address 8 byte
122 // 931130.5.e
123 if (MICAdd)
124 Mds_MicFill( Adapter, pTxDes, XmitBufAddress );
125
126 //Shift to the next address
127 XmitBufSize += CurrentSize;
128 XmitBufAddress += CurrentSize;
129
130#ifdef _IBSS_BEACON_SEQ_STICK_
131 if ((XmitBufAddress[ DOT_11_DA_OFFSET+8 ] & 0xfc) != MAC_SUBTYPE_MNGMNT_PROBE_REQUEST) // +8 for USB hdr
132#endif
133 pMds->TxToggle = TRUE;
134
135 // Get packet to transmit completed, 1:TESTSTA 2:MLME 3: Ndis data
136 MLME_SendComplete(Adapter, 0, TRUE);
137
138 // Software TSC count 20060214
139 pMds->TxTsc++;
140 if (pMds->TxTsc == 0)
141 pMds->TxTsc_2++;
142
143 FillCount++; // 20060928
144 } while (HAL_USB_MODE_BURST(pHwData)); // End of multiple MSDU copy loop. FALSE = single TRUE = multiple sending
145
146 // Move to the next one, if necessary
147 if (BufferFilled) {
148 // size setting
149 pMds->TxBufferSize[ FillIndex ] = XmitBufSize;
150
151 // 20060928 set Tx count
152 pMds->TxCountInBuffer[FillIndex] = FillCount;
153
154 // Set owner flag
155 pMds->TxOwner[FillIndex] = 1;
156
157 pMds->TxFillIndex++;
158 pMds->TxFillIndex %= MAX_USB_TX_BUFFER_NUMBER;
159 BufferFilled = FALSE;
160 } else
161 break;
162
163 if (!PacketSize) // No more pk for transmitting
164 break;
165
166 } while(TRUE);
167
168 //
169 // Start to send by lower module
170 //
171 if (!pHwData->IsKeyPreSet)
172 Wb35Tx_start(pHwData);
173
174 cleanup:
175 OS_ATOMIC_DEC( Adapter, &pMds->TxThreadCount );
176}
177
178void
179Mds_SendComplete(PADAPTER Adapter, PT02_DESCRIPTOR pT02)
180{
181 PMDS pMds = &Adapter->Mds;
182 phw_data_t pHwData = &Adapter->sHwData;
183 u8 PacketId = (u8)pT02->T02_Tx_PktID;
184 unsigned char SendOK = TRUE;
185 u8 RetryCount, TxRate;
186
187 if (pT02->T02_IgnoreResult) // Don't care the result
188 return;
189 if (pT02->T02_IsLastMpdu) {
190 //TODO: DTO -- get the retry count and fragment count
191 // Tx rate
192 TxRate = pMds->TxRate[ PacketId ][ 0 ];
193 RetryCount = (u8)pT02->T02_MPDU_Cnt;
194 if (pT02->value & FLAG_ERROR_TX_MASK) {
195 SendOK = FALSE;
196
197 if (pT02->T02_transmit_abort || pT02->T02_out_of_MaxTxMSDULiftTime) {
198 //retry error
199 pHwData->dto_tx_retry_count += (RetryCount+1);
200 //[for tx debug]
201 if (RetryCount<7)
202 pHwData->tx_retry_count[RetryCount] += RetryCount;
203 else
204 pHwData->tx_retry_count[7] += RetryCount;
205 #ifdef _PE_STATE_DUMP_
206 WBDEBUG(("dto_tx_retry_count =%d\n", pHwData->dto_tx_retry_count));
207 #endif
208 MTO_SetTxCount(Adapter, TxRate, RetryCount);
209 }
210 pHwData->dto_tx_frag_count += (RetryCount+1);
211
212 //[for tx debug]
213 if (pT02->T02_transmit_abort_due_to_TBTT)
214 pHwData->tx_TBTT_start_count++;
215 if (pT02->T02_transmit_without_encryption_due_to_wep_on_false)
216 pHwData->tx_WepOn_false_count++;
217 if (pT02->T02_discard_due_to_null_wep_key)
218 pHwData->tx_Null_key_count++;
219 } else {
220 if (pT02->T02_effective_transmission_rate)
221 pHwData->tx_ETR_count++;
222 MTO_SetTxCount(Adapter, TxRate, RetryCount);
223 }
224
225 // Clear send result buffer
226 pMds->TxResult[ PacketId ] = 0;
227 } else
228 pMds->TxResult[ PacketId ] |= ((u16)(pT02->value & 0x0ffff));
229}
230
231void
232Mds_HeaderCopy(PADAPTER Adapter, PDESCRIPTOR pDes, PUCHAR TargetBuffer)
233{
234 PMDS pMds = &Adapter->Mds;
235 PUCHAR src_buffer = pDes->buffer_address[0];//931130.5.g
236 PT00_DESCRIPTOR pT00;
237 PT01_DESCRIPTOR pT01;
238 u16 stmp;
239 u8 i, ctmp1, ctmp2, ctmpf;
240 u16 FragmentThreshold = CURRENT_FRAGMENT_THRESHOLD;
241
242
243 stmp = pDes->buffer_total_size;
244 //
245 // Set USB header 8 byte
246 //
247 pT00 = (PT00_DESCRIPTOR)TargetBuffer;
248 TargetBuffer += 4;
249 pT01 = (PT01_DESCRIPTOR)TargetBuffer;
250 TargetBuffer += 4;
251
252 pT00->value = 0;// Clear
253 pT01->value = 0;// Clear
254
255 pT00->T00_tx_packet_id = pDes->Descriptor_ID;// Set packet ID
256 pT00->T00_header_length = 24;// Set header length
257 pT01->T01_retry_abort_ebable = 1;//921013 931130.5.h
258
259 // Key ID setup
260 pT01->T01_wep_id = 0;
261
262 FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; //Do not fragment
263 // Copy full data, the 1'st buffer contain all the data 931130.5.j
264 memcpy( TargetBuffer, src_buffer, DOT_11_MAC_HEADER_SIZE );// Copy header
265 pDes->buffer_address[0] = src_buffer + DOT_11_MAC_HEADER_SIZE;
266 pDes->buffer_total_size -= DOT_11_MAC_HEADER_SIZE;
267 pDes->buffer_size[0] = pDes->buffer_total_size;
268
269 // Set fragment threshold
270 FragmentThreshold -= (DOT_11_MAC_HEADER_SIZE + 4);
271 pDes->FragmentThreshold = FragmentThreshold;
272
273 // Set more frag bit
274 TargetBuffer[1] |= 0x04;// Set more frag bit
275
276 //
277 // Set tx rate
278 //
279 stmp = *(PUSHORT)(TargetBuffer+30); // 2n alignment address
280
281 //Use basic rate
282 ctmp1 = ctmpf = CURRENT_TX_RATE_FOR_MNG;
283
284 pDes->TxRate = ctmp1;
285 #ifdef _PE_TX_DUMP_
286 WBDEBUG(("Tx rate =%x\n", ctmp1));
287 #endif
288
289 pT01->T01_modulation_type = (ctmp1%3) ? 0 : 1;
290
291 for( i=0; i<2; i++ ) {
292 if( i == 1 )
293 ctmp1 = ctmpf;
294
295 pMds->TxRate[pDes->Descriptor_ID][i] = ctmp1; // backup the ta rate and fall back rate
296
297 if( ctmp1 == 108) ctmp2 = 7;
298 else if( ctmp1 == 96 ) ctmp2 = 6; // Rate convert for USB
299 else if( ctmp1 == 72 ) ctmp2 = 5;
300 else if( ctmp1 == 48 ) ctmp2 = 4;
301 else if( ctmp1 == 36 ) ctmp2 = 3;
302 else if( ctmp1 == 24 ) ctmp2 = 2;
303 else if( ctmp1 == 18 ) ctmp2 = 1;
304 else if( ctmp1 == 12 ) ctmp2 = 0;
305 else if( ctmp1 == 22 ) ctmp2 = 3;
306 else if( ctmp1 == 11 ) ctmp2 = 2;
307 else if( ctmp1 == 4 ) ctmp2 = 1;
308 else ctmp2 = 0; // if( ctmp1 == 2 ) or default
309
310 if( i == 0 )
311 pT01->T01_transmit_rate = ctmp2;
312 else
313 pT01->T01_fall_back_rate = ctmp2;
314 }
315
316 //
317 // Set preamble type
318 //
319 if ((pT01->T01_modulation_type == 0) && (pT01->T01_transmit_rate == 0)) // RATE_1M
320 pDes->PreambleMode = WLAN_PREAMBLE_TYPE_LONG;
321 else
322 pDes->PreambleMode = CURRENT_PREAMBLE_MODE;
323 pT01->T01_plcp_header_length = pDes->PreambleMode; // Set preamble
324
325}
326
327// The function return the 4n size of usb pk
328u16
329Mds_BodyCopy(PADAPTER Adapter, PDESCRIPTOR pDes, PUCHAR TargetBuffer)
330{
331 PT00_DESCRIPTOR pT00;
332 PMDS pMds = &Adapter->Mds;
333 PUCHAR buffer, src_buffer, pctmp;
334 u16 Size = 0;
335 u16 SizeLeft, CopySize, CopyLeft, stmp;
336 u8 buf_index, FragmentCount = 0;
337
338
339 // Copy fragment body
340 buffer = TargetBuffer; // shift 8B usb + 24B 802.11
341 SizeLeft = pDes->buffer_total_size;
342 buf_index = pDes->buffer_start_index;
343
344 pT00 = (PT00_DESCRIPTOR)buffer;
345 while (SizeLeft) {
346 pT00 = (PT00_DESCRIPTOR)buffer;
347 CopySize = SizeLeft;
348 if (SizeLeft > pDes->FragmentThreshold) {
349 CopySize = pDes->FragmentThreshold;
350 pT00->T00_frame_length = 24 + CopySize;//Set USB length
351 } else
352 pT00->T00_frame_length = 24 + SizeLeft;//Set USB length
353
354 SizeLeft -= CopySize;
355
356 // 1 Byte operation
357 pctmp = (PUCHAR)( buffer + 8 + DOT_11_SEQUENCE_OFFSET );
358 *pctmp &= 0xf0;
359 *pctmp |= FragmentCount;//931130.5.m
360 if( !FragmentCount )
361 pT00->T00_first_mpdu = 1;
362
363 buffer += 32; // 8B usb + 24B 802.11 header
364 Size += 32;
365
366 // Copy into buffer
367 stmp = CopySize + 3;
368 stmp &= ~0x03;//4n Alignment
369 Size += stmp;// Current 4n offset of mpdu
370
371 while (CopySize) {
372 // Copy body
373 src_buffer = pDes->buffer_address[buf_index];
374 CopyLeft = CopySize;
375 if (CopySize >= pDes->buffer_size[buf_index]) {
376 CopyLeft = pDes->buffer_size[buf_index];
377
378 // Get the next buffer of descriptor
379 buf_index++;
380 buf_index %= MAX_DESCRIPTOR_BUFFER_INDEX;
381 } else {
382 PUCHAR pctmp = pDes->buffer_address[buf_index];
383 pctmp += CopySize;
384 pDes->buffer_address[buf_index] = pctmp;
385 pDes->buffer_size[buf_index] -= CopySize;
386 }
387
388 memcpy(buffer, src_buffer, CopyLeft);
389 buffer += CopyLeft;
390 CopySize -= CopyLeft;
391 }
392
393 // 931130.5.n
394 if (pMds->MicAdd) {
395 if (!SizeLeft) {
396 pMds->MicWriteAddress[ pMds->MicWriteIndex ] = buffer - pMds->MicAdd;
397 pMds->MicWriteSize[ pMds->MicWriteIndex ] = pMds->MicAdd;
398 pMds->MicAdd = 0;
399 }
400 else if( SizeLeft < 8 ) //931130.5.p
401 {
402 pMds->MicAdd = SizeLeft;
403 pMds->MicWriteAddress[ pMds->MicWriteIndex ] = buffer - ( 8 - SizeLeft );
404 pMds->MicWriteSize[ pMds->MicWriteIndex ] = 8 - SizeLeft;
405 pMds->MicWriteIndex++;
406 }
407 }
408
409 // Does it need to generate the new header for next mpdu?
410 if (SizeLeft) {
411 buffer = TargetBuffer + Size; // Get the next 4n start address
412 memcpy( buffer, TargetBuffer, 32 );//Copy 8B USB +24B 802.11
413 pT00 = (PT00_DESCRIPTOR)buffer;
414 pT00->T00_first_mpdu = 0;
415 }
416
417 FragmentCount++;
418 }
419
420 pT00->T00_last_mpdu = 1;
421 pT00->T00_IsLastMpdu = 1;
422 buffer = (PUCHAR)pT00 + 8; // +8 for USB hdr
423 buffer[1] &= ~0x04; // Clear more frag bit of 802.11 frame control
424 pDes->FragmentCount = FragmentCount; // Update the correct fragment number
425 return Size;
426}
427
428
429void
430Mds_DurationSet( PADAPTER Adapter, PDESCRIPTOR pDes, PUCHAR buffer )
431{
432 PT00_DESCRIPTOR pT00;
433 PT01_DESCRIPTOR pT01;
434 u16 Duration, NextBodyLen, OffsetSize;
435 u8 Rate, i;
436 unsigned char CTS_on = FALSE, RTS_on = FALSE;
437 PT00_DESCRIPTOR pNextT00;
438 u16 BodyLen;
439 unsigned char boGroupAddr = FALSE;
440
441
442 OffsetSize = pDes->FragmentThreshold + 32 + 3;
443 OffsetSize &= ~0x03;
444 Rate = pDes->TxRate >> 1;
445 if (!Rate)
446 Rate = 1;
447
448 pT00 = (PT00_DESCRIPTOR)buffer;
449 pT01 = (PT01_DESCRIPTOR)(buffer+4);
450 pNextT00 = (PT00_DESCRIPTOR)(buffer+OffsetSize);
451
452 if( buffer[ DOT_11_DA_OFFSET+8 ] & 0x1 ) // +8 for USB hdr
453 boGroupAddr = TRUE;
454
455 //========================================
456 // Set RTS/CTS mechanism
457 //========================================
458 if (!boGroupAddr)
459 {
460 //NOTE : If the protection mode is enabled and the MSDU will be fragmented,
461 // the tx rates of MPDUs will all be DSSS rates. So it will not use
462 // CTS-to-self in this case. CTS-To-self will only be used when without
463 // fragmentation. -- 20050112
464 BodyLen = (u16)pT00->T00_frame_length; //include 802.11 header
465 BodyLen += 4; //CRC
466
467 if( BodyLen >= CURRENT_RTS_THRESHOLD )
468 RTS_on = TRUE; // Using RTS
469 else
470 {
471 if( pT01->T01_modulation_type ) // Is using OFDM
472 {
473 if( CURRENT_PROTECT_MECHANISM ) // Is using protect
474 CTS_on = TRUE; // Using CTS
475 }
476 }
477 }
478
479 if( RTS_on || CTS_on )
480 {
481 if( pT01->T01_modulation_type) // Is using OFDM
482 {
483 //CTS duration
484 // 2 SIFS + DATA transmit time + 1 ACK
485 // ACK Rate : 24 Mega bps
486 // ACK frame length = 14 bytes
487 Duration = 2*DEFAULT_SIFSTIME +
488 2*PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION +
489 ((BodyLen*8 + 22 + Rate*4 - 1)/(Rate*4))*Tsym +
490 ((112 + 22 + 95)/96)*Tsym;
491 }
492 else //DSSS
493 {
494 //CTS duration
495 // 2 SIFS + DATA transmit time + 1 ACK
496 // Rate : ?? Mega bps
497 // ACK frame length = 14 bytes
498 if( pT01->T01_plcp_header_length ) //long preamble
499 Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME*2;
500 else
501 Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME*2;
502
503 Duration += ( ((BodyLen + 14)*8 + Rate-1) / Rate +
504 DEFAULT_SIFSTIME*2 );
505 }
506
507 if( RTS_on )
508 {
509 if( pT01->T01_modulation_type ) // Is using OFDM
510 {
511 //CTS + 1 SIFS + CTS duration
512 //CTS Rate : 24 Mega bps
513 //CTS frame length = 14 bytes
514 Duration += (DEFAULT_SIFSTIME +
515 PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION +
516 ((112 + 22 + 95)/96)*Tsym);
517 }
518 else
519 {
520 //CTS + 1 SIFS + CTS duration
521 //CTS Rate : ?? Mega bps
522 //CTS frame length = 14 bytes
523 if( pT01->T01_plcp_header_length ) //long preamble
524 Duration += LONG_PREAMBLE_PLUS_PLCPHEADER_TIME;
525 else
526 Duration += SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME;
527
528 Duration += ( ((112 + Rate-1) / Rate) + DEFAULT_SIFSTIME );
529 }
530 }
531
532 // Set the value into USB descriptor
533 pT01->T01_add_rts = RTS_on ? 1 : 0;
534 pT01->T01_add_cts = CTS_on ? 1 : 0;
535 pT01->T01_rts_cts_duration = Duration;
536 }
537
538 //=====================================
539 // Fill the more fragment descriptor
540 //=====================================
541 if( boGroupAddr )
542 Duration = 0;
543 else
544 {
545 for( i=pDes->FragmentCount-1; i>0; i-- )
546 {
547 NextBodyLen = (u16)pNextT00->T00_frame_length;
548 NextBodyLen += 4; //CRC
549
550 if( pT01->T01_modulation_type )
551 {
552 //OFDM
553 // data transmit time + 3 SIFS + 2 ACK
554 // Rate : ??Mega bps
555 // ACK frame length = 14 bytes, tx rate = 24M
556 Duration = PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION * 3;
557 Duration += (((NextBodyLen*8 + 22 + Rate*4 - 1)/(Rate*4)) * Tsym +
558 (((2*14)*8 + 22 + 95)/96)*Tsym +
559 DEFAULT_SIFSTIME*3);
560 }
561 else
562 {
563 //DSSS
564 // data transmit time + 2 ACK + 3 SIFS
565 // Rate : ??Mega bps
566 // ACK frame length = 14 bytes
567 //TODO :
568 if( pT01->T01_plcp_header_length ) //long preamble
569 Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME*3;
570 else
571 Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME*3;
572
573 Duration += ( ((NextBodyLen + (2*14))*8 + Rate-1) / Rate +
574 DEFAULT_SIFSTIME*3 );
575 }
576
577 ((PUSHORT)buffer)[5] = cpu_to_le16(Duration);// 4 USHOR for skip 8B USB, 2USHORT=FC + Duration
578
579 //----20061009 add by anson's endian
580 pNextT00->value = cpu_to_le32(pNextT00->value);
581 pT01->value = cpu_to_le32( pT01->value );
582 //----end 20061009 add by anson's endian
583
584 buffer += OffsetSize;
585 pT01 = (PT01_DESCRIPTOR)(buffer+4);
586 if (i != 1) //The last fragment will not have the next fragment
587 pNextT00 = (PT00_DESCRIPTOR)(buffer+OffsetSize);
588 }
589
590 //=====================================
591 // Fill the last fragment descriptor
592 //=====================================
593 if( pT01->T01_modulation_type )
594 {
595 //OFDM
596 // 1 SIFS + 1 ACK
597 // Rate : 24 Mega bps
598 // ACK frame length = 14 bytes
599 Duration = PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION;
600 //The Tx rate of ACK use 24M
601 Duration += (((112 + 22 + 95)/96)*Tsym + DEFAULT_SIFSTIME );
602 }
603 else
604 {
605 // DSSS
606 // 1 ACK + 1 SIFS
607 // Rate : ?? Mega bps
608 // ACK frame length = 14 bytes(112 bits)
609 if( pT01->T01_plcp_header_length ) //long preamble
610 Duration = LONG_PREAMBLE_PLUS_PLCPHEADER_TIME;
611 else
612 Duration = SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME;
613
614 Duration += ( (112 + Rate-1)/Rate + DEFAULT_SIFSTIME );
615 }
616 }
617
618 ((PUSHORT)buffer)[5] = cpu_to_le16(Duration);// 4 USHOR for skip 8B USB, 2USHORT=FC + Duration
619 pT00->value = cpu_to_le32(pT00->value);
620 pT01->value = cpu_to_le32(pT01->value);
621 //--end 20061009 add
622
623}
624
625void MDS_EthernetPacketReceive( PADAPTER Adapter, PRXLAYER1 pRxLayer1 )
626{
627 OS_RECEIVE_PACKET_INDICATE( Adapter, pRxLayer1 );
628}
629
630
diff --git a/drivers/staging/winbond/mds_f.h b/drivers/staging/winbond/mds_f.h
new file mode 100644
index 00000000000..651188be106
--- /dev/null
+++ b/drivers/staging/winbond/mds_f.h
@@ -0,0 +1,33 @@
1unsigned char Mds_initial( PADAPTER Adapter );
2void Mds_Destroy( PADAPTER Adapter );
3void Mds_Tx( PADAPTER Adapter );
4void Mds_HeaderCopy( PADAPTER Adapter, PDESCRIPTOR pDes, PUCHAR TargetBuffer );
5u16 Mds_BodyCopy( PADAPTER Adapter, PDESCRIPTOR pDes, PUCHAR TargetBuffer );
6void Mds_DurationSet( PADAPTER Adapter, PDESCRIPTOR pDes, PUCHAR TargetBuffer );
7void Mds_SendComplete( PADAPTER Adapter, PT02_DESCRIPTOR pT02 );
8void Mds_MpduProcess( PADAPTER Adapter, PDESCRIPTOR pRxDes );
9void Mds_reset_descriptor( PADAPTER Adapter );
10extern void DataDmp(u8 *pdata, u32 len, u32 offset);
11
12
13void vRxTimerInit(PWB32_ADAPTER Adapter);
14void vRxTimerStart(PWB32_ADAPTER Adapter, int timeout_value);
15void RxTimerHandler_1a( PADAPTER Adapter);
16void vRxTimerStop(PWB32_ADAPTER Adapter);
17void RxTimerHandler( void* SystemSpecific1,
18 PWB32_ADAPTER Adapter,
19 void* SystemSpecific2,
20 void* SystemSpecific3);
21
22
23// For Asynchronous indicating. The routine collocates with USB.
24void Mds_MsduProcess( PWB32_ADAPTER Adapter, PRXLAYER1 pRxLayer1, u8 SlotIndex);
25
26// For data frame sending 20060802
27u16 MDS_GetPacketSize( PADAPTER Adapter );
28void MDS_GetNextPacket( PADAPTER Adapter, PDESCRIPTOR pDes );
29void MDS_GetNextPacketComplete( PADAPTER Adapter, PDESCRIPTOR pDes );
30void MDS_SendResult( PADAPTER Adapter, u8 PacketId, unsigned char SendOK );
31void MDS_EthernetPacketReceive( PADAPTER Adapter, PRXLAYER1 pRxLayer1 );
32
33
diff --git a/drivers/staging/winbond/mds_s.h b/drivers/staging/winbond/mds_s.h
new file mode 100644
index 00000000000..4738279d5f3
--- /dev/null
+++ b/drivers/staging/winbond/mds_s.h
@@ -0,0 +1,183 @@
1////////////////////////////////////////////////////////////////////////////////////////////////////////
2#define MAX_USB_TX_DESCRIPTOR 15 // IS89C35 ability
3#define MAX_USB_TX_BUFFER_NUMBER 4 // Virtual pre-buffer number of MAX_USB_TX_BUFFER
4#define MAX_USB_TX_BUFFER 4096 // IS89C35 ability 4n alignment is required for hardware
5
6#define MDS_EVENT_INDICATE( _A, _B, _F ) OS_EVENT_INDICATE( _A, _B, _F )
7#define AUTH_REQUEST_PAIRWISE_ERROR 0 // _F flag setting
8#define AUTH_REQUEST_GROUP_ERROR 1 // _F flag setting
9
10// For variable setting
11#define CURRENT_BSS_TYPE psBSS(psLOCAL->wConnectedSTAindex)->bBssType
12#define CURRENT_WEP_MODE psSME->_dot11PrivacyInvoked
13#define CURRENT_BSSID psBSS(psLOCAL->wConnectedSTAindex)->abBssID
14#define CURRENT_DESIRED_WPA_ENABLE ((psSME->bDesiredAuthMode==WPA_AUTH)||(psSME->bDesiredAuthMode==WPAPSK_AUTH))
15#ifdef _WPA2_
16#define CURRENT_DESIRED_WPA2_ENABLE ((psSME->bDesiredAuthMode==WPA2_AUTH)||(psSME->bDesiredAuthMode==WPA2PSK_AUTH))
17#endif //end def _WPA2_
18#define CURRENT_PAIRWISE_KEY_OK psSME->pairwise_key_ok
19//[20040712 WS]
20#define CURRENT_GROUP_KEY_OK psSME->group_key_ok
21#define CURRENT_PAIRWISE_KEY psSME->tx_mic_key
22#define CURRENT_GROUP_KEY psSME->group_tx_mic_key
23#define CURRENT_ENCRYPT_STATUS psSME->encrypt_status
24#define CURRENT_WEP_ID Adapter->sSmePara._dot11WEPDefaultKeyID
25#define CURRENT_CONTROL_PORT_BLOCK ( psSME->wpa_ok!=1 || (Adapter->Mds.boCounterMeasureBlock==1 && (CURRENT_ENCRYPT_STATUS==ENCRYPT_TKIP)) )
26#define CURRENT_FRAGMENT_THRESHOLD (Adapter->Mds.TxFragmentThreshold & ~0x1)
27#define CURRENT_PREAMBLE_MODE psLOCAL->boShortPreamble?WLAN_PREAMBLE_TYPE_SHORT:WLAN_PREAMBLE_TYPE_LONG
28#define CURRENT_LINK_ON OS_LINK_STATUS
29#define CURRENT_TX_RATE Adapter->sLocalPara.CurrentTxRate
30#define CURRENT_FALL_BACK_TX_RATE Adapter->sLocalPara.CurrentTxFallbackRate
31#define CURRENT_TX_RATE_FOR_MNG Adapter->sLocalPara.CurrentTxRateForMng
32#define CURRENT_PROTECT_MECHANISM psLOCAL->boProtectMechanism
33#define CURRENT_RTS_THRESHOLD Adapter->Mds.TxRTSThreshold
34
35#define MIB_GS_XMIT_OK_INC Adapter->sLocalPara.GS_XMIT_OK++
36#define MIB_GS_RCV_OK_INC Adapter->sLocalPara.GS_RCV_OK++
37#define MIB_GS_XMIT_ERROR_INC Adapter->sLocalPara.GS_XMIT_ERROR
38
39//---------- TX -----------------------------------
40#define ETHERNET_TX_DESCRIPTORS MAX_USB_TX_BUFFER_NUMBER
41
42//---------- RX ------------------------------------
43#define ETHERNET_RX_DESCRIPTORS 8 //It's not necessary to allocate more than 2 in sync indicate
44
45//================================================================
46// Configration default value
47//================================================================
48#define DEFAULT_MULTICASTLISTMAX 32 // standard
49#define DEFAULT_TX_BURSTLENGTH 3 // 32 Longwords
50#define DEFAULT_RX_BURSTLENGTH 3 // 32 Longwords
51#define DEFAULT_TX_THRESHOLD 0 // Full Packet
52#define DEFAULT_RX_THRESHOLD 0 // Full Packet
53#define DEFAULT_MAXTXRATE 6 // 11 Mbps (Long)
54#define DEFAULT_CHANNEL 3 // Chennel 3
55#define DEFAULT_RTSThreshold 2347 // Disable RTS
56//#define DEFAULT_PME 1 // Enable
57#define DEFAULT_PME 0 // Disable
58#define DEFAULT_SIFSTIME 10
59#define DEFAULT_ACKTIME_1ML 304 // 148+44+112 911220 by LCC
60#define DEFAULT_ACKTIME_2ML 248 // 148+44+56 911220 by LCC
61#define DEFAULT_FRAGMENT_THRESHOLD 2346 // No fragment
62#define DEFAULT_PREAMBLE_LENGTH 72
63#define DEFAULT_PLCPHEADERTIME_LENGTH 24
64
65/*------------------------------------------------------------------------
66 0.96 sec since time unit of the R03 for the current, W89C32 is about 60ns
67 instead of 960 ns. This shall be fixed in the future W89C32
68 -------------------------------------------------------------------------*/
69#define DEFAULT_MAX_RECEIVE_TIME 16440000
70
71#define RX_BUF_SIZE 2352 // 600 // For 301 must be multiple of 8
72#define MAX_RX_DESCRIPTORS 18 // Rx Layer 2
73#define MAX_BUFFER_QUEUE 8 // The value is always equal 8 due to NDIS_PACKET's MiniportReserved field size
74
75
76// For brand-new rx system
77#define MDS_ID_IGNORE ETHERNET_RX_DESCRIPTORS
78
79// For Tx Packet status classify
80#define PACKET_FREE_TO_USE 0
81#define PACKET_COME_FROM_NDIS 0x08
82#define PACKET_COME_FROM_MLME 0x80
83#define PACKET_SEND_COMPLETE 0xff
84
85typedef struct _MDS
86{
87 // For Tx usage
88 u8 TxOwner[ ((MAX_USB_TX_BUFFER_NUMBER + 3) & ~0x03) ];
89 PUCHAR pTxBuffer;
90 u16 TxBufferSize[ ((MAX_USB_TX_BUFFER_NUMBER + 1) & ~0x01) ];
91 u8 TxDesFrom[ ((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03) ];//931130.4.u // 1: MLME 2: NDIS control 3: NDIS data
92 u8 TxCountInBuffer[ ((MAX_USB_TX_DESCRIPTOR + 3) & ~0x03) ]; // 20060928
93
94 u8 TxFillIndex;//the next index of TxBuffer can be used
95 u8 TxDesIndex;//The next index of TxDes can be used
96 u8 ScanTxPause; //data Tx pause because the scanning is progressing, but probe request Tx won't.
97 u8 TxPause;//For pause the Mds_Tx modult
98
99 OS_ATOMIC TxThreadCount;//For thread counting 931130.4.v
100//950301 delete due to HW
101// OS_ATOMIC TxConcurrentCount;//931130.4.w
102
103 u16 TxResult[ ((MAX_USB_TX_DESCRIPTOR + 1) & ~0x01) ];//Collect the sending result of Mpdu
104
105 u8 MicRedundant[8]; // For tmp use
106 PUCHAR MicWriteAddress[2]; //The start address to fill the Mic, use 2 point due to Mic maybe fragment
107
108 u16 MicWriteSize[2]; //931130.4.x
109
110 u16 MicAdd; // If want to add the Mic, this variable equal to 8
111 u16 MicWriteIndex;//The number of MicWriteAddress 931130.4.y
112
113 u8 TxRate[ ((MAX_USB_TX_DESCRIPTOR+1)&~0x01) ][2]; // [0] current tx rate, [1] fall back rate
114 u8 TxInfo[ ((MAX_USB_TX_DESCRIPTOR+1)&~0x01) ]; //Store information for callback function
115
116 //WKCHEN added for scanning mechanism
117 u8 TxToggle; //It is TRUE if there are tx activities in some time interval
118 u8 Reserved_[3];
119
120 //---------- for Tx Parameter
121 u16 TxFragmentThreshold; // For frame body only
122 u16 TxRTSThreshold;
123
124 u32 MaxReceiveTime;//911220.3 Add
125
126 // depend on OS,
127 u32 MulticastListNo;
128 u32 PacketFilter; // Setting by NDIS, the current packet filter in use.
129 u8 MulticastAddressesArray[DEFAULT_MULTICASTLISTMAX][MAC_ADDR_LENGTH];
130
131 //COUNTERMEASURE
132 u8 bMICfailCount;
133 u8 boCounterMeasureBlock;
134 u8 reserved_4[2];
135
136 //NDIS_MINIPORT_TIMER nTimer;
137 OS_TIMER nTimer;
138
139 u32 TxTsc; // 20060214
140 u32 TxTsc_2; // 20060214
141
142} MDS, *PMDS;
143
144
145typedef struct _RxBuffer
146{
147 PUCHAR pBufferAddress; // Pointer the received data buffer.
148 u16 BufferSize;
149 u8 RESERVED;
150 u8 BufferIndex;// Only 1 byte
151} RXBUFFER, *PRXBUFFER;
152
153//
154// Reveive Layer 1 Format.
155//----------------------------
156typedef struct _RXLAYER1
157{
158 u16 SequenceNumber; // The sequence number of the last received packet.
159 u16 BufferTotalSize;
160
161 u32 InUsed;
162 u32 DecryptionMethod; // The desired defragment number of the next incoming packet.
163
164 u8 DeFragmentNumber;
165 u8 FrameType;
166 u8 TypeEncapsulated;
167 u8 BufferNumber;
168
169 u32 FirstFrameArrivedTime;
170
171 RXBUFFER BufferQueue[ MAX_BUFFER_QUEUE ];
172
173 u8 LastFrameType; // 20061004 for fix intel 3945 's bug
174 u8 RESERVED[3]; //@@ anson
175
176 /////////////////////////////////////////////////////////////////////////////////////////////
177 // For brand-new Rx system
178 u8 ReservedBuffer[ 2400 ];//If Buffer ID is reserved one, it must copy the data into this area
179 PUCHAR ReservedBufferPoint;// Point to the next availabe address of reserved buffer
180
181}RXLAYER1, * PRXLAYER1;
182
183
diff --git a/drivers/staging/winbond/mlme_mib.h b/drivers/staging/winbond/mlme_mib.h
new file mode 100644
index 00000000000..89759739cba
--- /dev/null
+++ b/drivers/staging/winbond/mlme_mib.h
@@ -0,0 +1,84 @@
1//============================================================================
2// MLMEMIB.H -
3//
4// Description:
5// Get and Set some of MLME MIB attributes.
6//
7// Revision history:
8// --------------------------------------------------------------------------
9// 20030117 PD43 Austin Liu
10// Initial release
11//
12// Copyright (c) 2003 Winbond Electronics Corp. All rights reserved.
13//============================================================================
14
15#ifndef _MLME_MIB_H
16#define _MLME_MIB_H
17
18//============================================================================
19// MLMESetExcludeUnencrypted --
20//
21// Description:
22// Set the dot11ExcludeUnencrypted value.
23//
24// Arguments:
25// Adapter - The pointer to the miniport adapter context.
26// ExUnencrypted - unsigned char type. The value to be set.
27//
28// Return values:
29// None.
30//============================================================================
31#define MLMESetExcludeUnencrypted(Adapter, ExUnencrypted) \
32{ \
33 (Adapter)->sLocalPara.ExcludeUnencrypted = ExUnencrypted; \
34}
35
36//============================================================================
37// MLMEGetExcludeUnencrypted --
38//
39// Description:
40// Get the dot11ExcludeUnencrypted value.
41//
42// Arguments:
43// Adapter - The pointer to the miniport adapter context.
44//
45// Return values:
46// unsigned char type. The current dot11ExcludeUnencrypted value.
47//============================================================================
48#define MLMEGetExcludeUnencrypted(Adapter) ((unsigned char) (Adapter)->sLocalPara.ExcludeUnencrypted)
49
50//============================================================================
51// MLMESetMaxReceiveLifeTime --
52//
53// Description:
54// Set the dot11MaxReceiveLifeTime value.
55//
56// Arguments:
57// Adapter - The pointer to the miniport adapter context.
58// ReceiveLifeTime- u32 type. The value to be set.
59//
60// Return values:
61// None.
62//============================================================================
63#define MLMESetMaxReceiveLifeTime(Adapter, ReceiveLifeTime) \
64{ \
65 (Adapter)->Mds.MaxReceiveTime = ReceiveLifeTime; \
66}
67
68//============================================================================
69// MLMESetMaxReceiveLifeTime --
70//
71// Description:
72// Get the dot11MaxReceiveLifeTime value.
73//
74// Arguments:
75// Adapter - The pointer to the miniport adapter context.
76//
77// Return values:
78// u32 type. The current dot11MaxReceiveLifeTime value.
79//============================================================================
80#define MLMEGetMaxReceiveLifeTime(Adapter) ((u32) (Adapter)->Mds.MaxReceiveTime)
81
82#endif
83
84
diff --git a/drivers/staging/winbond/mlme_s.h b/drivers/staging/winbond/mlme_s.h
new file mode 100644
index 00000000000..58094f61c03
--- /dev/null
+++ b/drivers/staging/winbond/mlme_s.h
@@ -0,0 +1,195 @@
1//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2// Mlme.h
3// Define the related definitions of MLME module
4// history -- 01/14/03' created
5//
6//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7
8#define AUTH_REJECT_REASON_CHALLENGE_FAIL 1
9
10//====== the state of MLME module
11#define INACTIVE 0x0
12#define IDLE_SCAN 0x1
13
14//====== the state of MLME/ESS module
15#define STATE_1 0x2
16#define AUTH_REQ 0x3
17#define AUTH_WEP 0x4
18#define STATE_2 0x5
19#define ASSOC_REQ 0x6
20#define STATE_3 0x7
21
22//====== the state of MLME/IBSS module
23#define IBSS_JOIN_SYNC 0x8
24#define IBSS_AUTH_REQ 0x9
25#define IBSS_AUTH_CHANLGE 0xa
26#define IBSS_AUTH_WEP 0xb
27#define IBSS_AUTH_IND 0xc
28#define IBSS_STATE_2 0xd
29
30
31
32//=========================================
33//depend on D5C(MAC timing control 03 register): MaxTxMSDULifeTime default 0x80000us
34#define AUTH_FAIL_TIMEOUT 550
35#define ASSOC_FAIL_TIMEOUT 550
36#define REASSOC_FAIL_TIMEOUT 550
37
38
39
40//
41// MLME task global CONSTANTS, STRUCTURE, variables
42//
43
44
45/////////////////////////////////////////////////////////////
46// enum_ResultCode --
47// Result code returned from MLME to SME.
48//
49/////////////////////////////////////////////////////////////
50// PD43 20030829 Modifiled
51//#define SUCCESS 0
52#define MLME_SUCCESS 0 //follow spec.
53#define INVALID_PARAMETERS 1 //Not following spec.
54#define NOT_SUPPPORTED 2
55#define TIMEOUT 3
56#define TOO_MANY_SIMULTANEOUS_REQUESTS 4
57#define REFUSED 5
58#define BSS_ALREADY_STARTED_OR_JOINED 6
59#define TRANSMIT_FRAME_FAIL 7
60#define NO_BSS_FOUND 8
61#define RETRY 9
62#define GIVE_UP 10
63
64
65#define OPEN_AUTH 0
66#define SHARE_AUTH 1
67#define ANY_AUTH 2
68#define WPA_AUTH 3 //for WPA
69#define WPAPSK_AUTH 4
70#define WPANONE_AUTH 5
71///////////////////////////////////////////// added by ws 04/19/04
72#ifdef _WPA2_
73#define WPA2_AUTH 6//for WPA2
74#define WPA2PSK_AUTH 7
75#endif //end def _WPA2_
76
77//////////////////////////////////////////////////////////////////
78//define the msg type of MLME module
79//////////////////////////////////////////////////////////////////
80//--------------------------------------------------------
81//from SME
82
83#define MLMEMSG_AUTH_REQ 0x0b
84#define MLMEMSG_DEAUTH_REQ 0x0c
85#define MLMEMSG_ASSOC_REQ 0x0d
86#define MLMEMSG_REASSOC_REQ 0x0e
87#define MLMEMSG_DISASSOC_REQ 0x0f
88#define MLMEMSG_START_IBSS_REQ 0x10
89#define MLMEMSG_IBSS_NET_CFM 0x11
90
91//from RX :
92#define MLMEMSG_RCV_MLMEFRAME 0x20
93#define MLMEMSG_RCV_ASSOCRSP 0x22
94#define MLMEMSG_RCV_REASSOCRSP 0x24
95#define MLMEMSG_RCV_DISASSOC 0x2b
96#define MLMEMSG_RCV_AUTH 0x2c
97#define MLMEMSG_RCV_DEAUTH 0x2d
98
99
100//from TX callback
101#define MLMEMSG_TX_CALLBACK 0x40
102#define MLMEMSG_ASSOCREQ_CALLBACK 0x41
103#define MLMEMSG_REASSOCREQ_CALLBACK 0x43
104#define MLMEMSG_DISASSOC_CALLBACK 0x4a
105#define MLMEMSG_AUTH_CALLBACK 0x4c
106#define MLMEMSG_DEAUTH_CALLBACK 0x4d
107
108//#define MLMEMSG_JOIN_FAIL 4
109//#define MLMEMSG_AUTHEN_FAIL 18
110#define MLMEMSG_TIMEOUT 0x50
111
112///////////////////////////////////////////////////////////////////////////
113//Global data structures
114#define MAX_NUM_TX_MMPDU 2
115#define MAX_MMPDU_SIZE 1512
116#define MAX_NUM_RX_MMPDU 6
117
118
119///////////////////////////////////////////////////////////////////////////
120//MACRO
121#define boMLME_InactiveState(_AA_) (_AA_->wState==INACTIVE)
122#define boMLME_IdleScanState(_BB_) (_BB_->wState==IDLE_SCAN)
123#define boMLME_FoundSTAinfo(_CC_) (_CC_->wState>=IDLE_SCAN)
124
125typedef struct _MLME_FRAME
126{
127 //NDIS_PACKET MLME_Packet;
128 PCHAR pMMPDU;
129 u16 len;
130 u8 DataType;
131 u8 IsInUsed;
132
133 OS_SPIN_LOCK MLMESpinLock;
134
135 u8 TxMMPDU[MAX_NUM_TX_MMPDU][MAX_MMPDU_SIZE];
136 u8 TxMMPDUInUse[ (MAX_NUM_TX_MMPDU+3) & ~0x03 ];
137
138 u16 wNumTxMMPDU;
139 u16 wNumTxMMPDUDiscarded;
140
141 u8 RxMMPDU[MAX_NUM_RX_MMPDU][MAX_MMPDU_SIZE];
142 u8 SaveRxBufSlotInUse[ (MAX_NUM_RX_MMPDU+3) & ~0x03 ];
143
144 u16 wNumRxMMPDU;
145 u16 wNumRxMMPDUDiscarded;
146
147 u16 wNumRxMMPDUInMLME; // Number of the Rx MMPDU
148 u16 reserved_1; // in MLME.
149 // excluding the discarded
150} MLME_FRAME, *psMLME_FRAME;
151
152typedef struct _AUTHREQ {
153
154 u8 peerMACaddr[MAC_ADDR_LENGTH];
155 u16 wAuthAlgorithm;
156
157} MLME_AUTHREQ_PARA, *psMLME_AUTHREQ_PARA;
158
159struct _Reason_Code {
160
161 u8 peerMACaddr[MAC_ADDR_LENGTH];
162 u16 wReasonCode;
163};
164typedef struct _Reason_Code MLME_DEAUTHREQ_PARA, *psMLME_DEAUTHREQ_PARA;
165typedef struct _Reason_Code MLME_DISASSOCREQ_PARA, *psMLME_DISASSOCREQ_PARA;
166
167typedef struct _ASSOCREQ {
168 u8 PeerSTAAddr[MAC_ADDR_LENGTH];
169 u16 CapabilityInfo;
170 u16 ListenInterval;
171
172}__attribute__ ((packed)) MLME_ASSOCREQ_PARA, *psMLME_ASSOCREQ_PARA;
173
174typedef struct _REASSOCREQ {
175 u8 NewAPAddr[MAC_ADDR_LENGTH];
176 u16 CapabilityInfo;
177 u16 ListenInterval;
178
179}__attribute__ ((packed)) MLME_REASSOCREQ_PARA, *psMLME_REASSOCREQ_PARA;
180
181typedef struct _MLMECALLBACK {
182
183 u8 *psFramePtr;
184 u8 bResult;
185
186} MLME_TXCALLBACK, *psMLME_TXCALLBACK;
187
188typedef struct _RXDATA
189{
190 s32 FrameLength;
191 u8 __attribute__ ((packed)) *pbFramePtr;
192
193}__attribute__ ((packed)) RXDATA, *psRXDATA;
194
195
diff --git a/drivers/staging/winbond/mlmetxrx.c b/drivers/staging/winbond/mlmetxrx.c
new file mode 100644
index 00000000000..46b091e9679
--- /dev/null
+++ b/drivers/staging/winbond/mlmetxrx.c
@@ -0,0 +1,150 @@
1//============================================================================
2// Module Name:
3// MLMETxRx.C
4//
5// Description:
6// The interface between MDS (MAC Data Service) and MLME.
7//
8// Revision History:
9// --------------------------------------------------------------------------
10// 200209 UN20 Jennifer Xu
11// Initial Release
12// 20021108 PD43 Austin Liu
13// 20030117 PD43 Austin Liu
14// Deleted MLMEReturnPacket and MLMEProcThread()
15//
16// Copyright (c) 1996-2002 Winbond Electronics Corp. All Rights Reserved.
17//============================================================================
18#include "os_common.h"
19
20void MLMEResetTxRx(PWB32_ADAPTER Adapter)
21{
22 s32 i;
23
24 // Reset the interface between MDS and MLME
25 for (i = 0; i < MAX_NUM_TX_MMPDU; i++)
26 Adapter->sMlmeFrame.TxMMPDUInUse[i] = FALSE;
27 for (i = 0; i < MAX_NUM_RX_MMPDU; i++)
28 Adapter->sMlmeFrame.SaveRxBufSlotInUse[i] = FALSE;
29
30 Adapter->sMlmeFrame.wNumRxMMPDUInMLME = 0;
31 Adapter->sMlmeFrame.wNumRxMMPDUDiscarded = 0;
32 Adapter->sMlmeFrame.wNumRxMMPDU = 0;
33 Adapter->sMlmeFrame.wNumTxMMPDUDiscarded = 0;
34 Adapter->sMlmeFrame.wNumTxMMPDU = 0;
35 Adapter->sLocalPara.boCCAbusy = FALSE;
36 Adapter->sLocalPara.iPowerSaveMode = PWR_ACTIVE; // Power active
37}
38
39//=============================================================================
40// Function:
41// MLMEGetMMPDUBuffer()
42//
43// Description:
44// Return the pointer to an available data buffer with
45// the size MAX_MMPDU_SIZE for a MMPDU.
46//
47// Arguments:
48// Adapter - pointer to the miniport adapter context.
49//
50// Return value:
51// NULL : No available data buffer available
52// Otherwise: Pointer to the data buffer
53//=============================================================================
54
55/* FIXME: Should this just be replaced with kmalloc() and kfree()? */
56u8 *MLMEGetMMPDUBuffer(PWB32_ADAPTER Adapter)
57{
58 s32 i;
59 u8 *returnVal;
60
61 for (i = 0; i< MAX_NUM_TX_MMPDU; i++) {
62 if (Adapter->sMlmeFrame.TxMMPDUInUse[i] == FALSE)
63 break;
64 }
65 if (i >= MAX_NUM_TX_MMPDU) return NULL;
66
67 returnVal = (u8 *)&(Adapter->sMlmeFrame.TxMMPDU[i]);
68 Adapter->sMlmeFrame.TxMMPDUInUse[i] = TRUE;
69
70 return returnVal;
71}
72
73//=============================================================================
74u8 MLMESendFrame(PWB32_ADAPTER Adapter, u8 *pMMPDU, u16 len, u8 DataType)
75/* DataType : FRAME_TYPE_802_11_MANAGEMENT, FRAME_TYPE_802_11_MANAGEMENT_CHALLENGE,
76 FRAME_TYPE_802_11_DATA */
77{
78 if (Adapter->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) {
79 Adapter->sMlmeFrame.wNumTxMMPDUDiscarded++;
80 return FALSE;
81 }
82 Adapter->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME;
83
84 // Keep information for sending
85 Adapter->sMlmeFrame.pMMPDU = pMMPDU;
86 Adapter->sMlmeFrame.DataType = DataType;
87 // len must be the last setting due to QUERY_SIZE_SECOND of Mds
88 Adapter->sMlmeFrame.len = len;
89 Adapter->sMlmeFrame.wNumTxMMPDU++;
90
91 // H/W will enter power save by set the register. S/W don't send null frame
92 //with PWRMgt bit enbled to enter power save now.
93
94 // Transmit NDIS packet
95 Mds_Tx(Adapter);
96 return TRUE;
97}
98
99void
100MLME_GetNextPacket(PADAPTER Adapter, PDESCRIPTOR pDes)
101{
102#define DESCRIPTOR_ADD_BUFFER( _D, _A, _S ) \
103{\
104 _D->InternalUsed = _D->buffer_start_index + _D->buffer_number; \
105 _D->InternalUsed %= MAX_DESCRIPTOR_BUFFER_INDEX; \
106 _D->buffer_address[ _D->InternalUsed ] = _A; \
107 _D->buffer_size[ _D->InternalUsed ] = _S; \
108 _D->buffer_total_size += _S; \
109 _D->buffer_number++;\
110}
111
112 DESCRIPTOR_ADD_BUFFER( pDes, Adapter->sMlmeFrame.pMMPDU, Adapter->sMlmeFrame.len );
113 pDes->Type = Adapter->sMlmeFrame.DataType;
114}
115
116void MLMEfreeMMPDUBuffer(PWB32_ADAPTER Adapter, PCHAR pData)
117{
118 int i;
119
120 // Reclaim the data buffer
121 for (i = 0; i < MAX_NUM_TX_MMPDU; i++) {
122 if (pData == (PCHAR)&(Adapter->sMlmeFrame.TxMMPDU[i]))
123 break;
124 }
125 if (Adapter->sMlmeFrame.TxMMPDUInUse[i])
126 Adapter->sMlmeFrame.TxMMPDUInUse[i] = FALSE;
127 else {
128 // Something wrong
129 // PD43 Add debug code here???
130 }
131}
132
133void
134MLME_SendComplete(PADAPTER Adapter, u8 PacketID, unsigned char SendOK)
135{
136 MLME_TXCALLBACK TxCallback;
137
138 // Reclaim the data buffer
139 Adapter->sMlmeFrame.len = 0;
140 MLMEfreeMMPDUBuffer( Adapter, Adapter->sMlmeFrame.pMMPDU );
141
142
143 TxCallback.bResult = MLME_SUCCESS;
144
145 // Return resource
146 Adapter->sMlmeFrame.IsInUsed = PACKET_FREE_TO_USE;
147}
148
149
150
diff --git a/drivers/staging/winbond/mlmetxrx_f.h b/drivers/staging/winbond/mlmetxrx_f.h
new file mode 100644
index 00000000000..d74e225be21
--- /dev/null
+++ b/drivers/staging/winbond/mlmetxrx_f.h
@@ -0,0 +1,52 @@
1//================================================================
2// MLMETxRx.H --
3//
4// Functions defined in MLMETxRx.c.
5//
6// Copyright (c) 2002 Winbond Electrics Corp. All Rights Reserved.
7//================================================================
8#ifndef _MLMETXRX_H
9#define _MLMETXRX_H
10
11void
12MLMEProcThread(
13 PWB32_ADAPTER Adapter
14 );
15
16void MLMEResetTxRx( PWB32_ADAPTER Adapter);
17
18u8 *
19MLMEGetMMPDUBuffer(
20 PWB32_ADAPTER Adapter
21 );
22
23void MLMEfreeMMPDUBuffer( PWB32_ADAPTER Adapter, PCHAR pData);
24
25void MLME_GetNextPacket( PADAPTER Adapter, PDESCRIPTOR pDes );
26u8 MLMESendFrame( PWB32_ADAPTER Adapter,
27 u8 *pMMPDU,
28 u16 len,
29 u8 DataType);
30
31void
32MLME_SendComplete( PWB32_ADAPTER Adapter, u8 PacketID, unsigned char SendOK );
33
34void
35MLMERcvFrame(
36 PWB32_ADAPTER Adapter,
37 PRXBUFFER pRxBufferArray,
38 u8 NumOfBuffer,
39 u8 ReturnSlotIndex
40 );
41
42void
43MLMEReturnPacket(
44 PWB32_ADAPTER Adapter,
45 PUCHAR pRxBufer
46 );
47#ifdef _IBSS_BEACON_SEQ_STICK_
48s8 SendBCNullData(PWB32_ADAPTER Adapter, u16 wIdx);
49#endif
50
51#endif
52
diff --git a/drivers/staging/winbond/mto.c b/drivers/staging/winbond/mto.c
new file mode 100644
index 00000000000..2ef60e5120c
--- /dev/null
+++ b/drivers/staging/winbond/mto.c
@@ -0,0 +1,1229 @@
1//============================================================================
2// MTO.C -
3//
4// Description:
5// MAC Throughput Optimization for W89C33 802.11g WLAN STA.
6//
7// The following MIB attributes or internal variables will be affected
8// while the MTO is being executed:
9// dot11FragmentationThreshold,
10// dot11RTSThreshold,
11// transmission rate and PLCP preamble type,
12// CCA mode,
13// antenna diversity.
14//
15// Revision history:
16// --------------------------------------------------------------------------
17// 20031227 UN20 Pete Chao
18// First draft
19// 20031229 Turbo copy from PD43
20// 20040210 Kevin revised
21// Copyright (c) 2003 Winbond Electronics Corp. All rights reserved.
22//============================================================================
23
24// LA20040210_DTO kevin
25#include "os_common.h"
26
27// Declare SQ3 to rate and fragmentation threshold table
28// Declare fragmentation thresholds table
29#define MTO_MAX_SQ3_LEVELS 14
30#define MTO_MAX_FRAG_TH_LEVELS 5
31#define MTO_MAX_DATA_RATE_LEVELS 12
32
33u16 MTO_Frag_Th_Tbl[MTO_MAX_FRAG_TH_LEVELS] =
34{
35 256, 384, 512, 768, 1536
36};
37
38u8 MTO_SQ3_Level[MTO_MAX_SQ3_LEVELS] =
39{
40 0, 26, 30, 32, 34, 35, 37, 42, 44, 46, 54, 62, 78, 81
41};
42u8 MTO_SQ3toRate[MTO_MAX_SQ3_LEVELS] =
43{
44 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
45};
46u8 MTO_SQ3toFrag[MTO_MAX_SQ3_LEVELS] =
47{
48 0, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4
49};
50
51// One Exchange Time table
52//
53u16 MTO_One_Exchange_Time_Tbl_l[MTO_MAX_FRAG_TH_LEVELS][MTO_MAX_DATA_RATE_LEVELS] =
54{
55 { 2554, 1474, 822, 0, 0, 636, 0, 0, 0, 0, 0, 0},
56 { 3578, 1986, 1009, 0, 0, 729, 0, 0, 0, 0, 0, 0},
57 { 4602, 2498, 1195, 0, 0, 822, 0, 0, 0, 0, 0, 0},
58 { 6650, 3522, 1567, 0, 0, 1009, 0, 0, 0, 0, 0, 0},
59 {12794, 6594, 2684, 0, 0, 1567, 0, 0, 0, 0, 0, 0}
60};
61
62u16 MTO_One_Exchange_Time_Tbl_s[MTO_MAX_FRAG_TH_LEVELS][MTO_MAX_DATA_RATE_LEVELS] =
63{
64 { 0, 1282, 630, 404, 288, 444, 232, 172, 144, 116, 100, 96},
65 { 0, 1794, 817, 572, 400, 537, 316, 228, 188, 144, 124, 116},
66 { 0, 2306, 1003, 744, 516, 630, 400, 288, 228, 172, 144, 136},
67 { 0, 3330, 1375, 1084, 744, 817, 572, 400, 316, 228, 188, 172},
68 { 0, 6402, 2492, 2108, 1424, 1375, 1084, 740, 572, 400, 316, 284}
69};
70
71#define MTO_ONE_EXCHANGE_TIME(preamble_type, frag_th_lvl, data_rate_lvl) \
72 (preamble_type) ? MTO_One_Exchange_Time_Tbl_s[frag_th_lvl][data_rate_lvl] : \
73 MTO_One_Exchange_Time_Tbl_l[frag_th_lvl][data_rate_lvl]
74
75// Declare data rate table
76//The following table will be changed at anytime if the opration rate supported by AP don't
77//match the table
78u8 MTO_Data_Rate_Tbl[MTO_MAX_DATA_RATE_LEVELS] =
79{
80 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108
81};
82
83//The Stardard_Data_Rate_Tbl and Level2PerTbl table is used to indirectly retreive PER
84//information from Rate_PER_TBL
85//The default settings is AP can support full rate set.
86static u8 Stardard_Data_Rate_Tbl[MTO_MAX_DATA_RATE_LEVELS] =
87{
88 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108
89};
90static u8 Level2PerTbl[MTO_MAX_DATA_RATE_LEVELS] =
91{
92 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
93};
94//How many kind of tx rate can be supported by AP
95//DTO will change Rate between MTO_Data_Rate_Tbl[0] and MTO_Data_Rate_Tbl[MTO_DataRateAvailableLevel-1]
96static u8 MTO_DataRateAvailableLevel = MTO_MAX_DATA_RATE_LEVELS;
97//Smoothed PER table for each different RATE based on packet length of 1514
98static int Rate_PER_TBL[91][MTO_MAX_DATA_RATE_LEVELS] = {
99// 1M 2M 5.5M 11M 6M 9M 12M 18M 24M 36M 48M 54M
100/* 0% */{ 93, 177, 420, 538, 690, 774, 1001, 1401, 1768, 2358, 2838, 3039},
101/* 1% */{ 92, 176, 416, 533, 683, 767, 992, 1389, 1752, 2336, 2811, 3010},
102/* 2% */{ 91, 174, 412, 528, 675, 760, 983, 1376, 1735, 2313, 2783, 2979},
103/* 3% */{ 90, 172, 407, 523, 667, 753, 973, 1363, 1719, 2290, 2755, 2948},
104/* 4% */{ 90, 170, 403, 518, 659, 746, 964, 1350, 1701, 2266, 2726, 2916},
105/* 5% */{ 89, 169, 398, 512, 651, 738, 954, 1336, 1684, 2242, 2696, 2884},
106/* 6% */{ 88, 167, 394, 507, 643, 731, 944, 1322, 1666, 2217, 2665, 2851},
107/* 7% */{ 87, 165, 389, 502, 635, 723, 935, 1308, 1648, 2192, 2634, 2817},
108/* 8% */{ 86, 163, 384, 497, 626, 716, 924, 1294, 1629, 2166, 2602, 2782},
109/* 9% */{ 85, 161, 380, 491, 618, 708, 914, 1279, 1611, 2140, 2570, 2747},
110/* 10% */{ 84, 160, 375, 486, 609, 700, 904, 1265, 1591, 2113, 2537, 2711},
111/* 11% */{ 83, 158, 370, 480, 600, 692, 894, 1250, 1572, 2086, 2503, 2675},
112/* 12% */{ 82, 156, 365, 475, 592, 684, 883, 1234, 1552, 2059, 2469, 2638},
113/* 13% */{ 81, 154, 360, 469, 583, 676, 872, 1219, 1532, 2031, 2435, 2600},
114/* 14% */{ 80, 152, 355, 464, 574, 668, 862, 1204, 1512, 2003, 2400, 2562},
115/* 15% */{ 79, 150, 350, 458, 565, 660, 851, 1188, 1492, 1974, 2365, 2524},
116/* 16% */{ 78, 148, 345, 453, 556, 652, 840, 1172, 1471, 1945, 2329, 2485},
117/* 17% */{ 77, 146, 340, 447, 547, 643, 829, 1156, 1450, 1916, 2293, 2446},
118/* 18% */{ 76, 144, 335, 441, 538, 635, 818, 1140, 1429, 1887, 2256, 2406},
119/* 19% */{ 75, 143, 330, 436, 529, 627, 807, 1124, 1408, 1857, 2219, 2366},
120/* 20% */{ 74, 141, 325, 430, 520, 618, 795, 1107, 1386, 1827, 2182, 2326},
121/* 21% */{ 73, 139, 320, 424, 510, 610, 784, 1091, 1365, 1797, 2145, 2285},
122/* 22% */{ 72, 137, 314, 418, 501, 601, 772, 1074, 1343, 1766, 2107, 2244},
123/* 23% */{ 71, 135, 309, 412, 492, 592, 761, 1057, 1321, 1736, 2069, 2203},
124/* 24% */{ 70, 133, 304, 407, 482, 584, 749, 1040, 1299, 1705, 2031, 2161},
125/* 25% */{ 69, 131, 299, 401, 473, 575, 738, 1023, 1277, 1674, 1992, 2120},
126/* 26% */{ 68, 129, 293, 395, 464, 566, 726, 1006, 1254, 1642, 1953, 2078},
127/* 27% */{ 67, 127, 288, 389, 454, 557, 714, 989, 1232, 1611, 1915, 2035},
128/* 28% */{ 66, 125, 283, 383, 445, 549, 703, 972, 1209, 1579, 1876, 1993},
129/* 29% */{ 65, 123, 278, 377, 436, 540, 691, 955, 1187, 1548, 1836, 1951},
130/* 30% */{ 64, 121, 272, 371, 426, 531, 679, 937, 1164, 1516, 1797, 1908},
131/* 31% */{ 63, 119, 267, 365, 417, 522, 667, 920, 1141, 1484, 1758, 1866},
132/* 32% */{ 62, 117, 262, 359, 407, 513, 655, 902, 1118, 1453, 1719, 1823},
133/* 33% */{ 61, 115, 256, 353, 398, 504, 643, 885, 1095, 1421, 1679, 1781},
134/* 34% */{ 60, 113, 251, 347, 389, 495, 631, 867, 1072, 1389, 1640, 1738},
135/* 35% */{ 59, 111, 246, 341, 379, 486, 619, 850, 1049, 1357, 1600, 1695},
136/* 36% */{ 58, 108, 240, 335, 370, 477, 607, 832, 1027, 1325, 1561, 1653},
137/* 37% */{ 57, 106, 235, 329, 361, 468, 595, 815, 1004, 1293, 1522, 1610},
138/* 38% */{ 56, 104, 230, 323, 351, 459, 584, 797, 981, 1261, 1483, 1568},
139/* 39% */{ 55, 102, 224, 317, 342, 450, 572, 780, 958, 1230, 1443, 1526},
140/* 40% */{ 54, 100, 219, 311, 333, 441, 560, 762, 935, 1198, 1404, 1484},
141/* 41% */{ 53, 98, 214, 305, 324, 432, 548, 744, 912, 1166, 1366, 1442},
142/* 42% */{ 52, 96, 209, 299, 315, 423, 536, 727, 889, 1135, 1327, 1400},
143/* 43% */{ 51, 94, 203, 293, 306, 414, 524, 709, 866, 1104, 1289, 1358},
144/* 44% */{ 50, 92, 198, 287, 297, 405, 512, 692, 844, 1072, 1250, 1317},
145/* 45% */{ 49, 90, 193, 281, 288, 396, 500, 675, 821, 1041, 1212, 1276},
146/* 46% */{ 48, 88, 188, 275, 279, 387, 488, 657, 799, 1011, 1174, 1236},
147/* 47% */{ 47, 86, 183, 269, 271, 378, 476, 640, 777, 980, 1137, 1195},
148/* 48% */{ 46, 84, 178, 262, 262, 369, 464, 623, 754, 949, 1100, 1155},
149/* 49% */{ 45, 82, 173, 256, 254, 360, 452, 606, 732, 919, 1063, 1116},
150/* 50% */{ 44, 80, 168, 251, 245, 351, 441, 589, 710, 889, 1026, 1076},
151/* 51% */{ 43, 78, 163, 245, 237, 342, 429, 572, 689, 860, 990, 1038},
152/* 52% */{ 42, 76, 158, 239, 228, 333, 417, 555, 667, 830, 955, 999},
153/* 53% */{ 41, 74, 153, 233, 220, 324, 406, 538, 645, 801, 919, 961},
154/* 54% */{ 40, 72, 148, 227, 212, 315, 394, 522, 624, 773, 884, 924},
155/* 55% */{ 39, 70, 143, 221, 204, 307, 383, 505, 603, 744, 850, 887},
156/* 56% */{ 38, 68, 138, 215, 196, 298, 371, 489, 582, 716, 816, 851},
157/* 57% */{ 37, 67, 134, 209, 189, 289, 360, 473, 562, 688, 783, 815},
158/* 58% */{ 36, 65, 129, 203, 181, 281, 349, 457, 541, 661, 750, 780},
159/* 59% */{ 35, 63, 124, 197, 174, 272, 338, 441, 521, 634, 717, 745},
160/* 60% */{ 34, 61, 120, 192, 166, 264, 327, 425, 501, 608, 686, 712},
161/* 61% */{ 33, 59, 115, 186, 159, 255, 316, 409, 482, 582, 655, 678},
162/* 62% */{ 32, 57, 111, 180, 152, 247, 305, 394, 462, 556, 624, 646},
163/* 63% */{ 31, 55, 107, 174, 145, 238, 294, 379, 443, 531, 594, 614},
164/* 64% */{ 30, 53, 102, 169, 138, 230, 283, 364, 425, 506, 565, 583},
165/* 65% */{ 29, 52, 98, 163, 132, 222, 273, 349, 406, 482, 536, 553},
166/* 66% */{ 28, 50, 94, 158, 125, 214, 262, 334, 388, 459, 508, 523},
167/* 67% */{ 27, 48, 90, 152, 119, 206, 252, 320, 370, 436, 481, 495},
168/* 68% */{ 26, 46, 86, 147, 113, 198, 242, 306, 353, 413, 455, 467},
169/* 69% */{ 26, 44, 82, 141, 107, 190, 231, 292, 336, 391, 429, 440},
170/* 70% */{ 25, 43, 78, 136, 101, 182, 221, 278, 319, 370, 405, 414},
171/* 71% */{ 24, 41, 74, 130, 95, 174, 212, 265, 303, 350, 381, 389},
172/* 72% */{ 23, 39, 71, 125, 90, 167, 202, 252, 287, 329, 358, 365},
173/* 73% */{ 22, 37, 67, 119, 85, 159, 192, 239, 271, 310, 335, 342},
174/* 74% */{ 21, 36, 63, 114, 80, 151, 183, 226, 256, 291, 314, 320},
175/* 75% */{ 20, 34, 60, 109, 75, 144, 174, 214, 241, 273, 294, 298},
176/* 76% */{ 19, 32, 57, 104, 70, 137, 164, 202, 227, 256, 274, 278},
177/* 77% */{ 18, 31, 53, 99, 66, 130, 155, 190, 213, 239, 256, 259},
178/* 78% */{ 17, 29, 50, 94, 62, 122, 146, 178, 200, 223, 238, 241},
179/* 79% */{ 16, 28, 47, 89, 58, 115, 138, 167, 187, 208, 222, 225},
180/* 80% */{ 16, 26, 44, 84, 54, 109, 129, 156, 175, 194, 206, 209},
181/* 81% */{ 15, 24, 41, 79, 50, 102, 121, 146, 163, 180, 192, 194},
182/* 82% */{ 14, 23, 39, 74, 47, 95, 113, 136, 151, 167, 178, 181},
183/* 83% */{ 13, 21, 36, 69, 44, 89, 105, 126, 140, 155, 166, 169},
184/* 84% */{ 12, 20, 33, 64, 41, 82, 97, 116, 130, 144, 155, 158},
185/* 85% */{ 11, 19, 31, 60, 39, 76, 89, 107, 120, 134, 145, 149},
186/* 86% */{ 11, 17, 29, 55, 36, 70, 82, 98, 110, 125, 136, 140},
187/* 87% */{ 10, 16, 26, 51, 34, 64, 75, 90, 102, 116, 128, 133},
188/* 88% */{ 9, 14, 24, 46, 32, 58, 68, 81, 93, 108, 121, 128},
189/* 89% */{ 8, 13, 22, 42, 31, 52, 61, 74, 86, 102, 116, 124},
190/* 90% */{ 7, 12, 21, 37, 29, 46, 54, 66, 79, 96, 112, 121}
191};
192
193#define RSSIBUF_NUM 10
194#define RSSI2RATE_SIZE 9
195
196static TXRETRY_REC TxRateRec={MTO_MAX_DATA_RATE_LEVELS - 1, 0}; //new record=>TxRateRec
197static int TxRetryRate;
198//static int SQ3, BSS_PK_CNT, NIDLESLOT, SLOT_CNT, INTERF_CNT, GAP_CNT, DS_EVM;
199static s32 RSSIBuf[RSSIBUF_NUM]={-70, -70, -70, -70, -70, -70, -70, -70, -70, -70};
200static s32 RSSISmoothed=-700;
201static int RSSIBufIndex=0;
202static u8 max_rssi_rate;
203static int rate_tbl[13] = {0,1,2,5,11,6,9,12,18,24,36,48,54};
204//[WKCHEN]static core_data_t *pMTOcore_data=NULL;
205
206static int TotalTxPkt = 0;
207static int TotalTxPktRetry = 0;
208static int TxPktPerAnt[3] = {0,0,0};
209static int RXRSSIANT[3] ={-70,-70,-70};
210static int TxPktRetryPerAnt[3] = {0,0,0};
211//static int TxDominateFlag=FALSE;
212static u8 old_antenna[4]={1 ,0 ,1 ,0};
213static int retryrate_rec[MTO_MAX_DATA_RATE_LEVELS];//this record the retry rate at different data rate
214
215static int PeriodTotalTxPkt = 0;
216static int PeriodTotalTxPktRetry = 0;
217
218typedef struct
219{
220 s32 RSSI;
221 u8 TxRate;
222}RSSI2RATE;
223
224static RSSI2RATE RSSI2RateTbl[RSSI2RATE_SIZE] =
225{
226 {-740, 108}, // 54M
227 {-760, 96}, // 48M
228 {-820, 72}, // 36M
229 {-850, 48}, // 24M
230 {-870, 36}, // 18M
231 {-890, 24}, // 12M
232 {-900, 12}, // 6M
233 {-920, 11}, // 5.5M
234 {-950, 4}, // 2M
235};
236static u8 untogglecount;
237static u8 last_rate_ant; //this is used for antenna backoff-hh
238
239u8 boSparseTxTraffic = FALSE;
240
241void MTO_Init(MTO_FUNC_INPUT);
242void AntennaToggleInitiator(MTO_FUNC_INPUT);
243void AntennaToggleState(MTO_FUNC_INPUT);
244void TxPwrControl(MTO_FUNC_INPUT);
245void GetFreshAntennaData(MTO_FUNC_INPUT);
246void TxRateReductionCtrl(MTO_FUNC_INPUT);
247/** 1.1.31.1000 Turbo modify */
248//void MTO_SetDTORateRange(int type);
249void MTO_SetDTORateRange(MTO_FUNC_INPUT, u8 *pRateArray, u8 ArraySize);
250void MTO_SetTxCount(MTO_FUNC_INPUT, u8 t0, u8 index);
251void MTO_TxFailed(MTO_FUNC_INPUT);
252void SmoothRSSI(s32 new_rssi);
253void hal_get_dto_para(MTO_FUNC_INPUT, char *buffer);
254u8 CalcNewRate(MTO_FUNC_INPUT, u8 old_rate, u32 retry_cnt, u32 tx_frag_cnt);
255u8 GetMaxRateLevelFromRSSI(void);
256u8 MTO_GetTxFallbackRate(MTO_FUNC_INPUT);
257int Divide(int a, int b);
258void multiagc(MTO_FUNC_INPUT, u8 high_gain_mode);
259
260//===========================================================================
261// MTO_Init --
262//
263// Description:
264// Set DTO Tx Rate Scope because different AP could have different Rate set.
265// After our staion join with AP, LM core will call this function to initialize
266// Tx Rate table.
267//
268// Arguments:
269// pRateArray - The pointer to the Tx Rate Array by the following order
270// - 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108
271// - DTO won't check whether rate order is invalid or not
272// ArraySize - The array size to indicate how many tx rate we can choose
273//
274// sample code:
275// {
276// u8 RateArray[4] = {2, 4, 11, 22};
277// MTO_SetDTORateRange(RateArray, 4);
278// }
279//
280// Return Value:
281// None
282//============================================================================
283void MTO_SetDTORateRange(MTO_FUNC_INPUT,u8 *pRateArray, u8 ArraySize)
284{
285 u8 i, j=0;
286
287 for(i=0;i<ArraySize;i++)
288 {
289 if(pRateArray[i] == 22)
290 break;
291 }
292 if(i < ArraySize) //we need adjust the order of rate list because 11Mbps rate exists
293 {
294 for(;i>0;i--)
295 {
296 if(pRateArray[i-1] <= 11)
297 break;
298 pRateArray[i] = pRateArray[i-1];
299 }
300 pRateArray[i] = 22;
301 MTO_OFDM_RATE_LEVEL() = i;
302 }
303 else
304 {
305 for(i=0; i<ArraySize; i++)
306 {
307 if (pRateArray[i] >= 12)
308 break;
309 }
310 MTO_OFDM_RATE_LEVEL() = i;
311 }
312
313 for(i=0;i<ArraySize;i++)
314 {
315 MTO_Data_Rate_Tbl[i] = pRateArray[i];
316 for(;j<MTO_MAX_DATA_RATE_LEVELS;j++)
317 {
318 if(Stardard_Data_Rate_Tbl[j] == pRateArray[i])
319 break;
320 }
321 Level2PerTbl[i] = j;
322 #ifdef _PE_DTO_DUMP_
323 WBDEBUG(("[MTO]:Op Rate[%d]: %d\n",i, MTO_Data_Rate_Tbl[i]));
324 #endif
325 }
326 MTO_DataRateAvailableLevel = ArraySize;
327 if( MTO_DATA().RatePolicy ) // 0 means that no registry setting
328 {
329 if( MTO_DATA().RatePolicy == 1 )
330 TxRateRec.tx_rate = 0; //ascent
331 else
332 TxRateRec.tx_rate = MTO_DataRateAvailableLevel -1 ; //descent
333 }
334 else
335 {
336 if( MTO_INITTXRATE_MODE )
337 TxRateRec.tx_rate = 0; //ascent
338 else
339 TxRateRec.tx_rate = MTO_DataRateAvailableLevel -1 ; //descent
340 }
341 TxRateRec.tx_retry_rate = 0;
342 //set default rate for initial use
343 MTO_RATE_LEVEL() = TxRateRec.tx_rate;
344 MTO_FALLBACK_RATE_LEVEL() = MTO_RATE_LEVEL();
345}
346
347//===========================================================================
348// MTO_Init --
349//
350// Description:
351// Initialize MTO parameters.
352//
353// This function should be invoked during system initialization.
354//
355// Arguments:
356// Adapter - The pointer to the Miniport Adapter Context
357//
358// Return Value:
359// None
360//============================================================================
361void MTO_Init(MTO_FUNC_INPUT)
362{
363 int i;
364 //WBDEBUG(("[MTO] -> MTO_Init()\n"));
365 //[WKCHEN]pMTOcore_data = pcore_data;
366// 20040510 Turbo add for global variable
367 MTO_TMR_CNT() = 0;
368 MTO_TOGGLE_STATE() = TOGGLE_STATE_IDLE;
369 MTO_TX_RATE_REDUCTION_STATE() = RATE_CHGSTATE_IDLE;
370 MTO_BACKOFF_TMR() = 0;
371 MTO_LAST_RATE() = 11;
372 MTO_CO_EFFICENT() = 0;
373
374 //MTO_TH_FIXANT() = MTO_DEFAULT_TH_FIXANT;
375 MTO_TH_CNT() = MTO_DEFAULT_TH_CNT;
376 MTO_TH_SQ3() = MTO_DEFAULT_TH_SQ3;
377 MTO_TH_IDLE_SLOT() = MTO_DEFAULT_TH_IDLE_SLOT;
378 MTO_TH_PR_INTERF() = MTO_DEFAULT_TH_PR_INTERF;
379
380 MTO_TMR_AGING() = MTO_DEFAULT_TMR_AGING;
381 MTO_TMR_PERIODIC() = MTO_DEFAULT_TMR_PERIODIC;
382
383 //[WKCHEN]MTO_CCA_MODE_SETUP()= (u8) hal_get_cca_mode(MTO_HAL());
384 //[WKCHEN]MTO_CCA_MODE() = MTO_CCA_MODE_SETUP();
385
386 //MTO_PREAMBLE_TYPE() = MTO_PREAMBLE_LONG;
387 MTO_PREAMBLE_TYPE() = MTO_PREAMBLE_SHORT; // for test
388
389 MTO_ANT_SEL() = hal_get_antenna_number(MTO_HAL());
390 MTO_ANT_MAC() = MTO_ANT_SEL();
391 MTO_CNT_ANT(0) = 0;
392 MTO_CNT_ANT(1) = 0;
393 MTO_SQ_ANT(0) = 0;
394 MTO_SQ_ANT(1) = 0;
395 MTO_ANT_DIVERSITY() = MTO_ANTENNA_DIVERSITY_ON;
396 //CardSet_AntennaDiversity(Adapter, MTO_ANT_DIVERSITY());
397 //PLMESetAntennaDiversity( Adapter, MTO_ANT_DIVERSITY());
398
399 MTO_AGING_TIMEOUT() = 0;//MTO_TMR_AGING() / MTO_TMR_PERIODIC();
400
401 // The following parameters should be initialized to the values set by user
402 //
403 //MTO_RATE_LEVEL() = 10;
404 MTO_RATE_LEVEL() = 0;
405 MTO_FALLBACK_RATE_LEVEL() = MTO_RATE_LEVEL();
406 MTO_FRAG_TH_LEVEL() = 4;
407 /** 1.1.23.1000 Turbo modify from -1 to +1
408 MTO_RTS_THRESHOLD() = MTO_FRAG_TH() - 1;
409 MTO_RTS_THRESHOLD_SETUP() = MTO_FRAG_TH() - 1;
410 */
411 MTO_RTS_THRESHOLD() = MTO_FRAG_TH() + 1;
412 MTO_RTS_THRESHOLD_SETUP() = MTO_FRAG_TH() + 1;
413 // 1.1.23.1000 Turbo add for mto change preamble from 0 to 1
414 MTO_RATE_CHANGE_ENABLE() = 1;
415 MTO_FRAG_CHANGE_ENABLE() = 0; // 1.1.29.1000 Turbo add don't support frag
416 //The default valud of ANTDIV_DEFAULT_ON will be decided by EEPROM
417 //#ifdef ANTDIV_DEFAULT_ON
418 //MTO_ANT_DIVERSITY_ENABLE() = 1;
419 //#else
420 //MTO_ANT_DIVERSITY_ENABLE() = 0;
421 //#endif
422 MTO_POWER_CHANGE_ENABLE() = 1;
423 MTO_PREAMBLE_CHANGE_ENABLE()= 1;
424 MTO_RTS_CHANGE_ENABLE() = 0; // 1.1.29.1000 Turbo add don't support frag
425 // 20040512 Turbo add
426 //old_antenna[0] = 1;
427 //old_antenna[1] = 0;
428 //old_antenna[2] = 1;
429 //old_antenna[3] = 0;
430 for (i=0;i<MTO_MAX_DATA_RATE_LEVELS;i++)
431 retryrate_rec[i]=5;
432
433 MTO_TXFLOWCOUNT() = 0;
434 //--------- DTO threshold parameters -------------
435 //MTOPARA_PERIODIC_CHECK_CYCLE() = 50;
436 MTOPARA_PERIODIC_CHECK_CYCLE() = 10;
437 MTOPARA_RSSI_TH_FOR_ANTDIV() = 10;
438 MTOPARA_TXCOUNT_TH_FOR_CALC_RATE() = 50;
439 MTOPARA_TXRATE_INC_TH() = 10;
440 MTOPARA_TXRATE_DEC_TH() = 30;
441 MTOPARA_TXRATE_EQ_TH() = 40;
442 MTOPARA_TXRATE_BACKOFF() = 12;
443 MTOPARA_TXRETRYRATE_REDUCE() = 6;
444 if ( MTO_TXPOWER_FROM_EEPROM == 0xff)
445 {
446 switch( MTO_HAL()->phy_type)
447 {
448 case RF_AIROHA_2230:
449 case RF_AIROHA_2230S: // 20060420 Add this
450 MTOPARA_TXPOWER_INDEX() = 46; // MAX-8 // @@ Only for AL 2230
451 break;
452 case RF_AIROHA_7230:
453 MTOPARA_TXPOWER_INDEX() = 49;
454 break;
455 case RF_WB_242:
456 MTOPARA_TXPOWER_INDEX() = 10;
457 break;
458 case RF_WB_242_1:
459 MTOPARA_TXPOWER_INDEX() = 24; // ->10 20060316.1 modify
460 break;
461 }
462 }
463 else //follow the setting from EEPROM
464 MTOPARA_TXPOWER_INDEX() = MTO_TXPOWER_FROM_EEPROM;
465 hal_set_rf_power(MTO_HAL(), (u8)MTOPARA_TXPOWER_INDEX());
466 //------------------------------------------------
467
468 // For RSSI turning 20060808.4 Cancel load from EEPROM
469 MTO_DATA().RSSI_high = -41;
470 MTO_DATA().RSSI_low = -60;
471}
472
473//---------------------------------------------------------------------------//
474static u32 DTO_Rx_Info[13][3];
475static u32 DTO_RxCRCFail_Info[13][3];
476static u32 AntennaToggleBkoffTimer=5;
477typedef struct{
478 int RxRate;
479 int RxRatePkts;
480 int index;
481}RXRATE_ANT;
482RXRATE_ANT RxRatePeakAnt[3];
483
484#define ANT0 0
485#define ANT1 1
486#define OLD_ANT 2
487
488void SearchPeakRxRate(int index)
489{
490 int i;
491 RxRatePeakAnt[index].RxRatePkts=0;
492 //Find out the best rx rate which is used on different antenna
493 for(i=1;i<13;i++)
494 {
495 if(DTO_Rx_Info[i][index] > (u32) RxRatePeakAnt[index].RxRatePkts)
496 {
497 RxRatePeakAnt[index].RxRatePkts = DTO_Rx_Info[i][index];
498 RxRatePeakAnt[index].RxRate = rate_tbl[i];
499 RxRatePeakAnt[index].index = i;
500 }
501 }
502}
503
504void ResetDTO_RxInfo(int index, MTO_FUNC_INPUT)
505{
506 int i;
507
508 #ifdef _PE_DTO_DUMP_
509 WBDEBUG(("ResetDTOrx\n"));
510 #endif
511
512 for(i=0;i<13;i++)
513 DTO_Rx_Info[i][index] = MTO_HAL()->rx_ok_count[i];
514
515 for(i=0;i<13;i++)
516 DTO_RxCRCFail_Info[i][index] = MTO_HAL()->rx_err_count[i];
517
518 TotalTxPkt = 0;
519 TotalTxPktRetry = 0;
520}
521
522void GetDTO_RxInfo(int index, MTO_FUNC_INPUT)
523{
524 int i;
525
526 #ifdef _PE_DTO_DUMP_
527 WBDEBUG(("GetDTOrx\n"));
528 #endif
529
530 //PDEBUG(("[MTO]:DTO_Rx_Info[%d]=%d, rx_ok_count=%d\n", index, DTO_Rx_Info[0][index], phw_data->rx_ok_count[0]));
531 for(i=0;i<13;i++)
532 DTO_Rx_Info[i][index] = abs(MTO_HAL()->rx_ok_count[i] - DTO_Rx_Info[i][index]);
533 if(DTO_Rx_Info[0][index]==0) DTO_Rx_Info[0][index] = 1;
534
535 for(i=0;i<13;i++)
536 DTO_RxCRCFail_Info[i][index] = MTO_HAL()->rx_err_count[i] - DTO_RxCRCFail_Info[i][index];
537
538 TxPktPerAnt[index] = TotalTxPkt;
539 TxPktRetryPerAnt[index] = TotalTxPktRetry;
540 TotalTxPkt = 0;
541 TotalTxPktRetry = 0;
542}
543
544void OutputDebugInfo(int index1, int index2)
545{
546 #ifdef _PE_DTO_DUMP_
547 WBDEBUG(("[HHDTO]:Total Rx (%d)\t\t(%d) \n ", DTO_Rx_Info[0][index1], DTO_Rx_Info[0][index2]));
548 WBDEBUG(("[HHDTO]:RECEIVE RSSI: (%d)\t\t(%d) \n ", RXRSSIANT[index1], RXRSSIANT[index2]));
549 WBDEBUG(("[HHDTO]:TX packet correct rate: (%d)%%\t\t(%d)%% \n ",Divide(TxPktPerAnt[index1]*100,TxPktRetryPerAnt[index1]), Divide(TxPktPerAnt[index2]*100,TxPktRetryPerAnt[index2])));
550 #endif
551 {
552 int tmp1, tmp2;
553 #ifdef _PE_DTO_DUMP_
554 WBDEBUG(("[HHDTO]:Total Tx (%d)\t\t(%d) \n ", TxPktPerAnt[index1], TxPktPerAnt[index2]));
555 WBDEBUG(("[HHDTO]:Total Tx retry (%d)\t\t(%d) \n ", TxPktRetryPerAnt[index1], TxPktRetryPerAnt[index2]));
556 #endif
557 tmp1 = TxPktPerAnt[index1] + DTO_Rx_Info[0][index1];
558 tmp2 = TxPktPerAnt[index2] + DTO_Rx_Info[0][index2];
559 #ifdef _PE_DTO_DUMP_
560 WBDEBUG(("[HHDTO]:Total Tx+RX (%d)\t\t(%d) \n ", tmp1, tmp2));
561 #endif
562 }
563}
564
565unsigned char TxDominate(int index)
566{
567 int tmp;
568
569 tmp = TxPktPerAnt[index] + DTO_Rx_Info[0][index];
570
571 if(Divide(TxPktPerAnt[index]*100, tmp) > 40)
572 return TRUE;
573 else
574 return FALSE;
575}
576
577unsigned char CmpTxRetryRate(int index1, int index2)
578{
579 int tx_retry_rate1, tx_retry_rate2;
580 tx_retry_rate1 = Divide((TxPktRetryPerAnt[index1] - TxPktPerAnt[index1])*100, TxPktRetryPerAnt[index1]);
581 tx_retry_rate2 = Divide((TxPktRetryPerAnt[index2] - TxPktPerAnt[index2])*100, TxPktRetryPerAnt[index2]);
582 #ifdef _PE_DTO_DUMP_
583 WBDEBUG(("[MTO]:TxRetry Ant0: (%d%%) Ant1: (%d%%) \n ", tx_retry_rate1, tx_retry_rate2));
584 #endif
585
586 if(tx_retry_rate1 > tx_retry_rate2)
587 return TRUE;
588 else
589 return FALSE;
590}
591
592void GetFreshAntennaData(MTO_FUNC_INPUT)
593{
594 u8 x;
595
596 x = hal_get_antenna_number(MTO_HAL());
597 //hal_get_bss_pk_cnt(MTO_HAL());
598 //hal_get_est_sq3(MTO_HAL(), 1);
599 old_antenna[0] = x;
600 //if this is the function for timer
601 ResetDTO_RxInfo(x, MTO_FUNC_INPUT_DATA);
602 if(AntennaToggleBkoffTimer)
603 AntennaToggleBkoffTimer--;
604 if (abs(last_rate_ant-MTO_RATE_LEVEL())>1) //backoff timer reset
605 AntennaToggleBkoffTimer=0;
606
607 if (MTO_ANT_DIVERSITY() != MTO_ANTENNA_DIVERSITY_ON ||
608 MTO_ANT_DIVERSITY_ENABLE() != 1)
609 AntennaToggleBkoffTimer=1;
610 #ifdef _PE_DTO_DUMP_
611 WBDEBUG(("[HHDTO]:**last data rate=%d,now data rate=%d**antenna toggle timer=%d",last_rate_ant,MTO_RATE_LEVEL(),AntennaToggleBkoffTimer));
612 #endif
613 last_rate_ant=MTO_RATE_LEVEL();
614 if(AntennaToggleBkoffTimer==0)
615 {
616 MTO_TOGGLE_STATE() = TOGGLE_STATE_WAIT0;
617 #ifdef _PE_DTO_DUMP_
618 WBDEBUG(("[HHDTO]:===state is starting==for antenna toggle==="));
619 #endif
620 }
621 else
622 MTO_TOGGLE_STATE() = TOGGLE_STATE_IDLE;
623
624 if ((MTO_BACKOFF_TMR()!=0)&&(MTO_RATE_LEVEL()>MTO_DataRateAvailableLevel - 3))
625 {
626 MTO_TOGGLE_STATE() = TOGGLE_STATE_IDLE;
627 #ifdef _PE_DTO_DUMP_
628 WBDEBUG(("[HHDTO]:===the data rate is %d (good)and will not toogle ===",MTO_DATA_RATE()>>1));
629 #endif
630 }
631
632
633}
634
635int WB_PCR[2]; //packet correct rate
636
637void AntennaToggleState(MTO_FUNC_INPUT)
638{
639 int decideantflag = 0;
640 u8 x;
641 s32 rssi;
642
643 if(MTO_ANT_DIVERSITY_ENABLE() != 1)
644 return;
645 x = hal_get_antenna_number(MTO_HAL());
646 switch(MTO_TOGGLE_STATE())
647 {
648
649 //Missing.....
650 case TOGGLE_STATE_IDLE:
651 case TOGGLE_STATE_BKOFF:
652 break;;
653
654 case TOGGLE_STATE_WAIT0://========
655 GetDTO_RxInfo(x, MTO_FUNC_INPUT_DATA);
656 sme_get_rssi(MTO_FUNC_INPUT_DATA, &rssi);
657 RXRSSIANT[x] = rssi;
658 #ifdef _PE_DTO_DUMP_
659 WBDEBUG(("[HHDTO] **wait0==== Collecting Ant%d--rssi=%d\n", x,RXRSSIANT[x]));
660 #endif
661
662 //change antenna and reset the data at changed antenna
663 x = (~x) & 0x01;
664 MTO_ANT_SEL() = x;
665 hal_set_antenna_number(MTO_HAL(), MTO_ANT_SEL());
666 LOCAL_ANTENNA_NO() = x;
667
668 MTO_TOGGLE_STATE() = TOGGLE_STATE_WAIT1;//go to wait1
669 ResetDTO_RxInfo(x, MTO_FUNC_INPUT_DATA);
670 break;
671 case TOGGLE_STATE_WAIT1://=====wait1
672 //MTO_CNT_ANT(x) = hal_get_bss_pk_cnt(MTO_HAL());
673 //RXRSSIANT[x] = hal_get_rssi(MTO_HAL());
674 sme_get_rssi(MTO_FUNC_INPUT_DATA, &rssi);
675 RXRSSIANT[x] = rssi;
676 GetDTO_RxInfo(x, MTO_FUNC_INPUT_DATA);
677 #ifdef _PE_DTO_DUMP_
678 WBDEBUG(("[HHDTO] **wait1==== Collecting Ant%d--rssi=%d\n", x,RXRSSIANT[x]));
679 #endif
680 MTO_TOGGLE_STATE() = TOGGLE_STATE_MAKEDESISION;
681 break;
682 case TOGGLE_STATE_MAKEDESISION:
683 #ifdef _PE_DTO_DUMP_
684 WBDEBUG(("[HHDTO]:Ant--0-----------------1---\n"));
685 OutputDebugInfo(ANT0,ANT1);
686 #endif
687 //PDEBUG(("[HHDTO] **decision====\n "));
688
689 //=====following is the decision produrce
690 //
691 // first: compare the rssi if difference >10
692 // select the larger one
693 // ,others go to second
694 // second: comapre the tx+rx packet count if difference >100
695 // use larger total packets antenna
696 // third::compare the tx PER if packets>20
697 // if difference >5% using the bigger one
698 //
699 // fourth:compare the RX PER if packets>20
700 // if PER difference <5%
701 // using old antenna
702 //
703 //
704 if (abs(RXRSSIANT[ANT0]-RXRSSIANT[ANT1]) > MTOPARA_RSSI_TH_FOR_ANTDIV())//====rssi_th
705 {
706 if (RXRSSIANT[ANT0]>RXRSSIANT[ANT1])
707 {
708 decideantflag=1;
709 MTO_ANT_MAC() = ANT0;
710 }
711 else
712 {
713 decideantflag=1;
714 MTO_ANT_MAC() = ANT1;
715 }
716 #ifdef _PE_DTO_DUMP_
717 WBDEBUG(("Select antenna by RSSI\n"));
718 #endif
719 }
720 else if (abs(TxPktPerAnt[ANT0] + DTO_Rx_Info[0][ANT0]-TxPktPerAnt[ANT1]-DTO_Rx_Info[0][ANT1])<50)//=====total packet_th
721 {
722 #ifdef _PE_DTO_DUMP_
723 WBDEBUG(("Total tx/rx is close\n"));
724 #endif
725 if (TxDominate(ANT0) && TxDominate(ANT1))
726 {
727 if ((TxPktPerAnt[ANT0]>10) && (TxPktPerAnt[ANT1]>10))//====tx packet_th
728 {
729 WB_PCR[ANT0]=Divide(TxPktPerAnt[ANT0]*100,TxPktRetryPerAnt[ANT0]);
730 WB_PCR[ANT1]=Divide(TxPktPerAnt[ANT1]*100,TxPktRetryPerAnt[ANT1]);
731 if (abs(WB_PCR[ANT0]-WB_PCR[ANT1])>5)// tx PER_th
732 {
733 #ifdef _PE_DTO_DUMP_
734 WBDEBUG(("Decide by Tx correct rate\n"));
735 #endif
736 if (WB_PCR[ANT0]>WB_PCR[ANT1])
737 {
738 decideantflag=1;
739 MTO_ANT_MAC() = ANT0;
740 }
741 else
742 {
743 decideantflag=1;
744 MTO_ANT_MAC() = ANT1;
745 }
746 }
747 else
748 {
749 decideantflag=0;
750 untogglecount++;
751 MTO_ANT_MAC() = old_antenna[0];
752 }
753 }
754 else
755 {
756 decideantflag=0;
757 MTO_ANT_MAC() = old_antenna[0];
758 }
759 }
760 else if ((DTO_Rx_Info[0][ANT0]>10)&&(DTO_Rx_Info[0][ANT1]>10))//rx packet th
761 {
762 #ifdef _PE_DTO_DUMP_
763 WBDEBUG(("Decide by Rx\n"));
764 #endif
765 if (abs(DTO_Rx_Info[0][ANT0] - DTO_Rx_Info[0][ANT1])>50)
766 {
767 if (DTO_Rx_Info[0][ANT0] > DTO_Rx_Info[0][ANT1])
768 {
769 decideantflag=1;
770 MTO_ANT_MAC() = ANT0;
771 }
772 else
773 {
774 decideantflag=1;
775 MTO_ANT_MAC() = ANT1;
776 }
777 }
778 else
779 {
780 decideantflag=0;
781 untogglecount++;
782 MTO_ANT_MAC() = old_antenna[0];
783 }
784 }
785 else
786 {
787 decideantflag=0;
788 MTO_ANT_MAC() = old_antenna[0];
789 }
790 }
791 else if ((TxPktPerAnt[ANT0]+DTO_Rx_Info[0][ANT0])>(TxPktPerAnt[ANT1]+DTO_Rx_Info[0][ANT1]))//use more packekts
792 {
793 #ifdef _PE_DTO_DUMP_
794 WBDEBUG(("decide by total tx/rx : ANT 0\n"));
795 #endif
796
797 decideantflag=1;
798 MTO_ANT_MAC() = ANT0;
799 }
800 else
801 {
802 #ifdef _PE_DTO_DUMP_
803 WBDEBUG(("decide by total tx/rx : ANT 1\n"));
804 #endif
805 decideantflag=1;
806 MTO_ANT_MAC() = ANT1;
807
808 }
809 //this is force ant toggle
810 if (decideantflag==1)
811 untogglecount=0;
812
813 untogglecount=untogglecount%4;
814 if (untogglecount==3) //change antenna
815 MTO_ANT_MAC() = ((~old_antenna[0]) & 0x1);
816 #ifdef _PE_DTO_DUMP_
817 WBDEBUG(("[HHDTO]:==================untoggle-count=%d",untogglecount));
818 #endif
819
820
821
822
823 //PDEBUG(("[HHDTO] **********************************DTO ENABLE=%d",MTO_ANT_DIVERSITY_ENABLE()));
824 if(MTO_ANT_DIVERSITY_ENABLE() == 1)
825 {
826 MTO_ANT_SEL() = MTO_ANT_MAC();
827 hal_set_antenna_number(MTO_HAL(), MTO_ANT_SEL());
828 LOCAL_ANTENNA_NO() = MTO_ANT_SEL();
829 #ifdef _PE_DTO_DUMP_
830 WBDEBUG(("[HHDTO] ==decision==*******antflag=%d******************selected antenna=%d\n",decideantflag,MTO_ANT_SEL()));
831 #endif
832 }
833 if (decideantflag)
834 {
835 old_antenna[3]=old_antenna[2];//store antenna info
836 old_antenna[2]=old_antenna[1];
837 old_antenna[1]=old_antenna[0];
838 old_antenna[0]= MTO_ANT_MAC();
839 }
840 #ifdef _PE_DTO_DUMP_
841 WBDEBUG(("[HHDTO]:**old antenna=[%d][%d][%d][%d]\n",old_antenna[0],old_antenna[1],old_antenna[2],old_antenna[3]));
842 #endif
843 if (old_antenna[0]!=old_antenna[1])
844 AntennaToggleBkoffTimer=0;
845 else if (old_antenna[1]!=old_antenna[2])
846 AntennaToggleBkoffTimer=1;
847 else if (old_antenna[2]!=old_antenna[3])
848 AntennaToggleBkoffTimer=2;
849 else
850 AntennaToggleBkoffTimer=4;
851
852 #ifdef _PE_DTO_DUMP_
853 WBDEBUG(("[HHDTO]:**back off timer=%d",AntennaToggleBkoffTimer));
854 #endif
855
856 ResetDTO_RxInfo(MTO_ANT_MAC(), MTO_FUNC_INPUT_DATA);
857 if (AntennaToggleBkoffTimer==0 && decideantflag)
858 MTO_TOGGLE_STATE() = TOGGLE_STATE_WAIT0;
859 else
860 MTO_TOGGLE_STATE() = TOGGLE_STATE_IDLE;
861 break;
862 }
863
864}
865
866void multiagc(MTO_FUNC_INPUT, u8 high_gain_mode )
867{
868 s32 rssi;
869 hw_data_t *pHwData = MTO_HAL();
870
871 sme_get_rssi(MTO_FUNC_INPUT_DATA, &rssi);
872
873 if( (RF_WB_242 == pHwData->phy_type) ||
874 (RF_WB_242_1 == pHwData->phy_type) ) // 20060619.5 Add
875 {
876 if (high_gain_mode==1)
877 {
878 //hw_set_dxx_reg(phw_data, 0x0C, 0xf8f52230);
879 //hw_set_dxx_reg(phw_data, 0x20, 0x06C43440);
880 Wb35Reg_Write( pHwData, 0x100C, 0xF2F32232 ); // 940916 0xf8f52230 );
881 Wb35Reg_Write( pHwData, 0x1020, 0x04cb3440 ); // 940915 0x06C43440
882 }
883 else if (high_gain_mode==0)
884 {
885 //hw_set_dxx_reg(phw_data, 0x0C, 0xEEEE000D);
886 //hw_set_dxx_reg(phw_data, 0x20, 0x06c41440);
887 Wb35Reg_Write( pHwData, 0x100C, 0xEEEE000D );
888 Wb35Reg_Write( pHwData, 0x1020, 0x04cb1440 ); // 940915 0x06c41440
889 }
890 #ifdef _PE_DTO_DUMP_
891 WBDEBUG(("[HHDTOAGC] **rssi=%d, high gain mode=%d", rssi, high_gain_mode));
892 #endif
893 }
894}
895
896void TxPwrControl(MTO_FUNC_INPUT)
897{
898 s32 rssi;
899 hw_data_t *pHwData = MTO_HAL();
900
901 sme_get_rssi(MTO_FUNC_INPUT_DATA, &rssi);
902 if( (RF_WB_242 == pHwData->phy_type) ||
903 (RF_WB_242_1 == pHwData->phy_type) ) // 20060619.5 Add
904 {
905 static u8 high_gain_mode; //this is for winbond RF switch LNA
906 //using different register setting
907
908 if (high_gain_mode==1)
909 {
910 if( rssi > MTO_DATA().RSSI_high )
911 {
912 //hw_set_dxx_reg(phw_data, 0x0C, 0xf8f52230);
913 //hw_set_dxx_reg(phw_data, 0x20, 0x05541640);
914 high_gain_mode=0;
915 }
916 else
917 {
918 //hw_set_dxx_reg(phw_data, 0x0C, 0xf8f51830);
919 //hw_set_dxx_reg(phw_data, 0x20, 0x05543E40);
920 high_gain_mode=1;
921 }
922 }
923 else //if (high_gain_mode==0)
924 {
925 if( rssi < MTO_DATA().RSSI_low )
926 {
927 //hw_set_dxx_reg(phw_data, 0x0C, 0xf8f51830);
928 //hw_set_dxx_reg(phw_data, 0x20, 0x05543E40);
929 high_gain_mode=1;
930 }
931 else
932 {
933 //hw_set_dxx_reg(phw_data, 0x0C, 0xf8f52230);
934 //hw_set_dxx_reg(phw_data, 0x20, 0x05541640);
935 high_gain_mode=0;
936 }
937 }
938
939 // Always high gain 20051014. Using the initial value only.
940 multiagc(MTO_FUNC_INPUT_DATA, high_gain_mode);
941 }
942}
943
944
945u8 CalcNewRate(MTO_FUNC_INPUT, u8 old_rate, u32 retry_cnt, u32 tx_frag_cnt)
946{
947 int i;
948 u8 new_rate;
949 u32 retry_rate;
950 int TxThrouput1, TxThrouput2, TxThrouput3, BestThroupht;
951
952 if(tx_frag_cnt < MTOPARA_TXCOUNT_TH_FOR_CALC_RATE()) //too few packets transmit
953 {
954 return 0xff;
955 }
956 retry_rate = Divide(retry_cnt * 100, tx_frag_cnt);
957
958 if(retry_rate > 90) retry_rate = 90; //always truncate to 90% due to lookup table size
959 #ifdef _PE_DTO_DUMP_
960 WBDEBUG(("##### Current level =%d, Retry count =%d, Frag count =%d\n",
961 old_rate, retry_cnt, tx_frag_cnt));
962 WBDEBUG(("*##* Retry rate =%d, throughput =%d\n",
963 retry_rate, Rate_PER_TBL[retry_rate][old_rate]));
964 WBDEBUG(("TxRateRec.tx_rate =%d, Retry rate = %d, throughput = %d\n",
965 TxRateRec.tx_rate, TxRateRec.tx_retry_rate,
966 Rate_PER_TBL[TxRateRec.tx_retry_rate][Level2PerTbl[TxRateRec.tx_rate]]));
967 WBDEBUG(("old_rate-1 =%d, Retry rate = %d, throughput = %d\n",
968 old_rate-1, retryrate_rec[old_rate-1],
969 Rate_PER_TBL[retryrate_rec[old_rate-1]][old_rate-1]));
970 WBDEBUG(("old_rate+1 =%d, Retry rate = %d, throughput = %d\n",
971 old_rate+1, retryrate_rec[old_rate+1],
972 Rate_PER_TBL[retryrate_rec[old_rate+1]][old_rate+1]));
973 #endif
974
975 //following is for record the retry rate at the different data rate
976 if (abs(retry_rate-retryrate_rec[old_rate])<50)//---the per TH
977 retryrate_rec[old_rate] = retry_rate; //update retry rate
978 else
979 {
980 for (i=0;i<MTO_DataRateAvailableLevel;i++) //reset all retry rate
981 retryrate_rec[i]=0;
982 retryrate_rec[old_rate] = retry_rate;
983 #ifdef _PE_DTO_DUMP_
984 WBDEBUG(("Reset retry rate table\n"));
985 #endif
986 }
987
988 if(TxRateRec.tx_rate > old_rate) //Decrease Tx Rate
989 {
990 TxThrouput1 = Rate_PER_TBL[TxRateRec.tx_retry_rate][Level2PerTbl[TxRateRec.tx_rate]];
991 TxThrouput2 = Rate_PER_TBL[retry_rate][Level2PerTbl[old_rate]];
992 if(TxThrouput1 > TxThrouput2)
993 {
994 new_rate = TxRateRec.tx_rate;
995 BestThroupht = TxThrouput1;
996 }
997 else
998 {
999 new_rate = old_rate;
1000 BestThroupht = TxThrouput2;
1001 }
1002 if((old_rate > 0) &&(retry_rate>MTOPARA_TXRATE_DEC_TH())) //Min Rate
1003 {
1004 TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate-1]][Level2PerTbl[old_rate-1]];
1005 if(BestThroupht < TxThrouput3)
1006 {
1007 new_rate = old_rate - 1;
1008 #ifdef _PE_DTO_DUMP_
1009 WBDEBUG(("--------\n"));
1010 #endif
1011 BestThroupht = TxThrouput3;
1012 }
1013 }
1014 }
1015 else if(TxRateRec.tx_rate < old_rate) //Increase Tx Rate
1016 {
1017 TxThrouput1 = Rate_PER_TBL[TxRateRec.tx_retry_rate][Level2PerTbl[TxRateRec.tx_rate]];
1018 TxThrouput2 = Rate_PER_TBL[retry_rate][Level2PerTbl[old_rate]];
1019 if(TxThrouput1 > TxThrouput2)
1020 {
1021 new_rate = TxRateRec.tx_rate;
1022 BestThroupht = TxThrouput1;
1023 }
1024 else
1025 {
1026 new_rate = old_rate;
1027 BestThroupht = TxThrouput2;
1028 }
1029 if ((old_rate < MTO_DataRateAvailableLevel - 1)&&(retry_rate<MTOPARA_TXRATE_INC_TH()))
1030 {
1031 //TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate+1]][Level2PerTbl[old_rate+1]];
1032 if (retryrate_rec[old_rate+1] > MTOPARA_TXRETRYRATE_REDUCE())
1033 TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate+1]-MTOPARA_TXRETRYRATE_REDUCE()][Level2PerTbl[old_rate+1]];
1034 else
1035 TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate+1]][Level2PerTbl[old_rate+1]];
1036 if(BestThroupht < TxThrouput3)
1037 {
1038 new_rate = old_rate + 1;
1039 #ifdef _PE_DTO_DUMP_
1040 WBDEBUG(("++++++++++\n"));
1041 #endif
1042 BestThroupht = TxThrouput3;
1043 }
1044 }
1045 }
1046 else //Tx Rate no change
1047 {
1048 TxThrouput2 = Rate_PER_TBL[retry_rate][Level2PerTbl[old_rate]];
1049 new_rate = old_rate;
1050 BestThroupht = TxThrouput2;
1051
1052 if (retry_rate <MTOPARA_TXRATE_EQ_TH()) //th for change higher rate
1053 {
1054 if(old_rate < MTO_DataRateAvailableLevel - 1)
1055 {
1056 //TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate+1]][Level2PerTbl[old_rate+1]];
1057 if (retryrate_rec[old_rate+1] > MTOPARA_TXRETRYRATE_REDUCE())
1058 TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate+1]-MTOPARA_TXRETRYRATE_REDUCE()][Level2PerTbl[old_rate+1]];
1059 else
1060 TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate+1]][Level2PerTbl[old_rate+1]];
1061 if(BestThroupht < TxThrouput3)
1062 {
1063 new_rate = old_rate + 1;
1064 BestThroupht = TxThrouput3;
1065 #ifdef _PE_DTO_DUMP_
1066 WBDEBUG(("=++++++++++\n"));
1067 #endif
1068 }
1069 }
1070 }
1071 else
1072 if(old_rate > 0) //Min Rate
1073 {
1074 TxThrouput3 = Rate_PER_TBL[retryrate_rec[old_rate-1]][Level2PerTbl[old_rate-1]];
1075 if(BestThroupht < TxThrouput3)
1076 {
1077 new_rate = old_rate - 1;
1078 #ifdef _PE_DTO_DUMP_
1079 WBDEBUG(("=--------\n"));
1080 #endif
1081 BestThroupht = TxThrouput3;
1082 }
1083 }
1084 }
1085
1086 if (!LOCAL_IS_IBSS_MODE())
1087 {
1088 max_rssi_rate = GetMaxRateLevelFromRSSI();
1089 #ifdef _PE_DTO_DUMP_
1090 WBDEBUG(("[MTO]:RSSI2Rate=%d\n", MTO_Data_Rate_Tbl[max_rssi_rate]));
1091 #endif
1092 if(new_rate > max_rssi_rate)
1093 new_rate = max_rssi_rate;
1094 }
1095
1096 //save new rate;
1097 TxRateRec.tx_rate = old_rate;
1098 TxRateRec.tx_retry_rate = (u8) retry_rate;
1099 TxRetryRate = retry_rate;
1100 return new_rate;
1101}
1102
1103void SmoothRSSI(s32 new_rssi)
1104{
1105 RSSISmoothed = RSSISmoothed + new_rssi - RSSIBuf[RSSIBufIndex];
1106 RSSIBuf[RSSIBufIndex] = new_rssi;
1107 RSSIBufIndex = (RSSIBufIndex + 1) % 10;
1108}
1109
1110u8 GetMaxRateLevelFromRSSI(void)
1111{
1112 u8 i;
1113 u8 TxRate;
1114
1115 for(i=0;i<RSSI2RATE_SIZE;i++)
1116 {
1117 if(RSSISmoothed > RSSI2RateTbl[i].RSSI)
1118 break;
1119 }
1120 #ifdef _PE_DTO_DUMP_
1121 WBDEBUG(("[MTO]:RSSI=%d\n", Divide(RSSISmoothed, 10)));
1122 #endif
1123 if(i < RSSI2RATE_SIZE)
1124 TxRate = RSSI2RateTbl[i].TxRate;
1125 else
1126 TxRate = 2; //divided by 2 = 1Mbps
1127
1128 for(i=MTO_DataRateAvailableLevel-1;i>0;i--)
1129 {
1130 if(TxRate >=MTO_Data_Rate_Tbl[i])
1131 break;
1132 }
1133 return i;
1134}
1135
1136//===========================================================================
1137// Description:
1138// If we enable DTO, we will ignore the tx count with different tx rate from
1139// DTO rate. This is because when we adjust DTO tx rate, there could be some
1140// packets in the tx queue with previous tx rate
1141void MTO_SetTxCount(MTO_FUNC_INPUT, u8 tx_rate, u8 index)
1142{
1143 MTO_TXFLOWCOUNT()++;
1144 if ((MTO_ENABLE==1) && (MTO_RATE_CHANGE_ENABLE()==1))
1145 {
1146 if(tx_rate == MTO_DATA_RATE())
1147 {
1148 if (index == 0)
1149 {
1150 if (boSparseTxTraffic)
1151 MTO_HAL()->dto_tx_frag_count += MTOPARA_PERIODIC_CHECK_CYCLE();
1152 else
1153 MTO_HAL()->dto_tx_frag_count += 1;
1154 }
1155 else
1156 {
1157 if (index<8)
1158 {
1159 MTO_HAL()->dto_tx_retry_count += index;
1160 MTO_HAL()->dto_tx_frag_count += (index+1);
1161 }
1162 else
1163 {
1164 MTO_HAL()->dto_tx_retry_count += 7;
1165 MTO_HAL()->dto_tx_frag_count += 7;
1166 }
1167 }
1168 }
1169 else if(MTO_DATA_RATE()>48 && tx_rate ==48)
1170 {//ALFRED
1171 if (index<3) //for reduciing data rate scheme ,
1172 //do not calcu different data rate
1173 //3 is the reducing data rate at retry
1174 {
1175 MTO_HAL()->dto_tx_retry_count += index;
1176 MTO_HAL()->dto_tx_frag_count += (index+1);
1177 }
1178 else
1179 {
1180 MTO_HAL()->dto_tx_retry_count += 3;
1181 MTO_HAL()->dto_tx_frag_count += 3;
1182 }
1183
1184 }
1185 }
1186 else
1187 {
1188 MTO_HAL()->dto_tx_retry_count += index;
1189 MTO_HAL()->dto_tx_frag_count += (index+1);
1190 }
1191 TotalTxPkt ++;
1192 TotalTxPktRetry += (index+1);
1193
1194 PeriodTotalTxPkt ++;
1195 PeriodTotalTxPktRetry += (index+1);
1196}
1197
1198u8 MTO_GetTxFallbackRate(MTO_FUNC_INPUT)
1199{
1200 return MTO_DATA_FALLBACK_RATE();
1201}
1202
1203
1204//===========================================================================
1205// MTO_TxFailed --
1206//
1207// Description:
1208// Failure of transmitting a packet indicates that certain MTO parmeters
1209// may need to be adjusted. This function is called when NIC just failed
1210// to transmit a packet or when MSDULifeTime expired.
1211//
1212// Arguments:
1213// Adapter - The pointer to the Miniport Adapter Context
1214//
1215// Return Value:
1216// None
1217//============================================================================
1218void MTO_TxFailed(MTO_FUNC_INPUT)
1219{
1220 return;
1221}
1222
1223int Divide(int a, int b)
1224{
1225 if (b==0) b=1;
1226 return a/b;
1227}
1228
1229
diff --git a/drivers/staging/winbond/mto.h b/drivers/staging/winbond/mto.h
new file mode 100644
index 00000000000..f47936f46d1
--- /dev/null
+++ b/drivers/staging/winbond/mto.h
@@ -0,0 +1,265 @@
1//==================================================================
2// MTO.H
3//
4// Revision history
5//=================================
6// 20030110 UN20 Pete Chao
7// Initial Release
8//
9// Copyright (c) 2003 Winbond Electronics Corp. All rights reserved.
10//==================================================================
11#ifndef __MTO_H__
12#define __MTO_H__
13
14#define MTO_DEFAULT_TH_CNT 5
15#define MTO_DEFAULT_TH_SQ3 112 //OLD IS 13 reference JohnXu
16#define MTO_DEFAULT_TH_IDLE_SLOT 15
17#define MTO_DEFAULT_TH_PR_INTERF 30
18#define MTO_DEFAULT_TMR_AGING 25 // unit: slot time 10 reference JohnXu
19#define MTO_DEFAULT_TMR_PERIODIC 5 // unit: slot time
20
21#define MTO_ANTENNA_DIVERSITY_OFF 0
22#define MTO_ANTENNA_DIVERSITY_ON 1
23
24// LA20040210_DTO kevin
25//#define MTO_PREAMBLE_LONG 0
26//#define MTO_PREAMBLE_SHORT 1
27#define MTO_PREAMBLE_LONG WLAN_PREAMBLE_TYPE_LONG
28#define MTO_PREAMBLE_SHORT WLAN_PREAMBLE_TYPE_SHORT
29
30typedef enum {
31 TOGGLE_STATE_IDLE = 0,
32 TOGGLE_STATE_WAIT0 = 1,
33 TOGGLE_STATE_WAIT1 = 2,
34 TOGGLE_STATE_MAKEDESISION = 3,
35 TOGGLE_STATE_BKOFF = 4
36} TOGGLE_STATE;
37
38typedef enum {
39 RATE_CHGSTATE_IDLE = 0,
40 RATE_CHGSTATE_CALCULATE = 1,
41 RATE_CHGSTATE_BACKOFF = 2
42} TX_RATE_REDUCTION_STATE;
43
44//============================================================================
45// struct _MTOParameters --
46//
47// Defines the parameters used in the MAC Throughput Optimization algorithm
48//============================================================================
49typedef struct _MTO_PARAMETERS
50{
51 u8 Th_Fixant;
52 u8 Th_Cnt;
53 u8 Th_SQ3;
54 u8 Th_IdleSlot;
55
56 u16 Tmr_Aging;
57 u8 Th_PrInterf;
58 u8 Tmr_Periodic;
59
60 //--------- wkchen added -------------
61 u32 TxFlowCount; //to judge what kind the tx flow(sparse or busy) is
62 //------------------------------------------------
63
64 //--------- DTO threshold parameters -------------
65 u16 DTO_PeriodicCheckCycle;
66 u16 DTO_RssiThForAntDiv;
67
68 u16 DTO_TxCountThForCalcNewRate;
69 u16 DTO_TxRateIncTh;
70
71 u16 DTO_TxRateDecTh;
72 u16 DTO_TxRateEqTh;
73
74 u16 DTO_TxRateBackOff;
75 u16 DTO_TxRetryRateReduce;
76
77 u16 DTO_TxPowerIndex; //0 ~ 31
78 u16 reserved_1;
79 //------------------------------------------------
80
81 u8 PowerChangeEnable;
82 u8 AntDiversityEnable;
83 u8 Ant_mac;
84 u8 Ant_div;
85
86 u8 CCA_Mode;
87 u8 CCA_Mode_Setup;
88 u8 Preamble_Type;
89 u8 PreambleChangeEnable;
90
91 u8 DataRateLevel;
92 u8 DataRateChangeEnable;
93 u8 FragThresholdLevel;
94 u8 FragThresholdChangeEnable;
95
96 u16 RTSThreshold;
97 u16 RTSThreshold_Setup;
98
99 u32 AvgIdleSlot;
100 u32 Pr_Interf;
101 u32 AvgGapBtwnInterf;
102
103 u8 RTSChangeEnable;
104 u8 Ant_sel;
105 u8 aging_timeout;
106 u8 reserved_2;
107
108 u32 Cnt_Ant[2];
109 u32 SQ_Ant[2];
110
111// 20040510 remove from globe vairable
112 u32 TmrCnt;
113 u32 BackoffTmr;
114 TOGGLE_STATE ToggleState;
115 TX_RATE_REDUCTION_STATE TxRateReductionState;
116
117 u8 Last_Rate;
118 u8 Co_efficent;
119 u8 FallbackRateLevel;
120 u8 OfdmRateLevel;
121
122 u8 RatePolicy;
123 u8 reserved_3[3];
124
125 // For RSSI turning
126 s32 RSSI_high;
127 s32 RSSI_low;
128
129} MTO_PARAMETERS, *PMTO_PARAMETERS;
130
131
132#define MTO_FUNC_INPUT PWB32_ADAPTER Adapter
133#define MTO_FUNC_INPUT_DATA Adapter
134#define MTO_DATA() (Adapter->sMtoPara)
135#define MTO_HAL() (&Adapter->sHwData)
136#define MTO_SET_PREAMBLE_TYPE(x) // 20040511 Turbo mark LM_PREAMBLE_TYPE(&pcore_data->lm_data) = (x)
137#define MTO_ENABLE (Adapter->sLocalPara.TxRateMode == RATE_AUTO)
138#define MTO_TXPOWER_FROM_EEPROM (Adapter->sHwData.PowerIndexFromEEPROM)
139#define LOCAL_ANTENNA_NO() (Adapter->sLocalPara.bAntennaNo)
140#define LOCAL_IS_CONNECTED() (Adapter->sLocalPara.wConnectedSTAindex != 0)
141#define LOCAL_IS_IBSS_MODE() (Adapter->asBSSDescriptElement[Adapter->sLocalPara.wConnectedSTAindex].bBssType == IBSS_NET)
142#define MTO_INITTXRATE_MODE (Adapter->sHwData.SoftwareSet&0x2) //bit 1
143// 20040510 Turbo add
144#define MTO_TMR_CNT() MTO_DATA().TmrCnt
145#define MTO_TOGGLE_STATE() MTO_DATA().ToggleState
146#define MTO_TX_RATE_REDUCTION_STATE() MTO_DATA().TxRateReductionState
147#define MTO_BACKOFF_TMR() MTO_DATA().BackoffTmr
148#define MTO_LAST_RATE() MTO_DATA().Last_Rate
149#define MTO_CO_EFFICENT() MTO_DATA().Co_efficent
150
151#define MTO_TH_CNT() MTO_DATA().Th_Cnt
152#define MTO_TH_SQ3() MTO_DATA().Th_SQ3
153#define MTO_TH_IDLE_SLOT() MTO_DATA().Th_IdleSlot
154#define MTO_TH_PR_INTERF() MTO_DATA().Th_PrInterf
155
156#define MTO_TMR_AGING() MTO_DATA().Tmr_Aging
157#define MTO_TMR_PERIODIC() MTO_DATA().Tmr_Periodic
158
159#define MTO_POWER_CHANGE_ENABLE() MTO_DATA().PowerChangeEnable
160#define MTO_ANT_DIVERSITY_ENABLE() Adapter->sLocalPara.boAntennaDiversity
161#define MTO_ANT_MAC() MTO_DATA().Ant_mac
162#define MTO_ANT_DIVERSITY() MTO_DATA().Ant_div
163#define MTO_CCA_MODE() MTO_DATA().CCA_Mode
164#define MTO_CCA_MODE_SETUP() MTO_DATA().CCA_Mode_Setup
165#define MTO_PREAMBLE_TYPE() MTO_DATA().Preamble_Type
166#define MTO_PREAMBLE_CHANGE_ENABLE() MTO_DATA().PreambleChangeEnable
167
168#define MTO_RATE_LEVEL() MTO_DATA().DataRateLevel
169#define MTO_FALLBACK_RATE_LEVEL() MTO_DATA().FallbackRateLevel
170#define MTO_OFDM_RATE_LEVEL() MTO_DATA().OfdmRateLevel
171#define MTO_RATE_CHANGE_ENABLE() MTO_DATA().DataRateChangeEnable
172#define MTO_FRAG_TH_LEVEL() MTO_DATA().FragThresholdLevel
173#define MTO_FRAG_CHANGE_ENABLE() MTO_DATA().FragThresholdChangeEnable
174#define MTO_RTS_THRESHOLD() MTO_DATA().RTSThreshold
175#define MTO_RTS_CHANGE_ENABLE() MTO_DATA().RTSChangeEnable
176#define MTO_RTS_THRESHOLD_SETUP() MTO_DATA().RTSThreshold_Setup
177
178#define MTO_AVG_IDLE_SLOT() MTO_DATA().AvgIdleSlot
179#define MTO_PR_INTERF() MTO_DATA().Pr_Interf
180#define MTO_AVG_GAP_BTWN_INTERF() MTO_DATA().AvgGapBtwnInterf
181
182#define MTO_ANT_SEL() MTO_DATA().Ant_sel
183#define MTO_CNT_ANT(x) MTO_DATA().Cnt_Ant[(x)]
184#define MTO_SQ_ANT(x) MTO_DATA().SQ_Ant[(x)]
185#define MTO_AGING_TIMEOUT() MTO_DATA().aging_timeout
186
187
188#define MTO_TXFLOWCOUNT() MTO_DATA().TxFlowCount
189//--------- DTO threshold parameters -------------
190#define MTOPARA_PERIODIC_CHECK_CYCLE() MTO_DATA().DTO_PeriodicCheckCycle
191#define MTOPARA_RSSI_TH_FOR_ANTDIV() MTO_DATA().DTO_RssiThForAntDiv
192#define MTOPARA_TXCOUNT_TH_FOR_CALC_RATE() MTO_DATA().DTO_TxCountThForCalcNewRate
193#define MTOPARA_TXRATE_INC_TH() MTO_DATA().DTO_TxRateIncTh
194#define MTOPARA_TXRATE_DEC_TH() MTO_DATA().DTO_TxRateDecTh
195#define MTOPARA_TXRATE_EQ_TH() MTO_DATA().DTO_TxRateEqTh
196#define MTOPARA_TXRATE_BACKOFF() MTO_DATA().DTO_TxRateBackOff
197#define MTOPARA_TXRETRYRATE_REDUCE() MTO_DATA().DTO_TxRetryRateReduce
198#define MTOPARA_TXPOWER_INDEX() MTO_DATA().DTO_TxPowerIndex
199//------------------------------------------------
200
201
202extern u8 MTO_Data_Rate_Tbl[];
203extern u16 MTO_Frag_Th_Tbl[];
204
205#define MTO_DATA_RATE() MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()]
206#define MTO_DATA_FALLBACK_RATE() MTO_Data_Rate_Tbl[MTO_FALLBACK_RATE_LEVEL()] //next level
207#define MTO_FRAG_TH() MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()]
208
209typedef struct {
210 u8 tx_rate;
211 u8 tx_retry_rate;
212} TXRETRY_REC;
213
214typedef struct _STATISTICS_INFO {
215 u32 Rate54M;
216 u32 Rate48M;
217 u32 Rate36M;
218 u32 Rate24M;
219 u32 Rate18M;
220 u32 Rate12M;
221 u32 Rate9M;
222 u32 Rate6M;
223 u32 Rate11MS;
224 u32 Rate11ML;
225 u32 Rate55MS;
226 u32 Rate55ML;
227 u32 Rate2MS;
228 u32 Rate2ML;
229 u32 Rate1M;
230 u32 Rate54MOK;
231 u32 Rate48MOK;
232 u32 Rate36MOK;
233 u32 Rate24MOK;
234 u32 Rate18MOK;
235 u32 Rate12MOK;
236 u32 Rate9MOK;
237 u32 Rate6MOK;
238 u32 Rate11MSOK;
239 u32 Rate11MLOK;
240 u32 Rate55MSOK;
241 u32 Rate55MLOK;
242 u32 Rate2MSOK;
243 u32 Rate2MLOK;
244 u32 Rate1MOK;
245 u32 SQ3;
246 s32 RSSIAVG;
247 s32 RSSIMAX;
248 s32 TXRATE;
249 s32 TxRetryRate;
250 s32 BSS_PK_CNT;
251 s32 NIDLESLOT;
252 s32 SLOT_CNT;
253 s32 INTERF_CNT;
254 s32 GAP_CNT;
255 s32 DS_EVM;
256 s32 RcvBeaconNum;
257 s32 RXRATE;
258 s32 RxBytes;
259 s32 TxBytes;
260 s32 Antenna;
261} STATISTICS_INFO, *PSTATISTICS_INFO;
262
263#endif //__MTO_H__
264
265
diff --git a/drivers/staging/winbond/mto_f.h b/drivers/staging/winbond/mto_f.h
new file mode 100644
index 00000000000..30b3df2ccb3
--- /dev/null
+++ b/drivers/staging/winbond/mto_f.h
@@ -0,0 +1,7 @@
1extern void MTO_Init(PWB32_ADAPTER);
2extern void MTO_PeriodicTimerExpired(PWB32_ADAPTER);
3extern void MTO_SetDTORateRange(PWB32_ADAPTER, u8 *, u8);
4extern u8 MTO_GetTxRate(MTO_FUNC_INPUT, u32 fpdu_len);
5extern u8 MTO_GetTxFallbackRate(MTO_FUNC_INPUT);
6extern void MTO_SetTxCount(MTO_FUNC_INPUT, u8 t0, u8 index);
7
diff --git a/drivers/staging/winbond/os_common.h b/drivers/staging/winbond/os_common.h
new file mode 100644
index 00000000000..e24ff41e871
--- /dev/null
+++ b/drivers/staging/winbond/os_common.h
@@ -0,0 +1,2 @@
1#include "linux/sysdef.h"
2
diff --git a/drivers/staging/winbond/phy_calibration.c b/drivers/staging/winbond/phy_calibration.c
new file mode 100644
index 00000000000..272a65066ab
--- /dev/null
+++ b/drivers/staging/winbond/phy_calibration.c
@@ -0,0 +1,1759 @@
1/*
2 * phy_302_calibration.c
3 *
4 * Copyright (C) 2002, 2005 Winbond Electronics Corp.
5 *
6 * modification history
7 * ---------------------------------------------------------------------------
8 * 0.01.001, 2003-04-16, Kevin created
9 *
10 */
11
12/****************** INCLUDE FILES SECTION ***********************************/
13#include "os_common.h"
14#include "phy_calibration.h"
15
16
17/****************** DEBUG CONSTANT AND MACRO SECTION ************************/
18
19/****************** LOCAL CONSTANT AND MACRO SECTION ************************/
20#define LOOP_TIMES 20
21#define US 1000//MICROSECOND
22
23#define AG_CONST 0.6072529350
24#define FIXED(X) ((s32)((X) * 32768.0))
25#define DEG2RAD(X) 0.017453 * (X)
26
27/****************** LOCAL TYPE DEFINITION SECTION ***************************/
28typedef s32 fixed; /* 16.16 fixed-point */
29
30static const fixed Angles[]=
31{
32 FIXED(DEG2RAD(45.0)), FIXED(DEG2RAD(26.565)), FIXED(DEG2RAD(14.0362)),
33 FIXED(DEG2RAD(7.12502)), FIXED(DEG2RAD(3.57633)), FIXED(DEG2RAD(1.78991)),
34 FIXED(DEG2RAD(0.895174)),FIXED(DEG2RAD(0.447614)),FIXED(DEG2RAD(0.223811)),
35 FIXED(DEG2RAD(0.111906)),FIXED(DEG2RAD(0.055953)),FIXED(DEG2RAD(0.027977))
36};
37
38/****************** LOCAL FUNCTION DECLARATION SECTION **********************/
39//void _phy_rf_write_delay(hw_data_t *phw_data);
40//void phy_init_rf(hw_data_t *phw_data);
41
42/****************** FUNCTION DEFINITION SECTION *****************************/
43
44s32 _s13_to_s32(u32 data)
45{
46 u32 val;
47
48 val = (data & 0x0FFF);
49
50 if ((data & BIT(12)) != 0)
51 {
52 val |= 0xFFFFF000;
53 }
54
55 return ((s32) val);
56}
57
58u32 _s32_to_s13(s32 data)
59{
60 u32 val;
61
62 if (data > 4095)
63 {
64 data = 4095;
65 }
66 else if (data < -4096)
67 {
68 data = -4096;
69 }
70
71 val = data & 0x1FFF;
72
73 return val;
74}
75
76/****************************************************************************/
77s32 _s4_to_s32(u32 data)
78{
79 s32 val;
80
81 val = (data & 0x0007);
82
83 if ((data & BIT(3)) != 0)
84 {
85 val |= 0xFFFFFFF8;
86 }
87
88 return val;
89}
90
91u32 _s32_to_s4(s32 data)
92{
93 u32 val;
94
95 if (data > 7)
96 {
97 data = 7;
98 }
99 else if (data < -8)
100 {
101 data = -8;
102 }
103
104 val = data & 0x000F;
105
106 return val;
107}
108
109/****************************************************************************/
110s32 _s5_to_s32(u32 data)
111{
112 s32 val;
113
114 val = (data & 0x000F);
115
116 if ((data & BIT(4)) != 0)
117 {
118 val |= 0xFFFFFFF0;
119 }
120
121 return val;
122}
123
124u32 _s32_to_s5(s32 data)
125{
126 u32 val;
127
128 if (data > 15)
129 {
130 data = 15;
131 }
132 else if (data < -16)
133 {
134 data = -16;
135 }
136
137 val = data & 0x001F;
138
139 return val;
140}
141
142/****************************************************************************/
143s32 _s6_to_s32(u32 data)
144{
145 s32 val;
146
147 val = (data & 0x001F);
148
149 if ((data & BIT(5)) != 0)
150 {
151 val |= 0xFFFFFFE0;
152 }
153
154 return val;
155}
156
157u32 _s32_to_s6(s32 data)
158{
159 u32 val;
160
161 if (data > 31)
162 {
163 data = 31;
164 }
165 else if (data < -32)
166 {
167 data = -32;
168 }
169
170 val = data & 0x003F;
171
172 return val;
173}
174
175/****************************************************************************/
176s32 _s9_to_s32(u32 data)
177{
178 s32 val;
179
180 val = data & 0x00FF;
181
182 if ((data & BIT(8)) != 0)
183 {
184 val |= 0xFFFFFF00;
185 }
186
187 return val;
188}
189
190u32 _s32_to_s9(s32 data)
191{
192 u32 val;
193
194 if (data > 255)
195 {
196 data = 255;
197 }
198 else if (data < -256)
199 {
200 data = -256;
201 }
202
203 val = data & 0x01FF;
204
205 return val;
206}
207
208/****************************************************************************/
209s32 _floor(s32 n)
210{
211 if (n > 0)
212 {
213 n += 5;
214 }
215 else
216 {
217 n -= 5;
218 }
219
220 return (n/10);
221}
222
223/****************************************************************************/
224// The following code is sqare-root function.
225// sqsum is the input and the output is sq_rt;
226// The maximum of sqsum = 2^27 -1;
227u32 _sqrt(u32 sqsum)
228{
229 u32 sq_rt;
230
231 int g0, g1, g2, g3, g4;
232 int seed;
233 int next;
234 int step;
235
236 g4 = sqsum / 100000000;
237 g3 = (sqsum - g4*100000000) /1000000;
238 g2 = (sqsum - g4*100000000 - g3*1000000) /10000;
239 g1 = (sqsum - g4*100000000 - g3*1000000 - g2*10000) /100;
240 g0 = (sqsum - g4*100000000 - g3*1000000 - g2*10000 - g1*100);
241
242 next = g4;
243 step = 0;
244 seed = 0;
245 while (((seed+1)*(step+1)) <= next)
246 {
247 step++;
248 seed++;
249 }
250
251 sq_rt = seed * 10000;
252 next = (next-(seed*step))*100 + g3;
253
254 step = 0;
255 seed = 2 * seed * 10;
256 while (((seed+1)*(step+1)) <= next)
257 {
258 step++;
259 seed++;
260 }
261
262 sq_rt = sq_rt + step * 1000;
263 next = (next - seed * step) * 100 + g2;
264 seed = (seed + step) * 10;
265 step = 0;
266 while (((seed+1)*(step+1)) <= next)
267 {
268 step++;
269 seed++;
270 }
271
272 sq_rt = sq_rt + step * 100;
273 next = (next - seed * step) * 100 + g1;
274 seed = (seed + step) * 10;
275 step = 0;
276
277 while (((seed+1)*(step+1)) <= next)
278 {
279 step++;
280 seed++;
281 }
282
283 sq_rt = sq_rt + step * 10;
284 next = (next - seed* step) * 100 + g0;
285 seed = (seed + step) * 10;
286 step = 0;
287
288 while (((seed+1)*(step+1)) <= next)
289 {
290 step++;
291 seed++;
292 }
293
294 sq_rt = sq_rt + step;
295
296 return sq_rt;
297}
298
299/****************************************************************************/
300void _sin_cos(s32 angle, s32 *sin, s32 *cos)
301{
302 fixed X, Y, TargetAngle, CurrAngle;
303 unsigned Step;
304
305 X=FIXED(AG_CONST); // AG_CONST * cos(0)
306 Y=0; // AG_CONST * sin(0)
307 TargetAngle=abs(angle);
308 CurrAngle=0;
309
310 for (Step=0; Step < 12; Step++)
311 {
312 fixed NewX;
313
314 if(TargetAngle > CurrAngle)
315 {
316 NewX=X - (Y >> Step);
317 Y=(X >> Step) + Y;
318 X=NewX;
319 CurrAngle += Angles[Step];
320 }
321 else
322 {
323 NewX=X + (Y >> Step);
324 Y=-(X >> Step) + Y;
325 X=NewX;
326 CurrAngle -= Angles[Step];
327 }
328 }
329
330 if (angle > 0)
331 {
332 *cos = X;
333 *sin = Y;
334 }
335 else
336 {
337 *cos = X;
338 *sin = -Y;
339 }
340}
341
342
343void _reset_rx_cal(hw_data_t *phw_data)
344{
345 u32 val;
346
347 hw_get_dxx_reg(phw_data, 0x54, &val);
348
349 if (phw_data->revision == 0x2002) // 1st-cut
350 {
351 val &= 0xFFFF0000;
352 }
353 else // 2nd-cut
354 {
355 val &= 0x000003FF;
356 }
357
358 hw_set_dxx_reg(phw_data, 0x54, val);
359}
360
361
362// ************for winbond calibration*********
363//
364
365//
366//
367// *********************************************
368void _rxadc_dc_offset_cancellation_winbond(hw_data_t *phw_data, u32 frequency)
369{
370 u32 reg_agc_ctrl3;
371 u32 reg_a_acq_ctrl;
372 u32 reg_b_acq_ctrl;
373 u32 val;
374
375 PHY_DEBUG(("[CAL] -> [1]_rxadc_dc_offset_cancellation()\n"));
376 phy_init_rf(phw_data);
377
378 // set calibration channel
379 if( (RF_WB_242 == phw_data->phy_type) ||
380 (RF_WB_242_1 == phw_data->phy_type) ) // 20060619.5 Add
381 {
382 if ((frequency >= 2412) && (frequency <= 2484))
383 {
384 // w89rf242 change frequency to 2390Mhz
385 PHY_DEBUG(("[CAL] W89RF242/11G/Channel=2390Mhz\n"));
386 phy_set_rf_data(phw_data, 3, (3<<24)|0x025586);
387
388 }
389 }
390 else
391 {
392
393 }
394
395 // reset cancel_dc_i[9:5] and cancel_dc_q[4:0] in register DC_Cancel
396 hw_get_dxx_reg(phw_data, 0x5C, &val);
397 val &= ~(0x03FF);
398 hw_set_dxx_reg(phw_data, 0x5C, val);
399
400 // reset the TX and RX IQ calibration data
401 hw_set_dxx_reg(phw_data, 0x3C, 0);
402 hw_set_dxx_reg(phw_data, 0x54, 0);
403
404 hw_set_dxx_reg(phw_data, 0x58, 0x30303030); // IQ_Alpha Changed
405
406 // a. Disable AGC
407 hw_get_dxx_reg(phw_data, REG_AGC_CTRL3, &reg_agc_ctrl3);
408 reg_agc_ctrl3 &= ~BIT(2);
409 reg_agc_ctrl3 |= (MASK_LNA_FIX_GAIN|MASK_AGC_FIX);
410 hw_set_dxx_reg(phw_data, REG_AGC_CTRL3, reg_agc_ctrl3);
411
412 hw_get_dxx_reg(phw_data, REG_AGC_CTRL5, &val);
413 val |= MASK_AGC_FIX_GAIN;
414 hw_set_dxx_reg(phw_data, REG_AGC_CTRL5, val);
415
416 // b. Turn off BB RX
417 hw_get_dxx_reg(phw_data, REG_A_ACQ_CTRL, &reg_a_acq_ctrl);
418 reg_a_acq_ctrl |= MASK_AMER_OFF_REG;
419 hw_set_dxx_reg(phw_data, REG_A_ACQ_CTRL, reg_a_acq_ctrl);
420
421 hw_get_dxx_reg(phw_data, REG_B_ACQ_CTRL, &reg_b_acq_ctrl);
422 reg_b_acq_ctrl |= MASK_BMER_OFF_REG;
423 hw_set_dxx_reg(phw_data, REG_B_ACQ_CTRL, reg_b_acq_ctrl);
424
425 // c. Make sure MAC is in receiving mode
426 // d. Turn ON ADC calibration
427 // - ADC calibrator is triggered by this signal rising from 0 to 1
428 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &val);
429 val &= ~MASK_ADC_DC_CAL_STR;
430 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, val);
431
432 val |= MASK_ADC_DC_CAL_STR;
433 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, val);
434 pa_stall_execution(US); // *MUST* wait for a while
435
436 // e. The result are shown in "adc_dc_cal_i[8:0] and adc_dc_cal_q[8:0]"
437#ifdef _DEBUG
438 hw_get_dxx_reg(phw_data, REG_OFFSET_READ, &val);
439 PHY_DEBUG(("[CAL] REG_OFFSET_READ = 0x%08X\n", val));
440
441 PHY_DEBUG(("[CAL] ** adc_dc_cal_i = %d (0x%04X)\n",
442 _s9_to_s32(val&0x000001FF), val&0x000001FF));
443 PHY_DEBUG(("[CAL] ** adc_dc_cal_q = %d (0x%04X)\n",
444 _s9_to_s32((val&0x0003FE00)>>9), (val&0x0003FE00)>>9));
445#endif
446
447 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &val);
448 val &= ~MASK_ADC_DC_CAL_STR;
449 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, val);
450
451 // f. Turn on BB RX
452 //hw_get_dxx_reg(phw_data, REG_A_ACQ_CTRL, &reg_a_acq_ctrl);
453 reg_a_acq_ctrl &= ~MASK_AMER_OFF_REG;
454 hw_set_dxx_reg(phw_data, REG_A_ACQ_CTRL, reg_a_acq_ctrl);
455
456 //hw_get_dxx_reg(phw_data, REG_B_ACQ_CTRL, &reg_b_acq_ctrl);
457 reg_b_acq_ctrl &= ~MASK_BMER_OFF_REG;
458 hw_set_dxx_reg(phw_data, REG_B_ACQ_CTRL, reg_b_acq_ctrl);
459
460 // g. Enable AGC
461 //hw_get_dxx_reg(phw_data, REG_AGC_CTRL3, &val);
462 reg_agc_ctrl3 |= BIT(2);
463 reg_agc_ctrl3 &= ~(MASK_LNA_FIX_GAIN|MASK_AGC_FIX);
464 hw_set_dxx_reg(phw_data, REG_AGC_CTRL3, reg_agc_ctrl3);
465}
466
467////////////////////////////////////////////////////////
468void _txidac_dc_offset_cancellation_winbond(hw_data_t *phw_data)
469{
470 u32 reg_agc_ctrl3;
471 u32 reg_mode_ctrl;
472 u32 reg_dc_cancel;
473 s32 iqcal_image_i;
474 s32 iqcal_image_q;
475 u32 sqsum;
476 s32 mag_0;
477 s32 mag_1;
478 s32 fix_cancel_dc_i = 0;
479 u32 val;
480 int loop;
481
482 PHY_DEBUG(("[CAL] -> [2]_txidac_dc_offset_cancellation()\n"));
483
484 // a. Set to "TX calibration mode"
485
486 //0x01 0xEE3FC2 ; 3B8FF ; Calibration (6a). enable TX IQ calibration loop circuits
487 phy_set_rf_data(phw_data, 1, (1<<24)|0xEE3FC2);
488 //0x0B 0x1905D6 ; 06417 ; Calibration (6b). enable TX I/Q cal loop squaring circuit
489 phy_set_rf_data(phw_data, 11, (11<<24)|0x1901D6);
490 //0x05 0x24C60A ; 09318 ; Calibration (6c). setting TX-VGA gain: TXGCH=2 & GPK=110 --> to be optimized
491 phy_set_rf_data(phw_data, 5, (5<<24)|0x24C48A);
492 //0x06 0x06880C ; 01A20 ; Calibration (6d). RXGCH=00; RXGCL=100 000 (RXVGA=32) --> to be optimized
493 phy_set_rf_data(phw_data, 6, (6<<24)|0x06890C);
494 //0x00 0xFDF1C0 ; 3F7C7 ; Calibration (6e). turn on IQ imbalance/Test mode
495 phy_set_rf_data(phw_data, 0, (0<<24)|0xFDF1C0);
496
497 hw_set_dxx_reg(phw_data, 0x58, 0x30303030); // IQ_Alpha Changed
498
499 // a. Disable AGC
500 hw_get_dxx_reg(phw_data, REG_AGC_CTRL3, &reg_agc_ctrl3);
501 reg_agc_ctrl3 &= ~BIT(2);
502 reg_agc_ctrl3 |= (MASK_LNA_FIX_GAIN|MASK_AGC_FIX);
503 hw_set_dxx_reg(phw_data, REG_AGC_CTRL3, reg_agc_ctrl3);
504
505 hw_get_dxx_reg(phw_data, REG_AGC_CTRL5, &val);
506 val |= MASK_AGC_FIX_GAIN;
507 hw_set_dxx_reg(phw_data, REG_AGC_CTRL5, val);
508
509 // b. set iqcal_mode[1:0] to 0x2 and set iqcal_tone[3:2] to 0
510 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
511
512 PHY_DEBUG(("[CAL] MODE_CTRL (read) = 0x%08X\n", reg_mode_ctrl));
513 reg_mode_ctrl &= ~(MASK_IQCAL_TONE_SEL|MASK_IQCAL_MODE);
514
515 // mode=2, tone=0
516 //reg_mode_ctrl |= (MASK_CALIB_START|2);
517
518 // mode=2, tone=1
519 //reg_mode_ctrl |= (MASK_CALIB_START|2|(1<<2));
520
521 // mode=2, tone=2
522 reg_mode_ctrl |= (MASK_CALIB_START|2|(2<<2));
523 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
524 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
525 pa_stall_execution(US);
526
527 hw_get_dxx_reg(phw_data, 0x5C, &reg_dc_cancel);
528 PHY_DEBUG(("[CAL] DC_CANCEL (read) = 0x%08X\n", reg_dc_cancel));
529
530 for (loop = 0; loop < LOOP_TIMES; loop++)
531 {
532 PHY_DEBUG(("[CAL] [%d.] ==================================\n", loop));
533
534 // c.
535 // reset cancel_dc_i[9:5] and cancel_dc_q[4:0] in register DC_Cancel
536 reg_dc_cancel &= ~(0x03FF);
537 PHY_DEBUG(("[CAL] DC_CANCEL (write) = 0x%08X\n", reg_dc_cancel));
538 hw_set_dxx_reg(phw_data, 0x5C, reg_dc_cancel);
539 pa_stall_execution(US);
540
541 hw_get_dxx_reg(phw_data, REG_CALIB_READ2, &val);
542 PHY_DEBUG(("[CAL] CALIB_READ2 = 0x%08X\n", val));
543
544 iqcal_image_i = _s13_to_s32(val & 0x00001FFF);
545 iqcal_image_q = _s13_to_s32((val & 0x03FFE000) >> 13);
546 sqsum = iqcal_image_i*iqcal_image_i + iqcal_image_q*iqcal_image_q;
547 mag_0 = (s32) _sqrt(sqsum);
548 PHY_DEBUG(("[CAL] mag_0=%d (iqcal_image_i=%d, iqcal_image_q=%d)\n",
549 mag_0, iqcal_image_i, iqcal_image_q));
550
551 // d.
552 reg_dc_cancel |= (1 << CANCEL_DC_I_SHIFT);
553 PHY_DEBUG(("[CAL] DC_CANCEL (write) = 0x%08X\n", reg_dc_cancel));
554 hw_set_dxx_reg(phw_data, 0x5C, reg_dc_cancel);
555 pa_stall_execution(US);
556
557 hw_get_dxx_reg(phw_data, REG_CALIB_READ2, &val);
558 PHY_DEBUG(("[CAL] CALIB_READ2 = 0x%08X\n", val));
559
560 iqcal_image_i = _s13_to_s32(val & 0x00001FFF);
561 iqcal_image_q = _s13_to_s32((val & 0x03FFE000) >> 13);
562 sqsum = iqcal_image_i*iqcal_image_i + iqcal_image_q*iqcal_image_q;
563 mag_1 = (s32) _sqrt(sqsum);
564 PHY_DEBUG(("[CAL] mag_1=%d (iqcal_image_i=%d, iqcal_image_q=%d)\n",
565 mag_1, iqcal_image_i, iqcal_image_q));
566
567 // e. Calculate the correct DC offset cancellation value for I
568 if (mag_0 != mag_1)
569 {
570 fix_cancel_dc_i = (mag_0*10000) / (mag_0*10000 - mag_1*10000);
571 }
572 else
573 {
574 if (mag_0 == mag_1)
575 {
576 PHY_DEBUG(("[CAL] ***** mag_0 = mag_1 !!\n"));
577 }
578
579 fix_cancel_dc_i = 0;
580 }
581
582 PHY_DEBUG(("[CAL] ** fix_cancel_dc_i = %d (0x%04X)\n",
583 fix_cancel_dc_i, _s32_to_s5(fix_cancel_dc_i)));
584
585 if ((abs(mag_1-mag_0)*6) > mag_0)
586 {
587 break;
588 }
589 }
590
591 if ( loop >= 19 )
592 fix_cancel_dc_i = 0;
593
594 reg_dc_cancel &= ~(0x03FF);
595 reg_dc_cancel |= (_s32_to_s5(fix_cancel_dc_i) << CANCEL_DC_I_SHIFT);
596 hw_set_dxx_reg(phw_data, 0x5C, reg_dc_cancel);
597 PHY_DEBUG(("[CAL] DC_CANCEL (write) = 0x%08X\n", reg_dc_cancel));
598
599 // g.
600 reg_mode_ctrl &= ~MASK_CALIB_START;
601 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
602 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
603 pa_stall_execution(US);
604}
605
606///////////////////////////////////////////////////////
607void _txqdac_dc_offset_cacellation_winbond(hw_data_t *phw_data)
608{
609 u32 reg_agc_ctrl3;
610 u32 reg_mode_ctrl;
611 u32 reg_dc_cancel;
612 s32 iqcal_image_i;
613 s32 iqcal_image_q;
614 u32 sqsum;
615 s32 mag_0;
616 s32 mag_1;
617 s32 fix_cancel_dc_q = 0;
618 u32 val;
619 int loop;
620
621 PHY_DEBUG(("[CAL] -> [3]_txqdac_dc_offset_cacellation()\n"));
622 //0x01 0xEE3FC2 ; 3B8FF ; Calibration (6a). enable TX IQ calibration loop circuits
623 phy_set_rf_data(phw_data, 1, (1<<24)|0xEE3FC2);
624 //0x0B 0x1905D6 ; 06417 ; Calibration (6b). enable TX I/Q cal loop squaring circuit
625 phy_set_rf_data(phw_data, 11, (11<<24)|0x1901D6);
626 //0x05 0x24C60A ; 09318 ; Calibration (6c). setting TX-VGA gain: TXGCH=2 & GPK=110 --> to be optimized
627 phy_set_rf_data(phw_data, 5, (5<<24)|0x24C48A);
628 //0x06 0x06880C ; 01A20 ; Calibration (6d). RXGCH=00; RXGCL=100 000 (RXVGA=32) --> to be optimized
629 phy_set_rf_data(phw_data, 6, (6<<24)|0x06890C);
630 //0x00 0xFDF1C0 ; 3F7C7 ; Calibration (6e). turn on IQ imbalance/Test mode
631 phy_set_rf_data(phw_data, 0, (0<<24)|0xFDF1C0);
632
633 hw_set_dxx_reg(phw_data, 0x58, 0x30303030); // IQ_Alpha Changed
634
635 // a. Disable AGC
636 hw_get_dxx_reg(phw_data, REG_AGC_CTRL3, &reg_agc_ctrl3);
637 reg_agc_ctrl3 &= ~BIT(2);
638 reg_agc_ctrl3 |= (MASK_LNA_FIX_GAIN|MASK_AGC_FIX);
639 hw_set_dxx_reg(phw_data, REG_AGC_CTRL3, reg_agc_ctrl3);
640
641 hw_get_dxx_reg(phw_data, REG_AGC_CTRL5, &val);
642 val |= MASK_AGC_FIX_GAIN;
643 hw_set_dxx_reg(phw_data, REG_AGC_CTRL5, val);
644
645 // a. set iqcal_mode[1:0] to 0x3 and set iqcal_tone[3:2] to 0
646 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
647 PHY_DEBUG(("[CAL] MODE_CTRL (read) = 0x%08X\n", reg_mode_ctrl));
648
649 //reg_mode_ctrl &= ~(MASK_IQCAL_TONE_SEL|MASK_IQCAL_MODE);
650 reg_mode_ctrl &= ~(MASK_IQCAL_MODE);
651 reg_mode_ctrl |= (MASK_CALIB_START|3);
652 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
653 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
654 pa_stall_execution(US);
655
656 hw_get_dxx_reg(phw_data, 0x5C, &reg_dc_cancel);
657 PHY_DEBUG(("[CAL] DC_CANCEL (read) = 0x%08X\n", reg_dc_cancel));
658
659 for (loop = 0; loop < LOOP_TIMES; loop++)
660 {
661 PHY_DEBUG(("[CAL] [%d.] ==================================\n", loop));
662
663 // b.
664 // reset cancel_dc_q[4:0] in register DC_Cancel
665 reg_dc_cancel &= ~(0x001F);
666 PHY_DEBUG(("[CAL] DC_CANCEL (write) = 0x%08X\n", reg_dc_cancel));
667 hw_set_dxx_reg(phw_data, 0x5C, reg_dc_cancel);
668 pa_stall_execution(US);
669
670 hw_get_dxx_reg(phw_data, REG_CALIB_READ2, &val);
671 PHY_DEBUG(("[CAL] CALIB_READ2 = 0x%08X\n", val));
672 pa_stall_execution(US);
673
674 iqcal_image_i = _s13_to_s32(val & 0x00001FFF);
675 iqcal_image_q = _s13_to_s32((val & 0x03FFE000) >> 13);
676 sqsum = iqcal_image_i*iqcal_image_i + iqcal_image_q*iqcal_image_q;
677 mag_0 = _sqrt(sqsum);
678 PHY_DEBUG(("[CAL] mag_0=%d (iqcal_image_i=%d, iqcal_image_q=%d)\n",
679 mag_0, iqcal_image_i, iqcal_image_q));
680
681 // c.
682 reg_dc_cancel |= (1 << CANCEL_DC_Q_SHIFT);
683 PHY_DEBUG(("[CAL] DC_CANCEL (write) = 0x%08X\n", reg_dc_cancel));
684 hw_set_dxx_reg(phw_data, 0x5C, reg_dc_cancel);
685 pa_stall_execution(US);
686
687 hw_get_dxx_reg(phw_data, REG_CALIB_READ2, &val);
688 PHY_DEBUG(("[CAL] CALIB_READ2 = 0x%08X\n", val));
689 pa_stall_execution(US);
690
691 iqcal_image_i = _s13_to_s32(val & 0x00001FFF);
692 iqcal_image_q = _s13_to_s32((val & 0x03FFE000) >> 13);
693 sqsum = iqcal_image_i*iqcal_image_i + iqcal_image_q*iqcal_image_q;
694 mag_1 = _sqrt(sqsum);
695 PHY_DEBUG(("[CAL] mag_1=%d (iqcal_image_i=%d, iqcal_image_q=%d)\n",
696 mag_1, iqcal_image_i, iqcal_image_q));
697
698 // d. Calculate the correct DC offset cancellation value for I
699 if (mag_0 != mag_1)
700 {
701 fix_cancel_dc_q = (mag_0*10000) / (mag_0*10000 - mag_1*10000);
702 }
703 else
704 {
705 if (mag_0 == mag_1)
706 {
707 PHY_DEBUG(("[CAL] ***** mag_0 = mag_1 !!\n"));
708 }
709
710 fix_cancel_dc_q = 0;
711 }
712
713 PHY_DEBUG(("[CAL] ** fix_cancel_dc_q = %d (0x%04X)\n",
714 fix_cancel_dc_q, _s32_to_s5(fix_cancel_dc_q)));
715
716 if ((abs(mag_1-mag_0)*6) > mag_0)
717 {
718 break;
719 }
720 }
721
722 if ( loop >= 19 )
723 fix_cancel_dc_q = 0;
724
725 reg_dc_cancel &= ~(0x001F);
726 reg_dc_cancel |= (_s32_to_s5(fix_cancel_dc_q) << CANCEL_DC_Q_SHIFT);
727 hw_set_dxx_reg(phw_data, 0x5C, reg_dc_cancel);
728 PHY_DEBUG(("[CAL] DC_CANCEL (write) = 0x%08X\n", reg_dc_cancel));
729
730
731 // f.
732 reg_mode_ctrl &= ~MASK_CALIB_START;
733 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
734 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
735 pa_stall_execution(US);
736}
737
738//20060612.1.a 20060718.1 Modify
739u8 _tx_iq_calibration_loop_winbond(hw_data_t *phw_data,
740 s32 a_2_threshold,
741 s32 b_2_threshold)
742{
743 u32 reg_mode_ctrl;
744 s32 iq_mag_0_tx;
745 s32 iqcal_tone_i0;
746 s32 iqcal_tone_q0;
747 s32 iqcal_tone_i;
748 s32 iqcal_tone_q;
749 u32 sqsum;
750 s32 rot_i_b;
751 s32 rot_q_b;
752 s32 tx_cal_flt_b[4];
753 s32 tx_cal[4];
754 s32 tx_cal_reg[4];
755 s32 a_2, b_2;
756 s32 sin_b, sin_2b;
757 s32 cos_b, cos_2b;
758 s32 divisor;
759 s32 temp1, temp2;
760 u32 val;
761 u16 loop;
762 s32 iqcal_tone_i_avg,iqcal_tone_q_avg;
763 u8 verify_count;
764 int capture_time;
765
766 PHY_DEBUG(("[CAL] -> _tx_iq_calibration_loop()\n"));
767 PHY_DEBUG(("[CAL] ** a_2_threshold = %d\n", a_2_threshold));
768 PHY_DEBUG(("[CAL] ** b_2_threshold = %d\n", b_2_threshold));
769
770 verify_count = 0;
771
772 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
773 PHY_DEBUG(("[CAL] MODE_CTRL (read) = 0x%08X\n", reg_mode_ctrl));
774
775 loop = LOOP_TIMES;
776
777 while (loop > 0)
778 {
779 PHY_DEBUG(("[CAL] [%d.] <_tx_iq_calibration_loop>\n", (LOOP_TIMES-loop+1)));
780
781 iqcal_tone_i_avg=0;
782 iqcal_tone_q_avg=0;
783 if( !hw_set_dxx_reg(phw_data, 0x3C, 0x00) ) // 20060718.1 modify
784 return 0;
785 for(capture_time=0;capture_time<10;capture_time++)
786 {
787 // a. Set iqcal_mode[1:0] to 0x2 and set "calib_start" to 0x1 to
788 // enable "IQ alibration Mode II"
789 reg_mode_ctrl &= ~(MASK_IQCAL_TONE_SEL|MASK_IQCAL_MODE);
790 reg_mode_ctrl &= ~MASK_IQCAL_MODE;
791 reg_mode_ctrl |= (MASK_CALIB_START|0x02);
792 reg_mode_ctrl |= (MASK_CALIB_START|0x02|2<<2);
793 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
794 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
795 pa_stall_execution(US);
796
797 // b.
798 hw_get_dxx_reg(phw_data, REG_CALIB_READ1, &val);
799 PHY_DEBUG(("[CAL] CALIB_READ1 = 0x%08X\n", val));
800 pa_stall_execution(US);
801
802 iqcal_tone_i0 = _s13_to_s32(val & 0x00001FFF);
803 iqcal_tone_q0 = _s13_to_s32((val & 0x03FFE000) >> 13);
804 PHY_DEBUG(("[CAL] ** iqcal_tone_i0=%d, iqcal_tone_q0=%d\n",
805 iqcal_tone_i0, iqcal_tone_q0));
806
807 sqsum = iqcal_tone_i0*iqcal_tone_i0 +
808 iqcal_tone_q0*iqcal_tone_q0;
809 iq_mag_0_tx = (s32) _sqrt(sqsum);
810 PHY_DEBUG(("[CAL] ** iq_mag_0_tx=%d\n", iq_mag_0_tx));
811
812 // c. Set "calib_start" to 0x0
813 reg_mode_ctrl &= ~MASK_CALIB_START;
814 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
815 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
816 pa_stall_execution(US);
817
818 // d. Set iqcal_mode[1:0] to 0x3 and set "calib_start" to 0x1 to
819 // enable "IQ alibration Mode II"
820 //hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &val);
821 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
822 reg_mode_ctrl &= ~MASK_IQCAL_MODE;
823 reg_mode_ctrl |= (MASK_CALIB_START|0x03);
824 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
825 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
826 pa_stall_execution(US);
827
828 // e.
829 hw_get_dxx_reg(phw_data, REG_CALIB_READ1, &val);
830 PHY_DEBUG(("[CAL] CALIB_READ1 = 0x%08X\n", val));
831 pa_stall_execution(US);
832
833 iqcal_tone_i = _s13_to_s32(val & 0x00001FFF);
834 iqcal_tone_q = _s13_to_s32((val & 0x03FFE000) >> 13);
835 PHY_DEBUG(("[CAL] ** iqcal_tone_i = %d, iqcal_tone_q = %d\n",
836 iqcal_tone_i, iqcal_tone_q));
837 if( capture_time == 0)
838 {
839 continue;
840 }
841 else
842 {
843 iqcal_tone_i_avg=( iqcal_tone_i_avg*(capture_time-1) +iqcal_tone_i)/capture_time;
844 iqcal_tone_q_avg=( iqcal_tone_q_avg*(capture_time-1) +iqcal_tone_q)/capture_time;
845 }
846 }
847
848 iqcal_tone_i = iqcal_tone_i_avg;
849 iqcal_tone_q = iqcal_tone_q_avg;
850
851
852 rot_i_b = (iqcal_tone_i * iqcal_tone_i0 +
853 iqcal_tone_q * iqcal_tone_q0) / 1024;
854 rot_q_b = (iqcal_tone_i * iqcal_tone_q0 * (-1) +
855 iqcal_tone_q * iqcal_tone_i0) / 1024;
856 PHY_DEBUG(("[CAL] ** rot_i_b = %d, rot_q_b = %d\n",
857 rot_i_b, rot_q_b));
858
859 // f.
860 divisor = ((iq_mag_0_tx * iq_mag_0_tx * 2)/1024 - rot_i_b) * 2;
861
862 if (divisor == 0)
863 {
864 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> ERROR *******\n"));
865 PHY_DEBUG(("[CAL] ** divisor=0 to calculate EPS and THETA !!\n"));
866 PHY_DEBUG(("[CAL] ******************************************\n"));
867 break;
868 }
869
870 a_2 = (rot_i_b * 32768) / divisor;
871 b_2 = (rot_q_b * (-32768)) / divisor;
872 PHY_DEBUG(("[CAL] ***** EPSILON/2 = %d\n", a_2));
873 PHY_DEBUG(("[CAL] ***** THETA/2 = %d\n", b_2));
874
875 phw_data->iq_rsdl_gain_tx_d2 = a_2;
876 phw_data->iq_rsdl_phase_tx_d2 = b_2;
877
878 //if ((abs(a_2) < 150) && (abs(b_2) < 100))
879 //if ((abs(a_2) < 200) && (abs(b_2) < 200))
880 if ((abs(a_2) < a_2_threshold) && (abs(b_2) < b_2_threshold))
881 {
882 verify_count++;
883
884 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> *************\n"));
885 PHY_DEBUG(("[CAL] ** VERIFY OK # %d !!\n", verify_count));
886 PHY_DEBUG(("[CAL] ******************************************\n"));
887
888 if (verify_count > 2)
889 {
890 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> *********\n"));
891 PHY_DEBUG(("[CAL] ** TX_IQ_CALIBRATION (EPS,THETA) OK !!\n"));
892 PHY_DEBUG(("[CAL] **************************************\n"));
893 return 0;
894 }
895
896 continue;
897 }
898 else
899 {
900 verify_count = 0;
901 }
902
903 _sin_cos(b_2, &sin_b, &cos_b);
904 _sin_cos(b_2*2, &sin_2b, &cos_2b);
905 PHY_DEBUG(("[CAL] ** sin(b/2)=%d, cos(b/2)=%d\n", sin_b, cos_b));
906 PHY_DEBUG(("[CAL] ** sin(b)=%d, cos(b)=%d\n", sin_2b, cos_2b));
907
908 if (cos_2b == 0)
909 {
910 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> ERROR *******\n"));
911 PHY_DEBUG(("[CAL] ** cos(b)=0 !!\n"));
912 PHY_DEBUG(("[CAL] ******************************************\n"));
913 break;
914 }
915
916 // 1280 * 32768 = 41943040
917 temp1 = (41943040/cos_2b)*cos_b;
918
919 //temp2 = (41943040/cos_2b)*sin_b*(-1);
920 if (phw_data->revision == 0x2002) // 1st-cut
921 {
922 temp2 = (41943040/cos_2b)*sin_b*(-1);
923 }
924 else // 2nd-cut
925 {
926 temp2 = (41943040*4/cos_2b)*sin_b*(-1);
927 }
928
929 tx_cal_flt_b[0] = _floor(temp1/(32768+a_2));
930 tx_cal_flt_b[1] = _floor(temp2/(32768+a_2));
931 tx_cal_flt_b[2] = _floor(temp2/(32768-a_2));
932 tx_cal_flt_b[3] = _floor(temp1/(32768-a_2));
933 PHY_DEBUG(("[CAL] ** tx_cal_flt_b[0] = %d\n", tx_cal_flt_b[0]));
934 PHY_DEBUG(("[CAL] tx_cal_flt_b[1] = %d\n", tx_cal_flt_b[1]));
935 PHY_DEBUG(("[CAL] tx_cal_flt_b[2] = %d\n", tx_cal_flt_b[2]));
936 PHY_DEBUG(("[CAL] tx_cal_flt_b[3] = %d\n", tx_cal_flt_b[3]));
937
938 tx_cal[2] = tx_cal_flt_b[2];
939 tx_cal[2] = tx_cal[2] +3;
940 tx_cal[1] = tx_cal[2];
941 tx_cal[3] = tx_cal_flt_b[3] - 128;
942 tx_cal[0] = -tx_cal[3]+1;
943
944 PHY_DEBUG(("[CAL] tx_cal[0] = %d\n", tx_cal[0]));
945 PHY_DEBUG(("[CAL] tx_cal[1] = %d\n", tx_cal[1]));
946 PHY_DEBUG(("[CAL] tx_cal[2] = %d\n", tx_cal[2]));
947 PHY_DEBUG(("[CAL] tx_cal[3] = %d\n", tx_cal[3]));
948
949 //if ((tx_cal[0] == 0) && (tx_cal[1] == 0) &&
950 // (tx_cal[2] == 0) && (tx_cal[3] == 0))
951 //{
952 // PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> *************\n"));
953 // PHY_DEBUG(("[CAL] ** TX_IQ_CALIBRATION COMPLETE !!\n"));
954 // PHY_DEBUG(("[CAL] ******************************************\n"));
955 // return 0;
956 //}
957
958 // g.
959 if (phw_data->revision == 0x2002) // 1st-cut
960 {
961 hw_get_dxx_reg(phw_data, 0x54, &val);
962 PHY_DEBUG(("[CAL] ** 0x54 = 0x%08X\n", val));
963 tx_cal_reg[0] = _s4_to_s32((val & 0xF0000000) >> 28);
964 tx_cal_reg[1] = _s4_to_s32((val & 0x0F000000) >> 24);
965 tx_cal_reg[2] = _s4_to_s32((val & 0x00F00000) >> 20);
966 tx_cal_reg[3] = _s4_to_s32((val & 0x000F0000) >> 16);
967 }
968 else // 2nd-cut
969 {
970 hw_get_dxx_reg(phw_data, 0x3C, &val);
971 PHY_DEBUG(("[CAL] ** 0x3C = 0x%08X\n", val));
972 tx_cal_reg[0] = _s5_to_s32((val & 0xF8000000) >> 27);
973 tx_cal_reg[1] = _s6_to_s32((val & 0x07E00000) >> 21);
974 tx_cal_reg[2] = _s6_to_s32((val & 0x001F8000) >> 15);
975 tx_cal_reg[3] = _s5_to_s32((val & 0x00007C00) >> 10);
976
977 }
978
979 PHY_DEBUG(("[CAL] ** tx_cal_reg[0] = %d\n", tx_cal_reg[0]));
980 PHY_DEBUG(("[CAL] tx_cal_reg[1] = %d\n", tx_cal_reg[1]));
981 PHY_DEBUG(("[CAL] tx_cal_reg[2] = %d\n", tx_cal_reg[2]));
982 PHY_DEBUG(("[CAL] tx_cal_reg[3] = %d\n", tx_cal_reg[3]));
983
984 if (phw_data->revision == 0x2002) // 1st-cut
985 {
986 if (((tx_cal_reg[0]==7) || (tx_cal_reg[0]==(-8))) &&
987 ((tx_cal_reg[3]==7) || (tx_cal_reg[3]==(-8))))
988 {
989 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> *********\n"));
990 PHY_DEBUG(("[CAL] ** TX_IQ_CALIBRATION SATUATION !!\n"));
991 PHY_DEBUG(("[CAL] **************************************\n"));
992 break;
993 }
994 }
995 else // 2nd-cut
996 {
997 if (((tx_cal_reg[0]==31) || (tx_cal_reg[0]==(-32))) &&
998 ((tx_cal_reg[3]==31) || (tx_cal_reg[3]==(-32))))
999 {
1000 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration_loop> *********\n"));
1001 PHY_DEBUG(("[CAL] ** TX_IQ_CALIBRATION SATUATION !!\n"));
1002 PHY_DEBUG(("[CAL] **************************************\n"));
1003 break;
1004 }
1005 }
1006
1007 tx_cal[0] = tx_cal[0] + tx_cal_reg[0];
1008 tx_cal[1] = tx_cal[1] + tx_cal_reg[1];
1009 tx_cal[2] = tx_cal[2] + tx_cal_reg[2];
1010 tx_cal[3] = tx_cal[3] + tx_cal_reg[3];
1011 PHY_DEBUG(("[CAL] ** apply tx_cal[0] = %d\n", tx_cal[0]));
1012 PHY_DEBUG(("[CAL] apply tx_cal[1] = %d\n", tx_cal[1]));
1013 PHY_DEBUG(("[CAL] apply tx_cal[2] = %d\n", tx_cal[2]));
1014 PHY_DEBUG(("[CAL] apply tx_cal[3] = %d\n", tx_cal[3]));
1015
1016 if (phw_data->revision == 0x2002) // 1st-cut
1017 {
1018 val &= 0x0000FFFF;
1019 val |= ((_s32_to_s4(tx_cal[0]) << 28)|
1020 (_s32_to_s4(tx_cal[1]) << 24)|
1021 (_s32_to_s4(tx_cal[2]) << 20)|
1022 (_s32_to_s4(tx_cal[3]) << 16));
1023 hw_set_dxx_reg(phw_data, 0x54, val);
1024 PHY_DEBUG(("[CAL] ** CALIB_DATA = 0x%08X\n", val));
1025 return 0;
1026 }
1027 else // 2nd-cut
1028 {
1029 val &= 0x000003FF;
1030 val |= ((_s32_to_s5(tx_cal[0]) << 27)|
1031 (_s32_to_s6(tx_cal[1]) << 21)|
1032 (_s32_to_s6(tx_cal[2]) << 15)|
1033 (_s32_to_s5(tx_cal[3]) << 10));
1034 hw_set_dxx_reg(phw_data, 0x3C, val);
1035 PHY_DEBUG(("[CAL] ** TX_IQ_CALIBRATION = 0x%08X\n", val));
1036 return 0;
1037 }
1038
1039 // i. Set "calib_start" to 0x0
1040 reg_mode_ctrl &= ~MASK_CALIB_START;
1041 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
1042 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
1043
1044 loop--;
1045 }
1046
1047 return 1;
1048}
1049
1050void _tx_iq_calibration_winbond(hw_data_t *phw_data)
1051{
1052 u32 reg_agc_ctrl3;
1053#ifdef _DEBUG
1054 s32 tx_cal_reg[4];
1055
1056#endif
1057 u32 reg_mode_ctrl;
1058 u32 val;
1059 u8 result;
1060
1061 PHY_DEBUG(("[CAL] -> [4]_tx_iq_calibration()\n"));
1062
1063 //0x01 0xEE3FC2 ; 3B8FF ; Calibration (6a). enable TX IQ calibration loop circuits
1064 phy_set_rf_data(phw_data, 1, (1<<24)|0xEE3FC2);
1065 //0x0B 0x1905D6 ; 06417 ; Calibration (6b). enable TX I/Q cal loop squaring circuit
1066 phy_set_rf_data(phw_data, 11, (11<<24)|0x19BDD6); // 20060612.1.a 0x1905D6);
1067 //0x05 0x24C60A ; 09318 ; Calibration (6c). setting TX-VGA gain: TXGCH=2 & GPK=110 --> to be optimized
1068 phy_set_rf_data(phw_data, 5, (5<<24)|0x24C60A); //0x24C60A (high temperature)
1069 //0x06 0x06880C ; 01A20 ; Calibration (6d). RXGCH=00; RXGCL=100 000 (RXVGA=32) --> to be optimized
1070 phy_set_rf_data(phw_data, 6, (6<<24)|0x34880C); // 20060612.1.a 0x06890C);
1071 //0x00 0xFDF1C0 ; 3F7C7 ; Calibration (6e). turn on IQ imbalance/Test mode
1072 phy_set_rf_data(phw_data, 0, (0<<24)|0xFDF1C0);
1073 //; [BB-chip]: Calibration (6f).Send test pattern
1074 //; [BB-chip]: Calibration (6g). Search RXGCL optimal value
1075 //; [BB-chip]: Calibration (6h). Caculate TX-path IQ imbalance and setting TX path IQ compensation table
1076 //phy_set_rf_data(phw_data, 3, (3<<24)|0x025586);
1077
1078 OS_SLEEP(30000); // 20060612.1.a 30ms delay. Add the follow 2 lines
1079 //To adjust TXVGA to fit iq_mag_0 range from 1250 ~ 1750
1080 adjust_TXVGA_for_iq_mag( phw_data );
1081
1082 // a. Disable AGC
1083 hw_get_dxx_reg(phw_data, REG_AGC_CTRL3, &reg_agc_ctrl3);
1084 reg_agc_ctrl3 &= ~BIT(2);
1085 reg_agc_ctrl3 |= (MASK_LNA_FIX_GAIN|MASK_AGC_FIX);
1086 hw_set_dxx_reg(phw_data, REG_AGC_CTRL3, reg_agc_ctrl3);
1087
1088 hw_get_dxx_reg(phw_data, REG_AGC_CTRL5, &val);
1089 val |= MASK_AGC_FIX_GAIN;
1090 hw_set_dxx_reg(phw_data, REG_AGC_CTRL5, val);
1091
1092 result = _tx_iq_calibration_loop_winbond(phw_data, 150, 100);
1093
1094 if (result > 0)
1095 {
1096 if (phw_data->revision == 0x2002) // 1st-cut
1097 {
1098 hw_get_dxx_reg(phw_data, 0x54, &val);
1099 val &= 0x0000FFFF;
1100 hw_set_dxx_reg(phw_data, 0x54, val);
1101 }
1102 else // 2nd-cut
1103 {
1104 hw_get_dxx_reg(phw_data, 0x3C, &val);
1105 val &= 0x000003FF;
1106 hw_set_dxx_reg(phw_data, 0x3C, val);
1107 }
1108
1109 result = _tx_iq_calibration_loop_winbond(phw_data, 300, 200);
1110
1111 if (result > 0)
1112 {
1113 if (phw_data->revision == 0x2002) // 1st-cut
1114 {
1115 hw_get_dxx_reg(phw_data, 0x54, &val);
1116 val &= 0x0000FFFF;
1117 hw_set_dxx_reg(phw_data, 0x54, val);
1118 }
1119 else // 2nd-cut
1120 {
1121 hw_get_dxx_reg(phw_data, 0x3C, &val);
1122 val &= 0x000003FF;
1123 hw_set_dxx_reg(phw_data, 0x3C, val);
1124 }
1125
1126 result = _tx_iq_calibration_loop_winbond(phw_data, 500, 400);
1127 if (result > 0)
1128 {
1129 if (phw_data->revision == 0x2002) // 1st-cut
1130 {
1131 hw_get_dxx_reg(phw_data, 0x54, &val);
1132 val &= 0x0000FFFF;
1133 hw_set_dxx_reg(phw_data, 0x54, val);
1134 }
1135 else // 2nd-cut
1136 {
1137 hw_get_dxx_reg(phw_data, 0x3C, &val);
1138 val &= 0x000003FF;
1139 hw_set_dxx_reg(phw_data, 0x3C, val);
1140 }
1141
1142
1143 result = _tx_iq_calibration_loop_winbond(phw_data, 700, 500);
1144
1145 if (result > 0)
1146 {
1147 PHY_DEBUG(("[CAL] ** <_tx_iq_calibration> **************\n"));
1148 PHY_DEBUG(("[CAL] ** TX_IQ_CALIBRATION FAILURE !!\n"));
1149 PHY_DEBUG(("[CAL] **************************************\n"));
1150
1151 if (phw_data->revision == 0x2002) // 1st-cut
1152 {
1153 hw_get_dxx_reg(phw_data, 0x54, &val);
1154 val &= 0x0000FFFF;
1155 hw_set_dxx_reg(phw_data, 0x54, val);
1156 }
1157 else // 2nd-cut
1158 {
1159 hw_get_dxx_reg(phw_data, 0x3C, &val);
1160 val &= 0x000003FF;
1161 hw_set_dxx_reg(phw_data, 0x3C, val);
1162 }
1163 }
1164 }
1165 }
1166 }
1167
1168 // i. Set "calib_start" to 0x0
1169 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
1170 reg_mode_ctrl &= ~MASK_CALIB_START;
1171 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
1172 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
1173
1174 // g. Enable AGC
1175 //hw_get_dxx_reg(phw_data, REG_AGC_CTRL3, &val);
1176 reg_agc_ctrl3 |= BIT(2);
1177 reg_agc_ctrl3 &= ~(MASK_LNA_FIX_GAIN|MASK_AGC_FIX);
1178 hw_set_dxx_reg(phw_data, REG_AGC_CTRL3, reg_agc_ctrl3);
1179
1180#ifdef _DEBUG
1181 if (phw_data->revision == 0x2002) // 1st-cut
1182 {
1183 hw_get_dxx_reg(phw_data, 0x54, &val);
1184 PHY_DEBUG(("[CAL] ** 0x54 = 0x%08X\n", val));
1185 tx_cal_reg[0] = _s4_to_s32((val & 0xF0000000) >> 28);
1186 tx_cal_reg[1] = _s4_to_s32((val & 0x0F000000) >> 24);
1187 tx_cal_reg[2] = _s4_to_s32((val & 0x00F00000) >> 20);
1188 tx_cal_reg[3] = _s4_to_s32((val & 0x000F0000) >> 16);
1189 }
1190 else // 2nd-cut
1191 {
1192 hw_get_dxx_reg(phw_data, 0x3C, &val);
1193 PHY_DEBUG(("[CAL] ** 0x3C = 0x%08X\n", val));
1194 tx_cal_reg[0] = _s5_to_s32((val & 0xF8000000) >> 27);
1195 tx_cal_reg[1] = _s6_to_s32((val & 0x07E00000) >> 21);
1196 tx_cal_reg[2] = _s6_to_s32((val & 0x001F8000) >> 15);
1197 tx_cal_reg[3] = _s5_to_s32((val & 0x00007C00) >> 10);
1198
1199 }
1200
1201 PHY_DEBUG(("[CAL] ** tx_cal_reg[0] = %d\n", tx_cal_reg[0]));
1202 PHY_DEBUG(("[CAL] tx_cal_reg[1] = %d\n", tx_cal_reg[1]));
1203 PHY_DEBUG(("[CAL] tx_cal_reg[2] = %d\n", tx_cal_reg[2]));
1204 PHY_DEBUG(("[CAL] tx_cal_reg[3] = %d\n", tx_cal_reg[3]));
1205#endif
1206
1207
1208 // for test - BEN
1209 // RF Control Override
1210}
1211
1212/////////////////////////////////////////////////////////////////////////////////////////
1213u8 _rx_iq_calibration_loop_winbond(hw_data_t *phw_data, u16 factor, u32 frequency)
1214{
1215 u32 reg_mode_ctrl;
1216 s32 iqcal_tone_i;
1217 s32 iqcal_tone_q;
1218 s32 iqcal_image_i;
1219 s32 iqcal_image_q;
1220 s32 rot_tone_i_b;
1221 s32 rot_tone_q_b;
1222 s32 rot_image_i_b;
1223 s32 rot_image_q_b;
1224 s32 rx_cal_flt_b[4];
1225 s32 rx_cal[4];
1226 s32 rx_cal_reg[4];
1227 s32 a_2, b_2;
1228 s32 sin_b, sin_2b;
1229 s32 cos_b, cos_2b;
1230 s32 temp1, temp2;
1231 u32 val;
1232 u16 loop;
1233
1234 u32 pwr_tone;
1235 u32 pwr_image;
1236 u8 verify_count;
1237
1238 s32 iqcal_tone_i_avg,iqcal_tone_q_avg;
1239 s32 iqcal_image_i_avg,iqcal_image_q_avg;
1240 u16 capture_time;
1241
1242 PHY_DEBUG(("[CAL] -> [5]_rx_iq_calibration_loop()\n"));
1243 PHY_DEBUG(("[CAL] ** factor = %d\n", factor));
1244
1245
1246// RF Control Override
1247 hw_get_cxx_reg(phw_data, 0x80, &val);
1248 val |= BIT(19);
1249 hw_set_cxx_reg(phw_data, 0x80, val);
1250
1251// RF_Ctrl
1252 hw_get_cxx_reg(phw_data, 0xE4, &val);
1253 val |= BIT(0);
1254 hw_set_cxx_reg(phw_data, 0xE4, val);
1255 PHY_DEBUG(("[CAL] ** RF_CTRL(0xE4) = 0x%08X", val));
1256
1257 hw_set_dxx_reg(phw_data, 0x58, 0x44444444); // IQ_Alpha
1258
1259 // b.
1260
1261 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
1262 PHY_DEBUG(("[CAL] MODE_CTRL (read) = 0x%08X\n", reg_mode_ctrl));
1263
1264 verify_count = 0;
1265
1266 //for (loop = 0; loop < 1; loop++)
1267 //for (loop = 0; loop < LOOP_TIMES; loop++)
1268 loop = LOOP_TIMES;
1269 while (loop > 0)
1270 {
1271 PHY_DEBUG(("[CAL] [%d.] <_rx_iq_calibration_loop>\n", (LOOP_TIMES-loop+1)));
1272 iqcal_tone_i_avg=0;
1273 iqcal_tone_q_avg=0;
1274 iqcal_image_i_avg=0;
1275 iqcal_image_q_avg=0;
1276 capture_time=0;
1277
1278 for(capture_time=0; capture_time<10; capture_time++)
1279 {
1280 // i. Set "calib_start" to 0x0
1281 reg_mode_ctrl &= ~MASK_CALIB_START;
1282 if( !hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl) )//20060718.1 modify
1283 return 0;
1284 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
1285 pa_stall_execution(US);
1286
1287 reg_mode_ctrl &= ~MASK_IQCAL_MODE;
1288 reg_mode_ctrl |= (MASK_CALIB_START|0x1);
1289 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
1290 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
1291 pa_stall_execution(US); //Should be read out after 450us
1292
1293 // c.
1294 hw_get_dxx_reg(phw_data, REG_CALIB_READ1, &val);
1295 PHY_DEBUG(("[CAL] CALIB_READ1 = 0x%08X\n", val));
1296
1297 iqcal_tone_i = _s13_to_s32(val & 0x00001FFF);
1298 iqcal_tone_q = _s13_to_s32((val & 0x03FFE000) >> 13);
1299 PHY_DEBUG(("[CAL] ** iqcal_tone_i = %d, iqcal_tone_q = %d\n",
1300 iqcal_tone_i, iqcal_tone_q));
1301
1302 hw_get_dxx_reg(phw_data, REG_CALIB_READ2, &val);
1303 PHY_DEBUG(("[CAL] CALIB_READ2 = 0x%08X\n", val));
1304
1305 iqcal_image_i = _s13_to_s32(val & 0x00001FFF);
1306 iqcal_image_q = _s13_to_s32((val & 0x03FFE000) >> 13);
1307 PHY_DEBUG(("[CAL] ** iqcal_image_i = %d, iqcal_image_q = %d\n",
1308 iqcal_image_i, iqcal_image_q));
1309 if( capture_time == 0)
1310 {
1311 continue;
1312 }
1313 else
1314 {
1315 iqcal_image_i_avg=( iqcal_image_i_avg*(capture_time-1) +iqcal_image_i)/capture_time;
1316 iqcal_image_q_avg=( iqcal_image_q_avg*(capture_time-1) +iqcal_image_q)/capture_time;
1317 iqcal_tone_i_avg=( iqcal_tone_i_avg*(capture_time-1) +iqcal_tone_i)/capture_time;
1318 iqcal_tone_q_avg=( iqcal_tone_q_avg*(capture_time-1) +iqcal_tone_q)/capture_time;
1319 }
1320 }
1321
1322
1323 iqcal_image_i = iqcal_image_i_avg;
1324 iqcal_image_q = iqcal_image_q_avg;
1325 iqcal_tone_i = iqcal_tone_i_avg;
1326 iqcal_tone_q = iqcal_tone_q_avg;
1327
1328 // d.
1329 rot_tone_i_b = (iqcal_tone_i * iqcal_tone_i +
1330 iqcal_tone_q * iqcal_tone_q) / 1024;
1331 rot_tone_q_b = (iqcal_tone_i * iqcal_tone_q * (-1) +
1332 iqcal_tone_q * iqcal_tone_i) / 1024;
1333 rot_image_i_b = (iqcal_image_i * iqcal_tone_i -
1334 iqcal_image_q * iqcal_tone_q) / 1024;
1335 rot_image_q_b = (iqcal_image_i * iqcal_tone_q +
1336 iqcal_image_q * iqcal_tone_i) / 1024;
1337
1338 PHY_DEBUG(("[CAL] ** rot_tone_i_b = %d\n", rot_tone_i_b));
1339 PHY_DEBUG(("[CAL] ** rot_tone_q_b = %d\n", rot_tone_q_b));
1340 PHY_DEBUG(("[CAL] ** rot_image_i_b = %d\n", rot_image_i_b));
1341 PHY_DEBUG(("[CAL] ** rot_image_q_b = %d\n", rot_image_q_b));
1342
1343 // f.
1344 if (rot_tone_i_b == 0)
1345 {
1346 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration_loop> ERROR *******\n"));
1347 PHY_DEBUG(("[CAL] ** rot_tone_i_b=0 to calculate EPS and THETA !!\n"));
1348 PHY_DEBUG(("[CAL] ******************************************\n"));
1349 break;
1350 }
1351
1352 a_2 = (rot_image_i_b * 32768) / rot_tone_i_b -
1353 phw_data->iq_rsdl_gain_tx_d2;
1354 b_2 = (rot_image_q_b * 32768) / rot_tone_i_b -
1355 phw_data->iq_rsdl_phase_tx_d2;
1356
1357 PHY_DEBUG(("[CAL] ** iq_rsdl_gain_tx_d2 = %d\n", phw_data->iq_rsdl_gain_tx_d2));
1358 PHY_DEBUG(("[CAL] ** iq_rsdl_phase_tx_d2= %d\n", phw_data->iq_rsdl_phase_tx_d2));
1359 PHY_DEBUG(("[CAL] ***** EPSILON/2 = %d\n", a_2));
1360 PHY_DEBUG(("[CAL] ***** THETA/2 = %d\n", b_2));
1361
1362 _sin_cos(b_2, &sin_b, &cos_b);
1363 _sin_cos(b_2*2, &sin_2b, &cos_2b);
1364 PHY_DEBUG(("[CAL] ** sin(b/2)=%d, cos(b/2)=%d\n", sin_b, cos_b));
1365 PHY_DEBUG(("[CAL] ** sin(b)=%d, cos(b)=%d\n", sin_2b, cos_2b));
1366
1367 if (cos_2b == 0)
1368 {
1369 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration_loop> ERROR *******\n"));
1370 PHY_DEBUG(("[CAL] ** cos(b)=0 !!\n"));
1371 PHY_DEBUG(("[CAL] ******************************************\n"));
1372 break;
1373 }
1374
1375 // 1280 * 32768 = 41943040
1376 temp1 = (41943040/cos_2b)*cos_b;
1377
1378 //temp2 = (41943040/cos_2b)*sin_b*(-1);
1379 if (phw_data->revision == 0x2002) // 1st-cut
1380 {
1381 temp2 = (41943040/cos_2b)*sin_b*(-1);
1382 }
1383 else // 2nd-cut
1384 {
1385 temp2 = (41943040*4/cos_2b)*sin_b*(-1);
1386 }
1387
1388 rx_cal_flt_b[0] = _floor(temp1/(32768+a_2));
1389 rx_cal_flt_b[1] = _floor(temp2/(32768-a_2));
1390 rx_cal_flt_b[2] = _floor(temp2/(32768+a_2));
1391 rx_cal_flt_b[3] = _floor(temp1/(32768-a_2));
1392
1393 PHY_DEBUG(("[CAL] ** rx_cal_flt_b[0] = %d\n", rx_cal_flt_b[0]));
1394 PHY_DEBUG(("[CAL] rx_cal_flt_b[1] = %d\n", rx_cal_flt_b[1]));
1395 PHY_DEBUG(("[CAL] rx_cal_flt_b[2] = %d\n", rx_cal_flt_b[2]));
1396 PHY_DEBUG(("[CAL] rx_cal_flt_b[3] = %d\n", rx_cal_flt_b[3]));
1397
1398 rx_cal[0] = rx_cal_flt_b[0] - 128;
1399 rx_cal[1] = rx_cal_flt_b[1];
1400 rx_cal[2] = rx_cal_flt_b[2];
1401 rx_cal[3] = rx_cal_flt_b[3] - 128;
1402 PHY_DEBUG(("[CAL] ** rx_cal[0] = %d\n", rx_cal[0]));
1403 PHY_DEBUG(("[CAL] rx_cal[1] = %d\n", rx_cal[1]));
1404 PHY_DEBUG(("[CAL] rx_cal[2] = %d\n", rx_cal[2]));
1405 PHY_DEBUG(("[CAL] rx_cal[3] = %d\n", rx_cal[3]));
1406
1407 // e.
1408 pwr_tone = (iqcal_tone_i*iqcal_tone_i + iqcal_tone_q*iqcal_tone_q);
1409 pwr_image = (iqcal_image_i*iqcal_image_i + iqcal_image_q*iqcal_image_q)*factor;
1410
1411 PHY_DEBUG(("[CAL] ** pwr_tone = %d\n", pwr_tone));
1412 PHY_DEBUG(("[CAL] ** pwr_image = %d\n", pwr_image));
1413
1414 if (pwr_tone > pwr_image)
1415 {
1416 verify_count++;
1417
1418 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration_loop> *************\n"));
1419 PHY_DEBUG(("[CAL] ** VERIFY OK # %d !!\n", verify_count));
1420 PHY_DEBUG(("[CAL] ******************************************\n"));
1421
1422 if (verify_count > 2)
1423 {
1424 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration_loop> *********\n"));
1425 PHY_DEBUG(("[CAL] ** RX_IQ_CALIBRATION OK !!\n"));
1426 PHY_DEBUG(("[CAL] **************************************\n"));
1427 return 0;
1428 }
1429
1430 continue;
1431 }
1432 // g.
1433 hw_get_dxx_reg(phw_data, 0x54, &val);
1434 PHY_DEBUG(("[CAL] ** 0x54 = 0x%08X\n", val));
1435
1436 if (phw_data->revision == 0x2002) // 1st-cut
1437 {
1438 rx_cal_reg[0] = _s4_to_s32((val & 0x0000F000) >> 12);
1439 rx_cal_reg[1] = _s4_to_s32((val & 0x00000F00) >> 8);
1440 rx_cal_reg[2] = _s4_to_s32((val & 0x000000F0) >> 4);
1441 rx_cal_reg[3] = _s4_to_s32((val & 0x0000000F));
1442 }
1443 else // 2nd-cut
1444 {
1445 rx_cal_reg[0] = _s5_to_s32((val & 0xF8000000) >> 27);
1446 rx_cal_reg[1] = _s6_to_s32((val & 0x07E00000) >> 21);
1447 rx_cal_reg[2] = _s6_to_s32((val & 0x001F8000) >> 15);
1448 rx_cal_reg[3] = _s5_to_s32((val & 0x00007C00) >> 10);
1449 }
1450
1451 PHY_DEBUG(("[CAL] ** rx_cal_reg[0] = %d\n", rx_cal_reg[0]));
1452 PHY_DEBUG(("[CAL] rx_cal_reg[1] = %d\n", rx_cal_reg[1]));
1453 PHY_DEBUG(("[CAL] rx_cal_reg[2] = %d\n", rx_cal_reg[2]));
1454 PHY_DEBUG(("[CAL] rx_cal_reg[3] = %d\n", rx_cal_reg[3]));
1455
1456 if (phw_data->revision == 0x2002) // 1st-cut
1457 {
1458 if (((rx_cal_reg[0]==7) || (rx_cal_reg[0]==(-8))) &&
1459 ((rx_cal_reg[3]==7) || (rx_cal_reg[3]==(-8))))
1460 {
1461 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration_loop> *********\n"));
1462 PHY_DEBUG(("[CAL] ** RX_IQ_CALIBRATION SATUATION !!\n"));
1463 PHY_DEBUG(("[CAL] **************************************\n"));
1464 break;
1465 }
1466 }
1467 else // 2nd-cut
1468 {
1469 if (((rx_cal_reg[0]==31) || (rx_cal_reg[0]==(-32))) &&
1470 ((rx_cal_reg[3]==31) || (rx_cal_reg[3]==(-32))))
1471 {
1472 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration_loop> *********\n"));
1473 PHY_DEBUG(("[CAL] ** RX_IQ_CALIBRATION SATUATION !!\n"));
1474 PHY_DEBUG(("[CAL] **************************************\n"));
1475 break;
1476 }
1477 }
1478
1479 rx_cal[0] = rx_cal[0] + rx_cal_reg[0];
1480 rx_cal[1] = rx_cal[1] + rx_cal_reg[1];
1481 rx_cal[2] = rx_cal[2] + rx_cal_reg[2];
1482 rx_cal[3] = rx_cal[3] + rx_cal_reg[3];
1483 PHY_DEBUG(("[CAL] ** apply rx_cal[0] = %d\n", rx_cal[0]));
1484 PHY_DEBUG(("[CAL] apply rx_cal[1] = %d\n", rx_cal[1]));
1485 PHY_DEBUG(("[CAL] apply rx_cal[2] = %d\n", rx_cal[2]));
1486 PHY_DEBUG(("[CAL] apply rx_cal[3] = %d\n", rx_cal[3]));
1487
1488 hw_get_dxx_reg(phw_data, 0x54, &val);
1489 if (phw_data->revision == 0x2002) // 1st-cut
1490 {
1491 val &= 0x0000FFFF;
1492 val |= ((_s32_to_s4(rx_cal[0]) << 12)|
1493 (_s32_to_s4(rx_cal[1]) << 8)|
1494 (_s32_to_s4(rx_cal[2]) << 4)|
1495 (_s32_to_s4(rx_cal[3])));
1496 hw_set_dxx_reg(phw_data, 0x54, val);
1497 }
1498 else // 2nd-cut
1499 {
1500 val &= 0x000003FF;
1501 val |= ((_s32_to_s5(rx_cal[0]) << 27)|
1502 (_s32_to_s6(rx_cal[1]) << 21)|
1503 (_s32_to_s6(rx_cal[2]) << 15)|
1504 (_s32_to_s5(rx_cal[3]) << 10));
1505 hw_set_dxx_reg(phw_data, 0x54, val);
1506
1507 if( loop == 3 )
1508 return 0;
1509 }
1510 PHY_DEBUG(("[CAL] ** CALIB_DATA = 0x%08X\n", val));
1511
1512 loop--;
1513 }
1514
1515 return 1;
1516}
1517
1518//////////////////////////////////////////////////////////
1519
1520//////////////////////////////////////////////////////////////////////////
1521void _rx_iq_calibration_winbond(hw_data_t *phw_data, u32 frequency)
1522{
1523// figo 20050523 marked thsi flag for can't compile for relesase
1524#ifdef _DEBUG
1525 s32 rx_cal_reg[4];
1526 u32 val;
1527#endif
1528
1529 u8 result;
1530
1531 PHY_DEBUG(("[CAL] -> [5]_rx_iq_calibration()\n"));
1532// a. Set RFIC to "RX calibration mode"
1533 //; ----- Calibration (7). RX path IQ imbalance calibration loop
1534 // 0x01 0xFFBFC2 ; 3FEFF ; Calibration (7a). enable RX IQ calibration loop circuits
1535 phy_set_rf_data(phw_data, 1, (1<<24)|0xEFBFC2);
1536 // 0x0B 0x1A01D6 ; 06817 ; Calibration (7b). enable RX I/Q cal loop SW1 circuit
1537 phy_set_rf_data(phw_data, 11, (11<<24)|0x1A05D6);
1538 //0x05 0x24848A ; 09212 ; Calibration (7c). setting TX-VGA gain (TXGCH) to 2 --> to be optimized
1539 phy_set_rf_data(phw_data, 5, (5<<24)| phw_data->txvga_setting_for_cal);
1540 //0x06 0x06840C ; 01A10 ; Calibration (7d). RXGCH=00; RXGCL=010 000 (RXVGA) --> to be optimized
1541 phy_set_rf_data(phw_data, 6, (6<<24)|0x06834C);
1542 //0x00 0xFFF1C0 ; 3F7C7 ; Calibration (7e). turn on IQ imbalance/Test mode
1543 phy_set_rf_data(phw_data, 0, (0<<24)|0xFFF1C0);
1544
1545 // ; [BB-chip]: Calibration (7f). Send test pattern
1546 // ; [BB-chip]: Calibration (7g). Search RXGCL optimal value
1547 // ; [BB-chip]: Calibration (7h). Caculate RX-path IQ imbalance and setting RX path IQ compensation table
1548
1549 result = _rx_iq_calibration_loop_winbond(phw_data, 12589, frequency);
1550
1551 if (result > 0)
1552 {
1553 _reset_rx_cal(phw_data);
1554 result = _rx_iq_calibration_loop_winbond(phw_data, 7943, frequency);
1555
1556 if (result > 0)
1557 {
1558 _reset_rx_cal(phw_data);
1559 result = _rx_iq_calibration_loop_winbond(phw_data, 5011, frequency);
1560
1561 if (result > 0)
1562 {
1563 PHY_DEBUG(("[CAL] ** <_rx_iq_calibration> **************\n"));
1564 PHY_DEBUG(("[CAL] ** RX_IQ_CALIBRATION FAILURE !!\n"));
1565 PHY_DEBUG(("[CAL] **************************************\n"));
1566 _reset_rx_cal(phw_data);
1567 }
1568 }
1569 }
1570
1571#ifdef _DEBUG
1572 hw_get_dxx_reg(phw_data, 0x54, &val);
1573 PHY_DEBUG(("[CAL] ** 0x54 = 0x%08X\n", val));
1574
1575 if (phw_data->revision == 0x2002) // 1st-cut
1576 {
1577 rx_cal_reg[0] = _s4_to_s32((val & 0x0000F000) >> 12);
1578 rx_cal_reg[1] = _s4_to_s32((val & 0x00000F00) >> 8);
1579 rx_cal_reg[2] = _s4_to_s32((val & 0x000000F0) >> 4);
1580 rx_cal_reg[3] = _s4_to_s32((val & 0x0000000F));
1581 }
1582 else // 2nd-cut
1583 {
1584 rx_cal_reg[0] = _s5_to_s32((val & 0xF8000000) >> 27);
1585 rx_cal_reg[1] = _s6_to_s32((val & 0x07E00000) >> 21);
1586 rx_cal_reg[2] = _s6_to_s32((val & 0x001F8000) >> 15);
1587 rx_cal_reg[3] = _s5_to_s32((val & 0x00007C00) >> 10);
1588 }
1589
1590 PHY_DEBUG(("[CAL] ** rx_cal_reg[0] = %d\n", rx_cal_reg[0]));
1591 PHY_DEBUG(("[CAL] rx_cal_reg[1] = %d\n", rx_cal_reg[1]));
1592 PHY_DEBUG(("[CAL] rx_cal_reg[2] = %d\n", rx_cal_reg[2]));
1593 PHY_DEBUG(("[CAL] rx_cal_reg[3] = %d\n", rx_cal_reg[3]));
1594#endif
1595
1596}
1597
1598////////////////////////////////////////////////////////////////////////
1599void phy_calibration_winbond(hw_data_t *phw_data, u32 frequency)
1600{
1601 u32 reg_mode_ctrl;
1602 u32 iq_alpha;
1603
1604 PHY_DEBUG(("[CAL] -> phy_calibration_winbond()\n"));
1605
1606 // 20040701 1.1.25.1000 kevin
1607 hw_get_cxx_reg(phw_data, 0x80, &mac_ctrl);
1608 hw_get_cxx_reg(phw_data, 0xE4, &rf_ctrl);
1609 hw_get_dxx_reg(phw_data, 0x58, &iq_alpha);
1610
1611
1612
1613 _rxadc_dc_offset_cancellation_winbond(phw_data, frequency);
1614 //_txidac_dc_offset_cancellation_winbond(phw_data);
1615 //_txqdac_dc_offset_cacellation_winbond(phw_data);
1616
1617 _tx_iq_calibration_winbond(phw_data);
1618 _rx_iq_calibration_winbond(phw_data, frequency);
1619
1620 //------------------------------------------------------------------------
1621 hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl);
1622 reg_mode_ctrl &= ~(MASK_IQCAL_TONE_SEL|MASK_IQCAL_MODE|MASK_CALIB_START); // set when finish
1623 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
1624 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
1625
1626 // i. Set RFIC to "Normal mode"
1627 hw_set_cxx_reg(phw_data, 0x80, mac_ctrl);
1628 hw_set_cxx_reg(phw_data, 0xE4, rf_ctrl);
1629 hw_set_dxx_reg(phw_data, 0x58, iq_alpha);
1630
1631
1632 //------------------------------------------------------------------------
1633 phy_init_rf(phw_data);
1634
1635}
1636
1637//===========================
1638void phy_set_rf_data( phw_data_t pHwData, u32 index, u32 value )
1639{
1640 u32 ltmp=0;
1641
1642 switch( pHwData->phy_type )
1643 {
1644 case RF_MAXIM_2825:
1645 case RF_MAXIM_V1: // 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331)
1646 ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( value, 18 );
1647 break;
1648
1649 case RF_MAXIM_2827:
1650 ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( value, 18 );
1651 break;
1652
1653 case RF_MAXIM_2828:
1654 ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( value, 18 );
1655 break;
1656
1657 case RF_MAXIM_2829:
1658 ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( value, 18 );
1659 break;
1660
1661 case RF_AIROHA_2230:
1662 case RF_AIROHA_2230S: // 20060420 Add this
1663 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( value, 20 );
1664 break;
1665
1666 case RF_AIROHA_7230:
1667 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | (value&0xffffff);
1668 break;
1669
1670 case RF_WB_242:
1671 case RF_WB_242_1: // 20060619.5 Add
1672 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( value, 24 );
1673 break;
1674 }
1675
1676 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1677}
1678
1679// 20060717 modify as Bruce's mail
1680unsigned char adjust_TXVGA_for_iq_mag(hw_data_t *phw_data)
1681{
1682 int init_txvga = 0;
1683 u32 reg_mode_ctrl;
1684 u32 val;
1685 s32 iqcal_tone_i0;
1686 s32 iqcal_tone_q0;
1687 u32 sqsum;
1688 s32 iq_mag_0_tx;
1689 u8 reg_state;
1690 int current_txvga;
1691
1692
1693 reg_state = 0;
1694 for( init_txvga=0; init_txvga<10; init_txvga++)
1695 {
1696 current_txvga = ( 0x24C40A|(init_txvga<<6) );
1697 phy_set_rf_data(phw_data, 5, ((5<<24)|current_txvga) );
1698 phw_data->txvga_setting_for_cal = current_txvga;
1699
1700 //pa_stall_execution(30000);//Sleep(30);
1701 OS_SLEEP(30000); // 20060612.1.a
1702
1703 if( !hw_get_dxx_reg(phw_data, REG_MODE_CTRL, &reg_mode_ctrl) ) // 20060718.1 modify
1704 return FALSE;
1705
1706 PHY_DEBUG(("[CAL] MODE_CTRL (read) = 0x%08X\n", reg_mode_ctrl));
1707
1708 // a. Set iqcal_mode[1:0] to 0x2 and set "calib_start" to 0x1 to
1709 // enable "IQ alibration Mode II"
1710 reg_mode_ctrl &= ~(MASK_IQCAL_TONE_SEL|MASK_IQCAL_MODE);
1711 reg_mode_ctrl &= ~MASK_IQCAL_MODE;
1712 reg_mode_ctrl |= (MASK_CALIB_START|0x02);
1713 reg_mode_ctrl |= (MASK_CALIB_START|0x02|2<<2);
1714 hw_set_dxx_reg(phw_data, REG_MODE_CTRL, reg_mode_ctrl);
1715 PHY_DEBUG(("[CAL] MODE_CTRL (write) = 0x%08X\n", reg_mode_ctrl));
1716
1717 //pa_stall_execution(US);
1718 OS_SLEEP(1); // 20060612.1.a
1719
1720 //pa_stall_execution(300);//Sleep(30);
1721 OS_SLEEP(300); // 20060612.1.a
1722
1723 // b.
1724 hw_get_dxx_reg(phw_data, REG_CALIB_READ1, &val);
1725
1726 PHY_DEBUG(("[CAL] CALIB_READ1 = 0x%08X\n", val));
1727 //pa_stall_execution(US);
1728 //pa_stall_execution(300);//Sleep(30);
1729 OS_SLEEP(300); // 20060612.1.a
1730
1731 iqcal_tone_i0 = _s13_to_s32(val & 0x00001FFF);
1732 iqcal_tone_q0 = _s13_to_s32((val & 0x03FFE000) >> 13);
1733 PHY_DEBUG(("[CAL] ** iqcal_tone_i0=%d, iqcal_tone_q0=%d\n",
1734 iqcal_tone_i0, iqcal_tone_q0));
1735
1736 sqsum = iqcal_tone_i0*iqcal_tone_i0 + iqcal_tone_q0*iqcal_tone_q0;
1737 iq_mag_0_tx = (s32) _sqrt(sqsum);
1738 PHY_DEBUG(("[CAL] ** auto_adjust_txvga_for_iq_mag_0_tx=%d\n", iq_mag_0_tx));
1739
1740 if( iq_mag_0_tx>=700 && iq_mag_0_tx<=1750 )
1741 break;
1742 else if(iq_mag_0_tx > 1750)
1743 {
1744 init_txvga=-2;
1745 continue;
1746 }
1747 else
1748 continue;
1749
1750 }
1751
1752 if( iq_mag_0_tx>=700 && iq_mag_0_tx<=1750 )
1753 return TRUE;
1754 else
1755 return FALSE;
1756}
1757
1758
1759
diff --git a/drivers/staging/winbond/phy_calibration.h b/drivers/staging/winbond/phy_calibration.h
new file mode 100644
index 00000000000..b6a65d31301
--- /dev/null
+++ b/drivers/staging/winbond/phy_calibration.h
@@ -0,0 +1,101 @@
1// 20031229 Turbo add
2#define REG_AGC_CTRL1 0x1000
3#define REG_AGC_CTRL2 0x1004
4#define REG_AGC_CTRL3 0x1008
5#define REG_AGC_CTRL4 0x100C
6#define REG_AGC_CTRL5 0x1010
7#define REG_AGC_CTRL6 0x1014
8#define REG_AGC_CTRL7 0x1018
9#define REG_AGC_CTRL8 0x101C
10#define REG_AGC_CTRL9 0x1020
11#define REG_AGC_CTRL10 0x1024
12#define REG_CCA_CTRL 0x1028
13#define REG_A_ACQ_CTRL 0x102C
14#define REG_B_ACQ_CTRL 0x1030
15#define REG_A_TXRX_CTRL 0x1034
16#define REG_B_TXRX_CTRL 0x1038
17#define REG_A_TX_COEF3 0x103C
18#define REG_A_TX_COEF2 0x1040
19#define REG_A_TX_COEF1 0x1044
20#define REG_B_TX_COEF2 0x1048
21#define REG_B_TX_COEF1 0x104C
22#define REG_MODE_CTRL 0x1050
23#define REG_CALIB_DATA 0x1054
24#define REG_IQ_ALPHA 0x1058
25#define REG_DC_CANCEL 0x105C
26#define REG_WTO_READ 0x1060
27#define REG_OFFSET_READ 0x1064
28#define REG_CALIB_READ1 0x1068
29#define REG_CALIB_READ2 0x106C
30#define REG_A_FREQ_EST 0x1070
31
32
33
34
35// 20031101 Turbo add
36#define MASK_AMER_OFF_REG BIT(31)
37
38#define MASK_BMER_OFF_REG BIT(31)
39
40#define MASK_LNA_FIX_GAIN (BIT(3)|BIT(4))
41#define MASK_AGC_FIX BIT(1)
42
43#define MASK_AGC_FIX_GAIN 0xFF00
44
45#define MASK_ADC_DC_CAL_STR BIT(10)
46#define MASK_CALIB_START BIT(4)
47#define MASK_IQCAL_TONE_SEL (BIT(3)|BIT(2))
48#define MASK_IQCAL_MODE (BIT(1)|BIT(0))
49
50#define MASK_TX_CAL_0 0xF0000000
51#define TX_CAL_0_SHIFT 28
52#define MASK_TX_CAL_1 0x0F000000
53#define TX_CAL_1_SHIFT 24
54#define MASK_TX_CAL_2 0x00F00000
55#define TX_CAL_2_SHIFT 20
56#define MASK_TX_CAL_3 0x000F0000
57#define TX_CAL_3_SHIFT 16
58#define MASK_RX_CAL_0 0x0000F000
59#define RX_CAL_0_SHIFT 12
60#define MASK_RX_CAL_1 0x00000F00
61#define RX_CAL_1_SHIFT 8
62#define MASK_RX_CAL_2 0x000000F0
63#define RX_CAL_2_SHIFT 4
64#define MASK_RX_CAL_3 0x0000000F
65#define RX_CAL_3_SHIFT 0
66
67#define MASK_CANCEL_DC_I 0x3E0
68#define CANCEL_DC_I_SHIFT 5
69#define MASK_CANCEL_DC_Q 0x01F
70#define CANCEL_DC_Q_SHIFT 0
71
72// LA20040210 kevin
73//#define MASK_ADC_DC_CAL_I(x) (((x)&0x1FE00)>>9)
74//#define MASK_ADC_DC_CAL_Q(x) ((x)&0x1FF)
75#define MASK_ADC_DC_CAL_I(x) (((x)&0x0003FE00)>>9)
76#define MASK_ADC_DC_CAL_Q(x) ((x)&0x000001FF)
77
78// LA20040210 kevin (Turbo has wrong definition)
79//#define MASK_IQCAL_TONE_I 0x7FFC000
80//#define SHIFT_IQCAL_TONE_I(x) ((x)>>13)
81//#define MASK_IQCAL_TONE_Q 0x1FFF
82//#define SHIFT_IQCAL_TONE_Q(x) ((x)>>0)
83#define MASK_IQCAL_TONE_I 0x00001FFF
84#define SHIFT_IQCAL_TONE_I(x) ((x)>>0)
85#define MASK_IQCAL_TONE_Q 0x03FFE000
86#define SHIFT_IQCAL_TONE_Q(x) ((x)>>13)
87
88// LA20040210 kevin (Turbo has wrong definition)
89//#define MASK_IQCAL_IMAGE_I 0x7FFC000
90//#define SHIFT_IQCAL_IMAGE_I(x) ((x)>>13)
91//#define MASK_IQCAL_IMAGE_Q 0x1FFF
92//#define SHIFT_IQCAL_IMAGE_Q(x) ((x)>>0)
93
94//#define MASK_IQCAL_IMAGE_I 0x00001FFF
95//#define SHIFT_IQCAL_IMAGE_I(x) ((x)>>0)
96//#define MASK_IQCAL_IMAGE_Q 0x03FFE000
97//#define SHIFT_IQCAL_IMAGE_Q(x) ((x)>>13)
98
99void phy_set_rf_data( phw_data_t pHwData, u32 index, u32 value );
100#define phy_init_rf( _A ) //RFSynthesizer_initial( _A )
101
diff --git a/drivers/staging/winbond/reg.c b/drivers/staging/winbond/reg.c
new file mode 100644
index 00000000000..b475c7a7c42
--- /dev/null
+++ b/drivers/staging/winbond/reg.c
@@ -0,0 +1,2683 @@
1#include "os_common.h"
2
3///////////////////////////////////////////////////////////////////////////////////////////////////
4// Original Phy.h
5//*****************************************************************************
6
7/*****************************************************************************
8; For MAXIM2825/6/7 Ver. 331 or more
9; Edited by Tiger, Sep-17-2003
10; revised by Ben, Sep-18-2003
11
120x00 0x000a2
130x01 0x21cc0
14;0x02 0x13802
150x02 0x1383a
16
17;channe1 01 ; 0x03 0x30142 ; 0x04 0x0b333;
18;channe1 02 ;0x03 0x32141 ;0x04 0x08444;
19;channe1 03 ;0x03 0x32143 ;0x04 0x0aeee;
20;channe1 04 ;0x03 0x32142 ;0x04 0x0b333;
21;channe1 05 ;0x03 0x31141 ;0x04 0x08444;
22;channe1 06 ;
230x03 0x31143;
240x04 0x0aeee;
25;channe1 07 ;0x03 0x31142 ;0x04 0x0b333;
26;channe1 08 ;0x03 0x33141 ;0x04 0x08444;
27;channe1 09 ;0x03 0x33143 ;0x04 0x0aeee;
28;channe1 10 ;0x03 0x33142 ;0x04 0x0b333;
29;channe1 11 ;0x03 0x30941 ;0x04 0x08444;
30;channe1 12 ;0x03 0x30943 ;0x04 0x0aeee;
31;channe1 13 ;0x03 0x30942 ;0x04 0x0b333;
32
330x05 0x28986
340x06 0x18008
350x07 0x38400
360x08 0x05100; 100 Hz DC
37;0x08 0x05900; 30 KHz DC
380x09 0x24f08
390x0a 0x17e00, 0x17ea0
400x0b 0x37d80
410x0c 0x0c900 // 0x0ca00 (lager power 9db than 0x0c000), 0x0c000
42*****************************************************************************/
43// MAX2825 (pure b/g)
44u32 max2825_rf_data[] =
45{
46 (0x00<<18)|0x000a2,
47 (0x01<<18)|0x21cc0,
48 (0x02<<18)|0x13806,
49 (0x03<<18)|0x30142,
50 (0x04<<18)|0x0b333,
51 (0x05<<18)|0x289A6,
52 (0x06<<18)|0x18008,
53 (0x07<<18)|0x38000,
54 (0x08<<18)|0x05100,
55 (0x09<<18)|0x24f08,
56 (0x0A<<18)|0x14000,
57 (0x0B<<18)|0x37d80,
58 (0x0C<<18)|0x0c100 // 11a: 0x0c300, 11g: 0x0c100
59};
60
61u32 max2825_channel_data_24[][3] =
62{
63 {(0x03<<18)|0x30142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 01
64 {(0x03<<18)|0x32141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 02
65 {(0x03<<18)|0x32143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 03
66 {(0x03<<18)|0x32142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 04
67 {(0x03<<18)|0x31141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 05
68 {(0x03<<18)|0x31143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 06
69 {(0x03<<18)|0x31142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 07
70 {(0x03<<18)|0x33141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 08
71 {(0x03<<18)|0x33143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 09
72 {(0x03<<18)|0x33142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 10
73 {(0x03<<18)|0x30941, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 11
74 {(0x03<<18)|0x30943, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 12
75 {(0x03<<18)|0x30942, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 13
76 {(0x03<<18)|0x32941, (0x04<<18)|0x09999, (0x05<<18)|0x289A6} // 14 (2484MHz) hhmodify
77};
78
79u32 max2825_power_data_24[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100};
80
81/****************************************************************************/
82// MAX2827 (a/b/g)
83u32 max2827_rf_data[] =
84{
85 (0x00<<18)|0x000a2,
86 (0x01<<18)|0x21cc0,
87 (0x02<<18)|0x13806,
88 (0x03<<18)|0x30142,
89 (0x04<<18)|0x0b333,
90 (0x05<<18)|0x289A6,
91 (0x06<<18)|0x18008,
92 (0x07<<18)|0x38000,
93 (0x08<<18)|0x05100,
94 (0x09<<18)|0x24f08,
95 (0x0A<<18)|0x14000,
96 (0x0B<<18)|0x37d80,
97 (0x0C<<18)|0x0c100 // 11a: 0x0c300, 11g: 0x0c100
98};
99
100u32 max2827_channel_data_24[][3] =
101{
102 {(0x03<<18)|0x30142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 01
103 {(0x03<<18)|0x32141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 02
104 {(0x03<<18)|0x32143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 03
105 {(0x03<<18)|0x32142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 04
106 {(0x03<<18)|0x31141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 05
107 {(0x03<<18)|0x31143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 06
108 {(0x03<<18)|0x31142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 07
109 {(0x03<<18)|0x33141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 08
110 {(0x03<<18)|0x33143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 09
111 {(0x03<<18)|0x33142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 10
112 {(0x03<<18)|0x30941, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 11
113 {(0x03<<18)|0x30943, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 12
114 {(0x03<<18)|0x30942, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 13
115 {(0x03<<18)|0x32941, (0x04<<18)|0x09999, (0x05<<18)|0x289A6} // 14 (2484MHz) hhmodify
116};
117
118u32 max2827_channel_data_50[][3] =
119{
120 {(0x03<<18)|0x33cc3, (0x04<<18)|0x08ccc, (0x05<<18)|0x2A9A6}, // channel 36
121 {(0x03<<18)|0x302c0, (0x04<<18)|0x08000, (0x05<<18)|0x2A9A6}, // channel 40
122 {(0x03<<18)|0x302c2, (0x04<<18)|0x0b333, (0x05<<18)|0x2A9A6}, // channel 44
123 {(0x03<<18)|0x322c1, (0x04<<18)|0x09999, (0x05<<18)|0x2A9A6}, // channel 48
124 {(0x03<<18)|0x312c1, (0x04<<18)|0x0a666, (0x05<<18)|0x2A9A6}, // channel 52
125 {(0x03<<18)|0x332c3, (0x04<<18)|0x08ccc, (0x05<<18)|0x2A9A6}, // channel 56
126 {(0x03<<18)|0x30ac0, (0x04<<18)|0x08000, (0x05<<18)|0x2A9A6}, // channel 60
127 {(0x03<<18)|0x30ac2, (0x04<<18)|0x0b333, (0x05<<18)|0x2A9A6} // channel 64
128};
129
130u32 max2827_power_data_24[] = {(0x0C<<18)|0x0C000, (0x0C<<18)|0x0D600, (0x0C<<18)|0x0C100};
131u32 max2827_power_data_50[] = {(0x0C<<18)|0x0C400, (0x0C<<18)|0x0D500, (0x0C<<18)|0x0C300};
132
133/****************************************************************************/
134// MAX2828 (a/b/g)
135u32 max2828_rf_data[] =
136{
137 (0x00<<18)|0x000a2,
138 (0x01<<18)|0x21cc0,
139 (0x02<<18)|0x13806,
140 (0x03<<18)|0x30142,
141 (0x04<<18)|0x0b333,
142 (0x05<<18)|0x289A6,
143 (0x06<<18)|0x18008,
144 (0x07<<18)|0x38000,
145 (0x08<<18)|0x05100,
146 (0x09<<18)|0x24f08,
147 (0x0A<<18)|0x14000,
148 (0x0B<<18)|0x37d80,
149 (0x0C<<18)|0x0c100 // 11a: 0x0c300, 11g: 0x0c100
150};
151
152u32 max2828_channel_data_24[][3] =
153{
154 {(0x03<<18)|0x30142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 01
155 {(0x03<<18)|0x32141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 02
156 {(0x03<<18)|0x32143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 03
157 {(0x03<<18)|0x32142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 04
158 {(0x03<<18)|0x31141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 05
159 {(0x03<<18)|0x31143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 06
160 {(0x03<<18)|0x31142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 07
161 {(0x03<<18)|0x33141, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 08
162 {(0x03<<18)|0x33143, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 09
163 {(0x03<<18)|0x33142, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 10
164 {(0x03<<18)|0x30941, (0x04<<18)|0x08444, (0x05<<18)|0x289A6}, // channe1 11
165 {(0x03<<18)|0x30943, (0x04<<18)|0x0aeee, (0x05<<18)|0x289A6}, // channe1 12
166 {(0x03<<18)|0x30942, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channe1 13
167 {(0x03<<18)|0x32941, (0x04<<18)|0x09999, (0x05<<18)|0x289A6} // 14 (2484MHz) hhmodify
168};
169
170u32 max2828_channel_data_50[][3] =
171{
172 {(0x03<<18)|0x33cc3, (0x04<<18)|0x08ccc, (0x05<<18)|0x289A6}, // channel 36
173 {(0x03<<18)|0x302c0, (0x04<<18)|0x08000, (0x05<<18)|0x289A6}, // channel 40
174 {(0x03<<18)|0x302c2, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6}, // channel 44
175 {(0x03<<18)|0x322c1, (0x04<<18)|0x09999, (0x05<<18)|0x289A6}, // channel 48
176 {(0x03<<18)|0x312c1, (0x04<<18)|0x0a666, (0x05<<18)|0x289A6}, // channel 52
177 {(0x03<<18)|0x332c3, (0x04<<18)|0x08ccc, (0x05<<18)|0x289A6}, // channel 56
178 {(0x03<<18)|0x30ac0, (0x04<<18)|0x08000, (0x05<<18)|0x289A6}, // channel 60
179 {(0x03<<18)|0x30ac2, (0x04<<18)|0x0b333, (0x05<<18)|0x289A6} // channel 64
180};
181
182u32 max2828_power_data_24[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100};
183u32 max2828_power_data_50[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100};
184
185/****************************************************************************/
186// LA20040728 kevin
187// MAX2829 (a/b/g)
188u32 max2829_rf_data[] =
189{
190 (0x00<<18)|0x000a2,
191 (0x01<<18)|0x23520,
192 (0x02<<18)|0x13802,
193 (0x03<<18)|0x30142,
194 (0x04<<18)|0x0b333,
195 (0x05<<18)|0x28906,
196 (0x06<<18)|0x18008,
197 (0x07<<18)|0x3B500,
198 (0x08<<18)|0x05100,
199 (0x09<<18)|0x24f08,
200 (0x0A<<18)|0x14000,
201 (0x0B<<18)|0x37d80,
202 (0x0C<<18)|0x0F300 //TXVGA=51, (MAX-6 dB)
203};
204
205u32 max2829_channel_data_24[][3] =
206{
207 {(3<<18)|0x30142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 01 (2412MHz)
208 {(3<<18)|0x32141, (4<<18)|0x08444, (5<<18)|0x289C6}, // 02 (2417MHz)
209 {(3<<18)|0x32143, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 03 (2422MHz)
210 {(3<<18)|0x32142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 04 (2427MHz)
211 {(3<<18)|0x31141, (4<<18)|0x08444, (5<<18)|0x289C6}, // 05 (2432MHz)
212 {(3<<18)|0x31143, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 06 (2437MHz)
213 {(3<<18)|0x31142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 07 (2442MHz)
214 {(3<<18)|0x33141, (4<<18)|0x08444, (5<<18)|0x289C6}, // 08 (2447MHz)
215 {(3<<18)|0x33143, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 09 (2452MHz)
216 {(3<<18)|0x33142, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 10 (2457MHz)
217 {(3<<18)|0x30941, (4<<18)|0x08444, (5<<18)|0x289C6}, // 11 (2462MHz)
218 {(3<<18)|0x30943, (4<<18)|0x0aeee, (5<<18)|0x289C6}, // 12 (2467MHz)
219 {(3<<18)|0x30942, (4<<18)|0x0b333, (5<<18)|0x289C6}, // 13 (2472MHz)
220 {(3<<18)|0x32941, (4<<18)|0x09999, (5<<18)|0x289C6}, // 14 (2484MHz) hh-modify
221};
222
223u32 max2829_channel_data_50[][4] =
224{
225 {36, (3<<18)|0x33cc3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 36 (5.180GHz)
226 {40, (3<<18)|0x302c0, (4<<18)|0x08000, (5<<18)|0x2A946}, // 40 (5.200GHz)
227 {44, (3<<18)|0x302c2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 44 (5.220GHz)
228 {48, (3<<18)|0x322c1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 48 (5.240GHz)
229 {52, (3<<18)|0x312c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 52 (5.260GHz)
230 {56, (3<<18)|0x332c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 56 (5.280GHz)
231 {60, (3<<18)|0x30ac0, (4<<18)|0x08000, (5<<18)|0x2A946}, // 60 (5.300GHz)
232 {64, (3<<18)|0x30ac2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 64 (5.320GHz)
233
234 {100, (3<<18)|0x30ec0, (4<<18)|0x08000, (5<<18)|0x2A9C6}, // 100 (5.500GHz)
235 {104, (3<<18)|0x30ec2, (4<<18)|0x0b333, (5<<18)|0x2A9C6}, // 104 (5.520GHz)
236 {108, (3<<18)|0x32ec1, (4<<18)|0x09999, (5<<18)|0x2A9C6}, // 108 (5.540GHz)
237 {112, (3<<18)|0x31ec1, (4<<18)|0x0a666, (5<<18)|0x2A9C6}, // 112 (5.560GHz)
238 {116, (3<<18)|0x33ec3, (4<<18)|0x08ccc, (5<<18)|0x2A9C6}, // 116 (5.580GHz)
239 {120, (3<<18)|0x301c0, (4<<18)|0x08000, (5<<18)|0x2A9C6}, // 120 (5.600GHz)
240 {124, (3<<18)|0x301c2, (4<<18)|0x0b333, (5<<18)|0x2A9C6}, // 124 (5.620GHz)
241 {128, (3<<18)|0x321c1, (4<<18)|0x09999, (5<<18)|0x2A9C6}, // 128 (5.640GHz)
242 {132, (3<<18)|0x311c1, (4<<18)|0x0a666, (5<<18)|0x2A9C6}, // 132 (5.660GHz)
243 {136, (3<<18)|0x331c3, (4<<18)|0x08ccc, (5<<18)|0x2A9C6}, // 136 (5.680GHz)
244 {140, (3<<18)|0x309c0, (4<<18)|0x08000, (5<<18)|0x2A9C6}, // 140 (5.700GHz)
245
246 {149, (3<<18)|0x329c2, (4<<18)|0x0b333, (5<<18)|0x2A9C6}, // 149 (5.745GHz)
247 {153, (3<<18)|0x319c1, (4<<18)|0x09999, (5<<18)|0x2A9C6}, // 153 (5.765GHz)
248 {157, (3<<18)|0x339c1, (4<<18)|0x0a666, (5<<18)|0x2A9C6}, // 157 (5.785GHz)
249 {161, (3<<18)|0x305c3, (4<<18)|0x08ccc, (5<<18)|0x2A9C6}, // 161 (5.805GHz)
250
251 // Japan
252 { 184, (3<<18)|0x308c2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 184 (4.920GHz)
253 { 188, (3<<18)|0x328c1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 188 (4.940GHz)
254 { 192, (3<<18)|0x318c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 192 (4.960GHz)
255 { 196, (3<<18)|0x338c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 196 (4.980GHz)
256 { 8, (3<<18)|0x324c1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 8 (5.040GHz)
257 { 12, (3<<18)|0x314c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 12 (5.060GHz)
258 { 16, (3<<18)|0x334c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 16 (5.080GHz)
259 { 34, (3<<18)|0x31cc2, (4<<18)|0x0b333, (5<<18)|0x2A946}, // 34 (5.170GHz)
260 { 38, (3<<18)|0x33cc1, (4<<18)|0x09999, (5<<18)|0x2A946}, // 38 (5.190GHz)
261 { 42, (3<<18)|0x302c1, (4<<18)|0x0a666, (5<<18)|0x2A946}, // 42 (5.210GHz)
262 { 46, (3<<18)|0x322c3, (4<<18)|0x08ccc, (5<<18)|0x2A946}, // 46 (5.230GHz)
263};
264
265/*****************************************************************************
266; For MAXIM2825/6/7 Ver. 317 or less
267; Edited by Tiger, Sep-17-2003 for 2.4Ghz channels
268; Updated by Tiger, Sep-22-2003 for 5.0Ghz channels
269; Corrected by Tiger, Sep-23-2003, for 0x03 and 0x04 of 5.0Ghz channels
270
2710x00 0x00080
2720x01 0x214c0
2730x02 0x13802
274
275;2.4GHz Channels
276;channe1 01 (2.412GHz); 0x03 0x30143 ;0x04 0x0accc
277;channe1 02 (2.417GHz); 0x03 0x32140 ;0x04 0x09111
278;channe1 03 (2.422GHz); 0x03 0x32142 ;0x04 0x0bbbb
279;channe1 04 (2.427GHz); 0x03 0x32143 ;0x04 0x0accc
280;channe1 05 (2.432GHz); 0x03 0x31140 ;0x04 0x09111
281;channe1 06 (2.437GHz); 0x03 0x31142 ;0x04 0x0bbbb
282;channe1 07 (2.442GHz); 0x03 0x31143 ;0x04 0x0accc
283;channe1 08 (2.447GHz); 0x03 0x33140 ;0x04 0x09111
284;channe1 09 (2.452GHz); 0x03 0x33142 ;0x04 0x0bbbb
285;channe1 10 (2.457GHz); 0x03 0x33143 ;0x04 0x0accc
286;channe1 11 (2.462GHz); 0x03 0x30940 ;0x04 0x09111
287;channe1 12 (2.467GHz); 0x03 0x30942 ;0x04 0x0bbbb
288;channe1 13 (2.472GHz); 0x03 0x30943 ;0x04 0x0accc
289
290;5.0Ghz Channels
291;channel 36 (5.180GHz); 0x03 0x33cc0 ;0x04 0x0b333
292;channel 40 (5.200GHz); 0x03 0x302c0 ;0x04 0x08000
293;channel 44 (5.220GHz); 0x03 0x302c2 ;0x04 0x0b333
294;channel 48 (5.240GHz); 0x03 0x322c1 ;0x04 0x09999
295;channel 52 (5.260GHz); 0x03 0x312c1 ;0x04 0x0a666
296;channel 56 (5.280GHz); 0x03 0x332c3 ;0x04 0x08ccc
297;channel 60 (5.300GHz); 0x03 0x30ac0 ;0x04 0x08000
298;channel 64 (5.320GHz); 0x03 0x30ac2 ;0x04 0x08333
299
300;2.4GHz band ;0x05 0x28986;
301;5.0GHz band
3020x05 0x2a986
303
3040x06 0x18008
3050x07 0x38400
3060x08 0x05108
3070x09 0x27ff8
3080x0a 0x14000
3090x0b 0x37f99
3100x0c 0x0c000
311*****************************************************************************/
312u32 maxim_317_rf_data[] =
313{
314 (0x00<<18)|0x000a2,
315 (0x01<<18)|0x214c0,
316 (0x02<<18)|0x13802,
317 (0x03<<18)|0x30143,
318 (0x04<<18)|0x0accc,
319 (0x05<<18)|0x28986,
320 (0x06<<18)|0x18008,
321 (0x07<<18)|0x38400,
322 (0x08<<18)|0x05108,
323 (0x09<<18)|0x27ff8,
324 (0x0A<<18)|0x14000,
325 (0x0B<<18)|0x37f99,
326 (0x0C<<18)|0x0c000
327};
328
329u32 maxim_317_channel_data_24[][3] =
330{
331 {(0x03<<18)|0x30143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 01
332 {(0x03<<18)|0x32140, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 02
333 {(0x03<<18)|0x32142, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 03
334 {(0x03<<18)|0x32143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 04
335 {(0x03<<18)|0x31140, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 05
336 {(0x03<<18)|0x31142, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 06
337 {(0x03<<18)|0x31143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 07
338 {(0x03<<18)|0x33140, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 08
339 {(0x03<<18)|0x33142, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 09
340 {(0x03<<18)|0x33143, (0x04<<18)|0x0accc, (0x05<<18)|0x28986}, // channe1 10
341 {(0x03<<18)|0x30940, (0x04<<18)|0x09111, (0x05<<18)|0x28986}, // channe1 11
342 {(0x03<<18)|0x30942, (0x04<<18)|0x0bbbb, (0x05<<18)|0x28986}, // channe1 12
343 {(0x03<<18)|0x30943, (0x04<<18)|0x0accc, (0x05<<18)|0x28986} // channe1 13
344};
345
346u32 maxim_317_channel_data_50[][3] =
347{
348 {(0x03<<18)|0x33cc0, (0x04<<18)|0x0b333, (0x05<<18)|0x2a986}, // channel 36
349 {(0x03<<18)|0x302c0, (0x04<<18)|0x08000, (0x05<<18)|0x2a986}, // channel 40
350 {(0x03<<18)|0x302c3, (0x04<<18)|0x0accc, (0x05<<18)|0x2a986}, // channel 44
351 {(0x03<<18)|0x322c1, (0x04<<18)|0x09666, (0x05<<18)|0x2a986}, // channel 48
352 {(0x03<<18)|0x312c2, (0x04<<18)|0x09999, (0x05<<18)|0x2a986}, // channel 52
353 {(0x03<<18)|0x332c0, (0x04<<18)|0x0b333, (0x05<<18)|0x2a99e}, // channel 56
354 {(0x03<<18)|0x30ac0, (0x04<<18)|0x08000, (0x05<<18)|0x2a99e}, // channel 60
355 {(0x03<<18)|0x30ac3, (0x04<<18)|0x0accc, (0x05<<18)|0x2a99e} // channel 64
356};
357
358u32 maxim_317_power_data_24[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100};
359u32 maxim_317_power_data_50[] = {(0x0C<<18)|0x0c000, (0x0C<<18)|0x0c100};
360
361/*****************************************************************************
362;;AL2230 MP (Mass Production Version)
363;;RF Registers Setting for Airoha AL2230 silicon after June 1st, 2004
364;;Updated by Tiger Huang (June 1st, 2004)
365;;20-bit length and LSB first
366
367;;Ch01 (2412MHz) ;0x00 0x09EFC ;0x01 0x8CCCC;
368;;Ch02 (2417MHz) ;0x00 0x09EFC ;0x01 0x8CCCD;
369;;Ch03 (2422MHz) ;0x00 0x09E7C ;0x01 0x8CCCC;
370;;Ch04 (2427MHz) ;0x00 0x09E7C ;0x01 0x8CCCD;
371;;Ch05 (2432MHz) ;0x00 0x05EFC ;0x01 0x8CCCC;
372;;Ch06 (2437MHz) ;0x00 0x05EFC ;0x01 0x8CCCD;
373;;Ch07 (2442MHz) ;0x00 0x05E7C ;0x01 0x8CCCC;
374;;Ch08 (2447MHz) ;0x00 0x05E7C ;0x01 0x8CCCD;
375;;Ch09 (2452MHz) ;0x00 0x0DEFC ;0x01 0x8CCCC;
376;;Ch10 (2457MHz) ;0x00 0x0DEFC ;0x01 0x8CCCD;
377;;Ch11 (2462MHz) ;0x00 0x0DE7C ;0x01 0x8CCCC;
378;;Ch12 (2467MHz) ;0x00 0x0DE7C ;0x01 0x8CCCD;
379;;Ch13 (2472MHz) ;0x00 0x03EFC ;0x01 0x8CCCC;
380;;Ch14 (2484Mhz) ;0x00 0x03E7C ;0x01 0x86666;
381
3820x02 0x401D8; RXDCOC BW 100Hz for RXHP low
383;;0x02 0x481DC; RXDCOC BW 30Khz for RXHP low
384
3850x03 0xCFFF0
3860x04 0x23800
3870x05 0xA3B72
3880x06 0x6DA01
3890x07 0xE1688
3900x08 0x11600
3910x09 0x99E02
3920x0A 0x5DDB0
3930x0B 0xD9900
3940x0C 0x3FFBD
3950x0D 0xB0000
3960x0F 0xF00A0
397
398;RF Calibration for Airoha AL2230
399;Edit by Ben Chang (01/30/04)
400;Updated by Tiger Huang (03/03/04)
4010x0f 0xf00a0 ; Initial Setting
4020x0f 0xf00b0 ; Activate TX DCC
4030x0f 0xf02a0 ; Activate Phase Calibration
4040x0f 0xf00e0 ; Activate Filter RC Calibration
4050x0f 0xf00a0 ; Restore Initial Setting
406*****************************************************************************/
407
408u32 al2230_rf_data[] =
409{
410 (0x00<<20)|0x09EFC,
411 (0x01<<20)|0x8CCCC,
412 (0x02<<20)|0x40058,// 20060627 Anson 0x401D8,
413 (0x03<<20)|0xCFFF0,
414 (0x04<<20)|0x24100,// 20060627 Anson 0x23800,
415 (0x05<<20)|0xA3B2F,// 20060627 Anson 0xA3B72
416 (0x06<<20)|0x6DA01,
417 (0x07<<20)|0xE3628,// 20060627 Anson 0xE1688,
418 (0x08<<20)|0x11600,
419 (0x09<<20)|0x9DC02,// 20060627 Anosn 0x97602,//0x99E02, //0x9AE02
420 (0x0A<<20)|0x5ddb0, // 941206 For QCOM interference 0x588b0,//0x5DDB0, 940601 adj 0x5aa30 for bluetooth
421 (0x0B<<20)|0xD9900,
422 (0x0C<<20)|0x3FFBD,
423 (0x0D<<20)|0xB0000,
424 (0x0F<<20)|0xF01A0 // 20060627 Anson 0xF00A0
425};
426
427u32 al2230s_rf_data[] =
428{
429 (0x00<<20)|0x09EFC,
430 (0x01<<20)|0x8CCCC,
431 (0x02<<20)|0x40058,// 20060419 0x401D8,
432 (0x03<<20)|0xCFFF0,
433 (0x04<<20)|0x24100,// 20060419 0x23800,
434 (0x05<<20)|0xA3B2F,// 20060419 0xA3B72,
435 (0x06<<20)|0x6DA01,
436 (0x07<<20)|0xE3628,// 20060419 0xE1688,
437 (0x08<<20)|0x11600,
438 (0x09<<20)|0x9DC02,// 20060419 0x97602,//0x99E02, //0x9AE02
439 (0x0A<<20)|0x5DDB0,// 941206 For QCOM interference 0x588b0,//0x5DDB0, 940601 adj 0x5aa30 for bluetooth
440 (0x0B<<20)|0xD9900,
441 (0x0C<<20)|0x3FFBD,
442 (0x0D<<20)|0xB0000,
443 (0x0F<<20)|0xF01A0 // 20060419 0xF00A0
444};
445
446u32 al2230_channel_data_24[][2] =
447{
448 {(0x00<<20)|0x09EFC, (0x01<<20)|0x8CCCC}, // channe1 01
449 {(0x00<<20)|0x09EFC, (0x01<<20)|0x8CCCD}, // channe1 02
450 {(0x00<<20)|0x09E7C, (0x01<<20)|0x8CCCC}, // channe1 03
451 {(0x00<<20)|0x09E7C, (0x01<<20)|0x8CCCD}, // channe1 04
452 {(0x00<<20)|0x05EFC, (0x01<<20)|0x8CCCC}, // channe1 05
453 {(0x00<<20)|0x05EFC, (0x01<<20)|0x8CCCD}, // channe1 06
454 {(0x00<<20)|0x05E7C, (0x01<<20)|0x8CCCC}, // channe1 07
455 {(0x00<<20)|0x05E7C, (0x01<<20)|0x8CCCD}, // channe1 08
456 {(0x00<<20)|0x0DEFC, (0x01<<20)|0x8CCCC}, // channe1 09
457 {(0x00<<20)|0x0DEFC, (0x01<<20)|0x8CCCD}, // channe1 10
458 {(0x00<<20)|0x0DE7C, (0x01<<20)|0x8CCCC}, // channe1 11
459 {(0x00<<20)|0x0DE7C, (0x01<<20)|0x8CCCD}, // channe1 12
460 {(0x00<<20)|0x03EFC, (0x01<<20)|0x8CCCC}, // channe1 13
461 {(0x00<<20)|0x03E7C, (0x01<<20)|0x86666} // channe1 14
462};
463
464// Current setting. u32 airoha_power_data_24[] = {(0x09<<20)|0x90202, (0x09<<20)|0x96602, (0x09<<20)|0x97602};
465#define AIROHA_TXVGA_LOW_INDEX 31 // Index for 0x90202
466#define AIROHA_TXVGA_MIDDLE_INDEX 12 // Index for 0x96602
467#define AIROHA_TXVGA_HIGH_INDEX 8 // Index for 0x97602 1.0.24.0 1.0.28.0
468/*
469u32 airoha_power_data_24[] =
470{
471 0x9FE02, // Max - 0 dB
472 0x9BE02, // Max - 1 dB
473 0x9DE02, // Max - 2 dB
474 0x99E02, // Max - 3 dB
475 0x9EE02, // Max - 4 dB
476 0x9AE02, // Max - 5 dB
477 0x9CE02, // Max - 6 dB
478 0x98E02, // Max - 7 dB
479 0x97602, // Max - 8 dB
480 0x93602, // Max - 9 dB
481 0x95602, // Max - 10 dB
482 0x91602, // Max - 11 dB
483 0x96602, // Max - 12 dB
484 0x92602, // Max - 13 dB
485 0x94602, // Max - 14 dB
486 0x90602, // Max - 15 dB
487 0x97A02, // Max - 16 dB
488 0x93A02, // Max - 17 dB
489 0x95A02, // Max - 18 dB
490 0x91A02, // Max - 19 dB
491 0x96A02, // Max - 20 dB
492 0x92A02, // Max - 21 dB
493 0x94A02, // Max - 22 dB
494 0x90A02, // Max - 23 dB
495 0x97202, // Max - 24 dB
496 0x93202, // Max - 25 dB
497 0x95202, // Max - 26 dB
498 0x91202, // Max - 27 dB
499 0x96202, // Max - 28 dB
500 0x92202, // Max - 29 dB
501 0x94202, // Max - 30 dB
502 0x90202 // Max - 31 dB
503};
504*/
505
506// 20040927 1.1.69.1000 ybjiang
507// from John
508u32 al2230_txvga_data[][2] =
509{
510 //value , index
511 {0x090202, 0},
512 {0x094202, 2},
513 {0x092202, 4},
514 {0x096202, 6},
515 {0x091202, 8},
516 {0x095202, 10},
517 {0x093202, 12},
518 {0x097202, 14},
519 {0x090A02, 16},
520 {0x094A02, 18},
521 {0x092A02, 20},
522 {0x096A02, 22},
523 {0x091A02, 24},
524 {0x095A02, 26},
525 {0x093A02, 28},
526 {0x097A02, 30},
527 {0x090602, 32},
528 {0x094602, 34},
529 {0x092602, 36},
530 {0x096602, 38},
531 {0x091602, 40},
532 {0x095602, 42},
533 {0x093602, 44},
534 {0x097602, 46},
535 {0x090E02, 48},
536 {0x098E02, 49},
537 {0x094E02, 50},
538 {0x09CE02, 51},
539 {0x092E02, 52},
540 {0x09AE02, 53},
541 {0x096E02, 54},
542 {0x09EE02, 55},
543 {0x091E02, 56},
544 {0x099E02, 57},
545 {0x095E02, 58},
546 {0x09DE02, 59},
547 {0x093E02, 60},
548 {0x09BE02, 61},
549 {0x097E02, 62},
550 {0x09FE02, 63}
551};
552
553//--------------------------------
554// For Airoha AL7230, 2.4Ghz band
555// Edit by Tiger, (March, 9, 2005)
556// 24bit, MSB first
557
558//channel independent registers:
559u32 al7230_rf_data_24[] =
560{
561 (0x00<<24)|0x003790,
562 (0x01<<24)|0x133331,
563 (0x02<<24)|0x841FF2,
564 (0x03<<24)|0x3FDFA3,
565 (0x04<<24)|0x7FD784,
566 (0x05<<24)|0x802B55,
567 (0x06<<24)|0x56AF36,
568 (0x07<<24)|0xCE0207,
569 (0x08<<24)|0x6EBC08,
570 (0x09<<24)|0x221BB9,
571 (0x0A<<24)|0xE0000A,
572 (0x0B<<24)|0x08071B,
573 (0x0C<<24)|0x000A3C,
574 (0x0D<<24)|0xFFFFFD,
575 (0x0E<<24)|0x00000E,
576 (0x0F<<24)|0x1ABA8F
577};
578
579u32 al7230_channel_data_24[][2] =
580{
581 {(0x00<<24)|0x003790, (0x01<<24)|0x133331}, // channe1 01
582 {(0x00<<24)|0x003790, (0x01<<24)|0x1B3331}, // channe1 02
583 {(0x00<<24)|0x003790, (0x01<<24)|0x033331}, // channe1 03
584 {(0x00<<24)|0x003790, (0x01<<24)|0x0B3331}, // channe1 04
585 {(0x00<<24)|0x0037A0, (0x01<<24)|0x133331}, // channe1 05
586 {(0x00<<24)|0x0037A0, (0x01<<24)|0x1B3331}, // channe1 06
587 {(0x00<<24)|0x0037A0, (0x01<<24)|0x033331}, // channe1 07
588 {(0x00<<24)|0x0037A0, (0x01<<24)|0x0B3331}, // channe1 08
589 {(0x00<<24)|0x0037B0, (0x01<<24)|0x133331}, // channe1 09
590 {(0x00<<24)|0x0037B0, (0x01<<24)|0x1B3331}, // channe1 10
591 {(0x00<<24)|0x0037B0, (0x01<<24)|0x033331}, // channe1 11
592 {(0x00<<24)|0x0037B0, (0x01<<24)|0x0B3331}, // channe1 12
593 {(0x00<<24)|0x0037C0, (0x01<<24)|0x133331}, // channe1 13
594 {(0x00<<24)|0x0037C0, (0x01<<24)|0x066661} // channel 14
595};
596
597//channel independent registers:
598u32 al7230_rf_data_50[] =
599{
600 (0x00<<24)|0x0FF520,
601 (0x01<<24)|0x000001,
602 (0x02<<24)|0x451FE2,
603 (0x03<<24)|0x5FDFA3,
604 (0x04<<24)|0x6FD784,
605 (0x05<<24)|0x853F55,
606 (0x06<<24)|0x56AF36,
607 (0x07<<24)|0xCE0207,
608 (0x08<<24)|0x6EBC08,
609 (0x09<<24)|0x221BB9,
610 (0x0A<<24)|0xE0600A,
611 (0x0B<<24)|0x08044B,
612 (0x0C<<24)|0x00143C,
613 (0x0D<<24)|0xFFFFFD,
614 (0x0E<<24)|0x00000E,
615 (0x0F<<24)|0x12BACF //5Ghz default state
616};
617
618u32 al7230_channel_data_5[][4] =
619{
620 //channel dependent registers: 0x00, 0x01 and 0x04
621 //11J ===========
622 {184, (0x00<<24)|0x0FF520, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 184
623 {188, (0x00<<24)|0x0FF520, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 188
624 {192, (0x00<<24)|0x0FF530, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 192
625 {196, (0x00<<24)|0x0FF530, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 196
626 {8, (0x00<<24)|0x0FF540, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 008
627 {12, (0x00<<24)|0x0FF540, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 012
628 {16, (0x00<<24)|0x0FF550, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 016
629 {34, (0x00<<24)|0x0FF560, (0x01<<24)|0x055551, (0x04<<24)|0x77F784}, // channel 034
630 {38, (0x00<<24)|0x0FF570, (0x01<<24)|0x100001, (0x04<<24)|0x77F784}, // channel 038
631 {42, (0x00<<24)|0x0FF570, (0x01<<24)|0x1AAAA1, (0x04<<24)|0x77F784}, // channel 042
632 {46, (0x00<<24)|0x0FF570, (0x01<<24)|0x055551, (0x04<<24)|0x77F784}, // channel 046
633 //11 A/H =========
634 {36, (0x00<<24)|0x0FF560, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 036
635 {40, (0x00<<24)|0x0FF570, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 040
636 {44, (0x00<<24)|0x0FF570, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 044
637 {48, (0x00<<24)|0x0FF570, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 048
638 {52, (0x00<<24)|0x0FF580, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 052
639 {56, (0x00<<24)|0x0FF580, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 056
640 {60, (0x00<<24)|0x0FF580, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 060
641 {64, (0x00<<24)|0x0FF590, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 064
642 {100, (0x00<<24)|0x0FF5C0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 100
643 {104, (0x00<<24)|0x0FF5C0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 104
644 {108, (0x00<<24)|0x0FF5C0, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 108
645 {112, (0x00<<24)|0x0FF5D0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 112
646 {116, (0x00<<24)|0x0FF5D0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 116
647 {120, (0x00<<24)|0x0FF5D0, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 120
648 {124, (0x00<<24)|0x0FF5E0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 124
649 {128, (0x00<<24)|0x0FF5E0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 128
650 {132, (0x00<<24)|0x0FF5E0, (0x01<<24)|0x0AAAA1, (0x04<<24)|0x77F784}, // channel 132
651 {136, (0x00<<24)|0x0FF5F0, (0x01<<24)|0x155551, (0x04<<24)|0x77F784}, // channel 136
652 {140, (0x00<<24)|0x0FF5F0, (0x01<<24)|0x000001, (0x04<<24)|0x67F784}, // channel 140
653 {149, (0x00<<24)|0x0FF600, (0x01<<24)|0x180001, (0x04<<24)|0x77F784}, // channel 149
654 {153, (0x00<<24)|0x0FF600, (0x01<<24)|0x02AAA1, (0x04<<24)|0x77F784}, // channel 153
655 {157, (0x00<<24)|0x0FF600, (0x01<<24)|0x0D5551, (0x04<<24)|0x77F784}, // channel 157
656 {161, (0x00<<24)|0x0FF610, (0x01<<24)|0x180001, (0x04<<24)|0x77F784}, // channel 161
657 {165, (0x00<<24)|0x0FF610, (0x01<<24)|0x02AAA1, (0x04<<24)|0x77F784} // channel 165
658};
659
660//; RF Calibration <=== Register 0x0F
661//0x0F 0x1ABA8F; start from 2.4Ghz default state
662//0x0F 0x9ABA8F; TXDC compensation
663//0x0F 0x3ABA8F; RXFIL adjustment
664//0x0F 0x1ABA8F; restore 2.4Ghz default state
665
666//;TXVGA Mapping Table <=== Register 0x0B
667u32 al7230_txvga_data[][2] =
668{
669 {0x08040B, 0}, //TXVGA=0;
670 {0x08041B, 1}, //TXVGA=1;
671 {0x08042B, 2}, //TXVGA=2;
672 {0x08043B, 3}, //TXVGA=3;
673 {0x08044B, 4}, //TXVGA=4;
674 {0x08045B, 5}, //TXVGA=5;
675 {0x08046B, 6}, //TXVGA=6;
676 {0x08047B, 7}, //TXVGA=7;
677 {0x08048B, 8}, //TXVGA=8;
678 {0x08049B, 9}, //TXVGA=9;
679 {0x0804AB, 10}, //TXVGA=10;
680 {0x0804BB, 11}, //TXVGA=11;
681 {0x0804CB, 12}, //TXVGA=12;
682 {0x0804DB, 13}, //TXVGA=13;
683 {0x0804EB, 14}, //TXVGA=14;
684 {0x0804FB, 15}, //TXVGA=15;
685 {0x08050B, 16}, //TXVGA=16;
686 {0x08051B, 17}, //TXVGA=17;
687 {0x08052B, 18}, //TXVGA=18;
688 {0x08053B, 19}, //TXVGA=19;
689 {0x08054B, 20}, //TXVGA=20;
690 {0x08055B, 21}, //TXVGA=21;
691 {0x08056B, 22}, //TXVGA=22;
692 {0x08057B, 23}, //TXVGA=23;
693 {0x08058B, 24}, //TXVGA=24;
694 {0x08059B, 25}, //TXVGA=25;
695 {0x0805AB, 26}, //TXVGA=26;
696 {0x0805BB, 27}, //TXVGA=27;
697 {0x0805CB, 28}, //TXVGA=28;
698 {0x0805DB, 29}, //TXVGA=29;
699 {0x0805EB, 30}, //TXVGA=30;
700 {0x0805FB, 31}, //TXVGA=31;
701 {0x08060B, 32}, //TXVGA=32;
702 {0x08061B, 33}, //TXVGA=33;
703 {0x08062B, 34}, //TXVGA=34;
704 {0x08063B, 35}, //TXVGA=35;
705 {0x08064B, 36}, //TXVGA=36;
706 {0x08065B, 37}, //TXVGA=37;
707 {0x08066B, 38}, //TXVGA=38;
708 {0x08067B, 39}, //TXVGA=39;
709 {0x08068B, 40}, //TXVGA=40;
710 {0x08069B, 41}, //TXVGA=41;
711 {0x0806AB, 42}, //TXVGA=42;
712 {0x0806BB, 43}, //TXVGA=43;
713 {0x0806CB, 44}, //TXVGA=44;
714 {0x0806DB, 45}, //TXVGA=45;
715 {0x0806EB, 46}, //TXVGA=46;
716 {0x0806FB, 47}, //TXVGA=47;
717 {0x08070B, 48}, //TXVGA=48;
718 {0x08071B, 49}, //TXVGA=49;
719 {0x08072B, 50}, //TXVGA=50;
720 {0x08073B, 51}, //TXVGA=51;
721 {0x08074B, 52}, //TXVGA=52;
722 {0x08075B, 53}, //TXVGA=53;
723 {0x08076B, 54}, //TXVGA=54;
724 {0x08077B, 55}, //TXVGA=55;
725 {0x08078B, 56}, //TXVGA=56;
726 {0x08079B, 57}, //TXVGA=57;
727 {0x0807AB, 58}, //TXVGA=58;
728 {0x0807BB, 59}, //TXVGA=59;
729 {0x0807CB, 60}, //TXVGA=60;
730 {0x0807DB, 61}, //TXVGA=61;
731 {0x0807EB, 62}, //TXVGA=62;
732 {0x0807FB, 63}, //TXVGA=63;
733};
734//--------------------------------
735
736
737//; W89RF242 RFIC SPI programming initial data
738//; Winbond WLAN 11g RFIC BB-SPI register -- version FA5976A rev 1.3b
739//; Update Date: Ocotber 3, 2005 by PP10 Hsiang-Te Ho
740//;
741//; Version 1.3b revision items: (Oct. 1, 2005 by HTHo) for FA5976A
742u32 w89rf242_rf_data[] =
743{
744 (0x00<<24)|0xF86100, // 20060721 0xF86100, //; 3E184; MODA (0x00) -- Normal mode ; calibration off
745 (0x01<<24)|0xEFFFC2, //; 3BFFF; MODB (0x01) -- turn off RSSI, and other circuits are turned on
746 (0x02<<24)|0x102504, //; 04094; FSET (0x02) -- default 20MHz crystal ; Icmp=1.5mA
747 (0x03<<24)|0x026286, //; 0098A; FCHN (0x03) -- default CH7, 2442MHz
748 (0x04<<24)|0x000208, // 20060612.1.a 0x0002C8, // 20050818 // 20050816 0x000388
749 //; 02008; FCAL (0x04) -- XTAL Freq Trim=001000 (socket board#1); FA5976AYG_v1.3C
750 (0x05<<24)|0x24C60A, // 20060612.1.a 0x24C58A, // 941003 0x24C48A, // 20050818.2 0x24848A, // 20050818 // 20050816 0x24C48A
751 //; 09316; GANA (0x05) -- TX VGA default (TXVGA=0x18(12)) & TXGPK=110 ; FA5976A_1.3D
752 (0x06<<24)|0x3432CC, // 941003 0x26C34C, // 20050818 0x06B40C
753 //; 0D0CB; GANB (0x06) -- RXDC(DC offset) on; LNA=11; RXVGA=001011(11) ; RXFLSW=11(010001); RXGPK=00; RXGCF=00; -50dBm input
754 (0x07<<24)|0x0C68CE, // 20050818.2 0x0C66CE, // 20050818 // 20050816 0x0C68CE
755 //; 031A3; FILT (0x07) -- TX/RX filter with auto-tuning; TFLBW=011; RFLBW=100
756 (0x08<<24)|0x100010, //; 04000; TCAL (0x08) -- //for LO
757 (0x09<<24)|0x004012, // 20060612.1.a 0x6E4012, // 0x004012,
758 //; 1B900; RCALA (0x09) -- FASTS=11; HPDE=01 (100nsec); SEHP=1 (select B0 pin=RXHP); RXHP=1 (Turn on RXHP function)(FA5976A_1.3C)
759 (0x0A<<24)|0x704014, //; 1C100; RCALB (0x0A)
760 (0x0B<<24)|0x18BDD6, // 941003 0x1805D6, // 20050818.2 0x1801D6, // 20050818 // 20050816 0x1805D6
761 //; 062F7; IQCAL (0x0B) -- Turn on LO phase tuner=0111 & RX-LO phase = 0111; FA5976A_1.3B (2005/09/29)
762 (0x0C<<24)|0x575558, // 20050818.2 0x555558, // 20050818 // 20050816 0x575558
763 //; 15D55 ; IBSA (0x0C) -- IFPre =11 ; TC5376A_v1.3A for corner
764 (0x0D<<24)|0x55545A, // 20060612.1.a 0x55555A,
765 //; 15555 ; IBSB (0x0D)
766 (0x0E<<24)|0x5557DC, // 20060612.1.a 0x55555C, // 941003 0x5557DC,
767 //; 1555F ; IBSC (0x0E) -- IRLNA & IRLNB (PTAT & Const current)=01/01; FA5976B_1.3F (2005/11/25)
768 (0x10<<24)|0x000C20, // 941003 0x000020, // 20050818
769 //; 00030 ; TMODA (0x10) -- LNA_gain_step=0011 ; LNA=15/16dB
770 (0x11<<24)|0x0C0022, // 941003 0x030022 // 20050818.2 0x030022 // 20050818 // 20050816 0x0C0022
771 //; 03000 ; TMODB (0x11) -- Turn ON RX-Q path Test Switch; To improve IQ path group delay (FA5976A_1.3C)
772 (0x12<<24)|0x000024 // 20060612.1.a 0x001824 // 941003 add
773 //; TMODC (0x12) -- Turn OFF Tempearure sensor
774};
775
776u32 w89rf242_channel_data_24[][2] =
777{
778 {(0x03<<24)|0x025B06, (0x04<<24)|0x080408}, // channe1 01
779 {(0x03<<24)|0x025C46, (0x04<<24)|0x080408}, // channe1 02
780 {(0x03<<24)|0x025D86, (0x04<<24)|0x080408}, // channe1 03
781 {(0x03<<24)|0x025EC6, (0x04<<24)|0x080408}, // channe1 04
782 {(0x03<<24)|0x026006, (0x04<<24)|0x080408}, // channe1 05
783 {(0x03<<24)|0x026146, (0x04<<24)|0x080408}, // channe1 06
784 {(0x03<<24)|0x026286, (0x04<<24)|0x080408}, // channe1 07
785 {(0x03<<24)|0x0263C6, (0x04<<24)|0x080408}, // channe1 08
786 {(0x03<<24)|0x026506, (0x04<<24)|0x080408}, // channe1 09
787 {(0x03<<24)|0x026646, (0x04<<24)|0x080408}, // channe1 10
788 {(0x03<<24)|0x026786, (0x04<<24)|0x080408}, // channe1 11
789 {(0x03<<24)|0x0268C6, (0x04<<24)|0x080408}, // channe1 12
790 {(0x03<<24)|0x026A06, (0x04<<24)|0x080408}, // channe1 13
791 {(0x03<<24)|0x026D06, (0x04<<24)|0x080408} // channe1 14
792};
793
794u32 w89rf242_power_data_24[] = {(0x05<<24)|0x24C48A, (0x05<<24)|0x24C48A, (0x05<<24)|0x24C48A};
795
796// 20060315.6 Enlarge for new scale
797// 20060316.6 20060619.2.a add mapping array
798u32 w89rf242_txvga_old_mapping[][2] =
799{
800 {0, 0} , // New <-> Old
801 {1, 1} ,
802 {2, 2} ,
803 {3, 3} ,
804 {4, 4} ,
805 {6, 5} ,
806 {8, 6 },
807 {10, 7 },
808 {12, 8 },
809 {14, 9 },
810 {16, 10},
811 {18, 11},
812 {20, 12},
813 {22, 13},
814 {24, 14},
815 {26, 15},
816 {28, 16},
817 {30, 17},
818 {32, 18},
819 {34, 19},
820
821
822};
823
824// 20060619.3 modify from Bruce's mail
825u32 w89rf242_txvga_data[][5] =
826{
827 //low gain mode
828 { (0x05<<24)|0x24C00A, 0, 0x00292315, 0x0800FEFF, 0x52523131 },// ; min gain
829 { (0x05<<24)|0x24C80A, 1, 0x00292315, 0x0800FEFF, 0x52523131 },
830 { (0x05<<24)|0x24C04A, 2, 0x00292315, 0x0800FEFF, 0x52523131 },// (default) +14dBm (ANT)
831 { (0x05<<24)|0x24C84A, 3, 0x00292315, 0x0800FEFF, 0x52523131 },
832
833 //TXVGA=0x10
834 { (0x05<<24)|0x24C40A, 4, 0x00292315, 0x0800FEFF, 0x60603838 },
835 { (0x05<<24)|0x24C40A, 5, 0x00262114, 0x0700FEFF, 0x65653B3B },
836
837 //TXVGA=0x11
838 { (0x05<<24)|0x24C44A, 6, 0x00241F13, 0x0700FFFF, 0x58583333 },
839 { (0x05<<24)|0x24C44A, 7, 0x00292315, 0x0800FEFF, 0x5E5E3737 },
840
841 //TXVGA=0x12
842 { (0x05<<24)|0x24C48A, 8, 0x00262114, 0x0700FEFF, 0x53533030 },
843 { (0x05<<24)|0x24C48A, 9, 0x00241F13, 0x0700FFFF, 0x59593434 },
844
845 //TXVGA=0x13
846 { (0x05<<24)|0x24C4CA, 10, 0x00292315, 0x0800FEFF, 0x52523030 },
847 { (0x05<<24)|0x24C4CA, 11, 0x00262114, 0x0700FEFF, 0x56563232 },
848
849 //TXVGA=0x14
850 { (0x05<<24)|0x24C50A, 12, 0x00292315, 0x0800FEFF, 0x54543131 },
851 { (0x05<<24)|0x24C50A, 13, 0x00262114, 0x0700FEFF, 0x58583434 },
852
853 //TXVGA=0x15
854 { (0x05<<24)|0x24C54A, 14, 0x00292315, 0x0800FEFF, 0x54543131 },
855 { (0x05<<24)|0x24C54A, 15, 0x00262114, 0x0700FEFF, 0x59593434 },
856
857 //TXVGA=0x16
858 { (0x05<<24)|0x24C58A, 16, 0x00292315, 0x0800FEFF, 0x55553131 },
859 { (0x05<<24)|0x24C58A, 17, 0x00292315, 0x0800FEFF, 0x5B5B3535 },
860
861 //TXVGA=0x17
862 { (0x05<<24)|0x24C5CA, 18, 0x00262114, 0x0700FEFF, 0x51512F2F },
863 { (0x05<<24)|0x24C5CA, 19, 0x00241F13, 0x0700FFFF, 0x55553131 },
864
865 //TXVGA=0x18
866 { (0x05<<24)|0x24C60A, 20, 0x00292315, 0x0800FEFF, 0x4F4F2E2E },
867 { (0x05<<24)|0x24C60A, 21, 0x00262114, 0x0700FEFF, 0x53533030 },
868
869 //TXVGA=0x19
870 { (0x05<<24)|0x24C64A, 22, 0x00292315, 0x0800FEFF, 0x4E4E2D2D },
871 { (0x05<<24)|0x24C64A, 23, 0x00262114, 0x0700FEFF, 0x53533030 },
872
873 //TXVGA=0x1A
874 { (0x05<<24)|0x24C68A, 24, 0x00292315, 0x0800FEFF, 0x50502E2E },
875 { (0x05<<24)|0x24C68A, 25, 0x00262114, 0x0700FEFF, 0x55553131 },
876
877 //TXVGA=0x1B
878 { (0x05<<24)|0x24C6CA, 26, 0x00262114, 0x0700FEFF, 0x53533030 },
879 { (0x05<<24)|0x24C6CA, 27, 0x00292315, 0x0800FEFF, 0x5A5A3434 },
880
881 //TXVGA=0x1C
882 { (0x05<<24)|0x24C70A, 28, 0x00292315, 0x0800FEFF, 0x55553131 },
883 { (0x05<<24)|0x24C70A, 29, 0x00292315, 0x0800FEFF, 0x5D5D3636 },
884
885 //TXVGA=0x1D
886 { (0x05<<24)|0x24C74A, 30, 0x00292315, 0x0800FEFF, 0x5F5F3737 },
887 { (0x05<<24)|0x24C74A, 31, 0x00262114, 0x0700FEFF, 0x65653B3B },
888
889 //TXVGA=0x1E
890 { (0x05<<24)|0x24C78A, 32, 0x00292315, 0x0800FEFF, 0x66663B3B },
891 { (0x05<<24)|0x24C78A, 33, 0x00262114, 0x0700FEFF, 0x70704141 },
892
893 //TXVGA=0x1F
894 { (0x05<<24)|0x24C7CA, 34, 0x00292315, 0x0800FEFF, 0x72724242 }
895};
896
897///////////////////////////////////////////////////////////////////////////////////////////////////
898///////////////////////////////////////////////////////////////////////////////////////////////////
899///////////////////////////////////////////////////////////////////////////////////////////////////
900
901
902
903//=============================================================================================================
904// Uxx_ReadEthernetAddress --
905//
906// Routine Description:
907// Reads in the Ethernet address from the IC.
908//
909// Arguments:
910// pHwData - The pHwData structure
911//
912// Return Value:
913//
914// The address is stored in EthernetIDAddr.
915//=============================================================================================================
916void
917Uxx_ReadEthernetAddress( phw_data_t pHwData )
918{
919 u32 ltmp;
920
921 // Reading Ethernet address from EEPROM and set into hardware due to MAC address maybe change.
922 // Only unplug and plug again can make hardware read EEPROM again. 20060727
923 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08000000 ); // Start EEPROM access + Read + address(0x0d)
924 Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp );
925 *(PUSHORT)pHwData->PermanentMacAddress = cpu_to_le16((u16)ltmp); //20060926 anson's endian
926 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08010000 ); // Start EEPROM access + Read + address(0x0d)
927 Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp );
928 *(PUSHORT)(pHwData->PermanentMacAddress + 2) = cpu_to_le16((u16)ltmp); //20060926 anson's endian
929 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08020000 ); // Start EEPROM access + Read + address(0x0d)
930 Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp );
931 *(PUSHORT)(pHwData->PermanentMacAddress + 4) = cpu_to_le16((u16)ltmp); //20060926 anson's endian
932 *(PUSHORT)(pHwData->PermanentMacAddress + 6) = 0;
933 Wb35Reg_WriteSync( pHwData, 0x03e8, cpu_to_le32(*(PULONG)pHwData->PermanentMacAddress) ); //20060926 anson's endian
934 Wb35Reg_WriteSync( pHwData, 0x03ec, cpu_to_le32(*(PULONG)(pHwData->PermanentMacAddress+4)) ); //20060926 anson's endian
935}
936
937
938//===============================================================================================================
939// CardGetMulticastBit --
940// Description:
941// For a given multicast address, returns the byte and bit in the card multicast registers that it hashes to.
942// Calls CardComputeCrc() to determine the CRC value.
943// Arguments:
944// Address - the address
945// Byte - the byte that it hashes to
946// Value - will have a 1 in the relevant bit
947// Return Value:
948// None.
949//==============================================================================================================
950void CardGetMulticastBit( u8 Address[ETH_LENGTH_OF_ADDRESS],
951 u8 *Byte, u8 *Value )
952{
953 u32 Crc;
954 u32 BitNumber;
955
956 // First compute the CRC.
957 Crc = CardComputeCrc(Address, ETH_LENGTH_OF_ADDRESS);
958
959 // The computed CRC is bit0~31 from left to right
960 //At first we should do right shift 25bits, and read 7bits by using '&', 2^7=128
961 BitNumber = (u32) ((Crc >> 26) & 0x3f);
962
963 *Byte = (u8) (BitNumber >> 3);// 900514 original (BitNumber / 8)
964 *Value = (u8) ((u8)1 << (BitNumber % 8));
965}
966
967void Uxx_power_on_procedure( phw_data_t pHwData )
968{
969 u32 ltmp, loop;
970
971 if( pHwData->phy_type <= RF_MAXIM_V1 )
972 Wb35Reg_WriteSync( pHwData, 0x03d4, 0xffffff38 );
973 else
974 {
975 Wb35Reg_WriteSync( pHwData, 0x03f4, 0xFF5807FF );// 20060721 For NEW IC 0xFF5807FF
976
977 // 20060511.1 Fix the following 4 steps for Rx of RF 2230 initial fail
978 Wb35Reg_WriteSync( pHwData, 0x03d4, 0x80 );// regulator on only
979 OS_SLEEP(10000); // Modify 20051221.1.b
980 Wb35Reg_WriteSync( pHwData, 0x03d4, 0xb8 );// REG_ON RF_RSTN on, and
981 OS_SLEEP(10000); // Modify 20051221.1.b
982
983 ltmp = 0x4968;
984 if( (pHwData->phy_type == RF_WB_242) ||
985 (RF_WB_242_1 == pHwData->phy_type) ) // 20060619.5 Add
986 ltmp = 0x4468;
987 Wb35Reg_WriteSync( pHwData, 0x03d0, ltmp );
988
989 Wb35Reg_WriteSync( pHwData, 0x03d4, 0xa0 );// PLL_PD REF_PD set to 0
990
991 OS_SLEEP(20000); // Modify 20051221.1.b
992 Wb35Reg_ReadSync( pHwData, 0x03d0, &ltmp );
993 loop = 500; // Wait for 5 second 20061101
994 while( !(ltmp & 0x20) && loop-- )
995 {
996 OS_SLEEP(10000); // Modify 20051221.1.b
997 if( !Wb35Reg_ReadSync( pHwData, 0x03d0, &ltmp ) )
998 break;
999 }
1000
1001 Wb35Reg_WriteSync( pHwData, 0x03d4, 0xe0 );// MLK_EN
1002 }
1003
1004 Wb35Reg_WriteSync( pHwData, 0x03b0, 1 );// Reset hardware first
1005 OS_SLEEP(10000); // Add this 20051221.1.b
1006
1007 // Set burst write delay
1008 Wb35Reg_WriteSync( pHwData, 0x03f8, 0x7ff );
1009}
1010
1011void Set_ChanIndep_RfData_al7230_24( phw_data_t pHwData, u32 *pltmp ,char number)
1012{
1013 u8 i;
1014
1015 for( i=0; i<number; i++ )
1016 {
1017 pHwData->phy_para[i] = al7230_rf_data_24[i];
1018 pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_rf_data_24[i]&0xffffff);
1019 }
1020}
1021
1022void Set_ChanIndep_RfData_al7230_50( phw_data_t pHwData, u32 *pltmp, char number)
1023{
1024 u8 i;
1025
1026 for( i=0; i<number; i++ )
1027 {
1028 pHwData->phy_para[i] = al7230_rf_data_50[i];
1029 pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_rf_data_50[i]&0xffffff);
1030 }
1031}
1032
1033
1034//=============================================================================================================
1035// RFSynthesizer_initial --
1036//=============================================================================================================
1037void
1038RFSynthesizer_initial(phw_data_t pHwData)
1039{
1040 u32 altmp[32];
1041 PULONG pltmp = altmp;
1042 u32 ltmp;
1043 u8 number=0x00; // The number of register vale
1044 u8 i;
1045
1046 //
1047 // bit[31] SPI Enable.
1048 // 1=perform synthesizer program operation. This bit will
1049 // cleared automatically after the operation is completed.
1050 // bit[30] SPI R/W Control
1051 // 0=write, 1=read
1052 // bit[29:24] SPI Data Format Length
1053 // bit[17:4 ] RF Data bits.
1054 // bit[3 :0 ] RF address.
1055 switch( pHwData->phy_type )
1056 {
1057 case RF_MAXIM_2825:
1058 case RF_MAXIM_V1: // 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331)
1059 number = sizeof(max2825_rf_data)/sizeof(max2825_rf_data[0]);
1060 for( i=0; i<number; i++ )
1061 {
1062 pHwData->phy_para[i] = max2825_rf_data[i];// Backup Rf parameter
1063 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2825_rf_data[i], 18);
1064 }
1065 break;
1066
1067 case RF_MAXIM_2827:
1068 number = sizeof(max2827_rf_data)/sizeof(max2827_rf_data[0]);
1069 for( i=0; i<number; i++ )
1070 {
1071 pHwData->phy_para[i] = max2827_rf_data[i];
1072 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_rf_data[i], 18);
1073 }
1074 break;
1075
1076 case RF_MAXIM_2828:
1077 number = sizeof(max2828_rf_data)/sizeof(max2828_rf_data[0]);
1078 for( i=0; i<number; i++ )
1079 {
1080 pHwData->phy_para[i] = max2828_rf_data[i];
1081 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_rf_data[i], 18);
1082 }
1083 break;
1084
1085 case RF_MAXIM_2829:
1086 number = sizeof(max2829_rf_data)/sizeof(max2829_rf_data[0]);
1087 for( i=0; i<number; i++ )
1088 {
1089 pHwData->phy_para[i] = max2829_rf_data[i];
1090 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2829_rf_data[i], 18);
1091 }
1092 break;
1093
1094 case RF_AIROHA_2230:
1095 number = sizeof(al2230_rf_data)/sizeof(al2230_rf_data[0]);
1096 for( i=0; i<number; i++ )
1097 {
1098 pHwData->phy_para[i] = al2230_rf_data[i];
1099 pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_rf_data[i], 20);
1100 }
1101 break;
1102
1103 case RF_AIROHA_2230S:
1104 number = sizeof(al2230s_rf_data)/sizeof(al2230s_rf_data[0]);
1105 for( i=0; i<number; i++ )
1106 {
1107 pHwData->phy_para[i] = al2230s_rf_data[i];
1108 pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230s_rf_data[i], 20);
1109 }
1110 break;
1111
1112 case RF_AIROHA_7230:
1113
1114 //Start to fill RF parameters, PLL_ON should be pulled low.
1115 Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000000 );
1116#ifdef _PE_STATE_DUMP_
1117 WBDEBUG(("* PLL_ON low\n"));
1118#endif
1119
1120 number = sizeof(al7230_rf_data_24)/sizeof(al7230_rf_data_24[0]);
1121 Set_ChanIndep_RfData_al7230_24(pHwData, pltmp, number);
1122 break;
1123
1124 case RF_WB_242:
1125 case RF_WB_242_1: // 20060619.5 Add
1126 number = sizeof(w89rf242_rf_data)/sizeof(w89rf242_rf_data[0]);
1127 for( i=0; i<number; i++ )
1128 {
1129 ltmp = w89rf242_rf_data[i];
1130 if( i == 4 ) // Update the VCO trim from EEPROM
1131 {
1132 ltmp &= ~0xff0; // Mask bit4 ~bit11
1133 ltmp |= pHwData->VCO_trim<<4;
1134 }
1135
1136 pHwData->phy_para[i] = ltmp;
1137 pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( ltmp, 24);
1138 }
1139 break;
1140 }
1141
1142 pHwData->phy_number = number;
1143
1144 // The 16 is the maximum capability of hardware. Here use 12
1145 if( number > 12 ) {
1146 //Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 12, NO_INCREMENT );
1147 for( i=0; i<12; i++ ) // For Al2230
1148 Wb35Reg_WriteSync( pHwData, 0x0864, pltmp[i] );
1149
1150 pltmp += 12;
1151 number -= 12;
1152 }
1153
1154 // Write to register. number must less and equal than 16
1155 for( i=0; i<number; i++ )
1156 Wb35Reg_WriteSync( pHwData, 0x864, pltmp[i] );
1157
1158 // 20060630.1 Calibration only 1 time
1159 if( pHwData->CalOneTime )
1160 return;
1161 pHwData->CalOneTime = 1;
1162
1163 switch( pHwData->phy_type )
1164 {
1165 case RF_AIROHA_2230:
1166
1167 // 20060511.1 --- Modifying the follow step for Rx issue-----------------
1168 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x07<<20)|0xE168E, 20);
1169 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1170 OS_SLEEP(10000);
1171 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_rf_data[7], 20);
1172 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1173 OS_SLEEP(10000);
1174
1175 case RF_AIROHA_2230S: // 20060420 Add this
1176
1177 // 20060511.1 --- Modifying the follow step for Rx issue-----------------
1178 Wb35Reg_WriteSync( pHwData, 0x03d4, 0x80 );// regulator on only
1179 OS_SLEEP(10000); // Modify 20051221.1.b
1180
1181 Wb35Reg_WriteSync( pHwData, 0x03d4, 0xa0 );// PLL_PD REF_PD set to 0
1182 OS_SLEEP(10000); // Modify 20051221.1.b
1183
1184 Wb35Reg_WriteSync( pHwData, 0x03d4, 0xe0 );// MLK_EN
1185 Wb35Reg_WriteSync( pHwData, 0x03b0, 1 );// Reset hardware first
1186 OS_SLEEP(10000); // Add this 20051221.1.b
1187 //------------------------------------------------------------------------
1188
1189 // The follow code doesn't use the burst-write mode
1190 //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01A0); //Raise Initial Setting
1191 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01A0, 20);
1192 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1193
1194 ltmp = pHwData->Wb35Reg.BB5C & 0xfffff000;
1195 Wb35Reg_WriteSync( pHwData, 0x105c, ltmp );
1196 pHwData->Wb35Reg.BB50 |= 0x13;//(MASK_IQCAL_MODE|MASK_CALIB_START);//20060315.1 modify
1197 Wb35Reg_WriteSync( pHwData, 0x1050, pHwData->Wb35Reg.BB50);
1198 OS_SLEEP(5000);
1199
1200 //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01B0); //Activate Filter Cal.
1201 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01B0, 20);
1202 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1203 OS_SLEEP(5000);
1204
1205 //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01e0); //Activate TX DCC
1206 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01E0, 20);
1207 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1208 OS_SLEEP(5000);
1209
1210 //phy_set_rf_data(phw_data, 0x0F, (0x0F<<20) | 0xF01A0); //Resotre Initial Setting
1211 ltmp = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( (0x0F<<20) | 0xF01A0, 20);
1212 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1213
1214// //Force TXI(Q)P(N) to normal control
1215 Wb35Reg_WriteSync( pHwData, 0x105c, pHwData->Wb35Reg.BB5C );
1216 pHwData->Wb35Reg.BB50 &= ~0x13;//(MASK_IQCAL_MODE|MASK_CALIB_START);
1217 Wb35Reg_WriteSync( pHwData, 0x1050, pHwData->Wb35Reg.BB50);
1218 break;
1219
1220 case RF_AIROHA_7230:
1221
1222 //RF parameters have filled completely, PLL_ON should be
1223 //pulled high
1224 Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000080 );
1225 #ifdef _PE_STATE_DUMP_
1226 WBDEBUG(("* PLL_ON high\n"));
1227 #endif
1228
1229 //2.4GHz
1230 //ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x1ABA8F;
1231 //Wb35Reg_WriteSync pHwData, 0x0864, ltmp );
1232 //OS_SLEEP(1000); // Sleep 1 ms
1233 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x9ABA8F;
1234 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1235 OS_SLEEP(5000);
1236 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x3ABA8F;
1237 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1238 OS_SLEEP(5000);
1239 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x1ABA8F;
1240 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1241 OS_SLEEP(5000);
1242
1243 //5GHz
1244 Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000000 );
1245 #ifdef _PE_STATE_DUMP_
1246 WBDEBUG(("* PLL_ON low\n"));
1247 #endif
1248
1249 number = sizeof(al7230_rf_data_50)/sizeof(al7230_rf_data_50[0]);
1250 Set_ChanIndep_RfData_al7230_50(pHwData, pltmp, number);
1251 // Write to register. number must less and equal than 16
1252 for( i=0; i<number; i++ )
1253 Wb35Reg_WriteSync( pHwData, 0x0864, pltmp[i] );
1254 OS_SLEEP(5000);
1255
1256 Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000080 );
1257 #ifdef _PE_STATE_DUMP_
1258 WBDEBUG(("* PLL_ON high\n"));
1259 #endif
1260
1261 //ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x12BACF;
1262 //Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1263 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x9ABA8F;
1264 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1265 OS_SLEEP(5000);
1266 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x3ABA8F;
1267 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1268 OS_SLEEP(5000);
1269 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x12BACF;
1270 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1271 OS_SLEEP(5000);
1272
1273 //Wb35Reg_WriteSync( pHwData, 0x03dc, 0x00000080 );
1274 //WBDEBUG(("* PLL_ON high\n"));
1275 break;
1276
1277 case RF_WB_242:
1278 case RF_WB_242_1: // 20060619.5 Add
1279
1280 //
1281 // ; Version 1.3B revision items: for FA5976A , October 3, 2005 by HTHo
1282 //
1283 ltmp = pHwData->Wb35Reg.BB5C & 0xfffff000;
1284 Wb35Reg_WriteSync( pHwData, 0x105c, ltmp );
1285 Wb35Reg_WriteSync( pHwData, 0x1058, 0 );
1286 pHwData->Wb35Reg.BB50 |= 0x3;//(MASK_IQCAL_MODE|MASK_CALIB_START);//20060630
1287 Wb35Reg_WriteSync( pHwData, 0x1050, pHwData->Wb35Reg.BB50);
1288
1289 //----- Calibration (1). VCO frequency calibration
1290 //Calibration (1a.0). Synthesizer reset (HTHo corrected 2005/05/10)
1291 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x0F<<24) | 0x00101E, 24);
1292 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1293 OS_SLEEP( 5000 ); // Sleep 5ms
1294 //Calibration (1a). VCO frequency calibration mode ; waiting 2msec VCO calibration time
1295 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFE69c0, 24);
1296 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1297 OS_SLEEP( 2000 ); // Sleep 2ms
1298
1299 //----- Calibration (2). TX baseband Gm-C filter auto-tuning
1300 //Calibration (2a). turn off ENCAL signal
1301 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xF8EBC0, 24);
1302 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1303 //Calibration (2b.0). TX filter auto-tuning BW: TFLBW=101 (TC5376A default)
1304 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x07<<24) | 0x0C68CE, 24);
1305 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1306 //Calibration (2b). send TX reset signal (HTHo corrected May 10, 2005)
1307 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x0F<<24) | 0x00201E, 24);
1308 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1309 //Calibration (2c). turn-on TX Gm-C filter auto-tuning
1310 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFCEBC0, 24);
1311 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1312 OS_SLEEP( 150 ); // Sleep 150 us
1313 //turn off ENCAL signal
1314 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xF8EBC0, 24);
1315 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1316
1317 //----- Calibration (3). RX baseband Gm-C filter auto-tuning
1318 //Calibration (3a). turn off ENCAL signal
1319 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1320 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1321 //Calibration (3b.0). RX filter auto-tuning BW: RFLBW=100 (TC5376A+corner default; July 26, 2005)
1322 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x07<<24) | 0x0C68CE, 24);
1323 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1324 //Calibration (3b). send RX reset signal (HTHo corrected May 10, 2005)
1325 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x0F<<24) | 0x00401E, 24);
1326 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1327 //Calibration (3c). turn-on RX Gm-C filter auto-tuning
1328 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFEEDC0, 24);
1329 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1330 OS_SLEEP( 150 ); // Sleep 150 us
1331 //Calibration (3e). turn off ENCAL signal
1332 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1333 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1334
1335 //----- Calibration (4). TX LO leakage calibration
1336 //Calibration (4a). TX LO leakage calibration
1337 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFD6BC0, 24);
1338 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1339 OS_SLEEP( 150 ); // Sleep 150 us
1340
1341 //----- Calibration (5). RX DC offset calibration
1342 //Calibration (5a). turn off ENCAL signal and set to RX SW DC caliration mode
1343 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1344 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1345 //Calibration (5b). turn off AGC servo-loop & RSSI
1346 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x01<<24) | 0xEBFFC2, 24);
1347 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1348
1349 //; for LNA=11 --------
1350 //Calibration (5c-h). RX DC offset current bias ON; & LNA=11; RXVGA=111111
1351 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x343FCC, 24);
1352 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1353 //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time
1354 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24);
1355 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1356 OS_SLEEP(2000); // Sleep 2ms
1357 //Calibration (5f). turn off ENCAL signal
1358 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1359 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1360
1361 //; for LNA=10 --------
1362 //Calibration (5c-m). RX DC offset current bias ON; & LNA=10; RXVGA=111111
1363 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x342FCC, 24);
1364 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1365 //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time
1366 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24);
1367 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1368 OS_SLEEP(2000); // Sleep 2ms
1369 //Calibration (5f). turn off ENCAL signal
1370 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1371 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1372
1373 //; for LNA=01 --------
1374 //Calibration (5c-m). RX DC offset current bias ON; & LNA=01; RXVGA=111111
1375 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x341FCC, 24);
1376 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1377 //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time
1378 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24);
1379 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1380 OS_SLEEP(2000); // Sleep 2ms
1381 //Calibration (5f). turn off ENCAL signal
1382 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1383 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1384
1385 //; for LNA=00 --------
1386 //Calibration (5c-l). RX DC offset current bias ON; & LNA=00; RXVGA=111111
1387 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x06<<24) | 0x340FCC, 24);
1388 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1389 //Calibration (5d). turn on RX DC offset cal function; and waiting 2 msec cal time
1390 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFF6DC0, 24);
1391 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1392 OS_SLEEP(2000); // Sleep 2ms
1393 //Calibration (5f). turn off ENCAL signal
1394 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xFAEDC0, 24);
1395 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1396 //Calibration (5g). turn on AGC servo-loop
1397 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x01<<24) | 0xEFFFC2, 24);
1398 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1399
1400 //; ----- Calibration (7). Switch RF chip to normal mode
1401 //0x00 0xF86100 ; 3E184 ; Switch RF chip to normal mode
1402// OS_SLEEP(10000); // @@ 20060721
1403 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( (0x00<<24) | 0xF86100, 24);
1404 Wb35Reg_WriteSync( pHwData, 0x0864, ltmp );
1405 OS_SLEEP(5000); // Sleep 5 ms
1406
1407// //write back
1408// Wb35Reg_WriteSync( pHwData, 0x105c, pHwData->Wb35Reg.BB5C );
1409// pHwData->Wb35Reg.BB50 &= ~0x13;//(MASK_IQCAL_MODE|MASK_CALIB_START); // 20060315.1 fix
1410// Wb35Reg_WriteSync( pHwData, 0x1050, pHwData->Wb35Reg.BB50);
1411// OS_SLEEP(1000); // Sleep 1 ms
1412 break;
1413 }
1414}
1415
1416void BBProcessor_AL7230_2400( phw_data_t pHwData)
1417{
1418 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
1419 u32 pltmp[12];
1420
1421 pltmp[0] = 0x16A8337A; // 0x16a5215f; // 0x1000 AGC_Ctrl1
1422 pltmp[1] = 0x9AFF9AA6; // 0x9aff9ca6; // 0x1004 AGC_Ctrl2
1423 pltmp[2] = 0x55D00A04; // 0x55d00a04; // 0x1008 AGC_Ctrl3
1424 pltmp[3] = 0xFFF72031; // 0xFfFf2138; // 0x100c AGC_Ctrl4
1425 pWb35Reg->BB0C = 0xFFF72031;
1426 pltmp[4] = 0x0FacDCC5; // 0x1010 AGC_Ctrl5 // 20050927 0x0FacDCB7
1427 pltmp[5] = 0x00CAA333; // 0x00eaa333; // 0x1014 AGC_Ctrl6
1428 pltmp[6] = 0xF2211111; // 0x11111111; // 0x1018 AGC_Ctrl7
1429 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1430 pltmp[8] = 0x06443440; // 0x1020 AGC_Ctrl9
1431 pltmp[9] = 0xA8002A79; // 0xa9002A79; // 0x1024 AGC_Ctrl10
1432 pltmp[10] = 0x40000528; // 20050927 0x40000228
1433 pltmp[11] = 0x232D7F30; // 0x23457f30;// 0x102c A_ACQ_Ctrl
1434 pWb35Reg->BB2C = 0x232D7F30;
1435 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1436
1437 pltmp[0] = 0x00002c54; // 0x1030 B_ACQ_Ctrl
1438 pWb35Reg->BB30 = 0x00002c54;
1439 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1440 pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl
1441 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1442 pWb35Reg->BB3C = 0x00000000;
1443 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1444 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1445 pltmp[6] = 0x00332C1B; // 0x00453B24; // 0x1048 11b TX RC filter
1446 pltmp[7] = 0x0A00FEFF; // 0x0E00FEFF; // 0x104c 11b TX RC filter
1447 pltmp[8] = 0x2B106208; // 0x1050 MODE_Ctrl
1448 pWb35Reg->BB50 = 0x2B106208;
1449 pltmp[9] = 0; // 0x1054
1450 pWb35Reg->BB54 = 0x00000000;
1451 pltmp[10] = 0x52524242; // 0x64645252; // 0x1058 IQ_Alpha
1452 pWb35Reg->BB58 = 0x52524242;
1453 pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel
1454 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1455
1456}
1457
1458void BBProcessor_AL7230_5000( phw_data_t pHwData)
1459{
1460 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
1461 u32 pltmp[12];
1462
1463 pltmp[0] = 0x16AA6678; // 0x1000 AGC_Ctrl1
1464 pltmp[1] = 0x9AFFA0B2; // 0x1004 AGC_Ctrl2
1465 pltmp[2] = 0x55D00A04; // 0x1008 AGC_Ctrl3
1466 pltmp[3] = 0xEFFF233E; // 0x100c AGC_Ctrl4
1467 pWb35Reg->BB0C = 0xEFFF233E;
1468 pltmp[4] = 0x0FacDCC5; // 0x1010 AGC_Ctrl5 // 20050927 0x0FacDCB7
1469 pltmp[5] = 0x00CAA333; // 0x1014 AGC_Ctrl6
1470 pltmp[6] = 0xF2432111; // 0x1018 AGC_Ctrl7
1471 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1472 pltmp[8] = 0x05C43440; // 0x1020 AGC_Ctrl9
1473 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1474 pltmp[10] = 0x40000528; // 20050927 0x40000228
1475 pltmp[11] = 0x232FDF30;// 0x102c A_ACQ_Ctrl
1476 pWb35Reg->BB2C = 0x232FDF30;
1477 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1478
1479 pltmp[0] = 0x80002C7C; // 0x1030 B_ACQ_Ctrl
1480 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1481 pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl
1482 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1483 pWb35Reg->BB3C = 0x00000000;
1484 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1485 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1486 pltmp[6] = 0x00332C1B; // 0x1048 11b TX RC filter
1487 pltmp[7] = 0x0A00FEFF; // 0x104c 11b TX RC filter
1488 pltmp[8] = 0x2B107208; // 0x1050 MODE_Ctrl
1489 pWb35Reg->BB50 = 0x2B107208;
1490 pltmp[9] = 0; // 0x1054
1491 pWb35Reg->BB54 = 0x00000000;
1492 pltmp[10] = 0x52524242; // 0x1058 IQ_Alpha
1493 pWb35Reg->BB58 = 0x52524242;
1494 pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel
1495 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1496
1497}
1498
1499//=============================================================================================================
1500// BBProcessorPowerupInit --
1501//
1502// Description:
1503// Initialize the Baseband processor.
1504//
1505// Arguments:
1506// pHwData - Handle of the USB Device.
1507//
1508// Return values:
1509// None.
1510//=============================================================================================================
1511void
1512BBProcessor_initial( phw_data_t pHwData )
1513{
1514 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
1515 u32 i, pltmp[12];
1516
1517 switch( pHwData->phy_type )
1518 {
1519 case RF_MAXIM_V1: // Initializng the Winbond 2nd BB(with Phy board (v1) + Maxim 331)
1520
1521 pltmp[0] = 0x16F47E77; // 0x1000 AGC_Ctrl1
1522 pltmp[1] = 0x9AFFAEA4; // 0x1004 AGC_Ctrl2
1523 pltmp[2] = 0x55D00A04; // 0x1008 AGC_Ctrl3
1524 pltmp[3] = 0xEFFF1A34; // 0x100c AGC_Ctrl4
1525 pWb35Reg->BB0C = 0xEFFF1A34;
1526 pltmp[4] = 0x0FABE0B7; // 0x1010 AGC_Ctrl5
1527 pltmp[5] = 0x00CAA332; // 0x1014 AGC_Ctrl6
1528 pltmp[6] = 0xF6632111; // 0x1018 AGC_Ctrl7
1529 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1530 pltmp[8] = 0x04CC3640; // 0x1020 AGC_Ctrl9
1531 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1532 pltmp[10] = (pHwData->phy_type==3) ? 0x40000a28 : 0x40000228; // 0x1028 MAXIM_331(b31=0) + WBRF_V1(b11=1) : MAXIM_331(b31=0) + WBRF_V2(b11=0)
1533 pltmp[11] = 0x232FDF30; // 0x102c A_ACQ_Ctrl
1534 pWb35Reg->BB2C = 0x232FDF30; //Modify for 33's 1.0.95.xxx version, antenna 1
1535 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1536
1537 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1538 pWb35Reg->BB30 = 0x00002C54;
1539 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1540 pltmp[2] = 0x5B6C8769; // 0x1038 B_TXRX_Ctrl
1541 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1542 pWb35Reg->BB3C = 0x00000000;
1543 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1544 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1545 pltmp[6] = 0x00453B24; // 0x1048 11b TX RC filter
1546 pltmp[7] = 0x0E00FEFF; // 0x104c 11b TX RC filter
1547 pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl
1548 pWb35Reg->BB50 = 0x27106208;
1549 pltmp[9] = 0; // 0x1054
1550 pWb35Reg->BB54 = 0x00000000;
1551 pltmp[10] = 0x64646464; // 0x1058 IQ_Alpha
1552 pWb35Reg->BB58 = 0x64646464;
1553 pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel
1554 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1555
1556 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1557 break;
1558
1559 //------------------------------------------------------------------
1560 //[20040722 WK]
1561 //Only for baseband version 2
1562// case RF_MAXIM_317:
1563 case RF_MAXIM_2825:
1564 case RF_MAXIM_2827:
1565 case RF_MAXIM_2828:
1566
1567 pltmp[0] = 0x16b47e77; // 0x1000 AGC_Ctrl1
1568 pltmp[1] = 0x9affaea4; // 0x1004 AGC_Ctrl2
1569 pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3
1570 pltmp[3] = 0xefff1a34; // 0x100c AGC_Ctrl4
1571 pWb35Reg->BB0C = 0xefff1a34;
1572 pltmp[4] = 0x0fabe0b7; // 0x1010 AGC_Ctrl5
1573 pltmp[5] = 0x00caa332; // 0x1014 AGC_Ctrl6
1574 pltmp[6] = 0xf6632111; // 0x1018 AGC_Ctrl7
1575 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1576 pltmp[8] = 0x04CC3640; // 0x1020 AGC_Ctrl9
1577 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1578 pltmp[10] = 0x40000528; // 0x40000128; Modify for 33's 1.0.95
1579 pltmp[11] = 0x232fdf30; // 0x102c A_ACQ_Ctrl
1580 pWb35Reg->BB2C = 0x232fdf30; //Modify for 33's 1.0.95.xxx version, antenna 1
1581 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1582
1583 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1584 pWb35Reg->BB30 = 0x00002C54;
1585 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1586 pltmp[2] = 0x5B6C8769; // 0x1038 B_TXRX_Ctrl
1587 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1588 pWb35Reg->BB3C = 0x00000000;
1589 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1590 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1591 pltmp[6] = 0x00453B24; // 0x1048 11b TX RC filter
1592 pltmp[7] = 0x0D00FDFF; // 0x104c 11b TX RC filter
1593 pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl
1594 pWb35Reg->BB50 = 0x27106208;
1595 pltmp[9] = 0; // 0x1054
1596 pWb35Reg->BB54 = 0x00000000;
1597 pltmp[10] = 0x64646464; // 0x1058 IQ_Alpha
1598 pWb35Reg->BB58 = 0x64646464;
1599 pltmp[11] = 0xAA28C000; // 0x105c DC_Cancel
1600 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1601
1602 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1603 break;
1604
1605 case RF_MAXIM_2829:
1606
1607 pltmp[0] = 0x16b47e77; // 0x1000 AGC_Ctrl1
1608 pltmp[1] = 0x9affaea4; // 0x1004 AGC_Ctrl2
1609 pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3
1610 pltmp[3] = 0xf4ff1632; // 0xefff1a34; // 0x100c AGC_Ctrl4 Modify for 33's 1.0.95
1611 pWb35Reg->BB0C = 0xf4ff1632; // 0xefff1a34; Modify for 33's 1.0.95
1612 pltmp[4] = 0x0fabe0b7; // 0x1010 AGC_Ctrl5
1613 pltmp[5] = 0x00caa332; // 0x1014 AGC_Ctrl6
1614 pltmp[6] = 0xf8632112; // 0xf6632111; // 0x1018 AGC_Ctrl7 Modify for 33's 1.0.95
1615 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1616 pltmp[8] = 0x04CC3640; // 0x1020 AGC_Ctrl9
1617 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1618 pltmp[10] = 0x40000528; // 0x40000128; modify for 33's 1.0.95
1619 pltmp[11] = 0x232fdf30; // 0x102c A_ACQ_Ctrl
1620 pWb35Reg->BB2C = 0x232fdf30; //Modify for 33's 1.0.95.xxx version, antenna 1
1621 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1622
1623 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1624 pWb35Reg->BB30 = 0x00002C54;
1625 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1626 pltmp[2] = 0x5b2c8769; // 0x5B6C8769; // 0x1038 B_TXRX_Ctrl Modify for 33's 1.0.95
1627 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1628 pWb35Reg->BB3C = 0x00000000;
1629 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1630 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1631 pltmp[6] = 0x002c2617; // 0x00453B24; // 0x1048 11b TX RC filter Modify for 33's 1.0.95
1632 pltmp[7] = 0x0800feff; // 0x0D00FDFF; // 0x104c 11b TX RC filter Modify for 33's 1.0.95
1633 pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl
1634 pWb35Reg->BB50 = 0x27106208;
1635 pltmp[9] = 0; // 0x1054
1636 pWb35Reg->BB54 = 0x00000000;
1637 pltmp[10] = 0x64644a4a; // 0x64646464; // 0x1058 IQ_Alpha Modify for 33's 1.0.95
1638 pWb35Reg->BB58 = 0x64646464;
1639 pltmp[11] = 0xAA28C000; // 0x105c DC_Cancel
1640 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1641
1642 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1643 break;
1644
1645 case RF_AIROHA_2230:
1646
1647 pltmp[0] = 0X16764A77; // 0x1000 AGC_Ctrl1 //0x16765A77
1648 pltmp[1] = 0x9affafb2; // 0x1004 AGC_Ctrl2
1649 pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3
1650 pltmp[3] = 0xFFFd203c; // 0xFFFb203a; // 0x100c AGC_Ctrl4 Modify for 33's 1.0.95.xxx version
1651 pWb35Reg->BB0C = 0xFFFd203c;
1652 pltmp[4] = 0X0FBFDCc5; // 0X0FBFDCA0; // 0x1010 AGC_Ctrl5 //0x0FB2E0B7 Modify for 33's 1.0.95.xxx version
1653 pltmp[5] = 0x00caa332; // 0x00caa333; // 0x1014 AGC_Ctrl6 Modify for 33's 1.0.95.xxx version
1654 pltmp[6] = 0XF6632111; // 0XF1632112; // 0x1018 AGC_Ctrl7 //0xf6632112 Modify for 33's 1.0.95.xxx version
1655 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1656 pltmp[8] = 0x04C43640; // 0x1020 AGC_Ctrl9
1657 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1658 pltmp[10] = 0X40000528; //0x40000228
1659 pltmp[11] = 0x232dfF30; // 0x232A9F30; // 0x102c A_ACQ_Ctrl //0x232a9730
1660 pWb35Reg->BB2C = 0x232dfF30; //Modify for 33's 1.0.95.xxx version, antenna 1
1661 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1662
1663 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1664 pWb35Reg->BB30 = 0x00002C54;
1665 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1666 pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl //0x5B6C8769
1667 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1668 pWb35Reg->BB3C = 0x00000000;
1669 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1670 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1671 pltmp[6] = BB48_DEFAULT_AL2230_11G; // 0x1048 11b TX RC filter 20060613.2
1672 pWb35Reg->BB48 = BB48_DEFAULT_AL2230_11G; // 20051221 ch14 20060613.2
1673 pltmp[7] = BB4C_DEFAULT_AL2230_11G; // 0x104c 11b TX RC filter 20060613.2
1674 pWb35Reg->BB4C = BB4C_DEFAULT_AL2230_11G; // 20060613.1 20060613.2
1675 pltmp[8] = 0x27106200; // 0x1050 MODE_Ctrl
1676 pWb35Reg->BB50 = 0x27106200;
1677 pltmp[9] = 0; // 0x1054
1678 pWb35Reg->BB54 = 0x00000000;
1679 pltmp[10] = 0x52524242; // 0x1058 IQ_Alpha
1680 pWb35Reg->BB58 = 0x52524242;
1681 pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel
1682 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1683
1684 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1685 break;
1686
1687 case RF_AIROHA_2230S: // 20060420 Add this
1688
1689 pltmp[0] = 0X16764A77; // 0x1000 AGC_Ctrl1 //0x16765A77
1690 pltmp[1] = 0x9affafb2; // 0x1004 AGC_Ctrl2
1691 pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3
1692 pltmp[3] = 0xFFFd203c; // 0xFFFb203a; // 0x100c AGC_Ctrl4 Modify for 33's 1.0.95.xxx version
1693 pWb35Reg->BB0C = 0xFFFd203c;
1694 pltmp[4] = 0X0FBFDCc5; // 0X0FBFDCA0; // 0x1010 AGC_Ctrl5 //0x0FB2E0B7 Modify for 33's 1.0.95.xxx version
1695 pltmp[5] = 0x00caa332; // 0x00caa333; // 0x1014 AGC_Ctrl6 Modify for 33's 1.0.95.xxx version
1696 pltmp[6] = 0XF6632111; // 0XF1632112; // 0x1018 AGC_Ctrl7 //0xf6632112 Modify for 33's 1.0.95.xxx version
1697 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1698 pltmp[8] = 0x04C43640; // 0x1020 AGC_Ctrl9
1699 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1700 pltmp[10] = 0X40000528; //0x40000228
1701 pltmp[11] = 0x232dfF30; // 0x232A9F30; // 0x102c A_ACQ_Ctrl //0x232a9730
1702 pWb35Reg->BB2C = 0x232dfF30; //Modify for 33's 1.0.95.xxx version, antenna 1
1703 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1704
1705 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1706 pWb35Reg->BB30 = 0x00002C54;
1707 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1708 pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl //0x5B6C8769
1709 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1710 pWb35Reg->BB3C = 0x00000000;
1711 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1712 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1713 pltmp[6] = BB48_DEFAULT_AL2230_11G; // 0x1048 11b TX RC filter 20060613.2
1714 pWb35Reg->BB48 = BB48_DEFAULT_AL2230_11G; // 20051221 ch14 20060613.2
1715 pltmp[7] = BB4C_DEFAULT_AL2230_11G; // 0x104c 11b TX RC filter 20060613.2
1716 pWb35Reg->BB4C = BB4C_DEFAULT_AL2230_11G; // 20060613.1
1717 pltmp[8] = 0x27106200; // 0x1050 MODE_Ctrl
1718 pWb35Reg->BB50 = 0x27106200;
1719 pltmp[9] = 0; // 0x1054
1720 pWb35Reg->BB54 = 0x00000000;
1721 pltmp[10] = 0x52523232; // 20060419 0x52524242; // 0x1058 IQ_Alpha
1722 pWb35Reg->BB58 = 0x52523232; // 20060419 0x52524242;
1723 pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel
1724 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1725
1726 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1727 break;
1728
1729 case RF_AIROHA_7230:
1730/*
1731 pltmp[0] = 0x16a84a77; // 0x1000 AGC_Ctrl1
1732 pltmp[1] = 0x9affafb2; // 0x1004 AGC_Ctrl2
1733 pltmp[2] = 0x55d00a04; // 0x1008 AGC_Ctrl3
1734 pltmp[3] = 0xFFFb203a; // 0x100c AGC_Ctrl4
1735 pWb35Reg->BB0c = 0xFFFb203a;
1736 pltmp[4] = 0x0FBFDCB7; // 0x1010 AGC_Ctrl5
1737 pltmp[5] = 0x00caa333; // 0x1014 AGC_Ctrl6
1738 pltmp[6] = 0xf6632112; // 0x1018 AGC_Ctrl7
1739 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1740 pltmp[8] = 0x04C43640; // 0x1020 AGC_Ctrl9
1741 pltmp[9] = 0x00002A79; // 0x1024 AGC_Ctrl10
1742 pltmp[10] = 0x40000228;
1743 pltmp[11] = 0x232A9F30;// 0x102c A_ACQ_Ctrl
1744 pWb35Reg->BB2c = 0x232A9F30;
1745 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1746
1747 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1748 pWb35Reg->BB30 = 0x00002C54;
1749 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1750 pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl
1751 pltmp[3] = 0x00000000; // 0x103c 11a TX LS filter
1752 pWb35Reg->BB3c = 0x00000000;
1753 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1754 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1755 pltmp[6] = 0x00453B24; // 0x1048 11b TX RC filter
1756 pltmp[7] = 0x0E00FEFF; // 0x104c 11b TX RC filter
1757 pltmp[8] = 0x27106200; // 0x1050 MODE_Ctrl
1758 pWb35Reg->BB50 = 0x27106200;
1759 pltmp[9] = 0; // 0x1054
1760 pWb35Reg->BB54 = 0x00000000;
1761 pltmp[10] = 0x64645252; // 0x1058 IQ_Alpha
1762 pWb35Reg->BB58 = 0x64645252;
1763 pltmp[11] = 0xAA0AC000; // 0x105c DC_Cancel
1764 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1765*/
1766 BBProcessor_AL7230_2400( pHwData );
1767
1768 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1769 break;
1770
1771 case RF_WB_242:
1772 case RF_WB_242_1: // 20060619.5 Add
1773
1774 pltmp[0] = 0x16A8525D; // 0x1000 AGC_Ctrl1
1775 pltmp[1] = 0x9AFF9ABA; // 0x1004 AGC_Ctrl2
1776 pltmp[2] = 0x55D00A04; // 0x1008 AGC_Ctrl3
1777 pltmp[3] = 0xEEE91C32; // 0x100c AGC_Ctrl4
1778 pWb35Reg->BB0C = 0xEEE91C32;
1779 pltmp[4] = 0x0FACDCC5; // 0x1010 AGC_Ctrl5
1780 pltmp[5] = 0x000AA344; // 0x1014 AGC_Ctrl6
1781 pltmp[6] = 0x22222221; // 0x1018 AGC_Ctrl7
1782 pltmp[7] = 0x0FA3F0ED; // 0x101c AGC_Ctrl8
1783 pltmp[8] = 0x04CC3440; // 20051018 0x03CB3440; // 0x1020 AGC_Ctrl9 20051014 0x03C33440
1784 pltmp[9] = 0xA9002A79; // 0x1024 AGC_Ctrl10
1785 pltmp[10] = 0x40000528; // 0x1028
1786 pltmp[11] = 0x23457F30; // 0x102c A_ACQ_Ctrl
1787 pWb35Reg->BB2C = 0x23457F30;
1788 Wb35Reg_BurstWrite( pHwData, 0x1000, pltmp, 12, AUTO_INCREMENT );
1789
1790 pltmp[0] = 0x00002C54; // 0x1030 B_ACQ_Ctrl
1791 pWb35Reg->BB30 = 0x00002C54;
1792 pltmp[1] = 0x00C0D6C5; // 0x1034 A_TXRX_Ctrl
1793 pltmp[2] = 0x5B2C8769; // 0x1038 B_TXRX_Ctrl
1794 pltmp[3] = pHwData->BB3c_cal; // 0x103c 11a TX LS filter
1795 pWb35Reg->BB3C = pHwData->BB3c_cal;
1796 pltmp[4] = 0x00003F29; // 0x1040 11a TX LS filter
1797 pltmp[5] = 0x0EFEFBFE; // 0x1044 11a TX LS filter
1798 pltmp[6] = BB48_DEFAULT_WB242_11G; // 0x1048 11b TX RC filter 20060613.2
1799 pWb35Reg->BB48 = BB48_DEFAULT_WB242_11G; // 20060613.1 20060613.2
1800 pltmp[7] = BB4C_DEFAULT_WB242_11G; // 0x104c 11b TX RC filter 20060613.2
1801 pWb35Reg->BB4C = BB4C_DEFAULT_WB242_11G; // 20060613.1 20060613.2
1802 pltmp[8] = 0x27106208; // 0x1050 MODE_Ctrl
1803 pWb35Reg->BB50 = 0x27106208;
1804 pltmp[9] = pHwData->BB54_cal; // 0x1054
1805 pWb35Reg->BB54 = pHwData->BB54_cal;
1806 pltmp[10] = 0x52523131; // 0x1058 IQ_Alpha
1807 pWb35Reg->BB58 = 0x52523131;
1808 pltmp[11] = 0xAA0AC000; // 20060825 0xAA2AC000; // 0x105c DC_Cancel
1809 Wb35Reg_BurstWrite( pHwData, 0x1030, pltmp, 12, AUTO_INCREMENT );
1810
1811 Wb35Reg_Write( pHwData, 0x1070, 0x00000045 );
1812 break;
1813 }
1814
1815 // Fill the LNA table
1816 pWb35Reg->LNAValue[0] = (u8)(pWb35Reg->BB0C & 0xff);
1817 pWb35Reg->LNAValue[1] = 0;
1818 pWb35Reg->LNAValue[2] = (u8)((pWb35Reg->BB0C & 0xff00)>>8);
1819 pWb35Reg->LNAValue[3] = 0;
1820
1821 // Fill SQ3 table
1822 for( i=0; i<MAX_SQ3_FILTER_SIZE; i++ )
1823 pWb35Reg->SQ3_filter[i] = 0x2f; // half of Bit 0 ~ 6
1824}
1825
1826void set_tx_power_per_channel_max2829( phw_data_t pHwData, ChanInfo Channel)
1827{
1828 RFSynthesizer_SetPowerIndex( pHwData, 100 ); // 20060620.1 Modify
1829}
1830
1831void set_tx_power_per_channel_al2230( phw_data_t pHwData, ChanInfo Channel )
1832{
1833 u8 index = 100;
1834
1835 if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff) // 20060620.1 Add
1836 index = pHwData->TxVgaFor24[Channel.ChanNo - 1];
1837
1838 RFSynthesizer_SetPowerIndex( pHwData, index );
1839}
1840
1841void set_tx_power_per_channel_al7230( phw_data_t pHwData, ChanInfo Channel)
1842{
1843 u8 i, index = 100;
1844
1845 switch ( Channel.band )
1846 {
1847 case BAND_TYPE_DSSS:
1848 case BAND_TYPE_OFDM_24:
1849 {
1850 if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff)
1851 index = pHwData->TxVgaFor24[Channel.ChanNo - 1];
1852 }
1853 break;
1854 case BAND_TYPE_OFDM_5:
1855 {
1856 for (i =0; i<35; i++)
1857 {
1858 if (Channel.ChanNo == pHwData->TxVgaFor50[i].ChanNo)
1859 {
1860 if (pHwData->TxVgaFor50[i].TxVgaValue != 0xff)
1861 index = pHwData->TxVgaFor50[i].TxVgaValue;
1862 break;
1863 }
1864 }
1865 }
1866 break;
1867 }
1868 RFSynthesizer_SetPowerIndex( pHwData, index );
1869}
1870
1871void set_tx_power_per_channel_wb242( phw_data_t pHwData, ChanInfo Channel)
1872{
1873 u8 index = 100;
1874
1875 switch ( Channel.band )
1876 {
1877 case BAND_TYPE_DSSS:
1878 case BAND_TYPE_OFDM_24:
1879 {
1880 if (pHwData->TxVgaFor24[Channel.ChanNo - 1] != 0xff)
1881 index = pHwData->TxVgaFor24[Channel.ChanNo - 1];
1882 }
1883 break;
1884 case BAND_TYPE_OFDM_5:
1885 break;
1886 }
1887 RFSynthesizer_SetPowerIndex( pHwData, index );
1888}
1889
1890//=============================================================================================================
1891// RFSynthesizer_SwitchingChannel --
1892//
1893// Description:
1894// Swithch the RF channel.
1895//
1896// Arguments:
1897// pHwData - Handle of the USB Device.
1898// Channel - The channel no.
1899//
1900// Return values:
1901// None.
1902//=============================================================================================================
1903void
1904RFSynthesizer_SwitchingChannel( phw_data_t pHwData, ChanInfo Channel )
1905{
1906 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
1907 u32 pltmp[16]; // The 16 is the maximum capability of hardware
1908 u32 count, ltmp;
1909 u8 i, j, number;
1910 u8 ChnlTmp;
1911
1912 switch( pHwData->phy_type )
1913 {
1914 case RF_MAXIM_2825:
1915 case RF_MAXIM_V1: // 11g Winbond 2nd BB(with Phy board (v1) + Maxim 331)
1916
1917 if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 13
1918 {
1919 for( i=0; i<3; i++ )
1920 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2825_channel_data_24[Channel.ChanNo-1][i], 18);
1921 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1922 }
1923 RFSynthesizer_SetPowerIndex( pHwData, 100 );
1924 break;
1925
1926 case RF_MAXIM_2827:
1927
1928 if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 13
1929 {
1930 for( i=0; i<3; i++ )
1931 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_channel_data_24[Channel.ChanNo-1][i], 18);
1932 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1933 }
1934 else if( Channel.band == BAND_TYPE_OFDM_5 ) // channel 36 ~ 64
1935 {
1936 ChnlTmp = (Channel.ChanNo - 36) / 4;
1937 for( i=0; i<3; i++ )
1938 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_channel_data_50[ChnlTmp][i], 18);
1939 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1940 }
1941 RFSynthesizer_SetPowerIndex( pHwData, 100 );
1942 break;
1943
1944 case RF_MAXIM_2828:
1945
1946 if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 13
1947 {
1948 for( i=0; i<3; i++ )
1949 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_channel_data_24[Channel.ChanNo-1][i], 18);
1950 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1951 }
1952 else if( Channel.band == BAND_TYPE_OFDM_5 ) // channel 36 ~ 64
1953 {
1954 ChnlTmp = (Channel.ChanNo - 36) / 4;
1955 for ( i = 0; i < 3; i++)
1956 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_channel_data_50[ChnlTmp][i], 18);
1957 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1958 }
1959 RFSynthesizer_SetPowerIndex( pHwData, 100 );
1960 break;
1961
1962 case RF_MAXIM_2829:
1963
1964 if( Channel.band <= BAND_TYPE_OFDM_24)
1965 {
1966 for( i=0; i<3; i++ )
1967 pltmp[i] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2829_channel_data_24[Channel.ChanNo-1][i], 18);
1968 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1969 }
1970 else if( Channel.band == BAND_TYPE_OFDM_5 )
1971 {
1972 count = sizeof(max2829_channel_data_50) / sizeof(max2829_channel_data_50[0]);
1973
1974 for( i=0; i<count; i++ )
1975 {
1976 if( max2829_channel_data_50[i][0] == Channel.ChanNo )
1977 {
1978 for( j=0; j<3; j++ )
1979 pltmp[j] = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2829_channel_data_50[i][j+1], 18);
1980 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
1981
1982 if( (max2829_channel_data_50[i][3] & 0x3FFFF) == 0x2A946 )
1983 {
1984 ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( (5<<18)|0x2A906, 18);
1985 Wb35Reg_Write( pHwData, 0x0864, ltmp );
1986 }
1987 else // 0x2A9C6
1988 {
1989 ltmp = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( (5<<18)|0x2A986, 18);
1990 Wb35Reg_Write( pHwData, 0x0864, ltmp );
1991 }
1992 }
1993 }
1994 }
1995 set_tx_power_per_channel_max2829( pHwData, Channel );
1996 break;
1997
1998 case RF_AIROHA_2230:
1999 case RF_AIROHA_2230S: // 20060420 Add this
2000
2001 if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 14
2002 {
2003 for( i=0; i<2; i++ )
2004 pltmp[i] = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_channel_data_24[Channel.ChanNo-1][i], 20);
2005 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 2, NO_INCREMENT );
2006 }
2007 set_tx_power_per_channel_al2230( pHwData, Channel );
2008 break;
2009
2010 case RF_AIROHA_7230:
2011
2012 //Start to fill RF parameters, PLL_ON should be pulled low.
2013 //Wb35Reg_Write( pHwData, 0x03dc, 0x00000000 );
2014 //WBDEBUG(("* PLL_ON low\n"));
2015
2016 //Channel independent registers
2017 if( Channel.band != pHwData->band)
2018 {
2019 if (Channel.band <= BAND_TYPE_OFDM_24)
2020 {
2021 //Update BB register
2022 BBProcessor_AL7230_2400(pHwData);
2023
2024 number = sizeof(al7230_rf_data_24)/sizeof(al7230_rf_data_24[0]);
2025 Set_ChanIndep_RfData_al7230_24(pHwData, pltmp, number);
2026 }
2027 else
2028 {
2029 //Update BB register
2030 BBProcessor_AL7230_5000(pHwData);
2031
2032 number = sizeof(al7230_rf_data_50)/sizeof(al7230_rf_data_50[0]);
2033 Set_ChanIndep_RfData_al7230_50(pHwData, pltmp, number);
2034 }
2035
2036 // Write to register. number must less and equal than 16
2037 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, number, NO_INCREMENT );
2038 #ifdef _PE_STATE_DUMP_
2039 WBDEBUG(("Band changed\n"));
2040 #endif
2041 }
2042
2043 if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 14
2044 {
2045 for( i=0; i<2; i++ )
2046 pltmp[i] = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_channel_data_24[Channel.ChanNo-1][i]&0xffffff);
2047 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 2, NO_INCREMENT );
2048 }
2049 else if( Channel.band == BAND_TYPE_OFDM_5 )
2050 {
2051 //Update Reg12
2052 if ((Channel.ChanNo > 64) && (Channel.ChanNo <= 165))
2053 {
2054 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x00143c;
2055 Wb35Reg_Write( pHwData, 0x0864, ltmp );
2056 }
2057 else //reg12 = 0x00147c at Channel 4920 ~ 5320
2058 {
2059 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | 0x00147c;
2060 Wb35Reg_Write( pHwData, 0x0864, ltmp );
2061 }
2062
2063 count = sizeof(al7230_channel_data_5) / sizeof(al7230_channel_data_5[0]);
2064
2065 for (i=0; i<count; i++)
2066 {
2067 if (al7230_channel_data_5[i][0] == Channel.ChanNo)
2068 {
2069 for( j=0; j<3; j++ )
2070 pltmp[j] = (1 << 31) | (0 << 30) | (24 << 24) | ( al7230_channel_data_5[i][j+1]&0xffffff);
2071 Wb35Reg_BurstWrite( pHwData, 0x0864, pltmp, 3, NO_INCREMENT );
2072 }
2073 }
2074 }
2075 set_tx_power_per_channel_al7230(pHwData, Channel);
2076 break;
2077
2078 case RF_WB_242:
2079 case RF_WB_242_1: // 20060619.5 Add
2080
2081 if( Channel.band <= BAND_TYPE_OFDM_24 ) // channel 1 ~ 14
2082 {
2083 ltmp = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( w89rf242_channel_data_24[Channel.ChanNo-1][0], 24);
2084 Wb35Reg_Write( pHwData, 0x864, ltmp );
2085 }
2086 set_tx_power_per_channel_wb242(pHwData, Channel);
2087 break;
2088 }
2089
2090 if( Channel.band <= BAND_TYPE_OFDM_24 )
2091 {
2092 // BB: select 2.4 GHz, bit[12-11]=00
2093 pWb35Reg->BB50 &= ~(BIT(11)|BIT(12));
2094 Wb35Reg_Write( pHwData, 0x1050, pWb35Reg->BB50 ); // MODE_Ctrl
2095 // MAC: select 2.4 GHz, bit[5]=0
2096 pWb35Reg->M78_ERPInformation &= ~BIT(5);
2097 Wb35Reg_Write( pHwData, 0x0878, pWb35Reg->M78_ERPInformation );
2098 // enable 11b Baseband
2099 pWb35Reg->BB30 &= ~BIT(31);
2100 Wb35Reg_Write( pHwData, 0x1030, pWb35Reg->BB30 );
2101 }
2102 else if( (Channel.band == BAND_TYPE_OFDM_5) )
2103 {
2104 // BB: select 5 GHz
2105 pWb35Reg->BB50 &= ~(BIT(11)|BIT(12));
2106 if (Channel.ChanNo <=64 )
2107 pWb35Reg->BB50 |= BIT(12); // 10-5.25GHz
2108 else if ((Channel.ChanNo >= 100) && (Channel.ChanNo <= 124))
2109 pWb35Reg->BB50 |= BIT(11); // 01-5.48GHz
2110 else if ((Channel.ChanNo >=128) && (Channel.ChanNo <= 161))
2111 pWb35Reg->BB50 |= (BIT(12)|BIT(11)); // 11-5.775GHz
2112 else //Chan 184 ~ 196 will use bit[12-11] = 10 in version sh-src-1.2.25
2113 pWb35Reg->BB50 |= BIT(12);
2114 Wb35Reg_Write( pHwData, 0x1050, pWb35Reg->BB50 ); // MODE_Ctrl
2115
2116 //(1) M78 should alway use 2.4G setting when using RF_AIROHA_7230
2117 //(2) BB30 has been updated previously.
2118 if (pHwData->phy_type != RF_AIROHA_7230)
2119 {
2120 // MAC: select 5 GHz, bit[5]=1
2121 pWb35Reg->M78_ERPInformation |= BIT(5);
2122 Wb35Reg_Write( pHwData, 0x0878, pWb35Reg->M78_ERPInformation );
2123
2124 // disable 11b Baseband
2125 pWb35Reg->BB30 |= BIT(31);
2126 Wb35Reg_Write( pHwData, 0x1030, pWb35Reg->BB30 );
2127 }
2128 }
2129}
2130
2131//Set the tx power directly from DUT GUI, not from the EEPROM. Return the current setting
2132u8 RFSynthesizer_SetPowerIndex( phw_data_t pHwData, u8 PowerIndex )
2133{
2134 u32 Band = pHwData->band;
2135 u8 index=0;
2136
2137 if( pHwData->power_index == PowerIndex ) // 20060620.1 Add
2138 return PowerIndex;
2139
2140 if (RF_MAXIM_2825 == pHwData->phy_type)
2141 {
2142 // Channel 1 - 13
2143 index = RFSynthesizer_SetMaxim2825Power( pHwData, PowerIndex );
2144 }
2145 else if (RF_MAXIM_2827 == pHwData->phy_type)
2146 {
2147 if( Band <= BAND_TYPE_OFDM_24 ) // Channel 1 - 13
2148 index = RFSynthesizer_SetMaxim2827_24Power( pHwData, PowerIndex );
2149 else// if( Band == BAND_TYPE_OFDM_5 ) // Channel 36 - 64
2150 index = RFSynthesizer_SetMaxim2827_50Power( pHwData, PowerIndex );
2151 }
2152 else if (RF_MAXIM_2828 == pHwData->phy_type)
2153 {
2154 if( Band <= BAND_TYPE_OFDM_24 ) // Channel 1 - 13
2155 index = RFSynthesizer_SetMaxim2828_24Power( pHwData, PowerIndex );
2156 else// if( Band == BAND_TYPE_OFDM_5 ) // Channel 36 - 64
2157 index = RFSynthesizer_SetMaxim2828_50Power( pHwData, PowerIndex );
2158 }
2159 else if( RF_AIROHA_2230 == pHwData->phy_type )
2160 {
2161 //Power index: 0 ~ 63 // Channel 1 - 14
2162 index = RFSynthesizer_SetAiroha2230Power( pHwData, PowerIndex );
2163 index = (u8)al2230_txvga_data[index][1];
2164 }
2165 else if( RF_AIROHA_2230S == pHwData->phy_type ) // 20060420 Add this
2166 {
2167 //Power index: 0 ~ 63 // Channel 1 - 14
2168 index = RFSynthesizer_SetAiroha2230Power( pHwData, PowerIndex );
2169 index = (u8)al2230_txvga_data[index][1];
2170 }
2171 else if( RF_AIROHA_7230 == pHwData->phy_type )
2172 {
2173 //Power index: 0 ~ 63
2174 index = RFSynthesizer_SetAiroha7230Power( pHwData, PowerIndex );
2175 index = (u8)al7230_txvga_data[index][1];
2176 }
2177 else if( (RF_WB_242 == pHwData->phy_type) ||
2178 (RF_WB_242_1 == pHwData->phy_type) ) // 20060619.5 Add
2179 {
2180 //Power index: 0 ~ 19 for original. New range is 0 ~ 33
2181 index = RFSynthesizer_SetWinbond242Power( pHwData, PowerIndex );
2182 index = (u8)w89rf242_txvga_data[index][1];
2183 }
2184
2185 pHwData->power_index = index; // Backup current
2186 return index;
2187}
2188
2189//-- Sub function
2190u8 RFSynthesizer_SetMaxim2828_24Power( phw_data_t pHwData, u8 index )
2191{
2192 u32 PowerData;
2193 if( index > 1 ) index = 1;
2194 PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_power_data_24[index], 18);
2195 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2196 return index;
2197}
2198//--
2199u8 RFSynthesizer_SetMaxim2828_50Power( phw_data_t pHwData, u8 index )
2200{
2201 u32 PowerData;
2202 if( index > 1 ) index = 1;
2203 PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2828_power_data_50[index], 18);
2204 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2205 return index;
2206}
2207//--
2208u8 RFSynthesizer_SetMaxim2827_24Power( phw_data_t pHwData, u8 index )
2209{
2210 u32 PowerData;
2211 if( index > 1 ) index = 1;
2212 PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_power_data_24[index], 18);
2213 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2214 return index;
2215}
2216//--
2217u8 RFSynthesizer_SetMaxim2827_50Power( phw_data_t pHwData, u8 index )
2218{
2219 u32 PowerData;
2220 if( index > 1 ) index = 1;
2221 PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2827_power_data_50[index], 18);
2222 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2223 return index;
2224}
2225//--
2226u8 RFSynthesizer_SetMaxim2825Power( phw_data_t pHwData, u8 index )
2227{
2228 u32 PowerData;
2229 if( index > 1 ) index = 1;
2230 PowerData = (1 << 31) | (0 << 30) | (18 << 24) | BitReverse( max2825_power_data_24[index], 18);
2231 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2232 return index;
2233}
2234//--
2235u8 RFSynthesizer_SetAiroha2230Power( phw_data_t pHwData, u8 index )
2236{
2237 u32 PowerData;
2238 u8 i,count;
2239
2240 count = sizeof(al2230_txvga_data) / sizeof(al2230_txvga_data[0]);
2241 for (i=0; i<count; i++)
2242 {
2243 if (al2230_txvga_data[i][1] >= index)
2244 break;
2245 }
2246 if (i == count)
2247 i--;
2248
2249 PowerData = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( al2230_txvga_data[i][0], 20);
2250 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2251 return i;
2252}
2253//--
2254u8 RFSynthesizer_SetAiroha7230Power( phw_data_t pHwData, u8 index )
2255{
2256 u32 PowerData;
2257 u8 i,count;
2258
2259 //PowerData = (1 << 31) | (0 << 30) | (20 << 24) | BitReverse( airoha_power_data_24[index], 20);
2260 count = sizeof(al7230_txvga_data) / sizeof(al7230_txvga_data[0]);
2261 for (i=0; i<count; i++)
2262 {
2263 if (al7230_txvga_data[i][1] >= index)
2264 break;
2265 }
2266 if (i == count)
2267 i--;
2268 PowerData = (1 << 31) | (0 << 30) | (24 << 24) | (al7230_txvga_data[i][0]&0xffffff);
2269 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2270 return i;
2271}
2272
2273u8 RFSynthesizer_SetWinbond242Power( phw_data_t pHwData, u8 index )
2274{
2275 u32 PowerData;
2276 u8 i,count;
2277
2278 count = sizeof(w89rf242_txvga_data) / sizeof(w89rf242_txvga_data[0]);
2279 for (i=0; i<count; i++)
2280 {
2281 if (w89rf242_txvga_data[i][1] >= index)
2282 break;
2283 }
2284 if (i == count)
2285 i--;
2286
2287 // Set TxVga into RF
2288 PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( w89rf242_txvga_data[i][0], 24);
2289 Wb35Reg_Write( pHwData, 0x0864, PowerData );
2290
2291 // Update BB48 BB4C BB58 for high precision txvga
2292 Wb35Reg_Write( pHwData, 0x1048, w89rf242_txvga_data[i][2] );
2293 Wb35Reg_Write( pHwData, 0x104c, w89rf242_txvga_data[i][3] );
2294 Wb35Reg_Write( pHwData, 0x1058, w89rf242_txvga_data[i][4] );
2295
2296// Rf vga 0 ~ 3 for temperature compensate. It will affect the scan Bss.
2297// The i value equals to 8 or 7 usually. So It's not necessary to setup this RF register.
2298// if( i <= 3 )
2299// PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( 0x000024, 24 );
2300// else
2301// PowerData = (1 << 31) | (0 << 30) | (24 << 24) | BitReverse( 0x001824, 24 );
2302// Wb35Reg_Write( pHwData, 0x0864, PowerData );
2303 return i;
2304}
2305
2306//===========================================================================================================
2307// Dxx_initial --
2308// Mxx_initial --
2309 //
2310// Routine Description:
2311// Initial the hardware setting and module variable
2312 //
2313//===========================================================================================================
2314void Dxx_initial( phw_data_t pHwData )
2315{
2316 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
2317
2318 // Old IC:Single mode only.
2319 // New IC: operation decide by Software set bit[4]. 1:multiple 0: single
2320 pWb35Reg->D00_DmaControl = 0xc0000004; //Txon, Rxon, multiple Rx for new 4k DMA
2321 //Txon, Rxon, single Rx for old 8k ASIC
2322 if( !HAL_USB_MODE_BURST( pHwData ) )
2323 pWb35Reg->D00_DmaControl = 0xc0000000;//Txon, Rxon, single Rx for new 4k DMA
2324
2325 Wb35Reg_WriteSync( pHwData, 0x0400, pWb35Reg->D00_DmaControl );
2326}
2327
2328void Mxx_initial( phw_data_t pHwData )
2329{
2330 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
2331 u32 tmp;
2332 u32 pltmp[11];
2333 u16 i;
2334
2335
2336 //======================================================
2337 // Initial Mxx register
2338 //======================================================
2339
2340 // M00 bit set
2341#ifdef _IBSS_BEACON_SEQ_STICK_
2342 pWb35Reg->M00_MacControl = 0; // Solve beacon sequence number stop by software
2343#else
2344 pWb35Reg->M00_MacControl = 0x80000000; // Solve beacon sequence number stop by hardware
2345#endif
2346
2347 // M24 disable enter power save, BB RxOn and enable NAV attack
2348 pWb35Reg->M24_MacControl = 0x08040042;
2349 pltmp[0] = pWb35Reg->M24_MacControl;
2350
2351 pltmp[1] = 0; // Skip M28, because no initialize value is required.
2352
2353 // M2C CWmin and CWmax setting
2354 pHwData->cwmin = DEFAULT_CWMIN;
2355 pHwData->cwmax = DEFAULT_CWMAX;
2356 pWb35Reg->M2C_MacControl = DEFAULT_CWMIN << 10;
2357 pWb35Reg->M2C_MacControl |= DEFAULT_CWMAX;
2358 pltmp[2] = pWb35Reg->M2C_MacControl;
2359
2360 // M30 BSSID
2361 pltmp[3] = *(PULONG)pHwData->bssid;
2362
2363 // M34
2364 pHwData->AID = DEFAULT_AID;
2365 tmp = *(PUSHORT)(pHwData->bssid+4);
2366 tmp |= DEFAULT_AID << 16;
2367 pltmp[4] = tmp;
2368
2369 // M38
2370 pWb35Reg->M38_MacControl = (DEFAULT_RATE_RETRY_LIMIT<<8) | (DEFAULT_LONG_RETRY_LIMIT << 4) | DEFAULT_SHORT_RETRY_LIMIT;
2371 pltmp[5] = pWb35Reg->M38_MacControl;
2372
2373 // M3C
2374 tmp = (DEFAULT_PIFST << 26) | (DEFAULT_EIFST << 16) | (DEFAULT_DIFST << 8) | (DEFAULT_SIFST << 4) | DEFAULT_OSIFST ;
2375 pWb35Reg->M3C_MacControl = tmp;
2376 pltmp[6] = tmp;
2377
2378 // M40
2379 pHwData->slot_time_select = DEFAULT_SLOT_TIME;
2380 tmp = (DEFAULT_ATIMWD << 16) | DEFAULT_SLOT_TIME;
2381 pWb35Reg->M40_MacControl = tmp;
2382 pltmp[7] = tmp;
2383
2384 // M44
2385 tmp = DEFAULT_MAX_TX_MSDU_LIFE_TIME << 10; // *1024
2386 pWb35Reg->M44_MacControl = tmp;
2387 pltmp[8] = tmp;
2388
2389 // M48
2390 pHwData->BeaconPeriod = DEFAULT_BEACON_INTERVAL;
2391 pHwData->ProbeDelay = DEFAULT_PROBE_DELAY_TIME;
2392 tmp = (DEFAULT_BEACON_INTERVAL << 16) | DEFAULT_PROBE_DELAY_TIME;
2393 pWb35Reg->M48_MacControl = tmp;
2394 pltmp[9] = tmp;
2395
2396 //M4C
2397 pWb35Reg->M4C_MacStatus = (DEFAULT_PROTOCOL_VERSION << 30) | (DEFAULT_MAC_POWER_STATE << 28) | (DEFAULT_DTIM_ALERT_TIME << 24);
2398 pltmp[10] = pWb35Reg->M4C_MacStatus;
2399
2400 // Burst write
2401 //Wb35Reg_BurstWrite( pHwData, 0x0824, pltmp, 11, AUTO_INCREMENT );
2402 for( i=0; i<11; i++ )
2403 Wb35Reg_WriteSync( pHwData, 0x0824 + i*4, pltmp[i] );
2404
2405 // M60
2406 Wb35Reg_WriteSync( pHwData, 0x0860, 0x12481248 );
2407 pWb35Reg->M60_MacControl = 0x12481248;
2408
2409 // M68
2410 Wb35Reg_WriteSync( pHwData, 0x0868, 0x00050900 ); // 20051018 0x000F0F00 ); // 940930 0x00131300
2411 pWb35Reg->M68_MacControl = 0x00050900;
2412
2413 // M98
2414 Wb35Reg_WriteSync( pHwData, 0x0898, 0xffff8888 );
2415 pWb35Reg->M98_MacControl = 0xffff8888;
2416}
2417
2418
2419void Uxx_power_off_procedure( phw_data_t pHwData )
2420{
2421 // SW, PMU reset and turn off clock
2422 Wb35Reg_WriteSync( pHwData, 0x03b0, 3 );
2423 Wb35Reg_WriteSync( pHwData, 0x03f0, 0xf9 );
2424}
2425
2426//Decide the TxVga of every channel
2427void GetTxVgaFromEEPROM( phw_data_t pHwData )
2428{
2429 u32 i, j, ltmp;
2430 u16 Value[MAX_TXVGA_EEPROM];
2431 PUCHAR pctmp;
2432 u8 ctmp=0;
2433
2434 // Get the entire TxVga setting in EEPROM
2435 for( i=0; i<MAX_TXVGA_EEPROM; i++ )
2436 {
2437 Wb35Reg_WriteSync( pHwData, 0x03b4, 0x08100000 + 0x00010000*i );
2438 Wb35Reg_ReadSync( pHwData, 0x03b4, &ltmp );
2439 Value[i] = (u16)( ltmp & 0xffff ); // Get 16 bit available
2440 Value[i] = cpu_to_le16( Value[i] ); // [7:0]2412 [7:0]2417 ....
2441 }
2442
2443 // Adjust the filed which fills with reserved value.
2444 pctmp = (PUCHAR)Value;
2445 for( i=0; i<(MAX_TXVGA_EEPROM*2); i++ )
2446 {
2447 if( pctmp[i] != 0xff )
2448 ctmp = pctmp[i];
2449 else
2450 pctmp[i] = ctmp;
2451 }
2452
2453 // Adjust WB_242 to WB_242_1 TxVga scale
2454 if( pHwData->phy_type == RF_WB_242 )
2455 {
2456 for( i=0; i<4; i++ ) // Only 2412 2437 2462 2484 case must be modified
2457 {
2458 for( j=0; j<(sizeof(w89rf242_txvga_old_mapping)/sizeof(w89rf242_txvga_old_mapping[0])); j++ )
2459 {
2460 if( pctmp[i] < (u8)w89rf242_txvga_old_mapping[j][1] )
2461 {
2462 pctmp[i] = (u8)w89rf242_txvga_old_mapping[j][0];
2463 break;
2464 }
2465 }
2466
2467 if( j == (sizeof(w89rf242_txvga_old_mapping)/sizeof(w89rf242_txvga_old_mapping[0])) )
2468 pctmp[i] = (u8)w89rf242_txvga_old_mapping[j-1][0];
2469 }
2470 }
2471
2472 // 20060621 Add
2473 memcpy( pHwData->TxVgaSettingInEEPROM, pctmp, MAX_TXVGA_EEPROM*2 ); //MAX_TXVGA_EEPROM is u16 count
2474 EEPROMTxVgaAdjust( pHwData );
2475}
2476
2477// This function will affect the TxVga parameter in HAL. If hal_set_current_channel
2478// or RFSynthesizer_SetPowerIndex be called, new TxVga will take effect.
2479// TxVgaSettingInEEPROM of sHwData is an u8 array point to EEPROM contain for IS89C35
2480// This function will use default TxVgaSettingInEEPROM data to calculate new TxVga.
2481void EEPROMTxVgaAdjust( phw_data_t pHwData ) // 20060619.5 Add
2482{
2483 PUCHAR pTxVga = pHwData->TxVgaSettingInEEPROM;
2484 s16 i, stmp;
2485
2486 //-- 2.4G -- 20060704.2 Request from Tiger
2487 //channel 1 ~ 5
2488 stmp = pTxVga[1] - pTxVga[0];
2489 for( i=0; i<5; i++ )
2490 pHwData->TxVgaFor24[i] = pTxVga[0] + stmp*i/4;
2491 //channel 6 ~ 10
2492 stmp = pTxVga[2] - pTxVga[1];
2493 for( i=5; i<10; i++ )
2494 pHwData->TxVgaFor24[i] = pTxVga[1] + stmp*(i-5)/4;
2495 //channel 11 ~ 13
2496 stmp = pTxVga[3] - pTxVga[2];
2497 for( i=10; i<13; i++ )
2498 pHwData->TxVgaFor24[i] = pTxVga[2] + stmp*(i-10)/2;
2499 //channel 14
2500 pHwData->TxVgaFor24[13] = pTxVga[3];
2501
2502 //-- 5G --
2503 if( pHwData->phy_type == RF_AIROHA_7230 )
2504 {
2505 //channel 184
2506 pHwData->TxVgaFor50[0].ChanNo = 184;
2507 pHwData->TxVgaFor50[0].TxVgaValue = pTxVga[4];
2508 //channel 196
2509 pHwData->TxVgaFor50[3].ChanNo = 196;
2510 pHwData->TxVgaFor50[3].TxVgaValue = pTxVga[5];
2511 //interpolate
2512 pHwData->TxVgaFor50[1].ChanNo = 188;
2513 pHwData->TxVgaFor50[2].ChanNo = 192;
2514 stmp = pTxVga[5] - pTxVga[4];
2515 pHwData->TxVgaFor50[2].TxVgaValue = pTxVga[5] - stmp/3;
2516 pHwData->TxVgaFor50[1].TxVgaValue = pTxVga[5] - stmp*2/3;
2517
2518 //channel 16
2519 pHwData->TxVgaFor50[6].ChanNo = 16;
2520 pHwData->TxVgaFor50[6].TxVgaValue = pTxVga[6];
2521 pHwData->TxVgaFor50[4].ChanNo = 8;
2522 pHwData->TxVgaFor50[4].TxVgaValue = pTxVga[6];
2523 pHwData->TxVgaFor50[5].ChanNo = 12;
2524 pHwData->TxVgaFor50[5].TxVgaValue = pTxVga[6];
2525
2526 //channel 36
2527 pHwData->TxVgaFor50[8].ChanNo = 36;
2528 pHwData->TxVgaFor50[8].TxVgaValue = pTxVga[7];
2529 pHwData->TxVgaFor50[7].ChanNo = 34;
2530 pHwData->TxVgaFor50[7].TxVgaValue = pTxVga[7];
2531 pHwData->TxVgaFor50[9].ChanNo = 38;
2532 pHwData->TxVgaFor50[9].TxVgaValue = pTxVga[7];
2533
2534 //channel 40
2535 pHwData->TxVgaFor50[10].ChanNo = 40;
2536 pHwData->TxVgaFor50[10].TxVgaValue = pTxVga[8];
2537 //channel 48
2538 pHwData->TxVgaFor50[14].ChanNo = 48;
2539 pHwData->TxVgaFor50[14].TxVgaValue = pTxVga[9];
2540 //interpolate
2541 pHwData->TxVgaFor50[11].ChanNo = 42;
2542 pHwData->TxVgaFor50[12].ChanNo = 44;
2543 pHwData->TxVgaFor50[13].ChanNo = 46;
2544 stmp = pTxVga[9] - pTxVga[8];
2545 pHwData->TxVgaFor50[13].TxVgaValue = pTxVga[9] - stmp/4;
2546 pHwData->TxVgaFor50[12].TxVgaValue = pTxVga[9] - stmp*2/4;
2547 pHwData->TxVgaFor50[11].TxVgaValue = pTxVga[9] - stmp*3/4;
2548
2549 //channel 52
2550 pHwData->TxVgaFor50[15].ChanNo = 52;
2551 pHwData->TxVgaFor50[15].TxVgaValue = pTxVga[10];
2552 //channel 64
2553 pHwData->TxVgaFor50[18].ChanNo = 64;
2554 pHwData->TxVgaFor50[18].TxVgaValue = pTxVga[11];
2555 //interpolate
2556 pHwData->TxVgaFor50[16].ChanNo = 56;
2557 pHwData->TxVgaFor50[17].ChanNo = 60;
2558 stmp = pTxVga[11] - pTxVga[10];
2559 pHwData->TxVgaFor50[17].TxVgaValue = pTxVga[11] - stmp/3;
2560 pHwData->TxVgaFor50[16].TxVgaValue = pTxVga[11] - stmp*2/3;
2561
2562 //channel 100
2563 pHwData->TxVgaFor50[19].ChanNo = 100;
2564 pHwData->TxVgaFor50[19].TxVgaValue = pTxVga[12];
2565 //channel 112
2566 pHwData->TxVgaFor50[22].ChanNo = 112;
2567 pHwData->TxVgaFor50[22].TxVgaValue = pTxVga[13];
2568 //interpolate
2569 pHwData->TxVgaFor50[20].ChanNo = 104;
2570 pHwData->TxVgaFor50[21].ChanNo = 108;
2571 stmp = pTxVga[13] - pTxVga[12];
2572 pHwData->TxVgaFor50[21].TxVgaValue = pTxVga[13] - stmp/3;
2573 pHwData->TxVgaFor50[20].TxVgaValue = pTxVga[13] - stmp*2/3;
2574
2575 //channel 128
2576 pHwData->TxVgaFor50[26].ChanNo = 128;
2577 pHwData->TxVgaFor50[26].TxVgaValue = pTxVga[14];
2578 //interpolate
2579 pHwData->TxVgaFor50[23].ChanNo = 116;
2580 pHwData->TxVgaFor50[24].ChanNo = 120;
2581 pHwData->TxVgaFor50[25].ChanNo = 124;
2582 stmp = pTxVga[14] - pTxVga[13];
2583 pHwData->TxVgaFor50[25].TxVgaValue = pTxVga[14] - stmp/4;
2584 pHwData->TxVgaFor50[24].TxVgaValue = pTxVga[14] - stmp*2/4;
2585 pHwData->TxVgaFor50[23].TxVgaValue = pTxVga[14] - stmp*3/4;
2586
2587 //channel 140
2588 pHwData->TxVgaFor50[29].ChanNo = 140;
2589 pHwData->TxVgaFor50[29].TxVgaValue = pTxVga[15];
2590 //interpolate
2591 pHwData->TxVgaFor50[27].ChanNo = 132;
2592 pHwData->TxVgaFor50[28].ChanNo = 136;
2593 stmp = pTxVga[15] - pTxVga[14];
2594 pHwData->TxVgaFor50[28].TxVgaValue = pTxVga[15] - stmp/3;
2595 pHwData->TxVgaFor50[27].TxVgaValue = pTxVga[15] - stmp*2/3;
2596
2597 //channel 149
2598 pHwData->TxVgaFor50[30].ChanNo = 149;
2599 pHwData->TxVgaFor50[30].TxVgaValue = pTxVga[16];
2600 //channel 165
2601 pHwData->TxVgaFor50[34].ChanNo = 165;
2602 pHwData->TxVgaFor50[34].TxVgaValue = pTxVga[17];
2603 //interpolate
2604 pHwData->TxVgaFor50[31].ChanNo = 153;
2605 pHwData->TxVgaFor50[32].ChanNo = 157;
2606 pHwData->TxVgaFor50[33].ChanNo = 161;
2607 stmp = pTxVga[17] - pTxVga[16];
2608 pHwData->TxVgaFor50[33].TxVgaValue = pTxVga[17] - stmp/4;
2609 pHwData->TxVgaFor50[32].TxVgaValue = pTxVga[17] - stmp*2/4;
2610 pHwData->TxVgaFor50[31].TxVgaValue = pTxVga[17] - stmp*3/4;
2611 }
2612
2613 #ifdef _PE_STATE_DUMP_
2614 WBDEBUG((" TxVgaFor24 : \n"));
2615 DataDmp((u8 *)pHwData->TxVgaFor24, 14 ,0);
2616 WBDEBUG((" TxVgaFor50 : \n"));
2617 DataDmp((u8 *)pHwData->TxVgaFor50, 70 ,0);
2618 #endif
2619}
2620
2621void BBProcessor_RateChanging( phw_data_t pHwData, u8 rate ) // 20060613.1
2622{
2623 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
2624 unsigned char Is11bRate;
2625
2626 Is11bRate = (rate % 6) ? 1 : 0;
2627 switch( pHwData->phy_type )
2628 {
2629 case RF_AIROHA_2230:
2630 case RF_AIROHA_2230S: // 20060420 Add this
2631 if( Is11bRate )
2632 {
2633 if( (pWb35Reg->BB48 != BB48_DEFAULT_AL2230_11B) &&
2634 (pWb35Reg->BB4C != BB4C_DEFAULT_AL2230_11B) )
2635 {
2636 Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_AL2230_11B );
2637 Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_AL2230_11B );
2638 }
2639 }
2640 else
2641 {
2642 if( (pWb35Reg->BB48 != BB48_DEFAULT_AL2230_11G) &&
2643 (pWb35Reg->BB4C != BB4C_DEFAULT_AL2230_11G) )
2644 {
2645 Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_AL2230_11G );
2646 Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_AL2230_11G );
2647 }
2648 }
2649 break;
2650
2651 case RF_WB_242: // 20060623 The fix only for old TxVGA setting
2652 if( Is11bRate )
2653 {
2654 if( (pWb35Reg->BB48 != BB48_DEFAULT_WB242_11B) &&
2655 (pWb35Reg->BB4C != BB4C_DEFAULT_WB242_11B) )
2656 {
2657 pWb35Reg->BB48 = BB48_DEFAULT_WB242_11B;
2658 pWb35Reg->BB4C = BB4C_DEFAULT_WB242_11B;
2659 Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_WB242_11B );
2660 Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_WB242_11B );
2661 }
2662 }
2663 else
2664 {
2665 if( (pWb35Reg->BB48 != BB48_DEFAULT_WB242_11G) &&
2666 (pWb35Reg->BB4C != BB4C_DEFAULT_WB242_11G) )
2667 {
2668 pWb35Reg->BB48 = BB48_DEFAULT_WB242_11G;
2669 pWb35Reg->BB4C = BB4C_DEFAULT_WB242_11G;
2670 Wb35Reg_Write( pHwData, 0x1048, BB48_DEFAULT_WB242_11G );
2671 Wb35Reg_Write( pHwData, 0x104c, BB4C_DEFAULT_WB242_11G );
2672 }
2673 }
2674 break;
2675 }
2676}
2677
2678
2679
2680
2681
2682
2683
diff --git a/drivers/staging/winbond/rxisr.c b/drivers/staging/winbond/rxisr.c
new file mode 100644
index 00000000000..18e942c9b82
--- /dev/null
+++ b/drivers/staging/winbond/rxisr.c
@@ -0,0 +1,30 @@
1#include "os_common.h"
2
3void vRxTimerInit(PWB32_ADAPTER Adapter)
4{
5 OS_TIMER_INITIAL(&(Adapter->Mds.nTimer), (void*) RxTimerHandler, (void*) Adapter);
6}
7
8void vRxTimerStart(PWB32_ADAPTER Adapter, int timeout_value)
9{
10 if (timeout_value<MIN_TIMEOUT_VAL)
11 timeout_value=MIN_TIMEOUT_VAL;
12
13 OS_TIMER_SET( &(Adapter->Mds.nTimer), timeout_value );
14}
15
16void vRxTimerStop(PWB32_ADAPTER Adapter)
17{
18 OS_TIMER_CANCEL( &(Adapter->Mds.nTimer), 0 );
19}
20
21void RxTimerHandler_1a( PADAPTER Adapter)
22{
23 RxTimerHandler(NULL, Adapter, NULL, NULL);
24}
25
26void RxTimerHandler(void* SystemSpecific1, PWB32_ADAPTER Adapter,
27 void* SystemSpecific2, void* SystemSpecific3)
28{
29 WARN_ON(1);
30}
diff --git a/drivers/staging/winbond/scan_s.h b/drivers/staging/winbond/scan_s.h
new file mode 100644
index 00000000000..1d1b0c4fec1
--- /dev/null
+++ b/drivers/staging/winbond/scan_s.h
@@ -0,0 +1,115 @@
1//
2// SCAN task global CONSTANTS, STRUCTURES, variables
3//
4
5//////////////////////////////////////////////////////////////////////////
6//define the msg type of SCAN module
7#define SCANMSG_SCAN_REQ 0x01
8#define SCANMSG_BEACON 0x02
9#define SCANMSG_PROBE_RESPONSE 0x03
10#define SCANMSG_TIMEOUT 0x04
11#define SCANMSG_TXPROBE_FAIL 0x05
12#define SCANMSG_ENABLE_BGSCAN 0x06
13#define SCANMSG_STOP_SCAN 0x07
14
15// BSS Type =>conform to
16// IBSS : ToDS/FromDS = 00
17// Infrastructure : ToDS/FromDS = 01
18#define IBSS_NET 0
19#define ESS_NET 1
20#define ANYBSS_NET 2
21
22// Scan Type
23#define ACTIVE_SCAN 0
24#define PASSIVE_SCAN 1
25
26///////////////////////////////////////////////////////////////////////////
27//Global data structures, Initial Scan & Background Scan
28typedef struct _SCAN_REQ_PARA //mandatory parameters for SCAN request
29{
30 u32 ScanType; //passive/active scan
31
32 CHAN_LIST sChannelList; // 86B
33 u8 reserved_1[2];
34
35 struct SSID_Element sSSID; // 34B. scan only for this SSID
36 u8 reserved_2[2];
37
38} SCAN_REQ_PARA, *psSCAN_REQ_PARA;
39
40typedef struct _SCAN_PARAMETERS
41{
42 u16 wState;
43 u16 iCurrentChannelIndex;
44
45 SCAN_REQ_PARA sScanReq;
46
47 u8 BSSID[MAC_ADDR_LENGTH + 2]; //scan only for this BSSID
48
49 u32 BssType; //scan only for this BSS type
50
51 //struct SSID_Element sSSID; //scan only for this SSID
52 u16 ProbeDelay;
53 u16 MinChannelTime;
54
55 u16 MaxChannelTime;
56 u16 reserved_1;
57
58 s32 iBgScanPeriod; // XP: 5 sec
59
60 u8 boBgScan; // Wb: enable BG scan, For XP, this value must be FALSE
61 u8 boFastScan; // Wb: reserved
62 u8 boCCAbusy; // Wb: HWMAC CCA busy status
63 u8 reserved_2;
64
65 //NDIS_MINIPORT_TIMER nTimer;
66 OS_TIMER nTimer;
67
68 u32 ScanTimeStamp; //Increase 1 per background scan(1 minute)
69 u32 BssTimeStamp; //Increase 1 per connect status check
70 u32 RxNumPerAntenna[2]; //
71
72 u8 AntennaToggle; //
73 u8 boInTimerHandler;
74 u8 boTimerActive; // Wb: reserved
75 u8 boSave;
76
77 u32 BScanEnable; // Background scan enable. Default is On
78
79} SCAN_PARAMETERS, *psSCAN_PARAMETERS;
80
81// Encapsulate 'Adapter' data structure
82#define psSCAN (&(Adapter->sScanPara))
83#define psSCANREQ (&(Adapter->sScanPara.sScanReq))
84
85//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
86// scan.h
87// Define the related definitions of scan module
88// history -- 01/14/03' created
89//
90//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
91
92//Define the state of scan module
93#define SCAN_INACTIVE 0
94#define WAIT_PROBE_DELAY 1
95#define WAIT_RESPONSE_MIN 2
96#define WAIT_RESPONSE_MAX_ACTIVE 3
97#define WAIT_BEACON_MAX_PASSIVE 4
98#define SCAN_COMPLETE 5
99#define BG_SCAN 6
100#define BG_SCANNING 7
101
102
103// The value will load from EEPROM
104// If 0xff is set in EEPOM, the driver will use SCAN_MAX_CHNL_TIME instead.
105// The definition is in WbHal.h
106// #define SCAN_MAX_CHNL_TIME (50)
107
108
109
110// static functions
111
112//static void ScanTimerHandler(PWB32_ADAPTER Adapter);
113//static void vScanTimerStart(PWB32_ADAPTER Adapter, int timeout_value);
114//static void vScanTimerStop(PWB32_ADAPTER Adapter);
115
diff --git a/drivers/staging/winbond/sme_api.c b/drivers/staging/winbond/sme_api.c
new file mode 100644
index 00000000000..40e93b7600e
--- /dev/null
+++ b/drivers/staging/winbond/sme_api.c
@@ -0,0 +1,13 @@
1//------------------------------------------------------------------------------------
2// sme_api.c
3//
4// Copyright(C) 2002 Winbond Electronics Corp.
5//
6//
7//------------------------------------------------------------------------------------
8#include "os_common.h"
9
10s8 sme_get_rssi(void *pcore_data, s32 *prssi)
11{
12 BUG();
13}
diff --git a/drivers/staging/winbond/sme_api.h b/drivers/staging/winbond/sme_api.h
new file mode 100644
index 00000000000..016b225ca4a
--- /dev/null
+++ b/drivers/staging/winbond/sme_api.h
@@ -0,0 +1,265 @@
1/*
2 * sme_api.h
3 *
4 * Copyright(C) 2002 Winbond Electronics Corp.
5 *
6 * modification history
7 * ---------------------------------------------------------------------------
8 * 1.00.001, 2003-04-21, Kevin created
9 * 1.00.002, 2003-05-14, PD43 & PE20 modified
10 *
11 */
12
13#ifndef __SME_API_H__
14#define __SME_API_H__
15
16/****************** INCLUDE FILES SECTION ***********************************/
17//#include "GL\gl_core.h"
18
19/****************** CONSTANT AND MACRO SECTION ******************************/
20#define _INLINE __inline
21
22#define MEDIA_STATE_DISCONNECTED 0
23#define MEDIA_STATE_CONNECTED 1
24
25//ARRAY CHECK
26#define MAX_POWER_TO_DB 32
27
28/****************** TYPE DEFINITION SECTION *********************************/
29
30/****************** EXPORTED FUNCTION DECLARATION SECTION *******************/
31
32// OID_802_11_BSSID
33s8 sme_get_bssid(void *pcore_data, u8 *pbssid);
34s8 sme_get_desired_bssid(void *pcore_data, u8 *pbssid);//Not use
35s8 sme_set_desired_bssid(void *pcore_data, u8 *pbssid);
36
37// OID_802_11_SSID
38s8 sme_get_ssid(void *pcore_data, u8 *pssid, u8 *pssid_len);
39s8 sme_get_desired_ssid(void *pcore_data, u8 *pssid, u8 *pssid_len);// Not use
40s8 sme_set_desired_ssid(void *pcore_data, u8 *pssid, u8 ssid_len);
41
42// OID_802_11_INFRASTRUCTURE_MODE
43s8 sme_get_bss_type(void *pcore_data, u8 *pbss_type);
44s8 sme_get_desired_bss_type(void *pcore_data, u8 *pbss_type);//Not use
45s8 sme_set_desired_bss_type(void *pcore_data, u8 bss_type);
46
47// OID_802_11_FRAGMENTATION_THRESHOLD
48s8 sme_get_fragment_threshold(void *pcore_data, u32 *pthreshold);
49s8 sme_set_fragment_threshold(void *pcore_data, u32 threshold);
50
51// OID_802_11_RTS_THRESHOLD
52s8 sme_get_rts_threshold(void *pcore_data, u32 *pthreshold);
53s8 sme_set_rts_threshold(void *pcore_data, u32 threshold);
54
55// OID_802_11_RSSI
56s8 sme_get_rssi(void *pcore_data, s32 *prssi);
57
58// OID_802_11_CONFIGURATION
59s8 sme_get_beacon_period(void *pcore_data, u16 *pbeacon_period);
60s8 sme_set_beacon_period(void *pcore_data, u16 beacon_period);
61
62s8 sme_get_atim_window(void *pcore_data, u16 *patim_window);
63s8 sme_set_atim_window(void *pcore_data, u16 atim_window);
64
65s8 sme_get_current_channel(void *pcore_data, u8 *pcurrent_channel);
66s8 sme_get_current_band(void *pcore_data, u8 *pcurrent_band);
67s8 sme_set_current_channel(void *pcore_data, u8 current_channel);
68
69// OID_802_11_BSSID_LIST
70s8 sme_get_scan_bss_count(void *pcore_data, u8 *pcount);
71s8 sme_get_scan_bss(void *pcore_data, u8 index, void **ppbss);
72
73s8 sme_get_connected_bss(void *pcore_data, void **ppbss_now);
74
75// OID_802_11_AUTHENTICATION_MODE
76s8 sme_get_auth_mode(void *pcore_data, u8 *pauth_mode);
77s8 sme_set_auth_mode(void *pcore_data, u8 auth_mode);
78
79// OID_802_11_WEP_STATUS / OID_802_11_ENCRYPTION_STATUS
80s8 sme_get_wep_mode(void *pcore_data, u8 *pwep_mode);
81s8 sme_set_wep_mode(void *pcore_data, u8 wep_mode);
82//s8 sme_get_encryption_status(void *pcore_data, u8 *pstatus);
83//s8 sme_set_encryption_status(void *pcore_data, u8 status);
84
85// ???????????????????????????????????????
86
87// OID_GEN_VENDOR_ID
88// OID_802_3_PERMANENT_ADDRESS
89s8 sme_get_permanent_mac_addr(void *pcore_data, u8 *pmac_addr);
90
91// OID_802_3_CURRENT_ADDRESS
92s8 sme_get_current_mac_addr(void *pcore_data, u8 *pmac_addr);
93
94// OID_802_11_NETWORK_TYPE_IN_USE
95s8 sme_get_network_type_in_use(void *pcore_data, u8 *ptype);
96s8 sme_set_network_type_in_use(void *pcore_data, u8 type);
97
98// OID_802_11_SUPPORTED_RATES
99s8 sme_get_supported_rate(void *pcore_data, u8 *prates);
100
101// OID_802_11_ADD_WEP
102//12/29/03' wkchen
103s8 sme_set_add_wep(void *pcore_data, u32 key_index, u32 key_len,
104 u8 *Address, u8 *key);
105
106// OID_802_11_REMOVE_WEP
107s8 sme_set_remove_wep(void *pcre_data, u32 key_index);
108
109// OID_802_11_DISASSOCIATE
110s8 sme_set_disassociate(void *pcore_data);
111
112// OID_802_11_POWER_MODE
113s8 sme_get_power_mode(void *pcore_data, u8 *pmode);
114s8 sme_set_power_mode(void *pcore_data, u8 mode);
115
116// OID_802_11_BSSID_LIST_SCAN
117s8 sme_set_bssid_list_scan(void *pcore_data, void *pscan_para);
118
119// OID_802_11_RELOAD_DEFAULTS
120s8 sme_set_reload_defaults(void *pcore_data, u8 reload_type);
121
122
123// The following SME API functions are used for WPA
124//
125// Mandatory OIDs for WPA
126//
127
128// OID_802_11_ADD_KEY
129//s8 sme_set_add_key(void *pcore_data, NDIS_802_11_KEY *pkey);
130
131// OID_802_11_REMOVE_KEY
132//s8 sme_set_remove_key(void *pcore_data, NDIS_802_11_REMOVE_KEY *pkey);
133
134// OID_802_11_ASSOCIATION_INFORMATION
135//s8 sme_set_association_information(void *pcore_data,
136// NDIS_802_11_ASSOCIATION_INFORMATION *pinfo);
137
138// OID_802_11_TEST
139//s8 sme_set_test(void *pcore_data, NDIS_802_11_TEST *ptest_data);
140
141//--------------------------------------------------------------------------//
142/*
143// The left OIDs
144
145// OID_802_11_NETWORK_TYPES_SUPPORTED
146// OID_802_11_TX_POWER_LEVEL
147// OID_802_11_RSSI_TRIGGER
148// OID_802_11_NUMBER_OF_ANTENNAS
149// OID_802_11_RX_ANTENNA_SELECTED
150// OID_802_11_TX_ANTENNA_SELECTED
151// OID_802_11_STATISTICS
152// OID_802_11_DESIRED_RATES
153// OID_802_11_PRIVACY_FILTER
154
155*/
156
157/*------------------------- none-standard ----------------------------------*/
158s8 sme_get_connect_status(void *pcore_data, u8 *pstatus);
159
160/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
161//s8 sme_get_scan_type(void *pcore_data, u8 *pscan_type);
162//s8 sme_set_scan_type(void *pcore_data, u8 scan_type);
163
164//s8 sme_get_scan_channel_list(void *pcore_data, u8 *pscan_type);
165//s8 sme_set_scan_channel_list(void *pcore_data, u8 scan_type);
166
167
168void sme_get_encryption_status(void *pcore_data, u8 *EncryptStatus);
169void sme_set_encryption_status(void *pcore_data, u8 EncryptStatus);
170s8 sme_add_key(void *pcore_data,
171 u32 key_index,
172 u8 key_len,
173 u8 key_type,
174 u8 *key_bssid,
175 //u8 *key_rsc,
176 u8 *ptx_tsc,
177 u8 *prx_tsc,
178 u8 *key_material);
179void sme_remove_default_key(void *pcore_data, int index);
180void sme_remove_mapping_key(void *pcore_data, u8 *pmac_addr);
181void sme_clear_all_mapping_key(void *pcore_data);
182void sme_clear_all_default_key(void *pcore_data);
183
184
185
186s8 sme_set_preamble_mode(void *pcore_data, u8 mode);
187s8 sme_get_preamble_mode(void *pcore_data, u8 *mode);
188s8 sme_get_preamble_type(void *pcore_data, u8 *type);
189s8 sme_set_slottime_mode(void *pcore_data, u8 mode);
190s8 sme_get_slottime_mode(void *pcore_data, u8 *mode);
191s8 sme_get_slottime_type(void *pcore_data, u8 *type);
192s8 sme_set_txrate_policy(void *pcore_data, u8 policy);
193s8 sme_get_txrate_policy(void *pcore_data, u8 *policy);
194s8 sme_get_cwmin_value(void *pcore_data, u8 *cwmin);
195s8 sme_get_cwmax_value(void *pcore_data, u16 *cwmax);
196s8 sme_get_ms_radio_mode(void *pcore_data, u8 * pMsRadioOff);
197s8 sme_set_ms_radio_mode(void *pcore_data, u8 boMsRadioOff);
198s8 sme_get_radio_mode(void *pcore_data, psRadioOff pRadioOffData);
199s8 sme_set_radio_mode(void *pcore_data, RadioOff RadioOffData);
200
201void sme_get_tx_power_level(void *pcore_data, u32 *TxPower);
202u8 sme_set_tx_power_level(void *pcore_data, u32 TxPower);
203void sme_get_antenna_count(void *pcore_data, u32 *AntennaCount);
204void sme_get_rx_antenna(void *pcore_data, u32 *RxAntenna);
205u8 sme_set_rx_antenna(void *pcore_data, u32 RxAntenna);
206void sme_get_tx_antenna(void *pcore_data, u32 *TxAntenna);
207s8 sme_set_tx_antenna(void *pcore_data, u32 TxAntenna);
208s8 sme_set_IBSS_chan(void *pcore_data, ChanInfo chan);
209
210//20061108 WPS
211s8 sme_set_IE_append(void *pcore_data, PUCHAR buffer, u16 buf_len);
212
213
214
215
216//================== Local functions ======================
217//#ifdef _HSINCHU
218//void drv_translate_rssi(); // HW RSSI bit -> NDIS RSSI representation
219//void drv_translate_bss_description(); // Local bss desc -> NDIS bss desc
220//void drv_translate_channel(u8 NetworkType, u8 ChannelNumber, u32 *freq); // channel number -> channel /freq.
221//#endif _HSINCHU
222//
223static const u32 PowerDbToMw[] =
224{
225 56, //mW, MAX - 0, 17.5 dbm
226 40, //mW, MAX - 1, 16.0 dbm
227 30, //mW, MAX - 2, 14.8 dbm
228 20, //mW, MAX - 3, 13.0 dbm
229 15, //mW, MAX - 4, 11.8 dbm
230 12, //mW, MAX - 5, 10.6 dbm
231 9, //mW, MAX - 6, 9.4 dbm
232 7, //mW, MAX - 7, 8.3 dbm
233 5, //mW, MAX - 8, 6.4 dbm
234 4, //mW, MAX - 9, 5.3 dbm
235 3, //mW, MAX - 10, 4.0 dbm
236 2, //mW, MAX - 11, ? dbm
237 2, //mW, MAX - 12, ? dbm
238 2, //mW, MAX - 13, ? dbm
239 2, //mW, MAX - 14, ? dbm
240 2, //mW, MAX - 15, ? dbm
241 2, //mW, MAX - 16, ? dbm
242 2, //mW, MAX - 17, ? dbm
243 2, //mW, MAX - 18, ? dbm
244 1, //mW, MAX - 19, ? dbm
245 1, //mW, MAX - 20, ? dbm
246 1, //mW, MAX - 21, ? dbm
247 1, //mW, MAX - 22, ? dbm
248 1, //mW, MAX - 23, ? dbm
249 1, //mW, MAX - 24, ? dbm
250 1, //mW, MAX - 25, ? dbm
251 1, //mW, MAX - 26, ? dbm
252 1, //mW, MAX - 27, ? dbm
253 1, //mW, MAX - 28, ? dbm
254 1, //mW, MAX - 29, ? dbm
255 1, //mW, MAX - 30, ? dbm
256 1 //mW, MAX - 31, ? dbm
257};
258
259
260
261
262
263#endif /* __SME_API_H__ */
264
265
diff --git a/drivers/staging/winbond/sme_s.h b/drivers/staging/winbond/sme_s.h
new file mode 100644
index 00000000000..dfd2fbc4ede
--- /dev/null
+++ b/drivers/staging/winbond/sme_s.h
@@ -0,0 +1,228 @@
1//
2// SME_S.H -
3// SME task global CONSTANTS, STRUCTURES, variables
4//
5
6//////////////////////////////////////////////////////////////////////////
7//define the msg type of SME module
8// 0x00~0x1F : MSG from GUI dispatch
9// 0x20~0x3F : MSG from MLME
10// 0x40~0x5F : MSG from SCAN
11// 0x60~0x6F : MSG from TX/RX
12// 0x70~0x7F : MSG from ROAMING
13// 0x80~0x8F : MSG from ISR
14// 0x90 : MSG TimeOut
15
16// from GUI
17#define SMEMSG_SCAN_REQ 0x01
18//#define SMEMSG_PASSIVE_SCAN_REQ 0x02
19#define SMEMSG_JOIN_REQ 0x03
20#define SMEMSG_START_IBSS 0x04
21#define SMEMSG_DISCONNECT_REQ 0x05
22#define SMEMSG_AUTHEN_REQ 0x06
23#define SMEMSG_DEAUTHEN_REQ 0x07
24#define SMEMSG_ASSOC_REQ 0x08
25#define SMEMSG_REASSOC_REQ 0x09
26#define SMEMSG_DISASSOC_REQ 0x0a
27#define SMEMSG_POWERSAVE_REQ 0x0b
28
29
30// from MLME
31#define SMEMSG_AUTHEN_CFM 0x21
32#define SMEMSG_AUTHEN_IND 0x22
33#define SMEMSG_ASSOC_CFM 0x23
34#define SMEMSG_DEAUTHEN_IND 0x24
35#define SMEMSG_DISASSOC_IND 0x25
36// from SCAN
37#define SMEMSG_SCAN_CFM 0x41
38#define SMEMSG_START_IBSS_CFM 0x42
39// from MTO, function call to set SME parameters
40
41// 0x60~0x6F : MSG from TX/RX
42//#define SMEMSG_IBSS_JOIN_UPDATE_BSSID 0x61
43#define SMEMSG_COUNTERMEASURE_MICFAIL_TIMEOUT 0x62
44#define SMEMSG_COUNTERMEASURE_BLOCK_TIMEOUT 0x63
45// from ROAMING
46#define SMEMSG_HANDOVER_JOIN_REQ 0x71
47#define SMEMSG_END_ROAMING 0x72
48#define SMEMSG_SCAN_JOIN_REQ 0x73
49// from ISR
50#define SMEMSG_TSF_SYNC_IND 0x81
51// from TimeOut
52#define SMEMSG_TIMEOUT 0x91
53
54
55
56#define MAX_PMKID_Accunt 16
57//@added by ws 04/22/05
58#define Cipher_Disabled 0
59#define Cipher_Wep 1
60#define Cipher_Tkip 2
61#define Cipher_Ccmp 4
62
63
64///////////////////////////////////////////////////////////////////////////
65//Constants
66
67///////////////////////////////////////////////////////////////////////////
68//Global data structures
69
70#define NUMOFWEPENTRIES 64
71
72typedef enum _WEPKeyMode
73{
74 WEPKEY_DISABLED = 0,
75 WEPKEY_64 = 1,
76 WEPKEY_128 = 2
77
78} WEPKEYMODE, *pWEPKEYMODE;
79
80#ifdef _WPA2_
81
82typedef struct _BSSInfo
83{
84 u8 PreAuthBssID[6];
85 PMKID pmkid_value;
86}BSSID_Info;
87
88typedef struct _PMKID_Table //added by ws 05/05/04
89{
90 u32 Length;
91 u32 BSSIDInfoCount;
92 BSSID_Info BSSIDInfo[16];
93
94} PMKID_Table;
95
96#endif //end def _WPA2_
97
98#define MAX_BASIC_RATE_SET 15
99#define MAX_OPT_RATE_SET MAX_BASIC_RATE_SET
100
101
102typedef struct _SME_PARAMETERS
103{
104 u16 wState;
105 u8 boDUTmode;
106 u8 bDesiredPowerSave;
107
108 // SME timer and timeout value
109 //NDIS_MINIPORT_TIMER nTimer;
110 OS_TIMER nTimer;
111
112 u8 boInTimerHandler;
113 u8 boAuthRetryActive;
114 u8 reserved_0[2];
115
116 u32 AuthenRetryTimerVal; // NOTE: Assoc don't fail timeout
117 u32 JoinFailTimerVal; // 10*Beacon-Interval
118
119 //Rates
120 u8 BSSBasicRateSet[(MAX_BASIC_RATE_SET + 3) & ~0x03 ]; // BSS basic rate set
121 u8 OperationalRateSet[(MAX_OPT_RATE_SET + 3) & ~0x03 ]; // Operational rate set
122
123 u8 NumOfBSSBasicRate;
124 u8 NumOfOperationalRate;
125 u8 reserved_1[2];
126
127 u32 BasicRateBitmap;
128 u32 OpRateBitmap;
129
130 // System parameters Set by GUI
131 //-------------------- start IBSS parameter ---------------------------//
132 u32 boStartIBSS; //Start IBSS toggle
133
134 u16 wBeaconPeriod;
135 u16 wATIM_Window;
136
137 ChanInfo IbssChan; // 2B //channel setting when start IBSS
138 u8 reserved_2[2];
139
140 // Join related
141 u16 wDesiredJoinBSS; // BSS index which desire to join
142 u8 boJoinReq; //Join request toggle
143 u8 bDesiredBSSType; //for Join request
144
145 u16 wCapabilityInfo; // Used when invoking the MLME_Associate_request().
146 u16 wNonERPcapabilityInfo;
147
148 struct SSID_Element sDesiredSSID; // 34 B
149 u8 reserved_3[2];
150
151 u8 abDesiredBSSID[MAC_ADDR_LENGTH + 2];
152
153 u8 bJoinScanCount; // the time of scan-join action need to do
154 u8 bDesiredAuthMode; // AUTH_OPEN_SYSTEM or AUTH_SHARED_KEY
155 u8 reserved_4[2];
156
157 // Encryption parameters
158 u8 _dot11PrivacyInvoked;
159 u8 _dot11PrivacyOptionImplemented;
160 u8 reserved_5[2];
161
162 //@ ws added
163 u8 DesiredEncrypt;
164 u8 encrypt_status; //ENCRYPT_DISABLE, ENCRYPT_WEP, ENCRYPT_WEP_NOKEY, ENCRYPT_TKIP, ...
165 u8 key_length;
166 u8 pairwise_key_ok;
167
168 u8 group_key_ok;
169 u8 wpa_ok; // indicate the control port of 802.1x is open or close
170 u8 pairwise_key_type;
171 u8 group_key_type;
172
173 u32 _dot11WEPDefaultKeyID;
174
175 u8 tx_mic_key[8]; // TODO: 0627 kevin-TKIP
176 u8 rx_mic_key[8]; // TODO: 0627 kevin-TKIP
177 u8 group_tx_mic_key[8];
178 u8 group_rx_mic_key[8];
179
180// #ifdef _WPA_
181 u8 AssocReqVarIE[200];
182 u8 AssocRespVarIE[200];
183
184 u16 AssocReqVarLen;
185 u16 AssocRespVarLen;
186 u8 boReassoc; //use assoc. or reassoc.
187 u8 reserved_6[3];
188 u16 AssocRespCapability;
189 u16 AssocRespStatus;
190// #endif
191
192 #ifdef _WPA2_
193 u8 PmkIdTable[256];
194 u32 PmkidTableIndex;
195 #endif //end def _WPA2_
196
197} SME_PARAMETERS, *PSME_PARAMETERS;
198
199#define psSME (&(Adapter->sSmePara))
200
201#define wSMEGetCurrentSTAState(Adapter) ((u16)(Adapter)->sSmePara.wState)
202
203
204
205//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
206// SmeModule.h
207// Define the related definitions of SME module
208// history -- 01/14/03' created
209//
210//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
211
212//Define the state of SME module
213#define DISABLED 0
214#define INIT_SCAN 1
215#define SCAN_READY 2
216#define START_IBSS 3
217#define JOIN_PENDING 4
218#define JOIN_CFM 5
219#define AUTHENTICATE_PENDING 6
220#define AUTHENTICATED 7
221#define CONNECTED 8
222//#define EAP_STARTING 9
223//#define EAPOL_AUTHEN_PENDING 10
224//#define SECURE_CONNECTED 11
225
226
227// Static function
228
diff --git a/drivers/staging/winbond/wb35_ver.h b/drivers/staging/winbond/wb35_ver.h
new file mode 100644
index 00000000000..2433bc07300
--- /dev/null
+++ b/drivers/staging/winbond/wb35_ver.h
@@ -0,0 +1,30 @@
1//
2// Only define one of follow
3//
4
5#ifdef WB_WIN
6 #define VER_FILEVERSION 1,00,47,00
7 #define VER_FILEVERSION_STR "1.00.47.00"
8 #define WB32_DRIVER_MAJOR_VERSION 0x0100
9 #define WB32_DRIVER_MINOR_VERSION 0x4700
10#endif
11
12#ifdef WB_CE
13 #define VER_FILEVERSION 2,00,47,00
14 #define VER_FILEVERSION_STR "2.00.47.00"
15 #define WB32_DRIVER_MAJOR_VERSION 0x0200
16 #define WB32_DRIVER_MINOR_VERSION 0x4700
17#endif
18
19#ifdef WB_LINUX
20 #define VER_FILEVERSION 3,00,47,00
21 #define VER_FILEVERSION_STR "3.00.47.00"
22 #define WB32_DRIVER_MAJOR_VERSION 0x0300
23 #define WB32_DRIVER_MINOR_VERSION 0x4700
24#endif
25
26
27
28
29
30
diff --git a/drivers/staging/winbond/wbhal.c b/drivers/staging/winbond/wbhal.c
new file mode 100644
index 00000000000..daf44224755
--- /dev/null
+++ b/drivers/staging/winbond/wbhal.c
@@ -0,0 +1,878 @@
1#include "os_common.h"
2
3void hal_get_ethernet_address( phw_data_t pHwData, PUCHAR current_address )
4{
5 if( pHwData->SurpriseRemove ) return;
6
7 memcpy( current_address, pHwData->CurrentMacAddress, ETH_LENGTH_OF_ADDRESS );
8}
9
10void hal_set_ethernet_address( phw_data_t pHwData, PUCHAR current_address )
11{
12 u32 ltmp[2];
13
14 if( pHwData->SurpriseRemove ) return;
15
16 memcpy( pHwData->CurrentMacAddress, current_address, ETH_LENGTH_OF_ADDRESS );
17
18 ltmp[0]= cpu_to_le32( *(PULONG)pHwData->CurrentMacAddress );
19 ltmp[1]= cpu_to_le32( *(PULONG)(pHwData->CurrentMacAddress + 4) ) & 0xffff;
20
21 Wb35Reg_BurstWrite( pHwData, 0x03e8, ltmp, 2, AUTO_INCREMENT );
22}
23
24void hal_get_permanent_address( phw_data_t pHwData, PUCHAR pethernet_address )
25{
26 if( pHwData->SurpriseRemove ) return;
27
28 memcpy( pethernet_address, pHwData->PermanentMacAddress, 6 );
29}
30
31u8 hal_init_hardware(phw_data_t pHwData, PWB32_ADAPTER Adapter)
32{
33 u16 SoftwareSet;
34 pHwData->Adapter = Adapter;
35
36 // Initial the variable
37 pHwData->MaxReceiveLifeTime = DEFAULT_MSDU_LIFE_TIME; // Setting Rx maximum MSDU life time
38 pHwData->FragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD; // Setting default fragment threshold
39
40 if (WbUsb_initial(pHwData)) {
41 pHwData->InitialResource = 1;
42 if( Wb35Reg_initial(pHwData)) {
43 pHwData->InitialResource = 2;
44 if (Wb35Tx_initial(pHwData)) {
45 pHwData->InitialResource = 3;
46 if (Wb35Rx_initial(pHwData)) {
47 pHwData->InitialResource = 4;
48 OS_TIMER_INITIAL( &pHwData->LEDTimer, hal_led_control, pHwData );
49 OS_TIMER_SET( &pHwData->LEDTimer, 1000 ); // 20060623
50
51 //
52 // For restrict to vendor's hardware
53 //
54 SoftwareSet = hal_software_set( pHwData );
55
56 #ifdef Vendor2
57 // Try to make sure the EEPROM contain
58 SoftwareSet >>= 8;
59 if( SoftwareSet != 0x82 )
60 return FALSE;
61 #endif
62
63 Wb35Rx_start( pHwData );
64 Wb35Tx_EP2VM_start( pHwData );
65
66 return TRUE;
67 }
68 }
69 }
70 }
71
72 pHwData->SurpriseRemove = 1;
73 return FALSE;
74}
75
76
77void hal_halt(phw_data_t pHwData, void *ppa_data)
78{
79 switch( pHwData->InitialResource )
80 {
81 case 4:
82 case 3: OS_TIMER_CANCEL( &pHwData->LEDTimer, &cancel );
83 OS_SLEEP(100000); // Wait for Timer DPC exit 940623.2
84 Wb35Rx_destroy( pHwData ); // Release the Rx
85 case 2: Wb35Tx_destroy( pHwData ); // Release the Tx
86 case 1: Wb35Reg_destroy( pHwData ); // Release the Wb35 Regisster resources
87 WbUsb_destroy( pHwData );// Release the WbUsb
88 }
89}
90
91//---------------------------------------------------------------------------------------------------
92void hal_set_rates(phw_data_t pHwData, PUCHAR pbss_rates,
93 u8 length, unsigned char basic_rate_set)
94{
95 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
96 u32 tmp, tmp1;
97 u8 Rate[12]={ 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108 };
98 u8 SupportedRate[16];
99 u8 i, j, k, Count1, Count2, Byte;
100
101 if( pHwData->SurpriseRemove ) return;
102
103 if (basic_rate_set) {
104 pWb35Reg->M28_MacControl &= ~0x000fff00;
105 tmp1 = 0x00000100;
106 } else {
107 pWb35Reg->M28_MacControl &= ~0xfff00000;
108 tmp1 = 0x00100000;
109 }
110
111 tmp = 0;
112 for (i=0; i<length; i++) {
113 Byte = pbss_rates[i] & 0x7f;
114 for (j=0; j<12; j++) {
115 if( Byte == Rate[j] )
116 break;
117 }
118
119 if (j < 12)
120 tmp |= (tmp1<<j);
121 }
122
123 pWb35Reg->M28_MacControl |= tmp;
124 Wb35Reg_Write( pHwData, 0x0828, pWb35Reg->M28_MacControl );
125
126 // 930206.2.c M78 setting
127 j = k = Count1 = Count2 = 0;
128 memset( SupportedRate, 0, 16 );
129 tmp = 0x00100000;
130 tmp1 = 0x00000100;
131 for (i=0; i<12; i++) { // Get the supported rate
132 if (tmp & pWb35Reg->M28_MacControl) {
133 SupportedRate[j] = Rate[i];
134
135 if (tmp1 & pWb35Reg->M28_MacControl)
136 SupportedRate[j] |= 0x80;
137
138 if (k)
139 Count2++;
140 else
141 Count1++;
142
143 j++;
144 }
145
146 if (i==4 && k==0) {
147 if( !(pWb35Reg->M28_MacControl & 0x000ff000) ) // if basic rate in 11g domain)
148 {
149 k = 1;
150 j = 8;
151 }
152 }
153
154 tmp <<= 1;
155 tmp1 <<= 1;
156 }
157
158 // Fill data into support rate until buffer full
159 //---20060926 add by anson's endian
160 for (i=0; i<4; i++)
161 *(PULONG)(SupportedRate+(i<<2)) = cpu_to_le32( *(PULONG)(SupportedRate+(i<<2)) );
162 //--- end 20060926 add by anson's endian
163 Wb35Reg_BurstWrite( pHwData,0x087c, (PULONG)SupportedRate, 4, AUTO_INCREMENT );
164 pWb35Reg->M7C_MacControl = ((PULONG)SupportedRate)[0];
165 pWb35Reg->M80_MacControl = ((PULONG)SupportedRate)[1];
166 pWb35Reg->M84_MacControl = ((PULONG)SupportedRate)[2];
167 pWb35Reg->M88_MacControl = ((PULONG)SupportedRate)[3];
168
169 // Fill length
170 tmp = Count1<<28 | Count2<<24;
171 pWb35Reg->M78_ERPInformation &= ~0xff000000;
172 pWb35Reg->M78_ERPInformation |= tmp;
173 Wb35Reg_Write( pHwData, 0x0878, pWb35Reg->M78_ERPInformation );
174}
175
176
177//---------------------------------------------------------------------------------------------------
178void hal_set_beacon_period( phw_data_t pHwData, u16 beacon_period )
179{
180 u32 tmp;
181
182 if( pHwData->SurpriseRemove ) return;
183
184 pHwData->BeaconPeriod = beacon_period;
185 tmp = pHwData->BeaconPeriod << 16;
186 tmp |= pHwData->ProbeDelay;
187 Wb35Reg_Write( pHwData, 0x0848, tmp );
188}
189
190
191void hal_set_current_channel_ex( phw_data_t pHwData, ChanInfo channel )
192{
193 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
194
195 if( pHwData->SurpriseRemove )
196 return;
197
198 printk("Going to channel: %d/%d\n", channel.band, channel.ChanNo);
199
200 RFSynthesizer_SwitchingChannel( pHwData, channel );// Switch channel
201 pHwData->Channel = channel.ChanNo;
202 pHwData->band = channel.band;
203 #ifdef _PE_STATE_DUMP_
204 WBDEBUG(("Set channel is %d, band =%d\n", pHwData->Channel, pHwData->band));
205 #endif
206 pWb35Reg->M28_MacControl &= ~0xff; // Clean channel information field
207 pWb35Reg->M28_MacControl |= channel.ChanNo;
208 Wb35Reg_WriteWithCallbackValue( pHwData, 0x0828, pWb35Reg->M28_MacControl,
209 (PCHAR)&channel, sizeof(ChanInfo));
210}
211//---------------------------------------------------------------------------------------------------
212void hal_set_current_channel( phw_data_t pHwData, ChanInfo channel )
213{
214 hal_set_current_channel_ex( pHwData, channel );
215}
216//---------------------------------------------------------------------------------------------------
217void hal_get_current_channel( phw_data_t pHwData, ChanInfo *channel )
218{
219 channel->ChanNo = pHwData->Channel;
220 channel->band = pHwData->band;
221}
222//---------------------------------------------------------------------------------------------------
223void hal_set_accept_broadcast( phw_data_t pHwData, u8 enable )
224{
225 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
226
227 if( pHwData->SurpriseRemove ) return;
228
229 pWb35Reg->M00_MacControl &= ~0x02000000;//The HW value
230
231 if (enable)
232 pWb35Reg->M00_MacControl |= 0x02000000;//The HW value
233
234 Wb35Reg_Write( pHwData, 0x0800, pWb35Reg->M00_MacControl );
235}
236
237//for wep key error detection, we need to accept broadcast packets to be received temporary.
238void hal_set_accept_promiscuous( phw_data_t pHwData, u8 enable)
239{
240 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
241
242 if (pHwData->SurpriseRemove) return;
243 if (enable) {
244 pWb35Reg->M00_MacControl |= 0x00400000;
245 Wb35Reg_Write( pHwData, 0x0800, pWb35Reg->M00_MacControl );
246 } else {
247 pWb35Reg->M00_MacControl&=~0x00400000;
248 Wb35Reg_Write( pHwData, 0x0800, pWb35Reg->M00_MacControl );
249 }
250}
251
252void hal_set_accept_multicast( phw_data_t pHwData, u8 enable )
253{
254 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
255
256 if( pHwData->SurpriseRemove ) return;
257
258 pWb35Reg->M00_MacControl &= ~0x01000000;//The HW value
259 if (enable) pWb35Reg->M00_MacControl |= 0x01000000;//The HW value
260 Wb35Reg_Write( pHwData, 0x0800, pWb35Reg->M00_MacControl );
261}
262
263void hal_set_accept_beacon( phw_data_t pHwData, u8 enable )
264{
265 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
266
267 if( pHwData->SurpriseRemove ) return;
268
269 // 20040108 debug
270 if( !enable )//Due to SME and MLME are not suitable for 35
271 return;
272
273 pWb35Reg->M00_MacControl &= ~0x04000000;//The HW value
274 if( enable )
275 pWb35Reg->M00_MacControl |= 0x04000000;//The HW value
276
277 Wb35Reg_Write( pHwData, 0x0800, pWb35Reg->M00_MacControl );
278}
279//---------------------------------------------------------------------------------------------------
280void hal_set_multicast_address( phw_data_t pHwData, PUCHAR address, u8 number )
281{
282 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
283 u8 Byte, Bit;
284
285 if( pHwData->SurpriseRemove ) return;
286
287 //Erases and refills the card multicast registers. Used when an address
288 // has been deleted and all bits must be recomputed.
289 pWb35Reg->M04_MulticastAddress1 = 0;
290 pWb35Reg->M08_MulticastAddress2 = 0;
291
292 while( number )
293 {
294 number--;
295 CardGetMulticastBit( (address+(number*ETH_LENGTH_OF_ADDRESS)), &Byte, &Bit);
296 pWb35Reg->Multicast[Byte] |= Bit;
297 }
298
299 // Updating register
300 Wb35Reg_BurstWrite( pHwData, 0x0804, (PULONG)pWb35Reg->Multicast, 2, AUTO_INCREMENT );
301}
302//---------------------------------------------------------------------------------------------------
303u8 hal_get_accept_beacon( phw_data_t pHwData )
304{
305 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
306
307 if( pHwData->SurpriseRemove ) return 0;
308
309 if( pWb35Reg->M00_MacControl & 0x04000000 )
310 return 1;
311 else
312 return 0;
313}
314
315unsigned char hal_reset_hardware( phw_data_t pHwData, void* ppa )
316{
317 // Not implement yet
318 return TRUE;
319}
320
321void hal_stop( phw_data_t pHwData )
322{
323 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
324
325 pHwData->Wb35Rx.rx_halt = 1;
326 Wb35Rx_stop( pHwData );
327
328 pHwData->Wb35Tx.tx_halt = 1;
329 Wb35Tx_stop( pHwData );
330
331 pWb35Reg->D00_DmaControl &= ~0xc0000000;//Tx Off, Rx Off
332 Wb35Reg_Write( pHwData, 0x0400, pWb35Reg->D00_DmaControl );
333
334 WbUsb_Stop( pHwData ); // 20051230 Add.4
335}
336
337unsigned char hal_idle(phw_data_t pHwData)
338{
339 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
340 PWBUSB pWbUsb = &pHwData->WbUsb;
341
342 if( !pHwData->SurpriseRemove && ( pWbUsb->DetectCount || pWb35Reg->EP0vm_state!=VM_STOP ) )
343 return FALSE;
344
345 return TRUE;
346}
347//---------------------------------------------------------------------------------------------------
348void hal_set_cwmin( phw_data_t pHwData, u8 cwin_min )
349{
350 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
351
352 if( pHwData->SurpriseRemove ) return;
353
354 pHwData->cwmin = cwin_min;
355 pWb35Reg->M2C_MacControl &= ~0x7c00; //bit 10 ~ 14
356 pWb35Reg->M2C_MacControl |= (pHwData->cwmin<<10);
357 Wb35Reg_Write( pHwData, 0x082c, pWb35Reg->M2C_MacControl );
358}
359
360s32 hal_get_rssi( phw_data_t pHwData, u32 *HalRssiArry, u8 Count )
361{
362 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
363 R01_DESCRIPTOR r01;
364 s32 ltmp = 0, tmp;
365 u8 i;
366
367 if( pHwData->SurpriseRemove ) return -200;
368 if( Count > MAX_ACC_RSSI_COUNT ) // Because the TS may use this funtion
369 Count = MAX_ACC_RSSI_COUNT;
370
371 // RSSI = C1 + C2 * (agc_state[7:0] + offset_map(lna_state[1:0]))
372 // C1 = -195, C2 = 0.66 = 85/128
373 for (i=0; i<Count; i++)
374 {
375 r01.value = HalRssiArry[i];
376 tmp = ((( r01.R01_AGC_state + pWb35Reg->LNAValue[r01.R01_LNA_state]) * 85 ) >>7 ) - 195;
377 ltmp += tmp;
378 }
379 ltmp /= Count;
380 if( pHwData->phy_type == RF_AIROHA_2230 ) ltmp -= 5; // 10;
381 if( pHwData->phy_type == RF_AIROHA_2230S ) ltmp -= 5; // 10; 20060420 Add this
382
383 //if( ltmp < -200 ) ltmp = -200;
384 if( ltmp < -110 ) ltmp = -110;// 1.0.24.0 For NJRC
385
386 return ltmp;
387}
388//----------------------------------------------------------------------------------------------------
389s32 hal_get_rssi_bss( phw_data_t pHwData, u16 idx, u8 Count )
390{
391 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
392 R01_DESCRIPTOR r01;
393 s32 ltmp = 0, tmp;
394 u8 i, j;
395 PADAPTER Adapter = pHwData->Adapter;
396// u32 *HalRssiArry = psBSS(idx)->HalRssi;
397
398 if( pHwData->SurpriseRemove ) return -200;
399 if( Count > MAX_ACC_RSSI_COUNT ) // Because the TS may use this funtion
400 Count = MAX_ACC_RSSI_COUNT;
401
402 // RSSI = C1 + C2 * (agc_state[7:0] + offset_map(lna_state[1:0]))
403 // C1 = -195, C2 = 0.66 = 85/128
404#if 0
405 for (i=0; i<Count; i++)
406 {
407 r01.value = HalRssiArry[i];
408 tmp = ((( r01.R01_AGC_state + pWb35Reg->LNAValue[r01.R01_LNA_state]) * 85 ) >>7 ) - 195;
409 ltmp += tmp;
410 }
411#else
412 if (psBSS(idx)->HalRssiIndex == 0)
413 psBSS(idx)->HalRssiIndex = MAX_ACC_RSSI_COUNT;
414 j = (u8)psBSS(idx)->HalRssiIndex-1;
415
416 for (i=0; i<Count; i++)
417 {
418 r01.value = psBSS(idx)->HalRssi[j];
419 tmp = ((( r01.R01_AGC_state + pWb35Reg->LNAValue[r01.R01_LNA_state]) * 85 ) >>7 ) - 195;
420 ltmp += tmp;
421 if (j == 0)
422 {
423 j = MAX_ACC_RSSI_COUNT;
424 }
425 j--;
426 }
427#endif
428 ltmp /= Count;
429 if( pHwData->phy_type == RF_AIROHA_2230 ) ltmp -= 5; // 10;
430 if( pHwData->phy_type == RF_AIROHA_2230S ) ltmp -= 5; // 10; 20060420 Add this
431
432 //if( ltmp < -200 ) ltmp = -200;
433 if( ltmp < -110 ) ltmp = -110;// 1.0.24.0 For NJRC
434
435 return ltmp;
436}
437
438//---------------------------------------------------------------------------
439void hal_led_control_1a( phw_data_t pHwData )
440{
441 hal_led_control( NULL, pHwData, NULL, NULL );
442}
443
444void hal_led_control( void* S1, phw_data_t pHwData, void* S3, void* S4 )
445{
446 PADAPTER Adapter = pHwData->Adapter;
447 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
448 u32 LEDSet = (pHwData->SoftwareSet & HAL_LED_SET_MASK) >> HAL_LED_SET_SHIFT;
449 u8 LEDgray[20] = { 0,3,4,6,8,10,11,12,13,14,15,14,13,12,11,10,8,6,4,2 };
450 u8 LEDgray2[30] = { 7,8,9,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,14,13,12,11,10,9,8 };
451 u32 TimeInterval = 500, ltmp, ltmp2;
452 ltmp=0;
453
454 if( pHwData->SurpriseRemove ) return;
455
456 if( pHwData->LED_control ) {
457 ltmp2 = pHwData->LED_control & 0xff;
458 if( ltmp2 == 5 ) // 5 is WPS mode
459 {
460 TimeInterval = 100;
461 ltmp2 = (pHwData->LED_control>>8) & 0xff;
462 switch( ltmp2 )
463 {
464 case 1: // [0.2 On][0.1 Off]...
465 pHwData->LED_Blinking %= 3;
466 ltmp = 0x1010; // Led 1 & 0 Green and Red
467 if( pHwData->LED_Blinking == 2 ) // Turn off
468 ltmp = 0;
469 break;
470 case 2: // [0.1 On][0.1 Off]...
471 pHwData->LED_Blinking %= 2;
472 ltmp = 0x0010; // Led 0 red color
473 if( pHwData->LED_Blinking ) // Turn off
474 ltmp = 0;
475 break;
476 case 3: // [0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.1 On][0.1 Off][0.5 Off]...
477 pHwData->LED_Blinking %= 15;
478 ltmp = 0x0010; // Led 0 red color
479 if( (pHwData->LED_Blinking >= 9) || (pHwData->LED_Blinking%2) ) // Turn off 0.6 sec
480 ltmp = 0;
481 break;
482 case 4: // [300 On][ off ]
483 ltmp = 0x1000; // Led 1 Green color
484 if( pHwData->LED_Blinking >= 3000 )
485 ltmp = 0; // led maybe on after 300sec * 32bit counter overlap.
486 break;
487 }
488 pHwData->LED_Blinking++;
489
490 pWb35Reg->U1BC_LEDConfigure = ltmp;
491 if( LEDSet != 7 ) // Only 111 mode has 2 LEDs on PCB.
492 {
493 pWb35Reg->U1BC_LEDConfigure |= (ltmp &0xff)<<8; // Copy LED result to each LED control register
494 pWb35Reg->U1BC_LEDConfigure |= (ltmp &0xff00)>>8;
495 }
496 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure );
497 }
498 }
499 else if( pHwData->CurrentRadioSw || pHwData->CurrentRadioHw ) // If radio off
500 {
501 if( pWb35Reg->U1BC_LEDConfigure & 0x1010 )
502 {
503 pWb35Reg->U1BC_LEDConfigure &= ~0x1010;
504 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure );
505 }
506 }
507 else
508 {
509 switch( LEDSet )
510 {
511 case 4: // [100] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
512 if( !pHwData->LED_LinkOn ) // Blink only if not Link On
513 {
514 // Blinking if scanning is on progress
515 if( pHwData->LED_Scanning )
516 {
517 if( pHwData->LED_Blinking == 0 )
518 {
519 pWb35Reg->U1BC_LEDConfigure |= 0x10;
520 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 On
521 pHwData->LED_Blinking = 1;
522 TimeInterval = 300;
523 }
524 else
525 {
526 pWb35Reg->U1BC_LEDConfigure &= ~0x10;
527 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 Off
528 pHwData->LED_Blinking = 0;
529 TimeInterval = 300;
530 }
531 }
532 else
533 {
534 //Turn Off LED_0
535 if( pWb35Reg->U1BC_LEDConfigure & 0x10 )
536 {
537 pWb35Reg->U1BC_LEDConfigure &= ~0x10;
538 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 Off
539 }
540 }
541 }
542 else
543 {
544 // Turn On LED_0
545 if( (pWb35Reg->U1BC_LEDConfigure & 0x10) == 0 )
546 {
547 pWb35Reg->U1BC_LEDConfigure |= 0x10;
548 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 Off
549 }
550 }
551 break;
552
553 case 6: // [110] Only 1 Led be placed on PCB and use pin 21 of IC. Use LED_0 for showing
554 if( !pHwData->LED_LinkOn ) // Blink only if not Link On
555 {
556 // Blinking if scanning is on progress
557 if( pHwData->LED_Scanning )
558 {
559 if( pHwData->LED_Blinking == 0 )
560 {
561 pWb35Reg->U1BC_LEDConfigure &= ~0xf;
562 pWb35Reg->U1BC_LEDConfigure |= 0x10;
563 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 On
564 pHwData->LED_Blinking = 1;
565 TimeInterval = 300;
566 }
567 else
568 {
569 pWb35Reg->U1BC_LEDConfigure &= ~0x1f;
570 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 Off
571 pHwData->LED_Blinking = 0;
572 TimeInterval = 300;
573 }
574 }
575 else
576 {
577 // 20060901 Gray blinking if in disconnect state and not scanning
578 ltmp = pWb35Reg->U1BC_LEDConfigure;
579 pWb35Reg->U1BC_LEDConfigure &= ~0x1f;
580 if( LEDgray2[(pHwData->LED_Blinking%30)] )
581 {
582 pWb35Reg->U1BC_LEDConfigure |= 0x10;
583 pWb35Reg->U1BC_LEDConfigure |= LEDgray2[ (pHwData->LED_Blinking%30) ];
584 }
585 pHwData->LED_Blinking++;
586 if( pWb35Reg->U1BC_LEDConfigure != ltmp )
587 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 Off
588 TimeInterval = 100;
589 }
590 }
591 else
592 {
593 // Turn On LED_0
594 if( (pWb35Reg->U1BC_LEDConfigure & 0x10) == 0 )
595 {
596 pWb35Reg->U1BC_LEDConfigure |= 0x10;
597 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_0 Off
598 }
599 }
600 break;
601
602 case 5: // [101] Only 1 Led be placed on PCB and use LED_1 for showing
603 if( !pHwData->LED_LinkOn ) // Blink only if not Link On
604 {
605 // Blinking if scanning is on progress
606 if( pHwData->LED_Scanning )
607 {
608 if( pHwData->LED_Blinking == 0 )
609 {
610 pWb35Reg->U1BC_LEDConfigure |= 0x1000;
611 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_1 On
612 pHwData->LED_Blinking = 1;
613 TimeInterval = 300;
614 }
615 else
616 {
617 pWb35Reg->U1BC_LEDConfigure &= ~0x1000;
618 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_1 Off
619 pHwData->LED_Blinking = 0;
620 TimeInterval = 300;
621 }
622 }
623 else
624 {
625 //Turn Off LED_1
626 if( pWb35Reg->U1BC_LEDConfigure & 0x1000 )
627 {
628 pWb35Reg->U1BC_LEDConfigure &= ~0x1000;
629 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_1 Off
630 }
631 }
632 }
633 else
634 {
635 // Is transmitting/receiving ??
636 if( (OS_CURRENT_RX_BYTE( Adapter ) != pHwData->RxByteCountLast ) ||
637 (OS_CURRENT_TX_BYTE( Adapter ) != pHwData->TxByteCountLast ) )
638 {
639 if( (pWb35Reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
640 {
641 pWb35Reg->U1BC_LEDConfigure |= 0x3000;
642 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_1 On
643 }
644
645 // Update variable
646 pHwData->RxByteCountLast = OS_CURRENT_RX_BYTE( Adapter );
647 pHwData->TxByteCountLast = OS_CURRENT_TX_BYTE( Adapter );
648 TimeInterval = 200;
649 }
650 else
651 {
652 // Turn On LED_1 and blinking if transmitting/receiving
653 if( (pWb35Reg->U1BC_LEDConfigure & 0x3000) != 0x1000 )
654 {
655 pWb35Reg->U1BC_LEDConfigure &= ~0x3000;
656 pWb35Reg->U1BC_LEDConfigure |= 0x1000;
657 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure ); // LED_1 On
658 }
659 }
660 }
661 break;
662
663 default: // Default setting. 2 LED be placed on PCB. LED_0: Link On LED_1 Active
664 if( (pWb35Reg->U1BC_LEDConfigure & 0x3000) != 0x3000 )
665 {
666 pWb35Reg->U1BC_LEDConfigure |= 0x3000;// LED_1 is always on and event enable
667 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure );
668 }
669
670 if( pHwData->LED_Blinking )
671 {
672 // Gray blinking
673 pWb35Reg->U1BC_LEDConfigure &= ~0x0f;
674 pWb35Reg->U1BC_LEDConfigure |= 0x10;
675 pWb35Reg->U1BC_LEDConfigure |= LEDgray[ (pHwData->LED_Blinking-1)%20 ];
676 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure );
677
678 pHwData->LED_Blinking += 2;
679 if( pHwData->LED_Blinking < 40 )
680 TimeInterval = 100;
681 else
682 {
683 pHwData->LED_Blinking = 0; // Stop blinking
684 pWb35Reg->U1BC_LEDConfigure &= ~0x0f;
685 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure );
686 }
687 break;
688 }
689
690 if( pHwData->LED_LinkOn )
691 {
692 if( !(pWb35Reg->U1BC_LEDConfigure & 0x10) ) // Check the LED_0
693 {
694 //Try to turn ON LED_0 after gray blinking
695 pWb35Reg->U1BC_LEDConfigure |= 0x10;
696 pHwData->LED_Blinking = 1; //Start blinking
697 TimeInterval = 50;
698 }
699 }
700 else
701 {
702 if( pWb35Reg->U1BC_LEDConfigure & 0x10 ) // Check the LED_0
703 {
704 pWb35Reg->U1BC_LEDConfigure &= ~0x10;
705 Wb35Reg_Write( pHwData, 0x03bc, pWb35Reg->U1BC_LEDConfigure );
706 }
707 }
708 break;
709 }
710
711 //20060828.1 Active send null packet to avoid AP disconnect
712 if( pHwData->LED_LinkOn )
713 {
714 pHwData->NullPacketCount += TimeInterval;
715 if( pHwData->NullPacketCount >= DEFAULT_NULL_PACKET_COUNT )
716 {
717 pHwData->NullPacketCount = 0;
718 }
719 }
720 }
721
722 pHwData->time_count += TimeInterval;
723 Wb35Tx_CurrentTime( pHwData, pHwData->time_count ); // 20060928 add
724 OS_TIMER_SET( &pHwData->LEDTimer, TimeInterval ); // 20060623.1
725}
726
727
728void hal_set_phy_type( phw_data_t pHwData, u8 PhyType )
729{
730 pHwData->phy_type = PhyType;
731}
732
733void hal_get_phy_type( phw_data_t pHwData, u8 *PhyType )
734{
735 *PhyType = pHwData->phy_type;
736}
737
738void hal_reset_counter( phw_data_t pHwData )
739{
740 pHwData->dto_tx_retry_count = 0;
741 pHwData->dto_tx_frag_count = 0;
742 memset( pHwData->tx_retry_count, 0, 8);
743}
744
745void hal_set_radio_mode( phw_data_t pHwData, unsigned char radio_off)
746{
747 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
748
749 if( pHwData->SurpriseRemove ) return;
750
751 if (radio_off) //disable Baseband receive off
752 {
753 pHwData->CurrentRadioSw = 1; // off
754 pWb35Reg->M24_MacControl &= 0xffffffbf;
755 }
756 else
757 {
758 pHwData->CurrentRadioSw = 0; // on
759 pWb35Reg->M24_MacControl |= 0x00000040;
760 }
761 Wb35Reg_Write( pHwData, 0x0824, pWb35Reg->M24_MacControl );
762}
763
764u8 hal_get_antenna_number( phw_data_t pHwData )
765{
766 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
767
768 if ((pWb35Reg->BB2C & BIT(11)) == 0)
769 return 0;
770 else
771 return 1;
772}
773
774void hal_set_antenna_number( phw_data_t pHwData, u8 number )
775{
776
777 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
778
779 if (number == 1) {
780 pWb35Reg->BB2C |= BIT(11);
781 } else {
782 pWb35Reg->BB2C &= ~BIT(11);
783 }
784 Wb35Reg_Write( pHwData, 0x102c, pWb35Reg->BB2C );
785#ifdef _PE_STATE_DUMP_
786 WBDEBUG(("Current antenna number : %d\n", number));
787#endif
788}
789
790//----------------------------------------------------------------------------------------------------
791//0 : radio on; 1: radio off
792u8 hal_get_hw_radio_off( phw_data_t pHwData )
793{
794 PWB35REG pWb35Reg = &pHwData->Wb35Reg;
795
796 if( pHwData->SurpriseRemove ) return 1;
797
798 //read the bit16 of register U1B0
799 Wb35Reg_Read( pHwData, 0x3b0, &pWb35Reg->U1B0 );
800 if ((pWb35Reg->U1B0 & 0x00010000)) {
801 pHwData->CurrentRadioHw = 1;
802 return 1;
803 } else {
804 pHwData->CurrentRadioHw = 0;
805 return 0;
806 }
807}
808
809unsigned char hal_get_dxx_reg( phw_data_t pHwData, u16 number, PULONG pValue )
810{
811 if( number < 0x1000 )
812 number += 0x1000;
813 return Wb35Reg_ReadSync( pHwData, number, pValue );
814}
815
816unsigned char hal_set_dxx_reg( phw_data_t pHwData, u16 number, u32 value )
817{
818 unsigned char ret;
819
820 if( number < 0x1000 )
821 number += 0x1000;
822 ret = Wb35Reg_WriteSync( pHwData, number, value );
823 return ret;
824}
825
826void hal_scan_status_indicate(phw_data_t pHwData, unsigned char IsOnProgress)
827{
828 if( pHwData->SurpriseRemove ) return;
829 pHwData->LED_Scanning = IsOnProgress ? 1 : 0;
830}
831
832void hal_system_power_change(phw_data_t pHwData, u32 PowerState)
833{
834 if( PowerState != 0 )
835 {
836 pHwData->SurpriseRemove = 1;
837 if( pHwData->WbUsb.IsUsb20 )
838 hal_stop( pHwData );
839 }
840 else
841 {
842 if( !pHwData->WbUsb.IsUsb20 )
843 hal_stop( pHwData );
844 }
845}
846
847void hal_surprise_remove( phw_data_t pHwData )
848{
849 PADAPTER Adapter = pHwData->Adapter;
850 if (OS_ATOMIC_INC( Adapter, &pHwData->SurpriseRemoveCount ) == 1) {
851 #ifdef _PE_STATE_DUMP_
852 WBDEBUG(("Calling hal_surprise_remove\n"));
853 #endif
854 OS_STOP( Adapter );
855 }
856}
857
858void hal_rate_change( phw_data_t pHwData ) // Notify the HAL rate is changing 20060613.1
859{
860 PADAPTER Adapter = pHwData->Adapter;
861 u8 rate = CURRENT_TX_RATE;
862
863 BBProcessor_RateChanging( pHwData, rate );
864}
865
866void hal_set_rf_power(phw_data_t pHwData, u8 PowerIndex)
867{
868 RFSynthesizer_SetPowerIndex( pHwData, PowerIndex );
869}
870
871unsigned char hal_set_LED(phw_data_t pHwData, u32 Mode) // 20061108 for WPS led control
872{
873 pHwData->LED_Blinking = 0;
874 pHwData->LED_control = Mode;
875 OS_TIMER_SET( &pHwData->LEDTimer, 10 ); // 20060623
876 return TRUE;
877}
878
diff --git a/drivers/staging/winbond/wbhal_f.h b/drivers/staging/winbond/wbhal_f.h
new file mode 100644
index 00000000000..fe25f97af72
--- /dev/null
+++ b/drivers/staging/winbond/wbhal_f.h
@@ -0,0 +1,122 @@
1//=====================================================================
2// Device related include
3//=====================================================================
4#ifdef WB_LINUX
5 #include "linux/wbusb_f.h"
6 #include "linux/wb35reg_f.h"
7 #include "linux/wb35tx_f.h"
8 #include "linux/wb35rx_f.h"
9#else
10 #include "wbusb_f.h"
11 #include "wb35reg_f.h"
12 #include "wb35tx_f.h"
13 #include "wb35rx_f.h"
14#endif
15
16//====================================================================================
17// Function declaration
18//====================================================================================
19void hal_remove_mapping_key( phw_data_t pHwData, PUCHAR pmac_addr );
20void hal_remove_default_key( phw_data_t pHwData, u32 index );
21unsigned char hal_set_mapping_key( phw_data_t Adapter, PUCHAR pmac_addr, u8 null_key, u8 wep_on, PUCHAR ptx_tsc, PUCHAR prx_tsc, u8 key_type, u8 key_len, PUCHAR pkey_data );
22unsigned char hal_set_default_key( phw_data_t Adapter, u8 index, u8 null_key, u8 wep_on, PUCHAR ptx_tsc, PUCHAR prx_tsc, u8 key_type, u8 key_len, PUCHAR pkey_data );
23void hal_clear_all_default_key( phw_data_t pHwData );
24void hal_clear_all_group_key( phw_data_t pHwData );
25void hal_clear_all_mapping_key( phw_data_t pHwData );
26void hal_clear_all_key( phw_data_t pHwData );
27void hal_get_ethernet_address( phw_data_t pHwData, PUCHAR current_address );
28void hal_set_ethernet_address( phw_data_t pHwData, PUCHAR current_address );
29void hal_get_permanent_address( phw_data_t pHwData, PUCHAR pethernet_address );
30unsigned char hal_init_hardware( phw_data_t pHwData, PADAPTER Adapter );
31void hal_set_power_save_mode( phw_data_t pHwData, unsigned char power_save, unsigned char wakeup, unsigned char dtim );
32void hal_get_power_save_mode( phw_data_t pHwData, PBOOLEAN pin_pwr_save );
33void hal_set_slot_time( phw_data_t pHwData, u8 type );
34#define hal_set_atim_window( _A, _ATM )
35void hal_set_rates( phw_data_t pHwData, PUCHAR pbss_rates, u8 length, unsigned char basic_rate_set );
36#define hal_set_basic_rates( _A, _R, _L ) hal_set_rates( _A, _R, _L, TRUE )
37#define hal_set_op_rates( _A, _R, _L ) hal_set_rates( _A, _R, _L, FALSE )
38void hal_start_bss( phw_data_t pHwData, u8 mac_op_mode );
39void hal_join_request( phw_data_t pHwData, u8 bss_type ); // 0:BSS STA 1:IBSS STA//
40void hal_stop_sync_bss( phw_data_t pHwData );
41void hal_resume_sync_bss( phw_data_t pHwData);
42void hal_set_aid( phw_data_t pHwData, u16 aid );
43void hal_set_bssid( phw_data_t pHwData, PUCHAR pbssid );
44void hal_get_bssid( phw_data_t pHwData, PUCHAR pbssid );
45void hal_set_beacon_period( phw_data_t pHwData, u16 beacon_period );
46void hal_set_listen_interval( phw_data_t pHwData, u16 listen_interval );
47void hal_set_cap_info( phw_data_t pHwData, u16 capability_info );
48void hal_set_ssid( phw_data_t pHwData, PUCHAR pssid, u8 ssid_len );
49void hal_set_current_channel( phw_data_t pHwData, ChanInfo channel );
50void hal_set_current_channel_ex( phw_data_t pHwData, ChanInfo channel );
51void hal_get_current_channel( phw_data_t pHwData, ChanInfo *channel );
52void hal_set_accept_broadcast( phw_data_t pHwData, u8 enable );
53void hal_set_accept_multicast( phw_data_t pHwData, u8 enable );
54void hal_set_accept_beacon( phw_data_t pHwData, u8 enable );
55void hal_set_multicast_address( phw_data_t pHwData, PUCHAR address, u8 number );
56u8 hal_get_accept_beacon( phw_data_t pHwData );
57void hal_stop( phw_data_t pHwData );
58void hal_halt( phw_data_t pHwData, void *ppa_data );
59void hal_start_tx0( phw_data_t pHwData );
60void hal_set_phy_type( phw_data_t pHwData, u8 PhyType );
61void hal_get_phy_type( phw_data_t pHwData, u8 *PhyType );
62unsigned char hal_reset_hardware( phw_data_t pHwData, void* ppa );
63void hal_set_cwmin( phw_data_t pHwData, u8 cwin_min );
64#define hal_get_cwmin( _A ) ( (_A)->cwmin )
65void hal_set_cwmax( phw_data_t pHwData, u16 cwin_max );
66#define hal_get_cwmax( _A ) ( (_A)->cwmax )
67void hal_set_rsn_wpa( phw_data_t pHwData, u32 * RSN_IE_Bitmap , u32 * RSN_OUI_type , unsigned char bDesiredAuthMode);
68//s32 hal_get_rssi( phw_data_t pHwData, u32 HalRssi );
69s32 hal_get_rssi( phw_data_t pHwData, u32 *HalRssiArry, u8 Count );
70s32 hal_get_rssi_bss( phw_data_t pHwData, u16 idx, u8 Count );
71void hal_set_connect_info( phw_data_t pHwData, unsigned char boConnect );
72u8 hal_get_est_sq3( phw_data_t pHwData, u8 Count );
73void hal_led_control_1a( phw_data_t pHwData );
74void hal_led_control( void* S1, phw_data_t pHwData, void* S3, void* S4 );
75void hal_set_rf_power( phw_data_t pHwData, u8 PowerIndex ); // 20060621 Modify
76void hal_reset_counter( phw_data_t pHwData );
77void hal_set_radio_mode( phw_data_t pHwData, unsigned char boValue);
78void hal_descriptor_indicate( phw_data_t pHwData, PDESCRIPTOR pDes );
79u8 hal_get_antenna_number( phw_data_t pHwData );
80void hal_set_antenna_number( phw_data_t pHwData, u8 number );
81u32 hal_get_bss_pk_cnt( phw_data_t pHwData );
82#define hal_get_region_from_EEPROM( _A ) ( (_A)->Wb35Reg.EEPROMRegion )
83void hal_set_accept_promiscuous ( phw_data_t pHwData, u8 enable);
84#define hal_get_tx_buffer( _A, _B ) Wb35Tx_get_tx_buffer( _A, _B )
85u8 hal_get_hw_radio_off ( phw_data_t pHwData );
86#define hal_software_set( _A ) (_A->SoftwareSet)
87#define hal_driver_init_OK( _A ) (_A->IsInitOK)
88#define hal_rssi_boundary_high( _A ) (_A->RSSI_high)
89#define hal_rssi_boundary_low( _A ) (_A->RSSI_low)
90#define hal_scan_interval( _A ) (_A->Scan_Interval)
91void hal_scan_status_indicate( phw_data_t pHwData, u8 status); // 0: complete, 1: in progress
92void hal_system_power_change( phw_data_t pHwData, u32 PowerState ); // 20051230 -=D0 1=D1 ..
93void hal_surprise_remove( phw_data_t pHwData );
94
95#define PHY_DEBUG( msg, args... )
96
97
98
99void hal_rate_change( phw_data_t pHwData ); // Notify the HAL rate is changing 20060613.1
100unsigned char hal_get_dxx_reg( phw_data_t pHwData, u16 number, PULONG pValue );
101unsigned char hal_set_dxx_reg( phw_data_t pHwData, u16 number, u32 value );
102#define hal_get_time_count( _P ) (_P->time_count/10) // return 100ms count
103#define hal_detect_error( _P ) (_P->WbUsb.DetectCount)
104unsigned char hal_set_LED( phw_data_t pHwData, u32 Mode ); // 20061108 for WPS led control
105
106//-------------------------------------------------------------------------
107// The follow function is unused for IS89C35
108//-------------------------------------------------------------------------
109#define hal_disable_interrupt(_A)
110#define hal_enable_interrupt(_A)
111#define hal_get_interrupt_type( _A)
112#define hal_get_clear_interrupt(_A)
113#define hal_ibss_disconnect(_A) hal_stop_sync_bss(_A)
114#define hal_join_request_stop(_A)
115unsigned char hal_idle( phw_data_t pHwData );
116#define pa_stall_execution( _A ) //OS_SLEEP( 1 )
117#define hw_get_cxx_reg( _A, _B, _C )
118#define hw_set_cxx_reg( _A, _B, _C )
119#define hw_get_dxx_reg( _A, _B, _C ) hal_get_dxx_reg( _A, _B, (PULONG)_C )
120#define hw_set_dxx_reg( _A, _B, _C ) hal_set_dxx_reg( _A, _B, (u32)_C )
121
122
diff --git a/drivers/staging/winbond/wbhal_s.h b/drivers/staging/winbond/wbhal_s.h
new file mode 100644
index 00000000000..5b862ff357b
--- /dev/null
+++ b/drivers/staging/winbond/wbhal_s.h
@@ -0,0 +1,615 @@
1//[20040722 WK]
2#define HAL_LED_SET_MASK 0x001c //20060901 Extend
3#define HAL_LED_SET_SHIFT 2
4
5//supported RF type
6#define RF_MAXIM_2825 0
7#define RF_MAXIM_2827 1
8#define RF_MAXIM_2828 2
9#define RF_MAXIM_2829 3
10#define RF_MAXIM_V1 15
11#define RF_AIROHA_2230 16
12#define RF_AIROHA_7230 17
13#define RF_AIROHA_2230S 18 // 20060420 Add this
14// #define RF_RFMD_2959 32 // 20060626 Remove all about RFMD
15#define RF_WB_242 33
16#define RF_WB_242_1 34 // 20060619.5 Add
17#define RF_DECIDE_BY_INF 255
18
19//----------------------------------------------------------------
20// The follow define connect to upper layer
21// User must modify for connection between HAL and upper layer
22//----------------------------------------------------------------
23
24
25
26
27/////////////////////////////////////////////////////////////////////////////////////////////////////
28//================================================================================================
29// Common define
30//================================================================================================
31#define HAL_USB_MODE_BURST( _H ) (_H->SoftwareSet & 0x20 ) // Bit 5 20060901 Modify
32
33// Scan interval
34#define SCAN_MAX_CHNL_TIME (50)
35
36// For TxL2 Frame typr recognise
37#define FRAME_TYPE_802_3_DATA 0
38#define FRAME_TYPE_802_11_MANAGEMENT 1
39#define FRAME_TYPE_802_11_MANAGEMENT_CHALLENGE 2
40#define FRAME_TYPE_802_11_CONTROL 3
41#define FRAME_TYPE_802_11_DATA 4
42#define FRAME_TYPE_PROMISCUOUS 5
43
44// The follow definition is used for convert the frame--------------------
45#define DOT_11_SEQUENCE_OFFSET 22 //Sequence control offset
46#define DOT_3_TYPE_OFFSET 12
47#define DOT_11_MAC_HEADER_SIZE 24
48#define DOT_11_SNAP_SIZE 6
49#define DOT_11_TYPE_OFFSET 30 //The start offset of 802.11 Frame. Type encapsulatuin.
50#define DEFAULT_SIFSTIME 10
51#define DEFAULT_FRAGMENT_THRESHOLD 2346 // No fragment
52#define DEFAULT_MSDU_LIFE_TIME 0xffff
53
54#define LONG_PREAMBLE_PLUS_PLCPHEADER_TIME (144+48)
55#define SHORT_PREAMBLE_PLUS_PLCPHEADER_TIME (72+24)
56#define PREAMBLE_PLUS_SIGNAL_PLUS_SIGNALEXTENSION (16+4+6)
57#define Tsym 4
58
59// Frame Type of Bits (2, 3)---------------------------------------------
60#define MAC_TYPE_MANAGEMENT 0x00
61#define MAC_TYPE_CONTROL 0x04
62#define MAC_TYPE_DATA 0x08
63#define MASK_FRAGMENT_NUMBER 0x000F
64#define SEQUENCE_NUMBER_SHIFT 4
65
66#define HAL_WOL_TYPE_WAKEUP_FRAME 0x01
67#define HAL_WOL_TYPE_MAGIC_PACKET 0x02
68
69// 20040106 ADDED
70#define HAL_KEYTYPE_WEP40 0
71#define HAL_KEYTYPE_WEP104 1
72#define HAL_KEYTYPE_TKIP 2 // 128 bit key
73#define HAL_KEYTYPE_AES_CCMP 3 // 128 bit key
74
75// For VM state
76enum {
77 VM_STOP = 0,
78 VM_RUNNING,
79 VM_COMPLETED
80};
81
82// Be used for 802.11 mac header
83typedef struct _MAC_FRAME_CONTROL {
84 u8 mac_frame_info; // this is a combination of the protovl version, type and subtype
85 u8 to_ds:1;
86 u8 from_ds:1;
87 u8 more_frag:1;
88 u8 retry:1;
89 u8 pwr_mgt:1;
90 u8 more_data:1;
91 u8 WEP:1;
92 u8 order:1;
93} MAC_FRAME_CONTROL, *PMAC_FRAME_CONTROL;
94
95//-----------------------------------------------------
96// Normal Key table format
97//-----------------------------------------------------
98// The order of KEY index is MAPPING_KEY_START_INDEX > GROUP_KEY_START_INDEX
99#define MAX_KEY_TABLE 24 // 24 entry for storing key data
100#define GROUP_KEY_START_INDEX 4
101#define MAPPING_KEY_START_INDEX 8
102typedef struct _KEY_TABLE
103{
104 u32 DW0_Valid:1;
105 u32 DW0_NullKey:1;
106 u32 DW0_Security_Mode:2;//0:WEP 40 bit 1:WEP 104 bit 2:TKIP 128 bit 3:CCMP 128 bit
107 u32 DW0_WEPON:1;
108 u32 DW0_RESERVED:11;
109 u32 DW0_Address1:16;
110
111 u32 DW1_Address2;
112
113 u32 DW2_RxSequenceCount1;
114
115 u32 DW3_RxSequenceCount2:16;
116 u32 DW3_RESERVED:16;
117
118 u32 DW4_TxSequenceCount1;
119
120 u32 DW5_TxSequenceCount2:16;
121 u32 DW5_RESERVED:16;
122
123} KEY_TABLE, *PKEY_TABLE;
124
125//--------------------------------------------------------
126// Descriptor
127//--------------------------------------------------------
128#define MAX_DESCRIPTOR_BUFFER_INDEX 8 // Have to multiple of 2
129//#define FLAG_ERROR_TX_MASK cpu_to_le32(0x000000bf) //20061009 marked by anson's endian
130#define FLAG_ERROR_TX_MASK 0x000000bf //20061009 anson's endian
131//#define FLAG_ERROR_RX_MASK 0x00000c3f
132//#define FLAG_ERROR_RX_MASK cpu_to_le32(0x0000083f) //20061009 marked by anson's endian
133 //Don't care replay error,
134 //it is handled by S/W
135#define FLAG_ERROR_RX_MASK 0x0000083f //20060926 anson's endian
136
137#define FLAG_BAND_RX_MASK 0x10000000 //Bit 28
138
139typedef struct _R00_DESCRIPTOR
140{
141 union
142 {
143 u32 value;
144 #ifdef _BIG_ENDIAN_ //20060926 anson's endian
145 struct
146 {
147 u32 R00_packet_or_buffer_status:1;
148 u32 R00_packet_in_fifo:1;
149 u32 R00_RESERVED:2;
150 u32 R00_receive_byte_count:12;
151 u32 R00_receive_time_index:16;
152 };
153 #else
154 struct
155 {
156 u32 R00_receive_time_index:16;
157 u32 R00_receive_byte_count:12;
158 u32 R00_RESERVED:2;
159 u32 R00_packet_in_fifo:1;
160 u32 R00_packet_or_buffer_status:1;
161 };
162 #endif
163 };
164} R00_DESCRIPTOR, *PR00_DESCRIPTOR;
165
166typedef struct _T00_DESCRIPTOR
167{
168 union
169 {
170 u32 value;
171 #ifdef _BIG_ENDIAN_ //20061009 anson's endian
172 struct
173 {
174 u32 T00_first_mpdu:1; // for hardware use
175 u32 T00_last_mpdu:1; // for hardware use
176 u32 T00_IsLastMpdu:1;// 0: not 1:Yes for software used
177 u32 T00_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS
178 u32 T00_RESERVED_ID:2;//3 bit ID reserved
179 u32 T00_tx_packet_id:4;//930519.4.e 930810.3.c
180 u32 T00_RESERVED:4;
181 u32 T00_header_length:6;
182 u32 T00_frame_length:12;
183 };
184 #else
185 struct
186 {
187 u32 T00_frame_length:12;
188 u32 T00_header_length:6;
189 u32 T00_RESERVED:4;
190 u32 T00_tx_packet_id:4;//930519.4.e 930810.3.c
191 u32 T00_RESERVED_ID:2;//3 bit ID reserved
192 u32 T00_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS
193 u32 T00_IsLastMpdu:1;// 0: not 1:Yes for software used
194 u32 T00_last_mpdu:1; // for hardware use
195 u32 T00_first_mpdu:1; // for hardware use
196 };
197 #endif
198 };
199} T00_DESCRIPTOR, *PT00_DESCRIPTOR;
200
201typedef struct _R01_DESCRIPTOR
202{
203 union
204 {
205 u32 value;
206 #ifdef _BIG_ENDIAN_ //20060926 add by anson's endian
207 struct
208 {
209 u32 R01_RESERVED:3;
210 u32 R01_mod_type:1;
211 u32 R01_pre_type:1;
212 u32 R01_data_rate:3;
213 u32 R01_AGC_state:8;
214 u32 R01_LNA_state:2;
215 u32 R01_decryption_method:2;
216 u32 R01_mic_error:1;
217 u32 R01_replay:1;
218 u32 R01_broadcast_frame:1;
219 u32 R01_multicast_frame:1;
220 u32 R01_directed_frame:1;
221 u32 R01_receive_frame_antenna_selection:1;
222 u32 R01_frame_receive_during_atim_window:1;
223 u32 R01_protocol_version_error:1;
224 u32 R01_authentication_frame_icv_error:1;
225 u32 R01_null_key_to_authentication_frame:1;
226 u32 R01_icv_error:1;
227 u32 R01_crc_error:1;
228 };
229 #else
230 struct
231 {
232 u32 R01_crc_error:1;
233 u32 R01_icv_error:1;
234 u32 R01_null_key_to_authentication_frame:1;
235 u32 R01_authentication_frame_icv_error:1;
236 u32 R01_protocol_version_error:1;
237 u32 R01_frame_receive_during_atim_window:1;
238 u32 R01_receive_frame_antenna_selection:1;
239 u32 R01_directed_frame:1;
240 u32 R01_multicast_frame:1;
241 u32 R01_broadcast_frame:1;
242 u32 R01_replay:1;
243 u32 R01_mic_error:1;
244 u32 R01_decryption_method:2;
245 u32 R01_LNA_state:2;
246 u32 R01_AGC_state:8;
247 u32 R01_data_rate:3;
248 u32 R01_pre_type:1;
249 u32 R01_mod_type:1;
250 u32 R01_RESERVED:3;
251 };
252 #endif
253 };
254} R01_DESCRIPTOR, *PR01_DESCRIPTOR;
255
256typedef struct _T01_DESCRIPTOR
257{
258 union
259 {
260 u32 value;
261 #ifdef _BIG_ENDIAN_ //20061009 anson's endian
262 struct
263 {
264 u32 T01_rts_cts_duration:16;
265 u32 T01_fall_back_rate:3;
266 u32 T01_add_rts:1;
267 u32 T01_add_cts:1;
268 u32 T01_modulation_type:1;
269 u32 T01_plcp_header_length:1;
270 u32 T01_transmit_rate:3;
271 u32 T01_wep_id:2;
272 u32 T01_add_challenge_text:1;
273 u32 T01_inhibit_crc:1;
274 u32 T01_loop_back_wep_mode:1;
275 u32 T01_retry_abort_ebable:1;
276 };
277 #else
278 struct
279 {
280 u32 T01_retry_abort_ebable:1;
281 u32 T01_loop_back_wep_mode:1;
282 u32 T01_inhibit_crc:1;
283 u32 T01_add_challenge_text:1;
284 u32 T01_wep_id:2;
285 u32 T01_transmit_rate:3;
286 u32 T01_plcp_header_length:1;
287 u32 T01_modulation_type:1;
288 u32 T01_add_cts:1;
289 u32 T01_add_rts:1;
290 u32 T01_fall_back_rate:3;
291 u32 T01_rts_cts_duration:16;
292 };
293 #endif
294 };
295} T01_DESCRIPTOR, *PT01_DESCRIPTOR;
296
297typedef struct _T02_DESCRIPTOR
298{
299 union
300 {
301 u32 value;
302 #ifdef _BIG_ENDIAN_ //20061009 add by anson's endian
303 struct
304 {
305 u32 T02_IsLastMpdu:1;// The same mechanism with T00 setting
306 u32 T02_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS
307 u32 T02_RESERVED_ID:2;// The same mechanism with T00 setting
308 u32 T02_Tx_PktID:4;
309 u32 T02_MPDU_Cnt:4;
310 u32 T02_RTS_Cnt:4;
311 u32 T02_RESERVED:7;
312 u32 T02_transmit_complete:1;
313 u32 T02_transmit_abort_due_to_TBTT:1;
314 u32 T02_effective_transmission_rate:1;
315 u32 T02_transmit_without_encryption_due_to_wep_on_false:1;
316 u32 T02_discard_due_to_null_wep_key:1;
317 u32 T02_RESERVED_1:1;
318 u32 T02_out_of_MaxTxMSDULiftTime:1;
319 u32 T02_transmit_abort:1;
320 u32 T02_transmit_fail:1;
321 };
322 #else
323 struct
324 {
325 u32 T02_transmit_fail:1;
326 u32 T02_transmit_abort:1;
327 u32 T02_out_of_MaxTxMSDULiftTime:1;
328 u32 T02_RESERVED_1:1;
329 u32 T02_discard_due_to_null_wep_key:1;
330 u32 T02_transmit_without_encryption_due_to_wep_on_false:1;
331 u32 T02_effective_transmission_rate:1;
332 u32 T02_transmit_abort_due_to_TBTT:1;
333 u32 T02_transmit_complete:1;
334 u32 T02_RESERVED:7;
335 u32 T02_RTS_Cnt:4;
336 u32 T02_MPDU_Cnt:4;
337 u32 T02_Tx_PktID:4;
338 u32 T02_RESERVED_ID:2;// The same mechanism with T00 setting
339 u32 T02_IgnoreResult:1;// The same mechanism with T00 setting. 050111 Modify for TS
340 u32 T02_IsLastMpdu:1;// The same mechanism with T00 setting
341 };
342 #endif
343 };
344} T02_DESCRIPTOR, *PT02_DESCRIPTOR;
345
346typedef struct _DESCRIPTOR { // Skip length = 8 DWORD
347 // ID for descriptor ---, The field doesn't be cleard in the operation of Descriptor definition
348 u8 Descriptor_ID;
349 //----------------------The above region doesn't be cleared by DESCRIPTOR_RESET------
350 u8 RESERVED[3];
351
352 u16 FragmentThreshold;
353 u8 InternalUsed;//Only can be used by operation of descriptor definition
354 u8 Type;// 0: 802.3 1:802.11 data frame 2:802.11 management frame
355
356 u8 PreambleMode;// 0: short 1:long
357 u8 TxRate;
358 u8 FragmentCount;
359 u8 EapFix; // For speed up key install
360
361 // For R00 and T00 ----------------------------------------------
362 union
363 {
364 R00_DESCRIPTOR R00;
365 T00_DESCRIPTOR T00;
366 };
367
368 // For R01 and T01 ----------------------------------------------
369 union
370 {
371 R01_DESCRIPTOR R01;
372 T01_DESCRIPTOR T01;
373 };
374
375 // For R02 and T02 ----------------------------------------------
376 union
377 {
378 u32 R02;
379 T02_DESCRIPTOR T02;
380 };
381
382 // For R03 and T03 ----------------------------------------------
383 // For software used
384 union
385 {
386 u32 R03;
387 u32 T03;
388 struct
389 {
390 u8 buffer_number;
391 u8 buffer_start_index;
392 u16 buffer_total_size;
393 };
394 };
395
396 // For storing the buffer
397 u16 buffer_size[ MAX_DESCRIPTOR_BUFFER_INDEX ];
398 void* buffer_address[ MAX_DESCRIPTOR_BUFFER_INDEX ];//931130.4.q
399
400} DESCRIPTOR, *PDESCRIPTOR;
401
402
403#define DEFAULT_NULL_PACKET_COUNT 180000 //20060828.1 Add. 180 seconds
404
405#define MAX_TXVGA_EEPROM 9 //How many word(u16) of EEPROM will be used for TxVGA
406#define MAX_RF_PARAMETER 32
407
408typedef struct _TXVGA_FOR_50 {
409 u8 ChanNo;
410 u8 TxVgaValue;
411} TXVGA_FOR_50;
412
413
414//=====================================================================
415// Device related include
416//=====================================================================
417
418#include "linux/wbusb_s.h"
419#include "linux/wb35reg_s.h"
420#include "linux/wb35tx_s.h"
421#include "linux/wb35rx_s.h"
422
423
424// For Hal using ==================================================================
425typedef struct _HW_DATA_T
426{
427 // For compatible with 33
428 u32 revision;
429 u32 BB3c_cal; // The value for Tx calibration comes from EEPROM
430 u32 BB54_cal; // The value for Rx calibration comes from EEPROM
431
432
433 // For surprise remove
434 u32 SurpriseRemove; // 0: Normal 1: Surprise remove
435 u8 InitialResource;
436 u8 IsKeyPreSet;
437 u8 CalOneTime; // 20060630.1
438
439 u8 VCO_trim;
440
441 // For Fix 1'st DMA bug
442 u32 FragCount;
443 u32 DMAFix; //V1_DMA_FIX The variable can be removed if driver want to save mem space for V2.
444
445 //=======================================================================================
446 // For USB driver, hal need more variables. Due to
447 // 1. NDIS-WDM operation
448 // 2. The SME, MLME and OLD MDS need Adapter structure, but the driver under HAL doesn't
449 // have that parameter when receiving and indicating packet.
450 // The MDS must input the Adapter pointer as the second parameter of hal_init_hardware.
451 // The function usage is different than PCI driver.
452 //=======================================================================================
453 void* Adapter;
454
455 //===============================================
456 // Definition for MAC address
457 //===============================================
458 u8 PermanentMacAddress[ETH_LENGTH_OF_ADDRESS + 2]; // The Enthernet addr that are stored in EEPROM. + 2 to 8-byte alignment
459 u8 CurrentMacAddress[ETH_LENGTH_OF_ADDRESS + 2]; // The Enthernet addr that are in used. + 2 to 8-byte alignment
460
461 //=====================================================================
462 // Definition for 802.11
463 //=====================================================================
464 PUCHAR bssid_pointer; // Used by hal_get_bssid for return value
465 u8 bssid[8];// Only 6 byte will be used. 8 byte is required for read buffer
466 u8 ssid[32];// maximum ssid length is 32 byte
467
468 u16 AID;
469 u8 ssid_length;
470 u8 Channel;
471
472 u16 ListenInterval;
473 u16 CapabilityInformation;
474
475 u16 BeaconPeriod;
476 u16 ProbeDelay;
477
478 u8 bss_type;// 0: IBSS_NET or 1:ESS_NET
479 u8 preamble;// 0: short preamble, 1: long preamble
480 u8 slot_time_select;// 9 or 20 value
481 u8 phy_type;// Phy select
482
483 u32 phy_para[MAX_RF_PARAMETER];
484 u32 phy_number;
485
486 u32 CurrentRadioSw; // 20060320.2 0:On 1:Off
487 u32 CurrentRadioHw; // 20060825 0:On 1:Off
488
489 PUCHAR power_save_point; // Used by hal_get_power_save_mode for return value
490 u8 cwmin;
491 u8 desired_power_save;
492 u8 dtim;// Is running dtim
493 u8 mapping_key_replace_index;//In Key table, the next index be replaced 931130.4.r
494
495 u16 MaxReceiveLifeTime;
496 u16 FragmentThreshold;
497 u16 FragmentThreshold_tmp;
498 u16 cwmax;
499
500 u8 Key_slot[MAX_KEY_TABLE][8]; //Ownership record for key slot. For Alignment
501 u32 Key_content[MAX_KEY_TABLE][12]; // 10DW for each entry + 2 for burst command( Off and On valid bit)
502 u8 CurrentDefaultKeyIndex;
503 u32 CurrentDefaultKeyLength;
504
505 //========================================================================
506 // Variable for each module
507 //========================================================================
508 WBUSB WbUsb; // Need WbUsb.h
509 WB35REG Wb35Reg; // Need Wb35Reg.h
510 WB35TX Wb35Tx; // Need Wb35Tx.h
511 WB35RX Wb35Rx; // Need Wb35Rx.h
512
513 OS_TIMER LEDTimer;// For LED
514
515 u32 LEDpoint;// For LED
516
517 u32 dto_tx_retry_count; // LA20040210_DTO kevin
518 u32 dto_tx_frag_count; // LA20040210_DTO kevin
519 u32 rx_ok_count[13]; // index=0: total rx ok
520 //u32 rx_ok_bytes[13]; // index=0, total rx ok bytes
521 u32 rx_err_count[13]; // index=0: total rx err
522
523 //for Tx debug
524 u32 tx_TBTT_start_count;
525 u32 tx_ETR_count;
526 u32 tx_WepOn_false_count;
527 u32 tx_Null_key_count;
528 u32 tx_retry_count[8];
529
530 u8 PowerIndexFromEEPROM; // For 2412MHz
531 u8 power_index;
532 u8 IsWaitJoinComplete; // TRUE: set join request
533 u8 band;
534
535 u16 SoftwareSet;
536 u16 Reserved_s;
537
538 u32 IsInitOK; // 0: Driver starting 1: Driver init OK
539
540 // For Phy calibration
541 s32 iq_rsdl_gain_tx_d2;
542 s32 iq_rsdl_phase_tx_d2;
543 u32 txvga_setting_for_cal; // 20060703.1 Add
544
545 u8 TxVgaSettingInEEPROM[ (((MAX_TXVGA_EEPROM*2)+3) & ~0x03) ]; // 20060621 For backup EEPROM value
546 u8 TxVgaFor24[16]; // Max is 14, 2 for alignment
547 TXVGA_FOR_50 TxVgaFor50[36]; // 35 channels in 5G. 35x2 = 70 byte. 2 for alignments
548
549 u16 Scan_Interval;
550 u16 RESERVED6;
551
552 // LED control
553 u32 LED_control;
554 // LED_control 4 byte: Gray_Led_1[3] Gray_Led_0[2] Led[1] Led[0]
555 // Gray_Led
556 // For Led gray setting
557 // Led
558 // 0: normal control, LED behavior will decide by EEPROM setting
559 // 1: Turn off specific LED
560 // 2: Always on specific LED
561 // 3: slow blinking specific LED
562 // 4: fast blinking specific LED
563 // 5: WPS led control is set. Led0 is Red, Led1 id Green
564 // Led[1] is parameter for WPS LED mode
565 // // 1:InProgress 2: Error 3: Session overlap 4: Success 20061108 control
566
567 u32 LED_LinkOn; //Turn LED on control
568 u32 LED_Scanning; // Let LED in scan process control
569 u32 LED_Blinking; // Temp variable for shining
570 u32 RxByteCountLast;
571 u32 TxByteCountLast;
572
573 s32 SurpriseRemoveCount;
574
575 // For global timer
576 u32 time_count;//TICK_TIME_100ms 1 = 100ms
577
578 // For error recover
579 u32 HwStop;
580
581 // 20060828.1 for avoid AP disconnect
582 u32 NullPacketCount;
583
584} hw_data_t, *phw_data_t;
585
586// The mapping of Rx and Tx descriptor field
587typedef struct _HAL_RATE
588{
589 // DSSS
590 u32 RESERVED_0;
591 u32 NumRate2MS;
592 u32 NumRate55MS;
593 u32 NumRate11MS;
594
595 u32 RESERVED_1[4];
596
597 u32 NumRate1M;
598 u32 NumRate2ML;
599 u32 NumRate55ML;
600 u32 NumRate11ML;
601
602 u32 RESERVED_2[4];
603
604 // OFDM
605 u32 NumRate6M;
606 u32 NumRate9M;
607 u32 NumRate12M;
608 u32 NumRate18M;
609 u32 NumRate24M;
610 u32 NumRate36M;
611 u32 NumRate48M;
612 u32 NumRate54M;
613} HAL_RATE, *PHAL_RATE;
614
615
diff --git a/drivers/staging/winbond/wblinux.c b/drivers/staging/winbond/wblinux.c
new file mode 100644
index 00000000000..2eade5a47b1
--- /dev/null
+++ b/drivers/staging/winbond/wblinux.c
@@ -0,0 +1,277 @@
1//============================================================================
2// Copyright (c) 1996-2005 Winbond Electronic Corporation
3//
4// Module Name:
5// wblinux.c
6//
7// Abstract:
8// Linux releated routines
9//
10//============================================================================
11#include "os_common.h"
12
13u32
14WBLINUX_MemoryAlloc(void* *VirtualAddress, u32 Length)
15{
16 *VirtualAddress = kzalloc( Length, GFP_ATOMIC ); //GFP_KERNEL is not suitable
17
18 if (*VirtualAddress == NULL)
19 return 0;
20 return 1;
21}
22
23s32
24EncapAtomicInc(PADAPTER Adapter, void* pAtomic)
25{
26 PWBLINUX pWbLinux = &Adapter->WbLinux;
27 u32 ltmp;
28 PULONG pltmp = (PULONG)pAtomic;
29 OS_SPIN_LOCK_ACQUIRED( &pWbLinux->AtomicSpinLock );
30 (*pltmp)++;
31 ltmp = (*pltmp);
32 OS_SPIN_LOCK_RELEASED( &pWbLinux->AtomicSpinLock );
33 return ltmp;
34}
35
36s32
37EncapAtomicDec(PADAPTER Adapter, void* pAtomic)
38{
39 PWBLINUX pWbLinux = &Adapter->WbLinux;
40 u32 ltmp;
41 PULONG pltmp = (PULONG)pAtomic;
42 OS_SPIN_LOCK_ACQUIRED( &pWbLinux->AtomicSpinLock );
43 (*pltmp)--;
44 ltmp = (*pltmp);
45 OS_SPIN_LOCK_RELEASED( &pWbLinux->AtomicSpinLock );
46 return ltmp;
47}
48
49unsigned char
50WBLINUX_Initial(PADAPTER Adapter)
51{
52 PWBLINUX pWbLinux = &Adapter->WbLinux;
53
54 OS_SPIN_LOCK_ALLOCATE( &pWbLinux->SpinLock );
55 OS_SPIN_LOCK_ALLOCATE( &pWbLinux->AtomicSpinLock );
56 return TRUE;
57}
58
59void
60WBLinux_ReceivePacket(PADAPTER Adapter, PRXLAYER1 pRxLayer1)
61{
62 BUG();
63}
64
65
66void
67WBLINUX_GetNextPacket(PADAPTER Adapter, PDESCRIPTOR pDes)
68{
69 BUG();
70}
71
72void
73WBLINUX_GetNextPacketCompleted(PADAPTER Adapter, PDESCRIPTOR pDes)
74{
75 BUG();
76}
77
78void
79WBLINUX_Destroy(PADAPTER Adapter)
80{
81 WBLINUX_stop( Adapter );
82 OS_SPIN_LOCK_FREE( &pWbNdis->SpinLock );
83#ifdef _PE_USB_INI_DUMP_
84 WBDEBUG(("[w35und] unregister_netdev!\n"));
85#endif
86}
87
88void
89WBLINUX_stop( PADAPTER Adapter )
90{
91 PWBLINUX pWbLinux = &Adapter->WbLinux;
92 struct sk_buff *pSkb;
93
94 if (OS_ATOMIC_INC( Adapter, &pWbLinux->ThreadCount ) == 1) {
95 // Shutdown module immediately
96 pWbLinux->shutdown = 1;
97
98 while (pWbLinux->skb_array[ pWbLinux->skb_GetIndex ]) {
99 // Trying to free the un-sending packet
100 pSkb = pWbLinux->skb_array[ pWbLinux->skb_GetIndex ];
101 pWbLinux->skb_array[ pWbLinux->skb_GetIndex ] = NULL;
102 if( in_irq() )
103 dev_kfree_skb_irq( pSkb );
104 else
105 dev_kfree_skb( pSkb );
106
107 pWbLinux->skb_GetIndex++;
108 pWbLinux->skb_GetIndex %= WBLINUX_PACKET_ARRAY_SIZE;
109 }
110
111#ifdef _PE_STATE_DUMP_
112 WBDEBUG(( "[w35und] SKB_RELEASE OK\n" ));
113#endif
114 }
115
116 OS_ATOMIC_DEC( Adapter, &pWbLinux->ThreadCount );
117}
118
119void
120WbWlanHalt( PADAPTER Adapter )
121{
122 //---------------------
123 Adapter->sLocalPara.ShutDowned = TRUE;
124
125 Mds_Destroy( Adapter );
126
127 // Turn off Rx and Tx hardware ability
128 hal_stop( &Adapter->sHwData );
129#ifdef _PE_USB_INI_DUMP_
130 WBDEBUG(("[w35und] Hal_stop O.K.\n"));
131#endif
132 OS_SLEEP(100000);// Waiting Irp completed
133
134 // Destroy the NDIS module
135 WBLINUX_Destroy( Adapter );
136
137 // Halt the HAL
138 hal_halt(&Adapter->sHwData, NULL);
139}
140
141unsigned char
142WbWLanInitialize(PADAPTER Adapter)
143{
144 phw_data_t pHwData;
145 PUCHAR pMacAddr, pMacAddr2;
146 u32 InitStep = 0;
147 u8 EEPROM_region;
148 u8 HwRadioOff;
149
150 do {
151 //
152 // Setting default value for Linux
153 //
154 Adapter->sLocalPara.region_INF = REGION_AUTO;
155 Adapter->sLocalPara.TxRateMode = RATE_AUTO;
156 psLOCAL->bMacOperationMode = MODE_802_11_BG; // B/G mode
157 Adapter->Mds.TxRTSThreshold = DEFAULT_RTSThreshold;
158 Adapter->Mds.TxFragmentThreshold = DEFAULT_FRAGMENT_THRESHOLD;
159 hal_set_phy_type( &Adapter->sHwData, RF_WB_242_1 );
160 Adapter->sLocalPara.MTUsize = MAX_ETHERNET_PACKET_SIZE;
161 psLOCAL->bPreambleMode = AUTO_MODE;
162 Adapter->sLocalPara.RadioOffStatus.boSwRadioOff = FALSE;
163 pHwData = &Adapter->sHwData;
164 hal_set_phy_type( pHwData, RF_DECIDE_BY_INF );
165
166 //
167 // Initial each module and variable
168 //
169 if (!WBLINUX_Initial(Adapter)) {
170#ifdef _PE_USB_INI_DUMP_
171 WBDEBUG(("[w35und]WBNDIS initialization failed\n"));
172#endif
173 break;
174 }
175
176 // Initial Software variable
177 Adapter->sLocalPara.ShutDowned = FALSE;
178
179 //added by ws for wep key error detection
180 Adapter->sLocalPara.bWepKeyError= FALSE;
181 Adapter->sLocalPara.bToSelfPacketReceived = FALSE;
182 Adapter->sLocalPara.WepKeyDetectTimerCount= 2 * 100; /// 2 seconds
183
184 // Initial USB hal
185 InitStep = 1;
186 pHwData = &Adapter->sHwData;
187 if (!hal_init_hardware(pHwData, Adapter))
188 break;
189
190 EEPROM_region = hal_get_region_from_EEPROM( pHwData );
191 if (EEPROM_region != REGION_AUTO)
192 psLOCAL->region = EEPROM_region;
193 else {
194 if (psLOCAL->region_INF != REGION_AUTO)
195 psLOCAL->region = psLOCAL->region_INF;
196 else
197 psLOCAL->region = REGION_USA; //default setting
198 }
199
200 // Get Software setting flag from hal
201 Adapter->sLocalPara.boAntennaDiversity = FALSE;
202 if (hal_software_set(pHwData) & 0x00000001)
203 Adapter->sLocalPara.boAntennaDiversity = TRUE;
204
205 //
206 // For TS module
207 //
208 InitStep = 2;
209
210 // For MDS module
211 InitStep = 3;
212 Mds_initial(Adapter);
213
214 //=======================================
215 // Initialize the SME, SCAN, MLME, ROAM
216 //=======================================
217 InitStep = 4;
218 InitStep = 5;
219 InitStep = 6;
220
221 // If no user-defined address in the registry, use the addresss "burned" on the NIC instead.
222 pMacAddr = Adapter->sLocalPara.ThisMacAddress;
223 pMacAddr2 = Adapter->sLocalPara.PermanentAddress;
224 hal_get_permanent_address( pHwData, Adapter->sLocalPara.PermanentAddress );// Reading ethernet address from EEPROM
225 if (OS_MEMORY_COMPARE(pMacAddr, "\x00\x00\x00\x00\x00\x00", MAC_ADDR_LENGTH )) // Is equal
226 {
227 memcpy( pMacAddr, pMacAddr2, MAC_ADDR_LENGTH );
228 } else {
229 // Set the user define MAC address
230 hal_set_ethernet_address( pHwData, Adapter->sLocalPara.ThisMacAddress );
231 }
232
233 //get current antenna
234 psLOCAL->bAntennaNo = hal_get_antenna_number(pHwData);
235#ifdef _PE_STATE_DUMP_
236 WBDEBUG(("Driver init, antenna no = %d\n", psLOCAL->bAntennaNo));
237#endif
238 hal_get_hw_radio_off( pHwData );
239
240 // Waiting for HAL setting OK
241 while (!hal_idle(pHwData))
242 OS_SLEEP(10000);
243
244 MTO_Init(Adapter);
245
246 HwRadioOff = hal_get_hw_radio_off( pHwData );
247 psLOCAL->RadioOffStatus.boHwRadioOff = !!HwRadioOff;
248
249 hal_set_radio_mode( pHwData, (unsigned char)(psLOCAL->RadioOffStatus.boSwRadioOff || psLOCAL->RadioOffStatus.boHwRadioOff) );
250
251 hal_driver_init_OK(pHwData) = 1; // Notify hal that the driver is ready now.
252 //set a tx power for reference.....
253// sme_set_tx_power_level(Adapter, 12); FIXME?
254 return TRUE;
255 }
256 while(FALSE);
257
258 switch (InitStep) {
259 case 5:
260 case 4:
261 case 3: Mds_Destroy( Adapter );
262 case 2:
263 case 1: WBLINUX_Destroy( Adapter );
264 hal_halt( pHwData, NULL );
265 case 0: break;
266 }
267
268 return FALSE;
269}
270
271void WBLINUX_ConnectStatus(PADAPTER Adapter, u32 flag)
272{
273 PWBLINUX pWbLinux = &Adapter->WbLinux;
274
275 pWbLinux->LinkStatus = flag; // OS_DISCONNECTED or OS_CONNECTED
276}
277
diff --git a/drivers/staging/winbond/wblinux_f.h b/drivers/staging/winbond/wblinux_f.h
new file mode 100644
index 00000000000..68240c5fc80
--- /dev/null
+++ b/drivers/staging/winbond/wblinux_f.h
@@ -0,0 +1,23 @@
1//=========================================================================
2// Copyright (c) 1996-2004 Winbond Electronic Corporation
3//
4// wblinux_f.h
5//
6u32 WBLINUX_MemoryAlloc( void* *VirtualAddress, u32 Length );
7s32 EncapAtomicInc( PADAPTER Adapter, void* pAtomic );
8s32 EncapAtomicDec( PADAPTER Adapter, void* pAtomic );
9void WBLinux_ReceivePacket( PADAPTER Adapter, PRXLAYER1 pRxLayer1 );
10unsigned char WBLINUX_Initial( PADAPTER Adapter );
11int wb35_start_xmit(struct sk_buff *skb, struct net_device *netdev );
12void WBLINUX_GetNextPacket( PADAPTER Adapter, PDESCRIPTOR pDes );
13void WBLINUX_GetNextPacketCompleted( PADAPTER Adapter, PDESCRIPTOR pDes );
14void WBLINUX_stop( PADAPTER Adapter );
15void WBLINUX_Destroy( PADAPTER Adapter );
16void wb35_set_multicast( struct net_device *netdev );
17struct net_device_stats * wb35_netdev_stats( struct net_device *netdev );
18void WBLINUX_stop( PADAPTER Adapter );
19void WbWlanHalt( PADAPTER Adapter );
20void WBLINUX_ConnectStatus( PADAPTER Adapter, u32 flag );
21
22
23
diff --git a/drivers/staging/winbond/wblinux_s.h b/drivers/staging/winbond/wblinux_s.h
new file mode 100644
index 00000000000..97e9167ab83
--- /dev/null
+++ b/drivers/staging/winbond/wblinux_s.h
@@ -0,0 +1,45 @@
1//============================================================
2// wblinux_s.h
3//
4#define OS_MEMORY_ALLOC( _V, _S ) WBLINUX_MemoryAlloc( _V, _S )
5#define OS_LINK_STATUS (Adapter->WbLinux.LinkStatus == OS_CONNECTED)
6#define OS_SET_SHUTDOWN( _A ) _A->WbLinux.shutdown=1
7#define OS_SET_RESUME( _A ) _A->WbLinux.shutdown=0
8#define OS_CONNECT_STATUS_INDICATE( _A, _F ) WBLINUX_ConnectStatus( _A, _F )
9#define OS_DISCONNECTED 0
10#define OS_CONNECTED 1
11#define OS_STOP( _A ) WBLINUX_stop( _A )
12
13#define OS_CURRENT_RX_BYTE( _A ) _A->WbLinux.RxByteCount
14#define OS_CURRENT_TX_BYTE( _A ) _A->WbLinux.TxByteCount
15#define OS_EVENT_INDICATE( _A, _B, _F )
16#define OS_PMKID_STATUS_EVENT( _A )
17#define OS_RECEIVE_PACKET_INDICATE( _A, _D ) WBLinux_ReceivePacket( _A, _D )
18#define OS_RECEIVE_802_1X_PACKET_INDICATE( _A, _D ) EAP_ReceivePacket( _A, _D )
19#define OS_GET_PACKET( _A, _D ) WBLINUX_GetNextPacket( _A, _D )
20#define OS_GET_PACKET_COMPLETE( _A, _D ) WBLINUX_GetNextPacketCompleted( _A, _D )
21#define OS_SEND_RESULT( _A, _ID, _R )
22
23#define WBLINUX_PACKET_ARRAY_SIZE (ETHERNET_TX_DESCRIPTORS*4)
24
25typedef struct _WBLINUX
26{
27 OS_SPIN_LOCK AtomicSpinLock;
28 OS_SPIN_LOCK SpinLock;
29 u32 shutdown;
30
31 OS_ATOMIC ThreadCount;
32
33 u32 LinkStatus; // OS_DISCONNECTED or OS_CONNECTED
34
35 u32 RxByteCount;
36 u32 TxByteCount;
37
38 struct sk_buff *skb_array[ WBLINUX_PACKET_ARRAY_SIZE ];
39 struct sk_buff *packet_return;
40 s32 skb_SetIndex;
41 s32 skb_GetIndex;
42 s32 netif_state_stop; // 1: stop 0: normal
43} WBLINUX, *PWBLINUX;
44
45
diff --git a/drivers/staging/wlan-ng/Kconfig b/drivers/staging/wlan-ng/Kconfig
new file mode 100644
index 00000000000..10b1f0f634d
--- /dev/null
+++ b/drivers/staging/wlan-ng/Kconfig
@@ -0,0 +1,10 @@
1config PRISM2_USB
2 tristate "Prism2.5 USB driver"
3 depends on USB
4 default n
5 ---help---
6 This is the wlan-ng prism 2.5 USB driver for a wide range of
7 old USB wireless devices.
8
9 To compile this driver as a module, choose M here: the module
10 will be called prism2_usb.
diff --git a/drivers/staging/wlan-ng/Makefile b/drivers/staging/wlan-ng/Makefile
new file mode 100644
index 00000000000..777b5111b3d
--- /dev/null
+++ b/drivers/staging/wlan-ng/Makefile
@@ -0,0 +1,9 @@
1obj-$(CONFIG_PRISM2_USB) += prism2_usb.o
2obj-$(CONFIG_PRISM2_USB) += p80211.o
3
4p80211-objs := p80211mod.o \
5 p80211conv.o \
6 p80211req.o \
7 p80211wep.o \
8 p80211wext.o \
9 p80211netdev.o
diff --git a/drivers/staging/wlan-ng/README b/drivers/staging/wlan-ng/README
new file mode 100644
index 00000000000..f50e4eb6c27
--- /dev/null
+++ b/drivers/staging/wlan-ng/README
@@ -0,0 +1,8 @@
1TODO:
2 - checkpatch.pl cleanups
3 - sparse warnings
4 - Lindent cleanups
5 - move to use the in-kernel wireless stack
6 - possible enable the pcmcia and pci portions of the driver
7
8Please send all patches to Greg Kroah-Hartman <greg@kroah.com>
diff --git a/drivers/staging/wlan-ng/hfa384x.c b/drivers/staging/wlan-ng/hfa384x.c
new file mode 100644
index 00000000000..04df3fd9c52
--- /dev/null
+++ b/drivers/staging/wlan-ng/hfa384x.c
@@ -0,0 +1,4018 @@
1/* src/prism2/driver/hfa384x.c
2*
3* Implements the functions of the Intersil hfa384x MAC
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file implements functions that correspond to the prism2/hfa384x
48* 802.11 MAC hardware and firmware host interface.
49*
50* The functions can be considered to represent several levels of
51* abstraction. The lowest level functions are simply C-callable wrappers
52* around the register accesses. The next higher level represents C-callable
53* prism2 API functions that match the Intersil documentation as closely
54* as is reasonable. The next higher layer implements common sequences
55* of invokations of the API layer (e.g. write to bap, followed by cmd).
56*
57* Common sequences:
58* hfa384x_drvr_xxx Highest level abstractions provided by the
59* hfa384x code. They are driver defined wrappers
60* for common sequences. These functions generally
61* use the services of the lower levels.
62*
63* hfa384x_drvr_xxxconfig An example of the drvr level abstraction. These
64* functions are wrappers for the RID get/set
65* sequence. They call copy_[to|from]_bap() and
66* cmd_access(). These functions operate on the
67* RIDs and buffers without validation. The caller
68* is responsible for that.
69*
70* API wrapper functions:
71* hfa384x_cmd_xxx functions that provide access to the f/w commands.
72* The function arguments correspond to each command
73* argument, even command arguments that get packed
74* into single registers. These functions _just_
75* issue the command by setting the cmd/parm regs
76* & reading the status/resp regs. Additional
77* activities required to fully use a command
78* (read/write from/to bap, get/set int status etc.)
79* are implemented separately. Think of these as
80* C-callable prism2 commands.
81*
82* Lowest Layer Functions:
83* hfa384x_docmd_xxx These functions implement the sequence required
84* to issue any prism2 command. Primarily used by the
85* hfa384x_cmd_xxx functions.
86*
87* hfa384x_bap_xxx BAP read/write access functions.
88* Note: we usually use BAP0 for non-interrupt context
89* and BAP1 for interrupt context.
90*
91* hfa384x_dl_xxx download related functions.
92*
93* Driver State Issues:
94* Note that there are two pairs of functions that manage the
95* 'initialized' and 'running' states of the hw/MAC combo. The four
96* functions are create(), destroy(), start(), and stop(). create()
97* sets up the data structures required to support the hfa384x_*
98* functions and destroy() cleans them up. The start() function gets
99* the actual hardware running and enables the interrupts. The stop()
100* function shuts the hardware down. The sequence should be:
101* create()
102* .
103* . Self contained test routines can run here, particularly
104* . corereset() and test_hostif().
105* .
106* start()
107* .
108* . Do interesting things w/ the hardware
109* .
110* stop()
111* destroy()
112*
113* Note that destroy() can be called without calling stop() first.
114* --------------------------------------------------------------------
115*/
116
117/*================================================================*/
118
119/* System Includes */
120#define WLAN_DBVAR prism2_debug
121#include "version.h"
122
123
124#include <linux/version.h>
125
126#include <linux/module.h>
127#include <linux/kernel.h>
128#include <linux/sched.h>
129#include <linux/types.h>
130#include <linux/slab.h>
131#include <linux/wireless.h>
132#include <linux/netdevice.h>
133#include <linux/timer.h>
134#include <asm/semaphore.h>
135#include <asm/io.h>
136#include <linux/delay.h>
137#include <asm/byteorder.h>
138#include <linux/list.h>
139
140#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
141#include <linux/tqueue.h>
142#else
143#include <linux/workqueue.h>
144#endif
145
146#if (WLAN_HOSTIF == WLAN_PCMCIA)
147#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) )
148#include <pcmcia/version.h>
149#endif
150#include <pcmcia/cs_types.h>
151#include <pcmcia/cs.h>
152#include <pcmcia/cistpl.h>
153#include <pcmcia/ds.h>
154#include <pcmcia/cisreg.h>
155#endif
156
157#if ((WLAN_HOSTIF == WLAN_PLX) || (WLAN_HOSTIF == WLAN_PCI))
158#include <linux/ioport.h>
159#include <linux/pci.h>
160#endif
161
162#include "wlan_compat.h"
163
164// XXXX #define CMD_IRQ
165
166/*================================================================*/
167/* Project Includes */
168
169#include "p80211types.h"
170#include "p80211hdr.h"
171#include "p80211mgmt.h"
172#include "p80211conv.h"
173#include "p80211msg.h"
174#include "p80211netdev.h"
175#include "p80211req.h"
176#include "p80211metadef.h"
177#include "p80211metastruct.h"
178#include "hfa384x.h"
179#include "prism2mgmt.h"
180
181/*================================================================*/
182/* Local Constants */
183
184static const UINT16 crc16tab[256] =
185{
186 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241,
187 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440,
188 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40,
189 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841,
190 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40,
191 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41,
192 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641,
193 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040,
194 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240,
195 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441,
196 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41,
197 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840,
198 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41,
199 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40,
200 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640,
201 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041,
202 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240,
203 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441,
204 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41,
205 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840,
206 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41,
207 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40,
208 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640,
209 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041,
210 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241,
211 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440,
212 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40,
213 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841,
214 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40,
215 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41,
216 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641,
217 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040
218};
219
220/*================================================================*/
221/* Local Macros */
222
223/*================================================================*/
224/* Local Types */
225
226/*================================================================*/
227/* Local Static Definitions */
228extern int prism2_debug;
229
230/*================================================================*/
231/* Local Function Declarations */
232
233static void hfa384x_int_dtim(wlandevice_t *wlandev);
234static void hfa384x_int_infdrop(wlandevice_t *wlandev);
235
236static void hfa384x_bap_tasklet(unsigned long data);
237
238static void hfa384x_int_info(wlandevice_t *wlandev);
239static void hfa384x_int_txexc(wlandevice_t *wlandev);
240static void hfa384x_int_tx(wlandevice_t *wlandev);
241static void hfa384x_int_rx(wlandevice_t *wlandev);
242
243#ifdef CMD_IRQ
244static void hfa384x_int_cmd(wlandevice_t *wlandev);
245#endif
246static void hfa384x_int_rxmonitor( wlandevice_t *wlandev,
247 UINT16 rxfid, hfa384x_rx_frame_t *rxdesc);
248static void hfa384x_int_alloc(wlandevice_t *wlandev);
249
250static int hfa384x_docmd_wait( hfa384x_t *hw, hfa384x_metacmd_t *cmd);
251
252static int hfa384x_dl_docmd_wait( hfa384x_t *hw, hfa384x_metacmd_t *cmd);
253
254static UINT16
255hfa384x_mkcrc16(UINT8 *p, int len);
256
257int hfa384x_copy_to_bap4(hfa384x_t *hw, UINT16 bap, UINT16 id, UINT16 offset,
258 void *buf, UINT len, void* buf2, UINT len2,
259 void *buf3, UINT len3, void* buf4, UINT len4);
260
261/*================================================================*/
262/* Function Definitions */
263
264static UINT16
265txfid_queue_empty(hfa384x_t *hw)
266{
267 return (hw->txfid_head == hw->txfid_tail) ? 1 : 0;
268}
269
270static UINT16
271txfid_queue_remove(hfa384x_t *hw)
272{
273 UINT16 result= 0;
274
275 if (txfid_queue_empty(hw)) {
276 WLAN_LOG_DEBUG(3,"queue empty.\n");
277 } else {
278 result = hw->txfid_queue[hw->txfid_head];
279 hw->txfid_head = (hw->txfid_head + 1) % hw->txfid_N;
280 }
281
282 return (UINT16)result;
283}
284
285static INT16
286txfid_queue_add(hfa384x_t *hw, UINT16 val)
287{
288 INT16 result = 0;
289
290 if (hw->txfid_head == ((hw->txfid_tail + 1) % hw->txfid_N)) {
291 result = -1;
292 WLAN_LOG_DEBUG(3,"queue full.\n");
293 } else {
294 hw->txfid_queue[hw->txfid_tail] = val;
295 result = hw->txfid_tail;
296 hw->txfid_tail = (hw->txfid_tail + 1) % hw->txfid_N;
297 }
298
299 return result;
300}
301
302/*----------------------------------------------------------------
303* hfa384x_create
304*
305* Initializes the hfa384x_t data structure for use. Note this
306* does _not_ intialize the actual hardware, just the data structures
307* we use to keep track of its state.
308*
309* Arguments:
310* hw device structure
311* irq device irq number
312* iobase [pcmcia] i/o base address for register access
313* [pci] zero
314* [plx] i/o base address for register access
315* membase [pcmcia] pcmcia_cs "link" pointer
316* [pci] memory base address for register access
317* [plx] memory base address for card attribute memory
318*
319* Returns:
320* nothing
321*
322* Side effects:
323*
324* Call context:
325* process thread
326----------------------------------------------------------------*/
327void hfa384x_create(hfa384x_t *hw, UINT irq, UINT32 iobase,
328 UINT8 __iomem *membase)
329{
330 DBFENTER;
331 memset(hw, 0, sizeof(hfa384x_t));
332 hw->irq = irq;
333 hw->iobase = iobase;
334 hw->membase = membase;
335 spin_lock_init(&(hw->cmdlock));
336
337 /* BAP setup */
338 spin_lock_init(&(hw->baplock));
339 tasklet_init(&hw->bap_tasklet,
340 hfa384x_bap_tasklet,
341 (unsigned long) hw);
342
343 init_waitqueue_head(&hw->cmdq);
344 sema_init(&hw->infofid_sem, 1);
345
346 hw->txfid_head = 0;
347 hw->txfid_tail = 0;
348 hw->txfid_N = HFA384x_DRVR_FIDSTACKLEN_MAX;
349 memset(hw->txfid_queue, 0, sizeof(hw->txfid_queue));
350
351 hw->isram16 = 1;
352
353 /* Init the auth queue head */
354 skb_queue_head_init(&hw->authq);
355
356 INIT_WORK2(&hw->link_bh, prism2sta_processing_defer);
357
358 INIT_WORK2(&hw->commsqual_bh, prism2sta_commsqual_defer);
359
360 init_timer(&hw->commsqual_timer);
361 hw->commsqual_timer.data = (unsigned long) hw;
362 hw->commsqual_timer.function = prism2sta_commsqual_timer;
363
364 hw->link_status = HFA384x_LINK_NOTCONNECTED;
365 hw->state = HFA384x_STATE_INIT;
366
367 DBFEXIT;
368}
369
370/*----------------------------------------------------------------
371* hfa384x_destroy
372*
373* Partner to hfa384x_create(). This function cleans up the hw
374* structure so that it can be freed by the caller using a simple
375* kfree. Currently, this function is just a placeholder. If, at some
376* point in the future, an hw in the 'shutdown' state requires a 'deep'
377* kfree, this is where it should be done. Note that if this function
378* is called on a _running_ hw structure, the drvr_stop() function is
379* called.
380*
381* Arguments:
382* hw device structure
383*
384* Returns:
385* nothing, this function is not allowed to fail.
386*
387* Side effects:
388*
389* Call context:
390* process
391----------------------------------------------------------------*/
392void
393hfa384x_destroy( hfa384x_t *hw)
394{
395 struct sk_buff *skb;
396
397 DBFENTER;
398
399 if ( hw->state == HFA384x_STATE_RUNNING ) {
400 hfa384x_drvr_stop(hw);
401 }
402 hw->state = HFA384x_STATE_PREINIT;
403
404 if (hw->scanresults) {
405 kfree(hw->scanresults);
406 hw->scanresults = NULL;
407 }
408
409 /* Now to clean out the auth queue */
410 while ( (skb = skb_dequeue(&hw->authq)) ) {
411 dev_kfree_skb(skb);
412 }
413
414 DBFEXIT;
415 return;
416}
417
418/*----------------------------------------------------------------
419* hfa384x_drvr_getconfig
420*
421* Performs the sequence necessary to read a config/info item.
422*
423* Arguments:
424* hw device structure
425* rid config/info record id (host order)
426* buf host side record buffer. Upon return it will
427* contain the body portion of the record (minus the
428* RID and len).
429* len buffer length (in bytes, should match record length)
430*
431* Returns:
432* 0 success
433* >0 f/w reported error - f/w status code
434* <0 driver reported error
435* -ENODATA length mismatch between argument and retrieved
436* record.
437*
438* Side effects:
439*
440* Call context:
441* process thread
442----------------------------------------------------------------*/
443int hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len)
444{
445 int result = 0;
446 DBFENTER;
447
448 result = hfa384x_cmd_access( hw, 0, rid, buf, len);
449
450 DBFEXIT;
451 return result;
452}
453
454
455/*----------------------------------------------------------------
456* hfa384x_drvr_setconfig
457*
458* Performs the sequence necessary to write a config/info item.
459*
460* Arguments:
461* hw device structure
462* rid config/info record id (in host order)
463* buf host side record buffer
464* len buffer length (in bytes)
465*
466* Returns:
467* 0 success
468* >0 f/w reported error - f/w status code
469* <0 driver reported error
470*
471* Side effects:
472*
473* Call context:
474* process thread
475----------------------------------------------------------------*/
476int hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len)
477{
478 int result = 0;
479 DBFENTER;
480
481 result = hfa384x_cmd_access( hw, 1, rid, buf, len);
482
483 DBFEXIT;
484 return result;
485}
486
487
488/*----------------------------------------------------------------
489* hfa384x_drvr_readpda
490*
491* Performs the sequence to read the PDA space. Note there is no
492* drvr_writepda() function. Writing a PDA is
493* generally implemented by a calling component via calls to
494* cmd_download and writing to the flash download buffer via the
495* aux regs.
496*
497* Arguments:
498* hw device structure
499* buf buffer to store PDA in
500* len buffer length
501*
502* Returns:
503* 0 success
504* >0 f/w reported error - f/w status code
505* <0 driver reported error
506* -ETIMEOUT timout waiting for the cmd regs to become
507* available, or waiting for the control reg
508* to indicate the Aux port is enabled.
509* -ENODATA the buffer does NOT contain a valid PDA.
510* Either the card PDA is bad, or the auxdata
511* reads are giving us garbage.
512
513*
514* Side effects:
515*
516* Call context:
517* process thread or non-card interrupt.
518----------------------------------------------------------------*/
519int hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len)
520{
521 int result = 0;
522 UINT16 *pda = buf;
523 int pdaok = 0;
524 int morepdrs = 1;
525 int currpdr = 0; /* word offset of the current pdr */
526 int i;
527 UINT16 pdrlen; /* pdr length in bytes, host order */
528 UINT16 pdrcode; /* pdr code, host order */
529 UINT16 crc;
530 UINT16 pdacrc;
531 struct pdaloc {
532 UINT32 cardaddr;
533 UINT16 auxctl;
534 } pdaloc[] =
535 {
536 { HFA3842_PDA_BASE, HFA384x_AUX_CTL_NV},
537 { HFA3842_PDA_BASE, HFA384x_AUX_CTL_EXTDS},
538 { HFA3841_PDA_BASE, HFA384x_AUX_CTL_NV},
539 { HFA3841_PDA_BASE, HFA384x_AUX_CTL_EXTDS},
540 { HFA3841_PDA_BOGUS_BASE, HFA384x_AUX_CTL_NV}
541 };
542
543 DBFENTER;
544 /* Check for aux available */
545 result = hfa384x_cmd_aux_enable(hw, 0);
546 if ( result ) {
547 WLAN_LOG_DEBUG(1,"aux_enable() failed. result=%d\n", result);
548 goto failed;
549 }
550
551 /* Read the pda from each known address. */
552 for ( i = 0; i < (sizeof(pdaloc)/sizeof(pdaloc[0])); i++) {
553 WLAN_LOG_DEBUG( 3, "Checking PDA@(0x%08x,%s)\n",
554 pdaloc[i].cardaddr,
555 pdaloc[i].auxctl == HFA384x_AUX_CTL_NV ?
556 "CTL_NV" : "CTL_EXTDS");
557
558 /* Copy bufsize bytes from our current pdaloc */
559 hfa384x_copy_from_aux(hw,
560 pdaloc[i].cardaddr,
561 pdaloc[i].auxctl,
562 buf,
563 len);
564
565 /* Test for garbage */
566 /* Traverse the PDR list Looking for PDA-END */
567 pdaok = 1; /* intially assume good */
568 morepdrs = 1;
569 currpdr = 0;
570 while ( pdaok && morepdrs ) {
571 pdrlen = hfa384x2host_16(pda[currpdr]) * 2;
572 pdrcode = hfa384x2host_16(pda[currpdr+1]);
573
574 /* Test for completion at END record */
575 if ( pdrcode == HFA384x_PDR_END_OF_PDA ) {
576 if ( pdrlen == 4 ) {
577 morepdrs = 0;
578 /* Calculate CRC-16 and compare to PDA
579 * value. Note the addition of 2 words
580 * for ENDREC.len and ENDREC.code
581 * fields.
582 */
583 crc = hfa384x_mkcrc16( (UINT8*)pda,
584 (currpdr + 2) * sizeof(UINT16));
585 pdacrc =hfa384x2host_16(pda[currpdr+2]);
586 if ( crc != pdacrc ) {
587 WLAN_LOG_DEBUG(3,
588 "PDA crc failed:"
589 "calc_crc=0x%04x,"
590 "pdr_crc=0x%04x.\n",
591 crc, pdacrc);
592 pdaok = 0;
593 }
594 } else {
595 WLAN_LOG_DEBUG(3,
596 "END record detected w/ "
597 "len(%d) != 2, assuming bad PDA\n",
598 pdrlen);
599 pdaok = 0;
600
601 }
602 break;
603 }
604
605 /* Test the record length */
606 if ( pdrlen > HFA384x_PDR_LEN_MAX || pdrlen == 0) {
607 WLAN_LOG_DEBUG(3,
608 "pdrlen for address #%d "
609 "at %#x:%#x:%d\n",
610 i, pdaloc[i].cardaddr,
611 pdaloc[i].auxctl, pdrlen);
612 WLAN_LOG_DEBUG(3,"pdrlen invalid=%d\n",
613 pdrlen);
614 pdaok = 0;
615 break;
616 }
617
618 /* Move to the next pdr */
619 if ( morepdrs ) {
620 /* note the access to pda[], we need words */
621 currpdr += hfa384x2host_16(pda[currpdr]) + 1;
622 if (currpdr*sizeof(UINT16) > len) {
623 WLAN_LOG_DEBUG(3,
624 "Didn't find PDA_END in buffer, "
625 "trying next location.\n");
626 pdaok = 0;
627 break;
628 }
629 }
630 }
631 if ( pdaok ) {
632 WLAN_LOG_INFO(
633 "PDA Read from 0x%08x in %s space.\n",
634 pdaloc[i].cardaddr,
635 pdaloc[i].auxctl == 0 ? "EXTDS" :
636 pdaloc[i].auxctl == 1 ? "NV" :
637 pdaloc[i].auxctl == 2 ? "PHY" :
638 pdaloc[i].auxctl == 3 ? "ICSRAM" :
639 "<bogus auxctl>");
640 break;
641 }
642 }
643 result = pdaok ? 0 : -ENODATA;
644
645 if ( result ) {
646 WLAN_LOG_DEBUG(3,"Failure: pda is not okay\n");
647 }
648
649 hfa384x_cmd_aux_disable(hw);
650failed:
651 DBFEXIT;
652 return result;
653}
654
655
656
657/*----------------------------------------------------------------
658* mkpda_crc
659*
660* Calculates the CRC16 for the given PDA and inserts the value
661* into the end record.
662*
663* Arguments:
664* pda ptr to the PDA data structure.
665*
666* Returns:
667* 0 - success
668* ~0 - failure (probably an errno)
669----------------------------------------------------------------*/
670static UINT16
671hfa384x_mkcrc16(UINT8 *p, int len)
672{
673 UINT16 crc = 0;
674 UINT8 *lim = p + len;
675
676 while (p < lim) {
677 crc = (crc >> 8 ) ^ crc16tab[(crc & 0xff) ^ *p++];
678 }
679
680 return crc;
681}
682
683
684/*----------------------------------------------------------------
685* hfa384x_drvr_ramdl_enable
686*
687* Begins the ram download state. Checks to see that we're not
688* already in a download state and that a port isn't enabled.
689* Sets the download state and calls cmd_download with the
690* ENABLE_VOLATILE subcommand and the exeaddr argument.
691*
692* Arguments:
693* hw device structure
694* exeaddr the card execution address that will be
695* jumped to when ramdl_disable() is called
696* (host order).
697*
698* Returns:
699* 0 success
700* >0 f/w reported error - f/w status code
701* <0 driver reported error
702*
703* Side effects:
704*
705* Call context:
706* process thread
707----------------------------------------------------------------*/
708int hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr)
709{
710 int result = 0;
711 UINT16 lowaddr;
712 UINT16 hiaddr;
713 int i;
714 DBFENTER;
715 /* Check that a port isn't active */
716 for ( i = 0; i < HFA384x_PORTID_MAX; i++) {
717 if ( hw->port_enabled[i] ) {
718 WLAN_LOG_DEBUG(1,"Can't download with a port enabled.\n");
719 result = -EINVAL;
720 goto done;
721 }
722 }
723
724 /* Check that we're not already in a download state */
725 if ( hw->dlstate != HFA384x_DLSTATE_DISABLED ) {
726 WLAN_LOG_DEBUG(1,"Download state not disabled.\n");
727 result = -EINVAL;
728 goto done;
729 }
730
731 /* Are we supposed to go into genesis mode? */
732 if (exeaddr == 0x3f0000) {
733 UINT16 initseq[2] = { 0xe100, 0xffa1 };
734 UINT16 readbuf[2];
735 UINT8 hcr = 0x0f; /* Default to x16 SRAM */
736 hw->isram16 = 1;
737
738 WLAN_LOG_DEBUG(1, "Dropping into Genesis mode\n");
739
740 /* Issue card reset and enable aux port */
741 hfa384x_corereset(hw, prism2_reset_holdtime,
742 prism2_reset_settletime, 0);
743 hfa384x_cmd_aux_enable(hw, 1);
744
745 /* Genesis set */
746 hfa384x_copy_to_aux(hw, 0x7E0038, HFA384x_AUX_CTL_EXTDS,
747 initseq, sizeof(initseq));
748
749 hfa384x_corereset(hw, prism2_reset_holdtime,
750 prism2_reset_settletime, hcr);
751
752 /* Validate memory config */
753 hfa384x_copy_to_aux(hw, 0x7E0038, HFA384x_AUX_CTL_EXTDS,
754 initseq, sizeof(initseq));
755 hfa384x_copy_from_aux(hw, 0x7E0038, HFA384x_AUX_CTL_EXTDS,
756 readbuf, sizeof(initseq));
757 WLAN_HEX_DUMP(3, "readback", readbuf, sizeof(readbuf));
758
759 if (memcmp(initseq, readbuf, sizeof(readbuf))) {
760 hcr = 0x1f; /* x8 SRAM */
761 hw->isram16 = 0;
762
763 hfa384x_copy_to_aux(hw, 0x7E0038, HFA384x_AUX_CTL_EXTDS,
764 initseq, sizeof(initseq));
765 hfa384x_corereset(hw, prism2_reset_holdtime,
766 prism2_reset_settletime, hcr);
767
768 hfa384x_copy_to_aux(hw, 0x7E0038, HFA384x_AUX_CTL_EXTDS,
769 initseq, sizeof(initseq));
770 hfa384x_copy_from_aux(hw, 0x7E0038, HFA384x_AUX_CTL_EXTDS,
771 readbuf, sizeof(initseq));
772 WLAN_HEX_DUMP(2, "readback", readbuf, sizeof(readbuf));
773
774 if (memcmp(initseq, readbuf, sizeof(readbuf))) {
775 WLAN_LOG_ERROR("Genesis mode failed\n");
776 result = -1;
777 goto done;
778 }
779 }
780
781 /* Now we're in genesis mode */
782 hw->dlstate = HFA384x_DLSTATE_GENESIS;
783 goto done;
784 }
785
786 /* Retrieve the buffer loc&size and timeout */
787 if ( (result = hfa384x_drvr_getconfig(hw, HFA384x_RID_DOWNLOADBUFFER,
788 &(hw->bufinfo), sizeof(hw->bufinfo))) ) {
789 goto done;
790 }
791 hw->bufinfo.page = hfa384x2host_16(hw->bufinfo.page);
792 hw->bufinfo.offset = hfa384x2host_16(hw->bufinfo.offset);
793 hw->bufinfo.len = hfa384x2host_16(hw->bufinfo.len);
794 if ( (result = hfa384x_drvr_getconfig16(hw, HFA384x_RID_MAXLOADTIME,
795 &(hw->dltimeout))) ) {
796 goto done;
797 }
798 hw->dltimeout = hfa384x2host_16(hw->dltimeout);
799
800 /* Enable the aux port */
801 if ( (result = hfa384x_cmd_aux_enable(hw, 0)) ) {
802 WLAN_LOG_DEBUG(1,"Aux enable failed, result=%d.\n", result);
803 goto done;
804 }
805
806 /* Call the download(1,addr) function */
807 lowaddr = HFA384x_ADDR_CMD_MKOFF(exeaddr);
808 hiaddr = HFA384x_ADDR_CMD_MKPAGE(exeaddr);
809
810 result = hfa384x_cmd_download(hw, HFA384x_PROGMODE_RAM,
811 lowaddr, hiaddr, 0);
812 if ( result == 0) {
813 /* Set the download state */
814 hw->dlstate = HFA384x_DLSTATE_RAMENABLED;
815 } else {
816 WLAN_LOG_DEBUG(1,"cmd_download(0x%04x, 0x%04x) failed, result=%d.\n",
817 lowaddr,hiaddr, result);
818 /* Disable the aux port */
819 hfa384x_cmd_aux_disable(hw);
820 }
821
822 done:
823 DBFEXIT;
824 return result;
825}
826
827
828/*----------------------------------------------------------------
829* hfa384x_drvr_ramdl_disable
830*
831* Ends the ram download state.
832*
833* Arguments:
834* hw device structure
835*
836* Returns:
837* 0 success
838* >0 f/w reported error - f/w status code
839* <0 driver reported error
840*
841* Side effects:
842*
843* Call context:
844* process thread
845----------------------------------------------------------------*/
846int hfa384x_drvr_ramdl_disable(hfa384x_t *hw)
847{
848 DBFENTER;
849 /* Check that we're already in the download state */
850 if ( ( hw->dlstate != HFA384x_DLSTATE_RAMENABLED ) &&
851 ( hw->dlstate != HFA384x_DLSTATE_GENESIS ) ) {
852 return -EINVAL;
853 }
854
855 if (hw->dlstate == HFA384x_DLSTATE_GENESIS) {
856 hfa384x_corereset(hw, prism2_reset_holdtime,
857 prism2_reset_settletime,
858 hw->isram16 ? 0x07: 0x17);
859 goto done;
860 }
861
862 /* Disable the aux port */
863 hfa384x_cmd_download(hw, HFA384x_PROGMODE_DISABLE, 0, 0 , 0);
864
865 done:
866 hw->dlstate = HFA384x_DLSTATE_DISABLED;
867 hfa384x_cmd_aux_disable(hw);
868
869 DBFEXIT;
870 return 0;
871}
872
873
874/*----------------------------------------------------------------
875* hfa384x_drvr_ramdl_write
876*
877* Performs a RAM download of a chunk of data. First checks to see
878* that we're in the RAM download state, then uses the aux functions
879* to 1) copy the data, 2) readback and compare. The download
880* state is unaffected. When all data has been written using
881* this function, call drvr_ramdl_disable() to end the download state
882* and restart the MAC.
883*
884* Arguments:
885* hw device structure
886* daddr Card address to write to. (host order)
887* buf Ptr to data to write.
888* len Length of data (host order).
889*
890* Returns:
891* 0 success
892* >0 f/w reported error - f/w status code
893* <0 driver reported error
894*
895* Side effects:
896*
897* Call context:
898* process thread
899----------------------------------------------------------------*/
900int hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len)
901{
902 int result = 0;
903 UINT8 *verbuf;
904 DBFENTER;
905 /* Check that we're in the ram download state */
906 if ( ( hw->dlstate != HFA384x_DLSTATE_RAMENABLED ) &&
907 ( hw->dlstate != HFA384x_DLSTATE_GENESIS ) ) {
908 return -EINVAL;
909 }
910
911 WLAN_LOG_INFO("Writing %d bytes to ram @0x%06x\n", len, daddr);
912#if 0
913WLAN_HEX_DUMP(1, "dldata", buf, len);
914#endif
915 /* Copy the data via the aux port */
916 hfa384x_copy_to_aux(hw, daddr, HFA384x_AUX_CTL_EXTDS, buf, len);
917
918 /* Create a buffer for the verify */
919 verbuf = kmalloc(len, GFP_KERNEL);
920 if (verbuf == NULL ) return 1;
921
922 /* Read back and compare */
923 hfa384x_copy_from_aux(hw, daddr, HFA384x_AUX_CTL_EXTDS, verbuf, len);
924
925 if ( memcmp(buf, verbuf, len) ) {
926 WLAN_LOG_DEBUG(1,"ramdl verify failed!\n");
927 result = -EINVAL;
928 }
929
930 kfree_s(verbuf, len);
931 DBFEXIT;
932 return result;
933}
934
935
936/*----------------------------------------------------------------
937* hfa384x_drvr_flashdl_enable
938*
939* Begins the flash download state. Checks to see that we're not
940* already in a download state and that a port isn't enabled.
941* Sets the download state and retrieves the flash download
942* buffer location, buffer size, and timeout length.
943*
944* Arguments:
945* hw device structure
946*
947* Returns:
948* 0 success
949* >0 f/w reported error - f/w status code
950* <0 driver reported error
951*
952* Side effects:
953*
954* Call context:
955* process thread
956----------------------------------------------------------------*/
957int hfa384x_drvr_flashdl_enable(hfa384x_t *hw)
958{
959 int result = 0;
960 int i;
961
962 DBFENTER;
963 /* Check that a port isn't active */
964 for ( i = 0; i < HFA384x_PORTID_MAX; i++) {
965 if ( hw->port_enabled[i] ) {
966 WLAN_LOG_DEBUG(1,"called when port enabled.\n");
967 return -EINVAL;
968 }
969 }
970
971 /* Check that we're not already in a download state */
972 if ( hw->dlstate != HFA384x_DLSTATE_DISABLED ) {
973 return -EINVAL;
974 }
975
976 /* Retrieve the buffer loc&size and timeout */
977 if ( (result = hfa384x_drvr_getconfig(hw, HFA384x_RID_DOWNLOADBUFFER,
978 &(hw->bufinfo), sizeof(hw->bufinfo))) ) {
979 return result;
980 }
981 hw->bufinfo.page = hfa384x2host_16(hw->bufinfo.page);
982 hw->bufinfo.offset = hfa384x2host_16(hw->bufinfo.offset);
983 hw->bufinfo.len = hfa384x2host_16(hw->bufinfo.len);
984 if ( (result = hfa384x_drvr_getconfig16(hw, HFA384x_RID_MAXLOADTIME,
985 &(hw->dltimeout))) ) {
986 return result;
987 }
988 hw->dltimeout = hfa384x2host_16(hw->dltimeout);
989
990 /* Enable the aux port */
991 if ( (result = hfa384x_cmd_aux_enable(hw, 0)) ) {
992 return result;
993 }
994
995 hw->dlstate = HFA384x_DLSTATE_FLASHENABLED;
996 DBFEXIT;
997 return result;
998}
999
1000
1001/*----------------------------------------------------------------
1002* hfa384x_drvr_flashdl_disable
1003*
1004* Ends the flash download state. Note that this will cause the MAC
1005* firmware to restart.
1006*
1007* Arguments:
1008* hw device structure
1009*
1010* Returns:
1011* 0 success
1012* >0 f/w reported error - f/w status code
1013* <0 driver reported error
1014*
1015* Side effects:
1016*
1017* Call context:
1018* process thread
1019----------------------------------------------------------------*/
1020int hfa384x_drvr_flashdl_disable(hfa384x_t *hw)
1021{
1022 DBFENTER;
1023 /* Check that we're already in the download state */
1024 if ( hw->dlstate != HFA384x_DLSTATE_FLASHENABLED ) {
1025 return -EINVAL;
1026 }
1027
1028 /* There isn't much we can do at this point, so I don't */
1029 /* bother w/ the return value */
1030 hfa384x_cmd_download(hw, HFA384x_PROGMODE_DISABLE, 0, 0 , 0);
1031 hw->dlstate = HFA384x_DLSTATE_DISABLED;
1032
1033 /* Disable the aux port */
1034 hfa384x_cmd_aux_disable(hw);
1035
1036 DBFEXIT;
1037 return 0;
1038}
1039
1040
1041/*----------------------------------------------------------------
1042* hfa384x_drvr_flashdl_write
1043*
1044* Performs a FLASH download of a chunk of data. First checks to see
1045* that we're in the FLASH download state, then sets the download
1046* mode, uses the aux functions to 1) copy the data to the flash
1047* buffer, 2) sets the download 'write flash' mode, 3) readback and
1048* compare. Lather rinse, repeat as many times an necessary to get
1049* all the given data into flash.
1050* When all data has been written using this function (possibly
1051* repeatedly), call drvr_flashdl_disable() to end the download state
1052* and restart the MAC.
1053*
1054* Arguments:
1055* hw device structure
1056* daddr Card address to write to. (host order)
1057* buf Ptr to data to write.
1058* len Length of data (host order).
1059*
1060* Returns:
1061* 0 success
1062* >0 f/w reported error - f/w status code
1063* <0 driver reported error
1064*
1065* Side effects:
1066*
1067* Call context:
1068* process thread
1069----------------------------------------------------------------*/
1070int hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len)
1071{
1072 int result = 0;
1073 UINT8 *verbuf;
1074 UINT32 dlbufaddr;
1075 UINT32 currlen;
1076 UINT32 currdaddr;
1077 UINT16 destlo;
1078 UINT16 desthi;
1079 int nwrites;
1080 int i;
1081
1082 DBFENTER;
1083 /* Check that we're in the flash download state */
1084 if ( hw->dlstate != HFA384x_DLSTATE_FLASHENABLED ) {
1085 return -EINVAL;
1086 }
1087
1088 WLAN_LOG_INFO("Download %d bytes to flash @0x%06x\n", len, daddr);
1089
1090 /* Need a flat address for arithmetic */
1091 dlbufaddr = HFA384x_ADDR_AUX_MKFLAT(
1092 hw->bufinfo.page,
1093 hw->bufinfo.offset);
1094 verbuf = kmalloc(hw->bufinfo.len, GFP_KERNEL);
1095
1096#if 0
1097WLAN_LOG_WARNING("dlbuf@0x%06lx len=%d to=%d\n", dlbufaddr, hw->bufinfo.len, hw->dltimeout);
1098#endif
1099 /* Figure out how many times to to the flash prog */
1100 nwrites = len / hw->bufinfo.len;
1101 nwrites += (len % hw->bufinfo.len) ? 1 : 0;
1102
1103 if ( verbuf == NULL ) {
1104 WLAN_LOG_ERROR("Failed to allocate flash verify buffer\n");
1105 return 1;
1106 }
1107 /* For each */
1108 for ( i = 0; i < nwrites; i++) {
1109 /* Get the dest address and len */
1110 currlen = (len - (hw->bufinfo.len * i)) > hw->bufinfo.len ?
1111 hw->bufinfo.len :
1112 (len - (hw->bufinfo.len * i));
1113 currdaddr = daddr + (hw->bufinfo.len * i);
1114 destlo = HFA384x_ADDR_CMD_MKOFF(currdaddr);
1115 desthi = HFA384x_ADDR_CMD_MKPAGE(currdaddr);
1116 WLAN_LOG_INFO("Writing %d bytes to flash @0x%06x\n", currlen, currdaddr);
1117#if 0
1118WLAN_HEX_DUMP(1, "dldata", buf+(hw->bufinfo.len*i), currlen);
1119#endif
1120 /* Set the download mode */
1121 result = hfa384x_cmd_download(hw, HFA384x_PROGMODE_NV,
1122 destlo, desthi, currlen);
1123 if ( result ) {
1124 WLAN_LOG_ERROR("download(NV,lo=%x,hi=%x,len=%x) "
1125 "cmd failed, result=%d. Aborting d/l\n",
1126 destlo, desthi, currlen, result);
1127 goto exit_proc;
1128 }
1129 /* copy the data to the flash buffer */
1130 hfa384x_copy_to_aux(hw, dlbufaddr, HFA384x_AUX_CTL_EXTDS,
1131 buf+(hw->bufinfo.len*i), currlen);
1132 /* set the download 'write flash' mode */
1133 result = hfa384x_cmd_download(hw, HFA384x_PROGMODE_NVWRITE, 0,0,0);
1134 if ( result ) {
1135 WLAN_LOG_ERROR(
1136 "download(NVWRITE,lo=%x,hi=%x,len=%x) "
1137 "cmd failed, result=%d. Aborting d/l\n",
1138 destlo, desthi, currlen, result);
1139 goto exit_proc;
1140 }
1141 /* readback and compare, if fail...bail */
1142 hfa384x_copy_from_aux(hw,
1143 currdaddr, HFA384x_AUX_CTL_NV,
1144 verbuf, currlen);
1145
1146 if ( memcmp(buf+(hw->bufinfo.len*i), verbuf, currlen) ) {
1147 return -EINVAL;
1148 }
1149 }
1150
1151exit_proc:
1152 /* DOH! This kfree's for you Mark :-) My forehead hurts... */
1153 kfree(verbuf);
1154
1155 /* Leave the firmware in the 'post-prog' mode. flashdl_disable will */
1156 /* actually disable programming mode. Remember, that will cause the */
1157 /* the firmware to effectively reset itself. */
1158
1159 DBFEXIT;
1160 return result;
1161}
1162
1163
1164/*----------------------------------------------------------------
1165* hfa384x_cmd_initialize
1166*
1167* Issues the initialize command and sets the hw->state based
1168* on the result.
1169*
1170* Arguments:
1171* hw device structure
1172*
1173* Returns:
1174* 0 success
1175* >0 f/w reported error - f/w status code
1176* <0 driver reported error
1177*
1178* Side effects:
1179*
1180* Call context:
1181* process thread
1182----------------------------------------------------------------*/
1183int hfa384x_cmd_initialize(hfa384x_t *hw)
1184{
1185 int result = 0;
1186 int i;
1187 hfa384x_metacmd_t cmd;
1188
1189 DBFENTER;
1190
1191 /* we don't want to be interrupted during the reset */
1192 hfa384x_setreg(hw, 0, HFA384x_INTEN);
1193 hfa384x_setreg(hw, 0xffff, HFA384x_EVACK);
1194
1195 cmd.cmd = HFA384x_CMDCODE_INIT;
1196 cmd.parm0 = 0;
1197 cmd.parm1 = 0;
1198 cmd.parm2 = 0;
1199
1200 spin_lock_bh(&hw->cmdlock);
1201 result = hfa384x_docmd_wait(hw, &cmd);
1202 spin_unlock_bh(&hw->cmdlock);
1203
1204 if ( result == 0 ) {
1205 for ( i = 0; i < HFA384x_NUMPORTS_MAX; i++) {
1206 hw->port_enabled[i] = 0;
1207 }
1208 }
1209
1210 hw->link_status = HFA384x_LINK_NOTCONNECTED;
1211
1212 DBFEXIT;
1213 return result;
1214}
1215
1216
1217/*----------------------------------------------------------------
1218* hfa384x_drvr_commtallies
1219*
1220* Send a commtallies inquiry to the MAC. Note that this is an async
1221* call that will result in an info frame arriving sometime later.
1222*
1223* Arguments:
1224* hw device structure
1225*
1226* Returns:
1227* zero success.
1228*
1229* Side effects:
1230*
1231* Call context:
1232* process
1233----------------------------------------------------------------*/
1234int hfa384x_drvr_commtallies( hfa384x_t *hw )
1235{
1236 hfa384x_metacmd_t cmd;
1237 int result;
1238
1239 DBFENTER;
1240
1241 cmd.cmd = HFA384x_CMDCODE_INQ;
1242 cmd.parm0 = HFA384x_IT_COMMTALLIES;
1243 cmd.parm1 = 0;
1244 cmd.parm2 = 0;
1245
1246 spin_lock_bh(&hw->cmdlock);
1247 result = hfa384x_docmd_wait(hw, &cmd);
1248 spin_unlock_bh(&hw->cmdlock);
1249
1250 DBFEXIT;
1251 return result;
1252}
1253
1254
1255/*----------------------------------------------------------------
1256* hfa384x_drvr_enable
1257*
1258* Issues the enable command to enable communications on one of
1259* the MACs 'ports'. Only macport 0 is valid for stations.
1260* APs may also enable macports 1-6. Only ports that are currently
1261* disabled may be enabled.
1262*
1263* Arguments:
1264* hw device structure
1265* macport MAC port number
1266*
1267* Returns:
1268* 0 success
1269* >0 f/w reported failure - f/w status code
1270* <0 driver reported error (timeout|bad arg)
1271*
1272* Side effects:
1273*
1274* Call context:
1275* process thread
1276----------------------------------------------------------------*/
1277int hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport)
1278{
1279 int result = 0;
1280
1281 DBFENTER;
1282 if ((!hw->isap && macport != 0) ||
1283 (hw->isap && !(macport <= HFA384x_PORTID_MAX)) ||
1284 (hw->port_enabled[macport]) ){
1285 result = -EINVAL;
1286 } else {
1287 result = hfa384x_cmd_enable(hw, macport);
1288 if ( result == 0 ) {
1289 hw->port_enabled[macport] = 1;
1290 }
1291 }
1292 DBFEXIT;
1293 return result;
1294}
1295
1296
1297/*----------------------------------------------------------------
1298* hfa384x_cmd_enable
1299*
1300* Issues the the enable command to enable communications on one of the
1301* MACs 'ports'.
1302*
1303* Arguments:
1304* hw device structure
1305* macport MAC port number
1306*
1307* Returns:
1308* 0 success
1309* >0 f/w reported failure - f/w status code
1310* <0 driver reported error (timeout|bad arg)
1311*
1312* Side effects:
1313*
1314* Call context:
1315* process thread
1316----------------------------------------------------------------*/
1317int hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport)
1318{
1319 int result = 0;
1320 hfa384x_metacmd_t cmd;
1321
1322 DBFENTER;
1323
1324 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_ENABLE) |
1325 HFA384x_CMD_MACPORT_SET(macport);
1326 cmd.parm0 = 0;
1327 cmd.parm1 = 0;
1328 cmd.parm2 = 0;
1329
1330 spin_lock_bh(&hw->cmdlock);
1331 result = hfa384x_docmd_wait(hw, &cmd);
1332 spin_unlock_bh(&hw->cmdlock);
1333
1334 DBFEXIT;
1335 return result;
1336}
1337
1338
1339/*----------------------------------------------------------------
1340* hfa384x_drvr_disable
1341*
1342* Issues the disable command to stop communications on one of
1343* the MACs 'ports'. Only macport 0 is valid for stations.
1344* APs may also disable macports 1-6. Only ports that have been
1345* previously enabled may be disabled.
1346*
1347* Arguments:
1348* hw device structure
1349* macport MAC port number (host order)
1350*
1351* Returns:
1352* 0 success
1353* >0 f/w reported failure - f/w status code
1354* <0 driver reported error (timeout|bad arg)
1355*
1356* Side effects:
1357*
1358* Call context:
1359* process thread
1360----------------------------------------------------------------*/
1361int hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport)
1362{
1363 int result = 0;
1364
1365 DBFENTER;
1366 if ((!hw->isap && macport != 0) ||
1367 (hw->isap && !(macport <= HFA384x_PORTID_MAX)) ||
1368 !(hw->port_enabled[macport]) ){
1369 result = -EINVAL;
1370 } else {
1371 result = hfa384x_cmd_disable(hw, macport);
1372 if ( result == 0 ) {
1373 hw->port_enabled[macport] = 0;
1374 }
1375 }
1376 DBFEXIT;
1377 return result;
1378}
1379
1380
1381/*----------------------------------------------------------------
1382* hfa384x_cmd_disable
1383*
1384* Issues the command to disable a port.
1385*
1386* Arguments:
1387* hw device structure
1388* macport MAC port number (host order)
1389*
1390* Returns:
1391* 0 success
1392* >0 f/w reported failure - f/w status code
1393* <0 driver reported error (timeout|bad arg)
1394*
1395* Side effects:
1396*
1397* Call context:
1398* process thread
1399----------------------------------------------------------------*/
1400int hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport)
1401{
1402 int result = 0;
1403 hfa384x_metacmd_t cmd;
1404
1405 DBFENTER;
1406
1407 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_DISABLE) |
1408 HFA384x_CMD_MACPORT_SET(macport);
1409 cmd.parm0 = 0;
1410 cmd.parm1 = 0;
1411 cmd.parm2 = 0;
1412
1413 spin_lock_bh(&hw->cmdlock);
1414 result = hfa384x_docmd_wait(hw, &cmd);
1415 spin_unlock_bh(&hw->cmdlock);
1416
1417 DBFEXIT;
1418 return result;
1419}
1420
1421
1422/*----------------------------------------------------------------
1423* hfa384x_cmd_diagnose
1424*
1425* Issues the diagnose command to test the: register interface,
1426* MAC controller (including loopback), External RAM, Non-volatile
1427* memory integrity, and synthesizers. Following execution of this
1428* command, MAC/firmware are in the 'initial state'. Therefore,
1429* the Initialize command should be issued after successful
1430* completion of this command. This function may only be called
1431* when the MAC is in the 'communication disabled' state.
1432*
1433* Arguments:
1434* hw device structure
1435*
1436* Returns:
1437* 0 success
1438* >0 f/w reported failure - f/w status code
1439* <0 driver reported error (timeout|bad arg)
1440*
1441* Side effects:
1442*
1443* Call context:
1444* process thread
1445----------------------------------------------------------------*/
1446#define DIAG_PATTERNA ((UINT16)0xaaaa)
1447#define DIAG_PATTERNB ((UINT16)0x5555)
1448
1449int hfa384x_cmd_diagnose(hfa384x_t *hw)
1450{
1451 int result = 0;
1452 hfa384x_metacmd_t cmd;
1453
1454 DBFENTER;
1455
1456 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_DIAG);
1457 cmd.parm0 = DIAG_PATTERNA;
1458 cmd.parm1 = DIAG_PATTERNB;
1459 cmd.parm2 = 0;
1460
1461 spin_lock_bh(&hw->cmdlock);
1462 result = hfa384x_docmd_wait(hw, &cmd);
1463 spin_unlock_bh(&hw->cmdlock);
1464
1465 DBFEXIT;
1466 return result;
1467}
1468
1469
1470/*----------------------------------------------------------------
1471* hfa384x_cmd_allocate
1472*
1473* Issues the allocate command instructing the firmware to allocate
1474* a 'frame structure buffer' in MAC controller RAM. This command
1475* does not provide the result, it only initiates one of the f/w's
1476* asynchronous processes to construct the buffer. When the
1477* allocation is complete, it will be indicated via the Alloc
1478* bit in the EvStat register and the FID identifying the allocated
1479* space will be available from the AllocFID register. Some care
1480* should be taken when waiting for the Alloc event. If a Tx or
1481* Notify command w/ Reclaim has been previously executed, it's
1482* possible the first Alloc event after execution of this command
1483* will be for the reclaimed buffer and not the one you asked for.
1484* This case must be handled in the Alloc event handler.
1485*
1486* Arguments:
1487* hw device structure
1488* len allocation length, must be an even value
1489* in the range [4-2400]. (host order)
1490*
1491* Returns:
1492* 0 success
1493* >0 f/w reported failure - f/w status code
1494* <0 driver reported error (timeout|bad arg)
1495*
1496* Side effects:
1497*
1498* Call context:
1499* process thread
1500----------------------------------------------------------------*/
1501int hfa384x_cmd_allocate(hfa384x_t *hw, UINT16 len)
1502{
1503 int result = 0;
1504 hfa384x_metacmd_t cmd;
1505
1506 DBFENTER;
1507
1508 if ( (len % 2) ||
1509 len < HFA384x_CMD_ALLOC_LEN_MIN ||
1510 len > HFA384x_CMD_ALLOC_LEN_MAX ) {
1511 result = -EINVAL;
1512 } else {
1513 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_ALLOC);
1514 cmd.parm0 = len;
1515 cmd.parm1 = 0;
1516 cmd.parm2 = 0;
1517
1518 spin_lock_bh(&hw->cmdlock);
1519 result = hfa384x_docmd_wait(hw, &cmd);
1520 spin_unlock_bh(&hw->cmdlock);
1521 }
1522 DBFEXIT;
1523 return result;
1524}
1525
1526
1527/*----------------------------------------------------------------
1528* hfa384x_cmd_transmit
1529*
1530* Instructs the firmware to transmit a frame previously copied
1531* to a given buffer. This function returns immediately, the Tx
1532* results are available via the Tx or TxExc events (if the frame
1533* control bits are set). The reclaim argument specifies if the
1534* FID passed will be used by the f/w tx process or returned for
1535* use w/ another transmit command. If reclaim is set, expect an
1536* Alloc event signalling the availibility of the FID for reuse.
1537*
1538* NOTE: hw->cmdlock MUST BE HELD before calling this function!
1539*
1540* Arguments:
1541* hw device structure
1542* reclaim [0|1] indicates whether the given FID will
1543* be handed back (via Alloc event) for reuse.
1544* (host order)
1545* qos [0-3] Value to put in the QoS field of the
1546* tx command, identifies a queue to place the
1547* outgoing frame in.
1548* (host order)
1549* fid FID of buffer containing the frame that was
1550* previously copied to MAC memory via the bap.
1551* (host order)
1552*
1553* Returns:
1554* 0 success
1555* >0 f/w reported failure - f/w status code
1556* <0 driver reported error (timeout|bad arg)
1557*
1558* Side effects:
1559* hw->resp0 will contain the FID being used by async tx
1560* process. If reclaim==0, resp0 will be the same as the fid
1561* argument. If reclaim==1, resp0 will be the different and
1562* is the value to watch for in the Tx|TxExc to indicate completion
1563* of the frame passed in fid.
1564*
1565* Call context:
1566* process thread
1567----------------------------------------------------------------*/
1568int hfa384x_cmd_transmit(hfa384x_t *hw, UINT16 reclaim, UINT16 qos, UINT16 fid)
1569{
1570 int result = 0;
1571 hfa384x_metacmd_t cmd;
1572
1573 DBFENTER;
1574 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_TX) |
1575 HFA384x_CMD_RECL_SET(reclaim) |
1576 HFA384x_CMD_QOS_SET(qos);
1577 cmd.parm0 = fid;
1578 cmd.parm1 = 0;
1579 cmd.parm2 = 0;
1580
1581 result = hfa384x_docmd_wait(hw, &cmd);
1582
1583 DBFEXIT;
1584 return result;
1585}
1586
1587
1588/*----------------------------------------------------------------
1589* hfa384x_cmd_clearpersist
1590*
1591* Instructs the firmware to clear the persistence bit in a given
1592* FID. This has the effect of telling the firmware to drop the
1593* persistent frame. The FID must be one that was previously used
1594* to transmit a PRST frame.
1595*
1596* Arguments:
1597* hw device structure
1598* fid FID of the persistent frame (host order)
1599*
1600* Returns:
1601* 0 success
1602* >0 f/w reported failure - f/w status code
1603* <0 driver reported error (timeout|bad arg)
1604*
1605* Side effects:
1606*
1607* Call context:
1608* process thread
1609----------------------------------------------------------------*/
1610int hfa384x_cmd_clearpersist(hfa384x_t *hw, UINT16 fid)
1611{
1612 int result = 0;
1613 hfa384x_metacmd_t cmd;
1614
1615 DBFENTER;
1616
1617 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_CLRPRST);
1618 cmd.parm0 = fid;
1619 cmd.parm1 = 0;
1620 cmd.parm2 = 0;
1621
1622 spin_lock_bh(&hw->cmdlock);
1623 result = hfa384x_docmd_wait(hw, &cmd);
1624 spin_unlock_bh(&hw->cmdlock);
1625
1626 DBFEXIT;
1627 return result;
1628}
1629
1630/*----------------------------------------------------------------
1631* hfa384x_cmd_notify
1632*
1633* Sends an info frame to the firmware to alter the behavior
1634* of the f/w asynch processes. Can only be called when the MAC
1635* is in the enabled state.
1636*
1637* Arguments:
1638* hw device structure
1639* reclaim [0|1] indicates whether the given FID will
1640* be handed back (via Alloc event) for reuse.
1641* (host order)
1642* fid FID of buffer containing the frame that was
1643* previously copied to MAC memory via the bap.
1644* (host order)
1645*
1646* Returns:
1647* 0 success
1648* >0 f/w reported failure - f/w status code
1649* <0 driver reported error (timeout|bad arg)
1650*
1651* Side effects:
1652* hw->resp0 will contain the FID being used by async notify
1653* process. If reclaim==0, resp0 will be the same as the fid
1654* argument. If reclaim==1, resp0 will be the different.
1655*
1656* Call context:
1657* process thread
1658----------------------------------------------------------------*/
1659int hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid,
1660 void *buf, UINT16 len)
1661{
1662 int result = 0;
1663 hfa384x_metacmd_t cmd;
1664
1665 DBFENTER;
1666 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_NOTIFY) |
1667 HFA384x_CMD_RECL_SET(reclaim);
1668 cmd.parm0 = fid;
1669 cmd.parm1 = 0;
1670 cmd.parm2 = 0;
1671
1672 spin_lock_bh(&hw->cmdlock);
1673
1674 /* Copy the record to FID */
1675 result = hfa384x_copy_to_bap(hw, HFA384x_BAP_PROC, hw->infofid, 0, buf, len);
1676 if ( result ) {
1677 WLAN_LOG_DEBUG(1,
1678 "copy_to_bap(%04x, 0, %d) failed, result=0x%x\n",
1679 hw->infofid, len, result);
1680 result = -EIO;
1681 goto failed;
1682 }
1683
1684 result = hfa384x_docmd_wait(hw, &cmd);
1685
1686 failed:
1687 spin_unlock_bh(&hw->cmdlock);
1688
1689 DBFEXIT;
1690 return result;
1691}
1692
1693
1694#if 0
1695/*----------------------------------------------------------------
1696* hfa384x_cmd_inquiry
1697*
1698* Requests an info frame from the firmware. The info frame will
1699* be delivered asynchronously via the Info event.
1700*
1701* Arguments:
1702* hw device structure
1703* fid FID of the info frame requested. (host order)
1704*
1705* Returns:
1706* 0 success
1707* >0 f/w reported failure - f/w status code
1708* <0 driver reported error (timeout|bad arg)
1709*
1710* Side effects:
1711*
1712* Call context:
1713* process thread
1714----------------------------------------------------------------*/
1715static int hfa384x_cmd_inquiry(hfa384x_t *hw, UINT16 fid)
1716{
1717 int result = 0;
1718 hfa384x_metacmd_t cmd;
1719
1720 DBFENTER;
1721
1722 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_INQ);
1723 cmd.parm0 = fid;
1724 cmd.parm1 = 0;
1725 cmd.parm2 = 0;
1726
1727 spin_lock_bh(&hw->cmdlock);
1728 result = hfa384x_docmd_wait(hw, &cmd);
1729 spin_unlock_bh(&hw->cmdlock);
1730
1731 DBFEXIT;
1732 return result;
1733}
1734#endif
1735
1736
1737/*----------------------------------------------------------------
1738* hfa384x_cmd_access
1739*
1740* Requests that a given record be copied to/from the record
1741* buffer. If we're writing from the record buffer, the contents
1742* must previously have been written to the record buffer via the
1743* bap. If we're reading into the record buffer, the record can
1744* be read out of the record buffer after this call.
1745*
1746* Arguments:
1747* hw device structure
1748* write [0|1] copy the record buffer to the given
1749* configuration record. (host order)
1750* rid RID of the record to read/write. (host order)
1751* buf host side record buffer. Upon return it will
1752* contain the body portion of the record (minus the
1753* RID and len).
1754* len buffer length (in bytes, should match record length)
1755*
1756* Returns:
1757* 0 success
1758* >0 f/w reported failure - f/w status code
1759* <0 driver reported error (timeout|bad arg)
1760*
1761* Side effects:
1762*
1763* Call context:
1764* process thread
1765----------------------------------------------------------------*/
1766int hfa384x_cmd_access(hfa384x_t *hw, UINT16 write, UINT16 rid,
1767 void* buf, UINT16 len)
1768{
1769 int result = 0;
1770 hfa384x_metacmd_t cmd;
1771 hfa384x_rec_t rec;
1772
1773 DBFENTER;
1774
1775#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0))
1776 /* This should NOT be called in interrupt context! */
1777 if (in_irq()) {
1778 WLAN_LOG_ERROR("Krap, in Interrupt context!");
1779#ifdef WLAN_INCLUDE_DEBUG
1780 BUG();
1781#endif
1782 }
1783#endif
1784 spin_lock_bh(&hw->cmdlock);
1785
1786 if (write) {
1787 rec.rid = host2hfa384x_16(rid);
1788 rec.reclen = host2hfa384x_16((len/2) + 1); /* note conversion to words, +1 for rid field */
1789 /* write the record */
1790 result = hfa384x_copy_to_bap4( hw, HFA384x_BAP_PROC, rid, 0,
1791 &rec, sizeof(rec),
1792 buf, len,
1793 NULL, 0, NULL, 0);
1794 if ( result ) {
1795 WLAN_LOG_DEBUG(3,"Failure writing record header+data\n");
1796 goto fail;
1797 }
1798
1799 }
1800
1801 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_ACCESS) |
1802 HFA384x_CMD_WRITE_SET(write);
1803 cmd.parm0 = rid;
1804 cmd.parm1 = 0;
1805 cmd.parm2 = 0;
1806
1807 result = hfa384x_docmd_wait(hw, &cmd);
1808 if ( result ) {
1809 WLAN_LOG_ERROR("Call to hfa384x_docmd_wait failed (%d %d)\n",
1810 result, cmd.result.resp0);
1811 goto fail;
1812 }
1813
1814 if (!write) {
1815 result = hfa384x_copy_from_bap( hw, HFA384x_BAP_PROC, rid, 0, &rec, sizeof(rec));
1816 if ( result ) {
1817 WLAN_LOG_DEBUG(3,"Call to hfa384x_copy_from_bap failed\n");
1818 goto fail;
1819 }
1820
1821 /* Validate the record length */
1822 if ( ((hfa384x2host_16(rec.reclen)-1)*2) != len ) { /* note body len calculation in bytes */
1823 WLAN_LOG_DEBUG(1, "RID len mismatch, rid=0x%04x hlen=%d fwlen=%d\n",
1824 rid, len, (hfa384x2host_16(rec.reclen)-1)*2);
1825 result = -ENODATA;
1826 goto fail;
1827 }
1828
1829 result = hfa384x_copy_from_bap( hw, HFA384x_BAP_PROC, rid, sizeof(rec), buf, len);
1830
1831 }
1832
1833 fail:
1834 spin_unlock_bh(&hw->cmdlock);
1835 DBFEXIT;
1836 return result;
1837}
1838
1839
1840/*----------------------------------------------------------------
1841* hfa384x_cmd_monitor
1842*
1843* Enables the 'monitor mode' of the MAC. Here's the description of
1844* monitor mode that I've received thus far:
1845*
1846* "The "monitor mode" of operation is that the MAC passes all
1847* frames for which the PLCP checks are correct. All received
1848* MPDUs are passed to the host with MAC Port = 7, with a
1849* receive status of good, FCS error, or undecryptable. Passing
1850* certain MPDUs is a violation of the 802.11 standard, but useful
1851* for a debugging tool." Normal communication is not possible
1852* while monitor mode is enabled.
1853*
1854* Arguments:
1855* hw device structure
1856* enable a code (0x0b|0x0f) that enables/disables
1857* monitor mode. (host order)
1858*
1859* Returns:
1860* 0 success
1861* >0 f/w reported failure - f/w status code
1862* <0 driver reported error (timeout|bad arg)
1863*
1864* Side effects:
1865*
1866* Call context:
1867* process thread
1868----------------------------------------------------------------*/
1869int hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable)
1870{
1871 int result = 0;
1872 hfa384x_metacmd_t cmd;
1873
1874 DBFENTER;
1875
1876 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) |
1877 HFA384x_CMD_AINFO_SET(enable);
1878 cmd.parm0 = 0;
1879 cmd.parm1 = 0;
1880 cmd.parm2 = 0;
1881
1882 spin_lock_bh(&hw->cmdlock);
1883 result = hfa384x_docmd_wait(hw, &cmd);
1884 spin_unlock_bh(&hw->cmdlock);
1885
1886 DBFEXIT;
1887 return result;
1888}
1889
1890
1891/*----------------------------------------------------------------
1892* hfa384x_cmd_download
1893*
1894* Sets the controls for the MAC controller code/data download
1895* process. The arguments set the mode and address associated
1896* with a download. Note that the aux registers should be enabled
1897* prior to setting one of the download enable modes.
1898*
1899* Arguments:
1900* hw device structure
1901* mode 0 - Disable programming and begin code exec
1902* 1 - Enable volatile mem programming
1903* 2 - Enable non-volatile mem programming
1904* 3 - Program non-volatile section from NV download
1905* buffer.
1906* (host order)
1907* lowaddr
1908* highaddr For mode 1, sets the high & low order bits of
1909* the "destination address". This address will be
1910* the execution start address when download is
1911* subsequently disabled.
1912* For mode 2, sets the high & low order bits of
1913* the destination in NV ram.
1914* For modes 0 & 3, should be zero. (host order)
1915* NOTE: these address args are in CMD format
1916* codelen Length of the data to write in mode 2,
1917* zero otherwise. (host order)
1918*
1919* Returns:
1920* 0 success
1921* >0 f/w reported failure - f/w status code
1922* <0 driver reported error (timeout|bad arg)
1923*
1924* Side effects:
1925*
1926* Call context:
1927* process thread
1928----------------------------------------------------------------*/
1929int hfa384x_cmd_download(hfa384x_t *hw, UINT16 mode, UINT16 lowaddr,
1930 UINT16 highaddr, UINT16 codelen)
1931{
1932 int result = 0;
1933 hfa384x_metacmd_t cmd;
1934
1935 DBFENTER;
1936
1937 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_DOWNLD) |
1938 HFA384x_CMD_PROGMODE_SET(mode);
1939 cmd.parm0 = lowaddr;
1940 cmd.parm1 = highaddr;
1941 cmd.parm2 = codelen;
1942
1943 spin_lock_bh(&hw->cmdlock);
1944 result = hfa384x_dl_docmd_wait(hw, &cmd);
1945 spin_unlock_bh(&hw->cmdlock);
1946
1947 DBFEXIT;
1948 return result;
1949}
1950
1951
1952/*----------------------------------------------------------------
1953* hfa384x_cmd_aux_enable
1954*
1955* Goes through the process of enabling the auxilary port. This
1956* is necessary prior to raw reads/writes to card data space.
1957* Direct access to the card data space is only used for downloading
1958* code and debugging.
1959* Note that a call to this function is required before attempting
1960* a download.
1961*
1962* Arguments:
1963* hw device structure
1964*
1965* Returns:
1966* 0 success
1967* >0 f/w reported failure - f/w status code
1968* <0 driver reported error (timeout)
1969*
1970* Side effects:
1971*
1972* Call context:
1973* process thread
1974----------------------------------------------------------------*/
1975int hfa384x_cmd_aux_enable(hfa384x_t *hw, int force)
1976{
1977 int result = -ETIMEDOUT;
1978 unsigned long flags;
1979 UINT32 retries_remaining;
1980 UINT16 reg;
1981 UINT auxen_mirror = hw->auxen;
1982
1983 DBFENTER;
1984
1985 /* Check for existing enable */
1986 if ( hw->auxen ) {
1987 hw->auxen++;
1988 return 0;
1989 }
1990
1991 /* acquire the lock */
1992 spin_lock_irqsave( &(hw->cmdlock), flags);
1993 /* wait for cmd register busy bit to clear */
1994 retries_remaining = 100000;
1995 do {
1996 reg = hfa384x_getreg(hw, HFA384x_CMD);
1997 udelay(10);
1998 }
1999 while (HFA384x_CMD_ISBUSY(reg) && --retries_remaining);
2000 if (retries_remaining != 0) {
2001 /* busy bit clear, it's OK to write to ParamX regs */
2002 hfa384x_setreg(hw, HFA384x_AUXPW0,
2003 HFA384x_PARAM0);
2004 hfa384x_setreg(hw, HFA384x_AUXPW1,
2005 HFA384x_PARAM1);
2006 hfa384x_setreg(hw, HFA384x_AUXPW2,
2007 HFA384x_PARAM2);
2008
2009 /* Set the aux enable in the Control register */
2010 hfa384x_setreg(hw, HFA384x_CONTROL_AUX_DOENABLE,
2011 HFA384x_CONTROL);
2012
2013 /* Now wait for completion */
2014 retries_remaining = 100000;
2015 do {
2016 reg = hfa384x_getreg(hw, HFA384x_CONTROL);
2017 udelay(10);
2018 }
2019 while ( ((reg & (BIT14|BIT15)) != HFA384x_CONTROL_AUX_ISENABLED) &&
2020 --retries_remaining );
2021 if (retries_remaining != 0) {
2022 result = 0;
2023 hw->auxen++;
2024 }
2025 }
2026
2027 /* Force it enabled even if the command failed, if told.. */
2028 if ((hw->auxen == auxen_mirror) && force)
2029 hw->auxen++;
2030
2031 spin_unlock_irqrestore( &(hw->cmdlock), flags);
2032 DBFEXIT;
2033 return result;
2034}
2035
2036
2037/*----------------------------------------------------------------
2038* hfa384x_cmd_aux_disable
2039*
2040* Goes through the process of disabling the auxilary port
2041* enabled with aux_enable().
2042*
2043* Arguments:
2044* hw device structure
2045*
2046* Returns:
2047* 0 success
2048* >0 f/w reported failure - f/w status code
2049* <0 driver reported error (timeout)
2050*
2051* Side effects:
2052*
2053* Call context:
2054* process thread
2055----------------------------------------------------------------*/
2056int hfa384x_cmd_aux_disable(hfa384x_t *hw)
2057{
2058 int result = -ETIMEDOUT;
2059 unsigned long timeout;
2060 UINT16 reg = 0;
2061
2062 DBFENTER;
2063
2064 /* See if there's more than one enable */
2065 if (hw->auxen) hw->auxen--;
2066 if (hw->auxen) return 0;
2067
2068 /* Clear the aux enable in the Control register */
2069 hfa384x_setreg(hw, 0, HFA384x_PARAM0);
2070 hfa384x_setreg(hw, 0, HFA384x_PARAM1);
2071 hfa384x_setreg(hw, 0, HFA384x_PARAM2);
2072 hfa384x_setreg(hw, HFA384x_CONTROL_AUX_DODISABLE,
2073 HFA384x_CONTROL);
2074
2075 /* Now wait for completion */
2076 timeout = jiffies + 1*HZ;
2077 reg = hfa384x_getreg(hw, HFA384x_CONTROL);
2078 while ( ((reg & (BIT14|BIT15)) != HFA384x_CONTROL_AUX_ISDISABLED) &&
2079 time_before(jiffies,timeout) ){
2080 udelay(10);
2081 reg = hfa384x_getreg(hw, HFA384x_CONTROL);
2082 }
2083 if ((reg & (BIT14|BIT15)) == HFA384x_CONTROL_AUX_ISDISABLED ) {
2084 result = 0;
2085 }
2086 DBFEXIT;
2087 return result;
2088}
2089
2090/*----------------------------------------------------------------
2091* hfa384x_drvr_low_level
2092*
2093* Write test commands to the card. Some test commands don't make
2094* sense without prior set-up. For example, continous TX isn't very
2095* useful until you set the channel. That functionality should be
2096*
2097* Side effects:
2098*
2099* Call context:
2100* process thread
2101* -----------------------------------------------------------------*/
2102int hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd)
2103{
2104 int result = 0;
2105 DBFENTER;
2106
2107 /* Do i need a host2hfa... conversion ? */
2108#if 0
2109 printk(KERN_INFO "%#x %#x %#x %#x\n", cmd->cmd, cmd->parm0, cmd->parm1, cmd->parm2);
2110#endif
2111 spin_lock_bh(&hw->cmdlock);
2112 result = hfa384x_docmd_wait(hw, cmd);
2113 spin_unlock_bh(&hw->cmdlock);
2114
2115 DBFEXIT;
2116 return result;
2117}
2118
2119
2120/* TODO: determine if these will ever be needed */
2121#if 0
2122int hfa384x_cmd_readmif(hfa384x_t *hw)
2123{
2124 DBFENTER;
2125 DBFEXIT;
2126 return 0;
2127}
2128
2129
2130int hfa384x_cmd_writemif(hfa384x_t *hw)
2131{
2132 DBFENTER;
2133 DBFEXIT;
2134 return 0;
2135}
2136#endif
2137
2138/*----------------------------------------------------------------
2139* hfa384x_drvr_mmi_read
2140*
2141* Read mmi registers. mmi is intersil-speak for the baseband
2142* processor registers.
2143*
2144* Arguments:
2145* hw device structure
2146* register The test register to be accessed (must be even #).
2147*
2148* Returns:
2149* 0 success
2150* >0 f/w reported error - f/w status code
2151* <0 driver reported error
2152*
2153* Side effects:
2154*
2155* Call context:
2156* process thread
2157----------------------------------------------------------------*/
2158int hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 addr, UINT32 *resp)
2159{
2160 int result = 0;
2161 hfa384x_metacmd_t cmd;
2162
2163 DBFENTER;
2164 cmd.cmd = (UINT16) 0x30;
2165 cmd.parm0 = (UINT16) addr;
2166 cmd.parm1 = 0;
2167 cmd.parm2 = 0;
2168
2169 /* Do i need a host2hfa... conversion ? */
2170 spin_lock_bh(&hw->cmdlock);
2171 result = hfa384x_docmd_wait(hw, &cmd);
2172 spin_unlock_bh(&hw->cmdlock);
2173
2174 *resp = (UINT32) cmd.result.resp0;
2175
2176 DBFEXIT;
2177 return result;
2178}
2179
2180/*----------------------------------------------------------------
2181* hfa384x_drvr_mmi_write
2182*
2183* Read mmi registers. mmi is intersil-speak for the baseband
2184* processor registers.
2185*
2186* Arguments:
2187* hw device structure
2188* addr The test register to be accessed (must be even #).
2189* data The data value to write to the register.
2190*
2191* Returns:
2192* 0 success
2193* >0 f/w reported error - f/w status code
2194* <0 driver reported error
2195*
2196* Side effects:
2197*
2198* Call context:
2199* process thread
2200----------------------------------------------------------------*/
2201
2202int
2203hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 addr, UINT32 data)
2204{
2205 int result = 0;
2206 hfa384x_metacmd_t cmd;
2207
2208 DBFENTER;
2209 cmd.cmd = (UINT16) 0x31;
2210 cmd.parm0 = (UINT16) addr;
2211 cmd.parm1 = (UINT16) data;
2212 cmd.parm2 = 0;
2213
2214 WLAN_LOG_DEBUG(1,"mmi write : addr = 0x%08x\n", addr);
2215 WLAN_LOG_DEBUG(1,"mmi write : data = 0x%08x\n", data);
2216
2217 /* Do i need a host2hfa... conversion ? */
2218 spin_lock_bh(&hw->cmdlock);
2219 result = hfa384x_docmd_wait(hw, &cmd);
2220 spin_unlock_bh(&hw->cmdlock);
2221
2222 DBFEXIT;
2223 return result;
2224}
2225
2226
2227/* TODO: determine if these will ever be needed */
2228#if 0
2229int hfa384x_cmd_readmif(hfa384x_t *hw)
2230{
2231 DBFENTER;
2232 DBFEXIT;
2233 return 0;
2234}
2235
2236
2237int hfa384x_cmd_writemif(hfa384x_t *hw)
2238{
2239 DBFENTER;
2240 DBFEXIT;
2241 return 0;
2242}
2243#endif
2244
2245
2246
2247/*----------------------------------------------------------------
2248* hfa384x_copy_from_bap
2249*
2250* Copies a collection of bytes from the MAC controller memory via
2251* one set of BAP registers.
2252*
2253* Arguments:
2254* hw device structure
2255* bap [0|1] which BAP to use
2256* id FID or RID, destined for the select register (host order)
2257* offset An _even_ offset into the buffer for the given
2258* FID/RID. We haven't the means to validate this,
2259* so be careful. (host order)
2260* buf ptr to array of bytes
2261* len length of data to transfer in bytes
2262*
2263* Returns:
2264* 0 success
2265* >0 f/w reported failure - value of offset reg.
2266* <0 driver reported error (timeout|bad arg)
2267*
2268* Side effects:
2269*
2270* Call context:
2271* process thread
2272* interrupt
2273----------------------------------------------------------------*/
2274int hfa384x_copy_from_bap(hfa384x_t *hw, UINT16 bap, UINT16 id, UINT16 offset,
2275 void *buf, UINT len)
2276{
2277 int result = 0;
2278 unsigned long flags = 0;
2279 UINT8 *d = (UINT8*)buf;
2280 UINT selectreg;
2281 UINT offsetreg;
2282 UINT datareg;
2283 UINT i;
2284 UINT16 reg = 0;
2285
2286 DBFENTER;
2287
2288 /* Validate bap, offset, buf, and len */
2289 if ( (bap > 1) ||
2290 (offset > HFA384x_BAP_OFFSET_MAX) ||
2291 (offset % 2) ||
2292 (buf == NULL) ||
2293 (len > HFA384x_BAP_DATALEN_MAX) ){
2294 result = -EINVAL;
2295 } else {
2296 selectreg = (bap == 1) ? HFA384x_SELECT1 : HFA384x_SELECT0 ;
2297 offsetreg = (bap == 1) ? HFA384x_OFFSET1 : HFA384x_OFFSET0 ;
2298 datareg = (bap == 1) ? HFA384x_DATA1 : HFA384x_DATA0 ;
2299
2300 /* Obtain lock */
2301 spin_lock_irqsave( &(hw->baplock), flags);
2302
2303 /* Write id to select reg */
2304 hfa384x_setreg(hw, id, selectreg);
2305 /* Write offset to offset reg */
2306 hfa384x_setreg(hw, offset, offsetreg);
2307 /* Wait for offset[busy] to clear (see BAP_TIMEOUT) */
2308 i = 0;
2309 do {
2310 reg = hfa384x_getreg(hw, offsetreg);
2311 if ( i > 0 ) udelay(10);
2312 i++;
2313 } while ( i < prism2_bap_timeout && HFA384x_OFFSET_ISBUSY(reg));
2314#if (WLAN_HOSTIF != WLAN_PCI)
2315 /* Release lock */
2316 spin_unlock_irqrestore( &(hw->baplock), flags);
2317#endif
2318
2319 if ( HFA384x_OFFSET_ISBUSY(reg) ){
2320 /* If timeout, return -ETIMEDOUT */
2321 result = reg;
2322 } else if ( HFA384x_OFFSET_ISERR(reg) ){
2323 /* If offset[err] == 1, return -EINVAL */
2324 result = reg;
2325 } else {
2326 /* Read even(len) buf contents from data reg */
2327 for ( i = 0; i < (len & 0xfffe); i+=2 ) {
2328 *(UINT16*)(&(d[i])) =
2329 hfa384x_getreg_noswap(hw, datareg);
2330 }
2331 /* If len odd, handle last byte */
2332 if ( len % 2 ){
2333 reg = hfa384x_getreg_noswap(hw, datareg);
2334 d[len-1] = ((UINT8*)(&reg))[0];
2335 }
2336 }
2337
2338 /* According to Intersil errata dated 9/16/02:
2339
2340 "In PRISM PCI MAC host interface, if both BAPs are concurrently
2341 requesing memory access, both will accept the Ack. There is no
2342 firmware workaround possible. To prevent BAP access failures or
2343 hang conditions the host MUST NOT access both BAPs in sucession
2344 unless at least 5us elapses between accesses. The safest choice
2345 is to USE ONLY ONE BAP for all data movement operations."
2346
2347 What this means:
2348
2349 We have to serialize ALL BAP accesses, and furthermore, add a 5us
2350 delay after access if we're using a PCI platform.
2351
2352 Unfortunately, this means we have to lock out interrupts througout
2353 the entire BAP copy.
2354
2355 It remains to be seen if "BAP access" means "BAP setup" or the more
2356 literal definition of "copying data back and forth" I'm erring for
2357 the latter, safer definition. -- SLP.
2358
2359 */
2360
2361#if (WLAN_HOSTIF == WLAN_PCI)
2362 udelay(5);
2363 /* Release lock */
2364 spin_unlock_irqrestore( &(hw->baplock), flags);
2365#endif
2366
2367 }
2368
2369 if (result) {
2370 WLAN_LOG_DEBUG(1,
2371 "copy_from_bap(0x%04x, 0, %d) failed, result=0x%x\n",
2372 reg, len, result);
2373 }
2374 DBFEXIT;
2375 return result;
2376}
2377
2378
2379/*----------------------------------------------------------------
2380* hfa384x_copy_to_bap
2381*
2382* Copies a collection of bytes to the MAC controller memory via
2383* one set of BAP registers.
2384*
2385* Arguments:
2386* hw device structure
2387* bap [0|1] which BAP to use
2388* id FID or RID, destined for the select register (host order)
2389* offset An _even_ offset into the buffer for the given
2390* FID/RID. We haven't the means to validate this,
2391* so be careful. (host order)
2392* buf ptr to array of bytes
2393* len length of data to transfer (in bytes)
2394*
2395* Returns:
2396* 0 success
2397* >0 f/w reported failure - value of offset reg.
2398* <0 driver reported error (timeout|bad arg)
2399*
2400* Side effects:
2401*
2402* Call context:
2403* process thread
2404* interrupt
2405----------------------------------------------------------------*/
2406int hfa384x_copy_to_bap(hfa384x_t *hw, UINT16 bap, UINT16 id, UINT16 offset,
2407 void *buf, UINT len)
2408{
2409 return hfa384x_copy_to_bap4(hw, bap, id, offset, buf, len, NULL, 0, NULL, 0, NULL, 0);
2410}
2411
2412int hfa384x_copy_to_bap4(hfa384x_t *hw, UINT16 bap, UINT16 id, UINT16 offset,
2413 void *buf, UINT len1, void* buf2, UINT len2,
2414 void *buf3, UINT len3, void *buf4, UINT len4)
2415{
2416 int result = 0;
2417 unsigned long flags = 0;
2418 UINT8 *d;
2419 UINT selectreg;
2420 UINT offsetreg;
2421 UINT datareg;
2422 UINT i;
2423 UINT16 reg;
2424
2425 DBFENTER;
2426
2427// printk(KERN_DEBUG "ctb1 %d id %04x o %d %d %d %d %d\n", bap, id, offset, len1, len2, len3, len4);
2428
2429 /* Validate bap, offset, buf, and len */
2430 if ( (bap > 1) ||
2431 (offset > HFA384x_BAP_OFFSET_MAX) ||
2432 (offset % 2) ||
2433 (buf == NULL) ||
2434 (len1+len2+len3+len4 > HFA384x_BAP_DATALEN_MAX) ){
2435 result = -EINVAL;
2436 } else {
2437 selectreg = (bap == 1) ? HFA384x_SELECT1 : HFA384x_SELECT0;
2438 offsetreg = (bap == 1) ? HFA384x_OFFSET1 : HFA384x_OFFSET0;
2439 datareg = (bap == 1) ? HFA384x_DATA1 : HFA384x_DATA0;
2440 /* Obtain lock */
2441 spin_lock_irqsave( &(hw->baplock), flags);
2442
2443 /* Write id to select reg */
2444 hfa384x_setreg(hw, id, selectreg);
2445 udelay(10);
2446 /* Write offset to offset reg */
2447 hfa384x_setreg(hw, offset, offsetreg);
2448 /* Wait for offset[busy] to clear (see BAP_TIMEOUT) */
2449 i = 0;
2450 do {
2451 reg = hfa384x_getreg(hw, offsetreg);
2452 if ( i > 0 ) udelay(10);
2453 i++;
2454 } while ( i < prism2_bap_timeout && HFA384x_OFFSET_ISBUSY(reg));
2455
2456#if (WLAN_HOSTIF != WLAN_PCI)
2457 /* Release lock */
2458 spin_unlock_irqrestore( &(hw->baplock), flags);
2459#endif
2460
2461 if ( HFA384x_OFFSET_ISBUSY(reg) ){
2462 /* If timeout, return reg */
2463 result = reg;
2464 } else if ( HFA384x_OFFSET_ISERR(reg) ){
2465 /* If offset[err] == 1, return reg */
2466 result = reg;
2467 } else {
2468 d = (UINT8*)buf;
2469 /* Write even(len1) buf contents to data reg */
2470 for ( i = 0; i < (len1 & 0xfffe); i+=2 ) {
2471 hfa384x_setreg_noswap(hw,
2472 *(UINT16*)(&(d[i])), datareg);
2473 }
2474 if (len1 & 1) {
2475 UINT16 data;
2476 UINT8 *b = (UINT8 *) &data;
2477 b[0] = d[len1-1];
2478 if (buf2 != NULL) {
2479 d = (UINT8*)buf2;
2480 b[1] = d[0];
2481 len2--;
2482 buf2++;
2483 }
2484 hfa384x_setreg_noswap(hw, data, datareg);
2485 }
2486 if ((buf2 != NULL) && (len2 > 0)) {
2487 /* Write even(len2) buf contents to data reg */
2488 d = (UINT8*)buf2;
2489 for ( i = 0; i < (len2 & 0xfffe); i+=2 ) {
2490 hfa384x_setreg_noswap(hw, *(UINT16*)(&(d[i])), datareg);
2491 }
2492 if (len2 & 1) {
2493 UINT16 data;
2494 UINT8 *b = (UINT8 *) &data;
2495 b[0] = d[len2-1];
2496 if (buf3 != NULL) {
2497 d = (UINT8*)buf3;
2498 b[1] = d[0];
2499 len3--;
2500 buf3++;
2501 }
2502 hfa384x_setreg_noswap(hw, data, datareg);
2503 }
2504 }
2505
2506 if ((buf3 != NULL) && (len3 > 0)) {
2507 /* Write even(len3) buf contents to data reg */
2508 d = (UINT8*)buf3;
2509 for ( i = 0; i < (len3 & 0xfffe); i+=2 ) {
2510 hfa384x_setreg_noswap(hw, *(UINT16*)(&(d[i])), datareg);
2511 }
2512 if (len3 & 1) {
2513 UINT16 data;
2514 UINT8 *b = (UINT8 *) &data;
2515 b[0] = d[len3-1];
2516 if (buf4 != NULL) {
2517 d = (UINT8*)buf4;
2518 b[1] = d[0];
2519 len4--;
2520 buf4++;
2521 }
2522 hfa384x_setreg_noswap(hw, data, datareg);
2523 }
2524 }
2525 if ((buf4 != NULL) && (len4 > 0)) {
2526 /* Write even(len4) buf contents to data reg */
2527 d = (UINT8*)buf4;
2528 for ( i = 0; i < (len4 & 0xfffe); i+=2 ) {
2529 hfa384x_setreg_noswap(hw, *(UINT16*)(&(d[i])), datareg);
2530 }
2531 if (len4 & 1) {
2532 UINT16 data;
2533 UINT8 *b = (UINT8 *) &data;
2534 b[0] = d[len4-1];
2535 b[1] = 0;
2536
2537 hfa384x_setreg_noswap(hw, data, datareg);
2538 }
2539 }
2540// printk(KERN_DEBUG "ctb2 %d id %04x o %d %d %d %d %d\n", bap, id, offset, len1, len2, len3, len4);
2541
2542 }
2543
2544#if (WLAN_HOSTIF == WLAN_PCI)
2545 udelay(5);
2546 /* Release lock */
2547 spin_unlock_irqrestore( &(hw->baplock), flags);
2548#endif
2549
2550 }
2551
2552 if (result)
2553 WLAN_LOG_ERROR("copy_to_bap() failed.\n");
2554
2555 DBFEXIT;
2556 return result;
2557}
2558
2559
2560/*----------------------------------------------------------------
2561* hfa384x_copy_from_aux
2562*
2563* Copies a collection of bytes from the controller memory. The
2564* Auxiliary port MUST be enabled prior to calling this function.
2565* We _might_ be in a download state.
2566*
2567* Arguments:
2568* hw device structure
2569* cardaddr address in hfa384x data space to read
2570* auxctl address space select
2571* buf ptr to destination host buffer
2572* len length of data to transfer (in bytes)
2573*
2574* Returns:
2575* nothing
2576*
2577* Side effects:
2578* buf contains the data copied
2579*
2580* Call context:
2581* process thread
2582* interrupt
2583----------------------------------------------------------------*/
2584void
2585hfa384x_copy_from_aux(
2586 hfa384x_t *hw, UINT32 cardaddr, UINT32 auxctl, void *buf, UINT len)
2587{
2588 UINT16 currpage;
2589 UINT16 curroffset;
2590 UINT i = 0;
2591
2592 DBFENTER;
2593
2594 if ( !(hw->auxen) ) {
2595 WLAN_LOG_DEBUG(1,
2596 "Attempt to read 0x%04x when aux not enabled\n",
2597 cardaddr);
2598 return;
2599
2600 }
2601 /* Build appropriate aux page and offset */
2602 currpage = HFA384x_AUX_MKPAGE(cardaddr);
2603 curroffset = HFA384x_AUX_MKOFF(cardaddr, auxctl);
2604 hfa384x_setreg(hw, currpage, HFA384x_AUXPAGE);
2605 hfa384x_setreg(hw, curroffset, HFA384x_AUXOFFSET);
2606 udelay(5); /* beat */
2607
2608 /* read the data */
2609 while ( i < len) {
2610 *((UINT16*)(buf+i)) = hfa384x_getreg_noswap(hw, HFA384x_AUXDATA);
2611 i+=2;
2612 curroffset+=2;
2613 if ( (curroffset&HFA384x_ADDR_AUX_OFF_MASK) >
2614 HFA384x_ADDR_AUX_OFF_MAX ) {
2615 currpage++;
2616 curroffset = 0;
2617 curroffset = HFA384x_AUX_MKOFF(curroffset, auxctl);
2618 hfa384x_setreg(hw, currpage, HFA384x_AUXPAGE);
2619 hfa384x_setreg(hw, curroffset, HFA384x_AUXOFFSET);
2620 udelay(5); /* beat */
2621 }
2622 }
2623 /* Make sure the auxctl bits are clear */
2624 hfa384x_setreg(hw, 0, HFA384x_AUXOFFSET);
2625 DBFEXIT;
2626}
2627
2628
2629/*----------------------------------------------------------------
2630* hfa384x_copy_to_aux
2631*
2632* Copies a collection of bytes to the controller memory. The
2633* Auxiliary port MUST be enabled prior to calling this function.
2634* We _might_ be in a download state.
2635*
2636* Arguments:
2637* hw device structure
2638* cardaddr address in hfa384x data space to read
2639* auxctl address space select
2640* buf ptr to destination host buffer
2641* len length of data to transfer (in bytes)
2642*
2643* Returns:
2644* nothing
2645*
2646* Side effects:
2647* Controller memory now contains a copy of buf
2648*
2649* Call context:
2650* process thread
2651* interrupt
2652----------------------------------------------------------------*/
2653void
2654hfa384x_copy_to_aux(
2655 hfa384x_t *hw, UINT32 cardaddr, UINT32 auxctl, void *buf, UINT len)
2656{
2657 UINT16 currpage;
2658 UINT16 curroffset;
2659 UINT i = 0;
2660
2661 DBFENTER;
2662
2663 if ( !(hw->auxen) ) {
2664 WLAN_LOG_DEBUG(1,
2665 "Attempt to read 0x%04x when aux not enabled\n",
2666 cardaddr);
2667 return;
2668
2669 }
2670 /* Build appropriate aux page and offset */
2671 currpage = HFA384x_AUX_MKPAGE(cardaddr);
2672 curroffset = HFA384x_AUX_MKOFF(cardaddr, auxctl);
2673 hfa384x_setreg(hw, currpage, HFA384x_AUXPAGE);
2674 hfa384x_setreg(hw, curroffset, HFA384x_AUXOFFSET);
2675 udelay(5); /* beat */
2676
2677 /* write the data */
2678 while ( i < len) {
2679 hfa384x_setreg_noswap(hw,
2680 *((UINT16*)(buf+i)), HFA384x_AUXDATA);
2681 i+=2;
2682 curroffset+=2;
2683 if ( curroffset > HFA384x_ADDR_AUX_OFF_MAX ) {
2684 currpage++;
2685 curroffset = 0;
2686 hfa384x_setreg(hw, currpage, HFA384x_AUXPAGE);
2687 hfa384x_setreg(hw, curroffset, HFA384x_AUXOFFSET);
2688 udelay(5); /* beat */
2689 }
2690 }
2691 DBFEXIT;
2692}
2693
2694
2695/*----------------------------------------------------------------
2696* hfa384x_cmd_wait
2697*
2698* Waits for availability of the Command register, then
2699* issues the given command. Then polls the Evstat register
2700* waiting for command completion. Timeouts shouldn't be
2701* possible since we're preventing overlapping commands and all
2702* commands should be cleared and acknowledged.
2703*
2704* Arguments:
2705* wlandev device structure
2706* cmd cmd structure. Includes all arguments and result
2707* data points. All in host order.
2708*
2709* Returns:
2710* 0 success
2711* -ETIMEDOUT timed out waiting for register ready or
2712* command completion
2713* >0 command indicated error, Status and Resp0-2 are
2714* in hw structure.
2715*
2716* Side effects:
2717*
2718*
2719* Call context:
2720* process thread
2721----------------------------------------------------------------*/
2722static int hfa384x_docmd_wait( hfa384x_t *hw, hfa384x_metacmd_t *cmd)
2723{
2724 int result = -ETIMEDOUT;
2725 UINT16 reg = 0;
2726 UINT16 counter;
2727
2728 DBFENTER;
2729
2730 hw->cmdflag = 0;
2731 hw->cmddata = cmd;
2732
2733 /* wait for the busy bit to clear */
2734 counter = 0;
2735 reg = hfa384x_getreg(hw, HFA384x_CMD);
2736 while ( HFA384x_CMD_ISBUSY(reg) &&
2737 (counter < 10)) {
2738 reg = hfa384x_getreg(hw, HFA384x_CMD);
2739 counter++;
2740 udelay(10);
2741 }
2742
2743 if (HFA384x_CMD_ISBUSY(reg)) {
2744 WLAN_LOG_ERROR("hfa384x_cmd timeout(1), reg=0x%0hx.\n", reg);
2745 goto failed;
2746 }
2747 if (!HFA384x_CMD_ISBUSY(reg)) {
2748 /* busy bit clear, write command */
2749 hfa384x_setreg(hw, cmd->parm0, HFA384x_PARAM0);
2750 hfa384x_setreg(hw, cmd->parm1, HFA384x_PARAM1);
2751 hfa384x_setreg(hw, cmd->parm2, HFA384x_PARAM2);
2752 hfa384x_setreg(hw, cmd->cmd, HFA384x_CMD);
2753
2754#ifdef CMD_IRQ
2755
2756#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,0))
2757 while (! hw->cmdflag)
2758 interruptible_sleep_on(&hw->cmdq);
2759#else
2760 wait_event_interruptible(hw->cmdq, hw->cmdflag);
2761#endif
2762 result = HFA384x_STATUS_RESULT_GET(cmd->status);
2763#else // CMD_IRQ
2764 /* Now wait for completion */
2765 counter = 0;
2766 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
2767 /* Initialization is the problem. It takes about
2768 100ms. "normal" commands are typically is about
2769 200-400 us (I've never seen less than 200). Longer
2770 is better so that we're not hammering the bus. */
2771 while ( !HFA384x_EVSTAT_ISCMD(reg) &&
2772 (counter < 5000)) {
2773 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
2774 counter++;
2775 udelay(200);
2776 }
2777
2778 if ( HFA384x_EVSTAT_ISCMD(reg) ) {
2779 result = 0;
2780 cmd->result.status = hfa384x_getreg(hw, HFA384x_STATUS);
2781 cmd->result.resp0 = hfa384x_getreg(hw, HFA384x_RESP0);
2782 cmd->result.resp1 = hfa384x_getreg(hw, HFA384x_RESP1);
2783 cmd->result.resp2 = hfa384x_getreg(hw, HFA384x_RESP2);
2784 hfa384x_setreg(hw, HFA384x_EVACK_CMD,
2785 HFA384x_EVACK);
2786 result = HFA384x_STATUS_RESULT_GET(cmd->result.status);
2787 } else {
2788 WLAN_LOG_ERROR("hfa384x_cmd timeout(2), reg=0x%0hx.\n", reg);
2789 }
2790#endif /* CMD_IRQ */
2791 }
2792
2793 failed:
2794 hw->cmdflag = 0;
2795 hw->cmddata = NULL;
2796
2797 DBFEXIT;
2798 return result;
2799}
2800
2801
2802/*----------------------------------------------------------------
2803* hfa384x_dl_docmd_wait
2804*
2805* Waits for availability of the Command register, then
2806* issues the given command. Then polls the Evstat register
2807* waiting for command completion. Timeouts shouldn't be
2808* possible since we're preventing overlapping commands and all
2809* commands should be cleared and acknowledged.
2810*
2811* This routine is only used for downloads. Since it doesn't lock out
2812* interrupts the system response is much better.
2813*
2814* Arguments:
2815* wlandev device structure
2816* cmd cmd structure. Includes all arguments and result
2817* data points. All in host order.
2818*
2819* Returns:
2820* 0 success
2821* -ETIMEDOUT timed out waiting for register ready or
2822* command completion
2823* >0 command indicated error, Status and Resp0-2 are
2824* in hw structure.
2825*
2826* Side effects:
2827*
2828*
2829* Call context:
2830* process thread
2831----------------------------------------------------------------*/
2832static int hfa384x_dl_docmd_wait( hfa384x_t *hw, hfa384x_metacmd_t *cmd)
2833{
2834 int result = -ETIMEDOUT;
2835 unsigned long timeout;
2836 UINT16 reg = 0;
2837
2838 DBFENTER;
2839 /* wait for the busy bit to clear */
2840 timeout = jiffies + 1*HZ;
2841 reg = hfa384x_getreg(hw, HFA384x_CMD);
2842 while ( HFA384x_CMD_ISBUSY(reg) && time_before( jiffies, timeout) ) {
2843 reg = hfa384x_getreg(hw, HFA384x_CMD);
2844 udelay(10);
2845 }
2846 if (HFA384x_CMD_ISBUSY(reg)) {
2847 WLAN_LOG_WARNING("Timed out waiting for cmd register.\n");
2848 goto failed;
2849 }
2850
2851 if (!HFA384x_CMD_ISBUSY(reg)) {
2852 /* busy bit clear, write command */
2853 hfa384x_setreg(hw, cmd->parm0, HFA384x_PARAM0);
2854 hfa384x_setreg(hw, cmd->parm1, HFA384x_PARAM1);
2855 hfa384x_setreg(hw, cmd->parm2, HFA384x_PARAM2);
2856 hfa384x_setreg(hw, cmd->cmd, HFA384x_CMD);
2857
2858 /* Now wait for completion */
2859 if ( (HFA384x_CMD_CMDCODE_GET(cmd->cmd) == HFA384x_CMDCODE_DOWNLD) ) {
2860 /* dltimeout is in ms */
2861 timeout = (((UINT32)hw->dltimeout) / 1000UL) * HZ;
2862 if ( timeout > 0 ) {
2863 timeout += jiffies;
2864 } else {
2865 timeout = jiffies + 1*HZ;
2866 }
2867 } else {
2868 timeout = jiffies + 1*HZ;
2869 }
2870 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
2871 while ( !HFA384x_EVSTAT_ISCMD(reg) && time_before(jiffies,timeout) ) {
2872 udelay(100);
2873 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
2874 }
2875 if ( HFA384x_EVSTAT_ISCMD(reg) ) {
2876 result = 0;
2877 cmd->result.status = hfa384x_getreg(hw, HFA384x_STATUS);
2878 cmd->result.resp0 = hfa384x_getreg(hw, HFA384x_RESP0);
2879 cmd->result.resp1 = hfa384x_getreg(hw, HFA384x_RESP1);
2880 cmd->result.resp2 = hfa384x_getreg(hw, HFA384x_RESP2);
2881 hfa384x_setreg(hw, HFA384x_EVACK_CMD, HFA384x_EVACK);
2882 result = HFA384x_STATUS_RESULT_GET(cmd->result.status);
2883 }
2884 }
2885
2886failed:
2887 DBFEXIT;
2888 return result;
2889}
2890
2891/*----------------------------------------------------------------
2892* hfa384x_drvr_start
2893*
2894* Issues the MAC initialize command, sets up some data structures,
2895* and enables the interrupts. After this function completes, the
2896* low-level stuff should be ready for any/all commands.
2897*
2898* Arguments:
2899* hw device structure
2900* Returns:
2901* 0 success
2902* >0 f/w reported error - f/w status code
2903* <0 driver reported error
2904*
2905* Side effects:
2906*
2907* Call context:
2908* process thread
2909----------------------------------------------------------------*/
2910int hfa384x_drvr_start(hfa384x_t *hw)
2911{
2912 int result = 0;
2913 UINT16 reg;
2914 int i;
2915 int j;
2916 DBFENTER;
2917
2918 /* call initialize */
2919 result = hfa384x_cmd_initialize(hw);
2920 if (result != 0) {
2921 WLAN_LOG_ERROR("Initialize command failed.\n");
2922 goto failed;
2923 }
2924
2925 /* make sure interrupts are disabled and any layabout events cleared */
2926 hfa384x_setreg(hw, 0, HFA384x_INTEN);
2927 hfa384x_setreg(hw, 0xffff, HFA384x_EVACK);
2928
2929 hw->txfid_head = 0;
2930 hw->txfid_tail = 0;
2931 hw->txfid_N = HFA384x_DRVR_FIDSTACKLEN_MAX;
2932 memset(hw->txfid_queue, 0, sizeof(hw->txfid_queue));
2933
2934 /* Allocate tx and notify FIDs */
2935 /* First, tx */
2936 for ( i = 0; i < HFA384x_DRVR_FIDSTACKLEN_MAX-1; i++) {
2937 result = hfa384x_cmd_allocate(hw, HFA384x_DRVR_TXBUF_MAX);
2938 if (result != 0) {
2939 WLAN_LOG_ERROR("Allocate(tx) command failed.\n");
2940 goto failed;
2941 }
2942 j = 0;
2943 do {
2944 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
2945 udelay(10);
2946 j++;
2947 } while ( !HFA384x_EVSTAT_ISALLOC(reg) && j < 50); /* 50 is timeout */
2948 if ( j >= 50 ) {
2949 WLAN_LOG_ERROR("Timed out waiting for evalloc(tx).\n");
2950 result = -ETIMEDOUT;
2951 goto failed;
2952 }
2953 reg = hfa384x_getreg(hw, HFA384x_ALLOCFID);
2954
2955 txfid_queue_add(hw, reg);
2956
2957 WLAN_LOG_DEBUG(4,"hw->txfid_queue[%d]=0x%04x\n",i,reg);
2958
2959 reg = HFA384x_EVACK_ALLOC_SET(1);
2960 hfa384x_setreg(hw, reg, HFA384x_EVACK);
2961
2962 }
2963
2964 /* Now, the info frame fid */
2965 result = hfa384x_cmd_allocate(hw, HFA384x_INFOFRM_MAXLEN);
2966 if (result != 0) {
2967 WLAN_LOG_ERROR("Allocate(tx) command failed.\n");
2968 goto failed;
2969 }
2970 i = 0;
2971 do {
2972 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
2973 udelay(10);
2974 i++;
2975 } while ( !HFA384x_EVSTAT_ISALLOC(reg) && i < 50); /* 50 is timeout */
2976 if ( i >= 50 ) {
2977 WLAN_LOG_ERROR("Timed out waiting for evalloc(info).\n");
2978 result = -ETIMEDOUT;
2979 goto failed;
2980 }
2981 hw->infofid = hfa384x_getreg(hw, HFA384x_ALLOCFID);
2982 reg = HFA384x_EVACK_ALLOC_SET(1);
2983 hfa384x_setreg(hw, reg, HFA384x_EVACK);
2984 WLAN_LOG_DEBUG(4,"hw->infofid=0x%04x\n", hw->infofid);
2985
2986 /* Set swsupport regs to magic # for card presence detection */
2987 hfa384x_setreg(hw, HFA384x_DRVR_MAGIC, HFA384x_SWSUPPORT0);
2988
2989 /* Now enable the interrupts and set the running state */
2990 hfa384x_setreg(hw, 0xffff, HFA384x_EVSTAT);
2991 hfa384x_events_all(hw);
2992
2993 hw->state = HFA384x_STATE_RUNNING;
2994
2995 goto done;
2996failed:
2997 WLAN_LOG_ERROR("Failed, result=%d\n", result);
2998done:
2999 DBFEXIT;
3000 return result;
3001}
3002
3003
3004/*----------------------------------------------------------------
3005* hfa384x_drvr_stop
3006*
3007* Issues the initialize command to leave us in the 'reset' state.
3008*
3009* Arguments:
3010* hw device structure
3011* Returns:
3012* 0 success
3013* >0 f/w reported error - f/w status code
3014* <0 driver reported error
3015*
3016* Side effects:
3017*
3018* Call context:
3019* process thread
3020----------------------------------------------------------------*/
3021int hfa384x_drvr_stop(hfa384x_t *hw)
3022{
3023 int result = 0;
3024 int i;
3025 DBFENTER;
3026
3027 del_timer_sync(&hw->commsqual_timer);
3028
3029 if ( hw->wlandev->hwremoved ) {
3030 /* only flush when we're shutting down for good */
3031 flush_scheduled_work();
3032 }
3033
3034 if (hw->state == HFA384x_STATE_RUNNING) {
3035 /*
3036 * Send the MAC initialize cmd.
3037 */
3038 hfa384x_cmd_initialize(hw);
3039
3040 /*
3041 * Make absolutely sure interrupts are disabled and any
3042 * layabout events cleared
3043 */
3044 hfa384x_setreg(hw, 0, HFA384x_INTEN);
3045 hfa384x_setreg(hw, 0xffff, HFA384x_EVACK);
3046 }
3047
3048 tasklet_kill(&hw->bap_tasklet);
3049
3050 hw->link_status = HFA384x_LINK_NOTCONNECTED;
3051 hw->state = HFA384x_STATE_INIT;
3052
3053 /* Clear all the port status */
3054 for ( i = 0; i < HFA384x_NUMPORTS_MAX; i++) {
3055 hw->port_enabled[i] = 0;
3056 }
3057
3058 DBFEXIT;
3059 return result;
3060}
3061
3062
3063/*----------------------------------------------------------------
3064* hfa384x_drvr_txframe
3065*
3066* Takes a frame from prism2sta and queues it for transmission.
3067*
3068* Arguments:
3069* hw device structure
3070* skb packet buffer struct. Contains an 802.11
3071* data frame.
3072* p80211_hdr points to the 802.11 header for the packet.
3073* Returns:
3074* 0 Success and more buffs available
3075* 1 Success but no more buffs
3076* 2 Allocation failure
3077* 3 MAC Tx command failed
3078* 4 Buffer full or queue busy
3079*
3080* Side effects:
3081*
3082* Call context:
3083* process thread
3084----------------------------------------------------------------*/
3085int hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep)
3086{
3087 hfa384x_tx_frame_t txdesc;
3088 UINT16 macq = 0;
3089 UINT16 fid;
3090 int result;
3091
3092 DBFENTER;
3093
3094 /* Build Tx frame structure */
3095 /* Set up the control field */
3096 memset(&txdesc, 0, sizeof(txdesc));
3097
3098/* Tx complete and Tx exception disable per dleach. Might be causing
3099 * buf depletion
3100 */
3101#define DOBOTH 1
3102#if DOBOTH
3103 txdesc.tx_control =
3104 HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) |
3105 HFA384x_TX_TXEX_SET(1) | HFA384x_TX_TXOK_SET(1);
3106#elif DOEXC
3107 txdesc.tx_control =
3108 HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) |
3109 HFA384x_TX_TXEX_SET(1) | HFA384x_TX_TXOK_SET(0);
3110#else
3111 txdesc.tx_control =
3112 HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) |
3113 HFA384x_TX_TXEX_SET(0) | HFA384x_TX_TXOK_SET(0);
3114#endif
3115
3116 /* if we're using host WEP, increase size by IV+ICV */
3117 if (p80211_wep->data) {
3118 txdesc.data_len = host2hfa384x_16(skb->len+8);
3119 // txdesc.tx_control |= HFA384x_TX_NOENCRYPT_SET(1);
3120 } else {
3121 txdesc.data_len = host2hfa384x_16(skb->len);
3122 }
3123
3124 txdesc.tx_control = host2hfa384x_16(txdesc.tx_control);
3125 /* copy the header over to the txdesc */
3126 memcpy(&(txdesc.frame_control), p80211_hdr, sizeof(p80211_hdr_t));
3127
3128 /* Since tbusy is set whenever the stack is empty, there should
3129 * always be something on the stack if we get to this point.
3130 * [MSM]: NOT TRUE!!!!! so I added the test of fid below.
3131 */
3132
3133 /* Allocate FID */
3134
3135 fid = txfid_queue_remove(hw);
3136
3137 if ( fid == 0 ) { /* stack or queue was empty */
3138 return 4;
3139 }
3140
3141 /* now let's get the cmdlock */
3142 spin_lock(&hw->cmdlock);
3143
3144 /* Copy descriptor+payload to FID */
3145 if (p80211_wep->data) {
3146 result = hfa384x_copy_to_bap4(hw, HFA384x_BAP_PROC, fid, 0,
3147 &txdesc, sizeof(txdesc),
3148 p80211_wep->iv, sizeof(p80211_wep->iv),
3149 p80211_wep->data, skb->len,
3150 p80211_wep->icv, sizeof(p80211_wep->icv));
3151 } else {
3152 result = hfa384x_copy_to_bap4(hw, HFA384x_BAP_PROC, fid, 0,
3153 &txdesc, sizeof(txdesc),
3154 skb->data, skb->len,
3155 NULL, 0, NULL, 0);
3156 }
3157
3158 if ( result ) {
3159 WLAN_LOG_DEBUG(1,
3160 "copy_to_bap(%04x, %d, %d) failed, result=0x%x\n",
3161 fid,
3162 sizeof(txdesc),
3163 skb->len,
3164 result);
3165
3166 /* put the fid back in the queue */
3167 txfid_queue_add(hw, fid);
3168
3169 result = 3;
3170 goto failed;
3171 }
3172
3173 /* Issue Tx command */
3174 result = hfa384x_cmd_transmit(hw, HFA384x_TXCMD_RECL, macq, fid);
3175
3176 if ( result != 0 ) {
3177 txfid_queue_add(hw, fid);
3178
3179 WLAN_LOG_DEBUG(1,"cmd_tx(%04x) failed, result=%d\n",
3180 fid, result);
3181 result = 3;
3182 goto failed;
3183 }
3184
3185 /* indicate we haven't any buffers, int_alloc will clear */
3186 result = txfid_queue_empty(hw);
3187failed:
3188
3189 spin_unlock(&hw->cmdlock);
3190
3191 DBFEXIT;
3192 return result;
3193}
3194
3195/*----------------------------------------------------------------
3196* hfa384x_interrupt
3197*
3198* Driver interrupt handler.
3199*
3200* Arguments:
3201* irq irq number
3202* dev_id pointer to the device
3203* regs registers
3204*
3205* Returns:
3206* nothing
3207*
3208* Side effects:
3209* May result in a frame being passed up the stack or an info
3210* frame being handled.
3211*
3212* Call context:
3213* Ummm, could it be interrupt?
3214----------------------------------------------------------------*/
3215irqreturn_t hfa384x_interrupt(int irq, void *dev_id PT_REGS)
3216{
3217 int reg;
3218 wlandevice_t *wlandev = (wlandevice_t*)dev_id;
3219 hfa384x_t *hw = wlandev->priv;
3220 int ev_read = 0;
3221 DBFENTER;
3222
3223 if (!wlandev || wlandev->hwremoved)
3224 return IRQ_NONE; /* Not much we can do w/o hardware */
3225#if (WLAN_HOSTIF == WLAN_PCMCIA)
3226 if (hw->iobase == 0) /* XXX FIXME Properly */
3227 return IRQ_NONE;
3228#endif
3229
3230 for (;;ev_read++) {
3231 if (ev_read >= prism2_irq_evread_max)
3232 break;
3233
3234 /* Check swsupport reg magic # for card presence */
3235 reg = hfa384x_getreg(hw, HFA384x_SWSUPPORT0);
3236 if ( reg != HFA384x_DRVR_MAGIC) {
3237 WLAN_LOG_DEBUG(2, "irq=%d, no magic. Card removed?.\n", irq);
3238 break;
3239 }
3240
3241 /* read the EvStat register for interrupt enabled events */
3242 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
3243
3244 /* AND with the enabled interrupts */
3245 reg &= hfa384x_getreg(hw, HFA384x_INTEN);
3246
3247 /* Handle the events */
3248 if ( HFA384x_EVSTAT_ISWTERR(reg) ){
3249 WLAN_LOG_ERROR(
3250 "Error: WTERR interrupt received (unhandled).\n");
3251 hfa384x_setreg(hw, HFA384x_EVACK_WTERR_SET(1),
3252 HFA384x_EVACK);
3253 }
3254
3255 if ( HFA384x_EVSTAT_ISINFDROP(reg) ){
3256 hfa384x_int_infdrop(wlandev);
3257 hfa384x_setreg(hw, HFA384x_EVACK_INFDROP_SET(1),
3258 HFA384x_EVACK);
3259 }
3260
3261 if (HFA384x_EVSTAT_ISBAP_OP(reg)) {
3262 /* Disable the BAP interrupts */
3263 hfa384x_events_nobap(hw);
3264 tasklet_schedule(&hw->bap_tasklet);
3265 }
3266
3267 if ( HFA384x_EVSTAT_ISALLOC(reg) ){
3268 hfa384x_int_alloc(wlandev);
3269 hfa384x_setreg(hw, HFA384x_EVACK_ALLOC_SET(1),
3270 HFA384x_EVACK);
3271 }
3272
3273 if ( HFA384x_EVSTAT_ISDTIM(reg) ){
3274 hfa384x_int_dtim(wlandev);
3275 hfa384x_setreg(hw, HFA384x_EVACK_DTIM_SET(1),
3276 HFA384x_EVACK);
3277 }
3278#ifdef CMD_IRQ
3279 if ( HFA384x_EVSTAT_ISCMD(reg) ){
3280 hfa384x_int_cmd(wlandev);
3281 hfa384x_setreg(hw, HFA384x_EVACK_CMD_SET(1),
3282 HFA384x_EVACK);
3283 }
3284#endif
3285
3286 /* allow the evstat to be updated after the evack */
3287 udelay(20);
3288 }
3289
3290 DBFEXIT;
3291 return IRQ_HANDLED;
3292}
3293
3294#ifdef CMD_IRQ
3295/*----------------------------------------------------------------
3296* hfa384x_int_cmd
3297*
3298* Handles command completion event.
3299*
3300* Arguments:
3301* wlandev wlan device structure
3302*
3303* Returns:
3304* nothing
3305*
3306* Side effects:
3307*
3308* Call context:
3309* interrupt
3310----------------------------------------------------------------*/
3311void hfa384x_int_cmd(wlandevice_t *wlandev)
3312{
3313 hfa384x_t *hw = wlandev->priv;
3314 DBFENTER;
3315
3316 // check to make sure it's the right command?
3317 if (hw->cmddata) {
3318 hw->cmddata->status = hfa384x_getreg(hw, HFA384x_STATUS);
3319 hw->cmddata->resp0 = hfa384x_getreg(hw, HFA384x_RESP0);
3320 hw->cmddata->resp1 = hfa384x_getreg(hw, HFA384x_RESP1);
3321 hw->cmddata->resp2 = hfa384x_getreg(hw, HFA384x_RESP2);
3322 }
3323 hw->cmdflag = 1;
3324
3325 printk(KERN_INFO "um. int_cmd\n");
3326
3327 wake_up_interruptible(&hw->cmdq);
3328
3329 // XXXX perform a bap copy too?
3330
3331 DBFEXIT;
3332 return;
3333}
3334#endif
3335
3336/*----------------------------------------------------------------
3337* hfa384x_int_dtim
3338*
3339* Handles the DTIM early warning event.
3340*
3341* Arguments:
3342* wlandev wlan device structure
3343*
3344* Returns:
3345* nothing
3346*
3347* Side effects:
3348*
3349* Call context:
3350* interrupt
3351----------------------------------------------------------------*/
3352static void hfa384x_int_dtim(wlandevice_t *wlandev)
3353{
3354#if 0
3355 hfa384x_t *hw = wlandev->priv;
3356#endif
3357 DBFENTER;
3358 prism2sta_ev_dtim(wlandev);
3359 DBFEXIT;
3360 return;
3361}
3362
3363
3364/*----------------------------------------------------------------
3365* hfa384x_int_infdrop
3366*
3367* Handles the InfDrop event.
3368*
3369* Arguments:
3370* wlandev wlan device structure
3371*
3372* Returns:
3373* nothing
3374*
3375* Side effects:
3376*
3377* Call context:
3378* interrupt
3379----------------------------------------------------------------*/
3380static void hfa384x_int_infdrop(wlandevice_t *wlandev)
3381{
3382#if 0
3383 hfa384x_t *hw = wlandev->priv;
3384#endif
3385 DBFENTER;
3386 prism2sta_ev_infdrop(wlandev);
3387 DBFEXIT;
3388 return;
3389}
3390
3391
3392/*----------------------------------------------------------------
3393* hfa384x_int_info
3394*
3395* Handles the Info event.
3396*
3397* Arguments:
3398* wlandev wlan device structure
3399*
3400* Returns:
3401* nothing
3402*
3403* Side effects:
3404*
3405* Call context:
3406* tasklet
3407----------------------------------------------------------------*/
3408static void hfa384x_int_info(wlandevice_t *wlandev)
3409{
3410 hfa384x_t *hw = wlandev->priv;
3411 UINT16 reg;
3412 hfa384x_InfFrame_t inf;
3413 int result;
3414 DBFENTER;
3415 /* Retrieve the FID */
3416 reg = hfa384x_getreg(hw, HFA384x_INFOFID);
3417
3418 /* Retrieve the length */
3419 result = hfa384x_copy_from_bap( hw,
3420 HFA384x_BAP_INT, reg, 0, &inf.framelen, sizeof(UINT16));
3421 if ( result ) {
3422 WLAN_LOG_DEBUG(1,
3423 "copy_from_bap(0x%04x, 0, %d) failed, result=0x%x\n",
3424 reg, sizeof(inf), result);
3425 goto failed;
3426 }
3427 inf.framelen = hfa384x2host_16(inf.framelen);
3428
3429 /* Retrieve the rest */
3430 result = hfa384x_copy_from_bap( hw,
3431 HFA384x_BAP_INT, reg, sizeof(UINT16),
3432 &(inf.infotype), inf.framelen * sizeof(UINT16));
3433 if ( result ) {
3434 WLAN_LOG_DEBUG(1,
3435 "copy_from_bap(0x%04x, 0, %d) failed, result=0x%x\n",
3436 reg, sizeof(inf), result);
3437 goto failed;
3438 }
3439
3440 prism2sta_ev_info(wlandev, &inf);
3441failed:
3442 DBFEXIT;
3443 return;
3444}
3445
3446
3447/*----------------------------------------------------------------
3448* hfa384x_int_txexc
3449*
3450* Handles the TxExc event. A Transmit Exception event indicates
3451* that the MAC's TX process was unsuccessful - so the packet did
3452* not get transmitted.
3453*
3454* Arguments:
3455* wlandev wlan device structure
3456*
3457* Returns:
3458* nothing
3459*
3460* Side effects:
3461*
3462* Call context:
3463* tasklet
3464----------------------------------------------------------------*/
3465static void hfa384x_int_txexc(wlandevice_t *wlandev)
3466{
3467 hfa384x_t *hw = wlandev->priv;
3468 UINT16 status;
3469 UINT16 fid;
3470 int result = 0;
3471 DBFENTER;
3472 /* Collect the status and display */
3473 fid = hfa384x_getreg(hw, HFA384x_TXCOMPLFID);
3474 result = hfa384x_copy_from_bap(hw, HFA384x_BAP_INT, fid, 0, &status, sizeof(status));
3475 if ( result ) {
3476 WLAN_LOG_DEBUG(1,
3477 "copy_from_bap(0x%04x, 0, %d) failed, result=0x%x\n",
3478 fid, sizeof(status), result);
3479 goto failed;
3480 }
3481 status = hfa384x2host_16(status);
3482 prism2sta_ev_txexc(wlandev, status);
3483failed:
3484 DBFEXIT;
3485 return;
3486}
3487
3488
3489/*----------------------------------------------------------------
3490* hfa384x_int_tx
3491*
3492* Handles the Tx event.
3493*
3494* Arguments:
3495* wlandev wlan device structure
3496*
3497* Returns:
3498* nothing
3499*
3500* Side effects:
3501*
3502* Call context:
3503* tasklet
3504----------------------------------------------------------------*/
3505static void hfa384x_int_tx(wlandevice_t *wlandev)
3506{
3507 hfa384x_t *hw = wlandev->priv;
3508 UINT16 fid;
3509 UINT16 status;
3510 int result = 0;
3511 DBFENTER;
3512 fid = hfa384x_getreg(hw, HFA384x_TXCOMPLFID);
3513 result = hfa384x_copy_from_bap(hw, HFA384x_BAP_INT, fid, 0, &status, sizeof(status));
3514 if ( result ) {
3515 WLAN_LOG_DEBUG(1,
3516 "copy_from_bap(0x%04x, 0, %d) failed, result=0x%x\n",
3517 fid, sizeof(status), result);
3518 goto failed;
3519 }
3520 status = hfa384x2host_16(status);
3521 prism2sta_ev_tx(wlandev, status);
3522failed:
3523 DBFEXIT;
3524 return;
3525}
3526
3527/*----------------------------------------------------------------
3528* hfa384x_int_rx
3529*
3530* Handles the Rx event.
3531*
3532* Arguments:
3533* wlandev wlan device structure
3534*
3535* Returns:
3536* nothing
3537*
3538* Side effects:
3539*
3540* Call context:
3541* tasklet
3542----------------------------------------------------------------*/
3543static void hfa384x_int_rx(wlandevice_t *wlandev)
3544{
3545 hfa384x_t *hw = wlandev->priv;
3546 UINT16 rxfid;
3547 hfa384x_rx_frame_t rxdesc;
3548 int result;
3549 int hdrlen;
3550 UINT16 fc;
3551 p80211_rxmeta_t *rxmeta;
3552 struct sk_buff *skb = NULL;
3553 UINT8 *datap;
3554
3555 DBFENTER;
3556
3557 /* Get the FID */
3558 rxfid = hfa384x_getreg(hw, HFA384x_RXFID);
3559 /* Get the descriptor (including headers) */
3560 result = hfa384x_copy_from_bap(hw,
3561 HFA384x_BAP_INT,
3562 rxfid,
3563 0,
3564 &rxdesc,
3565 sizeof(rxdesc));
3566 if ( result ) {
3567 WLAN_LOG_DEBUG(1,
3568 "copy_from_bap(0x%04x, %d, %d) failed, result=0x%x\n",
3569 rxfid,
3570 0,
3571 sizeof(rxdesc),
3572 result);
3573 goto done;
3574 }
3575
3576 /* Byte order convert once up front. */
3577 rxdesc.status = hfa384x2host_16(rxdesc.status);
3578 rxdesc.time = hfa384x2host_32(rxdesc.time);
3579
3580 /* drop errors and whatnot in promisc mode */
3581 if (( wlandev->netdev->flags & IFF_PROMISC ) &&
3582 (HFA384x_RXSTATUS_ISFCSERR(rxdesc.status) ||
3583 HFA384x_RXSTATUS_ISUNDECR(rxdesc.status)))
3584 goto done;
3585
3586 /* Now handle frame based on port# */
3587 switch( HFA384x_RXSTATUS_MACPORT_GET(rxdesc.status) )
3588 {
3589 case 0:
3590
3591 fc = ieee2host16(rxdesc.frame_control);
3592
3593 /* If exclude and we receive an unencrypted, drop it */
3594 if ( (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) &&
3595 !WLAN_GET_FC_ISWEP(fc)) {
3596 goto done;
3597 }
3598
3599 hdrlen = p80211_headerlen(fc);
3600
3601 /* Allocate the buffer, note CRC (aka FCS). pballoc */
3602 /* assumes there needs to be space for one */
3603 skb = dev_alloc_skb(hfa384x2host_16(rxdesc.data_len) + hdrlen + WLAN_CRC_LEN + 2); /* a little extra */
3604
3605 if ( ! skb ) {
3606 WLAN_LOG_ERROR("alloc_skb failed.\n");
3607 goto done;
3608 }
3609
3610 skb->dev = wlandev->netdev;
3611
3612 /* theoretically align the IP header on a 32-bit word. */
3613 if ( hdrlen == WLAN_HDR_A4_LEN )
3614 skb_reserve(skb, 2);
3615
3616 /* Copy the 802.11 hdr to the buffer */
3617 datap = skb_put(skb, WLAN_HDR_A3_LEN);
3618 memcpy(datap, &rxdesc.frame_control, WLAN_HDR_A3_LEN);
3619
3620 /* Snag the A4 address if present */
3621 if (hdrlen == WLAN_HDR_A4_LEN) {
3622 datap = skb_put(skb, WLAN_ADDR_LEN);
3623 memcpy(datap, &rxdesc.address4, WLAN_HDR_A3_LEN);
3624 }
3625
3626 /* we can convert the data_len as we passed the original on */
3627 rxdesc.data_len = hfa384x2host_16(rxdesc.data_len);
3628
3629 /* Copy the payload data to the buffer */
3630 if ( rxdesc.data_len > 0 ) {
3631 datap = skb_put(skb, rxdesc.data_len);
3632 result = hfa384x_copy_from_bap(hw,
3633 HFA384x_BAP_INT, rxfid, HFA384x_RX_DATA_OFF,
3634 datap, rxdesc.data_len);
3635 if ( result ) {
3636 WLAN_LOG_DEBUG(1,
3637 "copy_from_bap(0x%04x, %d, %d) failed, result=0x%x\n",
3638 rxfid,
3639 HFA384x_RX_DATA_OFF,
3640 rxdesc.data_len,
3641 result);
3642 goto failed;
3643 }
3644 }
3645 /* the prism2 cards don't return the FCS */
3646 datap = skb_put(skb, WLAN_CRC_LEN);
3647 memset (datap, 0xff, WLAN_CRC_LEN);
3648 skb_reset_mac_header(skb);
3649
3650 /* Attach the rxmeta, set some stuff */
3651 p80211skb_rxmeta_attach(wlandev, skb);
3652 rxmeta = P80211SKB_RXMETA(skb);
3653 rxmeta->mactime = rxdesc.time;
3654 rxmeta->rxrate = rxdesc.rate;
3655 rxmeta->signal = rxdesc.signal - hw->dbmadjust;
3656 rxmeta->noise = rxdesc.silence - hw->dbmadjust;
3657
3658 prism2sta_ev_rx(wlandev, skb);
3659 goto done;
3660 case 7:
3661
3662 if ( ! HFA384x_RXSTATUS_ISFCSERR(rxdesc.status) ) {
3663 hfa384x_int_rxmonitor( wlandev, rxfid, &rxdesc);
3664 } else {
3665 WLAN_LOG_DEBUG(3,"Received monitor frame: FCSerr set\n");
3666 }
3667 goto done;
3668
3669 default:
3670
3671 WLAN_LOG_WARNING("Received frame on unsupported port=%d\n",
3672 HFA384x_RXSTATUS_MACPORT_GET(rxdesc.status) );
3673 goto done;
3674 }
3675
3676 failed:
3677 dev_kfree_skb(skb);
3678
3679 done:
3680 DBFEXIT;
3681 return;
3682}
3683
3684
3685/*----------------------------------------------------------------
3686* hfa384x_int_rxmonitor
3687*
3688* Helper function for int_rx. Handles monitor frames.
3689* Note that this function allocates space for the FCS and sets it
3690* to 0xffffffff. The hfa384x doesn't give us the FCS value but the
3691* higher layers expect it. 0xffffffff is used as a flag to indicate
3692* the FCS is bogus.
3693*
3694* Arguments:
3695* wlandev wlan device structure
3696* rxfid received FID
3697* rxdesc rx descriptor read from card in int_rx
3698*
3699* Returns:
3700* nothing
3701*
3702* Side effects:
3703* Allocates an skb and passes it up via the PF_PACKET interface.
3704* Call context:
3705* interrupt
3706----------------------------------------------------------------*/
3707static void hfa384x_int_rxmonitor( wlandevice_t *wlandev, UINT16 rxfid,
3708 hfa384x_rx_frame_t *rxdesc)
3709{
3710 hfa384x_t *hw = wlandev->priv;
3711 UINT hdrlen = 0;
3712 UINT datalen = 0;
3713 UINT skblen = 0;
3714 UINT truncated = 0;
3715 UINT8 *datap;
3716 UINT16 fc;
3717 struct sk_buff *skb;
3718
3719 DBFENTER;
3720 /* Don't forget the status, time, and data_len fields are in host order */
3721 /* Figure out how big the frame is */
3722 fc = ieee2host16(rxdesc->frame_control);
3723 hdrlen = p80211_headerlen(fc);
3724 datalen = hfa384x2host_16(rxdesc->data_len);
3725
3726 /* Allocate an ind message+framesize skb */
3727 skblen = sizeof(p80211msg_lnxind_wlansniffrm_t) +
3728 hdrlen + datalen + WLAN_CRC_LEN;
3729
3730 /* sanity check the length */
3731 if ( skblen >
3732 (sizeof(p80211msg_lnxind_wlansniffrm_t) +
3733 WLAN_HDR_A4_LEN + WLAN_DATA_MAXLEN + WLAN_CRC_LEN) ) {
3734 WLAN_LOG_DEBUG(1, "overlen frm: len=%d\n",
3735 skblen - sizeof(p80211msg_lnxind_wlansniffrm_t));
3736 }
3737
3738 if ( (skb = dev_alloc_skb(skblen)) == NULL ) {
3739 WLAN_LOG_ERROR("alloc_skb failed trying to allocate %d bytes\n", skblen);
3740 return;
3741 }
3742
3743 /* only prepend the prism header if in the right mode */
3744 if ((wlandev->netdev->type == ARPHRD_IEEE80211_PRISM) &&
3745 (hw->sniffhdr == 0)) {
3746 p80211msg_lnxind_wlansniffrm_t *msg;
3747 datap = skb_put(skb, sizeof(p80211msg_lnxind_wlansniffrm_t));
3748 msg = (p80211msg_lnxind_wlansniffrm_t*) datap;
3749
3750 /* Initialize the message members */
3751 msg->msgcode = DIDmsg_lnxind_wlansniffrm;
3752 msg->msglen = sizeof(p80211msg_lnxind_wlansniffrm_t);
3753 strcpy(msg->devname, wlandev->name);
3754
3755 msg->hosttime.did = DIDmsg_lnxind_wlansniffrm_hosttime;
3756 msg->hosttime.status = 0;
3757 msg->hosttime.len = 4;
3758 msg->hosttime.data = jiffies;
3759
3760 msg->mactime.did = DIDmsg_lnxind_wlansniffrm_mactime;
3761 msg->mactime.status = 0;
3762 msg->mactime.len = 4;
3763 msg->mactime.data = rxdesc->time * 1000;
3764
3765 msg->channel.did = DIDmsg_lnxind_wlansniffrm_channel;
3766 msg->channel.status = 0;
3767 msg->channel.len = 4;
3768 msg->channel.data = hw->sniff_channel;
3769
3770 msg->rssi.did = DIDmsg_lnxind_wlansniffrm_rssi;
3771 msg->rssi.status = P80211ENUM_msgitem_status_no_value;
3772 msg->rssi.len = 4;
3773 msg->rssi.data = 0;
3774
3775 msg->sq.did = DIDmsg_lnxind_wlansniffrm_sq;
3776 msg->sq.status = P80211ENUM_msgitem_status_no_value;
3777 msg->sq.len = 4;
3778 msg->sq.data = 0;
3779
3780 msg->signal.did = DIDmsg_lnxind_wlansniffrm_signal;
3781 msg->signal.status = 0;
3782 msg->signal.len = 4;
3783 msg->signal.data = rxdesc->signal;
3784
3785 msg->noise.did = DIDmsg_lnxind_wlansniffrm_noise;
3786 msg->noise.status = 0;
3787 msg->noise.len = 4;
3788 msg->noise.data = rxdesc->silence;
3789
3790 msg->rate.did = DIDmsg_lnxind_wlansniffrm_rate;
3791 msg->rate.status = 0;
3792 msg->rate.len = 4;
3793 msg->rate.data = rxdesc->rate / 5; /* set to 802.11 units */
3794
3795 msg->istx.did = DIDmsg_lnxind_wlansniffrm_istx;
3796 msg->istx.status = 0;
3797 msg->istx.len = 4;
3798 msg->istx.data = P80211ENUM_truth_false;
3799
3800 msg->frmlen.did = DIDmsg_lnxind_wlansniffrm_frmlen;
3801 msg->frmlen.status = 0;
3802 msg->frmlen.len = 4;
3803 msg->frmlen.data = hdrlen + datalen + WLAN_CRC_LEN;
3804 } else if ((wlandev->netdev->type == ARPHRD_IEEE80211_PRISM) &&
3805 (hw->sniffhdr != 0)) {
3806 p80211_caphdr_t *caphdr;
3807 /* The NEW header format! */
3808 datap = skb_put(skb, sizeof(p80211_caphdr_t));
3809 caphdr = (p80211_caphdr_t*) datap;
3810
3811 caphdr->version = htonl(P80211CAPTURE_VERSION);
3812 caphdr->length = htonl(sizeof(p80211_caphdr_t));
3813 caphdr->mactime = __cpu_to_be64(rxdesc->time);
3814 caphdr->hosttime = __cpu_to_be64(jiffies);
3815 caphdr->phytype = htonl(4); /* dss_dot11_b */
3816 caphdr->channel = htonl(hw->sniff_channel);
3817 caphdr->datarate = htonl(rxdesc->rate);
3818 caphdr->antenna = htonl(0); /* unknown */
3819 caphdr->priority = htonl(0); /* unknown */
3820 caphdr->ssi_type = htonl(3); /* rssi_raw */
3821 caphdr->ssi_signal = htonl(rxdesc->signal);
3822 caphdr->ssi_noise = htonl(rxdesc->silence);
3823 caphdr->preamble = htonl(0); /* unknown */
3824 caphdr->encoding = htonl(1); /* cck */
3825 }
3826 /* Copy the 802.11 header to the skb (ctl frames may be less than a full header) */
3827 datap = skb_put(skb, hdrlen);
3828 memcpy( datap, &(rxdesc->frame_control), hdrlen);
3829
3830 /* If any, copy the data from the card to the skb */
3831 if ( datalen > 0 )
3832 {
3833 /* Truncate the packet if the user wants us to */
3834 UINT dataread = datalen;
3835 if(hw->sniff_truncate > 0 && dataread > hw->sniff_truncate) {
3836 dataread = hw->sniff_truncate;
3837 truncated = 1;
3838 }
3839
3840 datap = skb_put(skb, dataread);
3841 hfa384x_copy_from_bap(hw,
3842 HFA384x_BAP_INT, rxfid, HFA384x_RX_DATA_OFF,
3843 datap, dataread);
3844
3845 /* check for unencrypted stuff if WEP bit set. */
3846 if (*(datap - hdrlen + 1) & 0x40) // wep set
3847 if ((*(datap) == 0xaa) && (*(datap+1) == 0xaa))
3848 *(datap - hdrlen + 1) &= 0xbf; // clear wep; it's the 802.2 header!
3849 }
3850
3851 if (!truncated && hw->sniff_fcs) {
3852 /* Set the FCS */
3853 datap = skb_put(skb, WLAN_CRC_LEN);
3854 memset( datap, 0xff, WLAN_CRC_LEN);
3855 }
3856
3857 /* pass it back up */
3858 prism2sta_ev_rx(wlandev, skb);
3859
3860 DBFEXIT;
3861 return;
3862}
3863
3864/*----------------------------------------------------------------
3865* hfa384x_int_alloc
3866*
3867* Handles the Alloc event.
3868*
3869* Arguments:
3870* wlandev wlan device structure
3871*
3872* Returns:
3873* nothing
3874*
3875* Side effects:
3876*
3877* Call context:
3878* interrupt
3879----------------------------------------------------------------*/
3880static void hfa384x_int_alloc(wlandevice_t *wlandev)
3881{
3882 hfa384x_t *hw = wlandev->priv;
3883 UINT16 fid;
3884 INT16 result;
3885
3886 DBFENTER;
3887
3888 /* Handle the reclaimed FID */
3889 /* collect the FID and push it onto the stack */
3890 fid = hfa384x_getreg(hw, HFA384x_ALLOCFID);
3891
3892 if ( fid != hw->infofid ) { /* It's a transmit fid */
3893 WLAN_LOG_DEBUG(5, "int_alloc(%#x)\n", fid);
3894 result = txfid_queue_add(hw, fid);
3895 if (result != -1) {
3896 prism2sta_ev_alloc(wlandev);
3897 WLAN_LOG_DEBUG(5, "q_add.\n");
3898 } else {
3899 WLAN_LOG_DEBUG(5, "q_full.\n");
3900 }
3901 } else {
3902 /* unlock the info fid */
3903 up(&hw->infofid_sem);
3904 }
3905
3906 DBFEXIT;
3907 return;
3908}
3909
3910
3911/*----------------------------------------------------------------
3912* hfa384x_drvr_handover
3913*
3914* Sends a handover notification to the MAC.
3915*
3916* Arguments:
3917* hw device structure
3918* addr address of station that's left
3919*
3920* Returns:
3921* zero success.
3922* -ERESTARTSYS received signal while waiting for semaphore.
3923* -EIO failed to write to bap, or failed in cmd.
3924*
3925* Side effects:
3926*
3927* Call context:
3928* process thread, NOTE: this call may block on a semaphore!
3929----------------------------------------------------------------*/
3930int hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr)
3931{
3932 int result = 0;
3933 hfa384x_HandoverAddr_t rec;
3934 UINT len;
3935 DBFENTER;
3936
3937 /* Acquire the infofid */
3938 if ( down_interruptible(&hw->infofid_sem) ) {
3939 result = -ERESTARTSYS;
3940 goto failed;
3941 }
3942
3943 /* Set up the record */
3944 len = sizeof(hfa384x_HandoverAddr_t);
3945 rec.framelen = host2hfa384x_16(len/2 - 1);
3946 rec.infotype = host2hfa384x_16(HFA384x_IT_HANDOVERADDR);
3947 memcpy(rec.handover_addr, addr, sizeof(rec.handover_addr));
3948
3949 /* Issue the command */
3950 result = hfa384x_cmd_notify(hw, 1, hw->infofid, &rec, len);
3951
3952 if ( result != 0 ) {
3953 WLAN_LOG_DEBUG(1,"cmd_notify(%04x) failed, result=%d",
3954 hw->infofid, result);
3955 result = -EIO;
3956 goto failed;
3957 }
3958
3959failed:
3960 DBFEXIT;
3961 return result;
3962}
3963
3964void hfa384x_tx_timeout(wlandevice_t *wlandev)
3965{
3966 DBFENTER;
3967
3968 WLAN_LOG_WARNING("Implement me.\n");
3969
3970 DBFEXIT;
3971}
3972
3973/* Handles all "rx" BAP operations */
3974static void hfa384x_bap_tasklet(unsigned long data)
3975{
3976 hfa384x_t *hw = (hfa384x_t *) data;
3977 wlandevice_t *wlandev = hw->wlandev;
3978 int counter = prism2_irq_evread_max;
3979 int reg;
3980
3981 DBFENTER;
3982
3983 while (counter-- > 0) {
3984 /* Get interrupt register */
3985 reg = hfa384x_getreg(hw, HFA384x_EVSTAT);
3986
3987 if ((reg == 0xffff) ||
3988 !(reg & HFA384x_INT_BAP_OP)) {
3989 break;
3990 }
3991
3992 if ( HFA384x_EVSTAT_ISINFO(reg) ){
3993 hfa384x_int_info(wlandev);
3994 hfa384x_setreg(hw, HFA384x_EVACK_INFO_SET(1),
3995 HFA384x_EVACK);
3996 }
3997 if ( HFA384x_EVSTAT_ISTXEXC(reg) ){
3998 hfa384x_int_txexc(wlandev);
3999 hfa384x_setreg(hw, HFA384x_EVACK_TXEXC_SET(1),
4000 HFA384x_EVACK);
4001 }
4002 if ( HFA384x_EVSTAT_ISTX(reg) ){
4003 hfa384x_int_tx(wlandev);
4004 hfa384x_setreg(hw, HFA384x_EVACK_TX_SET(1),
4005 HFA384x_EVACK);
4006 }
4007 if ( HFA384x_EVSTAT_ISRX(reg) ){
4008 hfa384x_int_rx(wlandev);
4009 hfa384x_setreg(hw, HFA384x_EVACK_RX_SET(1),
4010 HFA384x_EVACK);
4011 }
4012 }
4013
4014 /* re-enable interrupts */
4015 hfa384x_events_all(hw);
4016
4017 DBFEXIT;
4018}
diff --git a/drivers/staging/wlan-ng/hfa384x.h b/drivers/staging/wlan-ng/hfa384x.h
new file mode 100644
index 00000000000..a2054639d24
--- /dev/null
+++ b/drivers/staging/wlan-ng/hfa384x.h
@@ -0,0 +1,3067 @@
1/* hfa384x.h
2*
3* Defines the constants and data structures for the hfa384x
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* [Implementation and usage notes]
48*
49* [References]
50* CW10 Programmer's Manual v1.5
51* IEEE 802.11 D10.0
52*
53* --------------------------------------------------------------------
54*/
55
56#ifndef _HFA384x_H
57#define _HFA384x_H
58
59/*=============================================================*/
60#define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
61
62#define HFA384x_LEVEL_TO_dBm(v) (0x100 + (v) * 100 / 255 - 100)
63
64/*------ Constants --------------------------------------------*/
65/*--- Mins & Maxs -----------------------------------*/
66#define HFA384x_CMD_ALLOC_LEN_MIN ((UINT16)4)
67#define HFA384x_CMD_ALLOC_LEN_MAX ((UINT16)2400)
68#define HFA384x_BAP_DATALEN_MAX ((UINT16)4096)
69#define HFA384x_BAP_OFFSET_MAX ((UINT16)4096)
70#define HFA384x_PORTID_MAX ((UINT16)7)
71#define HFA384x_NUMPORTS_MAX ((UINT16)(HFA384x_PORTID_MAX+1))
72#define HFA384x_PDR_LEN_MAX ((UINT16)512) /* in bytes, from EK */
73#define HFA384x_PDA_RECS_MAX ((UINT16)200) /* a guess */
74#define HFA384x_PDA_LEN_MAX ((UINT16)1024) /* in bytes, from EK */
75#define HFA384x_SCANRESULT_MAX ((UINT16)31)
76#define HFA384x_HSCANRESULT_MAX ((UINT16)31)
77#define HFA384x_CHINFORESULT_MAX ((UINT16)16)
78#define HFA384x_DRVR_FIDSTACKLEN_MAX (10)
79#define HFA384x_DRVR_TXBUF_MAX (sizeof(hfa384x_tx_frame_t) + \
80 WLAN_DATA_MAXLEN - \
81 WLAN_WEP_IV_LEN - \
82 WLAN_WEP_ICV_LEN + 2)
83#define HFA384x_DRVR_MAGIC (0x4a2d)
84#define HFA384x_INFODATA_MAXLEN (sizeof(hfa384x_infodata_t))
85#define HFA384x_INFOFRM_MAXLEN (sizeof(hfa384x_InfFrame_t))
86#define HFA384x_RID_GUESSING_MAXLEN 2048 /* I'm not really sure */
87#define HFA384x_RIDDATA_MAXLEN HFA384x_RID_GUESSING_MAXLEN
88#define HFA384x_USB_RWMEM_MAXLEN 2048
89
90/*--- Support Constants -----------------------------*/
91#define HFA384x_BAP_PROC ((UINT16)0)
92#define HFA384x_BAP_INT ((UINT16)1)
93#define HFA384x_PORTTYPE_IBSS ((UINT16)0)
94#define HFA384x_PORTTYPE_BSS ((UINT16)1)
95#define HFA384x_PORTTYPE_WDS ((UINT16)2)
96#define HFA384x_PORTTYPE_PSUEDOIBSS ((UINT16)3)
97#define HFA384x_PORTTYPE_HOSTAP ((UINT16)6)
98#define HFA384x_WEPFLAGS_PRIVINVOKED ((UINT16)BIT0)
99#define HFA384x_WEPFLAGS_EXCLUDE ((UINT16)BIT1)
100#define HFA384x_WEPFLAGS_DISABLE_TXCRYPT ((UINT16)BIT4)
101#define HFA384x_WEPFLAGS_DISABLE_RXCRYPT ((UINT16)BIT7)
102#define HFA384x_WEPFLAGS_DISALLOW_MIXED ((UINT16)BIT11)
103#define HFA384x_WEPFLAGS_IV_INTERVAL1 ((UINT16)0)
104#define HFA384x_WEPFLAGS_IV_INTERVAL10 ((UINT16)BIT5)
105#define HFA384x_WEPFLAGS_IV_INTERVAL50 ((UINT16)BIT6)
106#define HFA384x_WEPFLAGS_IV_INTERVAL100 ((UINT16)(BIT5 | BIT6))
107#define HFA384x_WEPFLAGS_FIRMWARE_WPA ((UINT16)BIT8)
108#define HFA384x_WEPFLAGS_HOST_MIC ((UINT16)BIT9)
109#define HFA384x_ROAMMODE_FWSCAN_FWROAM ((UINT16)1)
110#define HFA384x_ROAMMODE_FWSCAN_HOSTROAM ((UINT16)2)
111#define HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM ((UINT16)3)
112#define HFA384x_PORTSTATUS_DISABLED ((UINT16)1)
113#define HFA384x_PORTSTATUS_INITSRCH ((UINT16)2)
114#define HFA384x_PORTSTATUS_CONN_IBSS ((UINT16)3)
115#define HFA384x_PORTSTATUS_CONN_ESS ((UINT16)4)
116#define HFA384x_PORTSTATUS_OOR_ESS ((UINT16)5)
117#define HFA384x_PORTSTATUS_CONN_WDS ((UINT16)6)
118#define HFA384x_PORTSTATUS_HOSTAP ((UINT16)8)
119#define HFA384x_RATEBIT_1 ((UINT16)1)
120#define HFA384x_RATEBIT_2 ((UINT16)2)
121#define HFA384x_RATEBIT_5dot5 ((UINT16)4)
122#define HFA384x_RATEBIT_11 ((UINT16)8)
123
124/*--- Just some symbolic names for legibility -------*/
125#define HFA384x_TXCMD_NORECL ((UINT16)0)
126#define HFA384x_TXCMD_RECL ((UINT16)1)
127
128/*--- MAC Internal memory constants and macros ------*/
129/* masks and macros used to manipulate MAC internal memory addresses. */
130/* MAC internal memory addresses are 23 bit quantities. The MAC uses
131 * a paged address space where the upper 16 bits are the page number
132 * and the lower 7 bits are the offset. There are various Host API
133 * elements that require two 16-bit quantities to specify a MAC
134 * internal memory address. Unfortunately, some of the API's use a
135 * page/offset format where the offset value is JUST the lower seven
136 * bits and the page is the remaining 16 bits. Some of the API's
137 * assume that the 23 bit address has been split at the 16th bit. We
138 * refer to these two formats as AUX format and CMD format. The
139 * macros below help handle some of this.
140 */
141
142/* Handy constant */
143#define HFA384x_ADDR_AUX_OFF_MAX ((UINT16)0x007f)
144
145/* Mask bits for discarding unwanted pieces in a flat address */
146#define HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80)
147#define HFA384x_ADDR_FLAT_AUX_OFF_MASK (0x0000007f)
148#define HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000)
149#define HFA384x_ADDR_FLAT_CMD_OFF_MASK (0x0000ffff)
150
151/* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */
152#define HFA384x_ADDR_AUX_PAGE_MASK (0xffff)
153#define HFA384x_ADDR_AUX_OFF_MASK (0x007f)
154
155/* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */
156#define HFA384x_ADDR_CMD_PAGE_MASK (0x007f)
157#define HFA384x_ADDR_CMD_OFF_MASK (0xffff)
158
159/* Make a 32-bit flat address from AUX format 16-bit page and offset */
160#define HFA384x_ADDR_AUX_MKFLAT(p,o) \
161 (((UINT32)(((UINT16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \
162 ((UINT32)(((UINT16)(o))&HFA384x_ADDR_AUX_OFF_MASK))
163
164/* Make a 32-bit flat address from CMD format 16-bit page and offset */
165#define HFA384x_ADDR_CMD_MKFLAT(p,o) \
166 (((UINT32)(((UINT16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \
167 ((UINT32)(((UINT16)(o))&HFA384x_ADDR_CMD_OFF_MASK))
168
169/* Make AUX format offset and page from a 32-bit flat address */
170#define HFA384x_ADDR_AUX_MKPAGE(f) \
171 ((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7))
172#define HFA384x_ADDR_AUX_MKOFF(f) \
173 ((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK))
174
175/* Make CMD format offset and page from a 32-bit flat address */
176#define HFA384x_ADDR_CMD_MKPAGE(f) \
177 ((UINT16)((((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16))
178#define HFA384x_ADDR_CMD_MKOFF(f) \
179 ((UINT16)(((UINT32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK))
180
181/*--- Aux register masks/tests ----------------------*/
182/* Some of the upper bits of the AUX offset register are used to */
183/* select address space. */
184#define HFA384x_AUX_CTL_EXTDS (0x00)
185#define HFA384x_AUX_CTL_NV (0x01)
186#define HFA384x_AUX_CTL_PHY (0x02)
187#define HFA384x_AUX_CTL_ICSRAM (0x03)
188
189/* Make AUX register offset and page values from a flat address */
190#define HFA384x_AUX_MKOFF(f, c) \
191 (HFA384x_ADDR_AUX_MKOFF(f) | (((UINT16)(c))<<12))
192#define HFA384x_AUX_MKPAGE(f) HFA384x_ADDR_AUX_MKPAGE(f)
193
194
195/*--- Controller Memory addresses -------------------*/
196#define HFA3842_PDA_BASE (0x007f0000UL)
197#define HFA3841_PDA_BASE (0x003f0000UL)
198#define HFA3841_PDA_BOGUS_BASE (0x00390000UL)
199
200/*--- Driver Download states -----------------------*/
201#define HFA384x_DLSTATE_DISABLED 0
202#define HFA384x_DLSTATE_RAMENABLED 1
203#define HFA384x_DLSTATE_FLASHENABLED 2
204#define HFA384x_DLSTATE_FLASHWRITTEN 3
205#define HFA384x_DLSTATE_FLASHWRITEPENDING 4
206#define HFA384x_DLSTATE_GENESIS 5
207
208/*--- Register I/O offsets --------------------------*/
209#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
210
211#define HFA384x_CMD_OFF (0x00)
212#define HFA384x_PARAM0_OFF (0x02)
213#define HFA384x_PARAM1_OFF (0x04)
214#define HFA384x_PARAM2_OFF (0x06)
215#define HFA384x_STATUS_OFF (0x08)
216#define HFA384x_RESP0_OFF (0x0A)
217#define HFA384x_RESP1_OFF (0x0C)
218#define HFA384x_RESP2_OFF (0x0E)
219#define HFA384x_INFOFID_OFF (0x10)
220#define HFA384x_RXFID_OFF (0x20)
221#define HFA384x_ALLOCFID_OFF (0x22)
222#define HFA384x_TXCOMPLFID_OFF (0x24)
223#define HFA384x_SELECT0_OFF (0x18)
224#define HFA384x_OFFSET0_OFF (0x1C)
225#define HFA384x_DATA0_OFF (0x36)
226#define HFA384x_SELECT1_OFF (0x1A)
227#define HFA384x_OFFSET1_OFF (0x1E)
228#define HFA384x_DATA1_OFF (0x38)
229#define HFA384x_EVSTAT_OFF (0x30)
230#define HFA384x_INTEN_OFF (0x32)
231#define HFA384x_EVACK_OFF (0x34)
232#define HFA384x_CONTROL_OFF (0x14)
233#define HFA384x_SWSUPPORT0_OFF (0x28)
234#define HFA384x_SWSUPPORT1_OFF (0x2A)
235#define HFA384x_SWSUPPORT2_OFF (0x2C)
236#define HFA384x_AUXPAGE_OFF (0x3A)
237#define HFA384x_AUXOFFSET_OFF (0x3C)
238#define HFA384x_AUXDATA_OFF (0x3E)
239
240#elif (WLAN_HOSTIF == WLAN_PCI || WLAN_HOSTIF == WLAN_USB)
241
242#define HFA384x_CMD_OFF (0x00)
243#define HFA384x_PARAM0_OFF (0x04)
244#define HFA384x_PARAM1_OFF (0x08)
245#define HFA384x_PARAM2_OFF (0x0c)
246#define HFA384x_STATUS_OFF (0x10)
247#define HFA384x_RESP0_OFF (0x14)
248#define HFA384x_RESP1_OFF (0x18)
249#define HFA384x_RESP2_OFF (0x1c)
250#define HFA384x_INFOFID_OFF (0x20)
251#define HFA384x_RXFID_OFF (0x40)
252#define HFA384x_ALLOCFID_OFF (0x44)
253#define HFA384x_TXCOMPLFID_OFF (0x48)
254#define HFA384x_SELECT0_OFF (0x30)
255#define HFA384x_OFFSET0_OFF (0x38)
256#define HFA384x_DATA0_OFF (0x6c)
257#define HFA384x_SELECT1_OFF (0x34)
258#define HFA384x_OFFSET1_OFF (0x3c)
259#define HFA384x_DATA1_OFF (0x70)
260#define HFA384x_EVSTAT_OFF (0x60)
261#define HFA384x_INTEN_OFF (0x64)
262#define HFA384x_EVACK_OFF (0x68)
263#define HFA384x_CONTROL_OFF (0x28)
264#define HFA384x_SWSUPPORT0_OFF (0x50)
265#define HFA384x_SWSUPPORT1_OFF (0x54)
266#define HFA384x_SWSUPPORT2_OFF (0x58)
267#define HFA384x_AUXPAGE_OFF (0x74)
268#define HFA384x_AUXOFFSET_OFF (0x78)
269#define HFA384x_AUXDATA_OFF (0x7c)
270#define HFA384x_PCICOR_OFF (0x4c)
271#define HFA384x_PCIHCR_OFF (0x5c)
272#define HFA384x_PCI_M0_ADDRH_OFF (0x80)
273#define HFA384x_PCI_M0_ADDRL_OFF (0x84)
274#define HFA384x_PCI_M0_LEN_OFF (0x88)
275#define HFA384x_PCI_M0_CTL_OFF (0x8c)
276#define HFA384x_PCI_STATUS_OFF (0x98)
277#define HFA384x_PCI_M1_ADDRH_OFF (0xa0)
278#define HFA384x_PCI_M1_ADDRL_OFF (0xa4)
279#define HFA384x_PCI_M1_LEN_OFF (0xa8)
280#define HFA384x_PCI_M1_CTL_OFF (0xac)
281
282#endif
283
284/*--- Register Field Masks --------------------------*/
285#define HFA384x_CMD_BUSY ((UINT16)BIT15)
286#define HFA384x_CMD_AINFO ((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
287#define HFA384x_CMD_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8))
288#define HFA384x_CMD_RECL ((UINT16)BIT8)
289#define HFA384x_CMD_WRITE ((UINT16)BIT8)
290#define HFA384x_CMD_PROGMODE ((UINT16)(BIT9 | BIT8))
291#define HFA384x_CMD_CMDCODE ((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
292
293#define HFA384x_STATUS_RESULT ((UINT16)(BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8))
294#define HFA384x_STATUS_CMDCODE ((UINT16)(BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0))
295
296#define HFA384x_OFFSET_BUSY ((UINT16)BIT15)
297#define HFA384x_OFFSET_ERR ((UINT16)BIT14)
298#define HFA384x_OFFSET_DATAOFF ((UINT16)(BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1))
299
300#define HFA384x_EVSTAT_TICK ((UINT16)BIT15)
301#define HFA384x_EVSTAT_WTERR ((UINT16)BIT14)
302#define HFA384x_EVSTAT_INFDROP ((UINT16)BIT13)
303#define HFA384x_EVSTAT_INFO ((UINT16)BIT7)
304#define HFA384x_EVSTAT_DTIM ((UINT16)BIT5)
305#define HFA384x_EVSTAT_CMD ((UINT16)BIT4)
306#define HFA384x_EVSTAT_ALLOC ((UINT16)BIT3)
307#define HFA384x_EVSTAT_TXEXC ((UINT16)BIT2)
308#define HFA384x_EVSTAT_TX ((UINT16)BIT1)
309#define HFA384x_EVSTAT_RX ((UINT16)BIT0)
310
311#define HFA384x_INT_BAP_OP (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC)
312
313#define HFA384x_INT_NORMAL (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC|HFA384x_EVSTAT_INFDROP|HFA384x_EVSTAT_ALLOC|HFA384x_EVSTAT_DTIM)
314
315#define HFA384x_INTEN_TICK ((UINT16)BIT15)
316#define HFA384x_INTEN_WTERR ((UINT16)BIT14)
317#define HFA384x_INTEN_INFDROP ((UINT16)BIT13)
318#define HFA384x_INTEN_INFO ((UINT16)BIT7)
319#define HFA384x_INTEN_DTIM ((UINT16)BIT5)
320#define HFA384x_INTEN_CMD ((UINT16)BIT4)
321#define HFA384x_INTEN_ALLOC ((UINT16)BIT3)
322#define HFA384x_INTEN_TXEXC ((UINT16)BIT2)
323#define HFA384x_INTEN_TX ((UINT16)BIT1)
324#define HFA384x_INTEN_RX ((UINT16)BIT0)
325
326#define HFA384x_EVACK_TICK ((UINT16)BIT15)
327#define HFA384x_EVACK_WTERR ((UINT16)BIT14)
328#define HFA384x_EVACK_INFDROP ((UINT16)BIT13)
329#define HFA384x_EVACK_INFO ((UINT16)BIT7)
330#define HFA384x_EVACK_DTIM ((UINT16)BIT5)
331#define HFA384x_EVACK_CMD ((UINT16)BIT4)
332#define HFA384x_EVACK_ALLOC ((UINT16)BIT3)
333#define HFA384x_EVACK_TXEXC ((UINT16)BIT2)
334#define HFA384x_EVACK_TX ((UINT16)BIT1)
335#define HFA384x_EVACK_RX ((UINT16)BIT0)
336
337#define HFA384x_CONTROL_AUXEN ((UINT16)(BIT15 | BIT14))
338
339
340/*--- Command Code Constants --------------------------*/
341/*--- Controller Commands --------------------------*/
342#define HFA384x_CMDCODE_INIT ((UINT16)0x00)
343#define HFA384x_CMDCODE_ENABLE ((UINT16)0x01)
344#define HFA384x_CMDCODE_DISABLE ((UINT16)0x02)
345#define HFA384x_CMDCODE_DIAG ((UINT16)0x03)
346
347/*--- Buffer Mgmt Commands --------------------------*/
348#define HFA384x_CMDCODE_ALLOC ((UINT16)0x0A)
349#define HFA384x_CMDCODE_TX ((UINT16)0x0B)
350#define HFA384x_CMDCODE_CLRPRST ((UINT16)0x12)
351
352/*--- Regulate Commands --------------------------*/
353#define HFA384x_CMDCODE_NOTIFY ((UINT16)0x10)
354#define HFA384x_CMDCODE_INQ ((UINT16)0x11)
355
356/*--- Configure Commands --------------------------*/
357#define HFA384x_CMDCODE_ACCESS ((UINT16)0x21)
358#define HFA384x_CMDCODE_DOWNLD ((UINT16)0x22)
359
360/*--- Debugging Commands -----------------------------*/
361#define HFA384x_CMDCODE_MONITOR ((UINT16)(0x38))
362#define HFA384x_MONITOR_ENABLE ((UINT16)(0x0b))
363#define HFA384x_MONITOR_DISABLE ((UINT16)(0x0f))
364
365/*--- Result Codes --------------------------*/
366#define HFA384x_SUCCESS ((UINT16)(0x00))
367#define HFA384x_CARD_FAIL ((UINT16)(0x01))
368#define HFA384x_NO_BUFF ((UINT16)(0x05))
369#define HFA384x_CMD_ERR ((UINT16)(0x7F))
370
371/*--- Programming Modes --------------------------
372 MODE 0: Disable programming
373 MODE 1: Enable volatile memory programming
374 MODE 2: Enable non-volatile memory programming
375 MODE 3: Program non-volatile memory section
376--------------------------------------------------*/
377#define HFA384x_PROGMODE_DISABLE ((UINT16)0x00)
378#define HFA384x_PROGMODE_RAM ((UINT16)0x01)
379#define HFA384x_PROGMODE_NV ((UINT16)0x02)
380#define HFA384x_PROGMODE_NVWRITE ((UINT16)0x03)
381
382/*--- AUX register enable --------------------------*/
383#define HFA384x_AUXPW0 ((UINT16)0xfe01)
384#define HFA384x_AUXPW1 ((UINT16)0xdc23)
385#define HFA384x_AUXPW2 ((UINT16)0xba45)
386
387#define HFA384x_CONTROL_AUX_ISDISABLED ((UINT16)0x0000)
388#define HFA384x_CONTROL_AUX_ISENABLED ((UINT16)0xc000)
389#define HFA384x_CONTROL_AUX_DOENABLE ((UINT16)0x8000)
390#define HFA384x_CONTROL_AUX_DODISABLE ((UINT16)0x4000)
391
392/*--- Record ID Constants --------------------------*/
393/*--------------------------------------------------------------------
394Configuration RIDs: Network Parameters, Static Configuration Entities
395--------------------------------------------------------------------*/
396#define HFA384x_RID_CNFPORTTYPE ((UINT16)0xFC00)
397#define HFA384x_RID_CNFOWNMACADDR ((UINT16)0xFC01)
398#define HFA384x_RID_CNFDESIREDSSID ((UINT16)0xFC02)
399#define HFA384x_RID_CNFOWNCHANNEL ((UINT16)0xFC03)
400#define HFA384x_RID_CNFOWNSSID ((UINT16)0xFC04)
401#define HFA384x_RID_CNFOWNATIMWIN ((UINT16)0xFC05)
402#define HFA384x_RID_CNFSYSSCALE ((UINT16)0xFC06)
403#define HFA384x_RID_CNFMAXDATALEN ((UINT16)0xFC07)
404#define HFA384x_RID_CNFWDSADDR ((UINT16)0xFC08)
405#define HFA384x_RID_CNFPMENABLED ((UINT16)0xFC09)
406#define HFA384x_RID_CNFPMEPS ((UINT16)0xFC0A)
407#define HFA384x_RID_CNFMULTICASTRX ((UINT16)0xFC0B)
408#define HFA384x_RID_CNFMAXSLEEPDUR ((UINT16)0xFC0C)
409#define HFA384x_RID_CNFPMHOLDDUR ((UINT16)0xFC0D)
410#define HFA384x_RID_CNFOWNNAME ((UINT16)0xFC0E)
411#define HFA384x_RID_CNFOWNDTIMPER ((UINT16)0xFC10)
412#define HFA384x_RID_CNFWDSADDR1 ((UINT16)0xFC11)
413#define HFA384x_RID_CNFWDSADDR2 ((UINT16)0xFC12)
414#define HFA384x_RID_CNFWDSADDR3 ((UINT16)0xFC13)
415#define HFA384x_RID_CNFWDSADDR4 ((UINT16)0xFC14)
416#define HFA384x_RID_CNFWDSADDR5 ((UINT16)0xFC15)
417#define HFA384x_RID_CNFWDSADDR6 ((UINT16)0xFC16)
418#define HFA384x_RID_CNFMCASTPMBUFF ((UINT16)0xFC17)
419
420/*--------------------------------------------------------------------
421Configuration RID lengths: Network Params, Static Config Entities
422 This is the length of JUST the DATA part of the RID (does not
423 include the len or code fields)
424--------------------------------------------------------------------*/
425/* TODO: fill in the rest of these */
426#define HFA384x_RID_CNFPORTTYPE_LEN ((UINT16)2)
427#define HFA384x_RID_CNFOWNMACADDR_LEN ((UINT16)6)
428#define HFA384x_RID_CNFDESIREDSSID_LEN ((UINT16)34)
429#define HFA384x_RID_CNFOWNCHANNEL_LEN ((UINT16)2)
430#define HFA384x_RID_CNFOWNSSID_LEN ((UINT16)34)
431#define HFA384x_RID_CNFOWNATIMWIN_LEN ((UINT16)2)
432#define HFA384x_RID_CNFSYSSCALE_LEN ((UINT16)0)
433#define HFA384x_RID_CNFMAXDATALEN_LEN ((UINT16)0)
434#define HFA384x_RID_CNFWDSADDR_LEN ((UINT16)6)
435#define HFA384x_RID_CNFPMENABLED_LEN ((UINT16)0)
436#define HFA384x_RID_CNFPMEPS_LEN ((UINT16)0)
437#define HFA384x_RID_CNFMULTICASTRX_LEN ((UINT16)0)
438#define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((UINT16)0)
439#define HFA384x_RID_CNFPMHOLDDUR_LEN ((UINT16)0)
440#define HFA384x_RID_CNFOWNNAME_LEN ((UINT16)34)
441#define HFA384x_RID_CNFOWNDTIMPER_LEN ((UINT16)0)
442#define HFA384x_RID_CNFWDSADDR1_LEN ((UINT16)6)
443#define HFA384x_RID_CNFWDSADDR2_LEN ((UINT16)6)
444#define HFA384x_RID_CNFWDSADDR3_LEN ((UINT16)6)
445#define HFA384x_RID_CNFWDSADDR4_LEN ((UINT16)6)
446#define HFA384x_RID_CNFWDSADDR5_LEN ((UINT16)6)
447#define HFA384x_RID_CNFWDSADDR6_LEN ((UINT16)6)
448#define HFA384x_RID_CNFMCASTPMBUFF_LEN ((UINT16)0)
449#define HFA384x_RID_CNFAUTHENTICATION_LEN ((UINT16)sizeof(UINT16))
450#define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((UINT16)0)
451
452/*--------------------------------------------------------------------
453Configuration RIDs: Network Parameters, Dynamic Configuration Entities
454--------------------------------------------------------------------*/
455#define HFA384x_RID_GROUPADDR ((UINT16)0xFC80)
456#define HFA384x_RID_CREATEIBSS ((UINT16)0xFC81)
457#define HFA384x_RID_FRAGTHRESH ((UINT16)0xFC82)
458#define HFA384x_RID_RTSTHRESH ((UINT16)0xFC83)
459#define HFA384x_RID_TXRATECNTL ((UINT16)0xFC84)
460#define HFA384x_RID_PROMISCMODE ((UINT16)0xFC85)
461#define HFA384x_RID_FRAGTHRESH0 ((UINT16)0xFC90)
462#define HFA384x_RID_FRAGTHRESH1 ((UINT16)0xFC91)
463#define HFA384x_RID_FRAGTHRESH2 ((UINT16)0xFC92)
464#define HFA384x_RID_FRAGTHRESH3 ((UINT16)0xFC93)
465#define HFA384x_RID_FRAGTHRESH4 ((UINT16)0xFC94)
466#define HFA384x_RID_FRAGTHRESH5 ((UINT16)0xFC95)
467#define HFA384x_RID_FRAGTHRESH6 ((UINT16)0xFC96)
468#define HFA384x_RID_RTSTHRESH0 ((UINT16)0xFC97)
469#define HFA384x_RID_RTSTHRESH1 ((UINT16)0xFC98)
470#define HFA384x_RID_RTSTHRESH2 ((UINT16)0xFC99)
471#define HFA384x_RID_RTSTHRESH3 ((UINT16)0xFC9A)
472#define HFA384x_RID_RTSTHRESH4 ((UINT16)0xFC9B)
473#define HFA384x_RID_RTSTHRESH5 ((UINT16)0xFC9C)
474#define HFA384x_RID_RTSTHRESH6 ((UINT16)0xFC9D)
475#define HFA384x_RID_TXRATECNTL0 ((UINT16)0xFC9E)
476#define HFA384x_RID_TXRATECNTL1 ((UINT16)0xFC9F)
477#define HFA384x_RID_TXRATECNTL2 ((UINT16)0xFCA0)
478#define HFA384x_RID_TXRATECNTL3 ((UINT16)0xFCA1)
479#define HFA384x_RID_TXRATECNTL4 ((UINT16)0xFCA2)
480#define HFA384x_RID_TXRATECNTL5 ((UINT16)0xFCA3)
481#define HFA384x_RID_TXRATECNTL6 ((UINT16)0xFCA4)
482
483/*--------------------------------------------------------------------
484Configuration RID Lengths: Network Param, Dynamic Config Entities
485 This is the length of JUST the DATA part of the RID (does not
486 include the len or code fields)
487--------------------------------------------------------------------*/
488/* TODO: fill in the rest of these */
489#define HFA384x_RID_GROUPADDR_LEN ((UINT16)16 * WLAN_ADDR_LEN)
490#define HFA384x_RID_CREATEIBSS_LEN ((UINT16)0)
491#define HFA384x_RID_FRAGTHRESH_LEN ((UINT16)0)
492#define HFA384x_RID_RTSTHRESH_LEN ((UINT16)0)
493#define HFA384x_RID_TXRATECNTL_LEN ((UINT16)4)
494#define HFA384x_RID_PROMISCMODE_LEN ((UINT16)2)
495#define HFA384x_RID_FRAGTHRESH0_LEN ((UINT16)0)
496#define HFA384x_RID_FRAGTHRESH1_LEN ((UINT16)0)
497#define HFA384x_RID_FRAGTHRESH2_LEN ((UINT16)0)
498#define HFA384x_RID_FRAGTHRESH3_LEN ((UINT16)0)
499#define HFA384x_RID_FRAGTHRESH4_LEN ((UINT16)0)
500#define HFA384x_RID_FRAGTHRESH5_LEN ((UINT16)0)
501#define HFA384x_RID_FRAGTHRESH6_LEN ((UINT16)0)
502#define HFA384x_RID_RTSTHRESH0_LEN ((UINT16)0)
503#define HFA384x_RID_RTSTHRESH1_LEN ((UINT16)0)
504#define HFA384x_RID_RTSTHRESH2_LEN ((UINT16)0)
505#define HFA384x_RID_RTSTHRESH3_LEN ((UINT16)0)
506#define HFA384x_RID_RTSTHRESH4_LEN ((UINT16)0)
507#define HFA384x_RID_RTSTHRESH5_LEN ((UINT16)0)
508#define HFA384x_RID_RTSTHRESH6_LEN ((UINT16)0)
509#define HFA384x_RID_TXRATECNTL0_LEN ((UINT16)0)
510#define HFA384x_RID_TXRATECNTL1_LEN ((UINT16)0)
511#define HFA384x_RID_TXRATECNTL2_LEN ((UINT16)0)
512#define HFA384x_RID_TXRATECNTL3_LEN ((UINT16)0)
513#define HFA384x_RID_TXRATECNTL4_LEN ((UINT16)0)
514#define HFA384x_RID_TXRATECNTL5_LEN ((UINT16)0)
515#define HFA384x_RID_TXRATECNTL6_LEN ((UINT16)0)
516
517/*--------------------------------------------------------------------
518Configuration RIDs: Behavior Parameters
519--------------------------------------------------------------------*/
520#define HFA384x_RID_ITICKTIME ((UINT16)0xFCE0)
521
522/*--------------------------------------------------------------------
523Configuration RID Lengths: Behavior Parameters
524 This is the length of JUST the DATA part of the RID (does not
525 include the len or code fields)
526--------------------------------------------------------------------*/
527#define HFA384x_RID_ITICKTIME_LEN ((UINT16)2)
528
529/*----------------------------------------------------------------------
530Information RIDs: NIC Information
531--------------------------------------------------------------------*/
532#define HFA384x_RID_MAXLOADTIME ((UINT16)0xFD00)
533#define HFA384x_RID_DOWNLOADBUFFER ((UINT16)0xFD01)
534#define HFA384x_RID_PRIIDENTITY ((UINT16)0xFD02)
535#define HFA384x_RID_PRISUPRANGE ((UINT16)0xFD03)
536#define HFA384x_RID_PRI_CFIACTRANGES ((UINT16)0xFD04)
537#define HFA384x_RID_NICSERIALNUMBER ((UINT16)0xFD0A)
538#define HFA384x_RID_NICIDENTITY ((UINT16)0xFD0B)
539#define HFA384x_RID_MFISUPRANGE ((UINT16)0xFD0C)
540#define HFA384x_RID_CFISUPRANGE ((UINT16)0xFD0D)
541#define HFA384x_RID_CHANNELLIST ((UINT16)0xFD10)
542#define HFA384x_RID_REGULATORYDOMAINS ((UINT16)0xFD11)
543#define HFA384x_RID_TEMPTYPE ((UINT16)0xFD12)
544#define HFA384x_RID_CIS ((UINT16)0xFD13)
545#define HFA384x_RID_STAIDENTITY ((UINT16)0xFD20)
546#define HFA384x_RID_STASUPRANGE ((UINT16)0xFD21)
547#define HFA384x_RID_STA_MFIACTRANGES ((UINT16)0xFD22)
548#define HFA384x_RID_STA_CFIACTRANGES ((UINT16)0xFD23)
549#define HFA384x_RID_BUILDSEQ ((UINT16)0xFFFE)
550#define HFA384x_RID_FWID ((UINT16)0xFFFF)
551
552/*----------------------------------------------------------------------
553Information RID Lengths: NIC Information
554 This is the length of JUST the DATA part of the RID (does not
555 include the len or code fields)
556--------------------------------------------------------------------*/
557#define HFA384x_RID_MAXLOADTIME_LEN ((UINT16)0)
558#define HFA384x_RID_DOWNLOADBUFFER_LEN ((UINT16)sizeof(hfa384x_downloadbuffer_t))
559#define HFA384x_RID_PRIIDENTITY_LEN ((UINT16)8)
560#define HFA384x_RID_PRISUPRANGE_LEN ((UINT16)10)
561#define HFA384x_RID_CFIACTRANGES_LEN ((UINT16)10)
562#define HFA384x_RID_NICSERIALNUMBER_LEN ((UINT16)12)
563#define HFA384x_RID_NICIDENTITY_LEN ((UINT16)8)
564#define HFA384x_RID_MFISUPRANGE_LEN ((UINT16)10)
565#define HFA384x_RID_CFISUPRANGE_LEN ((UINT16)10)
566#define HFA384x_RID_CHANNELLIST_LEN ((UINT16)0)
567#define HFA384x_RID_REGULATORYDOMAINS_LEN ((UINT16)12)
568#define HFA384x_RID_TEMPTYPE_LEN ((UINT16)0)
569#define HFA384x_RID_CIS_LEN ((UINT16)480)
570#define HFA384x_RID_STAIDENTITY_LEN ((UINT16)8)
571#define HFA384x_RID_STASUPRANGE_LEN ((UINT16)10)
572#define HFA384x_RID_MFIACTRANGES_LEN ((UINT16)10)
573#define HFA384x_RID_CFIACTRANGES2_LEN ((UINT16)10)
574#define HFA384x_RID_BUILDSEQ_LEN ((UINT16)sizeof(hfa384x_BuildSeq_t))
575#define HFA384x_RID_FWID_LEN ((UINT16)sizeof(hfa384x_FWID_t))
576
577/*--------------------------------------------------------------------
578Information RIDs: MAC Information
579--------------------------------------------------------------------*/
580#define HFA384x_RID_PORTSTATUS ((UINT16)0xFD40)
581#define HFA384x_RID_CURRENTSSID ((UINT16)0xFD41)
582#define HFA384x_RID_CURRENTBSSID ((UINT16)0xFD42)
583#define HFA384x_RID_COMMSQUALITY ((UINT16)0xFD43)
584#define HFA384x_RID_CURRENTTXRATE ((UINT16)0xFD44)
585#define HFA384x_RID_CURRENTBCNINT ((UINT16)0xFD45)
586#define HFA384x_RID_CURRENTSCALETHRESH ((UINT16)0xFD46)
587#define HFA384x_RID_PROTOCOLRSPTIME ((UINT16)0xFD47)
588#define HFA384x_RID_SHORTRETRYLIMIT ((UINT16)0xFD48)
589#define HFA384x_RID_LONGRETRYLIMIT ((UINT16)0xFD49)
590#define HFA384x_RID_MAXTXLIFETIME ((UINT16)0xFD4A)
591#define HFA384x_RID_MAXRXLIFETIME ((UINT16)0xFD4B)
592#define HFA384x_RID_CFPOLLABLE ((UINT16)0xFD4C)
593#define HFA384x_RID_AUTHALGORITHMS ((UINT16)0xFD4D)
594#define HFA384x_RID_PRIVACYOPTIMP ((UINT16)0xFD4F)
595#define HFA384x_RID_DBMCOMMSQUALITY ((UINT16)0xFD51)
596#define HFA384x_RID_CURRENTTXRATE1 ((UINT16)0xFD80)
597#define HFA384x_RID_CURRENTTXRATE2 ((UINT16)0xFD81)
598#define HFA384x_RID_CURRENTTXRATE3 ((UINT16)0xFD82)
599#define HFA384x_RID_CURRENTTXRATE4 ((UINT16)0xFD83)
600#define HFA384x_RID_CURRENTTXRATE5 ((UINT16)0xFD84)
601#define HFA384x_RID_CURRENTTXRATE6 ((UINT16)0xFD85)
602#define HFA384x_RID_OWNMACADDRESS ((UINT16)0xFD86)
603// #define HFA384x_RID_PCFINFO ((UINT16)0xFD87)
604#define HFA384x_RID_SCANRESULTS ((UINT16)0xFD88) // NEW
605#define HFA384x_RID_HOSTSCANRESULTS ((UINT16)0xFD89) // NEW
606#define HFA384x_RID_AUTHENTICATIONUSED ((UINT16)0xFD8A) // NEW
607#define HFA384x_RID_ASSOCIATEFAILURE ((UINT16)0xFD8D) // 1.8.0
608
609/*--------------------------------------------------------------------
610Information RID Lengths: MAC Information
611 This is the length of JUST the DATA part of the RID (does not
612 include the len or code fields)
613--------------------------------------------------------------------*/
614#define HFA384x_RID_PORTSTATUS_LEN ((UINT16)0)
615#define HFA384x_RID_CURRENTSSID_LEN ((UINT16)34)
616#define HFA384x_RID_CURRENTBSSID_LEN ((UINT16)WLAN_BSSID_LEN)
617#define HFA384x_RID_COMMSQUALITY_LEN ((UINT16)sizeof(hfa384x_commsquality_t))
618#define HFA384x_RID_DBMCOMMSQUALITY_LEN ((UINT16)sizeof(hfa384x_dbmcommsquality_t))
619#define HFA384x_RID_CURRENTTXRATE_LEN ((UINT16)0)
620#define HFA384x_RID_CURRENTBCNINT_LEN ((UINT16)0)
621#define HFA384x_RID_STACURSCALETHRESH_LEN ((UINT16)12)
622#define HFA384x_RID_APCURSCALETHRESH_LEN ((UINT16)6)
623#define HFA384x_RID_PROTOCOLRSPTIME_LEN ((UINT16)0)
624#define HFA384x_RID_SHORTRETRYLIMIT_LEN ((UINT16)0)
625#define HFA384x_RID_LONGRETRYLIMIT_LEN ((UINT16)0)
626#define HFA384x_RID_MAXTXLIFETIME_LEN ((UINT16)0)
627#define HFA384x_RID_MAXRXLIFETIME_LEN ((UINT16)0)
628#define HFA384x_RID_CFPOLLABLE_LEN ((UINT16)0)
629#define HFA384x_RID_AUTHALGORITHMS_LEN ((UINT16)4)
630#define HFA384x_RID_PRIVACYOPTIMP_LEN ((UINT16)0)
631#define HFA384x_RID_CURRENTTXRATE1_LEN ((UINT16)0)
632#define HFA384x_RID_CURRENTTXRATE2_LEN ((UINT16)0)
633#define HFA384x_RID_CURRENTTXRATE3_LEN ((UINT16)0)
634#define HFA384x_RID_CURRENTTXRATE4_LEN ((UINT16)0)
635#define HFA384x_RID_CURRENTTXRATE5_LEN ((UINT16)0)
636#define HFA384x_RID_CURRENTTXRATE6_LEN ((UINT16)0)
637#define HFA384x_RID_OWNMACADDRESS_LEN ((UINT16)6)
638#define HFA384x_RID_PCFINFO_LEN ((UINT16)6)
639#define HFA384x_RID_CNFAPPCFINFO_LEN ((UINT16)sizeof(hfa384x_PCFInfo_data_t))
640#define HFA384x_RID_SCANREQUEST_LEN ((UINT16)sizeof(hfa384x_ScanRequest_data_t))
641#define HFA384x_RID_JOINREQUEST_LEN ((UINT16)sizeof(hfa384x_JoinRequest_data_t))
642#define HFA384x_RID_AUTHENTICATESTA_LEN ((UINT16)sizeof(hfa384x_authenticateStation_data_t))
643#define HFA384x_RID_CHANNELINFOREQUEST_LEN ((UINT16)sizeof(hfa384x_ChannelInfoRequest_data_t))
644/*--------------------------------------------------------------------
645Information RIDs: Modem Information
646--------------------------------------------------------------------*/
647#define HFA384x_RID_PHYTYPE ((UINT16)0xFDC0)
648#define HFA384x_RID_CURRENTCHANNEL ((UINT16)0xFDC1)
649#define HFA384x_RID_CURRENTPOWERSTATE ((UINT16)0xFDC2)
650#define HFA384x_RID_CCAMODE ((UINT16)0xFDC3)
651#define HFA384x_RID_SUPPORTEDDATARATES ((UINT16)0xFDC6)
652#define HFA384x_RID_LFOSTATUS ((UINT16)0xFDC7) // 1.7.1
653
654/*--------------------------------------------------------------------
655Information RID Lengths: Modem Information
656 This is the length of JUST the DATA part of the RID (does not
657 include the len or code fields)
658--------------------------------------------------------------------*/
659#define HFA384x_RID_PHYTYPE_LEN ((UINT16)0)
660#define HFA384x_RID_CURRENTCHANNEL_LEN ((UINT16)0)
661#define HFA384x_RID_CURRENTPOWERSTATE_LEN ((UINT16)0)
662#define HFA384x_RID_CCAMODE_LEN ((UINT16)0)
663#define HFA384x_RID_SUPPORTEDDATARATES_LEN ((UINT16)10)
664
665/*--------------------------------------------------------------------
666API ENHANCEMENTS (NOT ALREADY IMPLEMENTED)
667--------------------------------------------------------------------*/
668#define HFA384x_RID_CNFWEPDEFAULTKEYID ((UINT16)0xFC23)
669#define HFA384x_RID_CNFWEPDEFAULTKEY0 ((UINT16)0xFC24)
670#define HFA384x_RID_CNFWEPDEFAULTKEY1 ((UINT16)0xFC25)
671#define HFA384x_RID_CNFWEPDEFAULTKEY2 ((UINT16)0xFC26)
672#define HFA384x_RID_CNFWEPDEFAULTKEY3 ((UINT16)0xFC27)
673#define HFA384x_RID_CNFWEPFLAGS ((UINT16)0xFC28)
674#define HFA384x_RID_CNFWEPKEYMAPTABLE ((UINT16)0xFC29)
675#define HFA384x_RID_CNFAUTHENTICATION ((UINT16)0xFC2A)
676#define HFA384x_RID_CNFMAXASSOCSTATIONS ((UINT16)0xFC2B)
677#define HFA384x_RID_CNFTXCONTROL ((UINT16)0xFC2C)
678#define HFA384x_RID_CNFROAMINGMODE ((UINT16)0xFC2D)
679#define HFA384x_RID_CNFHOSTAUTHASSOC ((UINT16)0xFC2E)
680#define HFA384x_RID_CNFRCVCRCERROR ((UINT16)0xFC30)
681// #define HFA384x_RID_CNFMMLIFE ((UINT16)0xFC31)
682#define HFA384x_RID_CNFALTRETRYCNT ((UINT16)0xFC32)
683#define HFA384x_RID_CNFAPBCNINT ((UINT16)0xFC33)
684#define HFA384x_RID_CNFAPPCFINFO ((UINT16)0xFC34)
685#define HFA384x_RID_CNFSTAPCFINFO ((UINT16)0xFC35)
686#define HFA384x_RID_CNFPRIORITYQUSAGE ((UINT16)0xFC37)
687#define HFA384x_RID_CNFTIMCTRL ((UINT16)0xFC40)
688#define HFA384x_RID_CNFTHIRTY2TALLY ((UINT16)0xFC42)
689#define HFA384x_RID_CNFENHSECURITY ((UINT16)0xFC43)
690#define HFA384x_RID_CNFDBMADJUST ((UINT16)0xFC46) // NEW
691#define HFA384x_RID_CNFWPADATA ((UINT16)0xFC48) // 1.7.0
692#define HFA384x_RID_CNFPROPOGATIONDELAY ((UINT16)0xFC49) // 1.7.6
693#define HFA384x_RID_CNFSHORTPREAMBLE ((UINT16)0xFCB0)
694#define HFA384x_RID_CNFEXCLONGPREAMBLE ((UINT16)0xFCB1)
695#define HFA384x_RID_CNFAUTHRSPTIMEOUT ((UINT16)0xFCB2)
696#define HFA384x_RID_CNFBASICRATES ((UINT16)0xFCB3)
697#define HFA384x_RID_CNFSUPPRATES ((UINT16)0xFCB4)
698#define HFA384x_RID_CNFFALLBACKCTRL ((UINT16)0xFCB5) // NEW
699#define HFA384x_RID_WEPKEYSTATUS ((UINT16)0xFCB6) // NEW
700#define HFA384x_RID_WEPKEYMAPINDEX ((UINT16)0xFCB7) // NEW
701#define HFA384x_RID_BROADCASTKEYID ((UINT16)0xFCB8) // NEW
702#define HFA384x_RID_ENTSECFLAGEYID ((UINT16)0xFCB9) // NEW
703#define HFA384x_RID_CNFPASSIVESCANCTRL ((UINT16)0xFCBA) // NEW STA
704#define HFA384x_RID_CNFWPAHANDLING ((UINT16)0xFCBB) // 1.7.0
705#define HFA384x_RID_MDCCONTROL ((UINT16)0xFCBC) // 1.7.0/1.4.0
706#define HFA384x_RID_MDCCOUNTRY ((UINT16)0xFCBD) // 1.7.0/1.4.0
707#define HFA384x_RID_TXPOWERMAX ((UINT16)0xFCBE) // 1.7.0/1.4.0
708#define HFA384x_RID_CNFLFOENBLED ((UINT16)0xFCBF) // 1.6.3
709#define HFA384x_RID_CAPINFO ((UINT16)0xFCC0) // 1.7.0/1.3.7
710#define HFA384x_RID_LISTENINTERVAL ((UINT16)0xFCC1) // 1.7.0/1.3.7
711#define HFA384x_RID_DIVERSITYENABLED ((UINT16)0xFCC2) // 1.7.0/1.3.7
712#define HFA384x_RID_LED_CONTROL ((UINT16)0xFCC4) // 1.7.6
713#define HFA384x_RID_HFO_DELAY ((UINT16)0xFCC5) // 1.7.6
714#define HFA384x_RID_DISSALOWEDBSSID ((UINT16)0xFCC6) // 1.8.0
715#define HFA384x_RID_SCANREQUEST ((UINT16)0xFCE1)
716#define HFA384x_RID_JOINREQUEST ((UINT16)0xFCE2)
717#define HFA384x_RID_AUTHENTICATESTA ((UINT16)0xFCE3)
718#define HFA384x_RID_CHANNELINFOREQUEST ((UINT16)0xFCE4)
719#define HFA384x_RID_HOSTSCAN ((UINT16)0xFCE5) // NEW STA
720#define HFA384x_RID_ASSOCIATESTA ((UINT16)0xFCE6)
721
722#define HFA384x_RID_CNFWEPDEFAULTKEY_LEN ((UINT16)6)
723#define HFA384x_RID_CNFWEP128DEFAULTKEY_LEN ((UINT16)14)
724#define HFA384x_RID_CNFPRIOQUSAGE_LEN ((UINT16)4)
725/*--------------------------------------------------------------------
726PD Record codes
727--------------------------------------------------------------------*/
728#define HFA384x_PDR_PCB_PARTNUM ((UINT16)0x0001)
729#define HFA384x_PDR_PDAVER ((UINT16)0x0002)
730#define HFA384x_PDR_NIC_SERIAL ((UINT16)0x0003)
731#define HFA384x_PDR_MKK_MEASUREMENTS ((UINT16)0x0004)
732#define HFA384x_PDR_NIC_RAMSIZE ((UINT16)0x0005)
733#define HFA384x_PDR_MFISUPRANGE ((UINT16)0x0006)
734#define HFA384x_PDR_CFISUPRANGE ((UINT16)0x0007)
735#define HFA384x_PDR_NICID ((UINT16)0x0008)
736//#define HFA384x_PDR_REFDAC_MEASUREMENTS ((UINT16)0x0010)
737//#define HFA384x_PDR_VGDAC_MEASUREMENTS ((UINT16)0x0020)
738//#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS ((UINT16)0x0030)
739//#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS ((UINT16)0x0040)
740//#define HFA384x_PDR_COREGA_HACK ((UINT16)0x00ff)
741#define HFA384x_PDR_MAC_ADDRESS ((UINT16)0x0101)
742//#define HFA384x_PDR_MKK_CALLNAME ((UINT16)0x0102)
743#define HFA384x_PDR_REGDOMAIN ((UINT16)0x0103)
744#define HFA384x_PDR_ALLOWED_CHANNEL ((UINT16)0x0104)
745#define HFA384x_PDR_DEFAULT_CHANNEL ((UINT16)0x0105)
746//#define HFA384x_PDR_PRIVACY_OPTION ((UINT16)0x0106)
747#define HFA384x_PDR_TEMPTYPE ((UINT16)0x0107)
748//#define HFA384x_PDR_REFDAC_SETUP ((UINT16)0x0110)
749//#define HFA384x_PDR_VGDAC_SETUP ((UINT16)0x0120)
750//#define HFA384x_PDR_LEVEL_COMP_SETUP ((UINT16)0x0130)
751//#define HFA384x_PDR_TRIMDAC_SETUP ((UINT16)0x0140)
752#define HFA384x_PDR_IFR_SETTING ((UINT16)0x0200)
753#define HFA384x_PDR_RFR_SETTING ((UINT16)0x0201)
754#define HFA384x_PDR_HFA3861_BASELINE ((UINT16)0x0202)
755#define HFA384x_PDR_HFA3861_SHADOW ((UINT16)0x0203)
756#define HFA384x_PDR_HFA3861_IFRF ((UINT16)0x0204)
757#define HFA384x_PDR_HFA3861_CHCALSP ((UINT16)0x0300)
758#define HFA384x_PDR_HFA3861_CHCALI ((UINT16)0x0301)
759#define HFA384x_PDR_MAX_TX_POWER ((UINT16)0x0302)
760#define HFA384x_PDR_MASTER_CHAN_LIST ((UINT16)0x0303)
761#define HFA384x_PDR_3842_NIC_CONFIG ((UINT16)0x0400)
762#define HFA384x_PDR_USB_ID ((UINT16)0x0401)
763#define HFA384x_PDR_PCI_ID ((UINT16)0x0402)
764#define HFA384x_PDR_PCI_IFCONF ((UINT16)0x0403)
765#define HFA384x_PDR_PCI_PMCONF ((UINT16)0x0404)
766#define HFA384x_PDR_RFENRGY ((UINT16)0x0406)
767#define HFA384x_PDR_USB_POWER_TYPE ((UINT16)0x0407)
768//#define HFA384x_PDR_UNKNOWN408 ((UINT16)0x0408)
769#define HFA384x_PDR_USB_MAX_POWER ((UINT16)0x0409)
770#define HFA384x_PDR_USB_MANUFACTURER ((UINT16)0x0410)
771#define HFA384x_PDR_USB_PRODUCT ((UINT16)0x0411)
772#define HFA384x_PDR_ANT_DIVERSITY ((UINT16)0x0412)
773#define HFA384x_PDR_HFO_DELAY ((UINT16)0x0413)
774#define HFA384x_PDR_SCALE_THRESH ((UINT16)0x0414)
775
776#define HFA384x_PDR_HFA3861_MANF_TESTSP ((UINT16)0x0900)
777#define HFA384x_PDR_HFA3861_MANF_TESTI ((UINT16)0x0901)
778#define HFA384x_PDR_END_OF_PDA ((UINT16)0x0000)
779
780
781/*=============================================================*/
782/*------ Macros -----------------------------------------------*/
783
784/*--- Register ID macros ------------------------*/
785
786#define HFA384x_CMD HFA384x_CMD_OFF
787#define HFA384x_PARAM0 HFA384x_PARAM0_OFF
788#define HFA384x_PARAM1 HFA384x_PARAM1_OFF
789#define HFA384x_PARAM2 HFA384x_PARAM2_OFF
790#define HFA384x_STATUS HFA384x_STATUS_OFF
791#define HFA384x_RESP0 HFA384x_RESP0_OFF
792#define HFA384x_RESP1 HFA384x_RESP1_OFF
793#define HFA384x_RESP2 HFA384x_RESP2_OFF
794#define HFA384x_INFOFID HFA384x_INFOFID_OFF
795#define HFA384x_RXFID HFA384x_RXFID_OFF
796#define HFA384x_ALLOCFID HFA384x_ALLOCFID_OFF
797#define HFA384x_TXCOMPLFID HFA384x_TXCOMPLFID_OFF
798#define HFA384x_SELECT0 HFA384x_SELECT0_OFF
799#define HFA384x_OFFSET0 HFA384x_OFFSET0_OFF
800#define HFA384x_DATA0 HFA384x_DATA0_OFF
801#define HFA384x_SELECT1 HFA384x_SELECT1_OFF
802#define HFA384x_OFFSET1 HFA384x_OFFSET1_OFF
803#define HFA384x_DATA1 HFA384x_DATA1_OFF
804#define HFA384x_EVSTAT HFA384x_EVSTAT_OFF
805#define HFA384x_INTEN HFA384x_INTEN_OFF
806#define HFA384x_EVACK HFA384x_EVACK_OFF
807#define HFA384x_CONTROL HFA384x_CONTROL_OFF
808#define HFA384x_SWSUPPORT0 HFA384x_SWSUPPORT0_OFF
809#define HFA384x_SWSUPPORT1 HFA384x_SWSUPPORT1_OFF
810#define HFA384x_SWSUPPORT2 HFA384x_SWSUPPORT2_OFF
811#define HFA384x_AUXPAGE HFA384x_AUXPAGE_OFF
812#define HFA384x_AUXOFFSET HFA384x_AUXOFFSET_OFF
813#define HFA384x_AUXDATA HFA384x_AUXDATA_OFF
814#define HFA384x_PCICOR HFA384x_PCICOR_OFF
815#define HFA384x_PCIHCR HFA384x_PCIHCR_OFF
816
817
818/*--- Register Test/Get/Set Field macros ------------------------*/
819
820#define HFA384x_CMD_ISBUSY(value) ((UINT16)(((UINT16)value) & HFA384x_CMD_BUSY))
821#define HFA384x_CMD_AINFO_GET(value) ((UINT16)(((UINT16)(value) & HFA384x_CMD_AINFO) >> 8))
822#define HFA384x_CMD_AINFO_SET(value) ((UINT16)((UINT16)(value) << 8))
823#define HFA384x_CMD_MACPORT_GET(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_MACPORT)))
824#define HFA384x_CMD_MACPORT_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET(value))
825#define HFA384x_CMD_ISRECL(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_RECL)))
826#define HFA384x_CMD_RECL_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET(value))
827#define HFA384x_CMD_QOS_GET(value) ((UINT16((((UINT16)(value))&((UINT16)0x3000)) >> 12))
828#define HFA384x_CMD_QOS_SET(value) ((UINT16)((((UINT16)(value)) << 12) & 0x3000))
829#define HFA384x_CMD_ISWRITE(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_WRITE)))
830#define HFA384x_CMD_WRITE_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value))
831#define HFA384x_CMD_PROGMODE_GET(value) ((UINT16)(HFA384x_CMD_AINFO_GET((UINT16)(value) & HFA384x_CMD_PROGMODE)))
832#define HFA384x_CMD_PROGMODE_SET(value) ((UINT16)HFA384x_CMD_AINFO_SET((UINT16)value))
833#define HFA384x_CMD_CMDCODE_GET(value) ((UINT16)(((UINT16)(value)) & HFA384x_CMD_CMDCODE))
834#define HFA384x_CMD_CMDCODE_SET(value) ((UINT16)(value))
835
836#define HFA384x_STATUS_RESULT_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_STATUS_RESULT) >> 8))
837#define HFA384x_STATUS_RESULT_SET(value) (((UINT16)(value)) << 8)
838#define HFA384x_STATUS_CMDCODE_GET(value) (((UINT16)(value)) & HFA384x_STATUS_CMDCODE)
839#define HFA384x_STATUS_CMDCODE_SET(value) ((UINT16)(value))
840
841#define HFA384x_OFFSET_ISBUSY(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_BUSY))
842#define HFA384x_OFFSET_ISERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_ERR))
843#define HFA384x_OFFSET_DATAOFF_GET(value) ((UINT16)(((UINT16)(value)) & HFA384x_OFFSET_DATAOFF))
844#define HFA384x_OFFSET_DATAOFF_SET(value) ((UINT16)(value))
845
846#define HFA384x_EVSTAT_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TICK))
847#define HFA384x_EVSTAT_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_WTERR))
848#define HFA384x_EVSTAT_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFDROP))
849#define HFA384x_EVSTAT_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_INFO))
850#define HFA384x_EVSTAT_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_DTIM))
851#define HFA384x_EVSTAT_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_CMD))
852#define HFA384x_EVSTAT_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_ALLOC))
853#define HFA384x_EVSTAT_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TXEXC))
854#define HFA384x_EVSTAT_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_TX))
855#define HFA384x_EVSTAT_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVSTAT_RX))
856
857#define HFA384x_EVSTAT_ISBAP_OP(value) ((UINT16)(((UINT16)(value)) & HFA384x_INT_BAP_OP))
858
859#define HFA384x_INTEN_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TICK))
860#define HFA384x_INTEN_TICK_SET(value) ((UINT16)(((UINT16)(value)) << 15))
861#define HFA384x_INTEN_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_WTERR))
862#define HFA384x_INTEN_WTERR_SET(value) ((UINT16)(((UINT16)(value)) << 14))
863#define HFA384x_INTEN_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFDROP))
864#define HFA384x_INTEN_INFDROP_SET(value) ((UINT16)(((UINT16)(value)) << 13))
865#define HFA384x_INTEN_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_INFO))
866#define HFA384x_INTEN_INFO_SET(value) ((UINT16)(((UINT16)(value)) << 7))
867#define HFA384x_INTEN_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_DTIM))
868#define HFA384x_INTEN_DTIM_SET(value) ((UINT16)(((UINT16)(value)) << 5))
869#define HFA384x_INTEN_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_CMD))
870#define HFA384x_INTEN_CMD_SET(value) ((UINT16)(((UINT16)(value)) << 4))
871#define HFA384x_INTEN_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_ALLOC))
872#define HFA384x_INTEN_ALLOC_SET(value) ((UINT16)(((UINT16)(value)) << 3))
873#define HFA384x_INTEN_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TXEXC))
874#define HFA384x_INTEN_TXEXC_SET(value) ((UINT16)(((UINT16)(value)) << 2))
875#define HFA384x_INTEN_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_TX))
876#define HFA384x_INTEN_TX_SET(value) ((UINT16)(((UINT16)(value)) << 1))
877#define HFA384x_INTEN_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_INTEN_RX))
878#define HFA384x_INTEN_RX_SET(value) ((UINT16)(((UINT16)(value)) << 0))
879
880#define HFA384x_EVACK_ISTICK(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TICK))
881#define HFA384x_EVACK_TICK_SET(value) ((UINT16)(((UINT16)(value)) << 15))
882#define HFA384x_EVACK_ISWTERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_WTERR))
883#define HFA384x_EVACK_WTERR_SET(value) ((UINT16)(((UINT16)(value)) << 14))
884#define HFA384x_EVACK_ISINFDROP(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFDROP))
885#define HFA384x_EVACK_INFDROP_SET(value) ((UINT16)(((UINT16)(value)) << 13))
886#define HFA384x_EVACK_ISINFO(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_INFO))
887#define HFA384x_EVACK_INFO_SET(value) ((UINT16)(((UINT16)(value)) << 7))
888#define HFA384x_EVACK_ISDTIM(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_DTIM))
889#define HFA384x_EVACK_DTIM_SET(value) ((UINT16)(((UINT16)(value)) << 5))
890#define HFA384x_EVACK_ISCMD(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_CMD))
891#define HFA384x_EVACK_CMD_SET(value) ((UINT16)(((UINT16)(value)) << 4))
892#define HFA384x_EVACK_ISALLOC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_ALLOC))
893#define HFA384x_EVACK_ALLOC_SET(value) ((UINT16)(((UINT16)(value)) << 3))
894#define HFA384x_EVACK_ISTXEXC(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TXEXC))
895#define HFA384x_EVACK_TXEXC_SET(value) ((UINT16)(((UINT16)(value)) << 2))
896#define HFA384x_EVACK_ISTX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_TX))
897#define HFA384x_EVACK_TX_SET(value) ((UINT16)(((UINT16)(value)) << 1))
898#define HFA384x_EVACK_ISRX(value) ((UINT16)(((UINT16)(value)) & HFA384x_EVACK_RX))
899#define HFA384x_EVACK_RX_SET(value) ((UINT16)(((UINT16)(value)) << 0))
900
901#define HFA384x_CONTROL_AUXEN_SET(value) ((UINT16)(((UINT16)(value)) << 14))
902#define HFA384x_CONTROL_AUXEN_GET(value) ((UINT16)(((UINT16)(value)) >> 14))
903
904/* Byte Order */
905#ifdef __KERNEL__
906#define hfa384x2host_16(n) (__le16_to_cpu((UINT16)(n)))
907#define hfa384x2host_32(n) (__le32_to_cpu((UINT32)(n)))
908#define host2hfa384x_16(n) (__cpu_to_le16((UINT16)(n)))
909#define host2hfa384x_32(n) (__cpu_to_le32((UINT32)(n)))
910#endif
911
912/* Host Maintained State Info */
913#define HFA384x_STATE_PREINIT 0
914#define HFA384x_STATE_INIT 1
915#define HFA384x_STATE_RUNNING 2
916
917/*=============================================================*/
918/*------ Types and their related constants --------------------*/
919
920#define HFA384x_HOSTAUTHASSOC_HOSTAUTH BIT0
921#define HFA384x_HOSTAUTHASSOC_HOSTASSOC BIT1
922
923#define HFA384x_WHAHANDLING_DISABLED 0
924#define HFA384x_WHAHANDLING_PASSTHROUGH BIT1
925
926/*-------------------------------------------------------------*/
927/* Commonly used basic types */
928typedef struct hfa384x_bytestr
929{
930 UINT16 len;
931 UINT8 data[0];
932} __WLAN_ATTRIB_PACK__ hfa384x_bytestr_t;
933
934typedef struct hfa384x_bytestr32
935{
936 UINT16 len;
937 UINT8 data[32];
938} __WLAN_ATTRIB_PACK__ hfa384x_bytestr32_t;
939
940/*--------------------------------------------------------------------
941Configuration Record Structures:
942 Network Parameters, Static Configuration Entities
943--------------------------------------------------------------------*/
944/* Prototype structure: all configuration record structures start with
945these members */
946
947typedef struct hfa384x_record
948{
949 UINT16 reclen;
950 UINT16 rid;
951} __WLAN_ATTRIB_PACK__ hfa384x_rec_t;
952
953typedef struct hfa384x_record16
954{
955 UINT16 reclen;
956 UINT16 rid;
957 UINT16 val;
958} __WLAN_ATTRIB_PACK__ hfa384x_rec16_t;
959
960typedef struct hfa384x_record32
961{
962 UINT16 reclen;
963 UINT16 rid;
964 UINT32 val;
965} __WLAN_ATTRIB_PACK__ hfa384x_rec32;
966
967/*-- Hardware/Firmware Component Information ----------*/
968typedef struct hfa384x_compident
969{
970 UINT16 id;
971 UINT16 variant;
972 UINT16 major;
973 UINT16 minor;
974} __WLAN_ATTRIB_PACK__ hfa384x_compident_t;
975
976typedef struct hfa384x_caplevel
977{
978 UINT16 role;
979 UINT16 id;
980 UINT16 variant;
981 UINT16 bottom;
982 UINT16 top;
983} __WLAN_ATTRIB_PACK__ hfa384x_caplevel_t;
984
985/*-- Configuration Record: cnfPortType --*/
986typedef struct hfa384x_cnfPortType
987{
988 UINT16 cnfPortType;
989} __WLAN_ATTRIB_PACK__ hfa384x_cnfPortType_t;
990
991/*-- Configuration Record: cnfOwnMACAddress --*/
992typedef struct hfa384x_cnfOwnMACAddress
993{
994 UINT8 cnfOwnMACAddress[6];
995} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnMACAddress_t;
996
997/*-- Configuration Record: cnfDesiredSSID --*/
998typedef struct hfa384x_cnfDesiredSSID
999{
1000 UINT8 cnfDesiredSSID[34];
1001} __WLAN_ATTRIB_PACK__ hfa384x_cnfDesiredSSID_t;
1002
1003/*-- Configuration Record: cnfOwnChannel --*/
1004typedef struct hfa384x_cnfOwnChannel
1005{
1006 UINT16 cnfOwnChannel;
1007} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnChannel_t;
1008
1009/*-- Configuration Record: cnfOwnSSID --*/
1010typedef struct hfa384x_cnfOwnSSID
1011{
1012 UINT8 cnfOwnSSID[34];
1013} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnSSID_t;
1014
1015/*-- Configuration Record: cnfOwnATIMWindow --*/
1016typedef struct hfa384x_cnfOwnATIMWindow
1017{
1018 UINT16 cnfOwnATIMWindow;
1019} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnATIMWindow_t;
1020
1021/*-- Configuration Record: cnfSystemScale --*/
1022typedef struct hfa384x_cnfSystemScale
1023{
1024 UINT16 cnfSystemScale;
1025} __WLAN_ATTRIB_PACK__ hfa384x_cnfSystemScale_t;
1026
1027/*-- Configuration Record: cnfMaxDataLength --*/
1028typedef struct hfa384x_cnfMaxDataLength
1029{
1030 UINT16 cnfMaxDataLength;
1031} __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxDataLength_t;
1032
1033/*-- Configuration Record: cnfWDSAddress --*/
1034typedef struct hfa384x_cnfWDSAddress
1035{
1036 UINT8 cnfWDSAddress[6];
1037} __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddress_t;
1038
1039/*-- Configuration Record: cnfPMEnabled --*/
1040typedef struct hfa384x_cnfPMEnabled
1041{
1042 UINT16 cnfPMEnabled;
1043} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEnabled_t;
1044
1045/*-- Configuration Record: cnfPMEPS --*/
1046typedef struct hfa384x_cnfPMEPS
1047{
1048 UINT16 cnfPMEPS;
1049} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMEPS_t;
1050
1051/*-- Configuration Record: cnfMulticastReceive --*/
1052typedef struct hfa384x_cnfMulticastReceive
1053{
1054 UINT16 cnfMulticastReceive;
1055} __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastReceive_t;
1056
1057/*-- Configuration Record: cnfAuthentication --*/
1058#define HFA384x_CNFAUTHENTICATION_OPENSYSTEM 0x0001
1059#define HFA384x_CNFAUTHENTICATION_SHAREDKEY 0x0002
1060#define HFA384x_CNFAUTHENTICATION_LEAP 0x0004
1061
1062/*-- Configuration Record: cnfMaxSleepDuration --*/
1063typedef struct hfa384x_cnfMaxSleepDuration
1064{
1065 UINT16 cnfMaxSleepDuration;
1066} __WLAN_ATTRIB_PACK__ hfa384x_cnfMaxSleepDuration_t;
1067
1068/*-- Configuration Record: cnfPMHoldoverDuration --*/
1069typedef struct hfa384x_cnfPMHoldoverDuration
1070{
1071 UINT16 cnfPMHoldoverDuration;
1072} __WLAN_ATTRIB_PACK__ hfa384x_cnfPMHoldoverDuration_t;
1073
1074/*-- Configuration Record: cnfOwnName --*/
1075typedef struct hfa384x_cnfOwnName
1076{
1077 UINT8 cnfOwnName[34];
1078} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnName_t;
1079
1080/*-- Configuration Record: cnfOwnDTIMPeriod --*/
1081typedef struct hfa384x_cnfOwnDTIMPeriod
1082{
1083 UINT16 cnfOwnDTIMPeriod;
1084} __WLAN_ATTRIB_PACK__ hfa384x_cnfOwnDTIMPeriod_t;
1085
1086/*-- Configuration Record: cnfWDSAddress --*/
1087typedef struct hfa384x_cnfWDSAddressN
1088{
1089 UINT8 cnfWDSAddress[6];
1090} __WLAN_ATTRIB_PACK__ hfa384x_cnfWDSAddressN_t;
1091
1092/*-- Configuration Record: cnfMulticastPMBuffering --*/
1093typedef struct hfa384x_cnfMulticastPMBuffering
1094{
1095 UINT16 cnfMulticastPMBuffering;
1096} __WLAN_ATTRIB_PACK__ hfa384x_cnfMulticastPMBuffering_t;
1097
1098/*--------------------------------------------------------------------
1099Configuration Record Structures:
1100 Network Parameters, Dynamic Configuration Entities
1101--------------------------------------------------------------------*/
1102
1103/*-- Configuration Record: GroupAddresses --*/
1104typedef struct hfa384x_GroupAddresses
1105{
1106 UINT8 MACAddress[16][6];
1107} __WLAN_ATTRIB_PACK__ hfa384x_GroupAddresses_t;
1108
1109/*-- Configuration Record: CreateIBSS --*/
1110typedef struct hfa384x_CreateIBSS
1111{
1112 UINT16 CreateIBSS;
1113} __WLAN_ATTRIB_PACK__ hfa384x_CreateIBSS_t;
1114
1115#define HFA384x_CREATEIBSS_JOINCREATEIBSS 0
1116#define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS 1
1117#define HFA384x_CREATEIBSS_JOINIBSS 2
1118#define HFA384x_CREATEIBSS_JOINESS_JOINIBSS 3
1119
1120/*-- Configuration Record: FragmentationThreshold --*/
1121typedef struct hfa384x_FragmentationThreshold
1122{
1123 UINT16 FragmentationThreshold;
1124} __WLAN_ATTRIB_PACK__ hfa384x_FragmentationThreshold_t;
1125
1126/*-- Configuration Record: RTSThreshold --*/
1127typedef struct hfa384x_RTSThreshold
1128{
1129 UINT16 RTSThreshold;
1130} __WLAN_ATTRIB_PACK__ hfa384x_RTSThreshold_t;
1131
1132/*-- Configuration Record: TxRateControl --*/
1133typedef struct hfa384x_TxRateControl
1134{
1135 UINT16 TxRateControl;
1136} __WLAN_ATTRIB_PACK__ hfa384x_TxRateControl_t;
1137
1138/*-- Configuration Record: PromiscuousMode --*/
1139typedef struct hfa384x_PromiscuousMode
1140{
1141 UINT16 PromiscuousMode;
1142} __WLAN_ATTRIB_PACK__ hfa384x_PromiscuousMode_t;
1143
1144/*-- Configuration Record: ScanRequest (data portion only) --*/
1145typedef struct hfa384x_ScanRequest_data
1146{
1147 UINT16 channelList;
1148 UINT16 txRate;
1149} __WLAN_ATTRIB_PACK__ hfa384x_ScanRequest_data_t;
1150
1151/*-- Configuration Record: HostScanRequest (data portion only) --*/
1152typedef struct hfa384x_HostScanRequest_data
1153{
1154 UINT16 channelList;
1155 UINT16 txRate;
1156 hfa384x_bytestr32_t ssid;
1157} __WLAN_ATTRIB_PACK__ hfa384x_HostScanRequest_data_t;
1158
1159/*-- Configuration Record: JoinRequest (data portion only) --*/
1160typedef struct hfa384x_JoinRequest_data
1161{
1162 UINT8 bssid[WLAN_BSSID_LEN];
1163 UINT16 channel;
1164} __WLAN_ATTRIB_PACK__ hfa384x_JoinRequest_data_t;
1165
1166/*-- Configuration Record: authenticateStation (data portion only) --*/
1167typedef struct hfa384x_authenticateStation_data
1168{
1169 UINT8 address[WLAN_ADDR_LEN];
1170 UINT16 status;
1171 UINT16 algorithm;
1172} __WLAN_ATTRIB_PACK__ hfa384x_authenticateStation_data_t;
1173
1174/*-- Configuration Record: associateStation (data portion only) --*/
1175typedef struct hfa384x_associateStation_data
1176{
1177 UINT8 address[WLAN_ADDR_LEN];
1178 UINT16 status;
1179 UINT16 type;
1180} __WLAN_ATTRIB_PACK__ hfa384x_associateStation_data_t;
1181
1182/*-- Configuration Record: ChannelInfoRequest (data portion only) --*/
1183typedef struct hfa384x_ChannelInfoRequest_data
1184{
1185 UINT16 channelList;
1186 UINT16 channelDwellTime;
1187} __WLAN_ATTRIB_PACK__ hfa384x_ChannelInfoRequest_data_t;
1188
1189/*-- Configuration Record: WEPKeyMapping (data portion only) --*/
1190typedef struct hfa384x_WEPKeyMapping
1191{
1192 UINT8 address[WLAN_ADDR_LEN];
1193 UINT16 key_index;
1194 UINT8 key[16];
1195 UINT8 mic_transmit_key[4];
1196 UINT8 mic_receive_key[4];
1197} __WLAN_ATTRIB_PACK__ hfa384x_WEPKeyMapping_t;
1198
1199/*-- Configuration Record: WPAData (data portion only) --*/
1200typedef struct hfa384x_WPAData
1201{
1202 UINT16 datalen;
1203 UINT8 data[0]; // max 80
1204} __WLAN_ATTRIB_PACK__ hfa384x_WPAData_t;
1205
1206/*--------------------------------------------------------------------
1207Configuration Record Structures: Behavior Parameters
1208--------------------------------------------------------------------*/
1209
1210/*-- Configuration Record: TickTime --*/
1211typedef struct hfa384x_TickTime
1212{
1213 UINT16 TickTime;
1214} __WLAN_ATTRIB_PACK__ hfa384x_TickTime_t;
1215
1216/*--------------------------------------------------------------------
1217Information Record Structures: NIC Information
1218--------------------------------------------------------------------*/
1219
1220/*-- Information Record: MaxLoadTime --*/
1221typedef struct hfa384x_MaxLoadTime
1222{
1223 UINT16 MaxLoadTime;
1224} __WLAN_ATTRIB_PACK__ hfa384x_MaxLoadTime_t;
1225
1226/*-- Information Record: DownLoadBuffer --*/
1227/* NOTE: The page and offset are in AUX format */
1228typedef struct hfa384x_downloadbuffer
1229{
1230 UINT16 page;
1231 UINT16 offset;
1232 UINT16 len;
1233} __WLAN_ATTRIB_PACK__ hfa384x_downloadbuffer_t;
1234
1235/*-- Information Record: PRIIdentity --*/
1236typedef struct hfa384x_PRIIdentity
1237{
1238 UINT16 PRICompID;
1239 UINT16 PRIVariant;
1240 UINT16 PRIMajorVersion;
1241 UINT16 PRIMinorVersion;
1242} __WLAN_ATTRIB_PACK__ hfa384x_PRIIdentity_t;
1243
1244/*-- Information Record: PRISupRange --*/
1245typedef struct hfa384x_PRISupRange
1246{
1247 UINT16 PRIRole;
1248 UINT16 PRIID;
1249 UINT16 PRIVariant;
1250 UINT16 PRIBottom;
1251 UINT16 PRITop;
1252} __WLAN_ATTRIB_PACK__ hfa384x_PRISupRange_t;
1253
1254/*-- Information Record: CFIActRanges --*/
1255typedef struct hfa384x_CFIActRanges
1256{
1257 UINT16 CFIRole;
1258 UINT16 CFIID;
1259 UINT16 CFIVariant;
1260 UINT16 CFIBottom;
1261 UINT16 CFITop;
1262} __WLAN_ATTRIB_PACK__ hfa384x_CFIActRanges_t;
1263
1264/*-- Information Record: NICSerialNumber --*/
1265typedef struct hfa384x_NICSerialNumber
1266{
1267 UINT8 NICSerialNumber[12];
1268} __WLAN_ATTRIB_PACK__ hfa384x_NICSerialNumber_t;
1269
1270/*-- Information Record: NICIdentity --*/
1271typedef struct hfa384x_NICIdentity
1272{
1273 UINT16 NICCompID;
1274 UINT16 NICVariant;
1275 UINT16 NICMajorVersion;
1276 UINT16 NICMinorVersion;
1277} __WLAN_ATTRIB_PACK__ hfa384x_NICIdentity_t;
1278
1279/*-- Information Record: MFISupRange --*/
1280typedef struct hfa384x_MFISupRange
1281{
1282 UINT16 MFIRole;
1283 UINT16 MFIID;
1284 UINT16 MFIVariant;
1285 UINT16 MFIBottom;
1286 UINT16 MFITop;
1287} __WLAN_ATTRIB_PACK__ hfa384x_MFISupRange_t;
1288
1289/*-- Information Record: CFISupRange --*/
1290typedef struct hfa384x_CFISupRange
1291{
1292 UINT16 CFIRole;
1293 UINT16 CFIID;
1294 UINT16 CFIVariant;
1295 UINT16 CFIBottom;
1296 UINT16 CFITop;
1297} __WLAN_ATTRIB_PACK__ hfa384x_CFISupRange_t;
1298
1299/*-- Information Record: BUILDSEQ:BuildSeq --*/
1300typedef struct hfa384x_BuildSeq {
1301 UINT16 primary;
1302 UINT16 secondary;
1303} __WLAN_ATTRIB_PACK__ hfa384x_BuildSeq_t;
1304
1305/*-- Information Record: FWID --*/
1306#define HFA384x_FWID_LEN 14
1307typedef struct hfa384x_FWID {
1308 UINT8 primary[HFA384x_FWID_LEN];
1309 UINT8 secondary[HFA384x_FWID_LEN];
1310} __WLAN_ATTRIB_PACK__ hfa384x_FWID_t;
1311
1312/*-- Information Record: ChannelList --*/
1313typedef struct hfa384x_ChannelList
1314{
1315 UINT16 ChannelList;
1316} __WLAN_ATTRIB_PACK__ hfa384x_ChannelList_t;
1317
1318/*-- Information Record: RegulatoryDomains --*/
1319typedef struct hfa384x_RegulatoryDomains
1320{
1321 UINT8 RegulatoryDomains[12];
1322} __WLAN_ATTRIB_PACK__ hfa384x_RegulatoryDomains_t;
1323
1324/*-- Information Record: TempType --*/
1325typedef struct hfa384x_TempType
1326{
1327 UINT16 TempType;
1328} __WLAN_ATTRIB_PACK__ hfa384x_TempType_t;
1329
1330/*-- Information Record: CIS --*/
1331typedef struct hfa384x_CIS
1332{
1333 UINT8 CIS[480];
1334} __WLAN_ATTRIB_PACK__ hfa384x_CIS_t;
1335
1336/*-- Information Record: STAIdentity --*/
1337typedef struct hfa384x_STAIdentity
1338{
1339 UINT16 STACompID;
1340 UINT16 STAVariant;
1341 UINT16 STAMajorVersion;
1342 UINT16 STAMinorVersion;
1343} __WLAN_ATTRIB_PACK__ hfa384x_STAIdentity_t;
1344
1345/*-- Information Record: STASupRange --*/
1346typedef struct hfa384x_STASupRange
1347{
1348 UINT16 STARole;
1349 UINT16 STAID;
1350 UINT16 STAVariant;
1351 UINT16 STABottom;
1352 UINT16 STATop;
1353} __WLAN_ATTRIB_PACK__ hfa384x_STASupRange_t;
1354
1355/*-- Information Record: MFIActRanges --*/
1356typedef struct hfa384x_MFIActRanges
1357{
1358 UINT16 MFIRole;
1359 UINT16 MFIID;
1360 UINT16 MFIVariant;
1361 UINT16 MFIBottom;
1362 UINT16 MFITop;
1363} __WLAN_ATTRIB_PACK__ hfa384x_MFIActRanges_t;
1364
1365/*--------------------------------------------------------------------
1366Information Record Structures: NIC Information
1367--------------------------------------------------------------------*/
1368
1369/*-- Information Record: PortStatus --*/
1370typedef struct hfa384x_PortStatus
1371{
1372 UINT16 PortStatus;
1373} __WLAN_ATTRIB_PACK__ hfa384x_PortStatus_t;
1374
1375#define HFA384x_PSTATUS_DISABLED ((UINT16)1)
1376#define HFA384x_PSTATUS_SEARCHING ((UINT16)2)
1377#define HFA384x_PSTATUS_CONN_IBSS ((UINT16)3)
1378#define HFA384x_PSTATUS_CONN_ESS ((UINT16)4)
1379#define HFA384x_PSTATUS_OUTOFRANGE ((UINT16)5)
1380#define HFA384x_PSTATUS_CONN_WDS ((UINT16)6)
1381
1382/*-- Information Record: CurrentSSID --*/
1383typedef struct hfa384x_CurrentSSID
1384{
1385 UINT8 CurrentSSID[34];
1386} __WLAN_ATTRIB_PACK__ hfa384x_CurrentSSID_t;
1387
1388/*-- Information Record: CurrentBSSID --*/
1389typedef struct hfa384x_CurrentBSSID
1390{
1391 UINT8 CurrentBSSID[6];
1392} __WLAN_ATTRIB_PACK__ hfa384x_CurrentBSSID_t;
1393
1394/*-- Information Record: commsquality --*/
1395typedef struct hfa384x_commsquality
1396{
1397 UINT16 CQ_currBSS;
1398 UINT16 ASL_currBSS;
1399 UINT16 ANL_currFC;
1400} __WLAN_ATTRIB_PACK__ hfa384x_commsquality_t;
1401
1402/*-- Information Record: dmbcommsquality --*/
1403typedef struct hfa384x_dbmcommsquality
1404{
1405 UINT16 CQdbm_currBSS;
1406 UINT16 ASLdbm_currBSS;
1407 UINT16 ANLdbm_currFC;
1408} __WLAN_ATTRIB_PACK__ hfa384x_dbmcommsquality_t;
1409
1410/*-- Information Record: CurrentTxRate --*/
1411typedef struct hfa384x_CurrentTxRate
1412{
1413 UINT16 CurrentTxRate;
1414} __WLAN_ATTRIB_PACK__ hfa384x_CurrentTxRate_t;
1415
1416/*-- Information Record: CurrentBeaconInterval --*/
1417typedef struct hfa384x_CurrentBeaconInterval
1418{
1419 UINT16 CurrentBeaconInterval;
1420} __WLAN_ATTRIB_PACK__ hfa384x_CurrentBeaconInterval_t;
1421
1422/*-- Information Record: CurrentScaleThresholds --*/
1423typedef struct hfa384x_CurrentScaleThresholds
1424{
1425 UINT16 EnergyDetectThreshold;
1426 UINT16 CarrierDetectThreshold;
1427 UINT16 DeferDetectThreshold;
1428 UINT16 CellSearchThreshold; /* Stations only */
1429 UINT16 DeadSpotThreshold; /* Stations only */
1430} __WLAN_ATTRIB_PACK__ hfa384x_CurrentScaleThresholds_t;
1431
1432/*-- Information Record: ProtocolRspTime --*/
1433typedef struct hfa384x_ProtocolRspTime
1434{
1435 UINT16 ProtocolRspTime;
1436} __WLAN_ATTRIB_PACK__ hfa384x_ProtocolRspTime_t;
1437
1438/*-- Information Record: ShortRetryLimit --*/
1439typedef struct hfa384x_ShortRetryLimit
1440{
1441 UINT16 ShortRetryLimit;
1442} __WLAN_ATTRIB_PACK__ hfa384x_ShortRetryLimit_t;
1443
1444/*-- Information Record: LongRetryLimit --*/
1445typedef struct hfa384x_LongRetryLimit
1446{
1447 UINT16 LongRetryLimit;
1448} __WLAN_ATTRIB_PACK__ hfa384x_LongRetryLimit_t;
1449
1450/*-- Information Record: MaxTransmitLifetime --*/
1451typedef struct hfa384x_MaxTransmitLifetime
1452{
1453 UINT16 MaxTransmitLifetime;
1454} __WLAN_ATTRIB_PACK__ hfa384x_MaxTransmitLifetime_t;
1455
1456/*-- Information Record: MaxReceiveLifetime --*/
1457typedef struct hfa384x_MaxReceiveLifetime
1458{
1459 UINT16 MaxReceiveLifetime;
1460} __WLAN_ATTRIB_PACK__ hfa384x_MaxReceiveLifetime_t;
1461
1462/*-- Information Record: CFPollable --*/
1463typedef struct hfa384x_CFPollable
1464{
1465 UINT16 CFPollable;
1466} __WLAN_ATTRIB_PACK__ hfa384x_CFPollable_t;
1467
1468/*-- Information Record: AuthenticationAlgorithms --*/
1469typedef struct hfa384x_AuthenticationAlgorithms
1470{
1471 UINT16 AuthenticationType;
1472 UINT16 TypeEnabled;
1473} __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_t;
1474
1475/*-- Information Record: AuthenticationAlgorithms
1476(data only --*/
1477typedef struct hfa384x_AuthenticationAlgorithms_data
1478{
1479 UINT16 AuthenticationType;
1480 UINT16 TypeEnabled;
1481} __WLAN_ATTRIB_PACK__ hfa384x_AuthenticationAlgorithms_data_t;
1482
1483/*-- Information Record: PrivacyOptionImplemented --*/
1484typedef struct hfa384x_PrivacyOptionImplemented
1485{
1486 UINT16 PrivacyOptionImplemented;
1487} __WLAN_ATTRIB_PACK__ hfa384x_PrivacyOptionImplemented_t;
1488
1489/*-- Information Record: OwnMACAddress --*/
1490typedef struct hfa384x_OwnMACAddress
1491{
1492 UINT8 OwnMACAddress[6];
1493} __WLAN_ATTRIB_PACK__ hfa384x_OwnMACAddress_t;
1494
1495/*-- Information Record: PCFInfo --*/
1496typedef struct hfa384x_PCFInfo
1497{
1498 UINT16 MediumOccupancyLimit;
1499 UINT16 CFPPeriod;
1500 UINT16 CFPMaxDuration;
1501 UINT16 CFPFlags;
1502} __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_t;
1503
1504/*-- Information Record: PCFInfo (data portion only) --*/
1505typedef struct hfa384x_PCFInfo_data
1506{
1507 UINT16 MediumOccupancyLimit;
1508 UINT16 CFPPeriod;
1509 UINT16 CFPMaxDuration;
1510 UINT16 CFPFlags;
1511} __WLAN_ATTRIB_PACK__ hfa384x_PCFInfo_data_t;
1512
1513/*--------------------------------------------------------------------
1514Information Record Structures: Modem Information Records
1515--------------------------------------------------------------------*/
1516
1517/*-- Information Record: PHYType --*/
1518typedef struct hfa384x_PHYType
1519{
1520 UINT16 PHYType;
1521} __WLAN_ATTRIB_PACK__ hfa384x_PHYType_t;
1522
1523/*-- Information Record: CurrentChannel --*/
1524typedef struct hfa384x_CurrentChannel
1525{
1526 UINT16 CurrentChannel;
1527} __WLAN_ATTRIB_PACK__ hfa384x_CurrentChannel_t;
1528
1529/*-- Information Record: CurrentPowerState --*/
1530typedef struct hfa384x_CurrentPowerState
1531{
1532 UINT16 CurrentPowerState;
1533} __WLAN_ATTRIB_PACK__ hfa384x_CurrentPowerState_t;
1534
1535/*-- Information Record: CCAMode --*/
1536typedef struct hfa384x_CCAMode
1537{
1538 UINT16 CCAMode;
1539} __WLAN_ATTRIB_PACK__ hfa384x_CCAMode_t;
1540
1541/*-- Information Record: SupportedDataRates --*/
1542typedef struct hfa384x_SupportedDataRates
1543{
1544 UINT8 SupportedDataRates[10];
1545} __WLAN_ATTRIB_PACK__ hfa384x_SupportedDataRates_t;
1546
1547/*-- Information Record: LFOStatus --*/
1548typedef struct hfa384x_LFOStatus
1549{
1550 UINT16 TestResults;
1551 UINT16 LFOResult;
1552 UINT16 VRHFOResult;
1553} __WLAN_ATTRIB_PACK__ hfa384x_LFOStatus_t;
1554
1555#define HFA384x_TESTRESULT_ALLPASSED BIT0
1556#define HFA384x_TESTRESULT_LFO_FAIL BIT1
1557#define HFA384x_TESTRESULT_VR_HF0_FAIL BIT2
1558#define HFA384x_HOST_FIRM_COORDINATE BIT7
1559#define HFA384x_TESTRESULT_COORDINATE BIT15
1560
1561/*-- Information Record: LEDControl --*/
1562typedef struct hfa384x_LEDControl
1563{
1564 UINT16 searching_on;
1565 UINT16 searching_off;
1566 UINT16 assoc_on;
1567 UINT16 assoc_off;
1568 UINT16 activity;
1569} __WLAN_ATTRIB_PACK__ hfa384x_LEDControl_t;
1570
1571/*--------------------------------------------------------------------
1572 FRAME DESCRIPTORS AND FRAME STRUCTURES
1573
1574FRAME DESCRIPTORS: Offsets
1575
1576----------------------------------------------------------------------
1577Control Info (offset 44-51)
1578--------------------------------------------------------------------*/
1579#define HFA384x_FD_STATUS_OFF ((UINT16)0x44)
1580#define HFA384x_FD_TIME_OFF ((UINT16)0x46)
1581#define HFA384x_FD_SWSUPPORT_OFF ((UINT16)0x4A)
1582#define HFA384x_FD_SILENCE_OFF ((UINT16)0x4A)
1583#define HFA384x_FD_SIGNAL_OFF ((UINT16)0x4B)
1584#define HFA384x_FD_RATE_OFF ((UINT16)0x4C)
1585#define HFA384x_FD_RXFLOW_OFF ((UINT16)0x4D)
1586#define HFA384x_FD_RESERVED_OFF ((UINT16)0x4E)
1587#define HFA384x_FD_TXCONTROL_OFF ((UINT16)0x50)
1588/*--------------------------------------------------------------------
1589802.11 Header (offset 52-6B)
1590--------------------------------------------------------------------*/
1591#define HFA384x_FD_FRAMECONTROL_OFF ((UINT16)0x52)
1592#define HFA384x_FD_DURATIONID_OFF ((UINT16)0x54)
1593#define HFA384x_FD_ADDRESS1_OFF ((UINT16)0x56)
1594#define HFA384x_FD_ADDRESS2_OFF ((UINT16)0x5C)
1595#define HFA384x_FD_ADDRESS3_OFF ((UINT16)0x62)
1596#define HFA384x_FD_SEQCONTROL_OFF ((UINT16)0x68)
1597#define HFA384x_FD_ADDRESS4_OFF ((UINT16)0x6A)
1598#define HFA384x_FD_DATALEN_OFF ((UINT16)0x70)
1599/*--------------------------------------------------------------------
1600802.3 Header (offset 72-7F)
1601--------------------------------------------------------------------*/
1602#define HFA384x_FD_DESTADDRESS_OFF ((UINT16)0x72)
1603#define HFA384x_FD_SRCADDRESS_OFF ((UINT16)0x78)
1604#define HFA384x_FD_DATALENGTH_OFF ((UINT16)0x7E)
1605
1606/*--------------------------------------------------------------------
1607FRAME STRUCTURES: Communication Frames
1608----------------------------------------------------------------------
1609Communication Frames: Transmit Frames
1610--------------------------------------------------------------------*/
1611/*-- Communication Frame: Transmit Frame Structure --*/
1612typedef struct hfa384x_tx_frame
1613{
1614 UINT16 status;
1615 UINT16 reserved1;
1616 UINT16 reserved2;
1617 UINT32 sw_support;
1618 UINT8 tx_retrycount;
1619 UINT8 tx_rate;
1620 UINT16 tx_control;
1621
1622 /*-- 802.11 Header Information --*/
1623
1624 UINT16 frame_control;
1625 UINT16 duration_id;
1626 UINT8 address1[6];
1627 UINT8 address2[6];
1628 UINT8 address3[6];
1629 UINT16 sequence_control;
1630 UINT8 address4[6];
1631 UINT16 data_len; /* little endian format */
1632
1633 /*-- 802.3 Header Information --*/
1634
1635 UINT8 dest_addr[6];
1636 UINT8 src_addr[6];
1637 UINT16 data_length; /* big endian format */
1638} __WLAN_ATTRIB_PACK__ hfa384x_tx_frame_t;
1639/*--------------------------------------------------------------------
1640Communication Frames: Field Masks for Transmit Frames
1641--------------------------------------------------------------------*/
1642/*-- Status Field --*/
1643#define HFA384x_TXSTATUS_ACKERR ((UINT16)BIT5)
1644#define HFA384x_TXSTATUS_FORMERR ((UINT16)BIT3)
1645#define HFA384x_TXSTATUS_DISCON ((UINT16)BIT2)
1646#define HFA384x_TXSTATUS_AGEDERR ((UINT16)BIT1)
1647#define HFA384x_TXSTATUS_RETRYERR ((UINT16)BIT0)
1648/*-- Transmit Control Field --*/
1649#define HFA384x_TX_CFPOLL ((UINT16)BIT12)
1650#define HFA384x_TX_PRST ((UINT16)BIT11)
1651#define HFA384x_TX_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8))
1652#define HFA384x_TX_NOENCRYPT ((UINT16)BIT7)
1653#define HFA384x_TX_RETRYSTRAT ((UINT16)(BIT6 | BIT5))
1654#define HFA384x_TX_STRUCTYPE ((UINT16)(BIT4 | BIT3))
1655#define HFA384x_TX_TXEX ((UINT16)BIT2)
1656#define HFA384x_TX_TXOK ((UINT16)BIT1)
1657/*--------------------------------------------------------------------
1658Communication Frames: Test/Get/Set Field Values for Transmit Frames
1659--------------------------------------------------------------------*/
1660/*-- Status Field --*/
1661#define HFA384x_TXSTATUS_ISERROR(v) \
1662 (((UINT16)(v))&\
1663 (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\
1664 HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\
1665 HFA384x_TXSTATUS_RETRYERR))
1666
1667#define HFA384x_TXSTATUS_ISACKERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_ACKERR))
1668#define HFA384x_TXSTATUS_ISFORMERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_FORMERR))
1669#define HFA384x_TXSTATUS_ISDISCON(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_DISCON))
1670#define HFA384x_TXSTATUS_ISAGEDERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_AGEDERR))
1671#define HFA384x_TXSTATUS_ISRETRYERR(v) ((UINT16)(((UINT16)(v)) & HFA384x_TXSTATUS_RETRYERR))
1672
1673#define HFA384x_TX_GET(v,m,s) ((((UINT16)(v))&((UINT16)(m)))>>((UINT16)(s)))
1674#define HFA384x_TX_SET(v,m,s) ((((UINT16)(v))<<((UINT16)(s)))&((UINT16)(m)))
1675
1676#define HFA384x_TX_CFPOLL_GET(v) HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12)
1677#define HFA384x_TX_CFPOLL_SET(v) HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12)
1678#define HFA384x_TX_PRST_GET(v) HFA384x_TX_GET(v, HFA384x_TX_PRST,11)
1679#define HFA384x_TX_PRST_SET(v) HFA384x_TX_SET(v, HFA384x_TX_PRST,11)
1680#define HFA384x_TX_MACPORT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8)
1681#define HFA384x_TX_MACPORT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8)
1682#define HFA384x_TX_NOENCRYPT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7)
1683#define HFA384x_TX_NOENCRYPT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7)
1684#define HFA384x_TX_RETRYSTRAT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5)
1685#define HFA384x_TX_RETRYSTRAT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5)
1686#define HFA384x_TX_STRUCTYPE_GET(v) HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3)
1687#define HFA384x_TX_STRUCTYPE_SET(v) HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3)
1688#define HFA384x_TX_TXEX_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2)
1689#define HFA384x_TX_TXEX_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2)
1690#define HFA384x_TX_TXOK_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1)
1691#define HFA384x_TX_TXOK_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1)
1692/*--------------------------------------------------------------------
1693Communication Frames: Receive Frames
1694--------------------------------------------------------------------*/
1695/*-- Communication Frame: Receive Frame Structure --*/
1696typedef struct hfa384x_rx_frame
1697{
1698 /*-- MAC rx descriptor (hfa384x byte order) --*/
1699 UINT16 status;
1700 UINT32 time;
1701 UINT8 silence;
1702 UINT8 signal;
1703 UINT8 rate;
1704 UINT8 rx_flow;
1705 UINT16 reserved1;
1706 UINT16 reserved2;
1707
1708 /*-- 802.11 Header Information (802.11 byte order) --*/
1709 UINT16 frame_control;
1710 UINT16 duration_id;
1711 UINT8 address1[6];
1712 UINT8 address2[6];
1713 UINT8 address3[6];
1714 UINT16 sequence_control;
1715 UINT8 address4[6];
1716 UINT16 data_len; /* hfa384x (little endian) format */
1717
1718 /*-- 802.3 Header Information --*/
1719 UINT8 dest_addr[6];
1720 UINT8 src_addr[6];
1721 UINT16 data_length; /* IEEE? (big endian) format */
1722} __WLAN_ATTRIB_PACK__ hfa384x_rx_frame_t;
1723/*--------------------------------------------------------------------
1724Communication Frames: Field Masks for Receive Frames
1725--------------------------------------------------------------------*/
1726/*-- Offsets --------*/
1727#define HFA384x_RX_DATA_LEN_OFF ((UINT16)44)
1728#define HFA384x_RX_80211HDR_OFF ((UINT16)14)
1729#define HFA384x_RX_DATA_OFF ((UINT16)60)
1730
1731/*-- Status Fields --*/
1732#define HFA384x_RXSTATUS_MSGTYPE ((UINT16)(BIT15 | BIT14 | BIT13))
1733#define HFA384x_RXSTATUS_MACPORT ((UINT16)(BIT10 | BIT9 | BIT8))
1734#define HFA384x_RXSTATUS_UNDECR ((UINT16)BIT1)
1735#define HFA384x_RXSTATUS_FCSERR ((UINT16)BIT0)
1736/*--------------------------------------------------------------------
1737Communication Frames: Test/Get/Set Field Values for Receive Frames
1738--------------------------------------------------------------------*/
1739#define HFA384x_RXSTATUS_MSGTYPE_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13))
1740#define HFA384x_RXSTATUS_MSGTYPE_SET(value) ((UINT16)(((UINT16)(value)) << 13))
1741#define HFA384x_RXSTATUS_MACPORT_GET(value) ((UINT16)((((UINT16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8))
1742#define HFA384x_RXSTATUS_MACPORT_SET(value) ((UINT16)(((UINT16)(value)) << 8))
1743#define HFA384x_RXSTATUS_ISUNDECR(value) ((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_UNDECR))
1744#define HFA384x_RXSTATUS_ISFCSERR(value) ((UINT16)(((UINT16)(value)) & HFA384x_RXSTATUS_FCSERR))
1745/*--------------------------------------------------------------------
1746 FRAME STRUCTURES: Information Types and Information Frame Structures
1747----------------------------------------------------------------------
1748Information Types
1749--------------------------------------------------------------------*/
1750#define HFA384x_IT_HANDOVERADDR ((UINT16)0xF000UL)
1751#define HFA384x_IT_HANDOVERDEAUTHADDRESS ((UINT16)0xF001UL)//AP 1.3.7
1752#define HFA384x_IT_COMMTALLIES ((UINT16)0xF100UL)
1753#define HFA384x_IT_SCANRESULTS ((UINT16)0xF101UL)
1754#define HFA384x_IT_CHINFORESULTS ((UINT16)0xF102UL)
1755#define HFA384x_IT_HOSTSCANRESULTS ((UINT16)0xF103UL)
1756#define HFA384x_IT_LINKSTATUS ((UINT16)0xF200UL)
1757#define HFA384x_IT_ASSOCSTATUS ((UINT16)0xF201UL)
1758#define HFA384x_IT_AUTHREQ ((UINT16)0xF202UL)
1759#define HFA384x_IT_PSUSERCNT ((UINT16)0xF203UL)
1760#define HFA384x_IT_KEYIDCHANGED ((UINT16)0xF204UL)
1761#define HFA384x_IT_ASSOCREQ ((UINT16)0xF205UL)
1762#define HFA384x_IT_MICFAILURE ((UINT16)0xF206UL)
1763
1764/*--------------------------------------------------------------------
1765Information Frames Structures
1766----------------------------------------------------------------------
1767Information Frames: Notification Frame Structures
1768--------------------------------------------------------------------*/
1769/*-- Notification Frame,MAC Mgmt: Handover Address --*/
1770typedef struct hfa384x_HandoverAddr
1771{
1772 UINT16 framelen;
1773 UINT16 infotype;
1774 UINT8 handover_addr[WLAN_BSSID_LEN];
1775} __WLAN_ATTRIB_PACK__ hfa384x_HandoverAddr_t;
1776
1777/*-- Inquiry Frame, Diagnose: Communication Tallies --*/
1778typedef struct hfa384x_CommTallies16
1779{
1780 UINT16 txunicastframes;
1781 UINT16 txmulticastframes;
1782 UINT16 txfragments;
1783 UINT16 txunicastoctets;
1784 UINT16 txmulticastoctets;
1785 UINT16 txdeferredtrans;
1786 UINT16 txsingleretryframes;
1787 UINT16 txmultipleretryframes;
1788 UINT16 txretrylimitexceeded;
1789 UINT16 txdiscards;
1790 UINT16 rxunicastframes;
1791 UINT16 rxmulticastframes;
1792 UINT16 rxfragments;
1793 UINT16 rxunicastoctets;
1794 UINT16 rxmulticastoctets;
1795 UINT16 rxfcserrors;
1796 UINT16 rxdiscardsnobuffer;
1797 UINT16 txdiscardswrongsa;
1798 UINT16 rxdiscardswepundecr;
1799 UINT16 rxmsginmsgfrag;
1800 UINT16 rxmsginbadmsgfrag;
1801} __WLAN_ATTRIB_PACK__ hfa384x_CommTallies16_t;
1802
1803typedef struct hfa384x_CommTallies32
1804{
1805 UINT32 txunicastframes;
1806 UINT32 txmulticastframes;
1807 UINT32 txfragments;
1808 UINT32 txunicastoctets;
1809 UINT32 txmulticastoctets;
1810 UINT32 txdeferredtrans;
1811 UINT32 txsingleretryframes;
1812 UINT32 txmultipleretryframes;
1813 UINT32 txretrylimitexceeded;
1814 UINT32 txdiscards;
1815 UINT32 rxunicastframes;
1816 UINT32 rxmulticastframes;
1817 UINT32 rxfragments;
1818 UINT32 rxunicastoctets;
1819 UINT32 rxmulticastoctets;
1820 UINT32 rxfcserrors;
1821 UINT32 rxdiscardsnobuffer;
1822 UINT32 txdiscardswrongsa;
1823 UINT32 rxdiscardswepundecr;
1824 UINT32 rxmsginmsgfrag;
1825 UINT32 rxmsginbadmsgfrag;
1826} __WLAN_ATTRIB_PACK__ hfa384x_CommTallies32_t;
1827
1828/*-- Inquiry Frame, Diagnose: Scan Results & Subfields--*/
1829typedef struct hfa384x_ScanResultSub
1830{
1831 UINT16 chid;
1832 UINT16 anl;
1833 UINT16 sl;
1834 UINT8 bssid[WLAN_BSSID_LEN];
1835 UINT16 bcnint;
1836 UINT16 capinfo;
1837 hfa384x_bytestr32_t ssid;
1838 UINT8 supprates[10]; /* 802.11 info element */
1839 UINT16 proberesp_rate;
1840} __WLAN_ATTRIB_PACK__ hfa384x_ScanResultSub_t;
1841
1842typedef struct hfa384x_ScanResult
1843{
1844 UINT16 rsvd;
1845 UINT16 scanreason;
1846 hfa384x_ScanResultSub_t
1847 result[HFA384x_SCANRESULT_MAX];
1848} __WLAN_ATTRIB_PACK__ hfa384x_ScanResult_t;
1849
1850/*-- Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/
1851typedef struct hfa384x_ChInfoResultSub
1852{
1853 UINT16 chid;
1854 UINT16 anl;
1855 UINT16 pnl;
1856 UINT16 active;
1857} __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResultSub_t;
1858
1859#define HFA384x_CHINFORESULT_BSSACTIVE BIT0
1860#define HFA384x_CHINFORESULT_PCFACTIVE BIT1
1861
1862typedef struct hfa384x_ChInfoResult
1863{
1864 UINT16 scanchannels;
1865 hfa384x_ChInfoResultSub_t
1866 result[HFA384x_CHINFORESULT_MAX];
1867} __WLAN_ATTRIB_PACK__ hfa384x_ChInfoResult_t;
1868
1869/*-- Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/
1870typedef struct hfa384x_HScanResultSub
1871{
1872 UINT16 chid;
1873 UINT16 anl;
1874 UINT16 sl;
1875 UINT8 bssid[WLAN_BSSID_LEN];
1876 UINT16 bcnint;
1877 UINT16 capinfo;
1878 hfa384x_bytestr32_t ssid;
1879 UINT8 supprates[10]; /* 802.11 info element */
1880 UINT16 proberesp_rate;
1881 UINT16 atim;
1882} __WLAN_ATTRIB_PACK__ hfa384x_HScanResultSub_t;
1883
1884typedef struct hfa384x_HScanResult
1885{
1886 UINT16 nresult;
1887 UINT16 rsvd;
1888 hfa384x_HScanResultSub_t
1889 result[HFA384x_HSCANRESULT_MAX];
1890} __WLAN_ATTRIB_PACK__ hfa384x_HScanResult_t;
1891
1892/*-- Unsolicited Frame, MAC Mgmt: LinkStatus --*/
1893
1894#define HFA384x_LINK_NOTCONNECTED ((UINT16)0)
1895#define HFA384x_LINK_CONNECTED ((UINT16)1)
1896#define HFA384x_LINK_DISCONNECTED ((UINT16)2)
1897#define HFA384x_LINK_AP_CHANGE ((UINT16)3)
1898#define HFA384x_LINK_AP_OUTOFRANGE ((UINT16)4)
1899#define HFA384x_LINK_AP_INRANGE ((UINT16)5)
1900#define HFA384x_LINK_ASSOCFAIL ((UINT16)6)
1901
1902typedef struct hfa384x_LinkStatus
1903{
1904 UINT16 linkstatus;
1905} __WLAN_ATTRIB_PACK__ hfa384x_LinkStatus_t;
1906
1907
1908/*-- Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/
1909
1910#define HFA384x_ASSOCSTATUS_STAASSOC ((UINT16)1)
1911#define HFA384x_ASSOCSTATUS_REASSOC ((UINT16)2)
1912#define HFA384x_ASSOCSTATUS_DISASSOC ((UINT16)3)
1913#define HFA384x_ASSOCSTATUS_ASSOCFAIL ((UINT16)4)
1914#define HFA384x_ASSOCSTATUS_AUTHFAIL ((UINT16)5)
1915
1916typedef struct hfa384x_AssocStatus
1917{
1918 UINT16 assocstatus;
1919 UINT8 sta_addr[WLAN_ADDR_LEN];
1920 /* old_ap_addr is only valid if assocstatus == 2 */
1921 UINT8 old_ap_addr[WLAN_ADDR_LEN];
1922 UINT16 reason;
1923 UINT16 reserved;
1924} __WLAN_ATTRIB_PACK__ hfa384x_AssocStatus_t;
1925
1926/*-- Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/
1927
1928typedef struct hfa384x_AuthRequest
1929{
1930 UINT8 sta_addr[WLAN_ADDR_LEN];
1931 UINT16 algorithm;
1932} __WLAN_ATTRIB_PACK__ hfa384x_AuthReq_t;
1933
1934/*-- Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/
1935
1936typedef struct hfa384x_AssocRequest
1937{
1938 UINT8 sta_addr[WLAN_ADDR_LEN];
1939 UINT16 type;
1940 UINT8 wpa_data[80];
1941} __WLAN_ATTRIB_PACK__ hfa384x_AssocReq_t;
1942
1943
1944#define HFA384x_ASSOCREQ_TYPE_ASSOC 0
1945#define HFA384x_ASSOCREQ_TYPE_REASSOC 1
1946
1947/*-- Unsolicited Frame, MAC Mgmt: MIC Failure (AP Only) --*/
1948
1949typedef struct hfa384x_MicFailure
1950{
1951 UINT8 sender[WLAN_ADDR_LEN];
1952 UINT8 dest[WLAN_ADDR_LEN];
1953} __WLAN_ATTRIB_PACK__ hfa384x_MicFailure_t;
1954
1955/*-- Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/
1956
1957typedef struct hfa384x_PSUserCount
1958{
1959 UINT16 usercnt;
1960} __WLAN_ATTRIB_PACK__ hfa384x_PSUserCount_t;
1961
1962typedef struct hfa384x_KeyIDChanged
1963{
1964 UINT8 sta_addr[WLAN_ADDR_LEN];
1965 UINT16 keyid;
1966} __WLAN_ATTRIB_PACK__ hfa384x_KeyIDChanged_t;
1967
1968/*-- Collection of all Inf frames ---------------*/
1969typedef union hfa384x_infodata {
1970 hfa384x_CommTallies16_t commtallies16;
1971 hfa384x_CommTallies32_t commtallies32;
1972 hfa384x_ScanResult_t scanresult;
1973 hfa384x_ChInfoResult_t chinforesult;
1974 hfa384x_HScanResult_t hscanresult;
1975 hfa384x_LinkStatus_t linkstatus;
1976 hfa384x_AssocStatus_t assocstatus;
1977 hfa384x_AuthReq_t authreq;
1978 hfa384x_PSUserCount_t psusercnt;
1979 hfa384x_KeyIDChanged_t keyidchanged;
1980} __WLAN_ATTRIB_PACK__ hfa384x_infodata_t;
1981
1982typedef struct hfa384x_InfFrame
1983{
1984 UINT16 framelen;
1985 UINT16 infotype;
1986 hfa384x_infodata_t info;
1987} __WLAN_ATTRIB_PACK__ hfa384x_InfFrame_t;
1988
1989#if (WLAN_HOSTIF == WLAN_USB)
1990/*--------------------------------------------------------------------
1991USB Packet structures and constants.
1992--------------------------------------------------------------------*/
1993
1994/* Should be sent to the ctrlout endpoint */
1995#define HFA384x_USB_ENBULKIN 6
1996
1997/* Should be sent to the bulkout endpoint */
1998#define HFA384x_USB_TXFRM 0
1999#define HFA384x_USB_CMDREQ 1
2000#define HFA384x_USB_WRIDREQ 2
2001#define HFA384x_USB_RRIDREQ 3
2002#define HFA384x_USB_WMEMREQ 4
2003#define HFA384x_USB_RMEMREQ 5
2004
2005/* Received from the bulkin endpoint */
2006#define HFA384x_USB_ISFRM(a) (!((a) & 0x8000))
2007#define HFA384x_USB_ISTXFRM(a) (((a) & 0x9000) == 0x1000)
2008#define HFA384x_USB_ISRXFRM(a) (!((a) & 0x9000))
2009#define HFA384x_USB_INFOFRM 0x8000
2010#define HFA384x_USB_CMDRESP 0x8001
2011#define HFA384x_USB_WRIDRESP 0x8002
2012#define HFA384x_USB_RRIDRESP 0x8003
2013#define HFA384x_USB_WMEMRESP 0x8004
2014#define HFA384x_USB_RMEMRESP 0x8005
2015#define HFA384x_USB_BUFAVAIL 0x8006
2016#define HFA384x_USB_ERROR 0x8007
2017
2018/*------------------------------------*/
2019/* Request (bulk OUT) packet contents */
2020
2021typedef struct hfa384x_usb_txfrm {
2022 hfa384x_tx_frame_t desc;
2023 UINT8 data[WLAN_DATA_MAXLEN];
2024} __WLAN_ATTRIB_PACK__ hfa384x_usb_txfrm_t;
2025
2026typedef struct hfa384x_usb_cmdreq {
2027 UINT16 type;
2028 UINT16 cmd;
2029 UINT16 parm0;
2030 UINT16 parm1;
2031 UINT16 parm2;
2032 UINT8 pad[54];
2033} __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdreq_t;
2034
2035typedef struct hfa384x_usb_wridreq {
2036 UINT16 type;
2037 UINT16 frmlen;
2038 UINT16 rid;
2039 UINT8 data[HFA384x_RIDDATA_MAXLEN];
2040} __WLAN_ATTRIB_PACK__ hfa384x_usb_wridreq_t;
2041
2042typedef struct hfa384x_usb_rridreq {
2043 UINT16 type;
2044 UINT16 frmlen;
2045 UINT16 rid;
2046 UINT8 pad[58];
2047} __WLAN_ATTRIB_PACK__ hfa384x_usb_rridreq_t;
2048
2049typedef struct hfa384x_usb_wmemreq {
2050 UINT16 type;
2051 UINT16 frmlen;
2052 UINT16 offset;
2053 UINT16 page;
2054 UINT8 data[HFA384x_USB_RWMEM_MAXLEN];
2055} __WLAN_ATTRIB_PACK__ hfa384x_usb_wmemreq_t;
2056
2057typedef struct hfa384x_usb_rmemreq {
2058 UINT16 type;
2059 UINT16 frmlen;
2060 UINT16 offset;
2061 UINT16 page;
2062 UINT8 pad[56];
2063} __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemreq_t;
2064
2065/*------------------------------------*/
2066/* Response (bulk IN) packet contents */
2067
2068typedef struct hfa384x_usb_rxfrm {
2069 hfa384x_rx_frame_t desc;
2070 UINT8 data[WLAN_DATA_MAXLEN];
2071} __WLAN_ATTRIB_PACK__ hfa384x_usb_rxfrm_t;
2072
2073typedef struct hfa384x_usb_infofrm {
2074 UINT16 type;
2075 hfa384x_InfFrame_t info;
2076} __WLAN_ATTRIB_PACK__ hfa384x_usb_infofrm_t;
2077
2078typedef struct hfa384x_usb_statusresp {
2079 UINT16 type;
2080 UINT16 status;
2081 UINT16 resp0;
2082 UINT16 resp1;
2083 UINT16 resp2;
2084} __WLAN_ATTRIB_PACK__ hfa384x_usb_cmdresp_t;
2085
2086typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t;
2087
2088typedef struct hfa384x_usb_rridresp {
2089 UINT16 type;
2090 UINT16 frmlen;
2091 UINT16 rid;
2092 UINT8 data[HFA384x_RIDDATA_MAXLEN];
2093} __WLAN_ATTRIB_PACK__ hfa384x_usb_rridresp_t;
2094
2095typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t;
2096
2097typedef struct hfa384x_usb_rmemresp {
2098 UINT16 type;
2099 UINT16 frmlen;
2100 UINT8 data[HFA384x_USB_RWMEM_MAXLEN];
2101} __WLAN_ATTRIB_PACK__ hfa384x_usb_rmemresp_t;
2102
2103typedef struct hfa384x_usb_bufavail {
2104 UINT16 type;
2105 UINT16 frmlen;
2106} __WLAN_ATTRIB_PACK__ hfa384x_usb_bufavail_t;
2107
2108typedef struct hfa384x_usb_error {
2109 UINT16 type;
2110 UINT16 errortype;
2111} __WLAN_ATTRIB_PACK__ hfa384x_usb_error_t;
2112
2113/*----------------------------------------------------------*/
2114/* Unions for packaging all the known packet types together */
2115
2116typedef union hfa384x_usbout {
2117 UINT16 type;
2118 hfa384x_usb_txfrm_t txfrm;
2119 hfa384x_usb_cmdreq_t cmdreq;
2120 hfa384x_usb_wridreq_t wridreq;
2121 hfa384x_usb_rridreq_t rridreq;
2122 hfa384x_usb_wmemreq_t wmemreq;
2123 hfa384x_usb_rmemreq_t rmemreq;
2124} __WLAN_ATTRIB_PACK__ hfa384x_usbout_t;
2125
2126typedef union hfa384x_usbin {
2127 UINT16 type;
2128 hfa384x_usb_rxfrm_t rxfrm;
2129 hfa384x_usb_txfrm_t txfrm;
2130 hfa384x_usb_infofrm_t infofrm;
2131 hfa384x_usb_cmdresp_t cmdresp;
2132 hfa384x_usb_wridresp_t wridresp;
2133 hfa384x_usb_rridresp_t rridresp;
2134 hfa384x_usb_wmemresp_t wmemresp;
2135 hfa384x_usb_rmemresp_t rmemresp;
2136 hfa384x_usb_bufavail_t bufavail;
2137 hfa384x_usb_error_t usberror;
2138 UINT8 boguspad[3000];
2139} __WLAN_ATTRIB_PACK__ hfa384x_usbin_t;
2140
2141#endif /* WLAN_USB */
2142
2143/*--------------------------------------------------------------------
2144PD record structures.
2145--------------------------------------------------------------------*/
2146
2147typedef struct hfa384x_pdr_pcb_partnum
2148{
2149 UINT8 num[8];
2150} __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_partnum_t;
2151
2152typedef struct hfa384x_pdr_pcb_tracenum
2153{
2154 UINT8 num[8];
2155} __WLAN_ATTRIB_PACK__ hfa384x_pdr_pcb_tracenum_t;
2156
2157typedef struct hfa384x_pdr_nic_serial
2158{
2159 UINT8 num[12];
2160} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_serial_t;
2161
2162typedef struct hfa384x_pdr_mkk_measurements
2163{
2164 double carrier_freq;
2165 double occupied_band;
2166 double power_density;
2167 double tx_spur_f1;
2168 double tx_spur_f2;
2169 double tx_spur_f3;
2170 double tx_spur_f4;
2171 double tx_spur_l1;
2172 double tx_spur_l2;
2173 double tx_spur_l3;
2174 double tx_spur_l4;
2175 double rx_spur_f1;
2176 double rx_spur_f2;
2177 double rx_spur_l1;
2178 double rx_spur_l2;
2179} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_measurements_t;
2180
2181typedef struct hfa384x_pdr_nic_ramsize
2182{
2183 UINT8 size[12]; /* units of KB */
2184} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_ramsize_t;
2185
2186typedef struct hfa384x_pdr_mfisuprange
2187{
2188 UINT16 id;
2189 UINT16 variant;
2190 UINT16 bottom;
2191 UINT16 top;
2192} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mfisuprange_t;
2193
2194typedef struct hfa384x_pdr_cfisuprange
2195{
2196 UINT16 id;
2197 UINT16 variant;
2198 UINT16 bottom;
2199 UINT16 top;
2200} __WLAN_ATTRIB_PACK__ hfa384x_pdr_cfisuprange_t;
2201
2202typedef struct hfa384x_pdr_nicid
2203{
2204 UINT16 id;
2205 UINT16 variant;
2206 UINT16 major;
2207 UINT16 minor;
2208} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nicid_t;
2209
2210
2211typedef struct hfa384x_pdr_refdac_measurements
2212{
2213 UINT16 value[0];
2214} __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_measurements_t;
2215
2216typedef struct hfa384x_pdr_vgdac_measurements
2217{
2218 UINT16 value[0];
2219} __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_measurements_t;
2220
2221typedef struct hfa384x_pdr_level_comp_measurements
2222{
2223 UINT16 value[0];
2224} __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_compc_measurements_t;
2225
2226typedef struct hfa384x_pdr_mac_address
2227{
2228 UINT8 addr[6];
2229} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mac_address_t;
2230
2231typedef struct hfa384x_pdr_mkk_callname
2232{
2233 UINT8 callname[8];
2234} __WLAN_ATTRIB_PACK__ hfa384x_pdr_mkk_callname_t;
2235
2236typedef struct hfa384x_pdr_regdomain
2237{
2238 UINT16 numdomains;
2239 UINT16 domain[5];
2240} __WLAN_ATTRIB_PACK__ hfa384x_pdr_regdomain_t;
2241
2242typedef struct hfa384x_pdr_allowed_channel
2243{
2244 UINT16 ch_bitmap;
2245} __WLAN_ATTRIB_PACK__ hfa384x_pdr_allowed_channel_t;
2246
2247typedef struct hfa384x_pdr_default_channel
2248{
2249 UINT16 channel;
2250} __WLAN_ATTRIB_PACK__ hfa384x_pdr_default_channel_t;
2251
2252typedef struct hfa384x_pdr_privacy_option
2253{
2254 UINT16 available;
2255} __WLAN_ATTRIB_PACK__ hfa384x_pdr_privacy_option_t;
2256
2257typedef struct hfa384x_pdr_temptype
2258{
2259 UINT16 type;
2260} __WLAN_ATTRIB_PACK__ hfa384x_pdr_temptype_t;
2261
2262typedef struct hfa384x_pdr_refdac_setup
2263{
2264 UINT16 ch_value[14];
2265} __WLAN_ATTRIB_PACK__ hfa384x_pdr_refdac_setup_t;
2266
2267typedef struct hfa384x_pdr_vgdac_setup
2268{
2269 UINT16 ch_value[14];
2270} __WLAN_ATTRIB_PACK__ hfa384x_pdr_vgdac_setup_t;
2271
2272typedef struct hfa384x_pdr_level_comp_setup
2273{
2274 UINT16 ch_value[14];
2275} __WLAN_ATTRIB_PACK__ hfa384x_pdr_level_comp_setup_t;
2276
2277typedef struct hfa384x_pdr_trimdac_setup
2278{
2279 UINT16 trimidac;
2280 UINT16 trimqdac;
2281} __WLAN_ATTRIB_PACK__ hfa384x_pdr_trimdac_setup_t;
2282
2283typedef struct hfa384x_pdr_ifr_setting
2284{
2285 UINT16 value[3];
2286} __WLAN_ATTRIB_PACK__ hfa384x_pdr_ifr_setting_t;
2287
2288typedef struct hfa384x_pdr_rfr_setting
2289{
2290 UINT16 value[3];
2291} __WLAN_ATTRIB_PACK__ hfa384x_pdr_rfr_setting_t;
2292
2293typedef struct hfa384x_pdr_hfa3861_baseline
2294{
2295 UINT16 value[50];
2296} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_baseline_t;
2297
2298typedef struct hfa384x_pdr_hfa3861_shadow
2299{
2300 UINT32 value[32];
2301} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_shadow_t;
2302
2303typedef struct hfa384x_pdr_hfa3861_ifrf
2304{
2305 UINT32 value[20];
2306} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_ifrf_t;
2307
2308typedef struct hfa384x_pdr_hfa3861_chcalsp
2309{
2310 UINT16 value[14];
2311} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcalsp_t;
2312
2313typedef struct hfa384x_pdr_hfa3861_chcali
2314{
2315 UINT16 value[17];
2316} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_chcali_t;
2317
2318typedef struct hfa384x_pdr_hfa3861_nic_config
2319{
2320 UINT16 config_bitmap;
2321} __WLAN_ATTRIB_PACK__ hfa384x_pdr_nic_config_t;
2322
2323typedef struct hfa384x_pdr_hfo_delay
2324{
2325 UINT8 hfo_delay;
2326} __WLAN_ATTRIB_PACK__ hfa384x_hfo_delay_t;
2327
2328typedef struct hfa384x_pdr_hfa3861_manf_testsp
2329{
2330 UINT16 value[30];
2331} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testsp_t;
2332
2333typedef struct hfa384x_pdr_hfa3861_manf_testi
2334{
2335 UINT16 value[30];
2336} __WLAN_ATTRIB_PACK__ hfa384x_pdr_hfa3861_manf_testi_t;
2337
2338typedef struct hfa384x_end_of_pda
2339{
2340 UINT16 crc;
2341} __WLAN_ATTRIB_PACK__ hfa384x_pdr_end_of_pda_t;
2342
2343typedef struct hfa384x_pdrec
2344{
2345 UINT16 len; /* in words */
2346 UINT16 code;
2347 union pdr {
2348 hfa384x_pdr_pcb_partnum_t pcb_partnum;
2349 hfa384x_pdr_pcb_tracenum_t pcb_tracenum;
2350 hfa384x_pdr_nic_serial_t nic_serial;
2351 hfa384x_pdr_mkk_measurements_t mkk_measurements;
2352 hfa384x_pdr_nic_ramsize_t nic_ramsize;
2353 hfa384x_pdr_mfisuprange_t mfisuprange;
2354 hfa384x_pdr_cfisuprange_t cfisuprange;
2355 hfa384x_pdr_nicid_t nicid;
2356 hfa384x_pdr_refdac_measurements_t refdac_measurements;
2357 hfa384x_pdr_vgdac_measurements_t vgdac_measurements;
2358 hfa384x_pdr_level_compc_measurements_t level_compc_measurements;
2359 hfa384x_pdr_mac_address_t mac_address;
2360 hfa384x_pdr_mkk_callname_t mkk_callname;
2361 hfa384x_pdr_regdomain_t regdomain;
2362 hfa384x_pdr_allowed_channel_t allowed_channel;
2363 hfa384x_pdr_default_channel_t default_channel;
2364 hfa384x_pdr_privacy_option_t privacy_option;
2365 hfa384x_pdr_temptype_t temptype;
2366 hfa384x_pdr_refdac_setup_t refdac_setup;
2367 hfa384x_pdr_vgdac_setup_t vgdac_setup;
2368 hfa384x_pdr_level_comp_setup_t level_comp_setup;
2369 hfa384x_pdr_trimdac_setup_t trimdac_setup;
2370 hfa384x_pdr_ifr_setting_t ifr_setting;
2371 hfa384x_pdr_rfr_setting_t rfr_setting;
2372 hfa384x_pdr_hfa3861_baseline_t hfa3861_baseline;
2373 hfa384x_pdr_hfa3861_shadow_t hfa3861_shadow;
2374 hfa384x_pdr_hfa3861_ifrf_t hfa3861_ifrf;
2375 hfa384x_pdr_hfa3861_chcalsp_t hfa3861_chcalsp;
2376 hfa384x_pdr_hfa3861_chcali_t hfa3861_chcali;
2377 hfa384x_pdr_nic_config_t nic_config;
2378 hfa384x_hfo_delay_t hfo_delay;
2379 hfa384x_pdr_hfa3861_manf_testsp_t hfa3861_manf_testsp;
2380 hfa384x_pdr_hfa3861_manf_testi_t hfa3861_manf_testi;
2381 hfa384x_pdr_end_of_pda_t end_of_pda;
2382
2383 } data;
2384} __WLAN_ATTRIB_PACK__ hfa384x_pdrec_t;
2385
2386
2387#ifdef __KERNEL__
2388/*--------------------------------------------------------------------
2389--- MAC state structure, argument to all functions --
2390--- Also, a collection of support types --
2391--------------------------------------------------------------------*/
2392typedef struct hfa384x_statusresult
2393{
2394 UINT16 status;
2395 UINT16 resp0;
2396 UINT16 resp1;
2397 UINT16 resp2;
2398} hfa384x_cmdresult_t;
2399
2400#if (WLAN_HOSTIF == WLAN_USB)
2401
2402/* USB Control Exchange (CTLX):
2403 * A queue of the structure below is maintained for all of the
2404 * Request/Response type USB packets supported by Prism2.
2405 */
2406/* The following hfa384x_* structures are arguments to
2407 * the usercb() for the different CTLX types.
2408 */
2409typedef hfa384x_cmdresult_t hfa384x_wridresult_t;
2410typedef hfa384x_cmdresult_t hfa384x_wmemresult_t;
2411
2412typedef struct hfa384x_rridresult
2413{
2414 UINT16 rid;
2415 const void *riddata;
2416 UINT riddata_len;
2417} hfa384x_rridresult_t;
2418
2419enum ctlx_state {
2420 CTLX_START = 0, /* Start state, not queued */
2421
2422 CTLX_COMPLETE, /* CTLX successfully completed */
2423 CTLX_REQ_FAILED, /* OUT URB completed w/ error */
2424
2425 CTLX_PENDING, /* Queued, data valid */
2426 CTLX_REQ_SUBMITTED, /* OUT URB submitted */
2427 CTLX_REQ_COMPLETE, /* OUT URB complete */
2428 CTLX_RESP_COMPLETE /* IN URB received */
2429};
2430typedef enum ctlx_state CTLX_STATE;
2431
2432struct hfa384x_usbctlx;
2433struct hfa384x;
2434
2435typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* );
2436
2437typedef void (*ctlx_usercb_t)(
2438 struct hfa384x *hw,
2439 void *ctlxresult,
2440 void *usercb_data);
2441
2442typedef struct hfa384x_usbctlx
2443{
2444 struct list_head list;
2445
2446 size_t outbufsize;
2447 hfa384x_usbout_t outbuf; /* pkt buf for OUT */
2448 hfa384x_usbin_t inbuf; /* pkt buf for IN(a copy) */
2449
2450 CTLX_STATE state; /* Tracks running state */
2451
2452 struct completion done;
2453 volatile int reapable; /* Food for the reaper task */
2454
2455 ctlx_cmdcb_t cmdcb; /* Async command callback */
2456 ctlx_usercb_t usercb; /* Async user callback, */
2457 void *usercb_data; /* at CTLX completion */
2458
2459 int variant; /* Identifies cmd variant */
2460} hfa384x_usbctlx_t;
2461
2462typedef struct hfa384x_usbctlxq
2463{
2464 spinlock_t lock;
2465 struct list_head pending;
2466 struct list_head active;
2467 struct list_head completing;
2468 struct list_head reapable;
2469} hfa384x_usbctlxq_t;
2470#endif
2471
2472typedef struct hfa484x_metacmd
2473{
2474 UINT16 cmd;
2475
2476 UINT16 parm0;
2477 UINT16 parm1;
2478 UINT16 parm2;
2479
2480#if 0 //XXX cmd irq stuff
2481 UINT16 bulkid; /* what RID/FID to copy down. */
2482 int bulklen; /* how much to copy from BAP */
2483 char *bulkdata; /* And to where? */
2484#endif
2485
2486 hfa384x_cmdresult_t result;
2487} hfa384x_metacmd_t;
2488
2489#define MAX_PRISM2_GRP_ADDR 16
2490#define MAX_GRP_ADDR 32
2491#define WLAN_COMMENT_MAX 80 /* Max. length of user comment string. */
2492
2493#define MM_SAT_PCF (BIT14)
2494#define MM_GCSD_PCF (BIT15)
2495#define MM_GCSD_PCF_EB (BIT14 | BIT15)
2496
2497#define WLAN_STATE_STOPPED 0 /* Network is not active. */
2498#define WLAN_STATE_STARTED 1 /* Network has been started. */
2499
2500#define WLAN_AUTH_MAX 60 /* Max. # of authenticated stations. */
2501#define WLAN_ACCESS_MAX 60 /* Max. # of stations in an access list. */
2502#define WLAN_ACCESS_NONE 0 /* No stations may be authenticated. */
2503#define WLAN_ACCESS_ALL 1 /* All stations may be authenticated. */
2504#define WLAN_ACCESS_ALLOW 2 /* Authenticate only "allowed" stations. */
2505#define WLAN_ACCESS_DENY 3 /* Do not authenticate "denied" stations. */
2506
2507/* XXX These are going away ASAP */
2508typedef struct prism2sta_authlist
2509{
2510 UINT cnt;
2511 UINT8 addr[WLAN_AUTH_MAX][WLAN_ADDR_LEN];
2512 UINT8 assoc[WLAN_AUTH_MAX];
2513} prism2sta_authlist_t;
2514
2515typedef struct prism2sta_accesslist
2516{
2517 UINT modify;
2518 UINT cnt;
2519 UINT8 addr[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
2520 UINT cnt1;
2521 UINT8 addr1[WLAN_ACCESS_MAX][WLAN_ADDR_LEN];
2522} prism2sta_accesslist_t;
2523
2524typedef struct hfa384x
2525{
2526#if (WLAN_HOSTIF != WLAN_USB)
2527 /* Resource config */
2528 UINT32 iobase;
2529 char __iomem *membase;
2530 UINT32 irq;
2531#else
2532 /* USB support data */
2533 struct usb_device *usb;
2534 struct urb rx_urb;
2535 struct sk_buff *rx_urb_skb;
2536 struct urb tx_urb;
2537 struct urb ctlx_urb;
2538 hfa384x_usbout_t txbuff;
2539 hfa384x_usbctlxq_t ctlxq;
2540 struct timer_list reqtimer;
2541 struct timer_list resptimer;
2542
2543 struct timer_list throttle;
2544
2545 struct tasklet_struct reaper_bh;
2546 struct tasklet_struct completion_bh;
2547
2548 struct work_struct usb_work;
2549
2550 unsigned long usb_flags;
2551#define THROTTLE_RX 0
2552#define THROTTLE_TX 1
2553#define WORK_RX_HALT 2
2554#define WORK_TX_HALT 3
2555#define WORK_RX_RESUME 4
2556#define WORK_TX_RESUME 5
2557
2558 unsigned short req_timer_done:1;
2559 unsigned short resp_timer_done:1;
2560
2561 int endp_in;
2562 int endp_out;
2563#endif /* !USB */
2564
2565#if (WLAN_HOSTIF == WLAN_PCMCIA)
2566#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
2567 struct pcmcia_device *pdev;
2568#else
2569 dev_link_t *link;
2570#endif
2571 dev_node_t node;
2572#endif
2573
2574 int sniff_fcs;
2575 int sniff_channel;
2576 int sniff_truncate;
2577 int sniffhdr;
2578
2579 wait_queue_head_t cmdq; /* wait queue itself */
2580
2581 /* Controller state */
2582 UINT32 state;
2583 UINT32 isap;
2584 UINT8 port_enabled[HFA384x_NUMPORTS_MAX];
2585#if (WLAN_HOSTIF != WLAN_USB)
2586 UINT auxen;
2587 UINT isram16;
2588#endif /* !USB */
2589
2590 /* Download support */
2591 UINT dlstate;
2592 hfa384x_downloadbuffer_t bufinfo;
2593 UINT16 dltimeout;
2594
2595#if (WLAN_HOSTIF != WLAN_USB)
2596 spinlock_t cmdlock;
2597 volatile int cmdflag; /* wait queue flag */
2598 hfa384x_metacmd_t *cmddata; /* for our async callback */
2599
2600 /* BAP support */
2601 spinlock_t baplock;
2602 struct tasklet_struct bap_tasklet;
2603
2604 /* MAC buffer ids */
2605 UINT16 txfid_head;
2606 UINT16 txfid_tail;
2607 UINT txfid_N;
2608 UINT16 txfid_queue[HFA384x_DRVR_FIDSTACKLEN_MAX];
2609 UINT16 infofid;
2610 struct semaphore infofid_sem;
2611#endif /* !USB */
2612
2613 int scanflag; /* to signal scan comlete */
2614 int join_ap; /* are we joined to a specific ap */
2615 int join_retries; /* number of join retries till we fail */
2616 hfa384x_JoinRequest_data_t joinreq; /* join request saved data */
2617
2618 wlandevice_t *wlandev;
2619 /* Timer to allow for the deferred processing of linkstatus messages */
2620 struct work_struct link_bh;
2621
2622 struct work_struct commsqual_bh;
2623 hfa384x_commsquality_t qual;
2624 struct timer_list commsqual_timer;
2625
2626 UINT16 link_status;
2627 UINT16 link_status_new;
2628 struct sk_buff_head authq;
2629
2630 /* And here we have stuff that used to be in priv */
2631
2632 /* State variables */
2633 UINT presniff_port_type;
2634 UINT16 presniff_wepflags;
2635 UINT32 dot11_desired_bss_type;
2636 int ap; /* AP flag: 0 - Station, 1 - Access Point. */
2637
2638 int dbmadjust;
2639
2640 /* Group Addresses - right now, there are up to a total
2641 of MAX_GRP_ADDR group addresses */
2642 UINT8 dot11_grp_addr[MAX_GRP_ADDR][WLAN_ADDR_LEN];
2643 UINT dot11_grpcnt;
2644
2645 /* Component Identities */
2646 hfa384x_compident_t ident_nic;
2647 hfa384x_compident_t ident_pri_fw;
2648 hfa384x_compident_t ident_sta_fw;
2649 hfa384x_compident_t ident_ap_fw;
2650 UINT16 mm_mods;
2651
2652 /* Supplier compatibility ranges */
2653 hfa384x_caplevel_t cap_sup_mfi;
2654 hfa384x_caplevel_t cap_sup_cfi;
2655 hfa384x_caplevel_t cap_sup_pri;
2656 hfa384x_caplevel_t cap_sup_sta;
2657 hfa384x_caplevel_t cap_sup_ap;
2658
2659 /* Actor compatibility ranges */
2660 hfa384x_caplevel_t cap_act_pri_cfi; /* pri f/w to controller interface */
2661 hfa384x_caplevel_t cap_act_sta_cfi; /* sta f/w to controller interface */
2662 hfa384x_caplevel_t cap_act_sta_mfi; /* sta f/w to modem interface */
2663 hfa384x_caplevel_t cap_act_ap_cfi; /* ap f/w to controller interface */
2664 hfa384x_caplevel_t cap_act_ap_mfi; /* ap f/w to modem interface */
2665
2666 UINT32 psusercount; /* Power save user count. */
2667 hfa384x_CommTallies32_t tallies; /* Communication tallies. */
2668 UINT8 comment[WLAN_COMMENT_MAX+1]; /* User comment */
2669
2670 /* Channel Info request results (AP only) */
2671 struct {
2672 atomic_t done;
2673 UINT8 count;
2674 hfa384x_ChInfoResult_t results;
2675 } channel_info;
2676
2677 hfa384x_InfFrame_t *scanresults;
2678
2679
2680 prism2sta_authlist_t authlist; /* Authenticated station list. */
2681 UINT accessmode; /* Access mode. */
2682 prism2sta_accesslist_t allow; /* Allowed station list. */
2683 prism2sta_accesslist_t deny; /* Denied station list. */
2684
2685} hfa384x_t;
2686
2687/*=============================================================*/
2688/*--- Function Declarations -----------------------------------*/
2689/*=============================================================*/
2690#if (WLAN_HOSTIF == WLAN_USB)
2691void
2692hfa384x_create(
2693 hfa384x_t *hw,
2694 struct usb_device *usb);
2695#else
2696void
2697hfa384x_create(
2698 hfa384x_t *hw,
2699 UINT irq,
2700 UINT32 iobase,
2701 UINT8 __iomem *membase);
2702#endif
2703
2704void hfa384x_destroy(hfa384x_t *hw);
2705
2706irqreturn_t
2707hfa384x_interrupt(int irq, void *dev_id PT_REGS);
2708int
2709hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis);
2710int
2711hfa384x_drvr_chinforesults( hfa384x_t *hw);
2712int
2713hfa384x_drvr_commtallies( hfa384x_t *hw);
2714int
2715hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport);
2716int
2717hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport);
2718int
2719hfa384x_drvr_flashdl_enable(hfa384x_t *hw);
2720int
2721hfa384x_drvr_flashdl_disable(hfa384x_t *hw);
2722int
2723hfa384x_drvr_flashdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
2724int
2725hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);
2726int
2727hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr);
2728int
2729hfa384x_drvr_hostscanresults( hfa384x_t *hw);
2730int
2731hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd);
2732int
2733hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 address, UINT32 *result);
2734int
2735hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 address, UINT32 data);
2736int
2737hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr);
2738int
2739hfa384x_drvr_ramdl_disable(hfa384x_t *hw);
2740int
2741hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len);
2742int
2743hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len);
2744int
2745hfa384x_drvr_scanresults( hfa384x_t *hw);
2746
2747int
2748hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len);
2749
2750static inline int
2751hfa384x_drvr_getconfig16(hfa384x_t *hw, UINT16 rid, void *val)
2752{
2753 int result = 0;
2754 result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT16));
2755 if ( result == 0 ) {
2756 *((UINT16*)val) = hfa384x2host_16(*((UINT16*)val));
2757 }
2758 return result;
2759}
2760
2761static inline int
2762hfa384x_drvr_getconfig32(hfa384x_t *hw, UINT16 rid, void *val)
2763{
2764 int result = 0;
2765
2766 result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(UINT32));
2767 if ( result == 0 ) {
2768 *((UINT32*)val) = hfa384x2host_32(*((UINT32*)val));
2769 }
2770
2771 return result;
2772}
2773
2774static inline int
2775hfa384x_drvr_setconfig16(hfa384x_t *hw, UINT16 rid, UINT16 val)
2776{
2777 UINT16 value = host2hfa384x_16(val);
2778 return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
2779}
2780
2781static inline int
2782hfa384x_drvr_setconfig32(hfa384x_t *hw, UINT16 rid, UINT32 val)
2783{
2784 UINT32 value = host2hfa384x_32(val);
2785 return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value));
2786}
2787
2788#if (WLAN_HOSTIF == WLAN_USB)
2789int
2790hfa384x_drvr_getconfig_async(hfa384x_t *hw,
2791 UINT16 rid,
2792 ctlx_usercb_t usercb,
2793 void *usercb_data);
2794
2795int
2796hfa384x_drvr_setconfig_async(hfa384x_t *hw,
2797 UINT16 rid,
2798 void *buf,
2799 UINT16 len,
2800 ctlx_usercb_t usercb,
2801 void *usercb_data);
2802#else
2803static inline int
2804hfa384x_drvr_setconfig_async(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len,
2805 void *ptr1, void *ptr2)
2806{
2807 (void)ptr1;
2808 (void)ptr2;
2809 return hfa384x_drvr_setconfig(hw, rid, buf, len);
2810}
2811#endif
2812
2813static inline int
2814hfa384x_drvr_setconfig16_async(hfa384x_t *hw, UINT16 rid, UINT16 val)
2815{
2816 UINT16 value = host2hfa384x_16(val);
2817 return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
2818 NULL , NULL);
2819}
2820
2821static inline int
2822hfa384x_drvr_setconfig32_async(hfa384x_t *hw, UINT16 rid, UINT32 val)
2823{
2824 UINT32 value = host2hfa384x_32(val);
2825 return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value),
2826 NULL , NULL);
2827}
2828
2829
2830int
2831hfa384x_drvr_start(hfa384x_t *hw);
2832int
2833hfa384x_drvr_stop(hfa384x_t *hw);
2834int
2835hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);
2836void
2837hfa384x_tx_timeout(wlandevice_t *wlandev);
2838
2839int
2840hfa384x_cmd_initialize(hfa384x_t *hw);
2841int
2842hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport);
2843int
2844hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport);
2845int
2846hfa384x_cmd_diagnose(hfa384x_t *hw);
2847int
2848hfa384x_cmd_allocate(hfa384x_t *hw, UINT16 len);
2849int
2850hfa384x_cmd_transmit(hfa384x_t *hw, UINT16 reclaim, UINT16 qos, UINT16 fid);
2851int
2852hfa384x_cmd_clearpersist(hfa384x_t *hw, UINT16 fid);
2853int
2854hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid, void *buf, UINT16 len);
2855int
2856hfa384x_cmd_inquire(hfa384x_t *hw, UINT16 fid);
2857int
2858hfa384x_cmd_access(hfa384x_t *hw, UINT16 write, UINT16 rid, void *buf, UINT16 len);
2859int
2860hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable);
2861int
2862hfa384x_cmd_download(
2863 hfa384x_t *hw,
2864 UINT16 mode,
2865 UINT16 lowaddr,
2866 UINT16 highaddr,
2867 UINT16 codelen);
2868int
2869hfa384x_cmd_aux_enable(hfa384x_t *hw, int force);
2870int
2871hfa384x_cmd_aux_disable(hfa384x_t *hw);
2872int
2873hfa384x_copy_from_bap(
2874 hfa384x_t *hw,
2875 UINT16 bap,
2876 UINT16 id,
2877 UINT16 offset,
2878 void *buf,
2879 UINT len);
2880int
2881hfa384x_copy_to_bap(
2882 hfa384x_t *hw,
2883 UINT16 bap,
2884 UINT16 id,
2885 UINT16 offset,
2886 void *buf,
2887 UINT len);
2888void
2889hfa384x_copy_from_aux(
2890 hfa384x_t *hw,
2891 UINT32 cardaddr,
2892 UINT32 auxctl,
2893 void *buf,
2894 UINT len);
2895void
2896hfa384x_copy_to_aux(
2897 hfa384x_t *hw,
2898 UINT32 cardaddr,
2899 UINT32 auxctl,
2900 void *buf,
2901 UINT len);
2902
2903#if (WLAN_HOSTIF != WLAN_USB)
2904
2905/*
2906 HFA384x is a LITTLE ENDIAN part.
2907
2908 the get/setreg functions implicitly byte-swap the data to LE.
2909 the _noswap variants do not perform a byte-swap on the data.
2910*/
2911
2912static inline UINT16
2913__hfa384x_getreg(hfa384x_t *hw, UINT reg);
2914
2915static inline void
2916__hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg);
2917
2918static inline UINT16
2919__hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg);
2920
2921static inline void
2922__hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg);
2923
2924#ifdef REVERSE_ENDIAN
2925#define hfa384x_getreg __hfa384x_getreg_noswap
2926#define hfa384x_setreg __hfa384x_setreg_noswap
2927#define hfa384x_getreg_noswap __hfa384x_getreg
2928#define hfa384x_setreg_noswap __hfa384x_setreg
2929#else
2930#define hfa384x_getreg __hfa384x_getreg
2931#define hfa384x_setreg __hfa384x_setreg
2932#define hfa384x_getreg_noswap __hfa384x_getreg_noswap
2933#define hfa384x_setreg_noswap __hfa384x_setreg_noswap
2934#endif
2935
2936/*----------------------------------------------------------------
2937* hfa384x_getreg
2938*
2939* Retrieve the value of one of the MAC registers. Done here
2940* because different PRISM2 MAC parts use different buses and such.
2941* NOTE: This function returns the value in HOST ORDER!!!!!!
2942*
2943* Arguments:
2944* hw MAC part structure
2945* reg Register identifier (offset for I/O based i/f)
2946*
2947* Returns:
2948* Value from the register in HOST ORDER!!!!
2949----------------------------------------------------------------*/
2950static inline UINT16
2951__hfa384x_getreg(hfa384x_t *hw, UINT reg)
2952{
2953/* printk(KERN_DEBUG "Reading from 0x%0x\n", hw->membase + reg); */
2954#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
2955 return wlan_inw_le16_to_cpu(hw->iobase+reg);
2956#elif (WLAN_HOSTIF == WLAN_PCI)
2957 return __le16_to_cpu(readw(hw->membase + reg));
2958#endif
2959}
2960
2961/*----------------------------------------------------------------
2962* hfa384x_setreg
2963*
2964* Set the value of one of the MAC registers. Done here
2965* because different PRISM2 MAC parts use different buses and such.
2966* NOTE: This function assumes the value is in HOST ORDER!!!!!!
2967*
2968* Arguments:
2969* hw MAC part structure
2970* val Value, in HOST ORDER!!, to put in the register
2971* reg Register identifier (offset for I/O based i/f)
2972*
2973* Returns:
2974* Nothing
2975----------------------------------------------------------------*/
2976static inline void
2977__hfa384x_setreg(hfa384x_t *hw, UINT16 val, UINT reg)
2978{
2979#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
2980 wlan_outw_cpu_to_le16( val, hw->iobase + reg);
2981 return;
2982#elif (WLAN_HOSTIF == WLAN_PCI)
2983 writew(__cpu_to_le16(val), hw->membase + reg);
2984 return;
2985#endif
2986}
2987
2988
2989/*----------------------------------------------------------------
2990* hfa384x_getreg_noswap
2991*
2992* Retrieve the value of one of the MAC registers. Done here
2993* because different PRISM2 MAC parts use different buses and such.
2994*
2995* Arguments:
2996* hw MAC part structure
2997* reg Register identifier (offset for I/O based i/f)
2998*
2999* Returns:
3000* Value from the register.
3001----------------------------------------------------------------*/
3002static inline UINT16
3003__hfa384x_getreg_noswap(hfa384x_t *hw, UINT reg)
3004{
3005#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
3006 return wlan_inw(hw->iobase+reg);
3007#elif (WLAN_HOSTIF == WLAN_PCI)
3008 return readw(hw->membase + reg);
3009#endif
3010}
3011
3012
3013/*----------------------------------------------------------------
3014* hfa384x_setreg_noswap
3015*
3016* Set the value of one of the MAC registers. Done here
3017* because different PRISM2 MAC parts use different buses and such.
3018*
3019* Arguments:
3020* hw MAC part structure
3021* val Value to put in the register
3022* reg Register identifier (offset for I/O based i/f)
3023*
3024* Returns:
3025* Nothing
3026----------------------------------------------------------------*/
3027static inline void
3028__hfa384x_setreg_noswap(hfa384x_t *hw, UINT16 val, UINT reg)
3029{
3030#if ((WLAN_HOSTIF == WLAN_PCMCIA) || (WLAN_HOSTIF == WLAN_PLX))
3031 wlan_outw( val, hw->iobase + reg);
3032 return;
3033#elif (WLAN_HOSTIF == WLAN_PCI)
3034 writew(val, hw->membase + reg);
3035 return;
3036#endif
3037}
3038
3039
3040static inline void hfa384x_events_all(hfa384x_t *hw)
3041{
3042 hfa384x_setreg(hw,
3043 HFA384x_INT_NORMAL
3044#ifdef CMD_IRQ
3045 | HFA384x_INTEN_CMD_SET(1)
3046#endif
3047 ,
3048 HFA384x_INTEN);
3049
3050}
3051
3052static inline void hfa384x_events_nobap(hfa384x_t *hw)
3053{
3054 hfa384x_setreg(hw,
3055 (HFA384x_INT_NORMAL & ~HFA384x_INT_BAP_OP)
3056#ifdef CMD_IRQ
3057 | HFA384x_INTEN_CMD_SET(1)
3058#endif
3059 ,
3060 HFA384x_INTEN);
3061
3062}
3063
3064#endif /* WLAN_HOSTIF != WLAN_USB */
3065#endif /* __KERNEL__ */
3066
3067#endif /* _HFA384x_H */
diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c
new file mode 100644
index 00000000000..db0c502f5d9
--- /dev/null
+++ b/drivers/staging/wlan-ng/hfa384x_usb.c
@@ -0,0 +1,5027 @@
1/* src/prism2/driver/hfa384x_usb.c
2*
3* Functions that talk to the USB variantof the Intersil hfa384x MAC
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file implements functions that correspond to the prism2/hfa384x
48* 802.11 MAC hardware and firmware host interface.
49*
50* The functions can be considered to represent several levels of
51* abstraction. The lowest level functions are simply C-callable wrappers
52* around the register accesses. The next higher level represents C-callable
53* prism2 API functions that match the Intersil documentation as closely
54* as is reasonable. The next higher layer implements common sequences
55* of invokations of the API layer (e.g. write to bap, followed by cmd).
56*
57* Common sequences:
58* hfa384x_drvr_xxx Highest level abstractions provided by the
59* hfa384x code. They are driver defined wrappers
60* for common sequences. These functions generally
61* use the services of the lower levels.
62*
63* hfa384x_drvr_xxxconfig An example of the drvr level abstraction. These
64* functions are wrappers for the RID get/set
65* sequence. They call copy_[to|from]_bap() and
66* cmd_access(). These functions operate on the
67* RIDs and buffers without validation. The caller
68* is responsible for that.
69*
70* API wrapper functions:
71* hfa384x_cmd_xxx functions that provide access to the f/w commands.
72* The function arguments correspond to each command
73* argument, even command arguments that get packed
74* into single registers. These functions _just_
75* issue the command by setting the cmd/parm regs
76* & reading the status/resp regs. Additional
77* activities required to fully use a command
78* (read/write from/to bap, get/set int status etc.)
79* are implemented separately. Think of these as
80* C-callable prism2 commands.
81*
82* Lowest Layer Functions:
83* hfa384x_docmd_xxx These functions implement the sequence required
84* to issue any prism2 command. Primarily used by the
85* hfa384x_cmd_xxx functions.
86*
87* hfa384x_bap_xxx BAP read/write access functions.
88* Note: we usually use BAP0 for non-interrupt context
89* and BAP1 for interrupt context.
90*
91* hfa384x_dl_xxx download related functions.
92*
93* Driver State Issues:
94* Note that there are two pairs of functions that manage the
95* 'initialized' and 'running' states of the hw/MAC combo. The four
96* functions are create(), destroy(), start(), and stop(). create()
97* sets up the data structures required to support the hfa384x_*
98* functions and destroy() cleans them up. The start() function gets
99* the actual hardware running and enables the interrupts. The stop()
100* function shuts the hardware down. The sequence should be:
101* create()
102* start()
103* .
104* . Do interesting things w/ the hardware
105* .
106* stop()
107* destroy()
108*
109* Note that destroy() can be called without calling stop() first.
110* --------------------------------------------------------------------
111*/
112
113/*================================================================*/
114/* System Includes */
115#define WLAN_DBVAR prism2_debug
116
117#include "version.h"
118
119
120#include <linux/version.h>
121
122#include <linux/module.h>
123#include <linux/kernel.h>
124#include <linux/sched.h>
125#include <linux/types.h>
126#include <linux/slab.h>
127#include <linux/wireless.h>
128#include <linux/netdevice.h>
129#include <linux/timer.h>
130#include <asm/io.h>
131#include <linux/delay.h>
132#include <asm/byteorder.h>
133#include <asm/bitops.h>
134#include <linux/list.h>
135#include <linux/usb.h>
136
137#include "wlan_compat.h"
138
139#if (WLAN_HOSTIF != WLAN_USB)
140#error "This file is specific to USB"
141#endif
142
143
144#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
145static int
146wait_for_completion_interruptible(struct completion *x)
147{
148 int ret = 0;
149
150 might_sleep();
151
152 spin_lock_irq(&x->wait.lock);
153 if (!x->done) {
154 DECLARE_WAITQUEUE(wait, current);
155
156 wait.flags |= WQ_FLAG_EXCLUSIVE;
157 __add_wait_queue_tail(&x->wait, &wait);
158 do {
159 if (signal_pending(current)) {
160 ret = -ERESTARTSYS;
161 __remove_wait_queue(&x->wait, &wait);
162 goto out;
163 }
164 __set_current_state(TASK_INTERRUPTIBLE);
165 spin_unlock_irq(&x->wait.lock);
166 schedule();
167 spin_lock_irq(&x->wait.lock);
168 } while (!x->done);
169 __remove_wait_queue(&x->wait, &wait);
170 }
171 x->done--;
172out:
173 spin_unlock_irq(&x->wait.lock);
174
175 return ret;
176}
177#endif
178
179#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,69)
180static void
181usb_init_urb(struct urb *urb)
182{
183 memset(urb, 0, sizeof(*urb));
184#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) /* tune me! */
185 urb->count = (atomic_t)ATOMIC_INIT(1);
186#endif
187 spin_lock_init(&urb->lock);
188}
189#endif
190
191#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) /* tune me! */
192# define SUBMIT_URB(u,f) usb_submit_urb(u,f)
193#else
194# define SUBMIT_URB(u,f) usb_submit_urb(u)
195#endif
196
197/*================================================================*/
198/* Project Includes */
199
200#include "p80211types.h"
201#include "p80211hdr.h"
202#include "p80211mgmt.h"
203#include "p80211conv.h"
204#include "p80211msg.h"
205#include "p80211netdev.h"
206#include "p80211req.h"
207#include "p80211metadef.h"
208#include "p80211metastruct.h"
209#include "hfa384x.h"
210#include "prism2mgmt.h"
211
212/*================================================================*/
213/* Local Constants */
214
215enum cmd_mode
216{
217 DOWAIT = 0,
218 DOASYNC
219};
220typedef enum cmd_mode CMD_MODE;
221
222#define THROTTLE_JIFFIES (HZ/8)
223
224/*================================================================*/
225/* Local Macros */
226
227#define ROUNDUP64(a) (((a)+63)&~63)
228
229/*================================================================*/
230/* Local Types */
231
232/*================================================================*/
233/* Local Static Definitions */
234extern int prism2_debug;
235
236/*================================================================*/
237/* Local Function Declarations */
238
239#ifdef DEBUG_USB
240static void
241dbprint_urb(struct urb* urb);
242#endif
243
244static void
245hfa384x_int_rxmonitor(
246 wlandevice_t *wlandev,
247 hfa384x_usb_rxfrm_t *rxfrm);
248
249static void
250hfa384x_usb_defer(struct work_struct *data);
251
252static int
253submit_rx_urb(hfa384x_t *hw, gfp_t flags);
254
255static int
256submit_tx_urb(hfa384x_t *hw, struct urb *tx_urb, gfp_t flags);
257
258/*---------------------------------------------------*/
259/* Callbacks */
260#ifdef URB_ONLY_CALLBACK
261static void
262hfa384x_usbout_callback(struct urb *urb);
263static void
264hfa384x_ctlxout_callback(struct urb *urb);
265static void
266hfa384x_usbin_callback(struct urb *urb);
267#else
268static void
269hfa384x_usbout_callback(struct urb *urb, struct pt_regs *regs);
270static void
271hfa384x_ctlxout_callback(struct urb *urb, struct pt_regs *regs);
272static void
273hfa384x_usbin_callback(struct urb *urb, struct pt_regs *regs);
274#endif
275
276static void
277hfa384x_usbin_txcompl(wlandevice_t *wlandev, hfa384x_usbin_t *usbin);
278
279static void
280hfa384x_usbin_rx(wlandevice_t *wlandev, struct sk_buff *skb);
281
282static void
283hfa384x_usbin_info(wlandevice_t *wlandev, hfa384x_usbin_t *usbin);
284
285static void
286hfa384x_usbout_tx(wlandevice_t *wlandev, hfa384x_usbout_t *usbout);
287
288static void hfa384x_usbin_ctlx(hfa384x_t *hw, hfa384x_usbin_t *usbin,
289 int urb_status);
290
291/*---------------------------------------------------*/
292/* Functions to support the prism2 usb command queue */
293
294static void
295hfa384x_usbctlxq_run(hfa384x_t *hw);
296
297static void
298hfa384x_usbctlx_reqtimerfn(unsigned long data);
299
300static void
301hfa384x_usbctlx_resptimerfn(unsigned long data);
302
303static void
304hfa384x_usb_throttlefn(unsigned long data);
305
306static void
307hfa384x_usbctlx_completion_task(unsigned long data);
308
309static void
310hfa384x_usbctlx_reaper_task(unsigned long data);
311
312static int
313hfa384x_usbctlx_submit(hfa384x_t *hw, hfa384x_usbctlx_t *ctlx);
314
315static void
316unlocked_usbctlx_complete(hfa384x_t *hw, hfa384x_usbctlx_t *ctlx);
317
318struct usbctlx_completor
319{
320 int (*complete)(struct usbctlx_completor*);
321};
322typedef struct usbctlx_completor usbctlx_completor_t;
323
324static int
325hfa384x_usbctlx_complete_sync(hfa384x_t *hw,
326 hfa384x_usbctlx_t *ctlx,
327 usbctlx_completor_t *completor);
328
329static int
330unlocked_usbctlx_cancel_async(hfa384x_t *hw, hfa384x_usbctlx_t *ctlx);
331
332static void
333hfa384x_cb_status(hfa384x_t *hw, const hfa384x_usbctlx_t *ctlx);
334
335static void
336hfa384x_cb_rrid(hfa384x_t *hw, const hfa384x_usbctlx_t *ctlx);
337
338static int
339usbctlx_get_status(const hfa384x_usb_cmdresp_t *cmdresp,
340 hfa384x_cmdresult_t *result);
341
342static void
343usbctlx_get_rridresult(const hfa384x_usb_rridresp_t *rridresp,
344 hfa384x_rridresult_t *result);
345
346/*---------------------------------------------------*/
347/* Low level req/resp CTLX formatters and submitters */
348static int
349hfa384x_docmd(
350 hfa384x_t *hw,
351 CMD_MODE mode,
352 hfa384x_metacmd_t *cmd,
353 ctlx_cmdcb_t cmdcb,
354 ctlx_usercb_t usercb,
355 void *usercb_data);
356
357static int
358hfa384x_dorrid(
359 hfa384x_t *hw,
360 CMD_MODE mode,
361 UINT16 rid,
362 void *riddata,
363 UINT riddatalen,
364 ctlx_cmdcb_t cmdcb,
365 ctlx_usercb_t usercb,
366 void *usercb_data);
367
368static int
369hfa384x_dowrid(
370 hfa384x_t *hw,
371 CMD_MODE mode,
372 UINT16 rid,
373 void *riddata,
374 UINT riddatalen,
375 ctlx_cmdcb_t cmdcb,
376 ctlx_usercb_t usercb,
377 void *usercb_data);
378
379static int
380hfa384x_dormem(
381 hfa384x_t *hw,
382 CMD_MODE mode,
383 UINT16 page,
384 UINT16 offset,
385 void *data,
386 UINT len,
387 ctlx_cmdcb_t cmdcb,
388 ctlx_usercb_t usercb,
389 void *usercb_data);
390
391static int
392hfa384x_dowmem(
393 hfa384x_t *hw,
394 CMD_MODE mode,
395 UINT16 page,
396 UINT16 offset,
397 void *data,
398 UINT len,
399 ctlx_cmdcb_t cmdcb,
400 ctlx_usercb_t usercb,
401 void *usercb_data);
402
403static int
404hfa384x_isgood_pdrcode(UINT16 pdrcode);
405
406/*================================================================*/
407/* Function Definitions */
408static inline const char* ctlxstr(CTLX_STATE s)
409{
410 static const char* ctlx_str[] = {
411 "Initial state",
412 "Complete",
413 "Request failed",
414 "Request pending",
415 "Request packet submitted",
416 "Request packet completed",
417 "Response packet completed"
418 };
419
420 return ctlx_str[s];
421};
422
423
424static inline hfa384x_usbctlx_t*
425get_active_ctlx(hfa384x_t *hw)
426{
427 return list_entry(hw->ctlxq.active.next, hfa384x_usbctlx_t, list);
428}
429
430
431#ifdef DEBUG_USB
432void
433dbprint_urb(struct urb* urb)
434{
435 WLAN_LOG_DEBUG(3,"urb->pipe=0x%08x\n", urb->pipe);
436 WLAN_LOG_DEBUG(3,"urb->status=0x%08x\n", urb->status);
437 WLAN_LOG_DEBUG(3,"urb->transfer_flags=0x%08x\n", urb->transfer_flags);
438 WLAN_LOG_DEBUG(3,"urb->transfer_buffer=0x%08x\n", (UINT)urb->transfer_buffer);
439 WLAN_LOG_DEBUG(3,"urb->transfer_buffer_length=0x%08x\n", urb->transfer_buffer_length);
440 WLAN_LOG_DEBUG(3,"urb->actual_length=0x%08x\n", urb->actual_length);
441 WLAN_LOG_DEBUG(3,"urb->bandwidth=0x%08x\n", urb->bandwidth);
442 WLAN_LOG_DEBUG(3,"urb->setup_packet(ctl)=0x%08x\n", (UINT)urb->setup_packet);
443 WLAN_LOG_DEBUG(3,"urb->start_frame(iso/irq)=0x%08x\n", urb->start_frame);
444 WLAN_LOG_DEBUG(3,"urb->interval(irq)=0x%08x\n", urb->interval);
445 WLAN_LOG_DEBUG(3,"urb->error_count(iso)=0x%08x\n", urb->error_count);
446 WLAN_LOG_DEBUG(3,"urb->timeout=0x%08x\n", urb->timeout);
447 WLAN_LOG_DEBUG(3,"urb->context=0x%08x\n", (UINT)urb->context);
448 WLAN_LOG_DEBUG(3,"urb->complete=0x%08x\n", (UINT)urb->complete);
449}
450#endif
451
452
453/*----------------------------------------------------------------
454* submit_rx_urb
455*
456* Listen for input data on the BULK-IN pipe. If the pipe has
457* stalled then schedule it to be reset.
458*
459* Arguments:
460* hw device struct
461* memflags memory allocation flags
462*
463* Returns:
464* error code from submission
465*
466* Call context:
467* Any
468----------------------------------------------------------------*/
469static int
470submit_rx_urb(hfa384x_t *hw, gfp_t memflags)
471{
472 struct sk_buff *skb;
473 int result;
474
475 DBFENTER;
476
477 skb = dev_alloc_skb(sizeof(hfa384x_usbin_t));
478 if (skb == NULL) {
479 result = -ENOMEM;
480 goto done;
481 }
482
483 /* Post the IN urb */
484 usb_fill_bulk_urb(&hw->rx_urb, hw->usb,
485 hw->endp_in,
486 skb->data, sizeof(hfa384x_usbin_t),
487 hfa384x_usbin_callback, hw->wlandev);
488
489 hw->rx_urb_skb = skb;
490
491 result = -ENOLINK;
492 if ( !hw->wlandev->hwremoved && !test_bit(WORK_RX_HALT, &hw->usb_flags)) {
493 result = SUBMIT_URB(&hw->rx_urb, memflags);
494
495 /* Check whether we need to reset the RX pipe */
496 if (result == -EPIPE) {
497 WLAN_LOG_WARNING("%s rx pipe stalled: requesting reset\n",
498 hw->wlandev->netdev->name);
499 if ( !test_and_set_bit(WORK_RX_HALT, &hw->usb_flags) )
500 schedule_work(&hw->usb_work);
501 }
502 }
503
504 /* Don't leak memory if anything should go wrong */
505 if (result != 0) {
506 dev_kfree_skb(skb);
507 hw->rx_urb_skb = NULL;
508 }
509
510 done:
511
512 DBFEXIT;
513 return result;
514}
515
516/*----------------------------------------------------------------
517* submit_tx_urb
518*
519* Prepares and submits the URB of transmitted data. If the
520* submission fails then it will schedule the output pipe to
521* be reset.
522*
523* Arguments:
524* hw device struct
525* tx_urb URB of data for tranmission
526* memflags memory allocation flags
527*
528* Returns:
529* error code from submission
530*
531* Call context:
532* Any
533----------------------------------------------------------------*/
534static int
535submit_tx_urb(hfa384x_t *hw, struct urb *tx_urb, gfp_t memflags)
536{
537 struct net_device *netdev = hw->wlandev->netdev;
538 int result;
539
540 DBFENTER;
541
542 result = -ENOLINK;
543 if ( netif_running(netdev) ) {
544
545 if ( !hw->wlandev->hwremoved && !test_bit(WORK_TX_HALT, &hw->usb_flags) ) {
546 result = SUBMIT_URB(tx_urb, memflags);
547
548 /* Test whether we need to reset the TX pipe */
549 if (result == -EPIPE) {
550 WLAN_LOG_WARNING("%s tx pipe stalled: requesting reset\n",
551 netdev->name);
552 set_bit(WORK_TX_HALT, &hw->usb_flags);
553 schedule_work(&hw->usb_work);
554 } else if (result == 0) {
555 netif_stop_queue(netdev);
556 }
557 }
558 }
559
560 DBFEXIT;
561
562 return result;
563}
564
565/*----------------------------------------------------------------
566* hfa394x_usb_defer
567*
568* There are some things that the USB stack cannot do while
569* in interrupt context, so we arrange this function to run
570* in process context.
571*
572* Arguments:
573* hw device structure
574*
575* Returns:
576* nothing
577*
578* Call context:
579* process (by design)
580----------------------------------------------------------------*/
581static void
582hfa384x_usb_defer(struct work_struct *data)
583{
584 hfa384x_t *hw = container_of(data, struct hfa384x, usb_work);
585 struct net_device *netdev = hw->wlandev->netdev;
586
587 DBFENTER;
588
589 /* Don't bother trying to reset anything if the plug
590 * has been pulled ...
591 */
592 if ( hw->wlandev->hwremoved ) {
593 DBFEXIT;
594 return;
595 }
596
597 /* Reception has stopped: try to reset the input pipe */
598 if (test_bit(WORK_RX_HALT, &hw->usb_flags)) {
599 int ret;
600
601 usb_kill_urb(&hw->rx_urb); /* Cannot be holding spinlock! */
602
603 ret = usb_clear_halt(hw->usb, hw->endp_in);
604 if (ret != 0) {
605 printk(KERN_ERR
606 "Failed to clear rx pipe for %s: err=%d\n",
607 netdev->name, ret);
608 } else {
609 printk(KERN_INFO "%s rx pipe reset complete.\n",
610 netdev->name);
611 clear_bit(WORK_RX_HALT, &hw->usb_flags);
612 set_bit(WORK_RX_RESUME, &hw->usb_flags);
613 }
614 }
615
616 /* Resume receiving data back from the device. */
617 if ( test_bit(WORK_RX_RESUME, &hw->usb_flags) ) {
618 int ret;
619
620 ret = submit_rx_urb(hw, GFP_KERNEL);
621 if (ret != 0) {
622 printk(KERN_ERR
623 "Failed to resume %s rx pipe.\n", netdev->name);
624 } else {
625 clear_bit(WORK_RX_RESUME, &hw->usb_flags);
626 }
627 }
628
629 /* Transmission has stopped: try to reset the output pipe */
630 if (test_bit(WORK_TX_HALT, &hw->usb_flags)) {
631 int ret;
632
633 usb_kill_urb(&hw->tx_urb);
634 ret = usb_clear_halt(hw->usb, hw->endp_out);
635 if (ret != 0) {
636 printk(KERN_ERR
637 "Failed to clear tx pipe for %s: err=%d\n",
638 netdev->name, ret);
639 } else {
640 printk(KERN_INFO "%s tx pipe reset complete.\n",
641 netdev->name);
642 clear_bit(WORK_TX_HALT, &hw->usb_flags);
643 set_bit(WORK_TX_RESUME, &hw->usb_flags);
644
645 /* Stopping the BULK-OUT pipe also blocked
646 * us from sending any more CTLX URBs, so
647 * we need to re-run our queue ...
648 */
649 hfa384x_usbctlxq_run(hw);
650 }
651 }
652
653 /* Resume transmitting. */
654 if ( test_and_clear_bit(WORK_TX_RESUME, &hw->usb_flags) ) {
655 p80211netdev_wake_queue(hw->wlandev);
656 }
657
658 DBFEXIT;
659}
660
661
662/*----------------------------------------------------------------
663* hfa384x_create
664*
665* Sets up the hfa384x_t data structure for use. Note this
666* does _not_ intialize the actual hardware, just the data structures
667* we use to keep track of its state.
668*
669* Arguments:
670* hw device structure
671* irq device irq number
672* iobase i/o base address for register access
673* membase memory base address for register access
674*
675* Returns:
676* nothing
677*
678* Side effects:
679*
680* Call context:
681* process
682----------------------------------------------------------------*/
683void
684hfa384x_create( hfa384x_t *hw, struct usb_device *usb)
685{
686 DBFENTER;
687
688 memset(hw, 0, sizeof(hfa384x_t));
689 hw->usb = usb;
690
691 /* set up the endpoints */
692 hw->endp_in = usb_rcvbulkpipe(usb, 1);
693 hw->endp_out = usb_sndbulkpipe(usb, 2);
694
695 /* Set up the waitq */
696 init_waitqueue_head(&hw->cmdq);
697
698 /* Initialize the command queue */
699 spin_lock_init(&hw->ctlxq.lock);
700 INIT_LIST_HEAD(&hw->ctlxq.pending);
701 INIT_LIST_HEAD(&hw->ctlxq.active);
702 INIT_LIST_HEAD(&hw->ctlxq.completing);
703 INIT_LIST_HEAD(&hw->ctlxq.reapable);
704
705 /* Initialize the authentication queue */
706 skb_queue_head_init(&hw->authq);
707
708 tasklet_init(&hw->reaper_bh,
709 hfa384x_usbctlx_reaper_task,
710 (unsigned long)hw);
711 tasklet_init(&hw->completion_bh,
712 hfa384x_usbctlx_completion_task,
713 (unsigned long)hw);
714 INIT_WORK2(&hw->link_bh, prism2sta_processing_defer);
715 INIT_WORK2(&hw->usb_work, hfa384x_usb_defer);
716
717 init_timer(&hw->throttle);
718 hw->throttle.function = hfa384x_usb_throttlefn;
719 hw->throttle.data = (unsigned long)hw;
720
721 init_timer(&hw->resptimer);
722 hw->resptimer.function = hfa384x_usbctlx_resptimerfn;
723 hw->resptimer.data = (unsigned long)hw;
724
725 init_timer(&hw->reqtimer);
726 hw->reqtimer.function = hfa384x_usbctlx_reqtimerfn;
727 hw->reqtimer.data = (unsigned long)hw;
728
729 usb_init_urb(&hw->rx_urb);
730 usb_init_urb(&hw->tx_urb);
731 usb_init_urb(&hw->ctlx_urb);
732
733 hw->link_status = HFA384x_LINK_NOTCONNECTED;
734 hw->state = HFA384x_STATE_INIT;
735
736 INIT_WORK2(&hw->commsqual_bh, prism2sta_commsqual_defer);
737 init_timer(&hw->commsqual_timer);
738 hw->commsqual_timer.data = (unsigned long) hw;
739 hw->commsqual_timer.function = prism2sta_commsqual_timer;
740
741 DBFEXIT;
742}
743
744
745/*----------------------------------------------------------------
746* hfa384x_destroy
747*
748* Partner to hfa384x_create(). This function cleans up the hw
749* structure so that it can be freed by the caller using a simple
750* kfree. Currently, this function is just a placeholder. If, at some
751* point in the future, an hw in the 'shutdown' state requires a 'deep'
752* kfree, this is where it should be done. Note that if this function
753* is called on a _running_ hw structure, the drvr_stop() function is
754* called.
755*
756* Arguments:
757* hw device structure
758*
759* Returns:
760* nothing, this function is not allowed to fail.
761*
762* Side effects:
763*
764* Call context:
765* process
766----------------------------------------------------------------*/
767void
768hfa384x_destroy( hfa384x_t *hw)
769{
770 struct sk_buff *skb;
771
772 DBFENTER;
773
774 if ( hw->state == HFA384x_STATE_RUNNING ) {
775 hfa384x_drvr_stop(hw);
776 }
777 hw->state = HFA384x_STATE_PREINIT;
778
779 if (hw->scanresults) {
780 kfree(hw->scanresults);
781 hw->scanresults = NULL;
782 }
783
784 /* Now to clean out the auth queue */
785 while ( (skb = skb_dequeue(&hw->authq)) ) {
786 dev_kfree_skb(skb);
787 }
788
789 DBFEXIT;
790}
791
792
793/*----------------------------------------------------------------
794 */
795static hfa384x_usbctlx_t* usbctlx_alloc(void)
796{
797 hfa384x_usbctlx_t *ctlx;
798
799 ctlx = kmalloc(sizeof(*ctlx), in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
800 if (ctlx != NULL)
801 {
802 memset(ctlx, 0, sizeof(*ctlx));
803 init_completion(&ctlx->done);
804 }
805
806 return ctlx;
807}
808
809
810/*----------------------------------------------------------------
811 *
812----------------------------------------------------------------*/
813static int
814usbctlx_get_status(const hfa384x_usb_cmdresp_t *cmdresp,
815 hfa384x_cmdresult_t *result)
816{
817 DBFENTER;
818
819 result->status = hfa384x2host_16(cmdresp->status);
820 result->resp0 = hfa384x2host_16(cmdresp->resp0);
821 result->resp1 = hfa384x2host_16(cmdresp->resp1);
822 result->resp2 = hfa384x2host_16(cmdresp->resp2);
823
824 WLAN_LOG_DEBUG(4, "cmdresult:status=0x%04x "
825 "resp0=0x%04x resp1=0x%04x resp2=0x%04x\n",
826 result->status,
827 result->resp0,
828 result->resp1,
829 result->resp2);
830
831 DBFEXIT;
832 return (result->status & HFA384x_STATUS_RESULT);
833}
834
835static void
836usbctlx_get_rridresult(const hfa384x_usb_rridresp_t *rridresp,
837 hfa384x_rridresult_t *result)
838{
839 DBFENTER;
840
841 result->rid = hfa384x2host_16(rridresp->rid);
842 result->riddata = rridresp->data;
843 result->riddata_len = ((hfa384x2host_16(rridresp->frmlen) - 1) * 2);
844
845 DBFEXIT;
846}
847
848
849/*----------------------------------------------------------------
850* Completor object:
851* This completor must be passed to hfa384x_usbctlx_complete_sync()
852* when processing a CTLX that returns a hfa384x_cmdresult_t structure.
853----------------------------------------------------------------*/
854struct usbctlx_cmd_completor
855{
856 usbctlx_completor_t head;
857
858 const hfa384x_usb_cmdresp_t *cmdresp;
859 hfa384x_cmdresult_t *result;
860};
861typedef struct usbctlx_cmd_completor usbctlx_cmd_completor_t;
862
863static int usbctlx_cmd_completor_fn(usbctlx_completor_t *head)
864{
865 usbctlx_cmd_completor_t *complete = (usbctlx_cmd_completor_t*)head;
866 return usbctlx_get_status(complete->cmdresp, complete->result);
867}
868
869static inline usbctlx_completor_t*
870init_cmd_completor(usbctlx_cmd_completor_t *completor,
871 const hfa384x_usb_cmdresp_t *cmdresp,
872 hfa384x_cmdresult_t *result)
873{
874 completor->head.complete = usbctlx_cmd_completor_fn;
875 completor->cmdresp = cmdresp;
876 completor->result = result;
877 return &(completor->head);
878}
879
880/*----------------------------------------------------------------
881* Completor object:
882* This completor must be passed to hfa384x_usbctlx_complete_sync()
883* when processing a CTLX that reads a RID.
884----------------------------------------------------------------*/
885struct usbctlx_rrid_completor
886{
887 usbctlx_completor_t head;
888
889 const hfa384x_usb_rridresp_t *rridresp;
890 void *riddata;
891 UINT riddatalen;
892};
893typedef struct usbctlx_rrid_completor usbctlx_rrid_completor_t;
894
895static int usbctlx_rrid_completor_fn(usbctlx_completor_t *head)
896{
897 usbctlx_rrid_completor_t *complete = (usbctlx_rrid_completor_t*)head;
898 hfa384x_rridresult_t rridresult;
899
900 usbctlx_get_rridresult(complete->rridresp, &rridresult);
901
902 /* Validate the length, note body len calculation in bytes */
903 if ( rridresult.riddata_len != complete->riddatalen ) {
904 WLAN_LOG_WARNING(
905 "RID len mismatch, rid=0x%04x hlen=%d fwlen=%d\n",
906 rridresult.rid,
907 complete->riddatalen,
908 rridresult.riddata_len);
909 return -ENODATA;
910 }
911
912 memcpy(complete->riddata,
913 rridresult.riddata,
914 complete->riddatalen);
915 return 0;
916}
917
918static inline usbctlx_completor_t*
919init_rrid_completor(usbctlx_rrid_completor_t *completor,
920 const hfa384x_usb_rridresp_t *rridresp,
921 void *riddata,
922 UINT riddatalen)
923{
924 completor->head.complete = usbctlx_rrid_completor_fn;
925 completor->rridresp = rridresp;
926 completor->riddata = riddata;
927 completor->riddatalen = riddatalen;
928 return &(completor->head);
929}
930
931/*----------------------------------------------------------------
932* Completor object:
933* Interprets the results of a synchronous RID-write
934----------------------------------------------------------------*/
935typedef usbctlx_cmd_completor_t usbctlx_wrid_completor_t;
936#define init_wrid_completor init_cmd_completor
937
938/*----------------------------------------------------------------
939* Completor object:
940* Interprets the results of a synchronous memory-write
941----------------------------------------------------------------*/
942typedef usbctlx_cmd_completor_t usbctlx_wmem_completor_t;
943#define init_wmem_completor init_cmd_completor
944
945/*----------------------------------------------------------------
946* Completor object:
947* Interprets the results of a synchronous memory-read
948----------------------------------------------------------------*/
949struct usbctlx_rmem_completor
950{
951 usbctlx_completor_t head;
952
953 const hfa384x_usb_rmemresp_t *rmemresp;
954 void *data;
955 UINT len;
956};
957typedef struct usbctlx_rmem_completor usbctlx_rmem_completor_t;
958
959static int usbctlx_rmem_completor_fn(usbctlx_completor_t *head)
960{
961 usbctlx_rmem_completor_t *complete = (usbctlx_rmem_completor_t*)head;
962
963 WLAN_LOG_DEBUG(4,"rmemresp:len=%d\n", complete->rmemresp->frmlen);
964 memcpy(complete->data, complete->rmemresp->data, complete->len);
965 return 0;
966}
967
968static inline usbctlx_completor_t*
969init_rmem_completor(usbctlx_rmem_completor_t *completor,
970 hfa384x_usb_rmemresp_t *rmemresp,
971 void *data,
972 UINT len)
973{
974 completor->head.complete = usbctlx_rmem_completor_fn;
975 completor->rmemresp = rmemresp;
976 completor->data = data;
977 completor->len = len;
978 return &(completor->head);
979}
980
981/*----------------------------------------------------------------
982* hfa384x_cb_status
983*
984* Ctlx_complete handler for async CMD type control exchanges.
985* mark the hw struct as such.
986*
987* Note: If the handling is changed here, it should probably be
988* changed in docmd as well.
989*
990* Arguments:
991* hw hw struct
992* ctlx completed CTLX
993*
994* Returns:
995* nothing
996*
997* Side effects:
998*
999* Call context:
1000* interrupt
1001----------------------------------------------------------------*/
1002static void
1003hfa384x_cb_status(hfa384x_t *hw, const hfa384x_usbctlx_t *ctlx)
1004{
1005 DBFENTER;
1006
1007 if ( ctlx->usercb != NULL ) {
1008 hfa384x_cmdresult_t cmdresult;
1009
1010 if (ctlx->state != CTLX_COMPLETE) {
1011 memset(&cmdresult, 0, sizeof(cmdresult));
1012 cmdresult.status = HFA384x_STATUS_RESULT_SET(HFA384x_CMD_ERR);
1013 } else {
1014 usbctlx_get_status(&ctlx->inbuf.cmdresp, &cmdresult);
1015 }
1016
1017 ctlx->usercb(hw, &cmdresult, ctlx->usercb_data);
1018 }
1019
1020 DBFEXIT;
1021}
1022
1023
1024/*----------------------------------------------------------------
1025* hfa384x_cb_rrid
1026*
1027* CTLX completion handler for async RRID type control exchanges.
1028*
1029* Note: If the handling is changed here, it should probably be
1030* changed in dorrid as well.
1031*
1032* Arguments:
1033* hw hw struct
1034* ctlx completed CTLX
1035*
1036* Returns:
1037* nothing
1038*
1039* Side effects:
1040*
1041* Call context:
1042* interrupt
1043----------------------------------------------------------------*/
1044static void
1045hfa384x_cb_rrid(hfa384x_t *hw, const hfa384x_usbctlx_t *ctlx)
1046{
1047 DBFENTER;
1048
1049 if ( ctlx->usercb != NULL ) {
1050 hfa384x_rridresult_t rridresult;
1051
1052 if (ctlx->state != CTLX_COMPLETE) {
1053 memset(&rridresult, 0, sizeof(rridresult));
1054 rridresult.rid = hfa384x2host_16(ctlx->outbuf.rridreq.rid);
1055 } else {
1056 usbctlx_get_rridresult(&ctlx->inbuf.rridresp, &rridresult);
1057 }
1058
1059 ctlx->usercb(hw, &rridresult, ctlx->usercb_data);
1060 }
1061
1062 DBFEXIT;
1063}
1064
1065static inline int
1066hfa384x_docmd_wait(hfa384x_t *hw, hfa384x_metacmd_t *cmd)
1067{
1068 return hfa384x_docmd(hw, DOWAIT, cmd, NULL, NULL, NULL);
1069}
1070
1071static inline int
1072hfa384x_docmd_async(hfa384x_t *hw,
1073 hfa384x_metacmd_t *cmd,
1074 ctlx_cmdcb_t cmdcb,
1075 ctlx_usercb_t usercb,
1076 void *usercb_data)
1077{
1078 return hfa384x_docmd(hw, DOASYNC, cmd,
1079 cmdcb, usercb, usercb_data);
1080}
1081
1082static inline int
1083hfa384x_dorrid_wait(hfa384x_t *hw, UINT16 rid, void *riddata, UINT riddatalen)
1084{
1085 return hfa384x_dorrid(hw, DOWAIT,
1086 rid, riddata, riddatalen,
1087 NULL, NULL, NULL);
1088}
1089
1090static inline int
1091hfa384x_dorrid_async(hfa384x_t *hw,
1092 UINT16 rid, void *riddata, UINT riddatalen,
1093 ctlx_cmdcb_t cmdcb,
1094 ctlx_usercb_t usercb,
1095 void *usercb_data)
1096{
1097 return hfa384x_dorrid(hw, DOASYNC,
1098 rid, riddata, riddatalen,
1099 cmdcb, usercb, usercb_data);
1100}
1101
1102static inline int
1103hfa384x_dowrid_wait(hfa384x_t *hw, UINT16 rid, void *riddata, UINT riddatalen)
1104{
1105 return hfa384x_dowrid(hw, DOWAIT,
1106 rid, riddata, riddatalen,
1107 NULL, NULL, NULL);
1108}
1109
1110static inline int
1111hfa384x_dowrid_async(hfa384x_t *hw,
1112 UINT16 rid, void *riddata, UINT riddatalen,
1113 ctlx_cmdcb_t cmdcb,
1114 ctlx_usercb_t usercb,
1115 void *usercb_data)
1116{
1117 return hfa384x_dowrid(hw, DOASYNC,
1118 rid, riddata, riddatalen,
1119 cmdcb, usercb, usercb_data);
1120}
1121
1122static inline int
1123hfa384x_dormem_wait(hfa384x_t *hw,
1124 UINT16 page, UINT16 offset, void *data, UINT len)
1125{
1126 return hfa384x_dormem(hw, DOWAIT,
1127 page, offset, data, len,
1128 NULL, NULL, NULL);
1129}
1130
1131static inline int
1132hfa384x_dormem_async(hfa384x_t *hw,
1133 UINT16 page, UINT16 offset, void *data, UINT len,
1134 ctlx_cmdcb_t cmdcb,
1135 ctlx_usercb_t usercb,
1136 void *usercb_data)
1137{
1138 return hfa384x_dormem(hw, DOASYNC,
1139 page, offset, data, len,
1140 cmdcb, usercb, usercb_data);
1141}
1142
1143static inline int
1144hfa384x_dowmem_wait(
1145 hfa384x_t *hw,
1146 UINT16 page,
1147 UINT16 offset,
1148 void *data,
1149 UINT len)
1150{
1151 return hfa384x_dowmem(hw, DOWAIT,
1152 page, offset, data, len,
1153 NULL, NULL, NULL);
1154}
1155
1156static inline int
1157hfa384x_dowmem_async(
1158 hfa384x_t *hw,
1159 UINT16 page,
1160 UINT16 offset,
1161 void *data,
1162 UINT len,
1163 ctlx_cmdcb_t cmdcb,
1164 ctlx_usercb_t usercb,
1165 void *usercb_data)
1166{
1167 return hfa384x_dowmem(hw, DOASYNC,
1168 page, offset, data, len,
1169 cmdcb, usercb, usercb_data);
1170}
1171
1172/*----------------------------------------------------------------
1173* hfa384x_cmd_initialize
1174*
1175* Issues the initialize command and sets the hw->state based
1176* on the result.
1177*
1178* Arguments:
1179* hw device structure
1180*
1181* Returns:
1182* 0 success
1183* >0 f/w reported error - f/w status code
1184* <0 driver reported error
1185*
1186* Side effects:
1187*
1188* Call context:
1189* process
1190----------------------------------------------------------------*/
1191int
1192hfa384x_cmd_initialize(hfa384x_t *hw)
1193{
1194 int result = 0;
1195 int i;
1196 hfa384x_metacmd_t cmd;
1197
1198 DBFENTER;
1199
1200
1201 cmd.cmd = HFA384x_CMDCODE_INIT;
1202 cmd.parm0 = 0;
1203 cmd.parm1 = 0;
1204 cmd.parm2 = 0;
1205
1206 result = hfa384x_docmd_wait(hw, &cmd);
1207
1208
1209 WLAN_LOG_DEBUG(3,"cmdresp.init: "
1210 "status=0x%04x, resp0=0x%04x, "
1211 "resp1=0x%04x, resp2=0x%04x\n",
1212 cmd.result.status,
1213 cmd.result.resp0,
1214 cmd.result.resp1,
1215 cmd.result.resp2);
1216 if ( result == 0 ) {
1217 for ( i = 0; i < HFA384x_NUMPORTS_MAX; i++) {
1218 hw->port_enabled[i] = 0;
1219 }
1220 }
1221
1222 hw->link_status = HFA384x_LINK_NOTCONNECTED;
1223
1224 DBFEXIT;
1225 return result;
1226}
1227
1228
1229/*----------------------------------------------------------------
1230* hfa384x_cmd_disable
1231*
1232* Issues the disable command to stop communications on one of
1233* the MACs 'ports'.
1234*
1235* Arguments:
1236* hw device structure
1237* macport MAC port number (host order)
1238*
1239* Returns:
1240* 0 success
1241* >0 f/w reported failure - f/w status code
1242* <0 driver reported error (timeout|bad arg)
1243*
1244* Side effects:
1245*
1246* Call context:
1247* process
1248----------------------------------------------------------------*/
1249int hfa384x_cmd_disable(hfa384x_t *hw, UINT16 macport)
1250{
1251 int result = 0;
1252 hfa384x_metacmd_t cmd;
1253
1254 DBFENTER;
1255
1256 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_DISABLE) |
1257 HFA384x_CMD_MACPORT_SET(macport);
1258 cmd.parm0 = 0;
1259 cmd.parm1 = 0;
1260 cmd.parm2 = 0;
1261
1262 result = hfa384x_docmd_wait(hw, &cmd);
1263
1264 DBFEXIT;
1265 return result;
1266}
1267
1268
1269/*----------------------------------------------------------------
1270* hfa384x_cmd_enable
1271*
1272* Issues the enable command to enable communications on one of
1273* the MACs 'ports'.
1274*
1275* Arguments:
1276* hw device structure
1277* macport MAC port number
1278*
1279* Returns:
1280* 0 success
1281* >0 f/w reported failure - f/w status code
1282* <0 driver reported error (timeout|bad arg)
1283*
1284* Side effects:
1285*
1286* Call context:
1287* process
1288----------------------------------------------------------------*/
1289int hfa384x_cmd_enable(hfa384x_t *hw, UINT16 macport)
1290{
1291 int result = 0;
1292 hfa384x_metacmd_t cmd;
1293
1294 DBFENTER;
1295
1296 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_ENABLE) |
1297 HFA384x_CMD_MACPORT_SET(macport);
1298 cmd.parm0 = 0;
1299 cmd.parm1 = 0;
1300 cmd.parm2 = 0;
1301
1302 result = hfa384x_docmd_wait(hw, &cmd);
1303
1304 DBFEXIT;
1305 return result;
1306}
1307
1308
1309/*----------------------------------------------------------------
1310* hfa384x_cmd_notify
1311*
1312* Sends an info frame to the firmware to alter the behavior
1313* of the f/w asynch processes. Can only be called when the MAC
1314* is in the enabled state.
1315*
1316* Arguments:
1317* hw device structure
1318* reclaim [0|1] indicates whether the given FID will
1319* be handed back (via Alloc event) for reuse.
1320* (host order)
1321* fid FID of buffer containing the frame that was
1322* previously copied to MAC memory via the bap.
1323* (host order)
1324*
1325* Returns:
1326* 0 success
1327* >0 f/w reported failure - f/w status code
1328* <0 driver reported error (timeout|bad arg)
1329*
1330* Side effects:
1331* hw->resp0 will contain the FID being used by async notify
1332* process. If reclaim==0, resp0 will be the same as the fid
1333* argument. If reclaim==1, resp0 will be the different.
1334*
1335* Call context:
1336* process
1337----------------------------------------------------------------*/
1338int hfa384x_cmd_notify(hfa384x_t *hw, UINT16 reclaim, UINT16 fid,
1339 void *buf, UINT16 len)
1340{
1341#if 0
1342 int result = 0;
1343 UINT16 cmd;
1344 DBFENTER;
1345 cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_NOTIFY) |
1346 HFA384x_CMD_RECL_SET(reclaim);
1347 result = hfa384x_docmd_wait(hw, cmd);
1348
1349 DBFEXIT;
1350 return result;
1351#endif
1352return 0;
1353}
1354
1355
1356#if 0
1357/*----------------------------------------------------------------
1358* hfa384x_cmd_inquiry
1359*
1360* Requests an info frame from the firmware. The info frame will
1361* be delivered asynchronously via the Info event.
1362*
1363* Arguments:
1364* hw device structure
1365* fid FID of the info frame requested. (host order)
1366*
1367* Returns:
1368* 0 success
1369* >0 f/w reported failure - f/w status code
1370* <0 driver reported error (timeout|bad arg)
1371*
1372* Side effects:
1373*
1374* Call context:
1375* process
1376----------------------------------------------------------------*/
1377int hfa384x_cmd_inquiry(hfa384x_t *hw, UINT16 fid)
1378{
1379 int result = 0;
1380 hfa384x_metacmd_t cmd;
1381
1382 DBFENTER;
1383
1384 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_INQ);
1385 cmd.parm0 = 0;
1386 cmd.parm1 = 0;
1387 cmd.parm2 = 0;
1388
1389 result = hfa384x_docmd_wait(hw, &cmd);
1390
1391 DBFEXIT;
1392 return result;
1393}
1394#endif
1395
1396
1397/*----------------------------------------------------------------
1398* hfa384x_cmd_monitor
1399*
1400* Enables the 'monitor mode' of the MAC. Here's the description of
1401* monitor mode that I've received thus far:
1402*
1403* "The "monitor mode" of operation is that the MAC passes all
1404* frames for which the PLCP checks are correct. All received
1405* MPDUs are passed to the host with MAC Port = 7, with a
1406* receive status of good, FCS error, or undecryptable. Passing
1407* certain MPDUs is a violation of the 802.11 standard, but useful
1408* for a debugging tool." Normal communication is not possible
1409* while monitor mode is enabled.
1410*
1411* Arguments:
1412* hw device structure
1413* enable a code (0x0b|0x0f) that enables/disables
1414* monitor mode. (host order)
1415*
1416* Returns:
1417* 0 success
1418* >0 f/w reported failure - f/w status code
1419* <0 driver reported error (timeout|bad arg)
1420*
1421* Side effects:
1422*
1423* Call context:
1424* process
1425----------------------------------------------------------------*/
1426int hfa384x_cmd_monitor(hfa384x_t *hw, UINT16 enable)
1427{
1428 int result = 0;
1429 hfa384x_metacmd_t cmd;
1430
1431 DBFENTER;
1432
1433 cmd.cmd = HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_MONITOR) |
1434 HFA384x_CMD_AINFO_SET(enable);
1435 cmd.parm0 = 0;
1436 cmd.parm1 = 0;
1437 cmd.parm2 = 0;
1438
1439 result = hfa384x_docmd_wait(hw, &cmd);
1440
1441 DBFEXIT;
1442 return result;
1443}
1444
1445
1446/*----------------------------------------------------------------
1447* hfa384x_cmd_download
1448*
1449* Sets the controls for the MAC controller code/data download
1450* process. The arguments set the mode and address associated
1451* with a download. Note that the aux registers should be enabled
1452* prior to setting one of the download enable modes.
1453*
1454* Arguments:
1455* hw device structure
1456* mode 0 - Disable programming and begin code exec
1457* 1 - Enable volatile mem programming
1458* 2 - Enable non-volatile mem programming
1459* 3 - Program non-volatile section from NV download
1460* buffer.
1461* (host order)
1462* lowaddr
1463* highaddr For mode 1, sets the high & low order bits of
1464* the "destination address". This address will be
1465* the execution start address when download is
1466* subsequently disabled.
1467* For mode 2, sets the high & low order bits of
1468* the destination in NV ram.
1469* For modes 0 & 3, should be zero. (host order)
1470* NOTE: these are CMD format.
1471* codelen Length of the data to write in mode 2,
1472* zero otherwise. (host order)
1473*
1474* Returns:
1475* 0 success
1476* >0 f/w reported failure - f/w status code
1477* <0 driver reported error (timeout|bad arg)
1478*
1479* Side effects:
1480*
1481* Call context:
1482* process
1483----------------------------------------------------------------*/
1484int hfa384x_cmd_download(hfa384x_t *hw, UINT16 mode, UINT16 lowaddr,
1485 UINT16 highaddr, UINT16 codelen)
1486{
1487 int result = 0;
1488 hfa384x_metacmd_t cmd;
1489
1490 DBFENTER;
1491 WLAN_LOG_DEBUG(5,
1492 "mode=%d, lowaddr=0x%04x, highaddr=0x%04x, codelen=%d\n",
1493 mode, lowaddr, highaddr, codelen);
1494
1495 cmd.cmd = (HFA384x_CMD_CMDCODE_SET(HFA384x_CMDCODE_DOWNLD) |
1496 HFA384x_CMD_PROGMODE_SET(mode));
1497
1498 cmd.parm0 = lowaddr;
1499 cmd.parm1 = highaddr;
1500 cmd.parm2 = codelen;
1501
1502 result = hfa384x_docmd_wait(hw, &cmd);
1503
1504 DBFEXIT;
1505 return result;
1506}
1507
1508
1509/*----------------------------------------------------------------
1510* hfa384x_copy_from_aux
1511*
1512* Copies a collection of bytes from the controller memory. The
1513* Auxiliary port MUST be enabled prior to calling this function.
1514* We _might_ be in a download state.
1515*
1516* Arguments:
1517* hw device structure
1518* cardaddr address in hfa384x data space to read
1519* auxctl address space select
1520* buf ptr to destination host buffer
1521* len length of data to transfer (in bytes)
1522*
1523* Returns:
1524* nothing
1525*
1526* Side effects:
1527* buf contains the data copied
1528*
1529* Call context:
1530* process
1531* interrupt
1532----------------------------------------------------------------*/
1533void
1534hfa384x_copy_from_aux(
1535 hfa384x_t *hw, UINT32 cardaddr, UINT32 auxctl, void *buf, UINT len)
1536{
1537 DBFENTER;
1538 WLAN_LOG_ERROR("not used in USB.\n");
1539 DBFEXIT;
1540}
1541
1542
1543/*----------------------------------------------------------------
1544* hfa384x_copy_to_aux
1545*
1546* Copies a collection of bytes to the controller memory. The
1547* Auxiliary port MUST be enabled prior to calling this function.
1548* We _might_ be in a download state.
1549*
1550* Arguments:
1551* hw device structure
1552* cardaddr address in hfa384x data space to read
1553* auxctl address space select
1554* buf ptr to destination host buffer
1555* len length of data to transfer (in bytes)
1556*
1557* Returns:
1558* nothing
1559*
1560* Side effects:
1561* Controller memory now contains a copy of buf
1562*
1563* Call context:
1564* process
1565* interrupt
1566----------------------------------------------------------------*/
1567void
1568hfa384x_copy_to_aux(
1569 hfa384x_t *hw, UINT32 cardaddr, UINT32 auxctl, void *buf, UINT len)
1570{
1571 DBFENTER;
1572 WLAN_LOG_ERROR("not used in USB.\n");
1573 DBFEXIT;
1574}
1575
1576
1577/*----------------------------------------------------------------
1578* hfa384x_corereset
1579*
1580* Perform a reset of the hfa38xx MAC core. We assume that the hw
1581* structure is in its "created" state. That is, it is initialized
1582* with proper values. Note that if a reset is done after the
1583* device has been active for awhile, the caller might have to clean
1584* up some leftover cruft in the hw structure.
1585*
1586* Arguments:
1587* hw device structure
1588* holdtime how long (in ms) to hold the reset
1589* settletime how long (in ms) to wait after releasing
1590* the reset
1591*
1592* Returns:
1593* nothing
1594*
1595* Side effects:
1596*
1597* Call context:
1598* process
1599----------------------------------------------------------------*/
1600int hfa384x_corereset(hfa384x_t *hw, int holdtime, int settletime, int genesis)
1601{
1602#if 0
1603#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
1604 struct usb_device *parent = hw->usb->parent;
1605 int i;
1606 int port = -1;
1607#endif
1608#endif
1609 int result = 0;
1610
1611
1612#define P2_USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER)
1613#define P2_USB_FEAT_RESET 4
1614#define P2_USB_FEAT_C_RESET 20
1615
1616 DBFENTER;
1617
1618#if 0
1619#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
1620 /* Find the hub port */
1621 for ( i = 0; i < parent->maxchild; i++) {
1622 if (parent->children[i] == hw->usb) {
1623 port = i;
1624 break;
1625 }
1626 }
1627 if (port < 0) return -ENOENT;
1628
1629 /* Set and clear the reset */
1630 usb_control_msg(parent, usb_sndctrlpipe(parent, 0),
1631 USB_REQ_SET_FEATURE, P2_USB_RT_PORT, P2_USB_FEAT_RESET,
1632 port+1, NULL, 0, 1*HZ);
1633 wait_ms(holdtime);
1634 usb_control_msg(parent, usb_sndctrlpipe(parent, 0),
1635 USB_REQ_CLEAR_FEATURE, P2_USB_RT_PORT, P2_USB_FEAT_C_RESET,
1636 port+1, NULL, 0, 1*HZ);
1637 wait_ms(settletime);
1638
1639 /* Set the device address */
1640 result=usb_set_address(hw->usb);
1641 if (result < 0) {
1642 WLAN_LOG_ERROR("reset_usbdev: Dev not accepting address, "
1643 "result=%d\n", result);
1644 clear_bit(hw->usb->devnum, &hw->usb->bus->devmap.devicemap);
1645 hw->usb->devnum = -1;
1646 goto done;
1647 }
1648 /* Let the address settle */
1649 wait_ms(20);
1650
1651 /* Assume we're reusing the original descriptor data */
1652
1653 /* Set the configuration. */
1654 WLAN_LOG_DEBUG(3, "Setting Configuration %d\n",
1655 hw->usb->config[0].bConfigurationValue);
1656 result=usb_set_configuration(hw->usb, hw->usb->config[0].bConfigurationValue);
1657 if ( result ) {
1658 WLAN_LOG_ERROR("usb_set_configuration() failed, result=%d.\n",
1659 result);
1660 goto done;
1661 }
1662 /* Let the configuration settle */
1663 wait_ms(20);
1664
1665 done:
1666#else
1667 result=usb_reset_device(hw->usb);
1668 if(result<0) {
1669 WLAN_LOG_ERROR("usb_reset_device() failed, result=%d.\n",result);
1670 }
1671#endif
1672#endif
1673
1674 result=usb_reset_device(hw->usb);
1675 if(result<0) {
1676 WLAN_LOG_ERROR("usb_reset_device() failed, result=%d.\n",result);
1677 }
1678
1679 DBFEXIT;
1680 return result;
1681}
1682
1683
1684/*----------------------------------------------------------------
1685* hfa384x_usbctlx_complete_sync
1686*
1687* Waits for a synchronous CTLX object to complete,
1688* and then handles the response.
1689*
1690* Arguments:
1691* hw device structure
1692* ctlx CTLX ptr
1693* completor functor object to decide what to
1694* do with the CTLX's result.
1695*
1696* Returns:
1697* 0 Success
1698* -ERESTARTSYS Interrupted by a signal
1699* -EIO CTLX failed
1700* -ENODEV Adapter was unplugged
1701* ??? Result from completor
1702*
1703* Side effects:
1704*
1705* Call context:
1706* process
1707----------------------------------------------------------------*/
1708static int hfa384x_usbctlx_complete_sync(hfa384x_t *hw,
1709 hfa384x_usbctlx_t *ctlx,
1710 usbctlx_completor_t *completor)
1711{
1712 unsigned long flags;
1713 int result;
1714
1715 DBFENTER;
1716
1717 result = wait_for_completion_interruptible(&ctlx->done);
1718
1719 spin_lock_irqsave(&hw->ctlxq.lock, flags);
1720
1721 /*
1722 * We can only handle the CTLX if the USB disconnect
1723 * function has not run yet ...
1724 */
1725 cleanup:
1726 if ( hw->wlandev->hwremoved )
1727 {
1728 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
1729 result = -ENODEV;
1730 }
1731 else if ( result != 0 )
1732 {
1733 int runqueue = 0;
1734
1735 /*
1736 * We were probably interrupted, so delete
1737 * this CTLX asynchronously, kill the timers
1738 * and the URB, and then start the next
1739 * pending CTLX.
1740 *
1741 * NOTE: We can only delete the timers and
1742 * the URB if this CTLX is active.
1743 */
1744 if (ctlx == get_active_ctlx(hw))
1745 {
1746 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
1747
1748 del_singleshot_timer_sync(&hw->reqtimer);
1749 del_singleshot_timer_sync(&hw->resptimer);
1750 hw->req_timer_done = 1;
1751 hw->resp_timer_done = 1;
1752 usb_kill_urb(&hw->ctlx_urb);
1753
1754 spin_lock_irqsave(&hw->ctlxq.lock, flags);
1755
1756 runqueue = 1;
1757
1758 /*
1759 * This scenario is so unlikely that I'm
1760 * happy with a grubby "goto" solution ...
1761 */
1762 if ( hw->wlandev->hwremoved )
1763 goto cleanup;
1764 }
1765
1766 /*
1767 * The completion task will send this CTLX
1768 * to the reaper the next time it runs. We
1769 * are no longer in a hurry.
1770 */
1771 ctlx->reapable = 1;
1772 ctlx->state = CTLX_REQ_FAILED;
1773 list_move_tail(&ctlx->list, &hw->ctlxq.completing);
1774
1775 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
1776
1777 if (runqueue)
1778 hfa384x_usbctlxq_run(hw);
1779 } else {
1780 if (ctlx->state == CTLX_COMPLETE) {
1781 result = completor->complete(completor);
1782 } else {
1783 WLAN_LOG_WARNING("CTLX[%d] error: state(%s)\n",
1784 hfa384x2host_16(ctlx->outbuf.type),
1785 ctlxstr(ctlx->state));
1786 result = -EIO;
1787 }
1788
1789 list_del(&ctlx->list);
1790 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
1791 kfree(ctlx);
1792 }
1793
1794 DBFEXIT;
1795 return result;
1796}
1797
1798/*----------------------------------------------------------------
1799* hfa384x_docmd
1800*
1801* Constructs a command CTLX and submits it.
1802*
1803* NOTE: Any changes to the 'post-submit' code in this function
1804* need to be carried over to hfa384x_cbcmd() since the handling
1805* is virtually identical.
1806*
1807* Arguments:
1808* hw device structure
1809* mode DOWAIT or DOASYNC
1810* cmd cmd structure. Includes all arguments and result
1811* data points. All in host order. in host order
1812* cmdcb command-specific callback
1813* usercb user callback for async calls, NULL for DOWAIT calls
1814* usercb_data user supplied data pointer for async calls, NULL
1815* for DOASYNC calls
1816*
1817* Returns:
1818* 0 success
1819* -EIO CTLX failure
1820* -ERESTARTSYS Awakened on signal
1821* >0 command indicated error, Status and Resp0-2 are
1822* in hw structure.
1823*
1824* Side effects:
1825*
1826*
1827* Call context:
1828* process
1829----------------------------------------------------------------*/
1830static int
1831hfa384x_docmd(
1832 hfa384x_t *hw,
1833 CMD_MODE mode,
1834 hfa384x_metacmd_t *cmd,
1835 ctlx_cmdcb_t cmdcb,
1836 ctlx_usercb_t usercb,
1837 void *usercb_data)
1838{
1839 int result;
1840 hfa384x_usbctlx_t *ctlx;
1841
1842 DBFENTER;
1843 ctlx = usbctlx_alloc();
1844 if ( ctlx == NULL ) {
1845 result = -ENOMEM;
1846 goto done;
1847 }
1848
1849 /* Initialize the command */
1850 ctlx->outbuf.cmdreq.type = host2hfa384x_16(HFA384x_USB_CMDREQ);
1851 ctlx->outbuf.cmdreq.cmd = host2hfa384x_16(cmd->cmd);
1852 ctlx->outbuf.cmdreq.parm0 = host2hfa384x_16(cmd->parm0);
1853 ctlx->outbuf.cmdreq.parm1 = host2hfa384x_16(cmd->parm1);
1854 ctlx->outbuf.cmdreq.parm2 = host2hfa384x_16(cmd->parm2);
1855
1856 ctlx->outbufsize = sizeof(ctlx->outbuf.cmdreq);
1857
1858 WLAN_LOG_DEBUG(4, "cmdreq: cmd=0x%04x "
1859 "parm0=0x%04x parm1=0x%04x parm2=0x%04x\n",
1860 cmd->cmd,
1861 cmd->parm0,
1862 cmd->parm1,
1863 cmd->parm2);
1864
1865 ctlx->reapable = mode;
1866 ctlx->cmdcb = cmdcb;
1867 ctlx->usercb = usercb;
1868 ctlx->usercb_data = usercb_data;
1869
1870 result = hfa384x_usbctlx_submit(hw, ctlx);
1871 if (result != 0) {
1872 kfree(ctlx);
1873 } else if (mode == DOWAIT) {
1874 usbctlx_cmd_completor_t completor;
1875
1876 result = hfa384x_usbctlx_complete_sync(
1877 hw, ctlx, init_cmd_completor(&completor,
1878 &ctlx->inbuf.cmdresp,
1879 &cmd->result) );
1880 }
1881
1882done:
1883 DBFEXIT;
1884 return result;
1885}
1886
1887
1888/*----------------------------------------------------------------
1889* hfa384x_dorrid
1890*
1891* Constructs a read rid CTLX and issues it.
1892*
1893* NOTE: Any changes to the 'post-submit' code in this function
1894* need to be carried over to hfa384x_cbrrid() since the handling
1895* is virtually identical.
1896*
1897* Arguments:
1898* hw device structure
1899* mode DOWAIT or DOASYNC
1900* rid Read RID number (host order)
1901* riddata Caller supplied buffer that MAC formatted RID.data
1902* record will be written to for DOWAIT calls. Should
1903* be NULL for DOASYNC calls.
1904* riddatalen Buffer length for DOWAIT calls. Zero for DOASYNC calls.
1905* cmdcb command callback for async calls, NULL for DOWAIT calls
1906* usercb user callback for async calls, NULL for DOWAIT calls
1907* usercb_data user supplied data pointer for async calls, NULL
1908* for DOWAIT calls
1909*
1910* Returns:
1911* 0 success
1912* -EIO CTLX failure
1913* -ERESTARTSYS Awakened on signal
1914* -ENODATA riddatalen != macdatalen
1915* >0 command indicated error, Status and Resp0-2 are
1916* in hw structure.
1917*
1918* Side effects:
1919*
1920* Call context:
1921* interrupt (DOASYNC)
1922* process (DOWAIT or DOASYNC)
1923----------------------------------------------------------------*/
1924static int
1925hfa384x_dorrid(
1926 hfa384x_t *hw,
1927 CMD_MODE mode,
1928 UINT16 rid,
1929 void *riddata,
1930 UINT riddatalen,
1931 ctlx_cmdcb_t cmdcb,
1932 ctlx_usercb_t usercb,
1933 void *usercb_data)
1934{
1935 int result;
1936 hfa384x_usbctlx_t *ctlx;
1937
1938 DBFENTER;
1939 ctlx = usbctlx_alloc();
1940 if ( ctlx == NULL ) {
1941 result = -ENOMEM;
1942 goto done;
1943 }
1944
1945 /* Initialize the command */
1946 ctlx->outbuf.rridreq.type = host2hfa384x_16(HFA384x_USB_RRIDREQ);
1947 ctlx->outbuf.rridreq.frmlen =
1948 host2hfa384x_16(sizeof(ctlx->outbuf.rridreq.rid));
1949 ctlx->outbuf.rridreq.rid = host2hfa384x_16(rid);
1950
1951 ctlx->outbufsize = sizeof(ctlx->outbuf.rridreq);
1952
1953 ctlx->reapable = mode;
1954 ctlx->cmdcb = cmdcb;
1955 ctlx->usercb = usercb;
1956 ctlx->usercb_data = usercb_data;
1957
1958 /* Submit the CTLX */
1959 result = hfa384x_usbctlx_submit(hw, ctlx);
1960 if (result != 0) {
1961 kfree(ctlx);
1962 } else if (mode == DOWAIT) {
1963 usbctlx_rrid_completor_t completor;
1964
1965 result = hfa384x_usbctlx_complete_sync(
1966 hw, ctlx, init_rrid_completor(&completor,
1967 &ctlx->inbuf.rridresp,
1968 riddata,
1969 riddatalen) );
1970 }
1971
1972done:
1973 DBFEXIT;
1974 return result;
1975}
1976
1977
1978/*----------------------------------------------------------------
1979* hfa384x_dowrid
1980*
1981* Constructs a write rid CTLX and issues it.
1982*
1983* NOTE: Any changes to the 'post-submit' code in this function
1984* need to be carried over to hfa384x_cbwrid() since the handling
1985* is virtually identical.
1986*
1987* Arguments:
1988* hw device structure
1989* CMD_MODE DOWAIT or DOASYNC
1990* rid RID code
1991* riddata Data portion of RID formatted for MAC
1992* riddatalen Length of the data portion in bytes
1993* cmdcb command callback for async calls, NULL for DOWAIT calls
1994* usercb user callback for async calls, NULL for DOWAIT calls
1995* usercb_data user supplied data pointer for async calls
1996*
1997* Returns:
1998* 0 success
1999* -ETIMEDOUT timed out waiting for register ready or
2000* command completion
2001* >0 command indicated error, Status and Resp0-2 are
2002* in hw structure.
2003*
2004* Side effects:
2005*
2006* Call context:
2007* interrupt (DOASYNC)
2008* process (DOWAIT or DOASYNC)
2009----------------------------------------------------------------*/
2010static int
2011hfa384x_dowrid(
2012 hfa384x_t *hw,
2013 CMD_MODE mode,
2014 UINT16 rid,
2015 void *riddata,
2016 UINT riddatalen,
2017 ctlx_cmdcb_t cmdcb,
2018 ctlx_usercb_t usercb,
2019 void *usercb_data)
2020{
2021 int result;
2022 hfa384x_usbctlx_t *ctlx;
2023
2024 DBFENTER;
2025 ctlx = usbctlx_alloc();
2026 if ( ctlx == NULL ) {
2027 result = -ENOMEM;
2028 goto done;
2029 }
2030
2031 /* Initialize the command */
2032 ctlx->outbuf.wridreq.type = host2hfa384x_16(HFA384x_USB_WRIDREQ);
2033 ctlx->outbuf.wridreq.frmlen = host2hfa384x_16(
2034 (sizeof(ctlx->outbuf.wridreq.rid) +
2035 riddatalen + 1) / 2);
2036 ctlx->outbuf.wridreq.rid = host2hfa384x_16(rid);
2037 memcpy(ctlx->outbuf.wridreq.data, riddata, riddatalen);
2038
2039 ctlx->outbufsize = sizeof(ctlx->outbuf.wridreq.type) +
2040 sizeof(ctlx->outbuf.wridreq.frmlen) +
2041 sizeof(ctlx->outbuf.wridreq.rid) +
2042 riddatalen;
2043
2044 ctlx->reapable = mode;
2045 ctlx->cmdcb = cmdcb;
2046 ctlx->usercb = usercb;
2047 ctlx->usercb_data = usercb_data;
2048
2049 /* Submit the CTLX */
2050 result = hfa384x_usbctlx_submit(hw, ctlx);
2051 if (result != 0) {
2052 kfree(ctlx);
2053 } else if (mode == DOWAIT) {
2054 usbctlx_wrid_completor_t completor;
2055 hfa384x_cmdresult_t wridresult;
2056
2057 result = hfa384x_usbctlx_complete_sync(
2058 hw,
2059 ctlx,
2060 init_wrid_completor(&completor,
2061 &ctlx->inbuf.wridresp,
2062 &wridresult) );
2063 }
2064
2065done:
2066 DBFEXIT;
2067 return result;
2068}
2069
2070/*----------------------------------------------------------------
2071* hfa384x_dormem
2072*
2073* Constructs a readmem CTLX and issues it.
2074*
2075* NOTE: Any changes to the 'post-submit' code in this function
2076* need to be carried over to hfa384x_cbrmem() since the handling
2077* is virtually identical.
2078*
2079* Arguments:
2080* hw device structure
2081* mode DOWAIT or DOASYNC
2082* page MAC address space page (CMD format)
2083* offset MAC address space offset
2084* data Ptr to data buffer to receive read
2085* len Length of the data to read (max == 2048)
2086* cmdcb command callback for async calls, NULL for DOWAIT calls
2087* usercb user callback for async calls, NULL for DOWAIT calls
2088* usercb_data user supplied data pointer for async calls
2089*
2090* Returns:
2091* 0 success
2092* -ETIMEDOUT timed out waiting for register ready or
2093* command completion
2094* >0 command indicated error, Status and Resp0-2 are
2095* in hw structure.
2096*
2097* Side effects:
2098*
2099* Call context:
2100* interrupt (DOASYNC)
2101* process (DOWAIT or DOASYNC)
2102----------------------------------------------------------------*/
2103static int
2104hfa384x_dormem(
2105 hfa384x_t *hw,
2106 CMD_MODE mode,
2107 UINT16 page,
2108 UINT16 offset,
2109 void *data,
2110 UINT len,
2111 ctlx_cmdcb_t cmdcb,
2112 ctlx_usercb_t usercb,
2113 void *usercb_data)
2114{
2115 int result;
2116 hfa384x_usbctlx_t *ctlx;
2117
2118 DBFENTER;
2119 ctlx = usbctlx_alloc();
2120 if ( ctlx == NULL ) {
2121 result = -ENOMEM;
2122 goto done;
2123 }
2124
2125 /* Initialize the command */
2126 ctlx->outbuf.rmemreq.type = host2hfa384x_16(HFA384x_USB_RMEMREQ);
2127 ctlx->outbuf.rmemreq.frmlen = host2hfa384x_16(
2128 sizeof(ctlx->outbuf.rmemreq.offset) +
2129 sizeof(ctlx->outbuf.rmemreq.page) +
2130 len);
2131 ctlx->outbuf.rmemreq.offset = host2hfa384x_16(offset);
2132 ctlx->outbuf.rmemreq.page = host2hfa384x_16(page);
2133
2134 ctlx->outbufsize = sizeof(ctlx->outbuf.rmemreq);
2135
2136 WLAN_LOG_DEBUG(4,
2137 "type=0x%04x frmlen=%d offset=0x%04x page=0x%04x\n",
2138 ctlx->outbuf.rmemreq.type,
2139 ctlx->outbuf.rmemreq.frmlen,
2140 ctlx->outbuf.rmemreq.offset,
2141 ctlx->outbuf.rmemreq.page);
2142
2143 WLAN_LOG_DEBUG(4,"pktsize=%zd\n",
2144 ROUNDUP64(sizeof(ctlx->outbuf.rmemreq)));
2145
2146 ctlx->reapable = mode;
2147 ctlx->cmdcb = cmdcb;
2148 ctlx->usercb = usercb;
2149 ctlx->usercb_data = usercb_data;
2150
2151 result = hfa384x_usbctlx_submit(hw, ctlx);
2152 if (result != 0) {
2153 kfree(ctlx);
2154 } else if ( mode == DOWAIT ) {
2155 usbctlx_rmem_completor_t completor;
2156
2157 result = hfa384x_usbctlx_complete_sync(
2158 hw, ctlx, init_rmem_completor(&completor,
2159 &ctlx->inbuf.rmemresp,
2160 data,
2161 len) );
2162 }
2163
2164done:
2165 DBFEXIT;
2166 return result;
2167}
2168
2169
2170
2171/*----------------------------------------------------------------
2172* hfa384x_dowmem
2173*
2174* Constructs a writemem CTLX and issues it.
2175*
2176* NOTE: Any changes to the 'post-submit' code in this function
2177* need to be carried over to hfa384x_cbwmem() since the handling
2178* is virtually identical.
2179*
2180* Arguments:
2181* hw device structure
2182* mode DOWAIT or DOASYNC
2183* page MAC address space page (CMD format)
2184* offset MAC address space offset
2185* data Ptr to data buffer containing write data
2186* len Length of the data to read (max == 2048)
2187* cmdcb command callback for async calls, NULL for DOWAIT calls
2188* usercb user callback for async calls, NULL for DOWAIT calls
2189* usercb_data user supplied data pointer for async calls.
2190*
2191* Returns:
2192* 0 success
2193* -ETIMEDOUT timed out waiting for register ready or
2194* command completion
2195* >0 command indicated error, Status and Resp0-2 are
2196* in hw structure.
2197*
2198* Side effects:
2199*
2200* Call context:
2201* interrupt (DOWAIT)
2202* process (DOWAIT or DOASYNC)
2203----------------------------------------------------------------*/
2204static int
2205hfa384x_dowmem(
2206 hfa384x_t *hw,
2207 CMD_MODE mode,
2208 UINT16 page,
2209 UINT16 offset,
2210 void *data,
2211 UINT len,
2212 ctlx_cmdcb_t cmdcb,
2213 ctlx_usercb_t usercb,
2214 void *usercb_data)
2215{
2216 int result;
2217 hfa384x_usbctlx_t *ctlx;
2218
2219 DBFENTER;
2220 WLAN_LOG_DEBUG(5, "page=0x%04x offset=0x%04x len=%d\n",
2221 page,offset,len);
2222
2223 ctlx = usbctlx_alloc();
2224 if ( ctlx == NULL ) {
2225 result = -ENOMEM;
2226 goto done;
2227 }
2228
2229 /* Initialize the command */
2230 ctlx->outbuf.wmemreq.type = host2hfa384x_16(HFA384x_USB_WMEMREQ);
2231 ctlx->outbuf.wmemreq.frmlen = host2hfa384x_16(
2232 sizeof(ctlx->outbuf.wmemreq.offset) +
2233 sizeof(ctlx->outbuf.wmemreq.page) +
2234 len);
2235 ctlx->outbuf.wmemreq.offset = host2hfa384x_16(offset);
2236 ctlx->outbuf.wmemreq.page = host2hfa384x_16(page);
2237 memcpy(ctlx->outbuf.wmemreq.data, data, len);
2238
2239 ctlx->outbufsize = sizeof(ctlx->outbuf.wmemreq.type) +
2240 sizeof(ctlx->outbuf.wmemreq.frmlen) +
2241 sizeof(ctlx->outbuf.wmemreq.offset) +
2242 sizeof(ctlx->outbuf.wmemreq.page) +
2243 len;
2244
2245 ctlx->reapable = mode;
2246 ctlx->cmdcb = cmdcb;
2247 ctlx->usercb = usercb;
2248 ctlx->usercb_data = usercb_data;
2249
2250 result = hfa384x_usbctlx_submit(hw, ctlx);
2251 if (result != 0) {
2252 kfree(ctlx);
2253 } else if ( mode == DOWAIT ) {
2254 usbctlx_wmem_completor_t completor;
2255 hfa384x_cmdresult_t wmemresult;
2256
2257 result = hfa384x_usbctlx_complete_sync(
2258 hw,
2259 ctlx,
2260 init_wmem_completor(&completor,
2261 &ctlx->inbuf.wmemresp,
2262 &wmemresult) );
2263 }
2264
2265done:
2266 DBFEXIT;
2267 return result;
2268}
2269
2270
2271/*----------------------------------------------------------------
2272* hfa384x_drvr_commtallies
2273*
2274* Send a commtallies inquiry to the MAC. Note that this is an async
2275* call that will result in an info frame arriving sometime later.
2276*
2277* Arguments:
2278* hw device structure
2279*
2280* Returns:
2281* zero success.
2282*
2283* Side effects:
2284*
2285* Call context:
2286* process
2287----------------------------------------------------------------*/
2288int hfa384x_drvr_commtallies( hfa384x_t *hw )
2289{
2290 hfa384x_metacmd_t cmd;
2291
2292 DBFENTER;
2293
2294 cmd.cmd = HFA384x_CMDCODE_INQ;
2295 cmd.parm0 = HFA384x_IT_COMMTALLIES;
2296 cmd.parm1 = 0;
2297 cmd.parm2 = 0;
2298
2299 hfa384x_docmd_async(hw, &cmd, NULL, NULL, NULL);
2300
2301 DBFEXIT;
2302 return 0;
2303}
2304
2305
2306/*----------------------------------------------------------------
2307* hfa384x_drvr_disable
2308*
2309* Issues the disable command to stop communications on one of
2310* the MACs 'ports'. Only macport 0 is valid for stations.
2311* APs may also disable macports 1-6. Only ports that have been
2312* previously enabled may be disabled.
2313*
2314* Arguments:
2315* hw device structure
2316* macport MAC port number (host order)
2317*
2318* Returns:
2319* 0 success
2320* >0 f/w reported failure - f/w status code
2321* <0 driver reported error (timeout|bad arg)
2322*
2323* Side effects:
2324*
2325* Call context:
2326* process
2327----------------------------------------------------------------*/
2328int hfa384x_drvr_disable(hfa384x_t *hw, UINT16 macport)
2329{
2330 int result = 0;
2331
2332 DBFENTER;
2333 if ((!hw->isap && macport != 0) ||
2334 (hw->isap && !(macport <= HFA384x_PORTID_MAX)) ||
2335 !(hw->port_enabled[macport]) ){
2336 result = -EINVAL;
2337 } else {
2338 result = hfa384x_cmd_disable(hw, macport);
2339 if ( result == 0 ) {
2340 hw->port_enabled[macport] = 0;
2341 }
2342 }
2343 DBFEXIT;
2344 return result;
2345}
2346
2347
2348/*----------------------------------------------------------------
2349* hfa384x_drvr_enable
2350*
2351* Issues the enable command to enable communications on one of
2352* the MACs 'ports'. Only macport 0 is valid for stations.
2353* APs may also enable macports 1-6. Only ports that are currently
2354* disabled may be enabled.
2355*
2356* Arguments:
2357* hw device structure
2358* macport MAC port number
2359*
2360* Returns:
2361* 0 success
2362* >0 f/w reported failure - f/w status code
2363* <0 driver reported error (timeout|bad arg)
2364*
2365* Side effects:
2366*
2367* Call context:
2368* process
2369----------------------------------------------------------------*/
2370int hfa384x_drvr_enable(hfa384x_t *hw, UINT16 macport)
2371{
2372 int result = 0;
2373
2374 DBFENTER;
2375 if ((!hw->isap && macport != 0) ||
2376 (hw->isap && !(macport <= HFA384x_PORTID_MAX)) ||
2377 (hw->port_enabled[macport]) ){
2378 result = -EINVAL;
2379 } else {
2380 result = hfa384x_cmd_enable(hw, macport);
2381 if ( result == 0 ) {
2382 hw->port_enabled[macport] = 1;
2383 }
2384 }
2385 DBFEXIT;
2386 return result;
2387}
2388
2389
2390/*----------------------------------------------------------------
2391* hfa384x_drvr_flashdl_enable
2392*
2393* Begins the flash download state. Checks to see that we're not
2394* already in a download state and that a port isn't enabled.
2395* Sets the download state and retrieves the flash download
2396* buffer location, buffer size, and timeout length.
2397*
2398* Arguments:
2399* hw device structure
2400*
2401* Returns:
2402* 0 success
2403* >0 f/w reported error - f/w status code
2404* <0 driver reported error
2405*
2406* Side effects:
2407*
2408* Call context:
2409* process
2410----------------------------------------------------------------*/
2411int hfa384x_drvr_flashdl_enable(hfa384x_t *hw)
2412{
2413 int result = 0;
2414 int i;
2415
2416 DBFENTER;
2417 /* Check that a port isn't active */
2418 for ( i = 0; i < HFA384x_PORTID_MAX; i++) {
2419 if ( hw->port_enabled[i] ) {
2420 WLAN_LOG_DEBUG(1,"called when port enabled.\n");
2421 return -EINVAL;
2422 }
2423 }
2424
2425 /* Check that we're not already in a download state */
2426 if ( hw->dlstate != HFA384x_DLSTATE_DISABLED ) {
2427 return -EINVAL;
2428 }
2429
2430 /* Retrieve the buffer loc&size and timeout */
2431 if ( (result = hfa384x_drvr_getconfig(hw, HFA384x_RID_DOWNLOADBUFFER,
2432 &(hw->bufinfo), sizeof(hw->bufinfo))) ) {
2433 return result;
2434 }
2435 hw->bufinfo.page = hfa384x2host_16(hw->bufinfo.page);
2436 hw->bufinfo.offset = hfa384x2host_16(hw->bufinfo.offset);
2437 hw->bufinfo.len = hfa384x2host_16(hw->bufinfo.len);
2438 if ( (result = hfa384x_drvr_getconfig16(hw, HFA384x_RID_MAXLOADTIME,
2439 &(hw->dltimeout))) ) {
2440 return result;
2441 }
2442 hw->dltimeout = hfa384x2host_16(hw->dltimeout);
2443
2444 WLAN_LOG_DEBUG(1,"flashdl_enable\n");
2445
2446 hw->dlstate = HFA384x_DLSTATE_FLASHENABLED;
2447 DBFEXIT;
2448 return result;
2449}
2450
2451
2452/*----------------------------------------------------------------
2453* hfa384x_drvr_flashdl_disable
2454*
2455* Ends the flash download state. Note that this will cause the MAC
2456* firmware to restart.
2457*
2458* Arguments:
2459* hw device structure
2460*
2461* Returns:
2462* 0 success
2463* >0 f/w reported error - f/w status code
2464* <0 driver reported error
2465*
2466* Side effects:
2467*
2468* Call context:
2469* process
2470----------------------------------------------------------------*/
2471int hfa384x_drvr_flashdl_disable(hfa384x_t *hw)
2472{
2473 DBFENTER;
2474 /* Check that we're already in the download state */
2475 if ( hw->dlstate != HFA384x_DLSTATE_FLASHENABLED ) {
2476 return -EINVAL;
2477 }
2478
2479 WLAN_LOG_DEBUG(1,"flashdl_enable\n");
2480
2481 /* There isn't much we can do at this point, so I don't */
2482 /* bother w/ the return value */
2483 hfa384x_cmd_download(hw, HFA384x_PROGMODE_DISABLE, 0, 0 , 0);
2484 hw->dlstate = HFA384x_DLSTATE_DISABLED;
2485
2486 DBFEXIT;
2487 return 0;
2488}
2489
2490
2491/*----------------------------------------------------------------
2492* hfa384x_drvr_flashdl_write
2493*
2494* Performs a FLASH download of a chunk of data. First checks to see
2495* that we're in the FLASH download state, then sets the download
2496* mode, uses the aux functions to 1) copy the data to the flash
2497* buffer, 2) sets the download 'write flash' mode, 3) readback and
2498* compare. Lather rinse, repeat as many times an necessary to get
2499* all the given data into flash.
2500* When all data has been written using this function (possibly
2501* repeatedly), call drvr_flashdl_disable() to end the download state
2502* and restart the MAC.
2503*
2504* Arguments:
2505* hw device structure
2506* daddr Card address to write to. (host order)
2507* buf Ptr to data to write.
2508* len Length of data (host order).
2509*
2510* Returns:
2511* 0 success
2512* >0 f/w reported error - f/w status code
2513* <0 driver reported error
2514*
2515* Side effects:
2516*
2517* Call context:
2518* process
2519----------------------------------------------------------------*/
2520int
2521hfa384x_drvr_flashdl_write(
2522 hfa384x_t *hw,
2523 UINT32 daddr,
2524 void *buf,
2525 UINT32 len)
2526{
2527 int result = 0;
2528 UINT32 dlbufaddr;
2529 int nburns;
2530 UINT32 burnlen;
2531 UINT32 burndaddr;
2532 UINT16 burnlo;
2533 UINT16 burnhi;
2534 int nwrites;
2535 UINT8 *writebuf;
2536 UINT16 writepage;
2537 UINT16 writeoffset;
2538 UINT32 writelen;
2539 int i;
2540 int j;
2541
2542 DBFENTER;
2543 WLAN_LOG_DEBUG(5,"daddr=0x%08x len=%d\n", daddr, len);
2544
2545 /* Check that we're in the flash download state */
2546 if ( hw->dlstate != HFA384x_DLSTATE_FLASHENABLED ) {
2547 return -EINVAL;
2548 }
2549
2550 WLAN_LOG_INFO("Download %d bytes to flash @0x%06x\n", len, daddr);
2551
2552 /* Convert to flat address for arithmetic */
2553 /* NOTE: dlbuffer RID stores the address in AUX format */
2554 dlbufaddr = HFA384x_ADDR_AUX_MKFLAT(
2555 hw->bufinfo.page, hw->bufinfo.offset);
2556 WLAN_LOG_DEBUG(5,
2557 "dlbuf.page=0x%04x dlbuf.offset=0x%04x dlbufaddr=0x%08x\n",
2558 hw->bufinfo.page, hw->bufinfo.offset, dlbufaddr);
2559
2560#if 0
2561WLAN_LOG_WARNING("dlbuf@0x%06lx len=%d to=%d\n", dlbufaddr, hw->bufinfo.len, hw->dltimeout);
2562#endif
2563 /* Calculations to determine how many fills of the dlbuffer to do
2564 * and how many USB wmemreq's to do for each fill. At this point
2565 * in time, the dlbuffer size and the wmemreq size are the same.
2566 * Therefore, nwrites should always be 1. The extra complexity
2567 * here is a hedge against future changes.
2568 */
2569
2570 /* Figure out how many times to do the flash programming */
2571 nburns = len / hw->bufinfo.len;
2572 nburns += (len % hw->bufinfo.len) ? 1 : 0;
2573
2574 /* For each flash program cycle, how many USB wmemreq's are needed? */
2575 nwrites = hw->bufinfo.len / HFA384x_USB_RWMEM_MAXLEN;
2576 nwrites += (hw->bufinfo.len % HFA384x_USB_RWMEM_MAXLEN) ? 1 : 0;
2577
2578 /* For each burn */
2579 for ( i = 0; i < nburns; i++) {
2580 /* Get the dest address and len */
2581 burnlen = (len - (hw->bufinfo.len * i)) > hw->bufinfo.len ?
2582 hw->bufinfo.len :
2583 (len - (hw->bufinfo.len * i));
2584 burndaddr = daddr + (hw->bufinfo.len * i);
2585 burnlo = HFA384x_ADDR_CMD_MKOFF(burndaddr);
2586 burnhi = HFA384x_ADDR_CMD_MKPAGE(burndaddr);
2587
2588 WLAN_LOG_INFO("Writing %d bytes to flash @0x%06x\n",
2589 burnlen, burndaddr);
2590
2591 /* Set the download mode */
2592 result = hfa384x_cmd_download(hw, HFA384x_PROGMODE_NV,
2593 burnlo, burnhi, burnlen);
2594 if ( result ) {
2595 WLAN_LOG_ERROR("download(NV,lo=%x,hi=%x,len=%x) "
2596 "cmd failed, result=%d. Aborting d/l\n",
2597 burnlo, burnhi, burnlen, result);
2598 goto exit_proc;
2599 }
2600
2601 /* copy the data to the flash download buffer */
2602 for ( j=0; j < nwrites; j++) {
2603 writebuf = buf +
2604 (i*hw->bufinfo.len) +
2605 (j*HFA384x_USB_RWMEM_MAXLEN);
2606
2607 writepage = HFA384x_ADDR_CMD_MKPAGE(
2608 dlbufaddr +
2609 (j*HFA384x_USB_RWMEM_MAXLEN));
2610 writeoffset = HFA384x_ADDR_CMD_MKOFF(
2611 dlbufaddr +
2612 (j*HFA384x_USB_RWMEM_MAXLEN));
2613
2614 writelen = burnlen-(j*HFA384x_USB_RWMEM_MAXLEN);
2615 writelen = writelen > HFA384x_USB_RWMEM_MAXLEN ?
2616 HFA384x_USB_RWMEM_MAXLEN :
2617 writelen;
2618
2619 result = hfa384x_dowmem_wait( hw,
2620 writepage,
2621 writeoffset,
2622 writebuf,
2623 writelen );
2624#if 0
2625
2626Comment out for debugging, assume the write was successful.
2627 if (result) {
2628 WLAN_LOG_ERROR(
2629 "Write to dl buffer failed, "
2630 "result=0x%04x. Aborting.\n",
2631 result);
2632 goto exit_proc;
2633 }
2634#endif
2635
2636 }
2637
2638 /* set the download 'write flash' mode */
2639 result = hfa384x_cmd_download(hw,
2640 HFA384x_PROGMODE_NVWRITE,
2641 0,0,0);
2642 if ( result ) {
2643 WLAN_LOG_ERROR(
2644 "download(NVWRITE,lo=%x,hi=%x,len=%x) "
2645 "cmd failed, result=%d. Aborting d/l\n",
2646 burnlo, burnhi, burnlen, result);
2647 goto exit_proc;
2648 }
2649
2650 /* TODO: We really should do a readback and compare. */
2651 }
2652
2653exit_proc:
2654
2655 /* Leave the firmware in the 'post-prog' mode. flashdl_disable will */
2656 /* actually disable programming mode. Remember, that will cause the */
2657 /* the firmware to effectively reset itself. */
2658
2659 DBFEXIT;
2660 return result;
2661}
2662
2663
2664/*----------------------------------------------------------------
2665* hfa384x_drvr_getconfig
2666*
2667* Performs the sequence necessary to read a config/info item.
2668*
2669* Arguments:
2670* hw device structure
2671* rid config/info record id (host order)
2672* buf host side record buffer. Upon return it will
2673* contain the body portion of the record (minus the
2674* RID and len).
2675* len buffer length (in bytes, should match record length)
2676*
2677* Returns:
2678* 0 success
2679* >0 f/w reported error - f/w status code
2680* <0 driver reported error
2681* -ENODATA length mismatch between argument and retrieved
2682* record.
2683*
2684* Side effects:
2685*
2686* Call context:
2687* process
2688----------------------------------------------------------------*/
2689int hfa384x_drvr_getconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len)
2690{
2691 int result;
2692 DBFENTER;
2693
2694 result = hfa384x_dorrid_wait(hw, rid, buf, len);
2695
2696 DBFEXIT;
2697 return result;
2698}
2699
2700/*----------------------------------------------------------------
2701 * hfa384x_drvr_getconfig_async
2702 *
2703 * Performs the sequence necessary to perform an async read of
2704 * of a config/info item.
2705 *
2706 * Arguments:
2707 * hw device structure
2708 * rid config/info record id (host order)
2709 * buf host side record buffer. Upon return it will
2710 * contain the body portion of the record (minus the
2711 * RID and len).
2712 * len buffer length (in bytes, should match record length)
2713 * cbfn caller supplied callback, called when the command
2714 * is done (successful or not).
2715 * cbfndata pointer to some caller supplied data that will be
2716 * passed in as an argument to the cbfn.
2717 *
2718 * Returns:
2719 * nothing the cbfn gets a status argument identifying if
2720 * any errors occur.
2721 * Side effects:
2722 * Queues an hfa384x_usbcmd_t for subsequent execution.
2723 *
2724 * Call context:
2725 * Any
2726 ----------------------------------------------------------------*/
2727int
2728hfa384x_drvr_getconfig_async(
2729 hfa384x_t *hw,
2730 UINT16 rid,
2731 ctlx_usercb_t usercb,
2732 void *usercb_data)
2733{
2734 return hfa384x_dorrid_async(hw, rid, NULL, 0,
2735 hfa384x_cb_rrid, usercb, usercb_data);
2736}
2737
2738/*----------------------------------------------------------------
2739 * hfa384x_drvr_setconfig_async
2740 *
2741 * Performs the sequence necessary to write a config/info item.
2742 *
2743 * Arguments:
2744 * hw device structure
2745 * rid config/info record id (in host order)
2746 * buf host side record buffer
2747 * len buffer length (in bytes)
2748 * usercb completion callback
2749 * usercb_data completion callback argument
2750 *
2751 * Returns:
2752 * 0 success
2753 * >0 f/w reported error - f/w status code
2754 * <0 driver reported error
2755 *
2756 * Side effects:
2757 *
2758 * Call context:
2759 * process
2760 ----------------------------------------------------------------*/
2761int
2762hfa384x_drvr_setconfig_async(
2763 hfa384x_t *hw,
2764 UINT16 rid,
2765 void *buf,
2766 UINT16 len,
2767 ctlx_usercb_t usercb,
2768 void *usercb_data)
2769{
2770 return hfa384x_dowrid_async(hw, rid, buf, len,
2771 hfa384x_cb_status, usercb, usercb_data);
2772}
2773
2774/*----------------------------------------------------------------
2775* hfa384x_drvr_handover
2776*
2777* Sends a handover notification to the MAC.
2778*
2779* Arguments:
2780* hw device structure
2781* addr address of station that's left
2782*
2783* Returns:
2784* zero success.
2785* -ERESTARTSYS received signal while waiting for semaphore.
2786* -EIO failed to write to bap, or failed in cmd.
2787*
2788* Side effects:
2789*
2790* Call context:
2791* process
2792----------------------------------------------------------------*/
2793int hfa384x_drvr_handover( hfa384x_t *hw, UINT8 *addr)
2794{
2795 DBFENTER;
2796 WLAN_LOG_ERROR("Not currently supported in USB!\n");
2797 DBFEXIT;
2798 return -EIO;
2799}
2800
2801/*----------------------------------------------------------------
2802* hfa384x_drvr_low_level
2803*
2804* Write test commands to the card. Some test commands don't make
2805* sense without prior set-up. For example, continous TX isn't very
2806* useful until you set the channel. That functionality should be
2807*
2808* Side effects:
2809*
2810* Call context:
2811* process thread
2812* -----------------------------------------------------------------*/
2813int hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd)
2814{
2815 int result;
2816 DBFENTER;
2817
2818 /* Do i need a host2hfa... conversion ? */
2819
2820 result = hfa384x_docmd_wait(hw, cmd);
2821
2822 DBFEXIT;
2823 return result;
2824}
2825
2826/*----------------------------------------------------------------
2827* hfa384x_drvr_mmi_read
2828*
2829* Read mmi registers. mmi is intersil-speak for the baseband
2830* processor registers.
2831*
2832* Arguments:
2833* hw device structure
2834* register The test register to be accessed (must be even #).
2835*
2836* Returns:
2837* 0 success
2838* >0 f/w reported error - f/w status code
2839* <0 driver reported error
2840*
2841* Side effects:
2842*
2843* Call context:
2844* process
2845----------------------------------------------------------------*/
2846int hfa384x_drvr_mmi_read(hfa384x_t *hw, UINT32 addr, UINT32 *resp)
2847{
2848#if 0
2849 int result = 0;
2850 UINT16 cmd_code = (UINT16) 0x30;
2851 UINT16 param = (UINT16) addr;
2852 DBFENTER;
2853
2854 /* Do i need a host2hfa... conversion ? */
2855 result = hfa384x_docmd_wait(hw, cmd_code);
2856
2857 DBFEXIT;
2858 return result;
2859#endif
2860return 0;
2861}
2862
2863/*----------------------------------------------------------------
2864* hfa384x_drvr_mmi_write
2865*
2866* Read mmi registers. mmi is intersil-speak for the baseband
2867* processor registers.
2868*
2869* Arguments:
2870* hw device structure
2871* addr The test register to be accessed (must be even #).
2872* data The data value to write to the register.
2873*
2874* Returns:
2875* 0 success
2876* >0 f/w reported error - f/w status code
2877* <0 driver reported error
2878*
2879* Side effects:
2880*
2881* Call context:
2882* process
2883----------------------------------------------------------------*/
2884
2885int
2886hfa384x_drvr_mmi_write(hfa384x_t *hw, UINT32 addr, UINT32 data)
2887{
2888#if 0
2889 int result = 0;
2890 UINT16 cmd_code = (UINT16) 0x31;
2891 UINT16 param0 = (UINT16) addr;
2892 UINT16 param1 = (UINT16) data;
2893 DBFENTER;
2894
2895 WLAN_LOG_DEBUG(1,"mmi write : addr = 0x%08lx\n", addr);
2896 WLAN_LOG_DEBUG(1,"mmi write : data = 0x%08lx\n", data);
2897
2898 /* Do i need a host2hfa... conversion ? */
2899 result = hfa384x_docmd_wait(hw, cmd_code);
2900
2901 DBFEXIT;
2902 return result;
2903#endif
2904return 0;
2905}
2906
2907
2908/*----------------------------------------------------------------
2909* hfa384x_drvr_ramdl_disable
2910*
2911* Ends the ram download state.
2912*
2913* Arguments:
2914* hw device structure
2915*
2916* Returns:
2917* 0 success
2918* >0 f/w reported error - f/w status code
2919* <0 driver reported error
2920*
2921* Side effects:
2922*
2923* Call context:
2924* process
2925----------------------------------------------------------------*/
2926int
2927hfa384x_drvr_ramdl_disable(hfa384x_t *hw)
2928{
2929 DBFENTER;
2930 /* Check that we're already in the download state */
2931 if ( hw->dlstate != HFA384x_DLSTATE_RAMENABLED ) {
2932 return -EINVAL;
2933 }
2934
2935 WLAN_LOG_DEBUG(3,"ramdl_disable()\n");
2936
2937 /* There isn't much we can do at this point, so I don't */
2938 /* bother w/ the return value */
2939 hfa384x_cmd_download(hw, HFA384x_PROGMODE_DISABLE, 0, 0 , 0);
2940 hw->dlstate = HFA384x_DLSTATE_DISABLED;
2941
2942 DBFEXIT;
2943 return 0;
2944}
2945
2946
2947/*----------------------------------------------------------------
2948* hfa384x_drvr_ramdl_enable
2949*
2950* Begins the ram download state. Checks to see that we're not
2951* already in a download state and that a port isn't enabled.
2952* Sets the download state and calls cmd_download with the
2953* ENABLE_VOLATILE subcommand and the exeaddr argument.
2954*
2955* Arguments:
2956* hw device structure
2957* exeaddr the card execution address that will be
2958* jumped to when ramdl_disable() is called
2959* (host order).
2960*
2961* Returns:
2962* 0 success
2963* >0 f/w reported error - f/w status code
2964* <0 driver reported error
2965*
2966* Side effects:
2967*
2968* Call context:
2969* process
2970----------------------------------------------------------------*/
2971int
2972hfa384x_drvr_ramdl_enable(hfa384x_t *hw, UINT32 exeaddr)
2973{
2974 int result = 0;
2975 UINT16 lowaddr;
2976 UINT16 hiaddr;
2977 int i;
2978 DBFENTER;
2979 /* Check that a port isn't active */
2980 for ( i = 0; i < HFA384x_PORTID_MAX; i++) {
2981 if ( hw->port_enabled[i] ) {
2982 WLAN_LOG_ERROR(
2983 "Can't download with a macport enabled.\n");
2984 return -EINVAL;
2985 }
2986 }
2987
2988 /* Check that we're not already in a download state */
2989 if ( hw->dlstate != HFA384x_DLSTATE_DISABLED ) {
2990 WLAN_LOG_ERROR(
2991 "Download state not disabled.\n");
2992 return -EINVAL;
2993 }
2994
2995 WLAN_LOG_DEBUG(3,"ramdl_enable, exeaddr=0x%08x\n", exeaddr);
2996
2997 /* Call the download(1,addr) function */
2998 lowaddr = HFA384x_ADDR_CMD_MKOFF(exeaddr);
2999 hiaddr = HFA384x_ADDR_CMD_MKPAGE(exeaddr);
3000
3001 result = hfa384x_cmd_download(hw, HFA384x_PROGMODE_RAM,
3002 lowaddr, hiaddr, 0);
3003
3004 if ( result == 0) {
3005 /* Set the download state */
3006 hw->dlstate = HFA384x_DLSTATE_RAMENABLED;
3007 } else {
3008 WLAN_LOG_DEBUG(1,
3009 "cmd_download(0x%04x, 0x%04x) failed, result=%d.\n",
3010 lowaddr,
3011 hiaddr,
3012 result);
3013 }
3014
3015 DBFEXIT;
3016 return result;
3017}
3018
3019
3020/*----------------------------------------------------------------
3021* hfa384x_drvr_ramdl_write
3022*
3023* Performs a RAM download of a chunk of data. First checks to see
3024* that we're in the RAM download state, then uses the [read|write]mem USB
3025* commands to 1) copy the data, 2) readback and compare. The download
3026* state is unaffected. When all data has been written using
3027* this function, call drvr_ramdl_disable() to end the download state
3028* and restart the MAC.
3029*
3030* Arguments:
3031* hw device structure
3032* daddr Card address to write to. (host order)
3033* buf Ptr to data to write.
3034* len Length of data (host order).
3035*
3036* Returns:
3037* 0 success
3038* >0 f/w reported error - f/w status code
3039* <0 driver reported error
3040*
3041* Side effects:
3042*
3043* Call context:
3044* process
3045----------------------------------------------------------------*/
3046int
3047hfa384x_drvr_ramdl_write(hfa384x_t *hw, UINT32 daddr, void* buf, UINT32 len)
3048{
3049 int result = 0;
3050 int nwrites;
3051 UINT8 *data = buf;
3052 int i;
3053 UINT32 curraddr;
3054 UINT16 currpage;
3055 UINT16 curroffset;
3056 UINT16 currlen;
3057 DBFENTER;
3058 /* Check that we're in the ram download state */
3059 if ( hw->dlstate != HFA384x_DLSTATE_RAMENABLED ) {
3060 return -EINVAL;
3061 }
3062
3063 WLAN_LOG_INFO("Writing %d bytes to ram @0x%06x\n", len, daddr);
3064
3065 /* How many dowmem calls? */
3066 nwrites = len / HFA384x_USB_RWMEM_MAXLEN;
3067 nwrites += len % HFA384x_USB_RWMEM_MAXLEN ? 1 : 0;
3068
3069 /* Do blocking wmem's */
3070 for(i=0; i < nwrites; i++) {
3071 /* make address args */
3072 curraddr = daddr + (i * HFA384x_USB_RWMEM_MAXLEN);
3073 currpage = HFA384x_ADDR_CMD_MKPAGE(curraddr);
3074 curroffset = HFA384x_ADDR_CMD_MKOFF(curraddr);
3075 currlen = len - (i * HFA384x_USB_RWMEM_MAXLEN);
3076 if ( currlen > HFA384x_USB_RWMEM_MAXLEN) {
3077 currlen = HFA384x_USB_RWMEM_MAXLEN;
3078 }
3079
3080 /* Do blocking ctlx */
3081 result = hfa384x_dowmem_wait( hw,
3082 currpage,
3083 curroffset,
3084 data + (i*HFA384x_USB_RWMEM_MAXLEN),
3085 currlen );
3086
3087 if (result) break;
3088
3089 /* TODO: We really should have a readback. */
3090 }
3091
3092 DBFEXIT;
3093 return result;
3094}
3095
3096
3097/*----------------------------------------------------------------
3098* hfa384x_drvr_readpda
3099*
3100* Performs the sequence to read the PDA space. Note there is no
3101* drvr_writepda() function. Writing a PDA is
3102* generally implemented by a calling component via calls to
3103* cmd_download and writing to the flash download buffer via the
3104* aux regs.
3105*
3106* Arguments:
3107* hw device structure
3108* buf buffer to store PDA in
3109* len buffer length
3110*
3111* Returns:
3112* 0 success
3113* >0 f/w reported error - f/w status code
3114* <0 driver reported error
3115* -ETIMEOUT timout waiting for the cmd regs to become
3116* available, or waiting for the control reg
3117* to indicate the Aux port is enabled.
3118* -ENODATA the buffer does NOT contain a valid PDA.
3119* Either the card PDA is bad, or the auxdata
3120* reads are giving us garbage.
3121
3122*
3123* Side effects:
3124*
3125* Call context:
3126* process or non-card interrupt.
3127----------------------------------------------------------------*/
3128int hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, UINT len)
3129{
3130 int result = 0;
3131 UINT16 *pda = buf;
3132 int pdaok = 0;
3133 int morepdrs = 1;
3134 int currpdr = 0; /* word offset of the current pdr */
3135 size_t i;
3136 UINT16 pdrlen; /* pdr length in bytes, host order */
3137 UINT16 pdrcode; /* pdr code, host order */
3138 UINT16 currpage;
3139 UINT16 curroffset;
3140 struct pdaloc {
3141 UINT32 cardaddr;
3142 UINT16 auxctl;
3143 } pdaloc[] =
3144 {
3145 { HFA3842_PDA_BASE, 0},
3146 { HFA3841_PDA_BASE, 0},
3147 { HFA3841_PDA_BOGUS_BASE, 0}
3148 };
3149
3150 DBFENTER;
3151
3152 /* Read the pda from each known address. */
3153 for ( i = 0; i < ARRAY_SIZE(pdaloc); i++) {
3154 /* Make address */
3155 currpage = HFA384x_ADDR_CMD_MKPAGE(pdaloc[i].cardaddr);
3156 curroffset = HFA384x_ADDR_CMD_MKOFF(pdaloc[i].cardaddr);
3157
3158 result = hfa384x_dormem_wait(hw,
3159 currpage,
3160 curroffset,
3161 buf,
3162 len); /* units of bytes */
3163
3164 if (result) {
3165 WLAN_LOG_WARNING(
3166 "Read from index %zd failed, continuing\n",
3167 i );
3168 continue;
3169 }
3170
3171 /* Test for garbage */
3172 pdaok = 1; /* initially assume good */
3173 morepdrs = 1;
3174 while ( pdaok && morepdrs ) {
3175 pdrlen = hfa384x2host_16(pda[currpdr]) * 2;
3176 pdrcode = hfa384x2host_16(pda[currpdr+1]);
3177 /* Test the record length */
3178 if ( pdrlen > HFA384x_PDR_LEN_MAX || pdrlen == 0) {
3179 WLAN_LOG_ERROR("pdrlen invalid=%d\n",
3180 pdrlen);
3181 pdaok = 0;
3182 break;
3183 }
3184 /* Test the code */
3185 if ( !hfa384x_isgood_pdrcode(pdrcode) ) {
3186 WLAN_LOG_ERROR("pdrcode invalid=%d\n",
3187 pdrcode);
3188 pdaok = 0;
3189 break;
3190 }
3191 /* Test for completion */
3192 if ( pdrcode == HFA384x_PDR_END_OF_PDA) {
3193 morepdrs = 0;
3194 }
3195
3196 /* Move to the next pdr (if necessary) */
3197 if ( morepdrs ) {
3198 /* note the access to pda[], need words here */
3199 currpdr += hfa384x2host_16(pda[currpdr]) + 1;
3200 }
3201 }
3202 if ( pdaok ) {
3203 WLAN_LOG_INFO(
3204 "PDA Read from 0x%08x in %s space.\n",
3205 pdaloc[i].cardaddr,
3206 pdaloc[i].auxctl == 0 ? "EXTDS" :
3207 pdaloc[i].auxctl == 1 ? "NV" :
3208 pdaloc[i].auxctl == 2 ? "PHY" :
3209 pdaloc[i].auxctl == 3 ? "ICSRAM" :
3210 "<bogus auxctl>");
3211 break;
3212 }
3213 }
3214 result = pdaok ? 0 : -ENODATA;
3215
3216 if ( result ) {
3217 WLAN_LOG_DEBUG(3,"Failure: pda is not okay\n");
3218 }
3219
3220 DBFEXIT;
3221 return result;
3222}
3223
3224
3225/*----------------------------------------------------------------
3226* hfa384x_drvr_setconfig
3227*
3228* Performs the sequence necessary to write a config/info item.
3229*
3230* Arguments:
3231* hw device structure
3232* rid config/info record id (in host order)
3233* buf host side record buffer
3234* len buffer length (in bytes)
3235*
3236* Returns:
3237* 0 success
3238* >0 f/w reported error - f/w status code
3239* <0 driver reported error
3240*
3241* Side effects:
3242*
3243* Call context:
3244* process
3245----------------------------------------------------------------*/
3246int hfa384x_drvr_setconfig(hfa384x_t *hw, UINT16 rid, void *buf, UINT16 len)
3247{
3248 return hfa384x_dowrid_wait(hw, rid, buf, len);
3249}
3250
3251/*----------------------------------------------------------------
3252* hfa384x_drvr_start
3253*
3254* Issues the MAC initialize command, sets up some data structures,
3255* and enables the interrupts. After this function completes, the
3256* low-level stuff should be ready for any/all commands.
3257*
3258* Arguments:
3259* hw device structure
3260* Returns:
3261* 0 success
3262* >0 f/w reported error - f/w status code
3263* <0 driver reported error
3264*
3265* Side effects:
3266*
3267* Call context:
3268* process
3269----------------------------------------------------------------*/
3270int hfa384x_drvr_start(hfa384x_t *hw)
3271{
3272 int result;
3273 DBFENTER;
3274
3275 might_sleep();
3276
3277 if (usb_clear_halt(hw->usb, hw->endp_in)) {
3278 WLAN_LOG_ERROR(
3279 "Failed to reset bulk in endpoint.\n");
3280 }
3281
3282 if (usb_clear_halt(hw->usb, hw->endp_out)) {
3283 WLAN_LOG_ERROR(
3284 "Failed to reset bulk out endpoint.\n");
3285 }
3286
3287 /* Synchronous unlink, in case we're trying to restart the driver */
3288 usb_kill_urb(&hw->rx_urb);
3289
3290 /* Post the IN urb */
3291 result = submit_rx_urb(hw, GFP_KERNEL);
3292 if (result != 0) {
3293 WLAN_LOG_ERROR(
3294 "Fatal, failed to submit RX URB, result=%d\n",
3295 result);
3296 goto done;
3297 }
3298
3299 /* call initialize */
3300 result = hfa384x_cmd_initialize(hw);
3301 if (result != 0) {
3302 usb_kill_urb(&hw->rx_urb);
3303 WLAN_LOG_ERROR(
3304 "cmd_initialize() failed, result=%d\n",
3305 result);
3306 goto done;
3307 }
3308
3309 hw->state = HFA384x_STATE_RUNNING;
3310
3311done:
3312 DBFEXIT;
3313 return result;
3314}
3315
3316
3317/*----------------------------------------------------------------
3318* hfa384x_drvr_stop
3319*
3320* Shuts down the MAC to the point where it is safe to unload the
3321* driver. Any subsystem that may be holding a data or function
3322* ptr into the driver must be cleared/deinitialized.
3323*
3324* Arguments:
3325* hw device structure
3326* Returns:
3327* 0 success
3328* >0 f/w reported error - f/w status code
3329* <0 driver reported error
3330*
3331* Side effects:
3332*
3333* Call context:
3334* process
3335----------------------------------------------------------------*/
3336int
3337hfa384x_drvr_stop(hfa384x_t *hw)
3338{
3339 int result = 0;
3340 int i;
3341 DBFENTER;
3342
3343 might_sleep();
3344
3345 /* There's no need for spinlocks here. The USB "disconnect"
3346 * function sets this "removed" flag and then calls us.
3347 */
3348 if ( !hw->wlandev->hwremoved ) {
3349 /* Call initialize to leave the MAC in its 'reset' state */
3350 hfa384x_cmd_initialize(hw);
3351
3352 /* Cancel the rxurb */
3353 usb_kill_urb(&hw->rx_urb);
3354 }
3355
3356 hw->link_status = HFA384x_LINK_NOTCONNECTED;
3357 hw->state = HFA384x_STATE_INIT;
3358
3359 del_timer_sync(&hw->commsqual_timer);
3360
3361 /* Clear all the port status */
3362 for ( i = 0; i < HFA384x_NUMPORTS_MAX; i++) {
3363 hw->port_enabled[i] = 0;
3364 }
3365
3366 DBFEXIT;
3367 return result;
3368}
3369
3370/*----------------------------------------------------------------
3371* hfa384x_drvr_txframe
3372*
3373* Takes a frame from prism2sta and queues it for transmission.
3374*
3375* Arguments:
3376* hw device structure
3377* skb packet buffer struct. Contains an 802.11
3378* data frame.
3379* p80211_hdr points to the 802.11 header for the packet.
3380* Returns:
3381* 0 Success and more buffs available
3382* 1 Success but no more buffs
3383* 2 Allocation failure
3384* 4 Buffer full or queue busy
3385*
3386* Side effects:
3387*
3388* Call context:
3389* interrupt
3390----------------------------------------------------------------*/
3391int hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep)
3392
3393{
3394 int usbpktlen = sizeof(hfa384x_tx_frame_t);
3395 int result;
3396 int ret;
3397 char *ptr;
3398
3399 DBFENTER;
3400
3401 if (hw->tx_urb.status == -EINPROGRESS) {
3402 WLAN_LOG_WARNING("TX URB already in use\n");
3403 result = 3;
3404 goto exit;
3405 }
3406
3407 /* Build Tx frame structure */
3408 /* Set up the control field */
3409 memset(&hw->txbuff.txfrm.desc, 0, sizeof(hw->txbuff.txfrm.desc));
3410
3411 /* Setup the usb type field */
3412 hw->txbuff.type = host2hfa384x_16(HFA384x_USB_TXFRM);
3413
3414 /* Set up the sw_support field to identify this frame */
3415 hw->txbuff.txfrm.desc.sw_support = 0x0123;
3416
3417/* Tx complete and Tx exception disable per dleach. Might be causing
3418 * buf depletion
3419 */
3420//#define DOEXC SLP -- doboth breaks horribly under load, doexc less so.
3421#if defined(DOBOTH)
3422 hw->txbuff.txfrm.desc.tx_control =
3423 HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) |
3424 HFA384x_TX_TXEX_SET(1) | HFA384x_TX_TXOK_SET(1);
3425#elif defined(DOEXC)
3426 hw->txbuff.txfrm.desc.tx_control =
3427 HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) |
3428 HFA384x_TX_TXEX_SET(1) | HFA384x_TX_TXOK_SET(0);
3429#else
3430 hw->txbuff.txfrm.desc.tx_control =
3431 HFA384x_TX_MACPORT_SET(0) | HFA384x_TX_STRUCTYPE_SET(1) |
3432 HFA384x_TX_TXEX_SET(0) | HFA384x_TX_TXOK_SET(0);
3433#endif
3434 hw->txbuff.txfrm.desc.tx_control =
3435 host2hfa384x_16(hw->txbuff.txfrm.desc.tx_control);
3436
3437 /* copy the header over to the txdesc */
3438 memcpy(&(hw->txbuff.txfrm.desc.frame_control), p80211_hdr, sizeof(p80211_hdr_t));
3439
3440 /* if we're using host WEP, increase size by IV+ICV */
3441 if (p80211_wep->data) {
3442 hw->txbuff.txfrm.desc.data_len = host2hfa384x_16(skb->len+8);
3443 // hw->txbuff.txfrm.desc.tx_control |= HFA384x_TX_NOENCRYPT_SET(1);
3444 usbpktlen+=8;
3445 } else {
3446 hw->txbuff.txfrm.desc.data_len = host2hfa384x_16(skb->len);
3447 }
3448
3449 usbpktlen += skb->len;
3450
3451 /* copy over the WEP IV if we are using host WEP */
3452 ptr = hw->txbuff.txfrm.data;
3453 if (p80211_wep->data) {
3454 memcpy(ptr, p80211_wep->iv, sizeof(p80211_wep->iv));
3455 ptr+= sizeof(p80211_wep->iv);
3456 memcpy(ptr, p80211_wep->data, skb->len);
3457 } else {
3458 memcpy(ptr, skb->data, skb->len);
3459 }
3460 /* copy over the packet data */
3461 ptr+= skb->len;
3462
3463 /* copy over the WEP ICV if we are using host WEP */
3464 if (p80211_wep->data) {
3465 memcpy(ptr, p80211_wep->icv, sizeof(p80211_wep->icv));
3466 }
3467
3468 /* Send the USB packet */
3469 usb_fill_bulk_urb( &(hw->tx_urb), hw->usb,
3470 hw->endp_out,
3471 &(hw->txbuff), ROUNDUP64(usbpktlen),
3472 hfa384x_usbout_callback, hw->wlandev );
3473 hw->tx_urb.transfer_flags |= USB_QUEUE_BULK;
3474
3475 result = 1;
3476 ret = submit_tx_urb(hw, &hw->tx_urb, GFP_ATOMIC);
3477 if ( ret != 0 ) {
3478 WLAN_LOG_ERROR(
3479 "submit_tx_urb() failed, error=%d\n", ret);
3480 result = 3;
3481 }
3482
3483 exit:
3484 DBFEXIT;
3485 return result;
3486}
3487
3488void hfa384x_tx_timeout(wlandevice_t *wlandev)
3489{
3490 hfa384x_t *hw = wlandev->priv;
3491 unsigned long flags;
3492
3493 DBFENTER;
3494
3495 spin_lock_irqsave(&hw->ctlxq.lock, flags);
3496
3497 if ( !hw->wlandev->hwremoved &&
3498 /* Note the bitwise OR, not the logical OR. */
3499 ( !test_and_set_bit(WORK_TX_HALT, &hw->usb_flags) |
3500 !test_and_set_bit(WORK_RX_HALT, &hw->usb_flags) ) )
3501 {
3502 schedule_work(&hw->usb_work);
3503 }
3504
3505 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
3506
3507 DBFEXIT;
3508}
3509
3510/*----------------------------------------------------------------
3511* hfa384x_usbctlx_reaper_task
3512*
3513* Tasklet to delete dead CTLX objects
3514*
3515* Arguments:
3516* data ptr to a hfa384x_t
3517*
3518* Returns:
3519*
3520* Call context:
3521* Interrupt
3522----------------------------------------------------------------*/
3523static void hfa384x_usbctlx_reaper_task(unsigned long data)
3524{
3525 hfa384x_t *hw = (hfa384x_t*)data;
3526 struct list_head *entry;
3527 struct list_head *temp;
3528 unsigned long flags;
3529
3530 DBFENTER;
3531
3532 spin_lock_irqsave(&hw->ctlxq.lock, flags);
3533
3534 /* This list is guaranteed to be empty if someone
3535 * has unplugged the adapter.
3536 */
3537 list_for_each_safe(entry, temp, &hw->ctlxq.reapable) {
3538 hfa384x_usbctlx_t *ctlx;
3539
3540 ctlx = list_entry(entry, hfa384x_usbctlx_t, list);
3541 list_del(&ctlx->list);
3542 kfree(ctlx);
3543 }
3544
3545 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
3546
3547 DBFEXIT;
3548}
3549
3550/*----------------------------------------------------------------
3551* hfa384x_usbctlx_completion_task
3552*
3553* Tasklet to call completion handlers for returned CTLXs
3554*
3555* Arguments:
3556* data ptr to hfa384x_t
3557*
3558* Returns:
3559* Nothing
3560*
3561* Call context:
3562* Interrupt
3563----------------------------------------------------------------*/
3564static void hfa384x_usbctlx_completion_task(unsigned long data)
3565{
3566 hfa384x_t *hw = (hfa384x_t*)data;
3567 struct list_head *entry;
3568 struct list_head *temp;
3569 unsigned long flags;
3570
3571 int reap = 0;
3572
3573 DBFENTER;
3574
3575 spin_lock_irqsave(&hw->ctlxq.lock, flags);
3576
3577 /* This list is guaranteed to be empty if someone
3578 * has unplugged the adapter ...
3579 */
3580 list_for_each_safe(entry, temp, &hw->ctlxq.completing) {
3581 hfa384x_usbctlx_t *ctlx;
3582
3583 ctlx = list_entry(entry, hfa384x_usbctlx_t, list);
3584
3585 /* Call the completion function that this
3586 * command was assigned, assuming it has one.
3587 */
3588 if ( ctlx->cmdcb != NULL ) {
3589 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
3590 ctlx->cmdcb(hw, ctlx);
3591 spin_lock_irqsave(&hw->ctlxq.lock, flags);
3592
3593 /* Make sure we don't try and complete
3594 * this CTLX more than once!
3595 */
3596 ctlx->cmdcb = NULL;
3597
3598 /* Did someone yank the adapter out
3599 * while our list was (briefly) unlocked?
3600 */
3601 if ( hw->wlandev->hwremoved )
3602 {
3603 reap = 0;
3604 break;
3605 }
3606 }
3607
3608 /*
3609 * "Reapable" CTLXs are ones which don't have any
3610 * threads waiting for them to die. Hence they must
3611 * be delivered to The Reaper!
3612 */
3613 if ( ctlx->reapable ) {
3614 /* Move the CTLX off the "completing" list (hopefully)
3615 * on to the "reapable" list where the reaper task
3616 * can find it. And "reapable" means that this CTLX
3617 * isn't sitting on a wait-queue somewhere.
3618 */
3619 list_move_tail(&ctlx->list, &hw->ctlxq.reapable);
3620 reap = 1;
3621 }
3622
3623 complete(&ctlx->done);
3624 }
3625 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
3626
3627 if (reap)
3628 tasklet_schedule(&hw->reaper_bh);
3629
3630 DBFEXIT;
3631}
3632
3633/*----------------------------------------------------------------
3634* unlocked_usbctlx_cancel_async
3635*
3636* Mark the CTLX dead asynchronously, and ensure that the
3637* next command on the queue is run afterwards.
3638*
3639* Arguments:
3640* hw ptr to the hfa384x_t structure
3641* ctlx ptr to a CTLX structure
3642*
3643* Returns:
3644* 0 the CTLX's URB is inactive
3645* -EINPROGRESS the URB is currently being unlinked
3646*
3647* Call context:
3648* Either process or interrupt, but presumably interrupt
3649----------------------------------------------------------------*/
3650static int unlocked_usbctlx_cancel_async(hfa384x_t *hw, hfa384x_usbctlx_t *ctlx)
3651{
3652 int ret;
3653
3654 DBFENTER;
3655
3656 /*
3657 * Try to delete the URB containing our request packet.
3658 * If we succeed, then its completion handler will be
3659 * called with a status of -ECONNRESET.
3660 */
3661 hw->ctlx_urb.transfer_flags |= URB_ASYNC_UNLINK;
3662 ret = usb_unlink_urb(&hw->ctlx_urb);
3663
3664 if (ret != -EINPROGRESS) {
3665 /*
3666 * The OUT URB had either already completed
3667 * or was still in the pending queue, so the
3668 * URB's completion function will not be called.
3669 * We will have to complete the CTLX ourselves.
3670 */
3671 ctlx->state = CTLX_REQ_FAILED;
3672 unlocked_usbctlx_complete(hw, ctlx);
3673 ret = 0;
3674 }
3675
3676 DBFEXIT;
3677
3678 return ret;
3679}
3680
3681/*----------------------------------------------------------------
3682* unlocked_usbctlx_complete
3683*
3684* A CTLX has completed. It may have been successful, it may not
3685* have been. At this point, the CTLX should be quiescent. The URBs
3686* aren't active and the timers should have been stopped.
3687*
3688* The CTLX is migrated to the "completing" queue, and the completing
3689* tasklet is scheduled.
3690*
3691* Arguments:
3692* hw ptr to a hfa384x_t structure
3693* ctlx ptr to a ctlx structure
3694*
3695* Returns:
3696* nothing
3697*
3698* Side effects:
3699*
3700* Call context:
3701* Either, assume interrupt
3702----------------------------------------------------------------*/
3703static void unlocked_usbctlx_complete(hfa384x_t *hw, hfa384x_usbctlx_t *ctlx)
3704{
3705 DBFENTER;
3706
3707 /* Timers have been stopped, and ctlx should be in
3708 * a terminal state. Retire it from the "active"
3709 * queue.
3710 */
3711 list_move_tail(&ctlx->list, &hw->ctlxq.completing);
3712 tasklet_schedule(&hw->completion_bh);
3713
3714 switch (ctlx->state) {
3715 case CTLX_COMPLETE:
3716 case CTLX_REQ_FAILED:
3717 /* This are the correct terminating states. */
3718 break;
3719
3720 default:
3721 WLAN_LOG_ERROR("CTLX[%d] not in a terminating state(%s)\n",
3722 hfa384x2host_16(ctlx->outbuf.type),
3723 ctlxstr(ctlx->state));
3724 break;
3725 } /* switch */
3726
3727 DBFEXIT;
3728}
3729
3730/*----------------------------------------------------------------
3731* hfa384x_usbctlxq_run
3732*
3733* Checks to see if the head item is running. If not, starts it.
3734*
3735* Arguments:
3736* hw ptr to hfa384x_t
3737*
3738* Returns:
3739* nothing
3740*
3741* Side effects:
3742*
3743* Call context:
3744* any
3745----------------------------------------------------------------*/
3746static void
3747hfa384x_usbctlxq_run(hfa384x_t *hw)
3748{
3749 unsigned long flags;
3750 DBFENTER;
3751
3752 /* acquire lock */
3753 spin_lock_irqsave(&hw->ctlxq.lock, flags);
3754
3755 /* Only one active CTLX at any one time, because there's no
3756 * other (reliable) way to match the response URB to the
3757 * correct CTLX.
3758 *
3759 * Don't touch any of these CTLXs if the hardware
3760 * has been removed or the USB subsystem is stalled.
3761 */
3762 if ( !list_empty(&hw->ctlxq.active) ||
3763 test_bit(WORK_TX_HALT, &hw->usb_flags) ||
3764 hw->wlandev->hwremoved )
3765 goto unlock;
3766
3767 while ( !list_empty(&hw->ctlxq.pending) ) {
3768 hfa384x_usbctlx_t *head;
3769 int result;
3770
3771 /* This is the first pending command */
3772 head = list_entry(hw->ctlxq.pending.next,
3773 hfa384x_usbctlx_t,
3774 list);
3775
3776 /* We need to split this off to avoid a race condition */
3777 list_move_tail(&head->list, &hw->ctlxq.active);
3778
3779 /* Fill the out packet */
3780 usb_fill_bulk_urb( &(hw->ctlx_urb), hw->usb,
3781 hw->endp_out,
3782 &(head->outbuf), ROUNDUP64(head->outbufsize),
3783 hfa384x_ctlxout_callback, hw);
3784 hw->ctlx_urb.transfer_flags |= USB_QUEUE_BULK;
3785
3786 /* Now submit the URB and update the CTLX's state
3787 */
3788 if ((result = SUBMIT_URB(&hw->ctlx_urb, GFP_ATOMIC)) == 0) {
3789 /* This CTLX is now running on the active queue */
3790 head->state = CTLX_REQ_SUBMITTED;
3791
3792 /* Start the OUT wait timer */
3793 hw->req_timer_done = 0;
3794 hw->reqtimer.expires = jiffies + HZ;
3795 add_timer(&hw->reqtimer);
3796
3797 /* Start the IN wait timer */
3798 hw->resp_timer_done = 0;
3799 hw->resptimer.expires = jiffies + 2*HZ;
3800 add_timer(&hw->resptimer);
3801
3802 break;
3803 }
3804
3805 if (result == -EPIPE) {
3806 /* The OUT pipe needs resetting, so put
3807 * this CTLX back in the "pending" queue
3808 * and schedule a reset ...
3809 */
3810 WLAN_LOG_WARNING("%s tx pipe stalled: requesting reset\n",
3811 hw->wlandev->netdev->name);
3812 list_move(&head->list, &hw->ctlxq.pending);
3813 set_bit(WORK_TX_HALT, &hw->usb_flags);
3814 schedule_work(&hw->usb_work);
3815 break;
3816 }
3817
3818 if (result == -ESHUTDOWN) {
3819 WLAN_LOG_WARNING("%s urb shutdown!\n",
3820 hw->wlandev->netdev->name);
3821 break;
3822 }
3823
3824 WLAN_LOG_ERROR("Failed to submit CTLX[%d]: error=%d\n",
3825 hfa384x2host_16(head->outbuf.type), result);
3826 unlocked_usbctlx_complete(hw, head);
3827 } /* while */
3828
3829 unlock:
3830 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
3831
3832 DBFEXIT;
3833}
3834
3835
3836/*----------------------------------------------------------------
3837* hfa384x_usbin_callback
3838*
3839* Callback for URBs on the BULKIN endpoint.
3840*
3841* Arguments:
3842* urb ptr to the completed urb
3843*
3844* Returns:
3845* nothing
3846*
3847* Side effects:
3848*
3849* Call context:
3850* interrupt
3851----------------------------------------------------------------*/
3852#ifdef URB_ONLY_CALLBACK
3853static void hfa384x_usbin_callback(struct urb *urb)
3854#else
3855static void hfa384x_usbin_callback(struct urb *urb, struct pt_regs *regs)
3856#endif
3857{
3858 wlandevice_t *wlandev = urb->context;
3859 hfa384x_t *hw;
3860 hfa384x_usbin_t *usbin = (hfa384x_usbin_t *) urb->transfer_buffer;
3861 struct sk_buff *skb = NULL;
3862 int result;
3863 int urb_status;
3864 UINT16 type;
3865
3866 enum USBIN_ACTION {
3867 HANDLE,
3868 RESUBMIT,
3869 ABORT
3870 } action;
3871
3872 DBFENTER;
3873
3874 if ( !wlandev ||
3875 !wlandev->netdev ||
3876 !netif_device_present(wlandev->netdev) )
3877 goto exit;
3878
3879 hw = wlandev->priv;
3880 if (!hw)
3881 goto exit;
3882
3883 skb = hw->rx_urb_skb;
3884 if (!skb || (skb->data != urb->transfer_buffer)) {
3885 BUG();
3886 }
3887 hw->rx_urb_skb = NULL;
3888
3889 /* Check for error conditions within the URB */
3890 switch (urb->status) {
3891 case 0:
3892 action = HANDLE;
3893
3894 /* Check for short packet */
3895 if ( urb->actual_length == 0 ) {
3896 ++(wlandev->linux_stats.rx_errors);
3897 ++(wlandev->linux_stats.rx_length_errors);
3898 action = RESUBMIT;
3899 }
3900 break;
3901
3902 case -EPIPE:
3903 WLAN_LOG_WARNING("%s rx pipe stalled: requesting reset\n",
3904 wlandev->netdev->name);
3905 if ( !test_and_set_bit(WORK_RX_HALT, &hw->usb_flags) )
3906 schedule_work(&hw->usb_work);
3907 ++(wlandev->linux_stats.rx_errors);
3908 action = ABORT;
3909 break;
3910
3911 case -EILSEQ:
3912 case -ETIMEDOUT:
3913 case -EPROTO:
3914 if ( !test_and_set_bit(THROTTLE_RX, &hw->usb_flags) &&
3915 !timer_pending(&hw->throttle) ) {
3916 mod_timer(&hw->throttle, jiffies + THROTTLE_JIFFIES);
3917 }
3918 ++(wlandev->linux_stats.rx_errors);
3919 action = ABORT;
3920 break;
3921
3922 case -EOVERFLOW:
3923 ++(wlandev->linux_stats.rx_over_errors);
3924 action = RESUBMIT;
3925 break;
3926
3927 case -ENODEV:
3928 case -ESHUTDOWN:
3929 WLAN_LOG_DEBUG(3,"status=%d, device removed.\n", urb->status);
3930 action = ABORT;
3931 break;
3932
3933 case -ENOENT:
3934 case -ECONNRESET:
3935 WLAN_LOG_DEBUG(3,"status=%d, urb explicitly unlinked.\n", urb->status);
3936 action = ABORT;
3937 break;
3938
3939 default:
3940 WLAN_LOG_DEBUG(3,"urb status=%d, transfer flags=0x%x\n",
3941 urb->status, urb->transfer_flags);
3942 ++(wlandev->linux_stats.rx_errors);
3943 action = RESUBMIT;
3944 break;
3945 }
3946
3947 urb_status = urb->status;
3948
3949 if (action != ABORT) {
3950 /* Repost the RX URB */
3951 result = submit_rx_urb(hw, GFP_ATOMIC);
3952
3953 if (result != 0) {
3954 WLAN_LOG_ERROR(
3955 "Fatal, failed to resubmit rx_urb. error=%d\n",
3956 result);
3957 }
3958 }
3959
3960 /* Handle any USB-IN packet */
3961 /* Note: the check of the sw_support field, the type field doesn't
3962 * have bit 12 set like the docs suggest.
3963 */
3964 type = hfa384x2host_16(usbin->type);
3965 if (HFA384x_USB_ISRXFRM(type)) {
3966 if (action == HANDLE) {
3967 if (usbin->txfrm.desc.sw_support == 0x0123) {
3968 hfa384x_usbin_txcompl(wlandev, usbin);
3969 } else {
3970 skb_put(skb, sizeof(*usbin));
3971 hfa384x_usbin_rx(wlandev, skb);
3972 skb = NULL;
3973 }
3974 }
3975 goto exit;
3976 }
3977 if (HFA384x_USB_ISTXFRM(type)) {
3978 if (action == HANDLE)
3979 hfa384x_usbin_txcompl(wlandev, usbin);
3980 goto exit;
3981 }
3982 switch (type) {
3983 case HFA384x_USB_INFOFRM:
3984 if (action == ABORT)
3985 goto exit;
3986 if (action == HANDLE)
3987 hfa384x_usbin_info(wlandev, usbin);
3988 break;
3989
3990 case HFA384x_USB_CMDRESP:
3991 case HFA384x_USB_WRIDRESP:
3992 case HFA384x_USB_RRIDRESP:
3993 case HFA384x_USB_WMEMRESP:
3994 case HFA384x_USB_RMEMRESP:
3995 /* ALWAYS, ALWAYS, ALWAYS handle this CTLX!!!! */
3996 hfa384x_usbin_ctlx(hw, usbin, urb_status);
3997 break;
3998
3999 case HFA384x_USB_BUFAVAIL:
4000 WLAN_LOG_DEBUG(3,"Received BUFAVAIL packet, frmlen=%d\n",
4001 usbin->bufavail.frmlen);
4002 break;
4003
4004 case HFA384x_USB_ERROR:
4005 WLAN_LOG_DEBUG(3,"Received USB_ERROR packet, errortype=%d\n",
4006 usbin->usberror.errortype);
4007 break;
4008
4009 default:
4010 WLAN_LOG_DEBUG(3,"Unrecognized USBIN packet, type=%x, status=%d\n",
4011 usbin->type, urb_status);
4012 break;
4013 } /* switch */
4014
4015exit:
4016
4017 if (skb)
4018 dev_kfree_skb(skb);
4019
4020 DBFEXIT;
4021}
4022
4023
4024/*----------------------------------------------------------------
4025* hfa384x_usbin_ctlx
4026*
4027* We've received a URB containing a Prism2 "response" message.
4028* This message needs to be matched up with a CTLX on the active
4029* queue and our state updated accordingly.
4030*
4031* Arguments:
4032* hw ptr to hfa384x_t
4033* usbin ptr to USB IN packet
4034* urb_status status of this Bulk-In URB
4035*
4036* Returns:
4037* nothing
4038*
4039* Side effects:
4040*
4041* Call context:
4042* interrupt
4043----------------------------------------------------------------*/
4044static void hfa384x_usbin_ctlx(hfa384x_t *hw, hfa384x_usbin_t *usbin,
4045 int urb_status)
4046{
4047 hfa384x_usbctlx_t *ctlx;
4048 int run_queue = 0;
4049 unsigned long flags;
4050
4051 DBFENTER;
4052
4053retry:
4054 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4055
4056 /* There can be only one CTLX on the active queue
4057 * at any one time, and this is the CTLX that the
4058 * timers are waiting for.
4059 */
4060 if ( list_empty(&hw->ctlxq.active) ) {
4061 goto unlock;
4062 }
4063
4064 /* Remove the "response timeout". It's possible that
4065 * we are already too late, and that the timeout is
4066 * already running. And that's just too bad for us,
4067 * because we could lose our CTLX from the active
4068 * queue here ...
4069 */
4070 if (del_timer(&hw->resptimer) == 0) {
4071 if (hw->resp_timer_done == 0) {
4072 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4073 goto retry;
4074 }
4075 }
4076 else {
4077 hw->resp_timer_done = 1;
4078 }
4079
4080 ctlx = get_active_ctlx(hw);
4081
4082 if (urb_status != 0) {
4083 /*
4084 * Bad CTLX, so get rid of it. But we only
4085 * remove it from the active queue if we're no
4086 * longer expecting the OUT URB to complete.
4087 */
4088 if (unlocked_usbctlx_cancel_async(hw, ctlx) == 0)
4089 run_queue = 1;
4090 } else {
4091 const UINT16 intype = (usbin->type&~host2hfa384x_16(0x8000));
4092
4093 /*
4094 * Check that our message is what we're expecting ...
4095 */
4096 if (ctlx->outbuf.type != intype) {
4097 WLAN_LOG_WARNING("Expected IN[%d], received IN[%d] - ignored.\n",
4098 hfa384x2host_16(ctlx->outbuf.type),
4099 hfa384x2host_16(intype));
4100 goto unlock;
4101 }
4102
4103 /* This URB has succeeded, so grab the data ... */
4104 memcpy(&ctlx->inbuf, usbin, sizeof(ctlx->inbuf));
4105
4106 switch (ctlx->state) {
4107 case CTLX_REQ_SUBMITTED:
4108 /*
4109 * We have received our response URB before
4110 * our request has been acknowledged. Odd,
4111 * but our OUT URB is still alive...
4112 */
4113 WLAN_LOG_DEBUG(0, "Causality violation: please reboot Universe, or email linux-wlan-devel@lists.linux-wlan.com\n");
4114 ctlx->state = CTLX_RESP_COMPLETE;
4115 break;
4116
4117 case CTLX_REQ_COMPLETE:
4118 /*
4119 * This is the usual path: our request
4120 * has already been acknowledged, and
4121 * now we have received the reply too.
4122 */
4123 ctlx->state = CTLX_COMPLETE;
4124 unlocked_usbctlx_complete(hw, ctlx);
4125 run_queue = 1;
4126 break;
4127
4128 default:
4129 /*
4130 * Throw this CTLX away ...
4131 */
4132 WLAN_LOG_ERROR("Matched IN URB, CTLX[%d] in invalid state(%s)."
4133 " Discarded.\n",
4134 hfa384x2host_16(ctlx->outbuf.type),
4135 ctlxstr(ctlx->state));
4136 if (unlocked_usbctlx_cancel_async(hw, ctlx) == 0)
4137 run_queue = 1;
4138 break;
4139 } /* switch */
4140 }
4141
4142unlock:
4143 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4144
4145 if (run_queue)
4146 hfa384x_usbctlxq_run(hw);
4147
4148 DBFEXIT;
4149}
4150
4151
4152/*----------------------------------------------------------------
4153* hfa384x_usbin_txcompl
4154*
4155* At this point we have the results of a previous transmit.
4156*
4157* Arguments:
4158* wlandev wlan device
4159* usbin ptr to the usb transfer buffer
4160*
4161* Returns:
4162* nothing
4163*
4164* Side effects:
4165*
4166* Call context:
4167* interrupt
4168----------------------------------------------------------------*/
4169static void hfa384x_usbin_txcompl(wlandevice_t *wlandev, hfa384x_usbin_t *usbin)
4170{
4171 UINT16 status;
4172 DBFENTER;
4173
4174 status = hfa384x2host_16(usbin->type); /* yeah I know it says type...*/
4175
4176 /* Was there an error? */
4177 if (HFA384x_TXSTATUS_ISERROR(status)) {
4178 prism2sta_ev_txexc(wlandev, status);
4179 } else {
4180 prism2sta_ev_tx(wlandev, status);
4181 }
4182 // prism2sta_ev_alloc(wlandev);
4183
4184 DBFEXIT;
4185}
4186
4187
4188/*----------------------------------------------------------------
4189* hfa384x_usbin_rx
4190*
4191* At this point we have a successful received a rx frame packet.
4192*
4193* Arguments:
4194* wlandev wlan device
4195* usbin ptr to the usb transfer buffer
4196*
4197* Returns:
4198* nothing
4199*
4200* Side effects:
4201*
4202* Call context:
4203* interrupt
4204----------------------------------------------------------------*/
4205static void hfa384x_usbin_rx(wlandevice_t *wlandev, struct sk_buff *skb)
4206{
4207 hfa384x_usbin_t *usbin = (hfa384x_usbin_t *) skb->data;
4208 hfa384x_t *hw = wlandev->priv;
4209 int hdrlen;
4210 p80211_rxmeta_t *rxmeta;
4211 UINT16 data_len;
4212 UINT16 fc;
4213
4214 DBFENTER;
4215
4216 /* Byte order convert once up front. */
4217 usbin->rxfrm.desc.status =
4218 hfa384x2host_16(usbin->rxfrm.desc.status);
4219 usbin->rxfrm.desc.time =
4220 hfa384x2host_32(usbin->rxfrm.desc.time);
4221
4222 /* Now handle frame based on port# */
4223 switch( HFA384x_RXSTATUS_MACPORT_GET(usbin->rxfrm.desc.status) )
4224 {
4225 case 0:
4226 fc = ieee2host16(usbin->rxfrm.desc.frame_control);
4227
4228 /* If exclude and we receive an unencrypted, drop it */
4229 if ( (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) &&
4230 !WLAN_GET_FC_ISWEP(fc)){
4231 goto done;
4232 }
4233
4234 data_len = hfa384x2host_16(usbin->rxfrm.desc.data_len);
4235
4236 /* How much header data do we have? */
4237 hdrlen = p80211_headerlen(fc);
4238
4239 /* Pull off the descriptor */
4240 skb_pull(skb, sizeof(hfa384x_rx_frame_t));
4241
4242 /* Now shunt the header block up against the data block
4243 * with an "overlapping" copy
4244 */
4245 memmove(skb_push(skb, hdrlen),
4246 &usbin->rxfrm.desc.frame_control,
4247 hdrlen);
4248
4249 skb->dev = wlandev->netdev;
4250 skb->dev->last_rx = jiffies;
4251
4252 /* And set the frame length properly */
4253 skb_trim(skb, data_len + hdrlen);
4254
4255 /* The prism2 series does not return the CRC */
4256 memset(skb_put(skb, WLAN_CRC_LEN), 0xff, WLAN_CRC_LEN);
4257
4258 skb_reset_mac_header(skb);
4259
4260 /* Attach the rxmeta, set some stuff */
4261 p80211skb_rxmeta_attach(wlandev, skb);
4262 rxmeta = P80211SKB_RXMETA(skb);
4263 rxmeta->mactime = usbin->rxfrm.desc.time;
4264 rxmeta->rxrate = usbin->rxfrm.desc.rate;
4265 rxmeta->signal = usbin->rxfrm.desc.signal - hw->dbmadjust;
4266 rxmeta->noise = usbin->rxfrm.desc.silence - hw->dbmadjust;
4267
4268 prism2sta_ev_rx(wlandev, skb);
4269
4270 break;
4271
4272 case 7:
4273 if ( ! HFA384x_RXSTATUS_ISFCSERR(usbin->rxfrm.desc.status) ) {
4274 /* Copy to wlansnif skb */
4275 hfa384x_int_rxmonitor( wlandev, &usbin->rxfrm);
4276 dev_kfree_skb(skb);
4277 } else {
4278 WLAN_LOG_DEBUG(3,"Received monitor frame: FCSerr set\n");
4279 }
4280 break;
4281
4282 default:
4283 WLAN_LOG_WARNING("Received frame on unsupported port=%d\n",
4284 HFA384x_RXSTATUS_MACPORT_GET(usbin->rxfrm.desc.status) );
4285 goto done;
4286 break;
4287 }
4288
4289done:
4290 DBFEXIT;
4291 return;
4292}
4293
4294/*----------------------------------------------------------------
4295* hfa384x_int_rxmonitor
4296*
4297* Helper function for int_rx. Handles monitor frames.
4298* Note that this function allocates space for the FCS and sets it
4299* to 0xffffffff. The hfa384x doesn't give us the FCS value but the
4300* higher layers expect it. 0xffffffff is used as a flag to indicate
4301* the FCS is bogus.
4302*
4303* Arguments:
4304* wlandev wlan device structure
4305* rxfrm rx descriptor read from card in int_rx
4306*
4307* Returns:
4308* nothing
4309*
4310* Side effects:
4311* Allocates an skb and passes it up via the PF_PACKET interface.
4312* Call context:
4313* interrupt
4314----------------------------------------------------------------*/
4315static void hfa384x_int_rxmonitor( wlandevice_t *wlandev, hfa384x_usb_rxfrm_t *rxfrm)
4316{
4317 hfa384x_rx_frame_t *rxdesc = &(rxfrm->desc);
4318 UINT hdrlen = 0;
4319 UINT datalen = 0;
4320 UINT skblen = 0;
4321 p80211msg_lnxind_wlansniffrm_t *msg;
4322 UINT8 *datap;
4323 UINT16 fc;
4324 struct sk_buff *skb;
4325 hfa384x_t *hw = wlandev->priv;
4326
4327
4328 DBFENTER;
4329 /* Don't forget the status, time, and data_len fields are in host order */
4330 /* Figure out how big the frame is */
4331 fc = ieee2host16(rxdesc->frame_control);
4332 hdrlen = p80211_headerlen(fc);
4333 datalen = hfa384x2host_16(rxdesc->data_len);
4334
4335 /* Allocate an ind message+framesize skb */
4336 skblen = sizeof(p80211msg_lnxind_wlansniffrm_t) +
4337 hdrlen + datalen + WLAN_CRC_LEN;
4338
4339 /* sanity check the length */
4340 if ( skblen >
4341 (sizeof(p80211msg_lnxind_wlansniffrm_t) +
4342 WLAN_HDR_A4_LEN + WLAN_DATA_MAXLEN + WLAN_CRC_LEN) ) {
4343 WLAN_LOG_DEBUG(1, "overlen frm: len=%zd\n",
4344 skblen - sizeof(p80211msg_lnxind_wlansniffrm_t));
4345 }
4346
4347 if ( (skb = dev_alloc_skb(skblen)) == NULL ) {
4348 WLAN_LOG_ERROR("alloc_skb failed trying to allocate %d bytes\n", skblen);
4349 return;
4350 }
4351
4352 /* only prepend the prism header if in the right mode */
4353 if ((wlandev->netdev->type == ARPHRD_IEEE80211_PRISM) &&
4354 (hw->sniffhdr == 0)) {
4355 datap = skb_put(skb, sizeof(p80211msg_lnxind_wlansniffrm_t));
4356 msg = (p80211msg_lnxind_wlansniffrm_t*) datap;
4357
4358 /* Initialize the message members */
4359 msg->msgcode = DIDmsg_lnxind_wlansniffrm;
4360 msg->msglen = sizeof(p80211msg_lnxind_wlansniffrm_t);
4361 strcpy(msg->devname, wlandev->name);
4362
4363 msg->hosttime.did = DIDmsg_lnxind_wlansniffrm_hosttime;
4364 msg->hosttime.status = 0;
4365 msg->hosttime.len = 4;
4366 msg->hosttime.data = jiffies;
4367
4368 msg->mactime.did = DIDmsg_lnxind_wlansniffrm_mactime;
4369 msg->mactime.status = 0;
4370 msg->mactime.len = 4;
4371 msg->mactime.data = rxdesc->time;
4372
4373 msg->channel.did = DIDmsg_lnxind_wlansniffrm_channel;
4374 msg->channel.status = 0;
4375 msg->channel.len = 4;
4376 msg->channel.data = hw->sniff_channel;
4377
4378 msg->rssi.did = DIDmsg_lnxind_wlansniffrm_rssi;
4379 msg->rssi.status = P80211ENUM_msgitem_status_no_value;
4380 msg->rssi.len = 4;
4381 msg->rssi.data = 0;
4382
4383 msg->sq.did = DIDmsg_lnxind_wlansniffrm_sq;
4384 msg->sq.status = P80211ENUM_msgitem_status_no_value;
4385 msg->sq.len = 4;
4386 msg->sq.data = 0;
4387
4388 msg->signal.did = DIDmsg_lnxind_wlansniffrm_signal;
4389 msg->signal.status = 0;
4390 msg->signal.len = 4;
4391 msg->signal.data = rxdesc->signal;
4392
4393 msg->noise.did = DIDmsg_lnxind_wlansniffrm_noise;
4394 msg->noise.status = 0;
4395 msg->noise.len = 4;
4396 msg->noise.data = rxdesc->silence;
4397
4398 msg->rate.did = DIDmsg_lnxind_wlansniffrm_rate;
4399 msg->rate.status = 0;
4400 msg->rate.len = 4;
4401 msg->rate.data = rxdesc->rate / 5; /* set to 802.11 units */
4402
4403 msg->istx.did = DIDmsg_lnxind_wlansniffrm_istx;
4404 msg->istx.status = 0;
4405 msg->istx.len = 4;
4406 msg->istx.data = P80211ENUM_truth_false;
4407
4408 msg->frmlen.did = DIDmsg_lnxind_wlansniffrm_frmlen;
4409 msg->frmlen.status = 0;
4410 msg->frmlen.len = 4;
4411 msg->frmlen.data = hdrlen + datalen + WLAN_CRC_LEN;
4412 } else if ((wlandev->netdev->type == ARPHRD_IEEE80211_PRISM) &&
4413 (hw->sniffhdr != 0)) {
4414 p80211_caphdr_t *caphdr;
4415 /* The NEW header format! */
4416 datap = skb_put(skb, sizeof(p80211_caphdr_t));
4417 caphdr = (p80211_caphdr_t*) datap;
4418
4419 caphdr->version = htonl(P80211CAPTURE_VERSION);
4420 caphdr->length = htonl(sizeof(p80211_caphdr_t));
4421 caphdr->mactime = __cpu_to_be64(rxdesc->time) * 1000;
4422 caphdr->hosttime = __cpu_to_be64(jiffies);
4423 caphdr->phytype = htonl(4); /* dss_dot11_b */
4424 caphdr->channel = htonl(hw->sniff_channel);
4425 caphdr->datarate = htonl(rxdesc->rate);
4426 caphdr->antenna = htonl(0); /* unknown */
4427 caphdr->priority = htonl(0); /* unknown */
4428 caphdr->ssi_type = htonl(3); /* rssi_raw */
4429 caphdr->ssi_signal = htonl(rxdesc->signal);
4430 caphdr->ssi_noise = htonl(rxdesc->silence);
4431 caphdr->preamble = htonl(0); /* unknown */
4432 caphdr->encoding = htonl(1); /* cck */
4433 }
4434
4435 /* Copy the 802.11 header to the skb (ctl frames may be less than a full header) */
4436 datap = skb_put(skb, hdrlen);
4437 memcpy( datap, &(rxdesc->frame_control), hdrlen);
4438
4439 /* If any, copy the data from the card to the skb */
4440 if ( datalen > 0 )
4441 {
4442 datap = skb_put(skb, datalen);
4443 memcpy(datap, rxfrm->data, datalen);
4444
4445 /* check for unencrypted stuff if WEP bit set. */
4446 if (*(datap - hdrlen + 1) & 0x40) // wep set
4447 if ((*(datap) == 0xaa) && (*(datap+1) == 0xaa))
4448 *(datap - hdrlen + 1) &= 0xbf; // clear wep; it's the 802.2 header!
4449 }
4450
4451 if (hw->sniff_fcs) {
4452 /* Set the FCS */
4453 datap = skb_put(skb, WLAN_CRC_LEN);
4454 memset( datap, 0xff, WLAN_CRC_LEN);
4455 }
4456
4457 /* pass it back up */
4458 prism2sta_ev_rx(wlandev, skb);
4459
4460 DBFEXIT;
4461 return;
4462}
4463
4464
4465
4466/*----------------------------------------------------------------
4467* hfa384x_usbin_info
4468*
4469* At this point we have a successful received a Prism2 info frame.
4470*
4471* Arguments:
4472* wlandev wlan device
4473* usbin ptr to the usb transfer buffer
4474*
4475* Returns:
4476* nothing
4477*
4478* Side effects:
4479*
4480* Call context:
4481* interrupt
4482----------------------------------------------------------------*/
4483static void hfa384x_usbin_info(wlandevice_t *wlandev, hfa384x_usbin_t *usbin)
4484{
4485 DBFENTER;
4486
4487 usbin->infofrm.info.framelen = hfa384x2host_16(usbin->infofrm.info.framelen);
4488 prism2sta_ev_info(wlandev, &usbin->infofrm.info);
4489
4490 DBFEXIT;
4491}
4492
4493
4494
4495/*----------------------------------------------------------------
4496* hfa384x_usbout_callback
4497*
4498* Callback for URBs on the BULKOUT endpoint.
4499*
4500* Arguments:
4501* urb ptr to the completed urb
4502*
4503* Returns:
4504* nothing
4505*
4506* Side effects:
4507*
4508* Call context:
4509* interrupt
4510----------------------------------------------------------------*/
4511#ifdef URB_ONLY_CALLBACK
4512static void hfa384x_usbout_callback(struct urb *urb)
4513#else
4514static void hfa384x_usbout_callback(struct urb *urb, struct pt_regs *regs)
4515#endif
4516{
4517 wlandevice_t *wlandev = urb->context;
4518 hfa384x_usbout_t *usbout = urb->transfer_buffer;
4519 DBFENTER;
4520
4521#ifdef DEBUG_USB
4522 dbprint_urb(urb);
4523#endif
4524
4525 if ( wlandev &&
4526 wlandev->netdev ) {
4527
4528 switch(urb->status) {
4529 case 0:
4530 hfa384x_usbout_tx(wlandev, usbout);
4531 break;
4532
4533 case -EPIPE:
4534 {
4535 hfa384x_t *hw = wlandev->priv;
4536 WLAN_LOG_WARNING("%s tx pipe stalled: requesting reset\n",
4537 wlandev->netdev->name);
4538 if ( !test_and_set_bit(WORK_TX_HALT, &hw->usb_flags) )
4539 schedule_work(&hw->usb_work);
4540 ++(wlandev->linux_stats.tx_errors);
4541 break;
4542 }
4543
4544 case -EPROTO:
4545 case -ETIMEDOUT:
4546 case -EILSEQ:
4547 {
4548 hfa384x_t *hw = wlandev->priv;
4549
4550 if ( !test_and_set_bit(THROTTLE_TX, &hw->usb_flags)
4551 && !timer_pending(&hw->throttle) ) {
4552 mod_timer(&hw->throttle,
4553 jiffies + THROTTLE_JIFFIES);
4554 }
4555 ++(wlandev->linux_stats.tx_errors);
4556 netif_stop_queue(wlandev->netdev);
4557 break;
4558 }
4559
4560 case -ENOENT:
4561 case -ESHUTDOWN:
4562 /* Ignorable errors */
4563 break;
4564
4565 default:
4566 WLAN_LOG_INFO("unknown urb->status=%d\n", urb->status);
4567 ++(wlandev->linux_stats.tx_errors);
4568 break;
4569 } /* switch */
4570 }
4571
4572 DBFEXIT;
4573}
4574
4575
4576/*----------------------------------------------------------------
4577* hfa384x_ctlxout_callback
4578*
4579* Callback for control data on the BULKOUT endpoint.
4580*
4581* Arguments:
4582* urb ptr to the completed urb
4583*
4584* Returns:
4585* nothing
4586*
4587* Side effects:
4588*
4589* Call context:
4590* interrupt
4591----------------------------------------------------------------*/
4592#ifdef URB_ONLY_CALLBACK
4593static void hfa384x_ctlxout_callback(struct urb *urb)
4594#else
4595static void hfa384x_ctlxout_callback(struct urb *urb, struct pt_regs *regs)
4596#endif
4597{
4598 hfa384x_t *hw = urb->context;
4599 int delete_resptimer = 0;
4600 int timer_ok = 1;
4601 int run_queue = 0;
4602 hfa384x_usbctlx_t *ctlx;
4603 unsigned long flags;
4604
4605 DBFENTER;
4606
4607 WLAN_LOG_DEBUG(3,"urb->status=%d\n", urb->status);
4608#ifdef DEBUG_USB
4609 dbprint_urb(urb);
4610#endif
4611 if ( (urb->status == -ESHUTDOWN) ||
4612 (urb->status == -ENODEV) ||
4613 (hw == NULL) )
4614 goto done;
4615
4616retry:
4617 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4618
4619 /*
4620 * Only one CTLX at a time on the "active" list, and
4621 * none at all if we are unplugged. However, we can
4622 * rely on the disconnect function to clean everything
4623 * up if someone unplugged the adapter.
4624 */
4625 if ( list_empty(&hw->ctlxq.active) ) {
4626 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4627 goto done;
4628 }
4629
4630 /*
4631 * Having something on the "active" queue means
4632 * that we have timers to worry about ...
4633 */
4634 if (del_timer(&hw->reqtimer) == 0) {
4635 if (hw->req_timer_done == 0) {
4636 /*
4637 * This timer was actually running while we
4638 * were trying to delete it. Let it terminate
4639 * gracefully instead.
4640 */
4641 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4642 goto retry;
4643 }
4644 }
4645 else {
4646 hw->req_timer_done = 1;
4647 }
4648
4649 ctlx = get_active_ctlx(hw);
4650
4651 if ( urb->status == 0 ) {
4652 /* Request portion of a CTLX is successful */
4653 switch ( ctlx->state ) {
4654 case CTLX_REQ_SUBMITTED:
4655 /* This OUT-ACK received before IN */
4656 ctlx->state = CTLX_REQ_COMPLETE;
4657 break;
4658
4659 case CTLX_RESP_COMPLETE:
4660 /* IN already received before this OUT-ACK,
4661 * so this command must now be complete.
4662 */
4663 ctlx->state = CTLX_COMPLETE;
4664 unlocked_usbctlx_complete(hw, ctlx);
4665 run_queue = 1;
4666 break;
4667
4668 default:
4669 /* This is NOT a valid CTLX "success" state! */
4670 WLAN_LOG_ERROR(
4671 "Illegal CTLX[%d] success state(%s, %d) in OUT URB\n",
4672 hfa384x2host_16(ctlx->outbuf.type),
4673 ctlxstr(ctlx->state), urb->status);
4674 break;
4675 } /* switch */
4676 } else {
4677 /* If the pipe has stalled then we need to reset it */
4678 if ( (urb->status == -EPIPE) &&
4679 !test_and_set_bit(WORK_TX_HALT, &hw->usb_flags) ) {
4680 WLAN_LOG_WARNING("%s tx pipe stalled: requesting reset\n",
4681 hw->wlandev->netdev->name);
4682 schedule_work(&hw->usb_work);
4683 }
4684
4685 /* If someone cancels the OUT URB then its status
4686 * should be either -ECONNRESET or -ENOENT.
4687 */
4688 ctlx->state = CTLX_REQ_FAILED;
4689 unlocked_usbctlx_complete(hw, ctlx);
4690 delete_resptimer = 1;
4691 run_queue = 1;
4692 }
4693
4694 delresp:
4695 if (delete_resptimer) {
4696 if ((timer_ok = del_timer(&hw->resptimer)) != 0) {
4697 hw->resp_timer_done = 1;
4698 }
4699 }
4700
4701 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4702
4703 if ( !timer_ok && (hw->resp_timer_done == 0) ) {
4704 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4705 goto delresp;
4706 }
4707
4708 if (run_queue)
4709 hfa384x_usbctlxq_run(hw);
4710
4711 done:
4712 DBFEXIT;
4713}
4714
4715
4716/*----------------------------------------------------------------
4717* hfa384x_usbctlx_reqtimerfn
4718*
4719* Timer response function for CTLX request timeouts. If this
4720* function is called, it means that the callback for the OUT
4721* URB containing a Prism2.x XXX_Request was never called.
4722*
4723* Arguments:
4724* data a ptr to the hfa384x_t
4725*
4726* Returns:
4727* nothing
4728*
4729* Side effects:
4730*
4731* Call context:
4732* interrupt
4733----------------------------------------------------------------*/
4734static void
4735hfa384x_usbctlx_reqtimerfn(unsigned long data)
4736{
4737 hfa384x_t *hw = (hfa384x_t*)data;
4738 unsigned long flags;
4739 DBFENTER;
4740
4741 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4742
4743 hw->req_timer_done = 1;
4744
4745 /* Removing the hardware automatically empties
4746 * the active list ...
4747 */
4748 if ( !list_empty(&hw->ctlxq.active) )
4749 {
4750 /*
4751 * We must ensure that our URB is removed from
4752 * the system, if it hasn't already expired.
4753 */
4754 hw->ctlx_urb.transfer_flags |= URB_ASYNC_UNLINK;
4755 if (usb_unlink_urb(&hw->ctlx_urb) == -EINPROGRESS)
4756 {
4757 hfa384x_usbctlx_t *ctlx = get_active_ctlx(hw);
4758
4759 ctlx->state = CTLX_REQ_FAILED;
4760
4761 /* This URB was active, but has now been
4762 * cancelled. It will now have a status of
4763 * -ECONNRESET in the callback function.
4764 *
4765 * We are cancelling this CTLX, so we're
4766 * not going to need to wait for a response.
4767 * The URB's callback function will check
4768 * that this timer is truly dead.
4769 */
4770 if (del_timer(&hw->resptimer) != 0)
4771 hw->resp_timer_done = 1;
4772 }
4773 }
4774
4775 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4776
4777 DBFEXIT;
4778}
4779
4780
4781/*----------------------------------------------------------------
4782* hfa384x_usbctlx_resptimerfn
4783*
4784* Timer response function for CTLX response timeouts. If this
4785* function is called, it means that the callback for the IN
4786* URB containing a Prism2.x XXX_Response was never called.
4787*
4788* Arguments:
4789* data a ptr to the hfa384x_t
4790*
4791* Returns:
4792* nothing
4793*
4794* Side effects:
4795*
4796* Call context:
4797* interrupt
4798----------------------------------------------------------------*/
4799static void
4800hfa384x_usbctlx_resptimerfn(unsigned long data)
4801{
4802 hfa384x_t *hw = (hfa384x_t*)data;
4803 unsigned long flags;
4804
4805 DBFENTER;
4806
4807 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4808
4809 hw->resp_timer_done = 1;
4810
4811 /* The active list will be empty if the
4812 * adapter has been unplugged ...
4813 */
4814 if ( !list_empty(&hw->ctlxq.active) )
4815 {
4816 hfa384x_usbctlx_t *ctlx = get_active_ctlx(hw);
4817
4818 if ( unlocked_usbctlx_cancel_async(hw, ctlx) == 0 )
4819 {
4820 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4821 hfa384x_usbctlxq_run(hw);
4822 goto done;
4823 }
4824 }
4825
4826 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4827
4828 done:
4829 DBFEXIT;
4830}
4831
4832/*----------------------------------------------------------------
4833* hfa384x_usb_throttlefn
4834*
4835*
4836* Arguments:
4837* data ptr to hw
4838*
4839* Returns:
4840* Nothing
4841*
4842* Side effects:
4843*
4844* Call context:
4845* Interrupt
4846----------------------------------------------------------------*/
4847static void
4848hfa384x_usb_throttlefn(unsigned long data)
4849{
4850 hfa384x_t *hw = (hfa384x_t*)data;
4851 unsigned long flags;
4852
4853 DBFENTER;
4854
4855 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4856
4857 /*
4858 * We need to check BOTH the RX and the TX throttle controls,
4859 * so we use the bitwise OR instead of the logical OR.
4860 */
4861 WLAN_LOG_DEBUG(3, "flags=0x%lx\n", hw->usb_flags);
4862 if ( !hw->wlandev->hwremoved &&
4863 (
4864 (test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) &&
4865 !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags))
4866 |
4867 (test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) &&
4868 !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags))
4869 ) )
4870 {
4871 schedule_work(&hw->usb_work);
4872 }
4873
4874 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4875
4876 DBFEXIT;
4877}
4878
4879
4880/*----------------------------------------------------------------
4881* hfa384x_usbctlx_submit
4882*
4883* Called from the doxxx functions to submit a CTLX to the queue
4884*
4885* Arguments:
4886* hw ptr to the hw struct
4887* ctlx ctlx structure to enqueue
4888*
4889* Returns:
4890* -ENODEV if the adapter is unplugged
4891* 0
4892*
4893* Side effects:
4894*
4895* Call context:
4896* process or interrupt
4897----------------------------------------------------------------*/
4898static int
4899hfa384x_usbctlx_submit(
4900 hfa384x_t *hw,
4901 hfa384x_usbctlx_t *ctlx)
4902{
4903 unsigned long flags;
4904 int ret;
4905
4906 DBFENTER;
4907
4908 spin_lock_irqsave(&hw->ctlxq.lock, flags);
4909
4910 if (hw->wlandev->hwremoved) {
4911 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4912 ret = -ENODEV;
4913 } else {
4914 ctlx->state = CTLX_PENDING;
4915 list_add_tail(&ctlx->list, &hw->ctlxq.pending);
4916
4917 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
4918 hfa384x_usbctlxq_run(hw);
4919 ret = 0;
4920 }
4921
4922 DBFEXIT;
4923 return ret;
4924}
4925
4926
4927/*----------------------------------------------------------------
4928* hfa384x_usbout_tx
4929*
4930* At this point we have finished a send of a frame. Mark the URB
4931* as available and call ev_alloc to notify higher layers we're
4932* ready for more.
4933*
4934* Arguments:
4935* wlandev wlan device
4936* usbout ptr to the usb transfer buffer
4937*
4938* Returns:
4939* nothing
4940*
4941* Side effects:
4942*
4943* Call context:
4944* interrupt
4945----------------------------------------------------------------*/
4946static void hfa384x_usbout_tx(wlandevice_t *wlandev, hfa384x_usbout_t *usbout)
4947{
4948 DBFENTER;
4949
4950 prism2sta_ev_alloc(wlandev);
4951
4952 DBFEXIT;
4953}
4954
4955/*----------------------------------------------------------------
4956* hfa384x_isgood_pdrcore
4957*
4958* Quick check of PDR codes.
4959*
4960* Arguments:
4961* pdrcode PDR code number (host order)
4962*
4963* Returns:
4964* zero not good.
4965* one is good.
4966*
4967* Side effects:
4968*
4969* Call context:
4970----------------------------------------------------------------*/
4971static int
4972hfa384x_isgood_pdrcode(UINT16 pdrcode)
4973{
4974 switch(pdrcode) {
4975 case HFA384x_PDR_END_OF_PDA:
4976 case HFA384x_PDR_PCB_PARTNUM:
4977 case HFA384x_PDR_PDAVER:
4978 case HFA384x_PDR_NIC_SERIAL:
4979 case HFA384x_PDR_MKK_MEASUREMENTS:
4980 case HFA384x_PDR_NIC_RAMSIZE:
4981 case HFA384x_PDR_MFISUPRANGE:
4982 case HFA384x_PDR_CFISUPRANGE:
4983 case HFA384x_PDR_NICID:
4984 case HFA384x_PDR_MAC_ADDRESS:
4985 case HFA384x_PDR_REGDOMAIN:
4986 case HFA384x_PDR_ALLOWED_CHANNEL:
4987 case HFA384x_PDR_DEFAULT_CHANNEL:
4988 case HFA384x_PDR_TEMPTYPE:
4989 case HFA384x_PDR_IFR_SETTING:
4990 case HFA384x_PDR_RFR_SETTING:
4991 case HFA384x_PDR_HFA3861_BASELINE:
4992 case HFA384x_PDR_HFA3861_SHADOW:
4993 case HFA384x_PDR_HFA3861_IFRF:
4994 case HFA384x_PDR_HFA3861_CHCALSP:
4995 case HFA384x_PDR_HFA3861_CHCALI:
4996 case HFA384x_PDR_3842_NIC_CONFIG:
4997 case HFA384x_PDR_USB_ID:
4998 case HFA384x_PDR_PCI_ID:
4999 case HFA384x_PDR_PCI_IFCONF:
5000 case HFA384x_PDR_PCI_PMCONF:
5001 case HFA384x_PDR_RFENRGY:
5002 case HFA384x_PDR_HFA3861_MANF_TESTSP:
5003 case HFA384x_PDR_HFA3861_MANF_TESTI:
5004 /* code is OK */
5005 return 1;
5006 break;
5007 default:
5008 if ( pdrcode < 0x1000 ) {
5009 /* code is OK, but we don't know exactly what it is */
5010 WLAN_LOG_DEBUG(3,
5011 "Encountered unknown PDR#=0x%04x, "
5012 "assuming it's ok.\n",
5013 pdrcode);
5014 return 1;
5015 } else {
5016 /* bad code */
5017 WLAN_LOG_DEBUG(3,
5018 "Encountered unknown PDR#=0x%04x, "
5019 "(>=0x1000), assuming it's bad.\n",
5020 pdrcode);
5021 return 0;
5022 }
5023 break;
5024 }
5025 return 0; /* avoid compiler warnings */
5026}
5027
diff --git a/drivers/staging/wlan-ng/p80211conv.c b/drivers/staging/wlan-ng/p80211conv.c
new file mode 100644
index 00000000000..68121b9b34f
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211conv.c
@@ -0,0 +1,683 @@
1/* src/p80211/p80211conv.c
2*
3* Ether/802.11 conversions and packet buffer routines
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file defines the functions that perform Ethernet to/from
48* 802.11 frame conversions.
49*
50* --------------------------------------------------------------------
51*/
52/*================================================================*/
53/* System Includes */
54
55#define __NO_VERSION__ /* prevent the static definition */
56
57
58#include <linux/version.h>
59
60#include <linux/module.h>
61#include <linux/kernel.h>
62#include <linux/sched.h>
63#include <linux/types.h>
64#include <linux/skbuff.h>
65#include <linux/slab.h>
66#include <linux/wireless.h>
67#include <linux/netdevice.h>
68#include <linux/etherdevice.h>
69#include <linux/if_ether.h>
70
71#include <asm/byteorder.h>
72
73#include "version.h"
74#include "wlan_compat.h"
75
76/*================================================================*/
77/* Project Includes */
78
79#include "p80211types.h"
80#include "p80211hdr.h"
81#include "p80211conv.h"
82#include "p80211mgmt.h"
83#include "p80211msg.h"
84#include "p80211netdev.h"
85#include "p80211ioctl.h"
86#include "p80211req.h"
87
88
89/*================================================================*/
90/* Local Constants */
91
92/*================================================================*/
93/* Local Macros */
94
95
96/*================================================================*/
97/* Local Types */
98
99
100/*================================================================*/
101/* Local Static Definitions */
102
103static UINT8 oui_rfc1042[] = {0x00, 0x00, 0x00};
104static UINT8 oui_8021h[] = {0x00, 0x00, 0xf8};
105
106/*================================================================*/
107/* Local Function Declarations */
108
109
110/*================================================================*/
111/* Function Definitions */
112
113/*----------------------------------------------------------------
114* p80211pb_ether_to_80211
115*
116* Uses the contents of the ether frame and the etherconv setting
117* to build the elements of the 802.11 frame.
118*
119* We don't actually set
120* up the frame header here. That's the MAC's job. We're only handling
121* conversion of DIXII or 802.3+LLC frames to something that works
122* with 802.11.
123*
124* Note -- 802.11 header is NOT part of the skb. Likewise, the 802.11
125* FCS is also not present and will need to be added elsewhere.
126*
127* Arguments:
128* ethconv Conversion type to perform
129* skb skbuff containing the ether frame
130* p80211_hdr 802.11 header
131*
132* Returns:
133* 0 on success, non-zero otherwise
134*
135* Call context:
136* May be called in interrupt or non-interrupt context
137----------------------------------------------------------------*/
138int skb_ether_to_p80211( wlandevice_t *wlandev, UINT32 ethconv, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep)
139{
140
141 UINT16 fc;
142 UINT16 proto;
143 wlan_ethhdr_t e_hdr;
144 wlan_llc_t *e_llc;
145 wlan_snap_t *e_snap;
146 int foo;
147
148 DBFENTER;
149 memcpy(&e_hdr, skb->data, sizeof(e_hdr));
150
151 if (skb->len <= 0) {
152 WLAN_LOG_DEBUG(1, "zero-length skb!\n");
153 return 1;
154 }
155
156 if ( ethconv == WLAN_ETHCONV_ENCAP ) { /* simplest case */
157 WLAN_LOG_DEBUG(3, "ENCAP len: %d\n", skb->len);
158 /* here, we don't care what kind of ether frm. Just stick it */
159 /* in the 80211 payload */
160 /* which is to say, leave the skb alone. */
161 } else {
162 /* step 1: classify ether frame, DIX or 802.3? */
163 proto = ntohs(e_hdr.type);
164 if ( proto <= 1500 ) {
165 WLAN_LOG_DEBUG(3, "802.3 len: %d\n", skb->len);
166 /* codes <= 1500 reserved for 802.3 lengths */
167 /* it's 802.3, pass ether payload unchanged, */
168
169 /* trim off ethernet header */
170 skb_pull(skb, WLAN_ETHHDR_LEN);
171
172 /* leave off any PAD octets. */
173 skb_trim(skb, proto);
174 } else {
175 WLAN_LOG_DEBUG(3, "DIXII len: %d\n", skb->len);
176 /* it's DIXII, time for some conversion */
177
178 /* trim off ethernet header */
179 skb_pull(skb, WLAN_ETHHDR_LEN);
180
181 /* tack on SNAP */
182 e_snap = (wlan_snap_t *) skb_push(skb, sizeof(wlan_snap_t));
183 e_snap->type = htons(proto);
184 if ( ethconv == WLAN_ETHCONV_8021h && p80211_stt_findproto(proto) ) {
185 memcpy( e_snap->oui, oui_8021h, WLAN_IEEE_OUI_LEN);
186 } else {
187 memcpy( e_snap->oui, oui_rfc1042, WLAN_IEEE_OUI_LEN);
188 }
189
190 /* tack on llc */
191 e_llc = (wlan_llc_t *) skb_push(skb, sizeof(wlan_llc_t));
192 e_llc->dsap = 0xAA; /* SNAP, see IEEE 802 */
193 e_llc->ssap = 0xAA;
194 e_llc->ctl = 0x03;
195
196 }
197 }
198
199 /* Set up the 802.11 header */
200 /* It's a data frame */
201 fc = host2ieee16( WLAN_SET_FC_FTYPE(WLAN_FTYPE_DATA) |
202 WLAN_SET_FC_FSTYPE(WLAN_FSTYPE_DATAONLY));
203
204 switch ( wlandev->macmode ) {
205 case WLAN_MACMODE_IBSS_STA:
206 memcpy(p80211_hdr->a3.a1, &e_hdr.daddr, WLAN_ADDR_LEN);
207 memcpy(p80211_hdr->a3.a2, wlandev->netdev->dev_addr, WLAN_ADDR_LEN);
208 memcpy(p80211_hdr->a3.a3, wlandev->bssid, WLAN_ADDR_LEN);
209 break;
210 case WLAN_MACMODE_ESS_STA:
211 fc |= host2ieee16(WLAN_SET_FC_TODS(1));
212 memcpy(p80211_hdr->a3.a1, wlandev->bssid, WLAN_ADDR_LEN);
213 memcpy(p80211_hdr->a3.a2, wlandev->netdev->dev_addr, WLAN_ADDR_LEN);
214 memcpy(p80211_hdr->a3.a3, &e_hdr.daddr, WLAN_ADDR_LEN);
215 break;
216 case WLAN_MACMODE_ESS_AP:
217 fc |= host2ieee16(WLAN_SET_FC_FROMDS(1));
218 memcpy(p80211_hdr->a3.a1, &e_hdr.daddr, WLAN_ADDR_LEN);
219 memcpy(p80211_hdr->a3.a2, wlandev->bssid, WLAN_ADDR_LEN);
220 memcpy(p80211_hdr->a3.a3, &e_hdr.saddr, WLAN_ADDR_LEN);
221 break;
222 default:
223 WLAN_LOG_ERROR("Error: Converting eth to wlan in unknown mode.\n");
224 return 1;
225 break;
226 }
227
228 p80211_wep->data = NULL;
229
230 if ((wlandev->hostwep & HOSTWEP_PRIVACYINVOKED) && (wlandev->hostwep & HOSTWEP_ENCRYPT)) {
231 // XXXX need to pick keynum other than default?
232
233#if 1
234 p80211_wep->data = kmalloc(skb->len, GFP_ATOMIC);
235#else
236 p80211_wep->data = skb->data;
237#endif
238
239 if ((foo = wep_encrypt(wlandev, skb->data, p80211_wep->data,
240 skb->len,
241 (wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK),
242 p80211_wep->iv, p80211_wep->icv))) {
243 WLAN_LOG_WARNING("Host en-WEP failed, dropping frame (%d).\n", foo);
244 return 2;
245 }
246 fc |= host2ieee16(WLAN_SET_FC_ISWEP(1));
247 }
248
249
250 // skb->nh.raw = skb->data;
251
252 p80211_hdr->a3.fc = fc;
253 p80211_hdr->a3.dur = 0;
254 p80211_hdr->a3.seq = 0;
255
256 DBFEXIT;
257 return 0;
258}
259
260/* jkriegl: from orinoco, modified */
261static void orinoco_spy_gather(wlandevice_t *wlandev, char *mac,
262 p80211_rxmeta_t *rxmeta)
263{
264 int i;
265
266 /* Gather wireless spy statistics: for each packet, compare the
267 * source address with out list, and if match, get the stats... */
268
269 for (i = 0; i < wlandev->spy_number; i++) {
270
271 if (!memcmp(wlandev->spy_address[i], mac, ETH_ALEN)) {
272 memcpy(wlandev->spy_address[i], mac, ETH_ALEN);
273 wlandev->spy_stat[i].level = rxmeta->signal;
274 wlandev->spy_stat[i].noise = rxmeta->noise;
275 wlandev->spy_stat[i].qual = (rxmeta->signal > rxmeta->noise) ? \
276 (rxmeta->signal - rxmeta->noise) : 0;
277 wlandev->spy_stat[i].updated = 0x7;
278 }
279 }
280}
281
282/*----------------------------------------------------------------
283* p80211pb_80211_to_ether
284*
285* Uses the contents of a received 802.11 frame and the etherconv
286* setting to build an ether frame.
287*
288* This function extracts the src and dest address from the 802.11
289* frame to use in the construction of the eth frame.
290*
291* Arguments:
292* ethconv Conversion type to perform
293* skb Packet buffer containing the 802.11 frame
294*
295* Returns:
296* 0 on success, non-zero otherwise
297*
298* Call context:
299* May be called in interrupt or non-interrupt context
300----------------------------------------------------------------*/
301int skb_p80211_to_ether( wlandevice_t *wlandev, UINT32 ethconv, struct sk_buff *skb)
302{
303 netdevice_t *netdev = wlandev->netdev;
304 UINT16 fc;
305 UINT payload_length;
306 UINT payload_offset;
307 UINT8 daddr[WLAN_ETHADDR_LEN];
308 UINT8 saddr[WLAN_ETHADDR_LEN];
309 p80211_hdr_t *w_hdr;
310 wlan_ethhdr_t *e_hdr;
311 wlan_llc_t *e_llc;
312 wlan_snap_t *e_snap;
313
314 int foo;
315
316 DBFENTER;
317
318 payload_length = skb->len - WLAN_HDR_A3_LEN - WLAN_CRC_LEN;
319 payload_offset = WLAN_HDR_A3_LEN;
320
321 w_hdr = (p80211_hdr_t *) skb->data;
322
323 /* setup some vars for convenience */
324 fc = ieee2host16(w_hdr->a3.fc);
325 if ( (WLAN_GET_FC_TODS(fc) == 0) && (WLAN_GET_FC_FROMDS(fc) == 0) ) {
326 memcpy(daddr, w_hdr->a3.a1, WLAN_ETHADDR_LEN);
327 memcpy(saddr, w_hdr->a3.a2, WLAN_ETHADDR_LEN);
328 } else if( (WLAN_GET_FC_TODS(fc) == 0) && (WLAN_GET_FC_FROMDS(fc) == 1) ) {
329 memcpy(daddr, w_hdr->a3.a1, WLAN_ETHADDR_LEN);
330 memcpy(saddr, w_hdr->a3.a3, WLAN_ETHADDR_LEN);
331 } else if( (WLAN_GET_FC_TODS(fc) == 1) && (WLAN_GET_FC_FROMDS(fc) == 0) ) {
332 memcpy(daddr, w_hdr->a3.a3, WLAN_ETHADDR_LEN);
333 memcpy(saddr, w_hdr->a3.a2, WLAN_ETHADDR_LEN);
334 } else {
335 payload_offset = WLAN_HDR_A4_LEN;
336 payload_length -= ( WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN );
337 if (payload_length < 0 ) {
338 WLAN_LOG_ERROR("A4 frame too short!\n");
339 return 1;
340 }
341 memcpy(daddr, w_hdr->a4.a3, WLAN_ETHADDR_LEN);
342 memcpy(saddr, w_hdr->a4.a4, WLAN_ETHADDR_LEN);
343 }
344
345 /* perform de-wep if necessary.. */
346 if ((wlandev->hostwep & HOSTWEP_PRIVACYINVOKED) && WLAN_GET_FC_ISWEP(fc) && (wlandev->hostwep & HOSTWEP_DECRYPT)) {
347 if (payload_length <= 8) {
348 WLAN_LOG_ERROR("WEP frame too short (%u).\n",
349 skb->len);
350 return 1;
351 }
352 if ((foo = wep_decrypt(wlandev, skb->data + payload_offset + 4,
353 payload_length - 8, -1,
354 skb->data + payload_offset,
355 skb->data + payload_offset + payload_length - 4))) {
356 /* de-wep failed, drop skb. */
357 WLAN_LOG_DEBUG(1, "Host de-WEP failed, dropping frame (%d).\n", foo);
358 wlandev->rx.decrypt_err++;
359 return 2;
360 }
361
362 /* subtract the IV+ICV length off the payload */
363 payload_length -= 8;
364 /* chop off the IV */
365 skb_pull(skb, 4);
366 /* chop off the ICV. */
367 skb_trim(skb, skb->len - 4);
368
369 wlandev->rx.decrypt++;
370 }
371
372 e_hdr = (wlan_ethhdr_t *) (skb->data + payload_offset);
373
374 e_llc = (wlan_llc_t *) (skb->data + payload_offset);
375 e_snap = (wlan_snap_t *) (skb->data + payload_offset + sizeof(wlan_llc_t));
376
377 /* Test for the various encodings */
378 if ( (payload_length >= sizeof(wlan_ethhdr_t)) &&
379 ( e_llc->dsap != 0xaa || e_llc->ssap != 0xaa ) &&
380 ((memcmp(daddr, e_hdr->daddr, WLAN_ETHADDR_LEN) == 0) ||
381 (memcmp(saddr, e_hdr->saddr, WLAN_ETHADDR_LEN) == 0))) {
382 WLAN_LOG_DEBUG(3, "802.3 ENCAP len: %d\n", payload_length);
383 /* 802.3 Encapsulated */
384 /* Test for an overlength frame */
385 if ( payload_length > (netdev->mtu + WLAN_ETHHDR_LEN)) {
386 /* A bogus length ethfrm has been encap'd. */
387 /* Is someone trying an oflow attack? */
388 WLAN_LOG_ERROR("ENCAP frame too large (%d > %d)\n",
389 payload_length, netdev->mtu + WLAN_ETHHDR_LEN);
390 return 1;
391 }
392
393 /* Chop off the 802.11 header. it's already sane. */
394 skb_pull(skb, payload_offset);
395 /* chop off the 802.11 CRC */
396 skb_trim(skb, skb->len - WLAN_CRC_LEN);
397
398 } else if ((payload_length >= sizeof(wlan_llc_t) + sizeof(wlan_snap_t)) &&
399 (e_llc->dsap == 0xaa) &&
400 (e_llc->ssap == 0xaa) &&
401 (e_llc->ctl == 0x03) &&
402 (((memcmp( e_snap->oui, oui_rfc1042, WLAN_IEEE_OUI_LEN)==0) &&
403 (ethconv == WLAN_ETHCONV_8021h) &&
404 (p80211_stt_findproto(ieee2host16(e_snap->type)))) ||
405 (memcmp( e_snap->oui, oui_rfc1042, WLAN_IEEE_OUI_LEN)!=0)))
406 {
407 WLAN_LOG_DEBUG(3, "SNAP+RFC1042 len: %d\n", payload_length);
408 /* it's a SNAP + RFC1042 frame && protocol is in STT */
409 /* build 802.3 + RFC1042 */
410
411 /* Test for an overlength frame */
412 if ( payload_length > netdev->mtu ) {
413 /* A bogus length ethfrm has been sent. */
414 /* Is someone trying an oflow attack? */
415 WLAN_LOG_ERROR("SNAP frame too large (%d > %d)\n",
416 payload_length, netdev->mtu);
417 return 1;
418 }
419
420 /* chop 802.11 header from skb. */
421 skb_pull(skb, payload_offset);
422
423 /* create 802.3 header at beginning of skb. */
424 e_hdr = (wlan_ethhdr_t *) skb_push(skb, WLAN_ETHHDR_LEN);
425 memcpy(e_hdr->daddr, daddr, WLAN_ETHADDR_LEN);
426 memcpy(e_hdr->saddr, saddr, WLAN_ETHADDR_LEN);
427 e_hdr->type = htons(payload_length);
428
429 /* chop off the 802.11 CRC */
430 skb_trim(skb, skb->len - WLAN_CRC_LEN);
431
432 } else if ((payload_length >= sizeof(wlan_llc_t) + sizeof(wlan_snap_t)) &&
433 (e_llc->dsap == 0xaa) &&
434 (e_llc->ssap == 0xaa) &&
435 (e_llc->ctl == 0x03) ) {
436 WLAN_LOG_DEBUG(3, "802.1h/RFC1042 len: %d\n", payload_length);
437 /* it's an 802.1h frame || (an RFC1042 && protocol is not in STT) */
438 /* build a DIXII + RFC894 */
439
440 /* Test for an overlength frame */
441 if ((payload_length - sizeof(wlan_llc_t) - sizeof(wlan_snap_t))
442 > netdev->mtu) {
443 /* A bogus length ethfrm has been sent. */
444 /* Is someone trying an oflow attack? */
445 WLAN_LOG_ERROR("DIXII frame too large (%ld > %d)\n",
446 (long int) (payload_length - sizeof(wlan_llc_t) -
447 sizeof(wlan_snap_t)),
448 netdev->mtu);
449 return 1;
450 }
451
452 /* chop 802.11 header from skb. */
453 skb_pull(skb, payload_offset);
454
455 /* chop llc header from skb. */
456 skb_pull(skb, sizeof(wlan_llc_t));
457
458 /* chop snap header from skb. */
459 skb_pull(skb, sizeof(wlan_snap_t));
460
461 /* create 802.3 header at beginning of skb. */
462 e_hdr = (wlan_ethhdr_t *) skb_push(skb, WLAN_ETHHDR_LEN);
463 e_hdr->type = e_snap->type;
464 memcpy(e_hdr->daddr, daddr, WLAN_ETHADDR_LEN);
465 memcpy(e_hdr->saddr, saddr, WLAN_ETHADDR_LEN);
466
467 /* chop off the 802.11 CRC */
468 skb_trim(skb, skb->len - WLAN_CRC_LEN);
469 } else {
470 WLAN_LOG_DEBUG(3, "NON-ENCAP len: %d\n", payload_length);
471 /* any NON-ENCAP */
472 /* it's a generic 80211+LLC or IPX 'Raw 802.3' */
473 /* build an 802.3 frame */
474 /* allocate space and setup hostbuf */
475
476 /* Test for an overlength frame */
477 if ( payload_length > netdev->mtu ) {
478 /* A bogus length ethfrm has been sent. */
479 /* Is someone trying an oflow attack? */
480 WLAN_LOG_ERROR("OTHER frame too large (%d > %d)\n",
481 payload_length,
482 netdev->mtu);
483 return 1;
484 }
485
486 /* Chop off the 802.11 header. */
487 skb_pull(skb, payload_offset);
488
489 /* create 802.3 header at beginning of skb. */
490 e_hdr = (wlan_ethhdr_t *) skb_push(skb, WLAN_ETHHDR_LEN);
491 memcpy(e_hdr->daddr, daddr, WLAN_ETHADDR_LEN);
492 memcpy(e_hdr->saddr, saddr, WLAN_ETHADDR_LEN);
493 e_hdr->type = htons(payload_length);
494
495 /* chop off the 802.11 CRC */
496 skb_trim(skb, skb->len - WLAN_CRC_LEN);
497
498 }
499
500 skb->protocol = eth_type_trans(skb, netdev);
501 skb_reset_mac_header(skb);
502
503 /* jkriegl: process signal and noise as set in hfa384x_int_rx() */
504 /* jkriegl: only process signal/noise if requested by iwspy */
505 if (wlandev->spy_number)
506 orinoco_spy_gather(wlandev, eth_hdr(skb)->h_source, P80211SKB_RXMETA(skb));
507
508 /* Free the metadata */
509 p80211skb_rxmeta_detach(skb);
510
511 DBFEXIT;
512 return 0;
513}
514
515/*----------------------------------------------------------------
516* p80211_stt_findproto
517*
518* Searches the 802.1h Selective Translation Table for a given
519* protocol.
520*
521* Arguments:
522* proto protocl number (in host order) to search for.
523*
524* Returns:
525* 1 - if the table is empty or a match is found.
526* 0 - if the table is non-empty and a match is not found.
527*
528* Call context:
529* May be called in interrupt or non-interrupt context
530----------------------------------------------------------------*/
531int p80211_stt_findproto(UINT16 proto)
532{
533 /* Always return found for now. This is the behavior used by the */
534 /* Zoom Win95 driver when 802.1h mode is selected */
535 /* TODO: If necessary, add an actual search we'll probably
536 need this to match the CMAC's way of doing things.
537 Need to do some testing to confirm.
538 */
539
540 if (proto == 0x80f3) /* APPLETALK */
541 return 1;
542
543 return 0;
544}
545
546/*----------------------------------------------------------------
547* p80211skb_rxmeta_detach
548*
549* Disconnects the frmmeta and rxmeta from an skb.
550*
551* Arguments:
552* wlandev The wlandev this skb belongs to.
553* skb The skb we're attaching to.
554*
555* Returns:
556* 0 on success, non-zero otherwise
557*
558* Call context:
559* May be called in interrupt or non-interrupt context
560----------------------------------------------------------------*/
561void
562p80211skb_rxmeta_detach(struct sk_buff *skb)
563{
564 p80211_rxmeta_t *rxmeta;
565 p80211_frmmeta_t *frmmeta;
566
567 DBFENTER;
568 /* Sanity checks */
569 if ( skb==NULL ) { /* bad skb */
570 WLAN_LOG_DEBUG(1, "Called w/ null skb.\n");
571 goto exit;
572 }
573 frmmeta = P80211SKB_FRMMETA(skb);
574 if ( frmmeta == NULL ) { /* no magic */
575 WLAN_LOG_DEBUG(1, "Called w/ bad frmmeta magic.\n");
576 goto exit;
577 }
578 rxmeta = frmmeta->rx;
579 if ( rxmeta == NULL ) { /* bad meta ptr */
580 WLAN_LOG_DEBUG(1, "Called w/ bad rxmeta ptr.\n");
581 goto exit;
582 }
583
584 /* Free rxmeta */
585 kfree(rxmeta);
586
587 /* Clear skb->cb */
588 memset(skb->cb, 0, sizeof(skb->cb));
589exit:
590 DBFEXIT;
591 return;
592}
593
594/*----------------------------------------------------------------
595* p80211skb_rxmeta_attach
596*
597* Allocates a p80211rxmeta structure, initializes it, and attaches
598* it to an skb.
599*
600* Arguments:
601* wlandev The wlandev this skb belongs to.
602* skb The skb we're attaching to.
603*
604* Returns:
605* 0 on success, non-zero otherwise
606*
607* Call context:
608* May be called in interrupt or non-interrupt context
609----------------------------------------------------------------*/
610int
611p80211skb_rxmeta_attach(struct wlandevice *wlandev, struct sk_buff *skb)
612{
613 int result = 0;
614 p80211_rxmeta_t *rxmeta;
615 p80211_frmmeta_t *frmmeta;
616
617 DBFENTER;
618
619 /* If these already have metadata, we error out! */
620 if (P80211SKB_RXMETA(skb) != NULL) {
621 WLAN_LOG_ERROR("%s: RXmeta already attached!\n",
622 wlandev->name);
623 result = 0;
624 goto exit;
625 }
626
627 /* Allocate the rxmeta */
628 rxmeta = kmalloc(sizeof(p80211_rxmeta_t), GFP_ATOMIC);
629
630 if ( rxmeta == NULL ) {
631 WLAN_LOG_ERROR("%s: Failed to allocate rxmeta.\n",
632 wlandev->name);
633 result = 1;
634 goto exit;
635 }
636
637 /* Initialize the rxmeta */
638 memset(rxmeta, 0, sizeof(p80211_rxmeta_t));
639 rxmeta->wlandev = wlandev;
640 rxmeta->hosttime = jiffies;
641
642 /* Overlay a frmmeta_t onto skb->cb */
643 memset(skb->cb, 0, sizeof(p80211_frmmeta_t));
644 frmmeta = (p80211_frmmeta_t*)(skb->cb);
645 frmmeta->magic = P80211_FRMMETA_MAGIC;
646 frmmeta->rx = rxmeta;
647exit:
648 DBFEXIT;
649 return result;
650}
651
652/*----------------------------------------------------------------
653* p80211skb_free
654*
655* Frees an entire p80211skb by checking and freeing the meta struct
656* and then freeing the skb.
657*
658* Arguments:
659* wlandev The wlandev this skb belongs to.
660* skb The skb we're attaching to.
661*
662* Returns:
663* 0 on success, non-zero otherwise
664*
665* Call context:
666* May be called in interrupt or non-interrupt context
667----------------------------------------------------------------*/
668void
669p80211skb_free(struct wlandevice *wlandev, struct sk_buff *skb)
670{
671 p80211_frmmeta_t *meta;
672 DBFENTER;
673 meta = P80211SKB_FRMMETA(skb);
674 if ( meta && meta->rx) {
675 p80211skb_rxmeta_detach(skb);
676 } else {
677 WLAN_LOG_ERROR("Freeing an skb (%p) w/ no frmmeta.\n", skb);
678 }
679
680 dev_kfree_skb(skb);
681 DBFEXIT;
682 return;
683}
diff --git a/drivers/staging/wlan-ng/p80211conv.h b/drivers/staging/wlan-ng/p80211conv.h
new file mode 100644
index 00000000000..3f5ab57cd9a
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211conv.h
@@ -0,0 +1,186 @@
1/* p80211conv.h
2*
3* Ether/802.11 conversions and packet buffer routines
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares the functions, types and macros that perform
48* Ethernet to/from 802.11 frame conversions.
49*
50* --------------------------------------------------------------------
51*/
52
53#ifndef _LINUX_P80211CONV_H
54#define _LINUX_P80211CONV_H
55
56/*================================================================*/
57/* Constants */
58
59#define WLAN_ETHADDR_LEN 6
60#define WLAN_IEEE_OUI_LEN 3
61
62#define WLAN_ETHCONV_ENCAP 1
63#define WLAN_ETHCONV_RFC1042 2
64#define WLAN_ETHCONV_8021h 3
65
66#define WLAN_MIN_ETHFRM_LEN 60
67#define WLAN_MAX_ETHFRM_LEN 1514
68#define WLAN_ETHHDR_LEN 14
69
70#define P80211CAPTURE_VERSION 0x80211001
71
72/*================================================================*/
73/* Macros */
74
75#define P80211_FRMMETA_MAGIC 0x802110
76
77#define P80211SKB_FRMMETA(s) \
78 (((((p80211_frmmeta_t*)((s)->cb))->magic)==P80211_FRMMETA_MAGIC) ? \
79 ((p80211_frmmeta_t*)((s)->cb)) : \
80 (NULL))
81
82#define P80211SKB_RXMETA(s) \
83 (P80211SKB_FRMMETA((s)) ? P80211SKB_FRMMETA((s))->rx : ((p80211_rxmeta_t*)(NULL)))
84
85typedef struct p80211_rxmeta
86{
87 struct wlandevice *wlandev;
88
89 UINT64 mactime; /* Hi-rez MAC-supplied time value */
90 UINT64 hosttime; /* Best-rez host supplied time value */
91
92 UINT rxrate; /* Receive data rate in 100kbps */
93 UINT priority; /* 0-15, 0=contention, 6=CF */
94 INT signal; /* An SSI, see p80211netdev.h */
95 INT noise; /* An SSI, see p80211netdev.h */
96 UINT channel; /* Receive channel (mostly for snifs) */
97 UINT preamble; /* P80211ENUM_preambletype_* */
98 UINT encoding; /* P80211ENUM_encoding_* */
99
100} p80211_rxmeta_t;
101
102typedef struct p80211_frmmeta
103{
104 UINT magic;
105 p80211_rxmeta_t *rx;
106} p80211_frmmeta_t;
107
108void p80211skb_free(struct wlandevice *wlandev, struct sk_buff *skb);
109int p80211skb_rxmeta_attach(struct wlandevice *wlandev, struct sk_buff *skb);
110void p80211skb_rxmeta_detach(struct sk_buff *skb);
111
112/*================================================================*/
113/* Types */
114
115/*
116 * Frame capture header. (See doc/capturefrm.txt)
117 */
118typedef struct p80211_caphdr
119{
120 UINT32 version;
121 UINT32 length;
122 UINT64 mactime;
123 UINT64 hosttime;
124 UINT32 phytype;
125 UINT32 channel;
126 UINT32 datarate;
127 UINT32 antenna;
128 UINT32 priority;
129 UINT32 ssi_type;
130 INT32 ssi_signal;
131 INT32 ssi_noise;
132 UINT32 preamble;
133 UINT32 encoding;
134} p80211_caphdr_t;
135
136/* buffer free method pointer type */
137typedef void (* freebuf_method_t)(void *buf, int size);
138
139typedef struct p80211_metawep {
140 void *data;
141 UINT8 iv[4];
142 UINT8 icv[4];
143} p80211_metawep_t;
144
145/* local ether header type */
146typedef struct wlan_ethhdr
147{
148 UINT8 daddr[WLAN_ETHADDR_LEN];
149 UINT8 saddr[WLAN_ETHADDR_LEN];
150 UINT16 type;
151} __WLAN_ATTRIB_PACK__ wlan_ethhdr_t;
152
153/* local llc header type */
154typedef struct wlan_llc
155{
156 UINT8 dsap;
157 UINT8 ssap;
158 UINT8 ctl;
159} __WLAN_ATTRIB_PACK__ wlan_llc_t;
160
161/* local snap header type */
162typedef struct wlan_snap
163{
164 UINT8 oui[WLAN_IEEE_OUI_LEN];
165 UINT16 type;
166} __WLAN_ATTRIB_PACK__ wlan_snap_t;
167
168/* Circular include trick */
169struct wlandevice;
170
171/*================================================================*/
172/* Externs */
173
174/*================================================================*/
175/*Function Declarations */
176
177int skb_p80211_to_ether( struct wlandevice *wlandev, UINT32 ethconv,
178 struct sk_buff *skb);
179int skb_ether_to_p80211( struct wlandevice *wlandev, UINT32 ethconv,
180 struct sk_buff *skb, p80211_hdr_t *p80211_hdr,
181 p80211_metawep_t *p80211_wep );
182
183int p80211_stt_findproto(UINT16 proto);
184int p80211_stt_addproto(UINT16 proto);
185
186#endif
diff --git a/drivers/staging/wlan-ng/p80211hdr.h b/drivers/staging/wlan-ng/p80211hdr.h
new file mode 100644
index 00000000000..b7b0872fd86
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211hdr.h
@@ -0,0 +1,299 @@
1/* p80211hdr.h
2*
3* Macros, types, and functions for handling 802.11 MAC headers
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares the constants and types used in the interface
48* between a wlan driver and the user mode utilities.
49*
50* Note:
51* - Constant values are always in HOST byte order. To assign
52* values to multi-byte fields they _must_ be converted to
53* ieee byte order. To retrieve multi-byte values from incoming
54* frames, they must be converted to host order.
55*
56* All functions declared here are implemented in p80211.c
57* --------------------------------------------------------------------
58*/
59
60#ifndef _P80211HDR_H
61#define _P80211HDR_H
62
63/*================================================================*/
64/* System Includes */
65
66/*================================================================*/
67/* Project Includes */
68
69#ifndef _WLAN_COMPAT_H
70#include "wlan_compat.h"
71#endif
72
73
74/*================================================================*/
75/* Constants */
76
77/*--- Sizes -----------------------------------------------*/
78#define WLAN_ADDR_LEN 6
79#define WLAN_CRC_LEN 4
80#define WLAN_BSSID_LEN 6
81#define WLAN_BSS_TS_LEN 8
82#define WLAN_HDR_A3_LEN 24
83#define WLAN_HDR_A4_LEN 30
84#define WLAN_SSID_MAXLEN 32
85#define WLAN_DATA_MAXLEN 2312
86#define WLAN_A3FR_MAXLEN (WLAN_HDR_A3_LEN + WLAN_DATA_MAXLEN + WLAN_CRC_LEN)
87#define WLAN_A4FR_MAXLEN (WLAN_HDR_A4_LEN + WLAN_DATA_MAXLEN + WLAN_CRC_LEN)
88#define WLAN_BEACON_FR_MAXLEN (WLAN_HDR_A3_LEN + 334)
89#define WLAN_ATIM_FR_MAXLEN (WLAN_HDR_A3_LEN + 0)
90#define WLAN_DISASSOC_FR_MAXLEN (WLAN_HDR_A3_LEN + 2)
91#define WLAN_ASSOCREQ_FR_MAXLEN (WLAN_HDR_A3_LEN + 48)
92#define WLAN_ASSOCRESP_FR_MAXLEN (WLAN_HDR_A3_LEN + 16)
93#define WLAN_REASSOCREQ_FR_MAXLEN (WLAN_HDR_A3_LEN + 54)
94#define WLAN_REASSOCRESP_FR_MAXLEN (WLAN_HDR_A3_LEN + 16)
95#define WLAN_PROBEREQ_FR_MAXLEN (WLAN_HDR_A3_LEN + 44)
96#define WLAN_PROBERESP_FR_MAXLEN (WLAN_HDR_A3_LEN + 78)
97#define WLAN_AUTHEN_FR_MAXLEN (WLAN_HDR_A3_LEN + 261)
98#define WLAN_DEAUTHEN_FR_MAXLEN (WLAN_HDR_A3_LEN + 2)
99#define WLAN_WEP_NKEYS 4
100#define WLAN_WEP_MAXKEYLEN 13
101#define WLAN_CHALLENGE_IE_LEN 130
102#define WLAN_CHALLENGE_LEN 128
103#define WLAN_WEP_IV_LEN 4
104#define WLAN_WEP_ICV_LEN 4
105
106/*--- Frame Control Field -------------------------------------*/
107/* Frame Types */
108#define WLAN_FTYPE_MGMT 0x00
109#define WLAN_FTYPE_CTL 0x01
110#define WLAN_FTYPE_DATA 0x02
111
112/* Frame subtypes */
113/* Management */
114#define WLAN_FSTYPE_ASSOCREQ 0x00
115#define WLAN_FSTYPE_ASSOCRESP 0x01
116#define WLAN_FSTYPE_REASSOCREQ 0x02
117#define WLAN_FSTYPE_REASSOCRESP 0x03
118#define WLAN_FSTYPE_PROBEREQ 0x04
119#define WLAN_FSTYPE_PROBERESP 0x05
120#define WLAN_FSTYPE_BEACON 0x08
121#define WLAN_FSTYPE_ATIM 0x09
122#define WLAN_FSTYPE_DISASSOC 0x0a
123#define WLAN_FSTYPE_AUTHEN 0x0b
124#define WLAN_FSTYPE_DEAUTHEN 0x0c
125
126/* Control */
127#define WLAN_FSTYPE_BLOCKACKREQ 0x8
128#define WLAN_FSTYPE_BLOCKACK 0x9
129#define WLAN_FSTYPE_PSPOLL 0x0a
130#define WLAN_FSTYPE_RTS 0x0b
131#define WLAN_FSTYPE_CTS 0x0c
132#define WLAN_FSTYPE_ACK 0x0d
133#define WLAN_FSTYPE_CFEND 0x0e
134#define WLAN_FSTYPE_CFENDCFACK 0x0f
135
136/* Data */
137#define WLAN_FSTYPE_DATAONLY 0x00
138#define WLAN_FSTYPE_DATA_CFACK 0x01
139#define WLAN_FSTYPE_DATA_CFPOLL 0x02
140#define WLAN_FSTYPE_DATA_CFACK_CFPOLL 0x03
141#define WLAN_FSTYPE_NULL 0x04
142#define WLAN_FSTYPE_CFACK 0x05
143#define WLAN_FSTYPE_CFPOLL 0x06
144#define WLAN_FSTYPE_CFACK_CFPOLL 0x07
145
146
147/*================================================================*/
148/* Macros */
149
150/*--- FC Macros ----------------------------------------------*/
151/* Macros to get/set the bitfields of the Frame Control Field */
152/* GET_FC_??? - takes the host byte-order value of an FC */
153/* and retrieves the value of one of the */
154/* bitfields and moves that value so its lsb is */
155/* in bit 0. */
156/* SET_FC_??? - takes a host order value for one of the FC */
157/* bitfields and moves it to the proper bit */
158/* location for ORing into a host order FC. */
159/* To send the FC produced from SET_FC_???, */
160/* one must put the bytes in IEEE order. */
161/* e.g. */
162/* printf("the frame subtype is %x", */
163/* GET_FC_FTYPE( ieee2host( rx.fc ))) */
164/* */
165/* tx.fc = host2ieee( SET_FC_FTYPE(WLAN_FTYP_CTL) | */
166/* SET_FC_FSTYPE(WLAN_FSTYPE_RTS) ); */
167/*------------------------------------------------------------*/
168
169#define WLAN_GET_FC_PVER(n) (((UINT16)(n)) & (BIT0 | BIT1))
170#define WLAN_GET_FC_FTYPE(n) ((((UINT16)(n)) & (BIT2 | BIT3)) >> 2)
171#define WLAN_GET_FC_FSTYPE(n) ((((UINT16)(n)) & (BIT4|BIT5|BIT6|BIT7)) >> 4)
172#define WLAN_GET_FC_TODS(n) ((((UINT16)(n)) & (BIT8)) >> 8)
173#define WLAN_GET_FC_FROMDS(n) ((((UINT16)(n)) & (BIT9)) >> 9)
174#define WLAN_GET_FC_MOREFRAG(n) ((((UINT16)(n)) & (BIT10)) >> 10)
175#define WLAN_GET_FC_RETRY(n) ((((UINT16)(n)) & (BIT11)) >> 11)
176#define WLAN_GET_FC_PWRMGT(n) ((((UINT16)(n)) & (BIT12)) >> 12)
177#define WLAN_GET_FC_MOREDATA(n) ((((UINT16)(n)) & (BIT13)) >> 13)
178#define WLAN_GET_FC_ISWEP(n) ((((UINT16)(n)) & (BIT14)) >> 14)
179#define WLAN_GET_FC_ORDER(n) ((((UINT16)(n)) & (BIT15)) >> 15)
180
181#define WLAN_SET_FC_PVER(n) ((UINT16)(n))
182#define WLAN_SET_FC_FTYPE(n) (((UINT16)(n)) << 2)
183#define WLAN_SET_FC_FSTYPE(n) (((UINT16)(n)) << 4)
184#define WLAN_SET_FC_TODS(n) (((UINT16)(n)) << 8)
185#define WLAN_SET_FC_FROMDS(n) (((UINT16)(n)) << 9)
186#define WLAN_SET_FC_MOREFRAG(n) (((UINT16)(n)) << 10)
187#define WLAN_SET_FC_RETRY(n) (((UINT16)(n)) << 11)
188#define WLAN_SET_FC_PWRMGT(n) (((UINT16)(n)) << 12)
189#define WLAN_SET_FC_MOREDATA(n) (((UINT16)(n)) << 13)
190#define WLAN_SET_FC_ISWEP(n) (((UINT16)(n)) << 14)
191#define WLAN_SET_FC_ORDER(n) (((UINT16)(n)) << 15)
192
193/*--- Duration Macros ----------------------------------------*/
194/* Macros to get/set the bitfields of the Duration Field */
195/* - the duration value is only valid when bit15 is zero */
196/* - the firmware handles these values, so I'm not going */
197/* these macros right now. */
198/*------------------------------------------------------------*/
199
200/*--- Sequence Control Macros -------------------------------*/
201/* Macros to get/set the bitfields of the Sequence Control */
202/* Field. */
203/*------------------------------------------------------------*/
204#define WLAN_GET_SEQ_FRGNUM(n) (((UINT16)(n)) & (BIT0|BIT1|BIT2|BIT3))
205#define WLAN_GET_SEQ_SEQNUM(n) ((((UINT16)(n)) & (~(BIT0|BIT1|BIT2|BIT3))) >> 4)
206
207/*--- Data ptr macro -----------------------------------------*/
208/* Creates a UINT8* to the data portion of a frame */
209/* Assumes you're passing in a ptr to the beginning of the hdr*/
210/*------------------------------------------------------------*/
211#define WLAN_HDR_A3_DATAP(p) (((UINT8*)(p)) + WLAN_HDR_A3_LEN)
212#define WLAN_HDR_A4_DATAP(p) (((UINT8*)(p)) + WLAN_HDR_A4_LEN)
213
214#define DOT11_RATE5_ISBASIC_GET(r) (((UINT8)(r)) & BIT7)
215
216/*================================================================*/
217/* Types */
218
219/* BSS Timestamp */
220typedef UINT8 wlan_bss_ts_t[WLAN_BSS_TS_LEN];
221
222/* Generic 802.11 Header types */
223
224typedef struct p80211_hdr_a3
225{
226 UINT16 fc;
227 UINT16 dur;
228 UINT8 a1[WLAN_ADDR_LEN];
229 UINT8 a2[WLAN_ADDR_LEN];
230 UINT8 a3[WLAN_ADDR_LEN];
231 UINT16 seq;
232} __WLAN_ATTRIB_PACK__ p80211_hdr_a3_t;
233
234typedef struct p80211_hdr_a4
235{
236 UINT16 fc;
237 UINT16 dur;
238 UINT8 a1[WLAN_ADDR_LEN];
239 UINT8 a2[WLAN_ADDR_LEN];
240 UINT8 a3[WLAN_ADDR_LEN];
241 UINT16 seq;
242 UINT8 a4[WLAN_ADDR_LEN];
243} __WLAN_ATTRIB_PACK__ p80211_hdr_a4_t;
244
245typedef union p80211_hdr
246{
247 p80211_hdr_a3_t a3;
248 p80211_hdr_a4_t a4;
249} __WLAN_ATTRIB_PACK__ p80211_hdr_t;
250
251
252/*================================================================*/
253/* Extern Declarations */
254
255
256/*================================================================*/
257/* Function Declarations */
258
259/* Frame and header lenght macros */
260
261#define WLAN_CTL_FRAMELEN(fstype) (\
262 (fstype) == WLAN_FSTYPE_BLOCKACKREQ ? 24 : \
263 (fstype) == WLAN_FSTYPE_BLOCKACK ? 152 : \
264 (fstype) == WLAN_FSTYPE_PSPOLL ? 20 : \
265 (fstype) == WLAN_FSTYPE_RTS ? 20 : \
266 (fstype) == WLAN_FSTYPE_CTS ? 14 : \
267 (fstype) == WLAN_FSTYPE_ACK ? 14 : \
268 (fstype) == WLAN_FSTYPE_CFEND ? 20 : \
269 (fstype) == WLAN_FSTYPE_CFENDCFACK ? 20 : 4)
270
271#define WLAN_FCS_LEN 4
272
273/* ftcl in HOST order */
274inline static UINT16 p80211_headerlen(UINT16 fctl)
275{
276 UINT16 hdrlen = 0;
277
278 switch ( WLAN_GET_FC_FTYPE(fctl) ) {
279 case WLAN_FTYPE_MGMT:
280 hdrlen = WLAN_HDR_A3_LEN;
281 break;
282 case WLAN_FTYPE_DATA:
283 hdrlen = WLAN_HDR_A3_LEN;
284 if ( WLAN_GET_FC_TODS(fctl) && WLAN_GET_FC_FROMDS(fctl) ) {
285 hdrlen += WLAN_ADDR_LEN;
286 }
287 break;
288 case WLAN_FTYPE_CTL:
289 hdrlen = WLAN_CTL_FRAMELEN(WLAN_GET_FC_FSTYPE(fctl)) -
290 WLAN_FCS_LEN;
291 break;
292 default:
293 hdrlen = WLAN_HDR_A3_LEN;
294 }
295
296 return hdrlen;
297}
298
299#endif /* _P80211HDR_H */
diff --git a/drivers/staging/wlan-ng/p80211ioctl.h b/drivers/staging/wlan-ng/p80211ioctl.h
new file mode 100644
index 00000000000..25b2ea83622
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211ioctl.h
@@ -0,0 +1,123 @@
1/* p80211ioctl.h
2*
3* Declares constants and types for the p80211 ioctls
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* While this file is called 'ioctl' is purpose goes a little beyond
48* that. This file defines the types and contants used to implement
49* the p80211 request/confirm/indicate interfaces on Linux. The
50* request/confirm interface is, in fact, normally implemented as an
51* ioctl. The indicate interface on the other hand, is implemented
52* using the Linux 'netlink' interface.
53*
54* The reason I say that request/confirm is 'normally' implemented
55* via ioctl is that we're reserving the right to be able to send
56* request commands via the netlink interface. This will be necessary
57* if we ever need to send request messages when there aren't any
58* wlan network devices present (i.e. sending a message that only p80211
59* cares about.
60* --------------------------------------------------------------------
61*/
62
63
64#ifndef _P80211IOCTL_H
65#define _P80211IOCTL_H
66
67/*================================================================*/
68/* Constants */
69
70/*----------------------------------------------------------------*/
71/* p80211 ioctl "request" codes. See argument 2 of ioctl(2). */
72
73#define P80211_IFTEST (SIOCDEVPRIVATE + 0)
74#define P80211_IFREQ (SIOCDEVPRIVATE + 1)
75
76/*----------------------------------------------------------------*/
77/* Magic number, a quick test to see we're getting the desired struct */
78
79#define P80211_IOCTL_MAGIC (0x4a2d464dUL)
80
81/*----------------------------------------------------------------*/
82/* Netlink protocol numbers for the indication interface */
83
84#define P80211_NL_SOCK_IND NETLINK_USERSOCK
85
86/*----------------------------------------------------------------*/
87/* Netlink multicast bits for different types of messages */
88
89#define P80211_NL_MCAST_GRP_MLME BIT0 /* Local station messages */
90#define P80211_NL_MCAST_GRP_SNIFF BIT1 /* Sniffer messages */
91#define P80211_NL_MCAST_GRP_DIST BIT2 /* Distribution system messages */
92
93/*================================================================*/
94/* Macros */
95
96
97/*================================================================*/
98/* Types */
99
100/*----------------------------------------------------------------*/
101/* A ptr to the following structure type is passed as the third */
102/* argument to the ioctl system call when issuing a request to */
103/* the p80211 module. */
104
105typedef struct p80211ioctl_req
106{
107 char name[WLAN_DEVNAMELEN_MAX];
108 caddr_t data;
109 UINT32 magic;
110 UINT16 len;
111 UINT32 result;
112} __WLAN_ATTRIB_PACK__ p80211ioctl_req_t;
113
114
115/*================================================================*/
116/* Extern Declarations */
117
118
119/*================================================================*/
120/* Function Declarations */
121
122
123#endif /* _P80211IOCTL_H */
diff --git a/drivers/staging/wlan-ng/p80211meta.h b/drivers/staging/wlan-ng/p80211meta.h
new file mode 100644
index 00000000000..5cb3f5ada4f
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211meta.h
@@ -0,0 +1,169 @@
1/* p80211meta.h
2*
3* Macros, constants, types, and funcs for p80211 metadata
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares some of the constants and types used in various
48* parts of the linux-wlan system.
49*
50* Notes:
51* - Constant values are always in HOST byte order.
52*
53* All functions and statics declared here are implemented in p80211types.c
54* --------------------------------------------------------------------
55*/
56
57#ifndef _P80211META_H
58#define _P80211META_H
59
60/*================================================================*/
61/* System Includes */
62
63/*================================================================*/
64/* Project Includes */
65
66#ifndef _WLAN_COMPAT_H
67#include "wlan_compat.h"
68#endif
69
70/*================================================================*/
71/* Constants */
72
73/*----------------------------------------------------------------*/
74/* */
75
76/*================================================================*/
77/* Macros */
78
79/*----------------------------------------------------------------*/
80/* The following macros are used to ensure consistent naming */
81/* conventions for all the different metadata lists. */
82
83#define MKREQMETANAME(name) p80211meta_ ## req ## _ ## name
84#define MKINDMETANAME(name) p80211meta_ ## ind ## _ ## name
85#define MKMIBMETANAME(name) p80211meta_ ## mib ## _ ## name
86#define MKGRPMETANAME(name) p80211meta_ ## grp ## _ ## name
87
88#define MKREQMETASIZE(name) p80211meta_ ## req ## _ ## name ## _ ## size
89#define MKINDMETASIZE(name) p80211meta_ ## ind ## _ ## name ## _ ## size
90#define MKMIBMETASIZE(name) p80211meta_ ## mib ## _ ## name ## _ ## size
91#define MKGRPMETASIZE(name) p80211meta_ ## grp ## _ ## name ## _ ## size
92
93#define GETMETASIZE(aptr) (**((UINT32**)(aptr)))
94
95/*----------------------------------------------------------------*/
96/* The following ifdef depends on the following defines: */
97/* P80211_NOINCLUDESTRINGS - if defined, all metadata name fields */
98/* are empty strings */
99
100#ifdef P80211_NOINCLUDESTRINGS
101 #define MKITEMNAME(s) ("")
102#else
103 #define MKITEMNAME(s) (s)
104#endif
105
106/*================================================================*/
107/* Types */
108
109/*----------------------------------------------------------------*/
110/* The following structure types are used for the metadata */
111/* representation of category list metadata, group list metadata, */
112/* and data item metadata for both Mib and Messages. */
113
114typedef struct p80211meta
115{
116 char *name; /* data item name */
117 UINT32 did; /* partial did */
118 UINT32 flags; /* set of various flag bits */
119 UINT32 min; /* min value of a BOUNDEDINT */
120 UINT32 max; /* max value of a BOUNDEDINT */
121
122 UINT32 maxlen; /* maxlen of a OCTETSTR or DISPLAYSTR */
123 UINT32 minlen; /* minlen of a OCTETSTR or DISPLAYSTR */
124 p80211enum_t *enumptr; /* ptr to the enum type for ENUMINT */
125 p80211_totext_t totextptr; /* ptr to totext conversion function */
126 p80211_fromtext_t fromtextptr; /* ptr to totext conversion function */
127 p80211_valid_t validfunptr; /* ptr to totext conversion function */
128} p80211meta_t;
129
130typedef struct grplistitem
131{
132 char *name;
133 p80211meta_t *itemlist;
134} grplistitem_t;
135
136typedef struct catlistitem
137{
138 char *name;
139 grplistitem_t *grplist;
140} catlistitem_t;
141
142/*================================================================*/
143/* Extern Declarations */
144
145/*----------------------------------------------------------------*/
146/* */
147
148/*================================================================*/
149/* Function Declarations */
150
151/*----------------------------------------------------------------*/
152/* */
153UINT32 p80211_text2did(catlistitem_t *catlist, char *catname, char *grpname, char *itemname);
154UINT32 p80211_text2catdid(catlistitem_t *list, char *name );
155UINT32 p80211_text2grpdid(grplistitem_t *list, char *name );
156UINT32 p80211_text2itemdid(p80211meta_t *list, char *name );
157UINT32 p80211_isvalid_did( catlistitem_t *catlist, UINT32 did );
158UINT32 p80211_isvalid_catdid( catlistitem_t *catlist, UINT32 did );
159UINT32 p80211_isvalid_grpdid( catlistitem_t *catlist, UINT32 did );
160UINT32 p80211_isvalid_itemdid( catlistitem_t *catlist, UINT32 did );
161catlistitem_t *p80211_did2cat( catlistitem_t *catlist, UINT32 did );
162grplistitem_t *p80211_did2grp( catlistitem_t *catlist, UINT32 did );
163p80211meta_t *p80211_did2item( catlistitem_t *catlist, UINT32 did );
164UINT32 p80211item_maxdatalen( struct catlistitem *metalist, UINT32 did );
165UINT32 p80211_metaname2did(struct catlistitem *metalist, char *itemname);
166UINT32 p80211item_getoffset( struct catlistitem *metalist, UINT32 did );
167int p80211item_gettype(p80211meta_t *meta);
168
169#endif /* _P80211META_H */
diff --git a/drivers/staging/wlan-ng/p80211metadef.h b/drivers/staging/wlan-ng/p80211metadef.h
new file mode 100644
index 00000000000..2c7f435a97e
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211metadef.h
@@ -0,0 +1,2524 @@
1/* This file is GENERATED AUTOMATICALLY. DO NOT EDIT OR MODIFY.
2* --------------------------------------------------------------------
3*
4* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
5* --------------------------------------------------------------------
6*
7* linux-wlan
8*
9* The contents of this file are subject to the Mozilla Public
10* License Version 1.1 (the "License"); you may not use this file
11* except in compliance with the License. You may obtain a copy of
12* the License at http://www.mozilla.org/MPL/
13*
14* Software distributed under the License is distributed on an "AS
15* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
16* implied. See the License for the specific language governing
17* rights and limitations under the License.
18*
19* Alternatively, the contents of this file may be used under the
20* terms of the GNU Public License version 2 (the "GPL"), in which
21* case the provisions of the GPL are applicable instead of the
22* above. If you wish to allow the use of your version of this file
23* only under the terms of the GPL and not to allow others to use
24* your version of this file under the MPL, indicate your decision
25* by deleting the provisions above and replace them with the notice
26* and other provisions required by the GPL. If you do not delete
27* the provisions above, a recipient may use your version of this
28* file under either the MPL or the GPL.
29*
30* --------------------------------------------------------------------
31*
32* Inquiries regarding the linux-wlan Open Source project can be
33* made directly to:
34*
35* AbsoluteValue Systems Inc.
36* info@linux-wlan.com
37* http://www.linux-wlan.com
38*
39* --------------------------------------------------------------------
40*
41* Portions of the development of this software were funded by
42* Intersil Corporation as part of PRISM(R) chipset product development.
43*
44* --------------------------------------------------------------------
45*/
46
47#ifndef _P80211MKMETADEF_H
48#define _P80211MKMETADEF_H
49
50
51#define DIDmsg_cat_dot11req \
52 P80211DID_MKSECTION(1)
53#define DIDmsg_dot11req_mibget \
54 (P80211DID_MKSECTION(1) | \
55 P80211DID_MKGROUP(1))
56#define DIDmsg_dot11req_mibget_mibattribute \
57 (P80211DID_MKSECTION(1) | \
58 P80211DID_MKGROUP(1) | \
59 P80211DID_MKITEM(1) | 0x00000000)
60#define DIDmsg_dot11req_mibget_resultcode \
61 (P80211DID_MKSECTION(1) | \
62 P80211DID_MKGROUP(1) | \
63 P80211DID_MKITEM(2) | 0x00000000)
64#define DIDmsg_dot11req_mibset \
65 (P80211DID_MKSECTION(1) | \
66 P80211DID_MKGROUP(2))
67#define DIDmsg_dot11req_mibset_mibattribute \
68 (P80211DID_MKSECTION(1) | \
69 P80211DID_MKGROUP(2) | \
70 P80211DID_MKITEM(1) | 0x00000000)
71#define DIDmsg_dot11req_mibset_resultcode \
72 (P80211DID_MKSECTION(1) | \
73 P80211DID_MKGROUP(2) | \
74 P80211DID_MKITEM(2) | 0x00000000)
75#define DIDmsg_dot11req_powermgmt \
76 (P80211DID_MKSECTION(1) | \
77 P80211DID_MKGROUP(3))
78#define DIDmsg_dot11req_powermgmt_powermgmtmode \
79 (P80211DID_MKSECTION(1) | \
80 P80211DID_MKGROUP(3) | \
81 P80211DID_MKITEM(1) | 0x00000000)
82#define DIDmsg_dot11req_powermgmt_wakeup \
83 (P80211DID_MKSECTION(1) | \
84 P80211DID_MKGROUP(3) | \
85 P80211DID_MKITEM(2) | 0x00000000)
86#define DIDmsg_dot11req_powermgmt_receivedtims \
87 (P80211DID_MKSECTION(1) | \
88 P80211DID_MKGROUP(3) | \
89 P80211DID_MKITEM(3) | 0x00000000)
90#define DIDmsg_dot11req_powermgmt_resultcode \
91 (P80211DID_MKSECTION(1) | \
92 P80211DID_MKGROUP(3) | \
93 P80211DID_MKITEM(4) | 0x00000000)
94#define DIDmsg_dot11req_scan \
95 (P80211DID_MKSECTION(1) | \
96 P80211DID_MKGROUP(4))
97#define DIDmsg_dot11req_scan_bsstype \
98 (P80211DID_MKSECTION(1) | \
99 P80211DID_MKGROUP(4) | \
100 P80211DID_MKITEM(1) | 0x00000000)
101#define DIDmsg_dot11req_scan_bssid \
102 (P80211DID_MKSECTION(1) | \
103 P80211DID_MKGROUP(4) | \
104 P80211DID_MKITEM(2) | 0x00000000)
105#define DIDmsg_dot11req_scan_ssid \
106 (P80211DID_MKSECTION(1) | \
107 P80211DID_MKGROUP(4) | \
108 P80211DID_MKITEM(3) | 0x00000000)
109#define DIDmsg_dot11req_scan_scantype \
110 (P80211DID_MKSECTION(1) | \
111 P80211DID_MKGROUP(4) | \
112 P80211DID_MKITEM(4) | 0x00000000)
113#define DIDmsg_dot11req_scan_probedelay \
114 (P80211DID_MKSECTION(1) | \
115 P80211DID_MKGROUP(4) | \
116 P80211DID_MKITEM(5) | 0x00000000)
117#define DIDmsg_dot11req_scan_channellist \
118 (P80211DID_MKSECTION(1) | \
119 P80211DID_MKGROUP(4) | \
120 P80211DID_MKITEM(6) | 0x00000000)
121#define DIDmsg_dot11req_scan_minchanneltime \
122 (P80211DID_MKSECTION(1) | \
123 P80211DID_MKGROUP(4) | \
124 P80211DID_MKITEM(7) | 0x00000000)
125#define DIDmsg_dot11req_scan_maxchanneltime \
126 (P80211DID_MKSECTION(1) | \
127 P80211DID_MKGROUP(4) | \
128 P80211DID_MKITEM(8) | 0x00000000)
129#define DIDmsg_dot11req_scan_resultcode \
130 (P80211DID_MKSECTION(1) | \
131 P80211DID_MKGROUP(4) | \
132 P80211DID_MKITEM(9) | 0x00000000)
133#define DIDmsg_dot11req_scan_numbss \
134 (P80211DID_MKSECTION(1) | \
135 P80211DID_MKGROUP(4) | \
136 P80211DID_MKITEM(10) | 0x00000000)
137#define DIDmsg_dot11req_scan_append \
138 (P80211DID_MKSECTION(1) | \
139 P80211DID_MKGROUP(4) | \
140 P80211DID_MKITEM(11) | 0x00000000)
141#define DIDmsg_dot11req_scan_results \
142 (P80211DID_MKSECTION(1) | \
143 P80211DID_MKGROUP(5))
144#define DIDmsg_dot11req_scan_results_bssindex \
145 (P80211DID_MKSECTION(1) | \
146 P80211DID_MKGROUP(5) | \
147 P80211DID_MKITEM(1) | 0x00000000)
148#define DIDmsg_dot11req_scan_results_resultcode \
149 (P80211DID_MKSECTION(1) | \
150 P80211DID_MKGROUP(5) | \
151 P80211DID_MKITEM(2) | 0x00000000)
152#define DIDmsg_dot11req_scan_results_signal \
153 (P80211DID_MKSECTION(1) | \
154 P80211DID_MKGROUP(5) | \
155 P80211DID_MKITEM(3) | 0x00000000)
156#define DIDmsg_dot11req_scan_results_noise \
157 (P80211DID_MKSECTION(1) | \
158 P80211DID_MKGROUP(5) | \
159 P80211DID_MKITEM(4) | 0x00000000)
160#define DIDmsg_dot11req_scan_results_bssid \
161 (P80211DID_MKSECTION(1) | \
162 P80211DID_MKGROUP(5) | \
163 P80211DID_MKITEM(5) | 0x00000000)
164#define DIDmsg_dot11req_scan_results_ssid \
165 (P80211DID_MKSECTION(1) | \
166 P80211DID_MKGROUP(5) | \
167 P80211DID_MKITEM(6) | 0x00000000)
168#define DIDmsg_dot11req_scan_results_bsstype \
169 (P80211DID_MKSECTION(1) | \
170 P80211DID_MKGROUP(5) | \
171 P80211DID_MKITEM(7) | 0x00000000)
172#define DIDmsg_dot11req_scan_results_beaconperiod \
173 (P80211DID_MKSECTION(1) | \
174 P80211DID_MKGROUP(5) | \
175 P80211DID_MKITEM(8) | 0x00000000)
176#define DIDmsg_dot11req_scan_results_dtimperiod \
177 (P80211DID_MKSECTION(1) | \
178 P80211DID_MKGROUP(5) | \
179 P80211DID_MKITEM(9) | 0x00000000)
180#define DIDmsg_dot11req_scan_results_timestamp \
181 (P80211DID_MKSECTION(1) | \
182 P80211DID_MKGROUP(5) | \
183 P80211DID_MKITEM(10) | 0x00000000)
184#define DIDmsg_dot11req_scan_results_localtime \
185 (P80211DID_MKSECTION(1) | \
186 P80211DID_MKGROUP(5) | \
187 P80211DID_MKITEM(11) | 0x00000000)
188#define DIDmsg_dot11req_scan_results_fhdwelltime \
189 (P80211DID_MKSECTION(1) | \
190 P80211DID_MKGROUP(5) | \
191 P80211DID_MKITEM(12) | 0x00000000)
192#define DIDmsg_dot11req_scan_results_fhhopset \
193 (P80211DID_MKSECTION(1) | \
194 P80211DID_MKGROUP(5) | \
195 P80211DID_MKITEM(13) | 0x00000000)
196#define DIDmsg_dot11req_scan_results_fhhoppattern \
197 (P80211DID_MKSECTION(1) | \
198 P80211DID_MKGROUP(5) | \
199 P80211DID_MKITEM(14) | 0x00000000)
200#define DIDmsg_dot11req_scan_results_fhhopindex \
201 (P80211DID_MKSECTION(1) | \
202 P80211DID_MKGROUP(5) | \
203 P80211DID_MKITEM(15) | 0x00000000)
204#define DIDmsg_dot11req_scan_results_dschannel \
205 (P80211DID_MKSECTION(1) | \
206 P80211DID_MKGROUP(5) | \
207 P80211DID_MKITEM(16) | 0x00000000)
208#define DIDmsg_dot11req_scan_results_cfpcount \
209 (P80211DID_MKSECTION(1) | \
210 P80211DID_MKGROUP(5) | \
211 P80211DID_MKITEM(17) | 0x00000000)
212#define DIDmsg_dot11req_scan_results_cfpperiod \
213 (P80211DID_MKSECTION(1) | \
214 P80211DID_MKGROUP(5) | \
215 P80211DID_MKITEM(18) | 0x00000000)
216#define DIDmsg_dot11req_scan_results_cfpmaxduration \
217 (P80211DID_MKSECTION(1) | \
218 P80211DID_MKGROUP(5) | \
219 P80211DID_MKITEM(19) | 0x00000000)
220#define DIDmsg_dot11req_scan_results_cfpdurremaining \
221 (P80211DID_MKSECTION(1) | \
222 P80211DID_MKGROUP(5) | \
223 P80211DID_MKITEM(20) | 0x00000000)
224#define DIDmsg_dot11req_scan_results_ibssatimwindow \
225 (P80211DID_MKSECTION(1) | \
226 P80211DID_MKGROUP(5) | \
227 P80211DID_MKITEM(21) | 0x00000000)
228#define DIDmsg_dot11req_scan_results_cfpollable \
229 (P80211DID_MKSECTION(1) | \
230 P80211DID_MKGROUP(5) | \
231 P80211DID_MKITEM(22) | 0x00000000)
232#define DIDmsg_dot11req_scan_results_cfpollreq \
233 (P80211DID_MKSECTION(1) | \
234 P80211DID_MKGROUP(5) | \
235 P80211DID_MKITEM(23) | 0x00000000)
236#define DIDmsg_dot11req_scan_results_privacy \
237 (P80211DID_MKSECTION(1) | \
238 P80211DID_MKGROUP(5) | \
239 P80211DID_MKITEM(24) | 0x00000000)
240#define DIDmsg_dot11req_scan_results_basicrate1 \
241 (P80211DID_MKSECTION(1) | \
242 P80211DID_MKGROUP(5) | \
243 P80211DID_MKITEM(25) | 0x00000000)
244#define DIDmsg_dot11req_scan_results_basicrate2 \
245 (P80211DID_MKSECTION(1) | \
246 P80211DID_MKGROUP(5) | \
247 P80211DID_MKITEM(26) | 0x00000000)
248#define DIDmsg_dot11req_scan_results_basicrate3 \
249 (P80211DID_MKSECTION(1) | \
250 P80211DID_MKGROUP(5) | \
251 P80211DID_MKITEM(27) | 0x00000000)
252#define DIDmsg_dot11req_scan_results_basicrate4 \
253 (P80211DID_MKSECTION(1) | \
254 P80211DID_MKGROUP(5) | \
255 P80211DID_MKITEM(28) | 0x00000000)
256#define DIDmsg_dot11req_scan_results_basicrate5 \
257 (P80211DID_MKSECTION(1) | \
258 P80211DID_MKGROUP(5) | \
259 P80211DID_MKITEM(29) | 0x00000000)
260#define DIDmsg_dot11req_scan_results_basicrate6 \
261 (P80211DID_MKSECTION(1) | \
262 P80211DID_MKGROUP(5) | \
263 P80211DID_MKITEM(30) | 0x00000000)
264#define DIDmsg_dot11req_scan_results_basicrate7 \
265 (P80211DID_MKSECTION(1) | \
266 P80211DID_MKGROUP(5) | \
267 P80211DID_MKITEM(31) | 0x00000000)
268#define DIDmsg_dot11req_scan_results_basicrate8 \
269 (P80211DID_MKSECTION(1) | \
270 P80211DID_MKGROUP(5) | \
271 P80211DID_MKITEM(32) | 0x00000000)
272#define DIDmsg_dot11req_scan_results_supprate1 \
273 (P80211DID_MKSECTION(1) | \
274 P80211DID_MKGROUP(5) | \
275 P80211DID_MKITEM(33) | 0x00000000)
276#define DIDmsg_dot11req_scan_results_supprate2 \
277 (P80211DID_MKSECTION(1) | \
278 P80211DID_MKGROUP(5) | \
279 P80211DID_MKITEM(34) | 0x00000000)
280#define DIDmsg_dot11req_scan_results_supprate3 \
281 (P80211DID_MKSECTION(1) | \
282 P80211DID_MKGROUP(5) | \
283 P80211DID_MKITEM(35) | 0x00000000)
284#define DIDmsg_dot11req_scan_results_supprate4 \
285 (P80211DID_MKSECTION(1) | \
286 P80211DID_MKGROUP(5) | \
287 P80211DID_MKITEM(36) | 0x00000000)
288#define DIDmsg_dot11req_scan_results_supprate5 \
289 (P80211DID_MKSECTION(1) | \
290 P80211DID_MKGROUP(5) | \
291 P80211DID_MKITEM(37) | 0x00000000)
292#define DIDmsg_dot11req_scan_results_supprate6 \
293 (P80211DID_MKSECTION(1) | \
294 P80211DID_MKGROUP(5) | \
295 P80211DID_MKITEM(38) | 0x00000000)
296#define DIDmsg_dot11req_scan_results_supprate7 \
297 (P80211DID_MKSECTION(1) | \
298 P80211DID_MKGROUP(5) | \
299 P80211DID_MKITEM(39) | 0x00000000)
300#define DIDmsg_dot11req_scan_results_supprate8 \
301 (P80211DID_MKSECTION(1) | \
302 P80211DID_MKGROUP(5) | \
303 P80211DID_MKITEM(40) | 0x00000000)
304#define DIDmsg_dot11req_join \
305 (P80211DID_MKSECTION(1) | \
306 P80211DID_MKGROUP(6))
307#define DIDmsg_dot11req_join_bssid \
308 (P80211DID_MKSECTION(1) | \
309 P80211DID_MKGROUP(6) | \
310 P80211DID_MKITEM(1) | 0x00000000)
311#define DIDmsg_dot11req_join_joinfailuretimeout \
312 (P80211DID_MKSECTION(1) | \
313 P80211DID_MKGROUP(6) | \
314 P80211DID_MKITEM(2) | 0x00000000)
315#define DIDmsg_dot11req_join_basicrate1 \
316 (P80211DID_MKSECTION(1) | \
317 P80211DID_MKGROUP(6) | \
318 P80211DID_MKITEM(3) | 0x00000000)
319#define DIDmsg_dot11req_join_basicrate2 \
320 (P80211DID_MKSECTION(1) | \
321 P80211DID_MKGROUP(6) | \
322 P80211DID_MKITEM(4) | 0x00000000)
323#define DIDmsg_dot11req_join_basicrate3 \
324 (P80211DID_MKSECTION(1) | \
325 P80211DID_MKGROUP(6) | \
326 P80211DID_MKITEM(5) | 0x00000000)
327#define DIDmsg_dot11req_join_basicrate4 \
328 (P80211DID_MKSECTION(1) | \
329 P80211DID_MKGROUP(6) | \
330 P80211DID_MKITEM(6) | 0x00000000)
331#define DIDmsg_dot11req_join_basicrate5 \
332 (P80211DID_MKSECTION(1) | \
333 P80211DID_MKGROUP(6) | \
334 P80211DID_MKITEM(7) | 0x00000000)
335#define DIDmsg_dot11req_join_basicrate6 \
336 (P80211DID_MKSECTION(1) | \
337 P80211DID_MKGROUP(6) | \
338 P80211DID_MKITEM(8) | 0x00000000)
339#define DIDmsg_dot11req_join_basicrate7 \
340 (P80211DID_MKSECTION(1) | \
341 P80211DID_MKGROUP(6) | \
342 P80211DID_MKITEM(9) | 0x00000000)
343#define DIDmsg_dot11req_join_basicrate8 \
344 (P80211DID_MKSECTION(1) | \
345 P80211DID_MKGROUP(6) | \
346 P80211DID_MKITEM(10) | 0x00000000)
347#define DIDmsg_dot11req_join_operationalrate1 \
348 (P80211DID_MKSECTION(1) | \
349 P80211DID_MKGROUP(6) | \
350 P80211DID_MKITEM(11) | 0x00000000)
351#define DIDmsg_dot11req_join_operationalrate2 \
352 (P80211DID_MKSECTION(1) | \
353 P80211DID_MKGROUP(6) | \
354 P80211DID_MKITEM(12) | 0x00000000)
355#define DIDmsg_dot11req_join_operationalrate3 \
356 (P80211DID_MKSECTION(1) | \
357 P80211DID_MKGROUP(6) | \
358 P80211DID_MKITEM(13) | 0x00000000)
359#define DIDmsg_dot11req_join_operationalrate4 \
360 (P80211DID_MKSECTION(1) | \
361 P80211DID_MKGROUP(6) | \
362 P80211DID_MKITEM(14) | 0x00000000)
363#define DIDmsg_dot11req_join_operationalrate5 \
364 (P80211DID_MKSECTION(1) | \
365 P80211DID_MKGROUP(6) | \
366 P80211DID_MKITEM(15) | 0x00000000)
367#define DIDmsg_dot11req_join_operationalrate6 \
368 (P80211DID_MKSECTION(1) | \
369 P80211DID_MKGROUP(6) | \
370 P80211DID_MKITEM(16) | 0x00000000)
371#define DIDmsg_dot11req_join_operationalrate7 \
372 (P80211DID_MKSECTION(1) | \
373 P80211DID_MKGROUP(6) | \
374 P80211DID_MKITEM(17) | 0x00000000)
375#define DIDmsg_dot11req_join_operationalrate8 \
376 (P80211DID_MKSECTION(1) | \
377 P80211DID_MKGROUP(6) | \
378 P80211DID_MKITEM(18) | 0x00000000)
379#define DIDmsg_dot11req_join_resultcode \
380 (P80211DID_MKSECTION(1) | \
381 P80211DID_MKGROUP(6) | \
382 P80211DID_MKITEM(19) | 0x00000000)
383#define DIDmsg_dot11req_authenticate \
384 (P80211DID_MKSECTION(1) | \
385 P80211DID_MKGROUP(7))
386#define DIDmsg_dot11req_authenticate_peerstaaddress \
387 (P80211DID_MKSECTION(1) | \
388 P80211DID_MKGROUP(7) | \
389 P80211DID_MKITEM(1) | 0x00000000)
390#define DIDmsg_dot11req_authenticate_authenticationtype \
391 (P80211DID_MKSECTION(1) | \
392 P80211DID_MKGROUP(7) | \
393 P80211DID_MKITEM(2) | 0x00000000)
394#define DIDmsg_dot11req_authenticate_authenticationfailuretimeout \
395 (P80211DID_MKSECTION(1) | \
396 P80211DID_MKGROUP(7) | \
397 P80211DID_MKITEM(3) | 0x00000000)
398#define DIDmsg_dot11req_authenticate_resultcode \
399 (P80211DID_MKSECTION(1) | \
400 P80211DID_MKGROUP(7) | \
401 P80211DID_MKITEM(4) | 0x00000000)
402#define DIDmsg_dot11req_deauthenticate \
403 (P80211DID_MKSECTION(1) | \
404 P80211DID_MKGROUP(8))
405#define DIDmsg_dot11req_deauthenticate_peerstaaddress \
406 (P80211DID_MKSECTION(1) | \
407 P80211DID_MKGROUP(8) | \
408 P80211DID_MKITEM(1) | 0x00000000)
409#define DIDmsg_dot11req_deauthenticate_reasoncode \
410 (P80211DID_MKSECTION(1) | \
411 P80211DID_MKGROUP(8) | \
412 P80211DID_MKITEM(2) | 0x00000000)
413#define DIDmsg_dot11req_deauthenticate_resultcode \
414 (P80211DID_MKSECTION(1) | \
415 P80211DID_MKGROUP(8) | \
416 P80211DID_MKITEM(3) | 0x00000000)
417#define DIDmsg_dot11req_associate \
418 (P80211DID_MKSECTION(1) | \
419 P80211DID_MKGROUP(9))
420#define DIDmsg_dot11req_associate_peerstaaddress \
421 (P80211DID_MKSECTION(1) | \
422 P80211DID_MKGROUP(9) | \
423 P80211DID_MKITEM(1) | 0x00000000)
424#define DIDmsg_dot11req_associate_associatefailuretimeout \
425 (P80211DID_MKSECTION(1) | \
426 P80211DID_MKGROUP(9) | \
427 P80211DID_MKITEM(2) | 0x00000000)
428#define DIDmsg_dot11req_associate_cfpollable \
429 (P80211DID_MKSECTION(1) | \
430 P80211DID_MKGROUP(9) | \
431 P80211DID_MKITEM(3) | 0x00000000)
432#define DIDmsg_dot11req_associate_cfpollreq \
433 (P80211DID_MKSECTION(1) | \
434 P80211DID_MKGROUP(9) | \
435 P80211DID_MKITEM(4) | 0x00000000)
436#define DIDmsg_dot11req_associate_privacy \
437 (P80211DID_MKSECTION(1) | \
438 P80211DID_MKGROUP(9) | \
439 P80211DID_MKITEM(5) | 0x00000000)
440#define DIDmsg_dot11req_associate_listeninterval \
441 (P80211DID_MKSECTION(1) | \
442 P80211DID_MKGROUP(9) | \
443 P80211DID_MKITEM(6) | 0x00000000)
444#define DIDmsg_dot11req_associate_resultcode \
445 (P80211DID_MKSECTION(1) | \
446 P80211DID_MKGROUP(9) | \
447 P80211DID_MKITEM(7) | 0x00000000)
448#define DIDmsg_dot11req_reassociate \
449 (P80211DID_MKSECTION(1) | \
450 P80211DID_MKGROUP(10))
451#define DIDmsg_dot11req_reassociate_newapaddress \
452 (P80211DID_MKSECTION(1) | \
453 P80211DID_MKGROUP(10) | \
454 P80211DID_MKITEM(1) | 0x00000000)
455#define DIDmsg_dot11req_reassociate_reassociatefailuretimeout \
456 (P80211DID_MKSECTION(1) | \
457 P80211DID_MKGROUP(10) | \
458 P80211DID_MKITEM(2) | 0x00000000)
459#define DIDmsg_dot11req_reassociate_cfpollable \
460 (P80211DID_MKSECTION(1) | \
461 P80211DID_MKGROUP(10) | \
462 P80211DID_MKITEM(3) | 0x00000000)
463#define DIDmsg_dot11req_reassociate_cfpollreq \
464 (P80211DID_MKSECTION(1) | \
465 P80211DID_MKGROUP(10) | \
466 P80211DID_MKITEM(4) | 0x00000000)
467#define DIDmsg_dot11req_reassociate_privacy \
468 (P80211DID_MKSECTION(1) | \
469 P80211DID_MKGROUP(10) | \
470 P80211DID_MKITEM(5) | 0x00000000)
471#define DIDmsg_dot11req_reassociate_listeninterval \
472 (P80211DID_MKSECTION(1) | \
473 P80211DID_MKGROUP(10) | \
474 P80211DID_MKITEM(6) | 0x00000000)
475#define DIDmsg_dot11req_reassociate_resultcode \
476 (P80211DID_MKSECTION(1) | \
477 P80211DID_MKGROUP(10) | \
478 P80211DID_MKITEM(7) | 0x00000000)
479#define DIDmsg_dot11req_disassociate \
480 (P80211DID_MKSECTION(1) | \
481 P80211DID_MKGROUP(11))
482#define DIDmsg_dot11req_disassociate_peerstaaddress \
483 (P80211DID_MKSECTION(1) | \
484 P80211DID_MKGROUP(11) | \
485 P80211DID_MKITEM(1) | 0x00000000)
486#define DIDmsg_dot11req_disassociate_reasoncode \
487 (P80211DID_MKSECTION(1) | \
488 P80211DID_MKGROUP(11) | \
489 P80211DID_MKITEM(2) | 0x00000000)
490#define DIDmsg_dot11req_disassociate_resultcode \
491 (P80211DID_MKSECTION(1) | \
492 P80211DID_MKGROUP(11) | \
493 P80211DID_MKITEM(3) | 0x00000000)
494#define DIDmsg_dot11req_reset \
495 (P80211DID_MKSECTION(1) | \
496 P80211DID_MKGROUP(12))
497#define DIDmsg_dot11req_reset_setdefaultmib \
498 (P80211DID_MKSECTION(1) | \
499 P80211DID_MKGROUP(12) | \
500 P80211DID_MKITEM(1) | 0x00000000)
501#define DIDmsg_dot11req_reset_macaddress \
502 (P80211DID_MKSECTION(1) | \
503 P80211DID_MKGROUP(12) | \
504 P80211DID_MKITEM(2) | 0x00000000)
505#define DIDmsg_dot11req_reset_resultcode \
506 (P80211DID_MKSECTION(1) | \
507 P80211DID_MKGROUP(12) | \
508 P80211DID_MKITEM(3) | 0x00000000)
509#define DIDmsg_dot11req_start \
510 (P80211DID_MKSECTION(1) | \
511 P80211DID_MKGROUP(13))
512#define DIDmsg_dot11req_start_ssid \
513 (P80211DID_MKSECTION(1) | \
514 P80211DID_MKGROUP(13) | \
515 P80211DID_MKITEM(1) | 0x00000000)
516#define DIDmsg_dot11req_start_bsstype \
517 (P80211DID_MKSECTION(1) | \
518 P80211DID_MKGROUP(13) | \
519 P80211DID_MKITEM(2) | 0x00000000)
520#define DIDmsg_dot11req_start_beaconperiod \
521 (P80211DID_MKSECTION(1) | \
522 P80211DID_MKGROUP(13) | \
523 P80211DID_MKITEM(3) | 0x00000000)
524#define DIDmsg_dot11req_start_dtimperiod \
525 (P80211DID_MKSECTION(1) | \
526 P80211DID_MKGROUP(13) | \
527 P80211DID_MKITEM(4) | 0x00000000)
528#define DIDmsg_dot11req_start_cfpperiod \
529 (P80211DID_MKSECTION(1) | \
530 P80211DID_MKGROUP(13) | \
531 P80211DID_MKITEM(5) | 0x00000000)
532#define DIDmsg_dot11req_start_cfpmaxduration \
533 (P80211DID_MKSECTION(1) | \
534 P80211DID_MKGROUP(13) | \
535 P80211DID_MKITEM(6) | 0x00000000)
536#define DIDmsg_dot11req_start_fhdwelltime \
537 (P80211DID_MKSECTION(1) | \
538 P80211DID_MKGROUP(13) | \
539 P80211DID_MKITEM(7) | 0x00000000)
540#define DIDmsg_dot11req_start_fhhopset \
541 (P80211DID_MKSECTION(1) | \
542 P80211DID_MKGROUP(13) | \
543 P80211DID_MKITEM(8) | 0x00000000)
544#define DIDmsg_dot11req_start_fhhoppattern \
545 (P80211DID_MKSECTION(1) | \
546 P80211DID_MKGROUP(13) | \
547 P80211DID_MKITEM(9) | 0x00000000)
548#define DIDmsg_dot11req_start_dschannel \
549 (P80211DID_MKSECTION(1) | \
550 P80211DID_MKGROUP(13) | \
551 P80211DID_MKITEM(10) | 0x00000000)
552#define DIDmsg_dot11req_start_ibssatimwindow \
553 (P80211DID_MKSECTION(1) | \
554 P80211DID_MKGROUP(13) | \
555 P80211DID_MKITEM(11) | 0x00000000)
556#define DIDmsg_dot11req_start_probedelay \
557 (P80211DID_MKSECTION(1) | \
558 P80211DID_MKGROUP(13) | \
559 P80211DID_MKITEM(12) | 0x00000000)
560#define DIDmsg_dot11req_start_cfpollable \
561 (P80211DID_MKSECTION(1) | \
562 P80211DID_MKGROUP(13) | \
563 P80211DID_MKITEM(13) | 0x00000000)
564#define DIDmsg_dot11req_start_cfpollreq \
565 (P80211DID_MKSECTION(1) | \
566 P80211DID_MKGROUP(13) | \
567 P80211DID_MKITEM(14) | 0x00000000)
568#define DIDmsg_dot11req_start_basicrate1 \
569 (P80211DID_MKSECTION(1) | \
570 P80211DID_MKGROUP(13) | \
571 P80211DID_MKITEM(15) | 0x00000000)
572#define DIDmsg_dot11req_start_basicrate2 \
573 (P80211DID_MKSECTION(1) | \
574 P80211DID_MKGROUP(13) | \
575 P80211DID_MKITEM(16) | 0x00000000)
576#define DIDmsg_dot11req_start_basicrate3 \
577 (P80211DID_MKSECTION(1) | \
578 P80211DID_MKGROUP(13) | \
579 P80211DID_MKITEM(17) | 0x00000000)
580#define DIDmsg_dot11req_start_basicrate4 \
581 (P80211DID_MKSECTION(1) | \
582 P80211DID_MKGROUP(13) | \
583 P80211DID_MKITEM(18) | 0x00000000)
584#define DIDmsg_dot11req_start_basicrate5 \
585 (P80211DID_MKSECTION(1) | \
586 P80211DID_MKGROUP(13) | \
587 P80211DID_MKITEM(19) | 0x00000000)
588#define DIDmsg_dot11req_start_basicrate6 \
589 (P80211DID_MKSECTION(1) | \
590 P80211DID_MKGROUP(13) | \
591 P80211DID_MKITEM(20) | 0x00000000)
592#define DIDmsg_dot11req_start_basicrate7 \
593 (P80211DID_MKSECTION(1) | \
594 P80211DID_MKGROUP(13) | \
595 P80211DID_MKITEM(21) | 0x00000000)
596#define DIDmsg_dot11req_start_basicrate8 \
597 (P80211DID_MKSECTION(1) | \
598 P80211DID_MKGROUP(13) | \
599 P80211DID_MKITEM(22) | 0x00000000)
600#define DIDmsg_dot11req_start_operationalrate1 \
601 (P80211DID_MKSECTION(1) | \
602 P80211DID_MKGROUP(13) | \
603 P80211DID_MKITEM(23) | 0x00000000)
604#define DIDmsg_dot11req_start_operationalrate2 \
605 (P80211DID_MKSECTION(1) | \
606 P80211DID_MKGROUP(13) | \
607 P80211DID_MKITEM(24) | 0x00000000)
608#define DIDmsg_dot11req_start_operationalrate3 \
609 (P80211DID_MKSECTION(1) | \
610 P80211DID_MKGROUP(13) | \
611 P80211DID_MKITEM(25) | 0x00000000)
612#define DIDmsg_dot11req_start_operationalrate4 \
613 (P80211DID_MKSECTION(1) | \
614 P80211DID_MKGROUP(13) | \
615 P80211DID_MKITEM(26) | 0x00000000)
616#define DIDmsg_dot11req_start_operationalrate5 \
617 (P80211DID_MKSECTION(1) | \
618 P80211DID_MKGROUP(13) | \
619 P80211DID_MKITEM(27) | 0x00000000)
620#define DIDmsg_dot11req_start_operationalrate6 \
621 (P80211DID_MKSECTION(1) | \
622 P80211DID_MKGROUP(13) | \
623 P80211DID_MKITEM(28) | 0x00000000)
624#define DIDmsg_dot11req_start_operationalrate7 \
625 (P80211DID_MKSECTION(1) | \
626 P80211DID_MKGROUP(13) | \
627 P80211DID_MKITEM(29) | 0x00000000)
628#define DIDmsg_dot11req_start_operationalrate8 \
629 (P80211DID_MKSECTION(1) | \
630 P80211DID_MKGROUP(13) | \
631 P80211DID_MKITEM(30) | 0x00000000)
632#define DIDmsg_dot11req_start_resultcode \
633 (P80211DID_MKSECTION(1) | \
634 P80211DID_MKGROUP(13) | \
635 P80211DID_MKITEM(31) | 0x00000000)
636#define DIDmsg_cat_dot11ind \
637 P80211DID_MKSECTION(2)
638#define DIDmsg_dot11ind_authenticate \
639 (P80211DID_MKSECTION(2) | \
640 P80211DID_MKGROUP(1))
641#define DIDmsg_dot11ind_authenticate_peerstaaddress \
642 (P80211DID_MKSECTION(2) | \
643 P80211DID_MKGROUP(1) | \
644 P80211DID_MKITEM(1) | 0x00000000)
645#define DIDmsg_dot11ind_authenticate_authenticationtype \
646 (P80211DID_MKSECTION(2) | \
647 P80211DID_MKGROUP(1) | \
648 P80211DID_MKITEM(2) | 0x00000000)
649#define DIDmsg_dot11ind_deauthenticate \
650 (P80211DID_MKSECTION(2) | \
651 P80211DID_MKGROUP(2))
652#define DIDmsg_dot11ind_deauthenticate_peerstaaddress \
653 (P80211DID_MKSECTION(2) | \
654 P80211DID_MKGROUP(2) | \
655 P80211DID_MKITEM(1) | 0x00000000)
656#define DIDmsg_dot11ind_deauthenticate_reasoncode \
657 (P80211DID_MKSECTION(2) | \
658 P80211DID_MKGROUP(2) | \
659 P80211DID_MKITEM(2) | 0x00000000)
660#define DIDmsg_dot11ind_associate \
661 (P80211DID_MKSECTION(2) | \
662 P80211DID_MKGROUP(3))
663#define DIDmsg_dot11ind_associate_peerstaaddress \
664 (P80211DID_MKSECTION(2) | \
665 P80211DID_MKGROUP(3) | \
666 P80211DID_MKITEM(1) | 0x00000000)
667#define DIDmsg_dot11ind_associate_aid \
668 (P80211DID_MKSECTION(2) | \
669 P80211DID_MKGROUP(3) | \
670 P80211DID_MKITEM(2) | 0x00000000)
671#define DIDmsg_dot11ind_reassociate \
672 (P80211DID_MKSECTION(2) | \
673 P80211DID_MKGROUP(4))
674#define DIDmsg_dot11ind_reassociate_peerstaaddress \
675 (P80211DID_MKSECTION(2) | \
676 P80211DID_MKGROUP(4) | \
677 P80211DID_MKITEM(1) | 0x00000000)
678#define DIDmsg_dot11ind_reassociate_aid \
679 (P80211DID_MKSECTION(2) | \
680 P80211DID_MKGROUP(4) | \
681 P80211DID_MKITEM(2) | 0x00000000)
682#define DIDmsg_dot11ind_reassociate_oldapaddress \
683 (P80211DID_MKSECTION(2) | \
684 P80211DID_MKGROUP(4) | \
685 P80211DID_MKITEM(3) | 0x00000000)
686#define DIDmsg_dot11ind_disassociate \
687 (P80211DID_MKSECTION(2) | \
688 P80211DID_MKGROUP(5))
689#define DIDmsg_dot11ind_disassociate_peerstaaddress \
690 (P80211DID_MKSECTION(2) | \
691 P80211DID_MKGROUP(5) | \
692 P80211DID_MKITEM(1) | 0x00000000)
693#define DIDmsg_dot11ind_disassociate_reasoncode \
694 (P80211DID_MKSECTION(2) | \
695 P80211DID_MKGROUP(5) | \
696 P80211DID_MKITEM(2) | 0x00000000)
697#define DIDmsg_cat_lnxreq \
698 P80211DID_MKSECTION(3)
699#define DIDmsg_lnxreq_ifstate \
700 (P80211DID_MKSECTION(3) | \
701 P80211DID_MKGROUP(1))
702#define DIDmsg_lnxreq_ifstate_ifstate \
703 (P80211DID_MKSECTION(3) | \
704 P80211DID_MKGROUP(1) | \
705 P80211DID_MKITEM(1) | 0x00000000)
706#define DIDmsg_lnxreq_ifstate_resultcode \
707 (P80211DID_MKSECTION(3) | \
708 P80211DID_MKGROUP(1) | \
709 P80211DID_MKITEM(2) | 0x00000000)
710#define DIDmsg_lnxreq_wlansniff \
711 (P80211DID_MKSECTION(3) | \
712 P80211DID_MKGROUP(2))
713#define DIDmsg_lnxreq_wlansniff_enable \
714 (P80211DID_MKSECTION(3) | \
715 P80211DID_MKGROUP(2) | \
716 P80211DID_MKITEM(1) | 0x00000000)
717#define DIDmsg_lnxreq_wlansniff_channel \
718 (P80211DID_MKSECTION(3) | \
719 P80211DID_MKGROUP(2) | \
720 P80211DID_MKITEM(2) | 0x00000000)
721#define DIDmsg_lnxreq_wlansniff_prismheader \
722 (P80211DID_MKSECTION(3) | \
723 P80211DID_MKGROUP(2) | \
724 P80211DID_MKITEM(3) | 0x00000000)
725#define DIDmsg_lnxreq_wlansniff_wlanheader \
726 (P80211DID_MKSECTION(3) | \
727 P80211DID_MKGROUP(2) | \
728 P80211DID_MKITEM(4) | 0x00000000)
729#define DIDmsg_lnxreq_wlansniff_keepwepflags \
730 (P80211DID_MKSECTION(3) | \
731 P80211DID_MKGROUP(2) | \
732 P80211DID_MKITEM(5) | 0x00000000)
733#define DIDmsg_lnxreq_wlansniff_stripfcs \
734 (P80211DID_MKSECTION(3) | \
735 P80211DID_MKGROUP(2) | \
736 P80211DID_MKITEM(6) | 0x00000000)
737#define DIDmsg_lnxreq_wlansniff_packet_trunc \
738 (P80211DID_MKSECTION(3) | \
739 P80211DID_MKGROUP(2) | \
740 P80211DID_MKITEM(7) | 0x00000000)
741#define DIDmsg_lnxreq_wlansniff_resultcode \
742 (P80211DID_MKSECTION(3) | \
743 P80211DID_MKGROUP(2) | \
744 P80211DID_MKITEM(8) | 0x00000000)
745#define DIDmsg_lnxreq_hostwep \
746 (P80211DID_MKSECTION(3) | \
747 P80211DID_MKGROUP(3))
748#define DIDmsg_lnxreq_hostwep_resultcode \
749 (P80211DID_MKSECTION(3) | \
750 P80211DID_MKGROUP(3) | \
751 P80211DID_MKITEM(1) | 0x00000000)
752#define DIDmsg_lnxreq_hostwep_decrypt \
753 (P80211DID_MKSECTION(3) | \
754 P80211DID_MKGROUP(3) | \
755 P80211DID_MKITEM(2) | 0x00000000)
756#define DIDmsg_lnxreq_hostwep_encrypt \
757 (P80211DID_MKSECTION(3) | \
758 P80211DID_MKGROUP(3) | \
759 P80211DID_MKITEM(3) | 0x00000000)
760#define DIDmsg_lnxreq_commsquality \
761 (P80211DID_MKSECTION(3) | \
762 P80211DID_MKGROUP(4))
763#define DIDmsg_lnxreq_commsquality_resultcode \
764 (P80211DID_MKSECTION(3) | \
765 P80211DID_MKGROUP(4) | \
766 P80211DID_MKITEM(1) | 0x00000000)
767#define DIDmsg_lnxreq_commsquality_dbm \
768 (P80211DID_MKSECTION(3) | \
769 P80211DID_MKGROUP(4) | \
770 P80211DID_MKITEM(2) | 0x00000000)
771#define DIDmsg_lnxreq_commsquality_link \
772 (P80211DID_MKSECTION(3) | \
773 P80211DID_MKGROUP(4) | \
774 P80211DID_MKITEM(3) | 0x00000000)
775#define DIDmsg_lnxreq_commsquality_level \
776 (P80211DID_MKSECTION(3) | \
777 P80211DID_MKGROUP(4) | \
778 P80211DID_MKITEM(4) | 0x00000000)
779#define DIDmsg_lnxreq_commsquality_noise \
780 (P80211DID_MKSECTION(3) | \
781 P80211DID_MKGROUP(4) | \
782 P80211DID_MKITEM(5) | 0x00000000)
783#define DIDmsg_lnxreq_autojoin \
784 (P80211DID_MKSECTION(3) | \
785 P80211DID_MKGROUP(5))
786#define DIDmsg_lnxreq_autojoin_ssid \
787 (P80211DID_MKSECTION(3) | \
788 P80211DID_MKGROUP(5) | \
789 P80211DID_MKITEM(1) | 0x00000000)
790#define DIDmsg_lnxreq_autojoin_authtype \
791 (P80211DID_MKSECTION(3) | \
792 P80211DID_MKGROUP(5) | \
793 P80211DID_MKITEM(2) | 0x00000000)
794#define DIDmsg_lnxreq_autojoin_resultcode \
795 (P80211DID_MKSECTION(3) | \
796 P80211DID_MKGROUP(5) | \
797 P80211DID_MKITEM(3) | 0x00000000)
798#define DIDmsg_cat_lnxind \
799 P80211DID_MKSECTION(4)
800#define DIDmsg_lnxind_wlansniffrm \
801 (P80211DID_MKSECTION(4) | \
802 P80211DID_MKGROUP(1))
803#define DIDmsg_lnxind_wlansniffrm_hosttime \
804 (P80211DID_MKSECTION(4) | \
805 P80211DID_MKGROUP(1) | \
806 P80211DID_MKITEM(1) | 0x00000000)
807#define DIDmsg_lnxind_wlansniffrm_mactime \
808 (P80211DID_MKSECTION(4) | \
809 P80211DID_MKGROUP(1) | \
810 P80211DID_MKITEM(2) | 0x00000000)
811#define DIDmsg_lnxind_wlansniffrm_channel \
812 (P80211DID_MKSECTION(4) | \
813 P80211DID_MKGROUP(1) | \
814 P80211DID_MKITEM(3) | 0x00000000)
815#define DIDmsg_lnxind_wlansniffrm_rssi \
816 (P80211DID_MKSECTION(4) | \
817 P80211DID_MKGROUP(1) | \
818 P80211DID_MKITEM(4) | 0x00000000)
819#define DIDmsg_lnxind_wlansniffrm_sq \
820 (P80211DID_MKSECTION(4) | \
821 P80211DID_MKGROUP(1) | \
822 P80211DID_MKITEM(5) | 0x00000000)
823#define DIDmsg_lnxind_wlansniffrm_signal \
824 (P80211DID_MKSECTION(4) | \
825 P80211DID_MKGROUP(1) | \
826 P80211DID_MKITEM(6) | 0x00000000)
827#define DIDmsg_lnxind_wlansniffrm_noise \
828 (P80211DID_MKSECTION(4) | \
829 P80211DID_MKGROUP(1) | \
830 P80211DID_MKITEM(7) | 0x00000000)
831#define DIDmsg_lnxind_wlansniffrm_rate \
832 (P80211DID_MKSECTION(4) | \
833 P80211DID_MKGROUP(1) | \
834 P80211DID_MKITEM(8) | 0x00000000)
835#define DIDmsg_lnxind_wlansniffrm_istx \
836 (P80211DID_MKSECTION(4) | \
837 P80211DID_MKGROUP(1) | \
838 P80211DID_MKITEM(9) | 0x00000000)
839#define DIDmsg_lnxind_wlansniffrm_frmlen \
840 (P80211DID_MKSECTION(4) | \
841 P80211DID_MKGROUP(1) | \
842 P80211DID_MKITEM(10) | 0x00000000)
843#define DIDmsg_lnxind_roam \
844 (P80211DID_MKSECTION(4) | \
845 P80211DID_MKGROUP(2))
846#define DIDmsg_lnxind_roam_reason \
847 (P80211DID_MKSECTION(4) | \
848 P80211DID_MKGROUP(2) | \
849 P80211DID_MKITEM(1) | 0x00000000)
850#define DIDmsg_cat_p2req \
851 P80211DID_MKSECTION(5)
852#define DIDmsg_p2req_join \
853 (P80211DID_MKSECTION(5) | \
854 P80211DID_MKGROUP(1))
855#define DIDmsg_p2req_join_bssid \
856 (P80211DID_MKSECTION(5) | \
857 P80211DID_MKGROUP(1) | \
858 P80211DID_MKITEM(1) | 0x00000000)
859#define DIDmsg_p2req_join_basicrate1 \
860 (P80211DID_MKSECTION(5) | \
861 P80211DID_MKGROUP(1) | \
862 P80211DID_MKITEM(2) | 0x00000000)
863#define DIDmsg_p2req_join_basicrate2 \
864 (P80211DID_MKSECTION(5) | \
865 P80211DID_MKGROUP(1) | \
866 P80211DID_MKITEM(3) | 0x00000000)
867#define DIDmsg_p2req_join_basicrate3 \
868 (P80211DID_MKSECTION(5) | \
869 P80211DID_MKGROUP(1) | \
870 P80211DID_MKITEM(4) | 0x00000000)
871#define DIDmsg_p2req_join_basicrate4 \
872 (P80211DID_MKSECTION(5) | \
873 P80211DID_MKGROUP(1) | \
874 P80211DID_MKITEM(5) | 0x00000000)
875#define DIDmsg_p2req_join_basicrate5 \
876 (P80211DID_MKSECTION(5) | \
877 P80211DID_MKGROUP(1) | \
878 P80211DID_MKITEM(6) | 0x00000000)
879#define DIDmsg_p2req_join_basicrate6 \
880 (P80211DID_MKSECTION(5) | \
881 P80211DID_MKGROUP(1) | \
882 P80211DID_MKITEM(7) | 0x00000000)
883#define DIDmsg_p2req_join_basicrate7 \
884 (P80211DID_MKSECTION(5) | \
885 P80211DID_MKGROUP(1) | \
886 P80211DID_MKITEM(8) | 0x00000000)
887#define DIDmsg_p2req_join_basicrate8 \
888 (P80211DID_MKSECTION(5) | \
889 P80211DID_MKGROUP(1) | \
890 P80211DID_MKITEM(9) | 0x00000000)
891#define DIDmsg_p2req_join_operationalrate1 \
892 (P80211DID_MKSECTION(5) | \
893 P80211DID_MKGROUP(1) | \
894 P80211DID_MKITEM(10) | 0x00000000)
895#define DIDmsg_p2req_join_operationalrate2 \
896 (P80211DID_MKSECTION(5) | \
897 P80211DID_MKGROUP(1) | \
898 P80211DID_MKITEM(11) | 0x00000000)
899#define DIDmsg_p2req_join_operationalrate3 \
900 (P80211DID_MKSECTION(5) | \
901 P80211DID_MKGROUP(1) | \
902 P80211DID_MKITEM(12) | 0x00000000)
903#define DIDmsg_p2req_join_operationalrate4 \
904 (P80211DID_MKSECTION(5) | \
905 P80211DID_MKGROUP(1) | \
906 P80211DID_MKITEM(13) | 0x00000000)
907#define DIDmsg_p2req_join_operationalrate5 \
908 (P80211DID_MKSECTION(5) | \
909 P80211DID_MKGROUP(1) | \
910 P80211DID_MKITEM(14) | 0x00000000)
911#define DIDmsg_p2req_join_operationalrate6 \
912 (P80211DID_MKSECTION(5) | \
913 P80211DID_MKGROUP(1) | \
914 P80211DID_MKITEM(15) | 0x00000000)
915#define DIDmsg_p2req_join_operationalrate7 \
916 (P80211DID_MKSECTION(5) | \
917 P80211DID_MKGROUP(1) | \
918 P80211DID_MKITEM(16) | 0x00000000)
919#define DIDmsg_p2req_join_operationalrate8 \
920 (P80211DID_MKSECTION(5) | \
921 P80211DID_MKGROUP(1) | \
922 P80211DID_MKITEM(17) | 0x00000000)
923#define DIDmsg_p2req_join_ssid \
924 (P80211DID_MKSECTION(5) | \
925 P80211DID_MKGROUP(1) | \
926 P80211DID_MKITEM(18) | 0x00000000)
927#define DIDmsg_p2req_join_channel \
928 (P80211DID_MKSECTION(5) | \
929 P80211DID_MKGROUP(1) | \
930 P80211DID_MKITEM(19) | 0x00000000)
931#define DIDmsg_p2req_join_authtype \
932 (P80211DID_MKSECTION(5) | \
933 P80211DID_MKGROUP(1) | \
934 P80211DID_MKITEM(20) | 0x00000000)
935#define DIDmsg_p2req_join_resultcode \
936 (P80211DID_MKSECTION(5) | \
937 P80211DID_MKGROUP(1) | \
938 P80211DID_MKITEM(21) | 0x00000000)
939#define DIDmsg_p2req_readpda \
940 (P80211DID_MKSECTION(5) | \
941 P80211DID_MKGROUP(2))
942#define DIDmsg_p2req_readpda_pda \
943 (P80211DID_MKSECTION(5) | \
944 P80211DID_MKGROUP(2) | \
945 P80211DID_MKITEM(1) | 0x00000000)
946#define DIDmsg_p2req_readpda_resultcode \
947 (P80211DID_MKSECTION(5) | \
948 P80211DID_MKGROUP(2) | \
949 P80211DID_MKITEM(2) | 0x00000000)
950#define DIDmsg_p2req_readcis \
951 (P80211DID_MKSECTION(5) | \
952 P80211DID_MKGROUP(3))
953#define DIDmsg_p2req_readcis_cis \
954 (P80211DID_MKSECTION(5) | \
955 P80211DID_MKGROUP(3) | \
956 P80211DID_MKITEM(1) | 0x00000000)
957#define DIDmsg_p2req_readcis_resultcode \
958 (P80211DID_MKSECTION(5) | \
959 P80211DID_MKGROUP(3) | \
960 P80211DID_MKITEM(2) | 0x00000000)
961#define DIDmsg_p2req_auxport_state \
962 (P80211DID_MKSECTION(5) | \
963 P80211DID_MKGROUP(4))
964#define DIDmsg_p2req_auxport_state_enable \
965 (P80211DID_MKSECTION(5) | \
966 P80211DID_MKGROUP(4) | \
967 P80211DID_MKITEM(1) | 0x00000000)
968#define DIDmsg_p2req_auxport_state_resultcode \
969 (P80211DID_MKSECTION(5) | \
970 P80211DID_MKGROUP(4) | \
971 P80211DID_MKITEM(2) | 0x00000000)
972#define DIDmsg_p2req_auxport_read \
973 (P80211DID_MKSECTION(5) | \
974 P80211DID_MKGROUP(5))
975#define DIDmsg_p2req_auxport_read_addr \
976 (P80211DID_MKSECTION(5) | \
977 P80211DID_MKGROUP(5) | \
978 P80211DID_MKITEM(1) | 0x00000000)
979#define DIDmsg_p2req_auxport_read_len \
980 (P80211DID_MKSECTION(5) | \
981 P80211DID_MKGROUP(5) | \
982 P80211DID_MKITEM(2) | 0x00000000)
983#define DIDmsg_p2req_auxport_read_data \
984 (P80211DID_MKSECTION(5) | \
985 P80211DID_MKGROUP(5) | \
986 P80211DID_MKITEM(3) | 0x00000000)
987#define DIDmsg_p2req_auxport_read_resultcode \
988 (P80211DID_MKSECTION(5) | \
989 P80211DID_MKGROUP(5) | \
990 P80211DID_MKITEM(4) | 0x00000000)
991#define DIDmsg_p2req_auxport_write \
992 (P80211DID_MKSECTION(5) | \
993 P80211DID_MKGROUP(6))
994#define DIDmsg_p2req_auxport_write_addr \
995 (P80211DID_MKSECTION(5) | \
996 P80211DID_MKGROUP(6) | \
997 P80211DID_MKITEM(1) | 0x00000000)
998#define DIDmsg_p2req_auxport_write_len \
999 (P80211DID_MKSECTION(5) | \
1000 P80211DID_MKGROUP(6) | \
1001 P80211DID_MKITEM(2) | 0x00000000)
1002#define DIDmsg_p2req_auxport_write_data \
1003 (P80211DID_MKSECTION(5) | \
1004 P80211DID_MKGROUP(6) | \
1005 P80211DID_MKITEM(3) | 0x00000000)
1006#define DIDmsg_p2req_auxport_write_resultcode \
1007 (P80211DID_MKSECTION(5) | \
1008 P80211DID_MKGROUP(6) | \
1009 P80211DID_MKITEM(4) | 0x00000000)
1010#define DIDmsg_p2req_low_level \
1011 (P80211DID_MKSECTION(5) | \
1012 P80211DID_MKGROUP(7))
1013#define DIDmsg_p2req_low_level_command \
1014 (P80211DID_MKSECTION(5) | \
1015 P80211DID_MKGROUP(7) | \
1016 P80211DID_MKITEM(1) | 0x00000000)
1017#define DIDmsg_p2req_low_level_param0 \
1018 (P80211DID_MKSECTION(5) | \
1019 P80211DID_MKGROUP(7) | \
1020 P80211DID_MKITEM(2) | 0x00000000)
1021#define DIDmsg_p2req_low_level_param1 \
1022 (P80211DID_MKSECTION(5) | \
1023 P80211DID_MKGROUP(7) | \
1024 P80211DID_MKITEM(3) | 0x00000000)
1025#define DIDmsg_p2req_low_level_param2 \
1026 (P80211DID_MKSECTION(5) | \
1027 P80211DID_MKGROUP(7) | \
1028 P80211DID_MKITEM(4) | 0x00000000)
1029#define DIDmsg_p2req_low_level_resp0 \
1030 (P80211DID_MKSECTION(5) | \
1031 P80211DID_MKGROUP(7) | \
1032 P80211DID_MKITEM(5) | 0x00000000)
1033#define DIDmsg_p2req_low_level_resp1 \
1034 (P80211DID_MKSECTION(5) | \
1035 P80211DID_MKGROUP(7) | \
1036 P80211DID_MKITEM(6) | 0x00000000)
1037#define DIDmsg_p2req_low_level_resp2 \
1038 (P80211DID_MKSECTION(5) | \
1039 P80211DID_MKGROUP(7) | \
1040 P80211DID_MKITEM(7) | 0x00000000)
1041#define DIDmsg_p2req_low_level_resultcode \
1042 (P80211DID_MKSECTION(5) | \
1043 P80211DID_MKGROUP(7) | \
1044 P80211DID_MKITEM(8) | 0x00000000)
1045#define DIDmsg_p2req_test_command \
1046 (P80211DID_MKSECTION(5) | \
1047 P80211DID_MKGROUP(8))
1048#define DIDmsg_p2req_test_command_testcode \
1049 (P80211DID_MKSECTION(5) | \
1050 P80211DID_MKGROUP(8) | \
1051 P80211DID_MKITEM(1) | 0x00000000)
1052#define DIDmsg_p2req_test_command_testparam \
1053 (P80211DID_MKSECTION(5) | \
1054 P80211DID_MKGROUP(8) | \
1055 P80211DID_MKITEM(2) | 0x00000000)
1056#define DIDmsg_p2req_test_command_resultcode \
1057 (P80211DID_MKSECTION(5) | \
1058 P80211DID_MKGROUP(8) | \
1059 P80211DID_MKITEM(3) | 0x00000000)
1060#define DIDmsg_p2req_test_command_status \
1061 (P80211DID_MKSECTION(5) | \
1062 P80211DID_MKGROUP(8) | \
1063 P80211DID_MKITEM(4) | 0x00000000)
1064#define DIDmsg_p2req_test_command_resp0 \
1065 (P80211DID_MKSECTION(5) | \
1066 P80211DID_MKGROUP(8) | \
1067 P80211DID_MKITEM(5) | 0x00000000)
1068#define DIDmsg_p2req_test_command_resp1 \
1069 (P80211DID_MKSECTION(5) | \
1070 P80211DID_MKGROUP(8) | \
1071 P80211DID_MKITEM(6) | 0x00000000)
1072#define DIDmsg_p2req_test_command_resp2 \
1073 (P80211DID_MKSECTION(5) | \
1074 P80211DID_MKGROUP(8) | \
1075 P80211DID_MKITEM(7) | 0x00000000)
1076#define DIDmsg_p2req_mmi_read \
1077 (P80211DID_MKSECTION(5) | \
1078 P80211DID_MKGROUP(9))
1079#define DIDmsg_p2req_mmi_read_addr \
1080 (P80211DID_MKSECTION(5) | \
1081 P80211DID_MKGROUP(9) | \
1082 P80211DID_MKITEM(1) | 0x00000000)
1083#define DIDmsg_p2req_mmi_read_value \
1084 (P80211DID_MKSECTION(5) | \
1085 P80211DID_MKGROUP(9) | \
1086 P80211DID_MKITEM(2) | 0x00000000)
1087#define DIDmsg_p2req_mmi_read_resultcode \
1088 (P80211DID_MKSECTION(5) | \
1089 P80211DID_MKGROUP(9) | \
1090 P80211DID_MKITEM(3) | 0x00000000)
1091#define DIDmsg_p2req_mmi_write \
1092 (P80211DID_MKSECTION(5) | \
1093 P80211DID_MKGROUP(10))
1094#define DIDmsg_p2req_mmi_write_addr \
1095 (P80211DID_MKSECTION(5) | \
1096 P80211DID_MKGROUP(10) | \
1097 P80211DID_MKITEM(1) | 0x00000000)
1098#define DIDmsg_p2req_mmi_write_data \
1099 (P80211DID_MKSECTION(5) | \
1100 P80211DID_MKGROUP(10) | \
1101 P80211DID_MKITEM(2) | 0x00000000)
1102#define DIDmsg_p2req_mmi_write_resultcode \
1103 (P80211DID_MKSECTION(5) | \
1104 P80211DID_MKGROUP(10) | \
1105 P80211DID_MKITEM(3) | 0x00000000)
1106#define DIDmsg_p2req_ramdl_state \
1107 (P80211DID_MKSECTION(5) | \
1108 P80211DID_MKGROUP(11))
1109#define DIDmsg_p2req_ramdl_state_enable \
1110 (P80211DID_MKSECTION(5) | \
1111 P80211DID_MKGROUP(11) | \
1112 P80211DID_MKITEM(1) | 0x00000000)
1113#define DIDmsg_p2req_ramdl_state_exeaddr \
1114 (P80211DID_MKSECTION(5) | \
1115 P80211DID_MKGROUP(11) | \
1116 P80211DID_MKITEM(2) | 0x00000000)
1117#define DIDmsg_p2req_ramdl_state_resultcode \
1118 (P80211DID_MKSECTION(5) | \
1119 P80211DID_MKGROUP(11) | \
1120 P80211DID_MKITEM(3) | 0x00000000)
1121#define DIDmsg_p2req_ramdl_write \
1122 (P80211DID_MKSECTION(5) | \
1123 P80211DID_MKGROUP(12))
1124#define DIDmsg_p2req_ramdl_write_addr \
1125 (P80211DID_MKSECTION(5) | \
1126 P80211DID_MKGROUP(12) | \
1127 P80211DID_MKITEM(1) | 0x00000000)
1128#define DIDmsg_p2req_ramdl_write_len \
1129 (P80211DID_MKSECTION(5) | \
1130 P80211DID_MKGROUP(12) | \
1131 P80211DID_MKITEM(2) | 0x00000000)
1132#define DIDmsg_p2req_ramdl_write_data \
1133 (P80211DID_MKSECTION(5) | \
1134 P80211DID_MKGROUP(12) | \
1135 P80211DID_MKITEM(3) | 0x00000000)
1136#define DIDmsg_p2req_ramdl_write_resultcode \
1137 (P80211DID_MKSECTION(5) | \
1138 P80211DID_MKGROUP(12) | \
1139 P80211DID_MKITEM(4) | 0x00000000)
1140#define DIDmsg_p2req_flashdl_state \
1141 (P80211DID_MKSECTION(5) | \
1142 P80211DID_MKGROUP(13))
1143#define DIDmsg_p2req_flashdl_state_enable \
1144 (P80211DID_MKSECTION(5) | \
1145 P80211DID_MKGROUP(13) | \
1146 P80211DID_MKITEM(1) | 0x00000000)
1147#define DIDmsg_p2req_flashdl_state_resultcode \
1148 (P80211DID_MKSECTION(5) | \
1149 P80211DID_MKGROUP(13) | \
1150 P80211DID_MKITEM(2) | 0x00000000)
1151#define DIDmsg_p2req_flashdl_write \
1152 (P80211DID_MKSECTION(5) | \
1153 P80211DID_MKGROUP(14))
1154#define DIDmsg_p2req_flashdl_write_addr \
1155 (P80211DID_MKSECTION(5) | \
1156 P80211DID_MKGROUP(14) | \
1157 P80211DID_MKITEM(1) | 0x00000000)
1158#define DIDmsg_p2req_flashdl_write_len \
1159 (P80211DID_MKSECTION(5) | \
1160 P80211DID_MKGROUP(14) | \
1161 P80211DID_MKITEM(2) | 0x00000000)
1162#define DIDmsg_p2req_flashdl_write_data \
1163 (P80211DID_MKSECTION(5) | \
1164 P80211DID_MKGROUP(14) | \
1165 P80211DID_MKITEM(3) | 0x00000000)
1166#define DIDmsg_p2req_flashdl_write_resultcode \
1167 (P80211DID_MKSECTION(5) | \
1168 P80211DID_MKGROUP(14) | \
1169 P80211DID_MKITEM(4) | 0x00000000)
1170#define DIDmsg_p2req_mm_state \
1171 (P80211DID_MKSECTION(5) | \
1172 P80211DID_MKGROUP(15))
1173#define DIDmsg_p2req_mm_state_enable \
1174 (P80211DID_MKSECTION(5) | \
1175 P80211DID_MKGROUP(15) | \
1176 P80211DID_MKITEM(1) | 0x00000000)
1177#define DIDmsg_p2req_mm_state_resultcode \
1178 (P80211DID_MKSECTION(5) | \
1179 P80211DID_MKGROUP(15) | \
1180 P80211DID_MKITEM(2) | 0x00000000)
1181#define DIDmsg_p2req_dump_state \
1182 (P80211DID_MKSECTION(5) | \
1183 P80211DID_MKGROUP(16))
1184#define DIDmsg_p2req_dump_state_level \
1185 (P80211DID_MKSECTION(5) | \
1186 P80211DID_MKGROUP(16) | \
1187 P80211DID_MKITEM(1) | 0x00000000)
1188#define DIDmsg_p2req_dump_state_resultcode \
1189 (P80211DID_MKSECTION(5) | \
1190 P80211DID_MKGROUP(16) | \
1191 P80211DID_MKITEM(2) | 0x00000000)
1192#define DIDmsg_p2req_channel_info \
1193 (P80211DID_MKSECTION(5) | \
1194 P80211DID_MKGROUP(17))
1195#define DIDmsg_p2req_channel_info_channellist \
1196 (P80211DID_MKSECTION(5) | \
1197 P80211DID_MKGROUP(17) | \
1198 P80211DID_MKITEM(1) | 0x00000000)
1199#define DIDmsg_p2req_channel_info_channeldwelltime \
1200 (P80211DID_MKSECTION(5) | \
1201 P80211DID_MKGROUP(17) | \
1202 P80211DID_MKITEM(2) | 0x00000000)
1203#define DIDmsg_p2req_channel_info_resultcode \
1204 (P80211DID_MKSECTION(5) | \
1205 P80211DID_MKGROUP(17) | \
1206 P80211DID_MKITEM(3) | 0x00000000)
1207#define DIDmsg_p2req_channel_info_numchinfo \
1208 (P80211DID_MKSECTION(5) | \
1209 P80211DID_MKGROUP(17) | \
1210 P80211DID_MKITEM(4) | 0x00000000)
1211#define DIDmsg_p2req_channel_info_results \
1212 (P80211DID_MKSECTION(5) | \
1213 P80211DID_MKGROUP(18))
1214#define DIDmsg_p2req_channel_info_results_channel \
1215 (P80211DID_MKSECTION(5) | \
1216 P80211DID_MKGROUP(18) | \
1217 P80211DID_MKITEM(1) | 0x00000000)
1218#define DIDmsg_p2req_channel_info_results_resultcode \
1219 (P80211DID_MKSECTION(5) | \
1220 P80211DID_MKGROUP(18) | \
1221 P80211DID_MKITEM(2) | 0x00000000)
1222#define DIDmsg_p2req_channel_info_results_avgnoiselevel \
1223 (P80211DID_MKSECTION(5) | \
1224 P80211DID_MKGROUP(18) | \
1225 P80211DID_MKITEM(3) | 0x00000000)
1226#define DIDmsg_p2req_channel_info_results_peaknoiselevel \
1227 (P80211DID_MKSECTION(5) | \
1228 P80211DID_MKGROUP(18) | \
1229 P80211DID_MKITEM(4) | 0x00000000)
1230#define DIDmsg_p2req_channel_info_results_bssactive \
1231 (P80211DID_MKSECTION(5) | \
1232 P80211DID_MKGROUP(18) | \
1233 P80211DID_MKITEM(5) | 0x00000000)
1234#define DIDmsg_p2req_channel_info_results_pcfactive \
1235 (P80211DID_MKSECTION(5) | \
1236 P80211DID_MKGROUP(18) | \
1237 P80211DID_MKITEM(6) | 0x00000000)
1238#define DIDmsg_p2req_enable \
1239 (P80211DID_MKSECTION(5) | \
1240 P80211DID_MKGROUP(19))
1241#define DIDmsg_p2req_enable_resultcode \
1242 (P80211DID_MKSECTION(5) | \
1243 P80211DID_MKGROUP(19) | \
1244 P80211DID_MKITEM(1) | 0x00000000)
1245#define DIDmib_cat_dot11smt \
1246 P80211DID_MKSECTION(1)
1247#define DIDmib_dot11smt_p80211Table \
1248 (P80211DID_MKSECTION(1) | \
1249 P80211DID_MKGROUP(1))
1250#define DIDmib_dot11smt_p80211Table_p80211_ifstate \
1251 (P80211DID_MKSECTION(1) | \
1252 P80211DID_MKGROUP(1) | \
1253 P80211DID_MKITEM(1) | 0x10000000)
1254#define DIDmib_dot11smt_dot11StationConfigTable \
1255 (P80211DID_MKSECTION(1) | \
1256 P80211DID_MKGROUP(2))
1257#define DIDmib_dot11smt_dot11StationConfigTable_dot11StationID \
1258 (P80211DID_MKSECTION(1) | \
1259 P80211DID_MKGROUP(2) | \
1260 P80211DID_MKITEM(1) | 0x18000000)
1261#define DIDmib_dot11smt_dot11StationConfigTable_dot11MediumOccupancyLimit \
1262 (P80211DID_MKSECTION(1) | \
1263 P80211DID_MKGROUP(2) | \
1264 P80211DID_MKITEM(2) | 0x18000000)
1265#define DIDmib_dot11smt_dot11StationConfigTable_dot11CFPollable \
1266 (P80211DID_MKSECTION(1) | \
1267 P80211DID_MKGROUP(2) | \
1268 P80211DID_MKITEM(3) | 0x10000000)
1269#define DIDmib_dot11smt_dot11StationConfigTable_dot11CFPPeriod \
1270 (P80211DID_MKSECTION(1) | \
1271 P80211DID_MKGROUP(2) | \
1272 P80211DID_MKITEM(4) | 0x18000000)
1273#define DIDmib_dot11smt_dot11StationConfigTable_dot11CFPMaxDuration \
1274 (P80211DID_MKSECTION(1) | \
1275 P80211DID_MKGROUP(2) | \
1276 P80211DID_MKITEM(5) | 0x18000000)
1277#define DIDmib_dot11smt_dot11StationConfigTable_dot11AuthenticationResponseTimeOut \
1278 (P80211DID_MKSECTION(1) | \
1279 P80211DID_MKGROUP(2) | \
1280 P80211DID_MKITEM(6) | 0x18000000)
1281#define DIDmib_dot11smt_dot11StationConfigTable_dot11PrivacyOptionImplemented \
1282 (P80211DID_MKSECTION(1) | \
1283 P80211DID_MKGROUP(2) | \
1284 P80211DID_MKITEM(7) | 0x10000000)
1285#define DIDmib_dot11smt_dot11StationConfigTable_dot11PowerManagementMode \
1286 (P80211DID_MKSECTION(1) | \
1287 P80211DID_MKGROUP(2) | \
1288 P80211DID_MKITEM(8) | 0x18000000)
1289#define DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredSSID \
1290 (P80211DID_MKSECTION(1) | \
1291 P80211DID_MKGROUP(2) | \
1292 P80211DID_MKITEM(9) | 0x18000000)
1293#define DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredBSSType \
1294 (P80211DID_MKSECTION(1) | \
1295 P80211DID_MKGROUP(2) | \
1296 P80211DID_MKITEM(10) | 0x18000000)
1297#define DIDmib_dot11smt_dot11StationConfigTable_dot11OperationalRateSet \
1298 (P80211DID_MKSECTION(1) | \
1299 P80211DID_MKGROUP(2) | \
1300 P80211DID_MKITEM(11) | 0x18000000)
1301#define DIDmib_dot11smt_dot11StationConfigTable_dot11BeaconPeriod \
1302 (P80211DID_MKSECTION(1) | \
1303 P80211DID_MKGROUP(2) | \
1304 P80211DID_MKITEM(12) | 0x18000000)
1305#define DIDmib_dot11smt_dot11StationConfigTable_dot11DTIMPeriod \
1306 (P80211DID_MKSECTION(1) | \
1307 P80211DID_MKGROUP(2) | \
1308 P80211DID_MKITEM(13) | 0x18000000)
1309#define DIDmib_dot11smt_dot11StationConfigTable_dot11AssociationResponseTimeOut \
1310 (P80211DID_MKSECTION(1) | \
1311 P80211DID_MKGROUP(2) | \
1312 P80211DID_MKITEM(14) | 0x10000000)
1313#define DIDmib_dot11smt_dot11StationConfigTable_dot11DisassociateReason \
1314 (P80211DID_MKSECTION(1) | \
1315 P80211DID_MKGROUP(2) | \
1316 P80211DID_MKITEM(15) | 0x10000000)
1317#define DIDmib_dot11smt_dot11StationConfigTable_dot11DisassociateStation \
1318 (P80211DID_MKSECTION(1) | \
1319 P80211DID_MKGROUP(2) | \
1320 P80211DID_MKITEM(16) | 0x10000000)
1321#define DIDmib_dot11smt_dot11StationConfigTable_dot11DeauthenticateReason \
1322 (P80211DID_MKSECTION(1) | \
1323 P80211DID_MKGROUP(2) | \
1324 P80211DID_MKITEM(17) | 0x10000000)
1325#define DIDmib_dot11smt_dot11StationConfigTable_dot11DeauthenticateStation \
1326 (P80211DID_MKSECTION(1) | \
1327 P80211DID_MKGROUP(2) | \
1328 P80211DID_MKITEM(18) | 0x10000000)
1329#define DIDmib_dot11smt_dot11StationConfigTable_dot11AuthenticateFailStatus \
1330 (P80211DID_MKSECTION(1) | \
1331 P80211DID_MKGROUP(2) | \
1332 P80211DID_MKITEM(19) | 0x10000000)
1333#define DIDmib_dot11smt_dot11StationConfigTable_dot11AuthenticateFailStation \
1334 (P80211DID_MKSECTION(1) | \
1335 P80211DID_MKGROUP(2) | \
1336 P80211DID_MKITEM(20) | 0x10000000)
1337#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable \
1338 (P80211DID_MKSECTION(1) | \
1339 P80211DID_MKGROUP(3))
1340#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm1 \
1341 (P80211DID_MKSECTION(1) | \
1342 P80211DID_MKGROUP(3) | \
1343 P80211DID_MKITEM(1) | 0x14000000)
1344#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable1 \
1345 (P80211DID_MKSECTION(1) | \
1346 P80211DID_MKGROUP(3) | \
1347 P80211DID_MKITEM(2) | 0x1c000000)
1348#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm2 \
1349 (P80211DID_MKSECTION(1) | \
1350 P80211DID_MKGROUP(3) | \
1351 P80211DID_MKITEM(3) | 0x14000000)
1352#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable2 \
1353 (P80211DID_MKSECTION(1) | \
1354 P80211DID_MKGROUP(3) | \
1355 P80211DID_MKITEM(4) | 0x1c000000)
1356#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm3 \
1357 (P80211DID_MKSECTION(1) | \
1358 P80211DID_MKGROUP(3) | \
1359 P80211DID_MKITEM(5) | 0x14000000)
1360#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable3 \
1361 (P80211DID_MKSECTION(1) | \
1362 P80211DID_MKGROUP(3) | \
1363 P80211DID_MKITEM(6) | 0x1c000000)
1364#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm4 \
1365 (P80211DID_MKSECTION(1) | \
1366 P80211DID_MKGROUP(3) | \
1367 P80211DID_MKITEM(7) | 0x14000000)
1368#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable4 \
1369 (P80211DID_MKSECTION(1) | \
1370 P80211DID_MKGROUP(3) | \
1371 P80211DID_MKITEM(8) | 0x1c000000)
1372#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm5 \
1373 (P80211DID_MKSECTION(1) | \
1374 P80211DID_MKGROUP(3) | \
1375 P80211DID_MKITEM(9) | 0x14000000)
1376#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable5 \
1377 (P80211DID_MKSECTION(1) | \
1378 P80211DID_MKGROUP(3) | \
1379 P80211DID_MKITEM(10) | 0x1c000000)
1380#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm6 \
1381 (P80211DID_MKSECTION(1) | \
1382 P80211DID_MKGROUP(3) | \
1383 P80211DID_MKITEM(11) | 0x14000000)
1384#define DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable6 \
1385 (P80211DID_MKSECTION(1) | \
1386 P80211DID_MKGROUP(3) | \
1387 P80211DID_MKITEM(12) | 0x1c000000)
1388#define DIDmib_dot11smt_dot11WEPDefaultKeysTable \
1389 (P80211DID_MKSECTION(1) | \
1390 P80211DID_MKGROUP(4))
1391#define DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0 \
1392 (P80211DID_MKSECTION(1) | \
1393 P80211DID_MKGROUP(4) | \
1394 P80211DID_MKITEM(1) | 0x0c000000)
1395#define DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1 \
1396 (P80211DID_MKSECTION(1) | \
1397 P80211DID_MKGROUP(4) | \
1398 P80211DID_MKITEM(2) | 0x0c000000)
1399#define DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2 \
1400 (P80211DID_MKSECTION(1) | \
1401 P80211DID_MKGROUP(4) | \
1402 P80211DID_MKITEM(3) | 0x0c000000)
1403#define DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3 \
1404 (P80211DID_MKSECTION(1) | \
1405 P80211DID_MKGROUP(4) | \
1406 P80211DID_MKITEM(4) | 0x0c000000)
1407#define DIDmib_dot11smt_dot11WEPKeyMappingsTable \
1408 (P80211DID_MKSECTION(1) | \
1409 P80211DID_MKGROUP(5))
1410#define DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingIndex \
1411 (P80211DID_MKSECTION(1) | \
1412 P80211DID_MKGROUP(5) | \
1413 P80211DID_MKITEM(1) | 0x1c000000)
1414#define DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingAddress \
1415 (P80211DID_MKSECTION(1) | \
1416 P80211DID_MKGROUP(5) | \
1417 P80211DID_MKITEM(2) | 0x1c000000)
1418#define DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingWEPOn \
1419 (P80211DID_MKSECTION(1) | \
1420 P80211DID_MKGROUP(5) | \
1421 P80211DID_MKITEM(3) | 0x1c000000)
1422#define DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingValue \
1423 (P80211DID_MKSECTION(1) | \
1424 P80211DID_MKGROUP(5) | \
1425 P80211DID_MKITEM(4) | 0x1c000000)
1426#define DIDmib_dot11smt_dot11PrivacyTable \
1427 (P80211DID_MKSECTION(1) | \
1428 P80211DID_MKGROUP(6))
1429#define DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked \
1430 (P80211DID_MKSECTION(1) | \
1431 P80211DID_MKGROUP(6) | \
1432 P80211DID_MKITEM(1) | 0x18000000)
1433#define DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID \
1434 (P80211DID_MKSECTION(1) | \
1435 P80211DID_MKGROUP(6) | \
1436 P80211DID_MKITEM(2) | 0x18000000)
1437#define DIDmib_dot11smt_dot11PrivacyTable_dot11WEPKeyMappingLength \
1438 (P80211DID_MKSECTION(1) | \
1439 P80211DID_MKGROUP(6) | \
1440 P80211DID_MKITEM(3) | 0x18000000)
1441#define DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted \
1442 (P80211DID_MKSECTION(1) | \
1443 P80211DID_MKGROUP(6) | \
1444 P80211DID_MKITEM(4) | 0x18000000)
1445#define DIDmib_dot11smt_dot11PrivacyTable_dot11WEPICVErrorCount \
1446 (P80211DID_MKSECTION(1) | \
1447 P80211DID_MKGROUP(6) | \
1448 P80211DID_MKITEM(5) | 0x10000000)
1449#define DIDmib_dot11smt_dot11PrivacyTable_dot11WEPExcludedCount \
1450 (P80211DID_MKSECTION(1) | \
1451 P80211DID_MKGROUP(6) | \
1452 P80211DID_MKITEM(6) | 0x10000000)
1453#define DIDmib_cat_dot11mac \
1454 P80211DID_MKSECTION(2)
1455#define DIDmib_dot11mac_dot11OperationTable \
1456 (P80211DID_MKSECTION(2) | \
1457 P80211DID_MKGROUP(1))
1458#define DIDmib_dot11mac_dot11OperationTable_dot11MACAddress \
1459 (P80211DID_MKSECTION(2) | \
1460 P80211DID_MKGROUP(1) | \
1461 P80211DID_MKITEM(1) | 0x18000000)
1462#define DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold \
1463 (P80211DID_MKSECTION(2) | \
1464 P80211DID_MKGROUP(1) | \
1465 P80211DID_MKITEM(2) | 0x18000000)
1466#define DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit \
1467 (P80211DID_MKSECTION(2) | \
1468 P80211DID_MKGROUP(1) | \
1469 P80211DID_MKITEM(3) | 0x10000000)
1470#define DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit \
1471 (P80211DID_MKSECTION(2) | \
1472 P80211DID_MKGROUP(1) | \
1473 P80211DID_MKITEM(4) | 0x10000000)
1474#define DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold \
1475 (P80211DID_MKSECTION(2) | \
1476 P80211DID_MKGROUP(1) | \
1477 P80211DID_MKITEM(5) | 0x18000000)
1478#define DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime \
1479 (P80211DID_MKSECTION(2) | \
1480 P80211DID_MKGROUP(1) | \
1481 P80211DID_MKITEM(6) | 0x10000000)
1482#define DIDmib_dot11mac_dot11OperationTable_dot11MaxReceiveLifetime \
1483 (P80211DID_MKSECTION(2) | \
1484 P80211DID_MKGROUP(1) | \
1485 P80211DID_MKITEM(7) | 0x10000000)
1486#define DIDmib_dot11mac_dot11OperationTable_dot11ManufacturerID \
1487 (P80211DID_MKSECTION(2) | \
1488 P80211DID_MKGROUP(1) | \
1489 P80211DID_MKITEM(8) | 0x10000000)
1490#define DIDmib_dot11mac_dot11OperationTable_dot11ProductID \
1491 (P80211DID_MKSECTION(2) | \
1492 P80211DID_MKGROUP(1) | \
1493 P80211DID_MKITEM(9) | 0x10000000)
1494#define DIDmib_dot11mac_dot11CountersTable \
1495 (P80211DID_MKSECTION(2) | \
1496 P80211DID_MKGROUP(2))
1497#define DIDmib_dot11mac_dot11CountersTable_dot11TransmittedFragmentCount \
1498 (P80211DID_MKSECTION(2) | \
1499 P80211DID_MKGROUP(2) | \
1500 P80211DID_MKITEM(1) | 0x10000000)
1501#define DIDmib_dot11mac_dot11CountersTable_dot11MulticastTransmittedFrameCount \
1502 (P80211DID_MKSECTION(2) | \
1503 P80211DID_MKGROUP(2) | \
1504 P80211DID_MKITEM(2) | 0x10000000)
1505#define DIDmib_dot11mac_dot11CountersTable_dot11FailedCount \
1506 (P80211DID_MKSECTION(2) | \
1507 P80211DID_MKGROUP(2) | \
1508 P80211DID_MKITEM(3) | 0x10000000)
1509#define DIDmib_dot11mac_dot11CountersTable_dot11RetryCount \
1510 (P80211DID_MKSECTION(2) | \
1511 P80211DID_MKGROUP(2) | \
1512 P80211DID_MKITEM(4) | 0x10000000)
1513#define DIDmib_dot11mac_dot11CountersTable_dot11MultipleRetryCount \
1514 (P80211DID_MKSECTION(2) | \
1515 P80211DID_MKGROUP(2) | \
1516 P80211DID_MKITEM(5) | 0x10000000)
1517#define DIDmib_dot11mac_dot11CountersTable_dot11FrameDuplicateCount \
1518 (P80211DID_MKSECTION(2) | \
1519 P80211DID_MKGROUP(2) | \
1520 P80211DID_MKITEM(6) | 0x10000000)
1521#define DIDmib_dot11mac_dot11CountersTable_dot11RTSSuccessCount \
1522 (P80211DID_MKSECTION(2) | \
1523 P80211DID_MKGROUP(2) | \
1524 P80211DID_MKITEM(7) | 0x10000000)
1525#define DIDmib_dot11mac_dot11CountersTable_dot11RTSFailureCount \
1526 (P80211DID_MKSECTION(2) | \
1527 P80211DID_MKGROUP(2) | \
1528 P80211DID_MKITEM(8) | 0x10000000)
1529#define DIDmib_dot11mac_dot11CountersTable_dot11ACKFailureCount \
1530 (P80211DID_MKSECTION(2) | \
1531 P80211DID_MKGROUP(2) | \
1532 P80211DID_MKITEM(9) | 0x10000000)
1533#define DIDmib_dot11mac_dot11CountersTable_dot11ReceivedFragmentCount \
1534 (P80211DID_MKSECTION(2) | \
1535 P80211DID_MKGROUP(2) | \
1536 P80211DID_MKITEM(10) | 0x10000000)
1537#define DIDmib_dot11mac_dot11CountersTable_dot11MulticastReceivedFrameCount \
1538 (P80211DID_MKSECTION(2) | \
1539 P80211DID_MKGROUP(2) | \
1540 P80211DID_MKITEM(11) | 0x10000000)
1541#define DIDmib_dot11mac_dot11CountersTable_dot11FCSErrorCount \
1542 (P80211DID_MKSECTION(2) | \
1543 P80211DID_MKGROUP(2) | \
1544 P80211DID_MKITEM(12) | 0x10000000)
1545#define DIDmib_dot11mac_dot11CountersTable_dot11TransmittedFrameCount \
1546 (P80211DID_MKSECTION(2) | \
1547 P80211DID_MKGROUP(2) | \
1548 P80211DID_MKITEM(13) | 0x10000000)
1549#define DIDmib_dot11mac_dot11CountersTable_dot11WEPUndecryptableCount \
1550 (P80211DID_MKSECTION(2) | \
1551 P80211DID_MKGROUP(2) | \
1552 P80211DID_MKITEM(14) | 0x10000000)
1553#define DIDmib_dot11mac_dot11GroupAddressesTable \
1554 (P80211DID_MKSECTION(2) | \
1555 P80211DID_MKGROUP(3))
1556#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address1 \
1557 (P80211DID_MKSECTION(2) | \
1558 P80211DID_MKGROUP(3) | \
1559 P80211DID_MKITEM(1) | 0x1c000000)
1560#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address2 \
1561 (P80211DID_MKSECTION(2) | \
1562 P80211DID_MKGROUP(3) | \
1563 P80211DID_MKITEM(2) | 0x1c000000)
1564#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address3 \
1565 (P80211DID_MKSECTION(2) | \
1566 P80211DID_MKGROUP(3) | \
1567 P80211DID_MKITEM(3) | 0x1c000000)
1568#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address4 \
1569 (P80211DID_MKSECTION(2) | \
1570 P80211DID_MKGROUP(3) | \
1571 P80211DID_MKITEM(4) | 0x1c000000)
1572#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address5 \
1573 (P80211DID_MKSECTION(2) | \
1574 P80211DID_MKGROUP(3) | \
1575 P80211DID_MKITEM(5) | 0x1c000000)
1576#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address6 \
1577 (P80211DID_MKSECTION(2) | \
1578 P80211DID_MKGROUP(3) | \
1579 P80211DID_MKITEM(6) | 0x1c000000)
1580#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address7 \
1581 (P80211DID_MKSECTION(2) | \
1582 P80211DID_MKGROUP(3) | \
1583 P80211DID_MKITEM(7) | 0x1c000000)
1584#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address8 \
1585 (P80211DID_MKSECTION(2) | \
1586 P80211DID_MKGROUP(3) | \
1587 P80211DID_MKITEM(8) | 0x1c000000)
1588#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address9 \
1589 (P80211DID_MKSECTION(2) | \
1590 P80211DID_MKGROUP(3) | \
1591 P80211DID_MKITEM(9) | 0x1c000000)
1592#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address10 \
1593 (P80211DID_MKSECTION(2) | \
1594 P80211DID_MKGROUP(3) | \
1595 P80211DID_MKITEM(10) | 0x1c000000)
1596#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address11 \
1597 (P80211DID_MKSECTION(2) | \
1598 P80211DID_MKGROUP(3) | \
1599 P80211DID_MKITEM(11) | 0x1c000000)
1600#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address12 \
1601 (P80211DID_MKSECTION(2) | \
1602 P80211DID_MKGROUP(3) | \
1603 P80211DID_MKITEM(12) | 0x1c000000)
1604#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address13 \
1605 (P80211DID_MKSECTION(2) | \
1606 P80211DID_MKGROUP(3) | \
1607 P80211DID_MKITEM(13) | 0x1c000000)
1608#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address14 \
1609 (P80211DID_MKSECTION(2) | \
1610 P80211DID_MKGROUP(3) | \
1611 P80211DID_MKITEM(14) | 0x1c000000)
1612#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address15 \
1613 (P80211DID_MKSECTION(2) | \
1614 P80211DID_MKGROUP(3) | \
1615 P80211DID_MKITEM(15) | 0x1c000000)
1616#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address16 \
1617 (P80211DID_MKSECTION(2) | \
1618 P80211DID_MKGROUP(3) | \
1619 P80211DID_MKITEM(16) | 0x1c000000)
1620#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address17 \
1621 (P80211DID_MKSECTION(2) | \
1622 P80211DID_MKGROUP(3) | \
1623 P80211DID_MKITEM(17) | 0x1c000000)
1624#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address18 \
1625 (P80211DID_MKSECTION(2) | \
1626 P80211DID_MKGROUP(3) | \
1627 P80211DID_MKITEM(18) | 0x1c000000)
1628#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address19 \
1629 (P80211DID_MKSECTION(2) | \
1630 P80211DID_MKGROUP(3) | \
1631 P80211DID_MKITEM(19) | 0x1c000000)
1632#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address20 \
1633 (P80211DID_MKSECTION(2) | \
1634 P80211DID_MKGROUP(3) | \
1635 P80211DID_MKITEM(20) | 0x1c000000)
1636#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address21 \
1637 (P80211DID_MKSECTION(2) | \
1638 P80211DID_MKGROUP(3) | \
1639 P80211DID_MKITEM(21) | 0x1c000000)
1640#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address22 \
1641 (P80211DID_MKSECTION(2) | \
1642 P80211DID_MKGROUP(3) | \
1643 P80211DID_MKITEM(22) | 0x1c000000)
1644#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address23 \
1645 (P80211DID_MKSECTION(2) | \
1646 P80211DID_MKGROUP(3) | \
1647 P80211DID_MKITEM(23) | 0x1c000000)
1648#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address24 \
1649 (P80211DID_MKSECTION(2) | \
1650 P80211DID_MKGROUP(3) | \
1651 P80211DID_MKITEM(24) | 0x1c000000)
1652#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address25 \
1653 (P80211DID_MKSECTION(2) | \
1654 P80211DID_MKGROUP(3) | \
1655 P80211DID_MKITEM(25) | 0x1c000000)
1656#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address26 \
1657 (P80211DID_MKSECTION(2) | \
1658 P80211DID_MKGROUP(3) | \
1659 P80211DID_MKITEM(26) | 0x1c000000)
1660#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address27 \
1661 (P80211DID_MKSECTION(2) | \
1662 P80211DID_MKGROUP(3) | \
1663 P80211DID_MKITEM(27) | 0x1c000000)
1664#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address28 \
1665 (P80211DID_MKSECTION(2) | \
1666 P80211DID_MKGROUP(3) | \
1667 P80211DID_MKITEM(28) | 0x1c000000)
1668#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address29 \
1669 (P80211DID_MKSECTION(2) | \
1670 P80211DID_MKGROUP(3) | \
1671 P80211DID_MKITEM(29) | 0x1c000000)
1672#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address30 \
1673 (P80211DID_MKSECTION(2) | \
1674 P80211DID_MKGROUP(3) | \
1675 P80211DID_MKITEM(30) | 0x1c000000)
1676#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address31 \
1677 (P80211DID_MKSECTION(2) | \
1678 P80211DID_MKGROUP(3) | \
1679 P80211DID_MKITEM(31) | 0x1c000000)
1680#define DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address32 \
1681 (P80211DID_MKSECTION(2) | \
1682 P80211DID_MKGROUP(3) | \
1683 P80211DID_MKITEM(32) | 0x1c000000)
1684#define DIDmib_cat_dot11phy \
1685 P80211DID_MKSECTION(3)
1686#define DIDmib_dot11phy_dot11PhyOperationTable \
1687 (P80211DID_MKSECTION(3) | \
1688 P80211DID_MKGROUP(1))
1689#define DIDmib_dot11phy_dot11PhyOperationTable_dot11PHYType \
1690 (P80211DID_MKSECTION(3) | \
1691 P80211DID_MKGROUP(1) | \
1692 P80211DID_MKITEM(1) | 0x10000000)
1693#define DIDmib_dot11phy_dot11PhyOperationTable_dot11CurrentRegDomain \
1694 (P80211DID_MKSECTION(3) | \
1695 P80211DID_MKGROUP(1) | \
1696 P80211DID_MKITEM(2) | 0x18000000)
1697#define DIDmib_dot11phy_dot11PhyOperationTable_dot11TempType \
1698 (P80211DID_MKSECTION(3) | \
1699 P80211DID_MKGROUP(1) | \
1700 P80211DID_MKITEM(3) | 0x10000000)
1701#define DIDmib_dot11phy_dot11PhyOperationTable_dot11ChannelAgilityPresent \
1702 (P80211DID_MKSECTION(3) | \
1703 P80211DID_MKGROUP(1) | \
1704 P80211DID_MKITEM(4) | 0x10000000)
1705#define DIDmib_dot11phy_dot11PhyOperationTable_dot11ChannelAgilityEnabled \
1706 (P80211DID_MKSECTION(3) | \
1707 P80211DID_MKGROUP(1) | \
1708 P80211DID_MKITEM(5) | 0x10000000)
1709#define DIDmib_dot11phy_dot11PhyOperationTable_dot11ShortPreambleEnabled \
1710 (P80211DID_MKSECTION(3) | \
1711 P80211DID_MKGROUP(1) | \
1712 P80211DID_MKITEM(6) | 0x10000000)
1713#define DIDmib_dot11phy_dot11PhyAntennaTable \
1714 (P80211DID_MKSECTION(3) | \
1715 P80211DID_MKGROUP(2))
1716#define DIDmib_dot11phy_dot11PhyAntennaTable_dot11CurrentTxAntenna \
1717 (P80211DID_MKSECTION(3) | \
1718 P80211DID_MKGROUP(2) | \
1719 P80211DID_MKITEM(1) | 0x18000000)
1720#define DIDmib_dot11phy_dot11PhyAntennaTable_dot11DiversitySupport \
1721 (P80211DID_MKSECTION(3) | \
1722 P80211DID_MKGROUP(2) | \
1723 P80211DID_MKITEM(2) | 0x10000000)
1724#define DIDmib_dot11phy_dot11PhyAntennaTable_dot11CurrentRxAntenna \
1725 (P80211DID_MKSECTION(3) | \
1726 P80211DID_MKGROUP(2) | \
1727 P80211DID_MKITEM(3) | 0x18000000)
1728#define DIDmib_dot11phy_dot11PhyTxPowerTable \
1729 (P80211DID_MKSECTION(3) | \
1730 P80211DID_MKGROUP(3))
1731#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11NumberSupportedPowerLevels \
1732 (P80211DID_MKSECTION(3) | \
1733 P80211DID_MKGROUP(3) | \
1734 P80211DID_MKITEM(1) | 0x10000000)
1735#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel1 \
1736 (P80211DID_MKSECTION(3) | \
1737 P80211DID_MKGROUP(3) | \
1738 P80211DID_MKITEM(2) | 0x10000000)
1739#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel2 \
1740 (P80211DID_MKSECTION(3) | \
1741 P80211DID_MKGROUP(3) | \
1742 P80211DID_MKITEM(3) | 0x10000000)
1743#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel3 \
1744 (P80211DID_MKSECTION(3) | \
1745 P80211DID_MKGROUP(3) | \
1746 P80211DID_MKITEM(4) | 0x10000000)
1747#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel4 \
1748 (P80211DID_MKSECTION(3) | \
1749 P80211DID_MKGROUP(3) | \
1750 P80211DID_MKITEM(5) | 0x10000000)
1751#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel5 \
1752 (P80211DID_MKSECTION(3) | \
1753 P80211DID_MKGROUP(3) | \
1754 P80211DID_MKITEM(6) | 0x10000000)
1755#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel6 \
1756 (P80211DID_MKSECTION(3) | \
1757 P80211DID_MKGROUP(3) | \
1758 P80211DID_MKITEM(7) | 0x10000000)
1759#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel7 \
1760 (P80211DID_MKSECTION(3) | \
1761 P80211DID_MKGROUP(3) | \
1762 P80211DID_MKITEM(8) | 0x10000000)
1763#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8 \
1764 (P80211DID_MKSECTION(3) | \
1765 P80211DID_MKGROUP(3) | \
1766 P80211DID_MKITEM(9) | 0x10000000)
1767#define DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel \
1768 (P80211DID_MKSECTION(3) | \
1769 P80211DID_MKGROUP(3) | \
1770 P80211DID_MKITEM(10) | 0x18000000)
1771#define DIDmib_dot11phy_dot11PhyFHSSTable \
1772 (P80211DID_MKSECTION(3) | \
1773 P80211DID_MKGROUP(4))
1774#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11HopTime \
1775 (P80211DID_MKSECTION(3) | \
1776 P80211DID_MKGROUP(4) | \
1777 P80211DID_MKITEM(1) | 0x10000000)
1778#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentChannelNumber \
1779 (P80211DID_MKSECTION(3) | \
1780 P80211DID_MKGROUP(4) | \
1781 P80211DID_MKITEM(2) | 0x18000000)
1782#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11MaxDwellTime \
1783 (P80211DID_MKSECTION(3) | \
1784 P80211DID_MKGROUP(4) | \
1785 P80211DID_MKITEM(3) | 0x10000000)
1786#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentDwellTime \
1787 (P80211DID_MKSECTION(3) | \
1788 P80211DID_MKGROUP(4) | \
1789 P80211DID_MKITEM(4) | 0x18000000)
1790#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentSet \
1791 (P80211DID_MKSECTION(3) | \
1792 P80211DID_MKGROUP(4) | \
1793 P80211DID_MKITEM(5) | 0x18000000)
1794#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentPattern \
1795 (P80211DID_MKSECTION(3) | \
1796 P80211DID_MKGROUP(4) | \
1797 P80211DID_MKITEM(6) | 0x18000000)
1798#define DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentIndex \
1799 (P80211DID_MKSECTION(3) | \
1800 P80211DID_MKGROUP(4) | \
1801 P80211DID_MKITEM(7) | 0x18000000)
1802#define DIDmib_dot11phy_dot11PhyDSSSTable \
1803 (P80211DID_MKSECTION(3) | \
1804 P80211DID_MKGROUP(5))
1805#define DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel \
1806 (P80211DID_MKSECTION(3) | \
1807 P80211DID_MKGROUP(5) | \
1808 P80211DID_MKITEM(1) | 0x10000000)
1809#define DIDmib_dot11phy_dot11PhyDSSSTable_dot11CCAModeSupported \
1810 (P80211DID_MKSECTION(3) | \
1811 P80211DID_MKGROUP(5) | \
1812 P80211DID_MKITEM(2) | 0x10000000)
1813#define DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentCCAMode \
1814 (P80211DID_MKSECTION(3) | \
1815 P80211DID_MKGROUP(5) | \
1816 P80211DID_MKITEM(3) | 0x10000000)
1817#define DIDmib_dot11phy_dot11PhyDSSSTable_dot11EDThreshold \
1818 (P80211DID_MKSECTION(3) | \
1819 P80211DID_MKGROUP(5) | \
1820 P80211DID_MKITEM(4) | 0x18000000)
1821#define DIDmib_dot11phy_dot11PhyDSSSTable_dot11ShortPreambleOptionImplemented \
1822 (P80211DID_MKSECTION(3) | \
1823 P80211DID_MKGROUP(5) | \
1824 P80211DID_MKITEM(5) | 0x10000000)
1825#define DIDmib_dot11phy_dot11PhyDSSSTable_dot11PBCCOptionImplemented \
1826 (P80211DID_MKSECTION(3) | \
1827 P80211DID_MKGROUP(5) | \
1828 P80211DID_MKITEM(6) | 0x10000000)
1829#define DIDmib_dot11phy_dot11PhyIRTable \
1830 (P80211DID_MKSECTION(3) | \
1831 P80211DID_MKGROUP(6))
1832#define DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogTimerMax \
1833 (P80211DID_MKSECTION(3) | \
1834 P80211DID_MKGROUP(6) | \
1835 P80211DID_MKITEM(1) | 0x18000000)
1836#define DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogCountMax \
1837 (P80211DID_MKSECTION(3) | \
1838 P80211DID_MKGROUP(6) | \
1839 P80211DID_MKITEM(2) | 0x18000000)
1840#define DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogTimerMin \
1841 (P80211DID_MKSECTION(3) | \
1842 P80211DID_MKGROUP(6) | \
1843 P80211DID_MKITEM(3) | 0x18000000)
1844#define DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogCountMin \
1845 (P80211DID_MKSECTION(3) | \
1846 P80211DID_MKGROUP(6) | \
1847 P80211DID_MKITEM(4) | 0x18000000)
1848#define DIDmib_dot11phy_dot11RegDomainsSupportedTable \
1849 (P80211DID_MKSECTION(3) | \
1850 P80211DID_MKGROUP(7))
1851#define DIDmib_dot11phy_dot11RegDomainsSupportedTable_dot11RegDomainsSupportIndex \
1852 (P80211DID_MKSECTION(3) | \
1853 P80211DID_MKGROUP(7) | \
1854 P80211DID_MKITEM(1) | 0x1c000000)
1855#define DIDmib_dot11phy_dot11RegDomainsSupportedTable_dot11RegDomainsSupportValue \
1856 (P80211DID_MKSECTION(3) | \
1857 P80211DID_MKGROUP(7) | \
1858 P80211DID_MKITEM(2) | 0x14000000)
1859#define DIDmib_dot11phy_dot11AntennasListTable \
1860 (P80211DID_MKSECTION(3) | \
1861 P80211DID_MKGROUP(8))
1862#define DIDmib_dot11phy_dot11AntennasListTable_dot11AntennaListIndex \
1863 (P80211DID_MKSECTION(3) | \
1864 P80211DID_MKGROUP(8) | \
1865 P80211DID_MKITEM(1) | 0x1c000000)
1866#define DIDmib_dot11phy_dot11AntennasListTable_dot11SupportedTxAntenna \
1867 (P80211DID_MKSECTION(3) | \
1868 P80211DID_MKGROUP(8) | \
1869 P80211DID_MKITEM(2) | 0x1c000000)
1870#define DIDmib_dot11phy_dot11AntennasListTable_dot11SupportedRxAntenna \
1871 (P80211DID_MKSECTION(3) | \
1872 P80211DID_MKGROUP(8) | \
1873 P80211DID_MKITEM(3) | 0x1c000000)
1874#define DIDmib_dot11phy_dot11AntennasListTable_dot11DiversitySelectionRx \
1875 (P80211DID_MKSECTION(3) | \
1876 P80211DID_MKGROUP(8) | \
1877 P80211DID_MKITEM(4) | 0x1c000000)
1878#define DIDmib_dot11phy_dot11SupportedDataRatesTxTable \
1879 (P80211DID_MKSECTION(3) | \
1880 P80211DID_MKGROUP(9))
1881#define DIDmib_dot11phy_dot11SupportedDataRatesTxTable_dot11SupportedDataRatesTxIndex \
1882 (P80211DID_MKSECTION(3) | \
1883 P80211DID_MKGROUP(9) | \
1884 P80211DID_MKITEM(1) | 0x1c000000)
1885#define DIDmib_dot11phy_dot11SupportedDataRatesTxTable_dot11SupportedDataRatesTxValue \
1886 (P80211DID_MKSECTION(3) | \
1887 P80211DID_MKGROUP(9) | \
1888 P80211DID_MKITEM(2) | 0x14000000)
1889#define DIDmib_dot11phy_dot11SupportedDataRatesRxTable \
1890 (P80211DID_MKSECTION(3) | \
1891 P80211DID_MKGROUP(10))
1892#define DIDmib_dot11phy_dot11SupportedDataRatesRxTable_dot11SupportedDataRatesRxIndex \
1893 (P80211DID_MKSECTION(3) | \
1894 P80211DID_MKGROUP(10) | \
1895 P80211DID_MKITEM(1) | 0x1c000000)
1896#define DIDmib_dot11phy_dot11SupportedDataRatesRxTable_dot11SupportedDataRatesRxValue \
1897 (P80211DID_MKSECTION(3) | \
1898 P80211DID_MKGROUP(10) | \
1899 P80211DID_MKITEM(2) | 0x14000000)
1900#define DIDmib_cat_lnx \
1901 P80211DID_MKSECTION(4)
1902#define DIDmib_lnx_lnxConfigTable \
1903 (P80211DID_MKSECTION(4) | \
1904 P80211DID_MKGROUP(1))
1905#define DIDmib_lnx_lnxConfigTable_lnxRSNAIE \
1906 (P80211DID_MKSECTION(4) | \
1907 P80211DID_MKGROUP(1) | \
1908 P80211DID_MKITEM(1) | 0x18000000)
1909#define DIDmib_cat_p2 \
1910 P80211DID_MKSECTION(5)
1911#define DIDmib_p2_p2Table \
1912 (P80211DID_MKSECTION(5) | \
1913 P80211DID_MKGROUP(1))
1914#define DIDmib_p2_p2Table_p2MMTx \
1915 (P80211DID_MKSECTION(5) | \
1916 P80211DID_MKGROUP(1) | \
1917 P80211DID_MKITEM(1) | 0x18000000)
1918#define DIDmib_p2_p2Table_p2EarlyBeacon \
1919 (P80211DID_MKSECTION(5) | \
1920 P80211DID_MKGROUP(1) | \
1921 P80211DID_MKITEM(2) | 0x18000000)
1922#define DIDmib_p2_p2Table_p2ReceivedFrameStatistics \
1923 (P80211DID_MKSECTION(5) | \
1924 P80211DID_MKGROUP(1) | \
1925 P80211DID_MKITEM(3) | 0x10000000)
1926#define DIDmib_p2_p2Table_p2CommunicationTallies \
1927 (P80211DID_MKSECTION(5) | \
1928 P80211DID_MKGROUP(1) | \
1929 P80211DID_MKITEM(4) | 0x10000000)
1930#define DIDmib_p2_p2Table_p2Authenticated \
1931 (P80211DID_MKSECTION(5) | \
1932 P80211DID_MKGROUP(1) | \
1933 P80211DID_MKITEM(5) | 0x10000000)
1934#define DIDmib_p2_p2Table_p2Associated \
1935 (P80211DID_MKSECTION(5) | \
1936 P80211DID_MKGROUP(1) | \
1937 P80211DID_MKITEM(6) | 0x10000000)
1938#define DIDmib_p2_p2Table_p2PowerSaveUserCount \
1939 (P80211DID_MKSECTION(5) | \
1940 P80211DID_MKGROUP(1) | \
1941 P80211DID_MKITEM(7) | 0x10000000)
1942#define DIDmib_p2_p2Table_p2Comment \
1943 (P80211DID_MKSECTION(5) | \
1944 P80211DID_MKGROUP(1) | \
1945 P80211DID_MKITEM(8) | 0x18000000)
1946#define DIDmib_p2_p2Table_p2AccessMode \
1947 (P80211DID_MKSECTION(5) | \
1948 P80211DID_MKGROUP(1) | \
1949 P80211DID_MKITEM(9) | 0x18000000)
1950#define DIDmib_p2_p2Table_p2AccessAllow \
1951 (P80211DID_MKSECTION(5) | \
1952 P80211DID_MKGROUP(1) | \
1953 P80211DID_MKITEM(10) | 0x18000000)
1954#define DIDmib_p2_p2Table_p2AccessDeny \
1955 (P80211DID_MKSECTION(5) | \
1956 P80211DID_MKGROUP(1) | \
1957 P80211DID_MKITEM(11) | 0x18000000)
1958#define DIDmib_p2_p2Table_p2ChannelInfoResults \
1959 (P80211DID_MKSECTION(5) | \
1960 P80211DID_MKGROUP(1) | \
1961 P80211DID_MKITEM(12) | 0x10000000)
1962#define DIDmib_p2_p2Static \
1963 (P80211DID_MKSECTION(5) | \
1964 P80211DID_MKGROUP(2))
1965#define DIDmib_p2_p2Static_p2CnfPortType \
1966 (P80211DID_MKSECTION(5) | \
1967 P80211DID_MKGROUP(2) | \
1968 P80211DID_MKITEM(1) | 0x18000000)
1969#define DIDmib_p2_p2Static_p2CnfOwnMACAddress \
1970 (P80211DID_MKSECTION(5) | \
1971 P80211DID_MKGROUP(2) | \
1972 P80211DID_MKITEM(2) | 0x18000000)
1973#define DIDmib_p2_p2Static_p2CnfDesiredSSID \
1974 (P80211DID_MKSECTION(5) | \
1975 P80211DID_MKGROUP(2) | \
1976 P80211DID_MKITEM(3) | 0x18000000)
1977#define DIDmib_p2_p2Static_p2CnfOwnChannel \
1978 (P80211DID_MKSECTION(5) | \
1979 P80211DID_MKGROUP(2) | \
1980 P80211DID_MKITEM(4) | 0x18000000)
1981#define DIDmib_p2_p2Static_p2CnfOwnSSID \
1982 (P80211DID_MKSECTION(5) | \
1983 P80211DID_MKGROUP(2) | \
1984 P80211DID_MKITEM(5) | 0x18000000)
1985#define DIDmib_p2_p2Static_p2CnfOwnATIMWindow \
1986 (P80211DID_MKSECTION(5) | \
1987 P80211DID_MKGROUP(2) | \
1988 P80211DID_MKITEM(6) | 0x18000000)
1989#define DIDmib_p2_p2Static_p2CnfSystemScale \
1990 (P80211DID_MKSECTION(5) | \
1991 P80211DID_MKGROUP(2) | \
1992 P80211DID_MKITEM(7) | 0x18000000)
1993#define DIDmib_p2_p2Static_p2CnfMaxDataLength \
1994 (P80211DID_MKSECTION(5) | \
1995 P80211DID_MKGROUP(2) | \
1996 P80211DID_MKITEM(8) | 0x18000000)
1997#define DIDmib_p2_p2Static_p2CnfWDSAddress \
1998 (P80211DID_MKSECTION(5) | \
1999 P80211DID_MKGROUP(2) | \
2000 P80211DID_MKITEM(9) | 0x18000000)
2001#define DIDmib_p2_p2Static_p2CnfPMEnabled \
2002 (P80211DID_MKSECTION(5) | \
2003 P80211DID_MKGROUP(2) | \
2004 P80211DID_MKITEM(10) | 0x18000000)
2005#define DIDmib_p2_p2Static_p2CnfPMEPS \
2006 (P80211DID_MKSECTION(5) | \
2007 P80211DID_MKGROUP(2) | \
2008 P80211DID_MKITEM(11) | 0x18000000)
2009#define DIDmib_p2_p2Static_p2CnfMulticastReceive \
2010 (P80211DID_MKSECTION(5) | \
2011 P80211DID_MKGROUP(2) | \
2012 P80211DID_MKITEM(12) | 0x18000000)
2013#define DIDmib_p2_p2Static_p2CnfMaxSleepDuration \
2014 (P80211DID_MKSECTION(5) | \
2015 P80211DID_MKGROUP(2) | \
2016 P80211DID_MKITEM(13) | 0x18000000)
2017#define DIDmib_p2_p2Static_p2CnfPMHoldoverDuration \
2018 (P80211DID_MKSECTION(5) | \
2019 P80211DID_MKGROUP(2) | \
2020 P80211DID_MKITEM(14) | 0x18000000)
2021#define DIDmib_p2_p2Static_p2CnfOwnName \
2022 (P80211DID_MKSECTION(5) | \
2023 P80211DID_MKGROUP(2) | \
2024 P80211DID_MKITEM(15) | 0x18000000)
2025#define DIDmib_p2_p2Static_p2CnfOwnDTIMPeriod \
2026 (P80211DID_MKSECTION(5) | \
2027 P80211DID_MKGROUP(2) | \
2028 P80211DID_MKITEM(16) | 0x18000000)
2029#define DIDmib_p2_p2Static_p2CnfWDSAddress1 \
2030 (P80211DID_MKSECTION(5) | \
2031 P80211DID_MKGROUP(2) | \
2032 P80211DID_MKITEM(17) | 0x18000000)
2033#define DIDmib_p2_p2Static_p2CnfWDSAddress2 \
2034 (P80211DID_MKSECTION(5) | \
2035 P80211DID_MKGROUP(2) | \
2036 P80211DID_MKITEM(18) | 0x18000000)
2037#define DIDmib_p2_p2Static_p2CnfWDSAddress3 \
2038 (P80211DID_MKSECTION(5) | \
2039 P80211DID_MKGROUP(2) | \
2040 P80211DID_MKITEM(19) | 0x18000000)
2041#define DIDmib_p2_p2Static_p2CnfWDSAddress4 \
2042 (P80211DID_MKSECTION(5) | \
2043 P80211DID_MKGROUP(2) | \
2044 P80211DID_MKITEM(20) | 0x18000000)
2045#define DIDmib_p2_p2Static_p2CnfWDSAddress5 \
2046 (P80211DID_MKSECTION(5) | \
2047 P80211DID_MKGROUP(2) | \
2048 P80211DID_MKITEM(21) | 0x18000000)
2049#define DIDmib_p2_p2Static_p2CnfWDSAddress6 \
2050 (P80211DID_MKSECTION(5) | \
2051 P80211DID_MKGROUP(2) | \
2052 P80211DID_MKITEM(22) | 0x18000000)
2053#define DIDmib_p2_p2Static_p2CnfMulticastPMBuffering \
2054 (P80211DID_MKSECTION(5) | \
2055 P80211DID_MKGROUP(2) | \
2056 P80211DID_MKITEM(23) | 0x18000000)
2057#define DIDmib_p2_p2Static_p2CnfWEPDefaultKeyID \
2058 (P80211DID_MKSECTION(5) | \
2059 P80211DID_MKGROUP(2) | \
2060 P80211DID_MKITEM(24) | 0x18000000)
2061#define DIDmib_p2_p2Static_p2CnfWEPDefaultKey0 \
2062 (P80211DID_MKSECTION(5) | \
2063 P80211DID_MKGROUP(2) | \
2064 P80211DID_MKITEM(25) | 0x08000000)
2065#define DIDmib_p2_p2Static_p2CnfWEPDefaultKey1 \
2066 (P80211DID_MKSECTION(5) | \
2067 P80211DID_MKGROUP(2) | \
2068 P80211DID_MKITEM(26) | 0x08000000)
2069#define DIDmib_p2_p2Static_p2CnfWEPDefaultKey2 \
2070 (P80211DID_MKSECTION(5) | \
2071 P80211DID_MKGROUP(2) | \
2072 P80211DID_MKITEM(27) | 0x08000000)
2073#define DIDmib_p2_p2Static_p2CnfWEPDefaultKey3 \
2074 (P80211DID_MKSECTION(5) | \
2075 P80211DID_MKGROUP(2) | \
2076 P80211DID_MKITEM(28) | 0x08000000)
2077#define DIDmib_p2_p2Static_p2CnfWEPFlags \
2078 (P80211DID_MKSECTION(5) | \
2079 P80211DID_MKGROUP(2) | \
2080 P80211DID_MKITEM(29) | 0x18000000)
2081#define DIDmib_p2_p2Static_p2CnfAuthentication \
2082 (P80211DID_MKSECTION(5) | \
2083 P80211DID_MKGROUP(2) | \
2084 P80211DID_MKITEM(30) | 0x18000000)
2085#define DIDmib_p2_p2Static_p2CnfMaxAssociatedStations \
2086 (P80211DID_MKSECTION(5) | \
2087 P80211DID_MKGROUP(2) | \
2088 P80211DID_MKITEM(31) | 0x18000000)
2089#define DIDmib_p2_p2Static_p2CnfTxControl \
2090 (P80211DID_MKSECTION(5) | \
2091 P80211DID_MKGROUP(2) | \
2092 P80211DID_MKITEM(32) | 0x18000000)
2093#define DIDmib_p2_p2Static_p2CnfRoamingMode \
2094 (P80211DID_MKSECTION(5) | \
2095 P80211DID_MKGROUP(2) | \
2096 P80211DID_MKITEM(33) | 0x18000000)
2097#define DIDmib_p2_p2Static_p2CnfHostAuthentication \
2098 (P80211DID_MKSECTION(5) | \
2099 P80211DID_MKGROUP(2) | \
2100 P80211DID_MKITEM(34) | 0x18000000)
2101#define DIDmib_p2_p2Static_p2CnfRcvCrcError \
2102 (P80211DID_MKSECTION(5) | \
2103 P80211DID_MKGROUP(2) | \
2104 P80211DID_MKITEM(35) | 0x18000000)
2105#define DIDmib_p2_p2Static_p2CnfAltRetryCount \
2106 (P80211DID_MKSECTION(5) | \
2107 P80211DID_MKGROUP(2) | \
2108 P80211DID_MKITEM(36) | 0x18000000)
2109#define DIDmib_p2_p2Static_p2CnfBeaconInterval \
2110 (P80211DID_MKSECTION(5) | \
2111 P80211DID_MKGROUP(2) | \
2112 P80211DID_MKITEM(37) | 0x18000000)
2113#define DIDmib_p2_p2Static_p2CnfMediumOccupancyLimit \
2114 (P80211DID_MKSECTION(5) | \
2115 P80211DID_MKGROUP(2) | \
2116 P80211DID_MKITEM(38) | 0x18000000)
2117#define DIDmib_p2_p2Static_p2CnfCFPPeriod \
2118 (P80211DID_MKSECTION(5) | \
2119 P80211DID_MKGROUP(2) | \
2120 P80211DID_MKITEM(39) | 0x18000000)
2121#define DIDmib_p2_p2Static_p2CnfCFPMaxDuration \
2122 (P80211DID_MKSECTION(5) | \
2123 P80211DID_MKGROUP(2) | \
2124 P80211DID_MKITEM(40) | 0x18000000)
2125#define DIDmib_p2_p2Static_p2CnfCFPFlags \
2126 (P80211DID_MKSECTION(5) | \
2127 P80211DID_MKGROUP(2) | \
2128 P80211DID_MKITEM(41) | 0x18000000)
2129#define DIDmib_p2_p2Static_p2CnfSTAPCFInfo \
2130 (P80211DID_MKSECTION(5) | \
2131 P80211DID_MKGROUP(2) | \
2132 P80211DID_MKITEM(42) | 0x18000000)
2133#define DIDmib_p2_p2Static_p2CnfPriorityQUsage \
2134 (P80211DID_MKSECTION(5) | \
2135 P80211DID_MKGROUP(2) | \
2136 P80211DID_MKITEM(43) | 0x18000000)
2137#define DIDmib_p2_p2Static_p2CnfTIMCtrl \
2138 (P80211DID_MKSECTION(5) | \
2139 P80211DID_MKGROUP(2) | \
2140 P80211DID_MKITEM(44) | 0x18000000)
2141#define DIDmib_p2_p2Static_p2CnfThirty2Tally \
2142 (P80211DID_MKSECTION(5) | \
2143 P80211DID_MKGROUP(2) | \
2144 P80211DID_MKITEM(45) | 0x18000000)
2145#define DIDmib_p2_p2Static_p2CnfEnhSecurity \
2146 (P80211DID_MKSECTION(5) | \
2147 P80211DID_MKGROUP(2) | \
2148 P80211DID_MKITEM(46) | 0x18000000)
2149#define DIDmib_p2_p2Static_p2CnfShortPreamble \
2150 (P80211DID_MKSECTION(5) | \
2151 P80211DID_MKGROUP(2) | \
2152 P80211DID_MKITEM(47) | 0x18000000)
2153#define DIDmib_p2_p2Static_p2CnfExcludeLongPreamble \
2154 (P80211DID_MKSECTION(5) | \
2155 P80211DID_MKGROUP(2) | \
2156 P80211DID_MKITEM(48) | 0x18000000)
2157#define DIDmib_p2_p2Static_p2CnfAuthenticationRspTO \
2158 (P80211DID_MKSECTION(5) | \
2159 P80211DID_MKGROUP(2) | \
2160 P80211DID_MKITEM(49) | 0x18000000)
2161#define DIDmib_p2_p2Static_p2CnfBasicRates \
2162 (P80211DID_MKSECTION(5) | \
2163 P80211DID_MKGROUP(2) | \
2164 P80211DID_MKITEM(50) | 0x18000000)
2165#define DIDmib_p2_p2Static_p2CnfSupportedRates \
2166 (P80211DID_MKSECTION(5) | \
2167 P80211DID_MKGROUP(2) | \
2168 P80211DID_MKITEM(51) | 0x18000000)
2169#define DIDmib_p2_p2Dynamic \
2170 (P80211DID_MKSECTION(5) | \
2171 P80211DID_MKGROUP(3))
2172#define DIDmib_p2_p2Dynamic_p2CreateIBSS \
2173 (P80211DID_MKSECTION(5) | \
2174 P80211DID_MKGROUP(3) | \
2175 P80211DID_MKITEM(1) | 0x18000000)
2176#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold \
2177 (P80211DID_MKSECTION(5) | \
2178 P80211DID_MKGROUP(3) | \
2179 P80211DID_MKITEM(2) | 0x18000000)
2180#define DIDmib_p2_p2Dynamic_p2RTSThreshold \
2181 (P80211DID_MKSECTION(5) | \
2182 P80211DID_MKGROUP(3) | \
2183 P80211DID_MKITEM(3) | 0x18000000)
2184#define DIDmib_p2_p2Dynamic_p2TxRateControl \
2185 (P80211DID_MKSECTION(5) | \
2186 P80211DID_MKGROUP(3) | \
2187 P80211DID_MKITEM(4) | 0x18000000)
2188#define DIDmib_p2_p2Dynamic_p2PromiscuousMode \
2189 (P80211DID_MKSECTION(5) | \
2190 P80211DID_MKGROUP(3) | \
2191 P80211DID_MKITEM(5) | 0x18000000)
2192#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold0 \
2193 (P80211DID_MKSECTION(5) | \
2194 P80211DID_MKGROUP(3) | \
2195 P80211DID_MKITEM(6) | 0x18000000)
2196#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold1 \
2197 (P80211DID_MKSECTION(5) | \
2198 P80211DID_MKGROUP(3) | \
2199 P80211DID_MKITEM(7) | 0x18000000)
2200#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold2 \
2201 (P80211DID_MKSECTION(5) | \
2202 P80211DID_MKGROUP(3) | \
2203 P80211DID_MKITEM(8) | 0x18000000)
2204#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold3 \
2205 (P80211DID_MKSECTION(5) | \
2206 P80211DID_MKGROUP(3) | \
2207 P80211DID_MKITEM(9) | 0x18000000)
2208#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold4 \
2209 (P80211DID_MKSECTION(5) | \
2210 P80211DID_MKGROUP(3) | \
2211 P80211DID_MKITEM(10) | 0x18000000)
2212#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold5 \
2213 (P80211DID_MKSECTION(5) | \
2214 P80211DID_MKGROUP(3) | \
2215 P80211DID_MKITEM(11) | 0x18000000)
2216#define DIDmib_p2_p2Dynamic_p2FragmentationThreshold6 \
2217 (P80211DID_MKSECTION(5) | \
2218 P80211DID_MKGROUP(3) | \
2219 P80211DID_MKITEM(12) | 0x18000000)
2220#define DIDmib_p2_p2Dynamic_p2RTSThreshold0 \
2221 (P80211DID_MKSECTION(5) | \
2222 P80211DID_MKGROUP(3) | \
2223 P80211DID_MKITEM(13) | 0x18000000)
2224#define DIDmib_p2_p2Dynamic_p2RTSThreshold1 \
2225 (P80211DID_MKSECTION(5) | \
2226 P80211DID_MKGROUP(3) | \
2227 P80211DID_MKITEM(14) | 0x18000000)
2228#define DIDmib_p2_p2Dynamic_p2RTSThreshold2 \
2229 (P80211DID_MKSECTION(5) | \
2230 P80211DID_MKGROUP(3) | \
2231 P80211DID_MKITEM(15) | 0x18000000)
2232#define DIDmib_p2_p2Dynamic_p2RTSThreshold3 \
2233 (P80211DID_MKSECTION(5) | \
2234 P80211DID_MKGROUP(3) | \
2235 P80211DID_MKITEM(16) | 0x18000000)
2236#define DIDmib_p2_p2Dynamic_p2RTSThreshold4 \
2237 (P80211DID_MKSECTION(5) | \
2238 P80211DID_MKGROUP(3) | \
2239 P80211DID_MKITEM(17) | 0x18000000)
2240#define DIDmib_p2_p2Dynamic_p2RTSThreshold5 \
2241 (P80211DID_MKSECTION(5) | \
2242 P80211DID_MKGROUP(3) | \
2243 P80211DID_MKITEM(18) | 0x18000000)
2244#define DIDmib_p2_p2Dynamic_p2RTSThreshold6 \
2245 (P80211DID_MKSECTION(5) | \
2246 P80211DID_MKGROUP(3) | \
2247 P80211DID_MKITEM(19) | 0x18000000)
2248#define DIDmib_p2_p2Dynamic_p2TxRateControl0 \
2249 (P80211DID_MKSECTION(5) | \
2250 P80211DID_MKGROUP(3) | \
2251 P80211DID_MKITEM(20) | 0x18000000)
2252#define DIDmib_p2_p2Dynamic_p2TxRateControl1 \
2253 (P80211DID_MKSECTION(5) | \
2254 P80211DID_MKGROUP(3) | \
2255 P80211DID_MKITEM(21) | 0x18000000)
2256#define DIDmib_p2_p2Dynamic_p2TxRateControl2 \
2257 (P80211DID_MKSECTION(5) | \
2258 P80211DID_MKGROUP(3) | \
2259 P80211DID_MKITEM(22) | 0x18000000)
2260#define DIDmib_p2_p2Dynamic_p2TxRateControl3 \
2261 (P80211DID_MKSECTION(5) | \
2262 P80211DID_MKGROUP(3) | \
2263 P80211DID_MKITEM(23) | 0x18000000)
2264#define DIDmib_p2_p2Dynamic_p2TxRateControl4 \
2265 (P80211DID_MKSECTION(5) | \
2266 P80211DID_MKGROUP(3) | \
2267 P80211DID_MKITEM(24) | 0x18000000)
2268#define DIDmib_p2_p2Dynamic_p2TxRateControl5 \
2269 (P80211DID_MKSECTION(5) | \
2270 P80211DID_MKGROUP(3) | \
2271 P80211DID_MKITEM(25) | 0x18000000)
2272#define DIDmib_p2_p2Dynamic_p2TxRateControl6 \
2273 (P80211DID_MKSECTION(5) | \
2274 P80211DID_MKGROUP(3) | \
2275 P80211DID_MKITEM(26) | 0x18000000)
2276#define DIDmib_p2_p2Behavior \
2277 (P80211DID_MKSECTION(5) | \
2278 P80211DID_MKGROUP(4))
2279#define DIDmib_p2_p2Behavior_p2TickTime \
2280 (P80211DID_MKSECTION(5) | \
2281 P80211DID_MKGROUP(4) | \
2282 P80211DID_MKITEM(1) | 0x18000000)
2283#define DIDmib_p2_p2NIC \
2284 (P80211DID_MKSECTION(5) | \
2285 P80211DID_MKGROUP(5))
2286#define DIDmib_p2_p2NIC_p2MaxLoadTime \
2287 (P80211DID_MKSECTION(5) | \
2288 P80211DID_MKGROUP(5) | \
2289 P80211DID_MKITEM(1) | 0x10000000)
2290#define DIDmib_p2_p2NIC_p2DLBufferPage \
2291 (P80211DID_MKSECTION(5) | \
2292 P80211DID_MKGROUP(5) | \
2293 P80211DID_MKITEM(2) | 0x10000000)
2294#define DIDmib_p2_p2NIC_p2DLBufferOffset \
2295 (P80211DID_MKSECTION(5) | \
2296 P80211DID_MKGROUP(5) | \
2297 P80211DID_MKITEM(3) | 0x10000000)
2298#define DIDmib_p2_p2NIC_p2DLBufferLength \
2299 (P80211DID_MKSECTION(5) | \
2300 P80211DID_MKGROUP(5) | \
2301 P80211DID_MKITEM(4) | 0x10000000)
2302#define DIDmib_p2_p2NIC_p2PRIIdentity \
2303 (P80211DID_MKSECTION(5) | \
2304 P80211DID_MKGROUP(5) | \
2305 P80211DID_MKITEM(5) | 0x10000000)
2306#define DIDmib_p2_p2NIC_p2PRISupRange \
2307 (P80211DID_MKSECTION(5) | \
2308 P80211DID_MKGROUP(5) | \
2309 P80211DID_MKITEM(6) | 0x10000000)
2310#define DIDmib_p2_p2NIC_p2CFIActRanges \
2311 (P80211DID_MKSECTION(5) | \
2312 P80211DID_MKGROUP(5) | \
2313 P80211DID_MKITEM(7) | 0x10000000)
2314#define DIDmib_p2_p2NIC_p2NICSerialNumber \
2315 (P80211DID_MKSECTION(5) | \
2316 P80211DID_MKGROUP(5) | \
2317 P80211DID_MKITEM(8) | 0x10000000)
2318#define DIDmib_p2_p2NIC_p2NICIdentity \
2319 (P80211DID_MKSECTION(5) | \
2320 P80211DID_MKGROUP(5) | \
2321 P80211DID_MKITEM(9) | 0x10000000)
2322#define DIDmib_p2_p2NIC_p2MFISupRange \
2323 (P80211DID_MKSECTION(5) | \
2324 P80211DID_MKGROUP(5) | \
2325 P80211DID_MKITEM(10) | 0x10000000)
2326#define DIDmib_p2_p2NIC_p2CFISupRange \
2327 (P80211DID_MKSECTION(5) | \
2328 P80211DID_MKGROUP(5) | \
2329 P80211DID_MKITEM(11) | 0x10000000)
2330#define DIDmib_p2_p2NIC_p2ChannelList \
2331 (P80211DID_MKSECTION(5) | \
2332 P80211DID_MKGROUP(5) | \
2333 P80211DID_MKITEM(12) | 0x10000000)
2334#define DIDmib_p2_p2NIC_p2RegulatoryDomains \
2335 (P80211DID_MKSECTION(5) | \
2336 P80211DID_MKGROUP(5) | \
2337 P80211DID_MKITEM(13) | 0x10000000)
2338#define DIDmib_p2_p2NIC_p2TempType \
2339 (P80211DID_MKSECTION(5) | \
2340 P80211DID_MKGROUP(5) | \
2341 P80211DID_MKITEM(14) | 0x10000000)
2342#define DIDmib_p2_p2NIC_p2STAIdentity \
2343 (P80211DID_MKSECTION(5) | \
2344 P80211DID_MKGROUP(5) | \
2345 P80211DID_MKITEM(15) | 0x10000000)
2346#define DIDmib_p2_p2NIC_p2STASupRange \
2347 (P80211DID_MKSECTION(5) | \
2348 P80211DID_MKGROUP(5) | \
2349 P80211DID_MKITEM(16) | 0x10000000)
2350#define DIDmib_p2_p2NIC_p2MFIActRanges \
2351 (P80211DID_MKSECTION(5) | \
2352 P80211DID_MKGROUP(5) | \
2353 P80211DID_MKITEM(17) | 0x10000000)
2354#define DIDmib_p2_p2NIC_p2STACFIActRanges \
2355 (P80211DID_MKSECTION(5) | \
2356 P80211DID_MKGROUP(5) | \
2357 P80211DID_MKITEM(18) | 0x10000000)
2358#define DIDmib_p2_p2NIC_p2BuildSequence \
2359 (P80211DID_MKSECTION(5) | \
2360 P80211DID_MKGROUP(5) | \
2361 P80211DID_MKITEM(19) | 0x10000000)
2362#define DIDmib_p2_p2NIC_p2PrimaryFWID \
2363 (P80211DID_MKSECTION(5) | \
2364 P80211DID_MKGROUP(5) | \
2365 P80211DID_MKITEM(20) | 0x10000000)
2366#define DIDmib_p2_p2NIC_p2SecondaryFWID \
2367 (P80211DID_MKSECTION(5) | \
2368 P80211DID_MKGROUP(5) | \
2369 P80211DID_MKITEM(21) | 0x10000000)
2370#define DIDmib_p2_p2NIC_p2TertiaryFWID \
2371 (P80211DID_MKSECTION(5) | \
2372 P80211DID_MKGROUP(5) | \
2373 P80211DID_MKITEM(22) | 0x10000000)
2374#define DIDmib_p2_p2MAC \
2375 (P80211DID_MKSECTION(5) | \
2376 P80211DID_MKGROUP(6))
2377#define DIDmib_p2_p2MAC_p2PortStatus \
2378 (P80211DID_MKSECTION(5) | \
2379 P80211DID_MKGROUP(6) | \
2380 P80211DID_MKITEM(1) | 0x10000000)
2381#define DIDmib_p2_p2MAC_p2CurrentSSID \
2382 (P80211DID_MKSECTION(5) | \
2383 P80211DID_MKGROUP(6) | \
2384 P80211DID_MKITEM(2) | 0x10000000)
2385#define DIDmib_p2_p2MAC_p2CurrentBSSID \
2386 (P80211DID_MKSECTION(5) | \
2387 P80211DID_MKGROUP(6) | \
2388 P80211DID_MKITEM(3) | 0x10000000)
2389#define DIDmib_p2_p2MAC_p2CommsQuality \
2390 (P80211DID_MKSECTION(5) | \
2391 P80211DID_MKGROUP(6) | \
2392 P80211DID_MKITEM(4) | 0x10000000)
2393#define DIDmib_p2_p2MAC_p2CommsQualityCQ \
2394 (P80211DID_MKSECTION(5) | \
2395 P80211DID_MKGROUP(6) | \
2396 P80211DID_MKITEM(5) | 0x10000000)
2397#define DIDmib_p2_p2MAC_p2CommsQualityASL \
2398 (P80211DID_MKSECTION(5) | \
2399 P80211DID_MKGROUP(6) | \
2400 P80211DID_MKITEM(6) | 0x10000000)
2401#define DIDmib_p2_p2MAC_p2CommsQualityANL \
2402 (P80211DID_MKSECTION(5) | \
2403 P80211DID_MKGROUP(6) | \
2404 P80211DID_MKITEM(7) | 0x10000000)
2405#define DIDmib_p2_p2MAC_p2dbmCommsQuality \
2406 (P80211DID_MKSECTION(5) | \
2407 P80211DID_MKGROUP(6) | \
2408 P80211DID_MKITEM(8) | 0x10000000)
2409#define DIDmib_p2_p2MAC_p2dbmCommsQualityCQ \
2410 (P80211DID_MKSECTION(5) | \
2411 P80211DID_MKGROUP(6) | \
2412 P80211DID_MKITEM(9) | 0x10000000)
2413#define DIDmib_p2_p2MAC_p2dbmCommsQualityASL \
2414 (P80211DID_MKSECTION(5) | \
2415 P80211DID_MKGROUP(6) | \
2416 P80211DID_MKITEM(10) | 0x10000000)
2417#define DIDmib_p2_p2MAC_p2dbmCommsQualityANL \
2418 (P80211DID_MKSECTION(5) | \
2419 P80211DID_MKGROUP(6) | \
2420 P80211DID_MKITEM(11) | 0x10000000)
2421#define DIDmib_p2_p2MAC_p2CurrentTxRate \
2422 (P80211DID_MKSECTION(5) | \
2423 P80211DID_MKGROUP(6) | \
2424 P80211DID_MKITEM(12) | 0x10000000)
2425#define DIDmib_p2_p2MAC_p2CurrentBeaconInterval \
2426 (P80211DID_MKSECTION(5) | \
2427 P80211DID_MKGROUP(6) | \
2428 P80211DID_MKITEM(13) | 0x10000000)
2429#define DIDmib_p2_p2MAC_p2StaCurrentScaleThresholds \
2430 (P80211DID_MKSECTION(5) | \
2431 P80211DID_MKGROUP(6) | \
2432 P80211DID_MKITEM(14) | 0x10000000)
2433#define DIDmib_p2_p2MAC_p2APCurrentScaleThresholds \
2434 (P80211DID_MKSECTION(5) | \
2435 P80211DID_MKGROUP(6) | \
2436 P80211DID_MKITEM(15) | 0x10000000)
2437#define DIDmib_p2_p2MAC_p2ProtocolRspTime \
2438 (P80211DID_MKSECTION(5) | \
2439 P80211DID_MKGROUP(6) | \
2440 P80211DID_MKITEM(16) | 0x10000000)
2441#define DIDmib_p2_p2MAC_p2ShortRetryLimit \
2442 (P80211DID_MKSECTION(5) | \
2443 P80211DID_MKGROUP(6) | \
2444 P80211DID_MKITEM(17) | 0x10000000)
2445#define DIDmib_p2_p2MAC_p2LongRetryLimit \
2446 (P80211DID_MKSECTION(5) | \
2447 P80211DID_MKGROUP(6) | \
2448 P80211DID_MKITEM(18) | 0x10000000)
2449#define DIDmib_p2_p2MAC_p2MaxTransmitLifetime \
2450 (P80211DID_MKSECTION(5) | \
2451 P80211DID_MKGROUP(6) | \
2452 P80211DID_MKITEM(19) | 0x10000000)
2453#define DIDmib_p2_p2MAC_p2MaxReceiveLifetime \
2454 (P80211DID_MKSECTION(5) | \
2455 P80211DID_MKGROUP(6) | \
2456 P80211DID_MKITEM(20) | 0x10000000)
2457#define DIDmib_p2_p2MAC_p2CFPollable \
2458 (P80211DID_MKSECTION(5) | \
2459 P80211DID_MKGROUP(6) | \
2460 P80211DID_MKITEM(21) | 0x10000000)
2461#define DIDmib_p2_p2MAC_p2AuthenticationAlgorithms \
2462 (P80211DID_MKSECTION(5) | \
2463 P80211DID_MKGROUP(6) | \
2464 P80211DID_MKITEM(22) | 0x10000000)
2465#define DIDmib_p2_p2MAC_p2PrivacyOptionImplemented \
2466 (P80211DID_MKSECTION(5) | \
2467 P80211DID_MKGROUP(6) | \
2468 P80211DID_MKITEM(23) | 0x10000000)
2469#define DIDmib_p2_p2MAC_p2CurrentTxRate1 \
2470 (P80211DID_MKSECTION(5) | \
2471 P80211DID_MKGROUP(6) | \
2472 P80211DID_MKITEM(24) | 0x10000000)
2473#define DIDmib_p2_p2MAC_p2CurrentTxRate2 \
2474 (P80211DID_MKSECTION(5) | \
2475 P80211DID_MKGROUP(6) | \
2476 P80211DID_MKITEM(25) | 0x10000000)
2477#define DIDmib_p2_p2MAC_p2CurrentTxRate3 \
2478 (P80211DID_MKSECTION(5) | \
2479 P80211DID_MKGROUP(6) | \
2480 P80211DID_MKITEM(26) | 0x10000000)
2481#define DIDmib_p2_p2MAC_p2CurrentTxRate4 \
2482 (P80211DID_MKSECTION(5) | \
2483 P80211DID_MKGROUP(6) | \
2484 P80211DID_MKITEM(27) | 0x10000000)
2485#define DIDmib_p2_p2MAC_p2CurrentTxRate5 \
2486 (P80211DID_MKSECTION(5) | \
2487 P80211DID_MKGROUP(6) | \
2488 P80211DID_MKITEM(28) | 0x10000000)
2489#define DIDmib_p2_p2MAC_p2CurrentTxRate6 \
2490 (P80211DID_MKSECTION(5) | \
2491 P80211DID_MKGROUP(6) | \
2492 P80211DID_MKITEM(29) | 0x10000000)
2493#define DIDmib_p2_p2MAC_p2OwnMACAddress \
2494 (P80211DID_MKSECTION(5) | \
2495 P80211DID_MKGROUP(6) | \
2496 P80211DID_MKITEM(30) | 0x10000000)
2497#define DIDmib_p2_p2Modem \
2498 (P80211DID_MKSECTION(5) | \
2499 P80211DID_MKGROUP(7))
2500#define DIDmib_p2_p2Modem_p2PHYType \
2501 (P80211DID_MKSECTION(5) | \
2502 P80211DID_MKGROUP(7) | \
2503 P80211DID_MKITEM(1) | 0x10000000)
2504#define DIDmib_p2_p2Modem_p2CurrentChannel \
2505 (P80211DID_MKSECTION(5) | \
2506 P80211DID_MKGROUP(7) | \
2507 P80211DID_MKITEM(2) | 0x10000000)
2508#define DIDmib_p2_p2Modem_p2CurrentPowerState \
2509 (P80211DID_MKSECTION(5) | \
2510 P80211DID_MKGROUP(7) | \
2511 P80211DID_MKITEM(3) | 0x10000000)
2512#define DIDmib_p2_p2Modem_p2CCAMode \
2513 (P80211DID_MKSECTION(5) | \
2514 P80211DID_MKGROUP(7) | \
2515 P80211DID_MKITEM(4) | 0x10000000)
2516#define DIDmib_p2_p2Modem_p2SupportedDataRates \
2517 (P80211DID_MKSECTION(5) | \
2518 P80211DID_MKGROUP(7) | \
2519 P80211DID_MKITEM(5) | 0x10000000)
2520#define DIDmib_p2_p2Modem_p2TxPowerMax \
2521 (P80211DID_MKSECTION(5) | \
2522 P80211DID_MKGROUP(7) | \
2523 P80211DID_MKITEM(6) | 0x18000000)
2524#endif
diff --git a/drivers/staging/wlan-ng/p80211metamib.h b/drivers/staging/wlan-ng/p80211metamib.h
new file mode 100644
index 00000000000..19867fd314e
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211metamib.h
@@ -0,0 +1,105 @@
1/* p80211metamib.h
2*
3* Macros, const, types, and funcs for p80211 mib metadata
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares some of the constants and types used in various
48* parts of the linux-wlan system.
49*
50* Notes:
51* - Constant values are always in HOST byte order.
52*
53* All functions and statics declared here are implemented in p80211types.c
54* --------------------------------------------------------------------
55*/
56
57#ifndef _P80211METAMIB_H
58#define _P80211METAMIB_H
59
60/*================================================================*/
61/* System Includes */
62
63/*================================================================*/
64/* Project Includes */
65
66#ifndef _WLAN_COMPAT_H
67#include "wlan_compat.h"
68#endif
69
70/*================================================================*/
71/* Constants */
72
73/*----------------------------------------------------------------*/
74/* */
75
76/*================================================================*/
77/* Macros */
78
79/*----------------------------------------------------------------*/
80/* */
81
82/*================================================================*/
83/* Types */
84
85/*----------------------------------------------------------------*/
86/* */
87
88/*================================================================*/
89/* Extern Declarations */
90
91/*----------------------------------------------------------------*/
92/* The following is the external declaration for the mib */
93/* category metadata list */
94
95extern catlistitem_t mib_catlist[];
96extern UINT32 mib_catlist_size;
97
98
99/*================================================================*/
100/* Function Declarations */
101
102/*----------------------------------------------------------------*/
103/* */
104
105#endif /* _P80211METAMIB_H */
diff --git a/drivers/staging/wlan-ng/p80211metamsg.h b/drivers/staging/wlan-ng/p80211metamsg.h
new file mode 100644
index 00000000000..4d6dfcc79b8
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211metamsg.h
@@ -0,0 +1,105 @@
1/* p80211metamsg.h
2*
3* Macros, const, types, and funcs for p80211 msg metadata
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares some of the constants and types used in various
48* parts of the linux-wlan system.
49*
50* Notes:
51* - Constant values are always in HOST byte order.
52*
53* All functions and statics declared here are implemented in p80211types.c
54* --------------------------------------------------------------------
55*/
56
57#ifndef _P80211METAMSG_H
58#define _P80211METAMSG_H
59
60/*================================================================*/
61/* System Includes */
62
63/*================================================================*/
64/* Project Includes */
65
66#ifndef _WLAN_COMPAT_H
67#include "wlan_compat.h"
68#endif
69
70/*================================================================*/
71/* Constants */
72
73/*----------------------------------------------------------------*/
74/* */
75
76/*================================================================*/
77/* Macros */
78
79/*----------------------------------------------------------------*/
80/* */
81
82/*================================================================*/
83/* Types */
84
85/*----------------------------------------------------------------*/
86/* */
87
88/*================================================================*/
89/* Extern Declarations */
90
91/*----------------------------------------------------------------*/
92/* The following is the external declaration for the message */
93/* category metadata list */
94
95extern catlistitem_t msg_catlist[];
96extern UINT32 msg_catlist_size;
97
98
99/*================================================================*/
100/* Function Declarations */
101
102/*----------------------------------------------------------------*/
103/* */
104
105#endif /* _P80211METAMSG_H */
diff --git a/drivers/staging/wlan-ng/p80211metastruct.h b/drivers/staging/wlan-ng/p80211metastruct.h
new file mode 100644
index 00000000000..715f4b2adc6
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211metastruct.h
@@ -0,0 +1,644 @@
1/* This file is GENERATED AUTOMATICALLY. DO NOT EDIT OR MODIFY.
2* --------------------------------------------------------------------
3*
4* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
5* --------------------------------------------------------------------
6*
7* linux-wlan
8*
9* The contents of this file are subject to the Mozilla Public
10* License Version 1.1 (the "License"); you may not use this file
11* except in compliance with the License. You may obtain a copy of
12* the License at http://www.mozilla.org/MPL/
13*
14* Software distributed under the License is distributed on an "AS
15* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
16* implied. See the License for the specific language governing
17* rights and limitations under the License.
18*
19* Alternatively, the contents of this file may be used under the
20* terms of the GNU Public License version 2 (the "GPL"), in which
21* case the provisions of the GPL are applicable instead of the
22* above. If you wish to allow the use of your version of this file
23* only under the terms of the GPL and not to allow others to use
24* your version of this file under the MPL, indicate your decision
25* by deleting the provisions above and replace them with the notice
26* and other provisions required by the GPL. If you do not delete
27* the provisions above, a recipient may use your version of this
28* file under either the MPL or the GPL.
29*
30* --------------------------------------------------------------------
31*
32* Inquiries regarding the linux-wlan Open Source project can be
33* made directly to:
34*
35* AbsoluteValue Systems Inc.
36* info@linux-wlan.com
37* http://www.linux-wlan.com
38*
39* --------------------------------------------------------------------
40*
41* Portions of the development of this software were funded by
42* Intersil Corporation as part of PRISM(R) chipset product development.
43*
44* --------------------------------------------------------------------
45*/
46
47#ifndef _P80211MKMETASTRUCT_H
48#define _P80211MKMETASTRUCT_H
49
50
51typedef struct p80211msg_dot11req_mibget
52{
53 UINT32 msgcode ;
54 UINT32 msglen ;
55 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
56 p80211item_unk392_t mibattribute ;
57 p80211item_uint32_t resultcode ;
58} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_mibget_t;
59
60typedef struct p80211msg_dot11req_mibset
61{
62 UINT32 msgcode ;
63 UINT32 msglen ;
64 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
65 p80211item_unk392_t mibattribute ;
66 p80211item_uint32_t resultcode ;
67} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_mibset_t;
68
69typedef struct p80211msg_dot11req_powermgmt
70{
71 UINT32 msgcode ;
72 UINT32 msglen ;
73 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
74 p80211item_uint32_t powermgmtmode ;
75 p80211item_uint32_t wakeup ;
76 p80211item_uint32_t receivedtims ;
77 p80211item_uint32_t resultcode ;
78} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_powermgmt_t;
79
80typedef struct p80211msg_dot11req_scan
81{
82 UINT32 msgcode ;
83 UINT32 msglen ;
84 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
85 p80211item_uint32_t bsstype ;
86 p80211item_pstr6_t bssid ;
87 UINT8 pad_0C[1] ;
88 p80211item_pstr32_t ssid ;
89 UINT8 pad_1D[3] ;
90 p80211item_uint32_t scantype ;
91 p80211item_uint32_t probedelay ;
92 p80211item_pstr14_t channellist ;
93 UINT8 pad_2C[1] ;
94 p80211item_uint32_t minchanneltime ;
95 p80211item_uint32_t maxchanneltime ;
96 p80211item_uint32_t resultcode ;
97 p80211item_uint32_t numbss ;
98 p80211item_uint32_t append ;
99} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_scan_t;
100
101typedef struct p80211msg_dot11req_scan_results
102{
103 UINT32 msgcode ;
104 UINT32 msglen ;
105 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
106 p80211item_uint32_t bssindex ;
107 p80211item_uint32_t resultcode ;
108 p80211item_uint32_t signal ;
109 p80211item_uint32_t noise ;
110 p80211item_pstr6_t bssid ;
111 UINT8 pad_3C[1] ;
112 p80211item_pstr32_t ssid ;
113 UINT8 pad_4D[3] ;
114 p80211item_uint32_t bsstype ;
115 p80211item_uint32_t beaconperiod ;
116 p80211item_uint32_t dtimperiod ;
117 p80211item_uint32_t timestamp ;
118 p80211item_uint32_t localtime ;
119 p80211item_uint32_t fhdwelltime ;
120 p80211item_uint32_t fhhopset ;
121 p80211item_uint32_t fhhoppattern ;
122 p80211item_uint32_t fhhopindex ;
123 p80211item_uint32_t dschannel ;
124 p80211item_uint32_t cfpcount ;
125 p80211item_uint32_t cfpperiod ;
126 p80211item_uint32_t cfpmaxduration ;
127 p80211item_uint32_t cfpdurremaining ;
128 p80211item_uint32_t ibssatimwindow ;
129 p80211item_uint32_t cfpollable ;
130 p80211item_uint32_t cfpollreq ;
131 p80211item_uint32_t privacy ;
132 p80211item_uint32_t basicrate1 ;
133 p80211item_uint32_t basicrate2 ;
134 p80211item_uint32_t basicrate3 ;
135 p80211item_uint32_t basicrate4 ;
136 p80211item_uint32_t basicrate5 ;
137 p80211item_uint32_t basicrate6 ;
138 p80211item_uint32_t basicrate7 ;
139 p80211item_uint32_t basicrate8 ;
140 p80211item_uint32_t supprate1 ;
141 p80211item_uint32_t supprate2 ;
142 p80211item_uint32_t supprate3 ;
143 p80211item_uint32_t supprate4 ;
144 p80211item_uint32_t supprate5 ;
145 p80211item_uint32_t supprate6 ;
146 p80211item_uint32_t supprate7 ;
147 p80211item_uint32_t supprate8 ;
148} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_scan_results_t;
149
150typedef struct p80211msg_dot11req_join
151{
152 UINT32 msgcode ;
153 UINT32 msglen ;
154 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
155 p80211item_pstr6_t bssid ;
156 UINT8 pad_5C[1] ;
157 p80211item_uint32_t joinfailuretimeout ;
158 p80211item_uint32_t basicrate1 ;
159 p80211item_uint32_t basicrate2 ;
160 p80211item_uint32_t basicrate3 ;
161 p80211item_uint32_t basicrate4 ;
162 p80211item_uint32_t basicrate5 ;
163 p80211item_uint32_t basicrate6 ;
164 p80211item_uint32_t basicrate7 ;
165 p80211item_uint32_t basicrate8 ;
166 p80211item_uint32_t operationalrate1 ;
167 p80211item_uint32_t operationalrate2 ;
168 p80211item_uint32_t operationalrate3 ;
169 p80211item_uint32_t operationalrate4 ;
170 p80211item_uint32_t operationalrate5 ;
171 p80211item_uint32_t operationalrate6 ;
172 p80211item_uint32_t operationalrate7 ;
173 p80211item_uint32_t operationalrate8 ;
174 p80211item_uint32_t resultcode ;
175} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_join_t;
176
177typedef struct p80211msg_dot11req_authenticate
178{
179 UINT32 msgcode ;
180 UINT32 msglen ;
181 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
182 p80211item_pstr6_t peerstaaddress ;
183 UINT8 pad_6C[1] ;
184 p80211item_uint32_t authenticationtype ;
185 p80211item_uint32_t authenticationfailuretimeout ;
186 p80211item_uint32_t resultcode ;
187} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_authenticate_t;
188
189typedef struct p80211msg_dot11req_deauthenticate
190{
191 UINT32 msgcode ;
192 UINT32 msglen ;
193 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
194 p80211item_pstr6_t peerstaaddress ;
195 UINT8 pad_7C[1] ;
196 p80211item_uint32_t reasoncode ;
197 p80211item_uint32_t resultcode ;
198} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_deauthenticate_t;
199
200typedef struct p80211msg_dot11req_associate
201{
202 UINT32 msgcode ;
203 UINT32 msglen ;
204 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
205 p80211item_pstr6_t peerstaaddress ;
206 UINT8 pad_8C[1] ;
207 p80211item_uint32_t associatefailuretimeout ;
208 p80211item_uint32_t cfpollable ;
209 p80211item_uint32_t cfpollreq ;
210 p80211item_uint32_t privacy ;
211 p80211item_uint32_t listeninterval ;
212 p80211item_uint32_t resultcode ;
213} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_associate_t;
214
215typedef struct p80211msg_dot11req_reassociate
216{
217 UINT32 msgcode ;
218 UINT32 msglen ;
219 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
220 p80211item_pstr6_t newapaddress ;
221 UINT8 pad_9C[1] ;
222 p80211item_uint32_t reassociatefailuretimeout ;
223 p80211item_uint32_t cfpollable ;
224 p80211item_uint32_t cfpollreq ;
225 p80211item_uint32_t privacy ;
226 p80211item_uint32_t listeninterval ;
227 p80211item_uint32_t resultcode ;
228} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_reassociate_t;
229
230typedef struct p80211msg_dot11req_disassociate
231{
232 UINT32 msgcode ;
233 UINT32 msglen ;
234 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
235 p80211item_pstr6_t peerstaaddress ;
236 UINT8 pad_10C[1] ;
237 p80211item_uint32_t reasoncode ;
238 p80211item_uint32_t resultcode ;
239} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_disassociate_t;
240
241typedef struct p80211msg_dot11req_reset
242{
243 UINT32 msgcode ;
244 UINT32 msglen ;
245 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
246 p80211item_uint32_t setdefaultmib ;
247 p80211item_pstr6_t macaddress ;
248 UINT8 pad_11C[1] ;
249 p80211item_uint32_t resultcode ;
250} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_reset_t;
251
252typedef struct p80211msg_dot11req_start
253{
254 UINT32 msgcode ;
255 UINT32 msglen ;
256 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
257 p80211item_pstr32_t ssid ;
258 UINT8 pad_12D[3] ;
259 p80211item_uint32_t bsstype ;
260 p80211item_uint32_t beaconperiod ;
261 p80211item_uint32_t dtimperiod ;
262 p80211item_uint32_t cfpperiod ;
263 p80211item_uint32_t cfpmaxduration ;
264 p80211item_uint32_t fhdwelltime ;
265 p80211item_uint32_t fhhopset ;
266 p80211item_uint32_t fhhoppattern ;
267 p80211item_uint32_t dschannel ;
268 p80211item_uint32_t ibssatimwindow ;
269 p80211item_uint32_t probedelay ;
270 p80211item_uint32_t cfpollable ;
271 p80211item_uint32_t cfpollreq ;
272 p80211item_uint32_t basicrate1 ;
273 p80211item_uint32_t basicrate2 ;
274 p80211item_uint32_t basicrate3 ;
275 p80211item_uint32_t basicrate4 ;
276 p80211item_uint32_t basicrate5 ;
277 p80211item_uint32_t basicrate6 ;
278 p80211item_uint32_t basicrate7 ;
279 p80211item_uint32_t basicrate8 ;
280 p80211item_uint32_t operationalrate1 ;
281 p80211item_uint32_t operationalrate2 ;
282 p80211item_uint32_t operationalrate3 ;
283 p80211item_uint32_t operationalrate4 ;
284 p80211item_uint32_t operationalrate5 ;
285 p80211item_uint32_t operationalrate6 ;
286 p80211item_uint32_t operationalrate7 ;
287 p80211item_uint32_t operationalrate8 ;
288 p80211item_uint32_t resultcode ;
289} __WLAN_ATTRIB_PACK__ p80211msg_dot11req_start_t;
290
291typedef struct p80211msg_dot11ind_authenticate
292{
293 UINT32 msgcode ;
294 UINT32 msglen ;
295 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
296 p80211item_pstr6_t peerstaaddress ;
297 UINT8 pad_13C[1] ;
298 p80211item_uint32_t authenticationtype ;
299} __WLAN_ATTRIB_PACK__ p80211msg_dot11ind_authenticate_t;
300
301typedef struct p80211msg_dot11ind_deauthenticate
302{
303 UINT32 msgcode ;
304 UINT32 msglen ;
305 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
306 p80211item_pstr6_t peerstaaddress ;
307 UINT8 pad_14C[1] ;
308 p80211item_uint32_t reasoncode ;
309} __WLAN_ATTRIB_PACK__ p80211msg_dot11ind_deauthenticate_t;
310
311typedef struct p80211msg_dot11ind_associate
312{
313 UINT32 msgcode ;
314 UINT32 msglen ;
315 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
316 p80211item_pstr6_t peerstaaddress ;
317 UINT8 pad_15C[1] ;
318 p80211item_uint32_t aid ;
319} __WLAN_ATTRIB_PACK__ p80211msg_dot11ind_associate_t;
320
321typedef struct p80211msg_dot11ind_reassociate
322{
323 UINT32 msgcode ;
324 UINT32 msglen ;
325 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
326 p80211item_pstr6_t peerstaaddress ;
327 UINT8 pad_16C[1] ;
328 p80211item_uint32_t aid ;
329 p80211item_pstr6_t oldapaddress ;
330 UINT8 pad_17C[1] ;
331} __WLAN_ATTRIB_PACK__ p80211msg_dot11ind_reassociate_t;
332
333typedef struct p80211msg_dot11ind_disassociate
334{
335 UINT32 msgcode ;
336 UINT32 msglen ;
337 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
338 p80211item_pstr6_t peerstaaddress ;
339 UINT8 pad_18C[1] ;
340 p80211item_uint32_t reasoncode ;
341} __WLAN_ATTRIB_PACK__ p80211msg_dot11ind_disassociate_t;
342
343typedef struct p80211msg_lnxreq_ifstate
344{
345 UINT32 msgcode ;
346 UINT32 msglen ;
347 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
348 p80211item_uint32_t ifstate ;
349 p80211item_uint32_t resultcode ;
350} __WLAN_ATTRIB_PACK__ p80211msg_lnxreq_ifstate_t;
351
352typedef struct p80211msg_lnxreq_wlansniff
353{
354 UINT32 msgcode ;
355 UINT32 msglen ;
356 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
357 p80211item_uint32_t enable ;
358 p80211item_uint32_t channel ;
359 p80211item_uint32_t prismheader ;
360 p80211item_uint32_t wlanheader ;
361 p80211item_uint32_t keepwepflags ;
362 p80211item_uint32_t stripfcs ;
363 p80211item_uint32_t packet_trunc ;
364 p80211item_uint32_t resultcode ;
365} __WLAN_ATTRIB_PACK__ p80211msg_lnxreq_wlansniff_t;
366
367typedef struct p80211msg_lnxreq_hostwep
368{
369 UINT32 msgcode ;
370 UINT32 msglen ;
371 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
372 p80211item_uint32_t resultcode ;
373 p80211item_uint32_t decrypt ;
374 p80211item_uint32_t encrypt ;
375} __WLAN_ATTRIB_PACK__ p80211msg_lnxreq_hostwep_t;
376
377typedef struct p80211msg_lnxreq_commsquality
378{
379 UINT32 msgcode ;
380 UINT32 msglen ;
381 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
382 p80211item_uint32_t resultcode ;
383 p80211item_uint32_t dbm ;
384 p80211item_uint32_t link ;
385 p80211item_uint32_t level ;
386 p80211item_uint32_t noise ;
387} __WLAN_ATTRIB_PACK__ p80211msg_lnxreq_commsquality_t;
388
389typedef struct p80211msg_lnxreq_autojoin
390{
391 UINT32 msgcode ;
392 UINT32 msglen ;
393 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
394 p80211item_pstr32_t ssid ;
395 UINT8 pad_19D[3] ;
396 p80211item_uint32_t authtype ;
397 p80211item_uint32_t resultcode ;
398} __WLAN_ATTRIB_PACK__ p80211msg_lnxreq_autojoin_t;
399
400typedef struct p80211msg_lnxind_wlansniffrm
401{
402 UINT32 msgcode ;
403 UINT32 msglen ;
404 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
405 p80211item_uint32_t hosttime ;
406 p80211item_uint32_t mactime ;
407 p80211item_uint32_t channel ;
408 p80211item_uint32_t rssi ;
409 p80211item_uint32_t sq ;
410 p80211item_uint32_t signal ;
411 p80211item_uint32_t noise ;
412 p80211item_uint32_t rate ;
413 p80211item_uint32_t istx ;
414 p80211item_uint32_t frmlen ;
415} __WLAN_ATTRIB_PACK__ p80211msg_lnxind_wlansniffrm_t;
416
417typedef struct p80211msg_lnxind_roam
418{
419 UINT32 msgcode ;
420 UINT32 msglen ;
421 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
422 p80211item_uint32_t reason ;
423} __WLAN_ATTRIB_PACK__ p80211msg_lnxind_roam_t;
424
425typedef struct p80211msg_p2req_join
426{
427 UINT32 msgcode ;
428 UINT32 msglen ;
429 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
430 p80211item_pstr6_t bssid ;
431 UINT8 pad_20C[1] ;
432 p80211item_uint32_t basicrate1 ;
433 p80211item_uint32_t basicrate2 ;
434 p80211item_uint32_t basicrate3 ;
435 p80211item_uint32_t basicrate4 ;
436 p80211item_uint32_t basicrate5 ;
437 p80211item_uint32_t basicrate6 ;
438 p80211item_uint32_t basicrate7 ;
439 p80211item_uint32_t basicrate8 ;
440 p80211item_uint32_t operationalrate1 ;
441 p80211item_uint32_t operationalrate2 ;
442 p80211item_uint32_t operationalrate3 ;
443 p80211item_uint32_t operationalrate4 ;
444 p80211item_uint32_t operationalrate5 ;
445 p80211item_uint32_t operationalrate6 ;
446 p80211item_uint32_t operationalrate7 ;
447 p80211item_uint32_t operationalrate8 ;
448 p80211item_pstr32_t ssid ;
449 UINT8 pad_21D[3] ;
450 p80211item_uint32_t channel ;
451 p80211item_uint32_t authtype ;
452 p80211item_uint32_t resultcode ;
453} __WLAN_ATTRIB_PACK__ p80211msg_p2req_join_t;
454
455typedef struct p80211msg_p2req_readpda
456{
457 UINT32 msgcode ;
458 UINT32 msglen ;
459 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
460 p80211item_unk1024_t pda ;
461 p80211item_uint32_t resultcode ;
462} __WLAN_ATTRIB_PACK__ p80211msg_p2req_readpda_t;
463
464typedef struct p80211msg_p2req_readcis
465{
466 UINT32 msgcode ;
467 UINT32 msglen ;
468 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
469 p80211item_unk1024_t cis ;
470 p80211item_uint32_t resultcode ;
471} __WLAN_ATTRIB_PACK__ p80211msg_p2req_readcis_t;
472
473typedef struct p80211msg_p2req_auxport_state
474{
475 UINT32 msgcode ;
476 UINT32 msglen ;
477 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
478 p80211item_uint32_t enable ;
479 p80211item_uint32_t resultcode ;
480} __WLAN_ATTRIB_PACK__ p80211msg_p2req_auxport_state_t;
481
482typedef struct p80211msg_p2req_auxport_read
483{
484 UINT32 msgcode ;
485 UINT32 msglen ;
486 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
487 p80211item_uint32_t addr ;
488 p80211item_uint32_t len ;
489 p80211item_unk1024_t data ;
490 p80211item_uint32_t resultcode ;
491} __WLAN_ATTRIB_PACK__ p80211msg_p2req_auxport_read_t;
492
493typedef struct p80211msg_p2req_auxport_write
494{
495 UINT32 msgcode ;
496 UINT32 msglen ;
497 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
498 p80211item_uint32_t addr ;
499 p80211item_uint32_t len ;
500 p80211item_unk1024_t data ;
501 p80211item_uint32_t resultcode ;
502} __WLAN_ATTRIB_PACK__ p80211msg_p2req_auxport_write_t;
503
504typedef struct p80211msg_p2req_low_level
505{
506 UINT32 msgcode ;
507 UINT32 msglen ;
508 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
509 p80211item_uint32_t command ;
510 p80211item_uint32_t param0 ;
511 p80211item_uint32_t param1 ;
512 p80211item_uint32_t param2 ;
513 p80211item_uint32_t resp0 ;
514 p80211item_uint32_t resp1 ;
515 p80211item_uint32_t resp2 ;
516 p80211item_uint32_t resultcode ;
517} __WLAN_ATTRIB_PACK__ p80211msg_p2req_low_level_t;
518
519typedef struct p80211msg_p2req_test_command
520{
521 UINT32 msgcode ;
522 UINT32 msglen ;
523 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
524 p80211item_uint32_t testcode ;
525 p80211item_uint32_t testparam ;
526 p80211item_uint32_t resultcode ;
527 p80211item_uint32_t status ;
528 p80211item_uint32_t resp0 ;
529 p80211item_uint32_t resp1 ;
530 p80211item_uint32_t resp2 ;
531} __WLAN_ATTRIB_PACK__ p80211msg_p2req_test_command_t;
532
533typedef struct p80211msg_p2req_mmi_read
534{
535 UINT32 msgcode ;
536 UINT32 msglen ;
537 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
538 p80211item_uint32_t addr ;
539 p80211item_uint32_t value ;
540 p80211item_uint32_t resultcode ;
541} __WLAN_ATTRIB_PACK__ p80211msg_p2req_mmi_read_t;
542
543typedef struct p80211msg_p2req_mmi_write
544{
545 UINT32 msgcode ;
546 UINT32 msglen ;
547 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
548 p80211item_uint32_t addr ;
549 p80211item_uint32_t data ;
550 p80211item_uint32_t resultcode ;
551} __WLAN_ATTRIB_PACK__ p80211msg_p2req_mmi_write_t;
552
553typedef struct p80211msg_p2req_ramdl_state
554{
555 UINT32 msgcode ;
556 UINT32 msglen ;
557 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
558 p80211item_uint32_t enable ;
559 p80211item_uint32_t exeaddr ;
560 p80211item_uint32_t resultcode ;
561} __WLAN_ATTRIB_PACK__ p80211msg_p2req_ramdl_state_t;
562
563typedef struct p80211msg_p2req_ramdl_write
564{
565 UINT32 msgcode ;
566 UINT32 msglen ;
567 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
568 p80211item_uint32_t addr ;
569 p80211item_uint32_t len ;
570 p80211item_unk4096_t data ;
571 p80211item_uint32_t resultcode ;
572} __WLAN_ATTRIB_PACK__ p80211msg_p2req_ramdl_write_t;
573
574typedef struct p80211msg_p2req_flashdl_state
575{
576 UINT32 msgcode ;
577 UINT32 msglen ;
578 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
579 p80211item_uint32_t enable ;
580 p80211item_uint32_t resultcode ;
581} __WLAN_ATTRIB_PACK__ p80211msg_p2req_flashdl_state_t;
582
583typedef struct p80211msg_p2req_flashdl_write
584{
585 UINT32 msgcode ;
586 UINT32 msglen ;
587 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
588 p80211item_uint32_t addr ;
589 p80211item_uint32_t len ;
590 p80211item_unk4096_t data ;
591 p80211item_uint32_t resultcode ;
592} __WLAN_ATTRIB_PACK__ p80211msg_p2req_flashdl_write_t;
593
594typedef struct p80211msg_p2req_mm_state
595{
596 UINT32 msgcode ;
597 UINT32 msglen ;
598 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
599 p80211item_uint32_t enable ;
600 p80211item_uint32_t resultcode ;
601} __WLAN_ATTRIB_PACK__ p80211msg_p2req_mm_state_t;
602
603typedef struct p80211msg_p2req_dump_state
604{
605 UINT32 msgcode ;
606 UINT32 msglen ;
607 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
608 p80211item_uint32_t level ;
609 p80211item_uint32_t resultcode ;
610} __WLAN_ATTRIB_PACK__ p80211msg_p2req_dump_state_t;
611
612typedef struct p80211msg_p2req_channel_info
613{
614 UINT32 msgcode ;
615 UINT32 msglen ;
616 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
617 p80211item_uint32_t channellist ;
618 p80211item_uint32_t channeldwelltime ;
619 p80211item_uint32_t resultcode ;
620 p80211item_uint32_t numchinfo ;
621} __WLAN_ATTRIB_PACK__ p80211msg_p2req_channel_info_t;
622
623typedef struct p80211msg_p2req_channel_info_results
624{
625 UINT32 msgcode ;
626 UINT32 msglen ;
627 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
628 p80211item_uint32_t channel ;
629 p80211item_uint32_t resultcode ;
630 p80211item_uint32_t avgnoiselevel ;
631 p80211item_uint32_t peaknoiselevel ;
632 p80211item_uint32_t bssactive ;
633 p80211item_uint32_t pcfactive ;
634} __WLAN_ATTRIB_PACK__ p80211msg_p2req_channel_info_results_t;
635
636typedef struct p80211msg_p2req_enable
637{
638 UINT32 msgcode ;
639 UINT32 msglen ;
640 UINT8 devname[WLAN_DEVNAMELEN_MAX] ;
641 p80211item_uint32_t resultcode ;
642} __WLAN_ATTRIB_PACK__ p80211msg_p2req_enable_t;
643
644#endif
diff --git a/drivers/staging/wlan-ng/p80211mgmt.h b/drivers/staging/wlan-ng/p80211mgmt.h
new file mode 100644
index 00000000000..bd4c1629eab
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211mgmt.h
@@ -0,0 +1,575 @@
1/* p80211mgmt.h
2*
3* Macros, types, and functions to handle 802.11 mgmt frames
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares the constants and types used in the interface
48* between a wlan driver and the user mode utilities.
49*
50* Notes:
51* - Constant values are always in HOST byte order. To assign
52* values to multi-byte fields they _must_ be converted to
53* ieee byte order. To retrieve multi-byte values from incoming
54* frames, they must be converted to host order.
55*
56* - The len member of the frame structure does NOT!!! include
57* the MAC CRC. Therefore, the len field on rx'd frames should
58* have 4 subtracted from it.
59*
60* All functions declared here are implemented in p80211.c
61*
62* The types, macros, and functions defined here are primarily
63* used for encoding and decoding management frames. They are
64* designed to follow these patterns of use:
65*
66* DECODE:
67* 1) a frame of length len is received into buffer b
68* 2) using the hdr structure and macros, we determine the type
69* 3) an appropriate mgmt frame structure, mf, is allocated and zeroed
70* 4) mf.hdr = b
71* mf.buf = b
72* mf.len = len
73* 5) call mgmt_decode( mf )
74* 6) the frame field pointers in mf are now set. Note that any
75* multi-byte frame field values accessed using the frame field
76* pointers are in ieee byte order and will have to be converted
77* to host order.
78*
79* ENCODE:
80* 1) Library client allocates buffer space for maximum length
81* frame of the desired type
82* 2) Library client allocates a mgmt frame structure, called mf,
83* of the desired type
84* 3) Set the following:
85* mf.type = <desired type>
86* mf.buf = <allocated buffer address>
87* 4) call mgmt_encode( mf )
88* 5) all of the fixed field pointers and fixed length information element
89* pointers in mf are now set to their respective locations in the
90* allocated space (fortunately, all variable length information elements
91* fall at the end of their respective frames).
92* 5a) The length field is set to include the last of the fixed and fixed
93* length fields. It may have to be updated for optional or variable
94* length information elements.
95* 6) Optional and variable length information elements are special cases
96* and must be handled individually by the client code.
97* --------------------------------------------------------------------
98*/
99
100#ifndef _P80211MGMT_H
101#define _P80211MGMT_H
102
103/*================================================================*/
104/* System Includes */
105
106/*================================================================*/
107/* Project Includes */
108
109#ifndef _WLAN_COMPAT_H
110#include "wlan_compat.h"
111#endif
112
113#ifndef _P80211HDR_H
114#include "p80211hdr.h"
115#endif
116
117
118/*================================================================*/
119/* Constants */
120
121/*-- Information Element IDs --------------------*/
122#define WLAN_EID_SSID 0
123#define WLAN_EID_SUPP_RATES 1
124#define WLAN_EID_FH_PARMS 2
125#define WLAN_EID_DS_PARMS 3
126#define WLAN_EID_CF_PARMS 4
127#define WLAN_EID_TIM 5
128#define WLAN_EID_IBSS_PARMS 6
129/*-- values 7-15 reserved --*/
130#define WLAN_EID_CHALLENGE 16
131/*-- values 17-31 reserved for challenge text extension --*/
132/*-- values 32-255 reserved --*/
133
134/*-- Reason Codes -------------------------------*/
135#define WLAN_MGMT_REASON_RSVD 0
136#define WLAN_MGMT_REASON_UNSPEC 1
137#define WLAN_MGMT_REASON_PRIOR_AUTH_INVALID 2
138#define WLAN_MGMT_REASON_DEAUTH_LEAVING 3
139#define WLAN_MGMT_REASON_DISASSOC_INACTIVE 4
140#define WLAN_MGMT_REASON_DISASSOC_AP_BUSY 5
141#define WLAN_MGMT_REASON_CLASS2_NONAUTH 6
142#define WLAN_MGMT_REASON_CLASS3_NONASSOC 7
143#define WLAN_MGMT_REASON_DISASSOC_STA_HASLEFT 8
144#define WLAN_MGMT_REASON_CANT_ASSOC_NONAUTH 9
145
146/*-- Status Codes -------------------------------*/
147#define WLAN_MGMT_STATUS_SUCCESS 0
148#define WLAN_MGMT_STATUS_UNSPEC_FAILURE 1
149#define WLAN_MGMT_STATUS_CAPS_UNSUPPORTED 10
150#define WLAN_MGMT_STATUS_REASSOC_NO_ASSOC 11
151#define WLAN_MGMT_STATUS_ASSOC_DENIED_UNSPEC 12
152#define WLAN_MGMT_STATUS_UNSUPPORTED_AUTHALG 13
153#define WLAN_MGMT_STATUS_RX_AUTH_NOSEQ 14
154#define WLAN_MGMT_STATUS_CHALLENGE_FAIL 15
155#define WLAN_MGMT_STATUS_AUTH_TIMEOUT 16
156#define WLAN_MGMT_STATUS_ASSOC_DENIED_BUSY 17
157#define WLAN_MGMT_STATUS_ASSOC_DENIED_RATES 18
158 /* p80211b additions */
159#define WLAN_MGMT_STATUS_ASSOC_DENIED_NOSHORT 19
160#define WLAN_MGMT_STATUS_ASSOC_DENIED_NOPBCC 20
161#define WLAN_MGMT_STATUS_ASSOC_DENIED_NOAGILITY 21
162
163
164
165/*-- Auth Algorithm Field ---------------------------*/
166#define WLAN_AUTH_ALG_OPENSYSTEM 0
167#define WLAN_AUTH_ALG_SHAREDKEY 1
168
169/*-- Management Frame Field Offsets -------------*/
170/* Note: Not all fields are listed because of variable lengths, */
171/* see the code in p80211.c to see how we search for fields */
172/* Note: These offsets are from the start of the frame data */
173
174#define WLAN_BEACON_OFF_TS 0
175#define WLAN_BEACON_OFF_BCN_INT 8
176#define WLAN_BEACON_OFF_CAPINFO 10
177#define WLAN_BEACON_OFF_SSID 12
178
179#define WLAN_DISASSOC_OFF_REASON 0
180
181#define WLAN_ASSOCREQ_OFF_CAP_INFO 0
182#define WLAN_ASSOCREQ_OFF_LISTEN_INT 2
183#define WLAN_ASSOCREQ_OFF_SSID 4
184
185#define WLAN_ASSOCRESP_OFF_CAP_INFO 0
186#define WLAN_ASSOCRESP_OFF_STATUS 2
187#define WLAN_ASSOCRESP_OFF_AID 4
188#define WLAN_ASSOCRESP_OFF_SUPP_RATES 6
189
190#define WLAN_REASSOCREQ_OFF_CAP_INFO 0
191#define WLAN_REASSOCREQ_OFF_LISTEN_INT 2
192#define WLAN_REASSOCREQ_OFF_CURR_AP 4
193#define WLAN_REASSOCREQ_OFF_SSID 10
194
195#define WLAN_REASSOCRESP_OFF_CAP_INFO 0
196#define WLAN_REASSOCRESP_OFF_STATUS 2
197#define WLAN_REASSOCRESP_OFF_AID 4
198#define WLAN_REASSOCRESP_OFF_SUPP_RATES 6
199
200#define WLAN_PROBEREQ_OFF_SSID 0
201
202#define WLAN_PROBERESP_OFF_TS 0
203#define WLAN_PROBERESP_OFF_BCN_INT 8
204#define WLAN_PROBERESP_OFF_CAP_INFO 10
205#define WLAN_PROBERESP_OFF_SSID 12
206
207#define WLAN_AUTHEN_OFF_AUTH_ALG 0
208#define WLAN_AUTHEN_OFF_AUTH_SEQ 2
209#define WLAN_AUTHEN_OFF_STATUS 4
210#define WLAN_AUTHEN_OFF_CHALLENGE 6
211
212#define WLAN_DEAUTHEN_OFF_REASON 0
213
214
215/*================================================================*/
216/* Macros */
217
218/*-- Capability Field ---------------------------*/
219#define WLAN_GET_MGMT_CAP_INFO_ESS(n) ((n) & BIT0)
220#define WLAN_GET_MGMT_CAP_INFO_IBSS(n) (((n) & BIT1) >> 1)
221#define WLAN_GET_MGMT_CAP_INFO_CFPOLLABLE(n) (((n) & BIT2) >> 2)
222#define WLAN_GET_MGMT_CAP_INFO_CFPOLLREQ(n) (((n) & BIT3) >> 3)
223#define WLAN_GET_MGMT_CAP_INFO_PRIVACY(n) (((n) & BIT4) >> 4)
224 /* p80211b additions */
225#define WLAN_GET_MGMT_CAP_INFO_SHORT(n) (((n) & BIT5) >> 5)
226#define WLAN_GET_MGMT_CAP_INFO_PBCC(n) (((n) & BIT6) >> 6)
227#define WLAN_GET_MGMT_CAP_INFO_AGILITY(n) (((n) & BIT7) >> 7)
228
229#define WLAN_SET_MGMT_CAP_INFO_ESS(n) (n)
230#define WLAN_SET_MGMT_CAP_INFO_IBSS(n) ((n) << 1)
231#define WLAN_SET_MGMT_CAP_INFO_CFPOLLABLE(n) ((n) << 2)
232#define WLAN_SET_MGMT_CAP_INFO_CFPOLLREQ(n) ((n) << 3)
233#define WLAN_SET_MGMT_CAP_INFO_PRIVACY(n) ((n) << 4)
234 /* p80211b additions */
235#define WLAN_SET_MGMT_CAP_INFO_SHORT(n) ((n) << 5)
236#define WLAN_SET_MGMT_CAP_INFO_PBCC(n) ((n) << 6)
237#define WLAN_SET_MGMT_CAP_INFO_AGILITY(n) ((n) << 7)
238
239
240/*================================================================*/
241/* Types */
242
243/*-- Information Element Types --------------------*/
244/* prototype structure, all IEs start with these members */
245
246typedef struct wlan_ie
247{
248 UINT8 eid;
249 UINT8 len;
250} __WLAN_ATTRIB_PACK__ wlan_ie_t;
251
252/*-- Service Set Identity (SSID) -----------------*/
253typedef struct wlan_ie_ssid
254{
255 UINT8 eid;
256 UINT8 len;
257 UINT8 ssid[1]; /* may be zero, ptrs may overlap */
258} __WLAN_ATTRIB_PACK__ wlan_ie_ssid_t;
259
260/*-- Supported Rates -----------------------------*/
261typedef struct wlan_ie_supp_rates
262{
263 UINT8 eid;
264 UINT8 len;
265 UINT8 rates[1]; /* had better be at LEAST one! */
266} __WLAN_ATTRIB_PACK__ wlan_ie_supp_rates_t;
267
268/*-- FH Parameter Set ----------------------------*/
269typedef struct wlan_ie_fh_parms
270{
271 UINT8 eid;
272 UINT8 len;
273 UINT16 dwell;
274 UINT8 hopset;
275 UINT8 hoppattern;
276 UINT8 hopindex;
277} __WLAN_ATTRIB_PACK__ wlan_ie_fh_parms_t;
278
279/*-- DS Parameter Set ----------------------------*/
280typedef struct wlan_ie_ds_parms
281{
282 UINT8 eid;
283 UINT8 len;
284 UINT8 curr_ch;
285} __WLAN_ATTRIB_PACK__ wlan_ie_ds_parms_t;
286
287/*-- CF Parameter Set ----------------------------*/
288
289typedef struct wlan_ie_cf_parms
290{
291 UINT8 eid;
292 UINT8 len;
293 UINT8 cfp_cnt;
294 UINT8 cfp_period;
295 UINT16 cfp_maxdur;
296 UINT16 cfp_durremaining;
297} __WLAN_ATTRIB_PACK__ wlan_ie_cf_parms_t;
298
299/*-- TIM ------------------------------------------*/
300typedef struct wlan_ie_tim
301{
302 UINT8 eid;
303 UINT8 len;
304 UINT8 dtim_cnt;
305 UINT8 dtim_period;
306 UINT8 bitmap_ctl;
307 UINT8 virt_bm[1];
308} __WLAN_ATTRIB_PACK__ wlan_ie_tim_t;
309
310/*-- IBSS Parameter Set ---------------------------*/
311typedef struct wlan_ie_ibss_parms
312{
313 UINT8 eid;
314 UINT8 len;
315 UINT16 atim_win;
316} __WLAN_ATTRIB_PACK__ wlan_ie_ibss_parms_t;
317
318/*-- Challenge Text ------------------------------*/
319typedef struct wlan_ie_challenge
320{
321 UINT8 eid;
322 UINT8 len;
323 UINT8 challenge[1];
324} __WLAN_ATTRIB_PACK__ wlan_ie_challenge_t;
325
326/*-------------------------------------------------*/
327/* Frame Types */
328
329/* prototype structure, all mgmt frame types will start with these members */
330typedef struct wlan_fr_mgmt
331{
332 UINT16 type;
333 UINT16 len; /* DOES NOT include CRC !!!!*/
334 UINT8 *buf;
335 p80211_hdr_t *hdr;
336 /* used for target specific data, skb in Linux */
337 void *priv;
338 /*-- fixed fields -----------*/
339 /*-- info elements ----------*/
340} wlan_fr_mgmt_t;
341
342/*-- Beacon ---------------------------------------*/
343typedef struct wlan_fr_beacon
344{
345 UINT16 type;
346 UINT16 len;
347 UINT8 *buf;
348 p80211_hdr_t *hdr;
349 /* used for target specific data, skb in Linux */
350 void *priv;
351 /*-- fixed fields -----------*/
352 UINT64 *ts;
353 UINT16 *bcn_int;
354 UINT16 *cap_info;
355 /*-- info elements ----------*/
356 wlan_ie_ssid_t *ssid;
357 wlan_ie_supp_rates_t *supp_rates;
358 wlan_ie_fh_parms_t *fh_parms;
359 wlan_ie_ds_parms_t *ds_parms;
360 wlan_ie_cf_parms_t *cf_parms;
361 wlan_ie_ibss_parms_t *ibss_parms;
362 wlan_ie_tim_t *tim;
363
364} wlan_fr_beacon_t;
365
366
367/*-- IBSS ATIM ------------------------------------*/
368typedef struct wlan_fr_ibssatim
369{
370 UINT16 type;
371 UINT16 len;
372 UINT8* buf;
373 p80211_hdr_t *hdr;
374 /* used for target specific data, skb in Linux */
375 void *priv;
376
377 /*-- fixed fields -----------*/
378 /*-- info elements ----------*/
379
380 /* this frame type has a null body */
381
382} wlan_fr_ibssatim_t;
383
384/*-- Disassociation -------------------------------*/
385typedef struct wlan_fr_disassoc
386{
387 UINT16 type;
388 UINT16 len;
389 UINT8 *buf;
390 p80211_hdr_t *hdr;
391 /* used for target specific data, skb in Linux */
392 void *priv;
393 /*-- fixed fields -----------*/
394 UINT16 *reason;
395
396 /*-- info elements ----------*/
397
398} wlan_fr_disassoc_t;
399
400/*-- Association Request --------------------------*/
401typedef struct wlan_fr_assocreq
402{
403 UINT16 type;
404 UINT16 len;
405 UINT8* buf;
406 p80211_hdr_t *hdr;
407 /* used for target specific data, skb in Linux */
408 void *priv;
409 /*-- fixed fields -----------*/
410 UINT16 *cap_info;
411 UINT16 *listen_int;
412 /*-- info elements ----------*/
413 wlan_ie_ssid_t *ssid;
414 wlan_ie_supp_rates_t *supp_rates;
415
416} wlan_fr_assocreq_t;
417
418/*-- Association Response -------------------------*/
419typedef struct wlan_fr_assocresp
420{
421 UINT16 type;
422 UINT16 len;
423 UINT8 *buf;
424 p80211_hdr_t *hdr;
425 /* used for target specific data, skb in Linux */
426 void *priv;
427 /*-- fixed fields -----------*/
428 UINT16 *cap_info;
429 UINT16 *status;
430 UINT16 *aid;
431 /*-- info elements ----------*/
432 wlan_ie_supp_rates_t *supp_rates;
433
434} wlan_fr_assocresp_t;
435
436/*-- Reassociation Request ------------------------*/
437typedef struct wlan_fr_reassocreq
438{
439 UINT16 type;
440 UINT16 len;
441 UINT8 *buf;
442 p80211_hdr_t *hdr;
443 /* used for target specific data, skb in Linux */
444 void *priv;
445 /*-- fixed fields -----------*/
446 UINT16 *cap_info;
447 UINT16 *listen_int;
448 UINT8 *curr_ap;
449 /*-- info elements ----------*/
450 wlan_ie_ssid_t *ssid;
451 wlan_ie_supp_rates_t *supp_rates;
452
453} wlan_fr_reassocreq_t;
454
455/*-- Reassociation Response -----------------------*/
456typedef struct wlan_fr_reassocresp
457{
458 UINT16 type;
459 UINT16 len;
460 UINT8 *buf;
461 p80211_hdr_t *hdr;
462 /* used for target specific data, skb in Linux */
463 void *priv;
464 /*-- fixed fields -----------*/
465 UINT16 *cap_info;
466 UINT16 *status;
467 UINT16 *aid;
468 /*-- info elements ----------*/
469 wlan_ie_supp_rates_t *supp_rates;
470
471} wlan_fr_reassocresp_t;
472
473/*-- Probe Request --------------------------------*/
474typedef struct wlan_fr_probereq
475{
476 UINT16 type;
477 UINT16 len;
478 UINT8 *buf;
479 p80211_hdr_t *hdr;
480 /* used for target specific data, skb in Linux */
481 void *priv;
482 /*-- fixed fields -----------*/
483 /*-- info elements ----------*/
484 wlan_ie_ssid_t *ssid;
485 wlan_ie_supp_rates_t *supp_rates;
486
487} wlan_fr_probereq_t;
488
489/*-- Probe Response -------------------------------*/
490typedef struct wlan_fr_proberesp
491{
492 UINT16 type;
493 UINT16 len;
494 UINT8 *buf;
495 p80211_hdr_t *hdr;
496 /* used for target specific data, skb in Linux */
497 void *priv;
498 /*-- fixed fields -----------*/
499 UINT64 *ts;
500 UINT16 *bcn_int;
501 UINT16 *cap_info;
502 /*-- info elements ----------*/
503 wlan_ie_ssid_t *ssid;
504 wlan_ie_supp_rates_t *supp_rates;
505 wlan_ie_fh_parms_t *fh_parms;
506 wlan_ie_ds_parms_t *ds_parms;
507 wlan_ie_cf_parms_t *cf_parms;
508 wlan_ie_ibss_parms_t *ibss_parms;
509} wlan_fr_proberesp_t;
510
511/*-- Authentication -------------------------------*/
512typedef struct wlan_fr_authen
513{
514 UINT16 type;
515 UINT16 len;
516 UINT8 *buf;
517 p80211_hdr_t *hdr;
518 /* used for target specific data, skb in Linux */
519 void *priv;
520 /*-- fixed fields -----------*/
521 UINT16 *auth_alg;
522 UINT16 *auth_seq;
523 UINT16 *status;
524 /*-- info elements ----------*/
525 wlan_ie_challenge_t *challenge;
526
527} wlan_fr_authen_t;
528
529/*-- Deauthenication -----------------------------*/
530typedef struct wlan_fr_deauthen
531{
532 UINT16 type;
533 UINT16 len;
534 UINT8 *buf;
535 p80211_hdr_t *hdr;
536 /* used for target specific data, skb in Linux */
537 void *priv;
538 /*-- fixed fields -----------*/
539 UINT16 *reason;
540
541 /*-- info elements ----------*/
542
543} wlan_fr_deauthen_t;
544
545
546/*================================================================*/
547/* Extern Declarations */
548
549
550/*================================================================*/
551/* Function Declarations */
552
553void wlan_mgmt_encode_beacon( wlan_fr_beacon_t *f );
554void wlan_mgmt_decode_beacon( wlan_fr_beacon_t *f );
555void wlan_mgmt_encode_disassoc( wlan_fr_disassoc_t *f );
556void wlan_mgmt_decode_disassoc( wlan_fr_disassoc_t *f );
557void wlan_mgmt_encode_assocreq( wlan_fr_assocreq_t *f );
558void wlan_mgmt_decode_assocreq( wlan_fr_assocreq_t *f );
559void wlan_mgmt_encode_assocresp( wlan_fr_assocresp_t *f );
560void wlan_mgmt_decode_assocresp( wlan_fr_assocresp_t *f );
561void wlan_mgmt_encode_reassocreq( wlan_fr_reassocreq_t *f );
562void wlan_mgmt_decode_reassocreq( wlan_fr_reassocreq_t *f );
563void wlan_mgmt_encode_reassocresp( wlan_fr_reassocresp_t *f );
564void wlan_mgmt_decode_reassocresp( wlan_fr_reassocresp_t *f );
565void wlan_mgmt_encode_probereq( wlan_fr_probereq_t *f );
566void wlan_mgmt_decode_probereq( wlan_fr_probereq_t *f );
567void wlan_mgmt_encode_proberesp( wlan_fr_proberesp_t *f );
568void wlan_mgmt_decode_proberesp( wlan_fr_proberesp_t *f );
569void wlan_mgmt_encode_authen( wlan_fr_authen_t *f );
570void wlan_mgmt_decode_authen( wlan_fr_authen_t *f );
571void wlan_mgmt_encode_deauthen( wlan_fr_deauthen_t *f );
572void wlan_mgmt_decode_deauthen( wlan_fr_deauthen_t *f );
573
574
575#endif /* _P80211MGMT_H */
diff --git a/drivers/staging/wlan-ng/p80211mod.c b/drivers/staging/wlan-ng/p80211mod.c
new file mode 100644
index 00000000000..e2c3f63be8b
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211mod.c
@@ -0,0 +1,216 @@
1/* src/p80211/p80211mod.c
2*
3* Module entry and exit for p80211
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file contains the p80211.o entry and exit points defined for linux
48* kernel modules.
49*
50* Notes:
51* - all module parameters for p80211.o should be defined here.
52*
53* --------------------------------------------------------------------
54*/
55
56/*================================================================*/
57/* System Includes */
58
59
60#include <linux/version.h>
61
62#include <linux/module.h>
63#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,25))
64#include <linux/moduleparam.h>
65#endif
66
67#include <linux/kernel.h>
68#include <linux/sched.h>
69#include <linux/types.h>
70#include <linux/wireless.h>
71#include <linux/netdevice.h>
72
73#include "version.h"
74#include "wlan_compat.h"
75
76/*================================================================*/
77/* Project Includes */
78
79#include "p80211types.h"
80#include "p80211hdr.h"
81#include "p80211mgmt.h"
82#include "p80211conv.h"
83#include "p80211msg.h"
84#include "p80211netdev.h"
85#include "p80211req.h"
86
87/*================================================================*/
88/* Local Constants */
89
90
91/*================================================================*/
92/* Local Macros */
93
94
95/*================================================================*/
96/* Local Types */
97
98
99/*================================================================*/
100/* Local Static Definitions */
101
102static char *version = "p80211.o: " WLAN_RELEASE;
103
104
105/*----------------------------------------------------------------*/
106/* --Module Parameters */
107
108int wlan_watchdog = 5000;
109module_param(wlan_watchdog, int, 0644);
110MODULE_PARM_DESC(wlan_watchdog, "transmit timeout in milliseconds");
111
112int wlan_wext_write = 0;
113#if WIRELESS_EXT > 12
114module_param(wlan_wext_write, int, 0644);
115MODULE_PARM_DESC(wlan_wext_write, "enable write wireless extensions");
116#endif
117
118#ifdef WLAN_INCLUDE_DEBUG
119int wlan_debug=0;
120module_param(wlan_debug, int, 0644);
121MODULE_PARM_DESC(wlan_debug, "p80211 debug level");
122#endif
123
124MODULE_LICENSE("Dual MPL/GPL");
125
126/*================================================================*/
127/* Local Function Declarations */
128
129int init_module(void);
130void cleanup_module(void);
131
132/*================================================================*/
133/* Function Definitions */
134
135/*----------------------------------------------------------------
136* init_module
137*
138* Module initialization routine, called once at module load time.
139*
140* Arguments:
141* none
142*
143* Returns:
144* 0 - success
145* ~0 - failure, module is unloaded.
146*
147* Side effects:
148* TODO: define
149*
150* Call context:
151* process thread (insmod or modprobe)
152----------------------------------------------------------------*/
153int init_module(void)
154{
155 DBFENTER;
156
157#if 0
158 printk(KERN_NOTICE "%s (%s) Loaded\n", version, WLAN_BUILD_DATE);
159#endif
160
161 p80211netdev_startup();
162#ifdef CONFIG_HOTPLUG
163 p80211_run_sbin_hotplug(NULL, WLAN_HOTPLUG_STARTUP);
164#endif
165
166 DBFEXIT;
167 return 0;
168}
169
170
171/*----------------------------------------------------------------
172* cleanup_module
173*
174* Called at module unload time. This is our last chance to
175* clean up after ourselves.
176*
177* Arguments:
178* none
179*
180* Returns:
181* nothing
182*
183* Side effects:
184* TODO: define
185*
186* Call context:
187* process thread
188*
189----------------------------------------------------------------*/
190void cleanup_module(void)
191{
192 DBFENTER;
193
194#ifdef CONFIG_HOTPLUG
195 p80211_run_sbin_hotplug(NULL, WLAN_HOTPLUG_SHUTDOWN);
196#endif
197 p80211netdev_shutdown();
198 printk(KERN_NOTICE "%s Unloaded\n", version);
199
200 DBFEXIT;
201 return;
202}
203
204EXPORT_SYMBOL(p80211netdev_hwremoved);
205EXPORT_SYMBOL(register_wlandev);
206EXPORT_SYMBOL(p80211netdev_rx);
207EXPORT_SYMBOL(unregister_wlandev);
208EXPORT_SYMBOL(wlan_setup);
209EXPORT_SYMBOL(wlan_unsetup);
210EXPORT_SYMBOL(p80211_suspend);
211EXPORT_SYMBOL(p80211_resume);
212
213EXPORT_SYMBOL(p80211skb_free);
214EXPORT_SYMBOL(p80211skb_rxmeta_attach);
215
216EXPORT_SYMBOL(p80211wext_event_associated);
diff --git a/drivers/staging/wlan-ng/p80211msg.h b/drivers/staging/wlan-ng/p80211msg.h
new file mode 100644
index 00000000000..c14e9fbbd68
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211msg.h
@@ -0,0 +1,102 @@
1/* p80211msg.h
2*
3* Macros, constants, types, and funcs for req and ind messages
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*/
47
48#ifndef _P80211MSG_H
49#define _P80211MSG_H
50
51/*================================================================*/
52/* System Includes */
53
54/*================================================================*/
55/* Project Includes */
56
57#ifndef _WLAN_COMPAT_H
58#include "wlan_compat.h"
59#endif
60
61/*================================================================*/
62/* Constants */
63
64#define MSG_BUFF_LEN 4000
65#define WLAN_DEVNAMELEN_MAX 16
66
67/*================================================================*/
68/* Macros */
69
70/*================================================================*/
71/* Types */
72
73/*--------------------------------------------------------------------*/
74/*----- Message Structure Types --------------------------------------*/
75
76/*--------------------------------------------------------------------*/
77/* Prototype msg type */
78
79typedef struct p80211msg
80{
81 UINT32 msgcode;
82 UINT32 msglen;
83 UINT8 devname[WLAN_DEVNAMELEN_MAX];
84} __WLAN_ATTRIB_PACK__ p80211msg_t;
85
86typedef struct p80211msgd
87{
88 UINT32 msgcode;
89 UINT32 msglen;
90 UINT8 devname[WLAN_DEVNAMELEN_MAX];
91 UINT8 args[0];
92} __WLAN_ATTRIB_PACK__ p80211msgd_t;
93
94/*================================================================*/
95/* Extern Declarations */
96
97
98/*================================================================*/
99/* Function Declarations */
100
101#endif /* _P80211MSG_H */
102
diff --git a/drivers/staging/wlan-ng/p80211netdev.c b/drivers/staging/wlan-ng/p80211netdev.c
new file mode 100644
index 00000000000..11f84a829e1
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211netdev.c
@@ -0,0 +1,1502 @@
1/* src/p80211/p80211knetdev.c
2*
3* Linux Kernel net device interface
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* The functions required for a Linux network device are defined here.
48*
49* --------------------------------------------------------------------
50*/
51
52
53/*================================================================*/
54/* System Includes */
55
56
57#include <linux/version.h>
58
59#include <linux/module.h>
60#include <linux/kernel.h>
61#include <linux/sched.h>
62#include <linux/types.h>
63#include <linux/skbuff.h>
64#include <linux/slab.h>
65#include <linux/proc_fs.h>
66#include <linux/interrupt.h>
67#include <linux/netdevice.h>
68#include <linux/kmod.h>
69#include <linux/if_arp.h>
70#include <linux/wireless.h>
71#include <linux/sockios.h>
72#include <linux/etherdevice.h>
73
74#include <asm/bitops.h>
75#include <asm/uaccess.h>
76#include <asm/byteorder.h>
77
78#ifdef SIOCETHTOOL
79#include <linux/ethtool.h>
80#endif
81
82#if WIRELESS_EXT > 12
83#include <net/iw_handler.h>
84#endif
85#include <net/net_namespace.h>
86
87/*================================================================*/
88/* Project Includes */
89
90#include "version.h"
91#include "wlan_compat.h"
92#include "p80211types.h"
93#include "p80211hdr.h"
94#include "p80211conv.h"
95#include "p80211mgmt.h"
96#include "p80211msg.h"
97#include "p80211netdev.h"
98#include "p80211ioctl.h"
99#include "p80211req.h"
100#include "p80211metastruct.h"
101#include "p80211metadef.h"
102
103/*================================================================*/
104/* Local Constants */
105
106/*================================================================*/
107/* Local Macros */
108
109
110/*================================================================*/
111/* Local Types */
112
113/*================================================================*/
114/* Local Static Definitions */
115
116#define __NO_VERSION__ /* prevent the static definition */
117
118#ifdef CONFIG_PROC_FS
119static struct proc_dir_entry *proc_p80211;
120#endif
121
122/*================================================================*/
123/* Local Function Declarations */
124
125/* Support functions */
126static void p80211netdev_rx_bh(unsigned long arg);
127
128/* netdevice method functions */
129static int p80211knetdev_init( netdevice_t *netdev);
130static struct net_device_stats* p80211knetdev_get_stats(netdevice_t *netdev);
131static int p80211knetdev_open( netdevice_t *netdev);
132static int p80211knetdev_stop( netdevice_t *netdev );
133static int p80211knetdev_hard_start_xmit( struct sk_buff *skb, netdevice_t *netdev);
134static void p80211knetdev_set_multicast_list(netdevice_t *dev);
135static int p80211knetdev_do_ioctl(netdevice_t *dev, struct ifreq *ifr, int cmd);
136static int p80211knetdev_set_mac_address(netdevice_t *dev, void *addr);
137static void p80211knetdev_tx_timeout(netdevice_t *netdev);
138static int p80211_rx_typedrop( wlandevice_t *wlandev, UINT16 fc);
139
140#ifdef CONFIG_PROC_FS
141static int
142p80211netdev_proc_read(
143 char *page,
144 char **start,
145 off_t offset,
146 int count,
147 int *eof,
148 void *data);
149#endif
150
151/*================================================================*/
152/* Function Definitions */
153
154/*----------------------------------------------------------------
155* p80211knetdev_startup
156*
157* Initialize the wlandevice/netdevice part of 802.11 services at
158* load time.
159*
160* Arguments:
161* none
162*
163* Returns:
164* nothing
165----------------------------------------------------------------*/
166void p80211netdev_startup(void)
167{
168 DBFENTER;
169
170#ifdef CONFIG_PROC_FS
171 if (init_net.proc_net != NULL) {
172 proc_p80211 = create_proc_entry(
173 "p80211",
174 (S_IFDIR|S_IRUGO|S_IXUGO),
175 init_net.proc_net);
176 }
177#endif
178 DBFEXIT;
179 return;
180}
181
182/*----------------------------------------------------------------
183* p80211knetdev_shutdown
184*
185* Shutdown the wlandevice/netdevice part of 802.11 services at
186* unload time.
187*
188* Arguments:
189* none
190*
191* Returns:
192* nothing
193----------------------------------------------------------------*/
194void
195p80211netdev_shutdown(void)
196{
197 DBFENTER;
198#ifdef CONFIG_PROC_FS
199 if (proc_p80211 != NULL) {
200 remove_proc_entry("p80211", init_net.proc_net);
201 }
202#endif
203 DBFEXIT;
204}
205
206/*----------------------------------------------------------------
207* p80211knetdev_init
208*
209* Init method for a Linux netdevice. Called in response to
210* register_netdev.
211*
212* Arguments:
213* none
214*
215* Returns:
216* nothing
217----------------------------------------------------------------*/
218static int p80211knetdev_init( netdevice_t *netdev)
219{
220 DBFENTER;
221 /* Called in response to register_netdev */
222 /* This is usually the probe function, but the probe has */
223 /* already been done by the MSD and the create_kdev */
224 /* function. All we do here is return success */
225 DBFEXIT;
226 return 0;
227}
228
229
230/*----------------------------------------------------------------
231* p80211knetdev_get_stats
232*
233* Statistics retrieval for linux netdevices. Here we're reporting
234* the Linux i/f level statistics. Hence, for the primary numbers,
235* we don't want to report the numbers from the MIB. Eventually,
236* it might be useful to collect some of the error counters though.
237*
238* Arguments:
239* netdev Linux netdevice
240*
241* Returns:
242* the address of the statistics structure
243----------------------------------------------------------------*/
244static struct net_device_stats*
245p80211knetdev_get_stats(netdevice_t *netdev)
246{
247 wlandevice_t *wlandev = (wlandevice_t*)netdev->priv;
248 DBFENTER;
249
250 /* TODO: review the MIB stats for items that correspond to
251 linux stats */
252
253 DBFEXIT;
254 return &(wlandev->linux_stats);
255}
256
257
258/*----------------------------------------------------------------
259* p80211knetdev_open
260*
261* Linux netdevice open method. Following a successful call here,
262* the device is supposed to be ready for tx and rx. In our
263* situation that may not be entirely true due to the state of the
264* MAC below.
265*
266* Arguments:
267* netdev Linux network device structure
268*
269* Returns:
270* zero on success, non-zero otherwise
271----------------------------------------------------------------*/
272static int p80211knetdev_open( netdevice_t *netdev )
273{
274 int result = 0; /* success */
275 wlandevice_t *wlandev = (wlandevice_t*)(netdev->priv);
276
277 DBFENTER;
278
279 /* Check to make sure the MSD is running */
280 if ( wlandev->msdstate != WLAN_MSD_RUNNING ) {
281 return -ENODEV;
282 }
283
284 /* Tell the MSD to open */
285 if ( wlandev->open != NULL) {
286 result = wlandev->open(wlandev);
287 if ( result == 0 ) {
288#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,3,43) )
289 netdev->interrupt = 0;
290#endif
291 p80211netdev_start_queue(wlandev);
292 wlandev->state = WLAN_DEVICE_OPEN;
293 }
294 } else {
295 result = -EAGAIN;
296 }
297
298 DBFEXIT;
299 return result;
300}
301
302
303/*----------------------------------------------------------------
304* p80211knetdev_stop
305*
306* Linux netdevice stop (close) method. Following this call,
307* no frames should go up or down through this interface.
308*
309* Arguments:
310* netdev Linux network device structure
311*
312* Returns:
313* zero on success, non-zero otherwise
314----------------------------------------------------------------*/
315static int p80211knetdev_stop( netdevice_t *netdev )
316{
317 int result = 0;
318 wlandevice_t *wlandev = (wlandevice_t*)(netdev->priv);
319
320 DBFENTER;
321
322 if ( wlandev->close != NULL ) {
323 result = wlandev->close(wlandev);
324 }
325
326 p80211netdev_stop_queue(wlandev);
327 wlandev->state = WLAN_DEVICE_CLOSED;
328
329 DBFEXIT;
330 return result;
331}
332
333/*----------------------------------------------------------------
334* p80211netdev_rx
335*
336* Frame receive function called by the mac specific driver.
337*
338* Arguments:
339* wlandev WLAN network device structure
340* skb skbuff containing a full 802.11 frame.
341* Returns:
342* nothing
343* Side effects:
344*
345----------------------------------------------------------------*/
346void
347p80211netdev_rx(wlandevice_t *wlandev, struct sk_buff *skb )
348{
349 DBFENTER;
350
351 /* Enqueue for post-irq processing */
352 skb_queue_tail(&wlandev->nsd_rxq, skb);
353
354 tasklet_schedule(&wlandev->rx_bh);
355
356 DBFEXIT;
357 return;
358}
359
360/*----------------------------------------------------------------
361* p80211netdev_rx_bh
362*
363* Deferred processing of all received frames.
364*
365* Arguments:
366* wlandev WLAN network device structure
367* skb skbuff containing a full 802.11 frame.
368* Returns:
369* nothing
370* Side effects:
371*
372----------------------------------------------------------------*/
373static void p80211netdev_rx_bh(unsigned long arg)
374{
375 wlandevice_t *wlandev = (wlandevice_t *) arg;
376 struct sk_buff *skb = NULL;
377 netdevice_t *dev = wlandev->netdev;
378 p80211_hdr_a3_t *hdr;
379 UINT16 fc;
380
381 DBFENTER;
382
383 /* Let's empty our our queue */
384 while ( (skb = skb_dequeue(&wlandev->nsd_rxq)) ) {
385 if (wlandev->state == WLAN_DEVICE_OPEN) {
386
387 if (dev->type != ARPHRD_ETHER) {
388 /* RAW frame; we shouldn't convert it */
389 // XXX Append the Prism Header here instead.
390
391 /* set up various data fields */
392 skb->dev = dev;
393 skb_reset_mac_header(skb);
394 skb->ip_summed = CHECKSUM_NONE;
395 skb->pkt_type = PACKET_OTHERHOST;
396 skb->protocol = htons(ETH_P_80211_RAW);
397 dev->last_rx = jiffies;
398
399 wlandev->linux_stats.rx_packets++;
400 wlandev->linux_stats.rx_bytes += skb->len;
401 netif_rx_ni(skb);
402 continue;
403 } else {
404 hdr = (p80211_hdr_a3_t *)skb->data;
405 fc = ieee2host16(hdr->fc);
406 if (p80211_rx_typedrop(wlandev, fc)) {
407 dev_kfree_skb(skb);
408 continue;
409 }
410
411 /* perform mcast filtering */
412 if (wlandev->netdev->flags & IFF_ALLMULTI) {
413 /* allow my local address through */
414 if (memcmp(hdr->a1, wlandev->netdev->dev_addr, WLAN_ADDR_LEN) != 0) {
415 /* but reject anything else that isn't multicast */
416 if (!(hdr->a1[0] & 0x01)) {
417 dev_kfree_skb(skb);
418 continue;
419 }
420 }
421 }
422
423 if ( skb_p80211_to_ether(wlandev, wlandev->ethconv, skb) == 0 ) {
424 skb->dev->last_rx = jiffies;
425 wlandev->linux_stats.rx_packets++;
426 wlandev->linux_stats.rx_bytes += skb->len;
427 netif_rx_ni(skb);
428 continue;
429 }
430 WLAN_LOG_DEBUG(1, "p80211_to_ether failed.\n");
431 }
432 }
433 dev_kfree_skb(skb);
434 }
435
436 DBFEXIT;
437}
438
439
440/*----------------------------------------------------------------
441* p80211knetdev_hard_start_xmit
442*
443* Linux netdevice method for transmitting a frame.
444*
445* Arguments:
446* skb Linux sk_buff containing the frame.
447* netdev Linux netdevice.
448*
449* Side effects:
450* If the lower layers report that buffers are full. netdev->tbusy
451* will be set to prevent higher layers from sending more traffic.
452*
453* Note: If this function returns non-zero, higher layers retain
454* ownership of the skb.
455*
456* Returns:
457* zero on success, non-zero on failure.
458----------------------------------------------------------------*/
459static int p80211knetdev_hard_start_xmit( struct sk_buff *skb, netdevice_t *netdev)
460{
461 int result = 0;
462 int txresult = -1;
463 wlandevice_t *wlandev = (wlandevice_t*)netdev->priv;
464 p80211_hdr_t p80211_hdr;
465 p80211_metawep_t p80211_wep;
466
467 DBFENTER;
468
469 if (skb == NULL) {
470 return 0;
471 }
472
473 if (wlandev->state != WLAN_DEVICE_OPEN) {
474 result = 1;
475 goto failed;
476 }
477
478 memset(&p80211_hdr, 0, sizeof(p80211_hdr_t));
479 memset(&p80211_wep, 0, sizeof(p80211_metawep_t));
480
481#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )
482 if ( test_and_set_bit(0, (void*)&(netdev->tbusy)) != 0 ) {
483 /* We've been called w/ tbusy set, has the tx */
484 /* path stalled? */
485 WLAN_LOG_DEBUG(1, "called when tbusy set\n");
486 result = 1;
487 goto failed;
488 }
489#else
490 if ( netif_queue_stopped(netdev) ) {
491 WLAN_LOG_DEBUG(1, "called when queue stopped.\n");
492 result = 1;
493 goto failed;
494 }
495
496 netif_stop_queue(netdev);
497
498 /* No timeout handling here, 2.3.38+ kernels call the
499 * timeout function directly.
500 * TODO: Add timeout handling.
501 */
502#endif
503
504 /* Check to see that a valid mode is set */
505 switch( wlandev->macmode ) {
506 case WLAN_MACMODE_IBSS_STA:
507 case WLAN_MACMODE_ESS_STA:
508 case WLAN_MACMODE_ESS_AP:
509 break;
510 default:
511 /* Mode isn't set yet, just drop the frame
512 * and return success .
513 * TODO: we need a saner way to handle this
514 */
515 if(skb->protocol != ETH_P_80211_RAW) {
516 p80211netdev_start_queue(wlandev);
517 WLAN_LOG_NOTICE(
518 "Tx attempt prior to association, frame dropped.\n");
519 wlandev->linux_stats.tx_dropped++;
520 result = 0;
521 goto failed;
522 }
523 break;
524 }
525
526 /* Check for raw transmits */
527 if(skb->protocol == ETH_P_80211_RAW) {
528 if (!capable(CAP_NET_ADMIN)) {
529 result = 1;
530 goto failed;
531 }
532 /* move the header over */
533 memcpy(&p80211_hdr, skb->data, sizeof(p80211_hdr_t));
534 skb_pull(skb, sizeof(p80211_hdr_t));
535 } else {
536 if ( skb_ether_to_p80211(wlandev, wlandev->ethconv, skb, &p80211_hdr, &p80211_wep) != 0 ) {
537 /* convert failed */
538 WLAN_LOG_DEBUG(1, "ether_to_80211(%d) failed.\n",
539 wlandev->ethconv);
540 result = 1;
541 goto failed;
542 }
543 }
544 if ( wlandev->txframe == NULL ) {
545 result = 1;
546 goto failed;
547 }
548
549 netdev->trans_start = jiffies;
550
551 wlandev->linux_stats.tx_packets++;
552 /* count only the packet payload */
553 wlandev->linux_stats.tx_bytes += skb->len;
554
555 txresult = wlandev->txframe(wlandev, skb, &p80211_hdr, &p80211_wep);
556
557 if ( txresult == 0) {
558 /* success and more buf */
559 /* avail, re: hw_txdata */
560 p80211netdev_wake_queue(wlandev);
561 result = 0;
562 } else if ( txresult == 1 ) {
563 /* success, no more avail */
564 WLAN_LOG_DEBUG(3, "txframe success, no more bufs\n");
565 /* netdev->tbusy = 1; don't set here, irqhdlr */
566 /* may have already cleared it */
567 result = 0;
568 } else if ( txresult == 2 ) {
569 /* alloc failure, drop frame */
570 WLAN_LOG_DEBUG(3, "txframe returned alloc_fail\n");
571 result = 1;
572 } else {
573 /* buffer full or queue busy, drop frame. */
574 WLAN_LOG_DEBUG(3, "txframe returned full or busy\n");
575 result = 1;
576 }
577
578 failed:
579 /* Free up the WEP buffer if it's not the same as the skb */
580 if ((p80211_wep.data) && (p80211_wep.data != skb->data))
581 kfree(p80211_wep.data);
582
583 /* we always free the skb here, never in a lower level. */
584 if (!result)
585 dev_kfree_skb(skb);
586
587 DBFEXIT;
588 return result;
589}
590
591
592/*----------------------------------------------------------------
593* p80211knetdev_set_multicast_list
594*
595* Called from higher lavers whenever there's a need to set/clear
596* promiscuous mode or rewrite the multicast list.
597*
598* Arguments:
599* none
600*
601* Returns:
602* nothing
603----------------------------------------------------------------*/
604static void p80211knetdev_set_multicast_list(netdevice_t *dev)
605{
606 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
607
608 DBFENTER;
609
610 /* TODO: real multicast support as well */
611
612 if (wlandev->set_multicast_list)
613 wlandev->set_multicast_list(wlandev, dev);
614
615 DBFEXIT;
616}
617
618#ifdef SIOCETHTOOL
619
620static int p80211netdev_ethtool(wlandevice_t *wlandev, void __user *useraddr)
621{
622 UINT32 ethcmd;
623 struct ethtool_drvinfo info;
624 struct ethtool_value edata;
625
626 memset(&info, 0, sizeof(info));
627 memset(&edata, 0, sizeof(edata));
628
629 if (copy_from_user(&ethcmd, useraddr, sizeof(ethcmd)))
630 return -EFAULT;
631
632 switch (ethcmd) {
633 case ETHTOOL_GDRVINFO:
634 info.cmd = ethcmd;
635 snprintf(info.driver, sizeof(info.driver), "p80211_%s",
636 wlandev->nsdname);
637 snprintf(info.version, sizeof(info.version), "%s",
638 WLAN_RELEASE);
639
640 // info.fw_version
641 // info.bus_info
642
643 if (copy_to_user(useraddr, &info, sizeof(info)))
644 return -EFAULT;
645 return 0;
646#ifdef ETHTOOL_GLINK
647 case ETHTOOL_GLINK:
648 edata.cmd = ethcmd;
649
650 if (wlandev->linkstatus &&
651 (wlandev->macmode != WLAN_MACMODE_NONE)) {
652 edata.data = 1;
653 } else {
654 edata.data = 0;
655 }
656
657 if (copy_to_user(useraddr, &edata, sizeof(edata)))
658 return -EFAULT;
659 return 0;
660 }
661#endif
662
663 return -EOPNOTSUPP;
664}
665
666#endif
667
668/*----------------------------------------------------------------
669* p80211knetdev_do_ioctl
670*
671* Handle an ioctl call on one of our devices. Everything Linux
672* ioctl specific is done here. Then we pass the contents of the
673* ifr->data to the request message handler.
674*
675* Arguments:
676* dev Linux kernel netdevice
677* ifr Our private ioctl request structure, typed for the
678* generic struct ifreq so we can use ptr to func
679* w/o cast.
680*
681* Returns:
682* zero on success, a negative errno on failure. Possible values:
683* -ENETDOWN Device isn't up.
684* -EBUSY cmd already in progress
685* -ETIME p80211 cmd timed out (MSD may have its own timers)
686* -EFAULT memory fault copying msg from user buffer
687* -ENOMEM unable to allocate kernel msg buffer
688* -ENOSYS bad magic, it the cmd really for us?
689* -EINTR sleeping on cmd, awakened by signal, cmd cancelled.
690*
691* Call Context:
692* Process thread (ioctl caller). TODO: SMP support may require
693* locks.
694----------------------------------------------------------------*/
695static int p80211knetdev_do_ioctl(netdevice_t *dev, struct ifreq *ifr, int cmd)
696{
697 int result = 0;
698 p80211ioctl_req_t *req = (p80211ioctl_req_t*)ifr;
699 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
700 UINT8 *msgbuf;
701 DBFENTER;
702
703 WLAN_LOG_DEBUG(2, "rx'd ioctl, cmd=%d, len=%d\n", cmd, req->len);
704
705#if WIRELESS_EXT < 13
706 /* Is this a wireless extensions ioctl? */
707 if ((cmd >= SIOCIWFIRST) && (cmd <= SIOCIWLAST)) {
708 if ((result = p80211wext_support_ioctl(dev, ifr, cmd))
709 != (-EOPNOTSUPP)) {
710 goto bail;
711 }
712 }
713#endif
714
715#ifdef SIOCETHTOOL
716 if (cmd == SIOCETHTOOL) {
717 result = p80211netdev_ethtool(wlandev, (void __user *) ifr->ifr_data);
718 goto bail;
719 }
720#endif
721
722 /* Test the magic, assume ifr is good if it's there */
723 if ( req->magic != P80211_IOCTL_MAGIC ) {
724 result = -ENOSYS;
725 goto bail;
726 }
727
728 if ( cmd == P80211_IFTEST ) {
729 result = 0;
730 goto bail;
731 } else if ( cmd != P80211_IFREQ ) {
732 result = -ENOSYS;
733 goto bail;
734 }
735
736 /* Allocate a buf of size req->len */
737 if ((msgbuf = kmalloc( req->len, GFP_KERNEL))) {
738 if ( copy_from_user( msgbuf, (void __user *) req->data, req->len) ) {
739 result = -EFAULT;
740 } else {
741 result = p80211req_dorequest( wlandev, msgbuf);
742 }
743
744 if ( result == 0 ) {
745 if ( copy_to_user( (void __user *) req->data, msgbuf, req->len)) {
746 result = -EFAULT;
747 }
748 }
749 kfree(msgbuf);
750 } else {
751 result = -ENOMEM;
752 }
753bail:
754 DBFEXIT;
755
756 return result; /* If allocate,copyfrom or copyto fails, return errno */
757}
758
759/*----------------------------------------------------------------
760* p80211knetdev_set_mac_address
761*
762* Handles the ioctl for changing the MACAddress of a netdevice
763*
764* references: linux/netdevice.h and drivers/net/net_init.c
765*
766* NOTE: [MSM] We only prevent address changes when the netdev is
767* up. We don't control anything based on dot11 state. If the
768* address is changed on a STA that's currently associated, you
769* will probably lose the ability to send and receive data frames.
770* Just be aware. Therefore, this should usually only be done
771* prior to scan/join/auth/assoc.
772*
773* Arguments:
774* dev netdevice struct
775* addr the new MACAddress (a struct)
776*
777* Returns:
778* zero on success, a negative errno on failure. Possible values:
779* -EBUSY device is bussy (cmd not possible)
780* -and errors returned by: p80211req_dorequest(..)
781*
782* by: Collin R. Mulliner <collin@mulliner.org>
783----------------------------------------------------------------*/
784static int p80211knetdev_set_mac_address(netdevice_t *dev, void *addr)
785{
786 struct sockaddr *new_addr = addr;
787 p80211msg_dot11req_mibset_t dot11req;
788 p80211item_unk392_t *mibattr;
789 p80211item_pstr6_t *macaddr;
790 p80211item_uint32_t *resultcode;
791 int result = 0;
792
793 DBFENTER;
794 /* If we're running, we don't allow MAC address changes */
795#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )
796 if ( dev->start) {
797 return -EBUSY;
798 }
799#else
800 if (netif_running(dev)) {
801 return -EBUSY;
802 }
803#endif
804
805 /* Set up some convenience pointers. */
806 mibattr = &dot11req.mibattribute;
807 macaddr = (p80211item_pstr6_t*)&mibattr->data;
808 resultcode = &dot11req.resultcode;
809
810 /* Set up a dot11req_mibset */
811 memset(&dot11req, 0, sizeof(p80211msg_dot11req_mibset_t));
812 dot11req.msgcode = DIDmsg_dot11req_mibset;
813 dot11req.msglen = sizeof(p80211msg_dot11req_mibset_t);
814 memcpy(dot11req.devname,
815 ((wlandevice_t*)(dev->priv))->name,
816 WLAN_DEVNAMELEN_MAX - 1);
817
818 /* Set up the mibattribute argument */
819 mibattr->did = DIDmsg_dot11req_mibset_mibattribute;
820 mibattr->status = P80211ENUM_msgitem_status_data_ok;
821 mibattr->len = sizeof(mibattr->data);
822
823 macaddr->did = DIDmib_dot11mac_dot11OperationTable_dot11MACAddress;
824 macaddr->status = P80211ENUM_msgitem_status_data_ok;
825 macaddr->len = sizeof(macaddr->data);
826 macaddr->data.len = WLAN_ADDR_LEN;
827 memcpy(&macaddr->data.data, new_addr->sa_data, WLAN_ADDR_LEN);
828
829 /* Set up the resultcode argument */
830 resultcode->did = DIDmsg_dot11req_mibset_resultcode;
831 resultcode->status = P80211ENUM_msgitem_status_no_value;
832 resultcode->len = sizeof(resultcode->data);
833 resultcode->data = 0;
834
835 /* now fire the request */
836 result = p80211req_dorequest(dev->priv, (UINT8*)&dot11req);
837
838 /* If the request wasn't successful, report an error and don't
839 * change the netdev address
840 */
841 if ( result != 0 || resultcode->data != P80211ENUM_resultcode_success) {
842 WLAN_LOG_ERROR(
843 "Low-level driver failed dot11req_mibset(dot11MACAddress).\n");
844 result = -EADDRNOTAVAIL;
845 } else {
846 /* everything's ok, change the addr in netdev */
847 memcpy(dev->dev_addr, new_addr->sa_data, dev->addr_len);
848 }
849
850 DBFEXIT;
851 return result;
852}
853
854static int wlan_change_mtu(netdevice_t *dev, int new_mtu)
855{
856 DBFENTER;
857 // 2312 is max 802.11 payload, 20 is overhead, (ether + llc +snap)
858 // and another 8 for wep.
859 if ( (new_mtu < 68) || (new_mtu > (2312 - 20 - 8)))
860 return -EINVAL;
861
862 dev->mtu = new_mtu;
863
864 DBFEXIT;
865
866 return 0;
867}
868
869
870
871/*----------------------------------------------------------------
872* wlan_setup
873*
874* Roughly matches the functionality of ether_setup. Here
875* we set up any members of the wlandevice structure that are common
876* to all devices. Additionally, we allocate a linux 'struct device'
877* and perform the same setup as ether_setup.
878*
879* Note: It's important that the caller have setup the wlandev->name
880* ptr prior to calling this function.
881*
882* Arguments:
883* wlandev ptr to the wlandev structure for the
884* interface.
885* Returns:
886* zero on success, non-zero otherwise.
887* Call Context:
888* Should be process thread. We'll assume it might be
889* interrupt though. When we add support for statically
890* compiled drivers, this function will be called in the
891* context of the kernel startup code.
892----------------------------------------------------------------*/
893int wlan_setup(wlandevice_t *wlandev)
894{
895 int result = 0;
896 netdevice_t *dev;
897
898 DBFENTER;
899
900 /* Set up the wlandev */
901 wlandev->state = WLAN_DEVICE_CLOSED;
902 wlandev->ethconv = WLAN_ETHCONV_8021h;
903 wlandev->macmode = WLAN_MACMODE_NONE;
904
905 /* Set up the rx queue */
906 skb_queue_head_init(&wlandev->nsd_rxq);
907 tasklet_init(&wlandev->rx_bh,
908 p80211netdev_rx_bh,
909 (unsigned long)wlandev);
910
911 /* Allocate and initialize the struct device */
912 dev = kmalloc(sizeof(netdevice_t), GFP_ATOMIC);
913 if ( dev == NULL ) {
914 WLAN_LOG_ERROR("Failed to alloc netdev.\n");
915 result = 1;
916 } else {
917 memset( dev, 0, sizeof(netdevice_t));
918 ether_setup(dev);
919 wlandev->netdev = dev;
920 dev->priv = wlandev;
921 dev->hard_start_xmit = p80211knetdev_hard_start_xmit;
922 dev->get_stats = p80211knetdev_get_stats;
923#ifdef HAVE_PRIVATE_IOCTL
924 dev->do_ioctl = p80211knetdev_do_ioctl;
925#endif
926#ifdef HAVE_MULTICAST
927 dev->set_multicast_list = p80211knetdev_set_multicast_list;
928#endif
929 dev->init = p80211knetdev_init;
930 dev->open = p80211knetdev_open;
931 dev->stop = p80211knetdev_stop;
932
933#ifdef CONFIG_NET_WIRELESS
934#if ((WIRELESS_EXT < 17) && (WIRELESS_EXT < 21))
935 dev->get_wireless_stats = p80211wext_get_wireless_stats;
936#endif
937#if WIRELESS_EXT > 12
938 dev->wireless_handlers = &p80211wext_handler_def;
939#endif
940#endif
941
942#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )
943 dev->tbusy = 1;
944 dev->start = 0;
945#else
946 netif_stop_queue(dev);
947#endif
948#ifdef HAVE_CHANGE_MTU
949 dev->change_mtu = wlan_change_mtu;
950#endif
951#ifdef HAVE_SET_MAC_ADDR
952 dev->set_mac_address = p80211knetdev_set_mac_address;
953#endif
954#ifdef HAVE_TX_TIMEOUT
955 dev->tx_timeout = &p80211knetdev_tx_timeout;
956 dev->watchdog_timeo = (wlan_watchdog * HZ) / 1000;
957#endif
958 netif_carrier_off(dev);
959 }
960
961 DBFEXIT;
962 return result;
963}
964
965/*----------------------------------------------------------------
966* wlan_unsetup
967*
968* This function is paired with the wlan_setup routine. It should
969* be called after unregister_wlandev. Basically, all it does is
970* free the 'struct device' that's associated with the wlandev.
971* We do it here because the 'struct device' isn't allocated
972* explicitly in the driver code, it's done in wlan_setup. To
973* do the free in the driver might seem like 'magic'.
974*
975* Arguments:
976* wlandev ptr to the wlandev structure for the
977* interface.
978* Returns:
979* zero on success, non-zero otherwise.
980* Call Context:
981* Should be process thread. We'll assume it might be
982* interrupt though. When we add support for statically
983* compiled drivers, this function will be called in the
984* context of the kernel startup code.
985----------------------------------------------------------------*/
986int wlan_unsetup(wlandevice_t *wlandev)
987{
988 int result = 0;
989
990 DBFENTER;
991
992 tasklet_kill(&wlandev->rx_bh);
993
994 if (wlandev->netdev == NULL ) {
995 WLAN_LOG_ERROR("called without wlandev->netdev set.\n");
996 result = 1;
997 } else {
998 free_netdev(wlandev->netdev);
999 wlandev->netdev = NULL;
1000 }
1001
1002 DBFEXIT;
1003 return 0;
1004}
1005
1006
1007
1008/*----------------------------------------------------------------
1009* register_wlandev
1010*
1011* Roughly matches the functionality of register_netdev. This function
1012* is called after the driver has successfully probed and set up the
1013* resources for the device. It's now ready to become a named device
1014* in the Linux system.
1015*
1016* First we allocate a name for the device (if not already set), then
1017* we call the Linux function register_netdevice.
1018*
1019* Arguments:
1020* wlandev ptr to the wlandev structure for the
1021* interface.
1022* Returns:
1023* zero on success, non-zero otherwise.
1024* Call Context:
1025* Can be either interrupt or not.
1026----------------------------------------------------------------*/
1027int register_wlandev(wlandevice_t *wlandev)
1028{
1029 int i = 0;
1030 netdevice_t *dev = wlandev->netdev;
1031
1032 DBFENTER;
1033
1034 i = dev_alloc_name(wlandev->netdev, "wlan%d");
1035 if (i >= 0) {
1036 i = register_netdev(wlandev->netdev);
1037 }
1038 if (i != 0) {
1039 return -EIO;
1040 }
1041
1042#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0) )
1043 dev->name = wlandev->name;
1044#else
1045 strcpy(wlandev->name, dev->name);
1046#endif
1047
1048#ifdef CONFIG_PROC_FS
1049 if (proc_p80211) {
1050 wlandev->procdir = proc_mkdir(wlandev->name, proc_p80211);
1051 if ( wlandev->procdir )
1052 wlandev->procwlandev =
1053 create_proc_read_entry("wlandev", 0,
1054 wlandev->procdir,
1055 p80211netdev_proc_read,
1056 wlandev);
1057 if (wlandev->nsd_proc_read)
1058 create_proc_read_entry("nsd", 0,
1059 wlandev->procdir,
1060 wlandev->nsd_proc_read,
1061 wlandev);
1062 }
1063#endif
1064
1065#ifdef CONFIG_HOTPLUG
1066 p80211_run_sbin_hotplug(wlandev, WLAN_HOTPLUG_REGISTER);
1067#endif
1068
1069 DBFEXIT;
1070 return 0;
1071}
1072
1073
1074/*----------------------------------------------------------------
1075* unregister_wlandev
1076*
1077* Roughly matches the functionality of unregister_netdev. This
1078* function is called to remove a named device from the system.
1079*
1080* First we tell linux that the device should no longer exist.
1081* Then we remove it from the list of known wlan devices.
1082*
1083* Arguments:
1084* wlandev ptr to the wlandev structure for the
1085* interface.
1086* Returns:
1087* zero on success, non-zero otherwise.
1088* Call Context:
1089* Can be either interrupt or not.
1090----------------------------------------------------------------*/
1091int unregister_wlandev(wlandevice_t *wlandev)
1092{
1093 struct sk_buff *skb;
1094
1095 DBFENTER;
1096
1097#ifdef CONFIG_HOTPLUG
1098 p80211_run_sbin_hotplug(wlandev, WLAN_HOTPLUG_REMOVE);
1099#endif
1100
1101#ifdef CONFIG_PROC_FS
1102 if ( wlandev->procwlandev ) {
1103 remove_proc_entry("wlandev", wlandev->procdir);
1104 }
1105 if ( wlandev->nsd_proc_read ) {
1106 remove_proc_entry("nsd", wlandev->procdir);
1107 }
1108 if (wlandev->procdir) {
1109 remove_proc_entry(wlandev->name, proc_p80211);
1110 }
1111#endif
1112
1113 unregister_netdev(wlandev->netdev);
1114
1115 /* Now to clean out the rx queue */
1116 while ( (skb = skb_dequeue(&wlandev->nsd_rxq)) ) {
1117 dev_kfree_skb(skb);
1118 }
1119
1120 DBFEXIT;
1121 return 0;
1122}
1123
1124#ifdef CONFIG_PROC_FS
1125/*----------------------------------------------------------------
1126* proc_read
1127*
1128* Read function for /proc/net/p80211/<device>/wlandev
1129*
1130* Arguments:
1131* buf
1132* start
1133* offset
1134* count
1135* eof
1136* data
1137* Returns:
1138* zero on success, non-zero otherwise.
1139* Call Context:
1140* Can be either interrupt or not.
1141----------------------------------------------------------------*/
1142static int
1143p80211netdev_proc_read(
1144 char *page,
1145 char **start,
1146 off_t offset,
1147 int count,
1148 int *eof,
1149 void *data)
1150{
1151 char *p = page;
1152 wlandevice_t *wlandev = (wlandevice_t *) data;
1153
1154 DBFENTER;
1155 if (offset != 0) {
1156 *eof = 1;
1157 goto exit;
1158 }
1159
1160 p += sprintf(p, "p80211 version: %s (%s)\n\n",
1161 WLAN_RELEASE, WLAN_BUILD_DATE);
1162 p += sprintf(p, "name : %s\n", wlandev->name);
1163 p += sprintf(p, "nsd name : %s\n", wlandev->nsdname);
1164 p += sprintf(p, "address : %02x:%02x:%02x:%02x:%02x:%02x\n",
1165 wlandev->netdev->dev_addr[0], wlandev->netdev->dev_addr[1], wlandev->netdev->dev_addr[2],
1166 wlandev->netdev->dev_addr[3], wlandev->netdev->dev_addr[4], wlandev->netdev->dev_addr[5]);
1167 p += sprintf(p, "nsd caps : %s%s%s%s%s%s%s%s%s%s\n",
1168 (wlandev->nsdcaps & P80211_NSDCAP_HARDWAREWEP) ? "wep_hw " : "",
1169 (wlandev->nsdcaps & P80211_NSDCAP_TIEDWEP) ? "wep_tied " : "",
1170 (wlandev->nsdcaps & P80211_NSDCAP_NOHOSTWEP) ? "wep_hw_only " : "",
1171 (wlandev->nsdcaps & P80211_NSDCAP_PBCC) ? "pbcc " : "",
1172 (wlandev->nsdcaps & P80211_NSDCAP_SHORT_PREAMBLE) ? "short_preamble " : "",
1173 (wlandev->nsdcaps & P80211_NSDCAP_AGILITY) ? "agility " : "",
1174 (wlandev->nsdcaps & P80211_NSDCAP_AP_RETRANSMIT) ? "ap_retransmit " : "",
1175 (wlandev->nsdcaps & P80211_NSDCAP_HWFRAGMENT) ? "hw_frag " : "",
1176 (wlandev->nsdcaps & P80211_NSDCAP_AUTOJOIN) ? "autojoin " : "",
1177 (wlandev->nsdcaps & P80211_NSDCAP_NOSCAN) ? "" : "scan ");
1178
1179
1180 p += sprintf(p, "bssid : %02x:%02x:%02x:%02x:%02x:%02x\n",
1181 wlandev->bssid[0], wlandev->bssid[1], wlandev->bssid[2],
1182 wlandev->bssid[3], wlandev->bssid[4], wlandev->bssid[5]);
1183
1184 p += sprintf(p, "Enabled : %s%s\n",
1185 (wlandev->shortpreamble) ? "short_preamble " : "",
1186 (wlandev->hostwep & HOSTWEP_PRIVACYINVOKED) ? "privacy" : "");
1187
1188
1189 exit:
1190 DBFEXIT;
1191 return (p - page);
1192}
1193#endif
1194
1195/*----------------------------------------------------------------
1196* p80211netdev_hwremoved
1197*
1198* Hardware removed notification. This function should be called
1199* immediately after an MSD has detected that the underlying hardware
1200* has been yanked out from under us. The primary things we need
1201* to do are:
1202* - Mark the wlandev
1203* - Prevent any further traffic from the knetdev i/f
1204* - Prevent any further requests from mgmt i/f
1205* - If there are any waitq'd mgmt requests or mgmt-frame exchanges,
1206* shut them down.
1207* - Call the MSD hwremoved function.
1208*
1209* The remainder of the cleanup will be handled by unregister().
1210* Our primary goal here is to prevent as much tickling of the MSD
1211* as possible since the MSD is already in a 'wounded' state.
1212*
1213* TODO: As new features are added, this function should be
1214* updated.
1215*
1216* Arguments:
1217* wlandev WLAN network device structure
1218* Returns:
1219* nothing
1220* Side effects:
1221*
1222* Call context:
1223* Usually interrupt.
1224----------------------------------------------------------------*/
1225void p80211netdev_hwremoved(wlandevice_t *wlandev)
1226{
1227 DBFENTER;
1228 wlandev->hwremoved = 1;
1229 if ( wlandev->state == WLAN_DEVICE_OPEN) {
1230 p80211netdev_stop_queue(wlandev);
1231 }
1232
1233 netif_device_detach(wlandev->netdev);
1234
1235 DBFEXIT;
1236}
1237
1238
1239/*----------------------------------------------------------------
1240* p80211_rx_typedrop
1241*
1242* Classifies the frame, increments the appropriate counter, and
1243* returns 0|1|2 indicating whether the driver should handle, ignore, or
1244* drop the frame
1245*
1246* Arguments:
1247* wlandev wlan device structure
1248* fc frame control field
1249*
1250* Returns:
1251* zero if the frame should be handled by the driver,
1252* one if the frame should be ignored
1253* anything else means we drop it.
1254*
1255* Side effects:
1256*
1257* Call context:
1258* interrupt
1259----------------------------------------------------------------*/
1260static int p80211_rx_typedrop( wlandevice_t *wlandev, UINT16 fc)
1261{
1262 UINT16 ftype;
1263 UINT16 fstype;
1264 int drop = 0;
1265 /* Classify frame, increment counter */
1266 ftype = WLAN_GET_FC_FTYPE(fc);
1267 fstype = WLAN_GET_FC_FSTYPE(fc);
1268#if 0
1269 WLAN_LOG_DEBUG(4,
1270 "rx_typedrop : ftype=%d fstype=%d.\n", ftype, fstype);
1271#endif
1272 switch ( ftype ) {
1273 case WLAN_FTYPE_MGMT:
1274 if ((wlandev->netdev->flags & IFF_PROMISC) ||
1275 (wlandev->netdev->flags & IFF_ALLMULTI)) {
1276 drop = 1;
1277 break;
1278 }
1279 WLAN_LOG_DEBUG(3, "rx'd mgmt:\n");
1280 wlandev->rx.mgmt++;
1281 switch( fstype ) {
1282 case WLAN_FSTYPE_ASSOCREQ:
1283 /* printk("assocreq"); */
1284 wlandev->rx.assocreq++;
1285 break;
1286 case WLAN_FSTYPE_ASSOCRESP:
1287 /* printk("assocresp"); */
1288 wlandev->rx.assocresp++;
1289 break;
1290 case WLAN_FSTYPE_REASSOCREQ:
1291 /* printk("reassocreq"); */
1292 wlandev->rx.reassocreq++;
1293 break;
1294 case WLAN_FSTYPE_REASSOCRESP:
1295 /* printk("reassocresp"); */
1296 wlandev->rx.reassocresp++;
1297 break;
1298 case WLAN_FSTYPE_PROBEREQ:
1299 /* printk("probereq"); */
1300 wlandev->rx.probereq++;
1301 break;
1302 case WLAN_FSTYPE_PROBERESP:
1303 /* printk("proberesp"); */
1304 wlandev->rx.proberesp++;
1305 break;
1306 case WLAN_FSTYPE_BEACON:
1307 /* printk("beacon"); */
1308 wlandev->rx.beacon++;
1309 break;
1310 case WLAN_FSTYPE_ATIM:
1311 /* printk("atim"); */
1312 wlandev->rx.atim++;
1313 break;
1314 case WLAN_FSTYPE_DISASSOC:
1315 /* printk("disassoc"); */
1316 wlandev->rx.disassoc++;
1317 break;
1318 case WLAN_FSTYPE_AUTHEN:
1319 /* printk("authen"); */
1320 wlandev->rx.authen++;
1321 break;
1322 case WLAN_FSTYPE_DEAUTHEN:
1323 /* printk("deauthen"); */
1324 wlandev->rx.deauthen++;
1325 break;
1326 default:
1327 /* printk("unknown"); */
1328 wlandev->rx.mgmt_unknown++;
1329 break;
1330 }
1331 /* printk("\n"); */
1332 drop = 2;
1333 break;
1334
1335 case WLAN_FTYPE_CTL:
1336 if ((wlandev->netdev->flags & IFF_PROMISC) ||
1337 (wlandev->netdev->flags & IFF_ALLMULTI)) {
1338 drop = 1;
1339 break;
1340 }
1341 WLAN_LOG_DEBUG(3, "rx'd ctl:\n");
1342 wlandev->rx.ctl++;
1343 switch( fstype ) {
1344 case WLAN_FSTYPE_PSPOLL:
1345 /* printk("pspoll"); */
1346 wlandev->rx.pspoll++;
1347 break;
1348 case WLAN_FSTYPE_RTS:
1349 /* printk("rts"); */
1350 wlandev->rx.rts++;
1351 break;
1352 case WLAN_FSTYPE_CTS:
1353 /* printk("cts"); */
1354 wlandev->rx.cts++;
1355 break;
1356 case WLAN_FSTYPE_ACK:
1357 /* printk("ack"); */
1358 wlandev->rx.ack++;
1359 break;
1360 case WLAN_FSTYPE_CFEND:
1361 /* printk("cfend"); */
1362 wlandev->rx.cfend++;
1363 break;
1364 case WLAN_FSTYPE_CFENDCFACK:
1365 /* printk("cfendcfack"); */
1366 wlandev->rx.cfendcfack++;
1367 break;
1368 default:
1369 /* printk("unknown"); */
1370 wlandev->rx.ctl_unknown++;
1371 break;
1372 }
1373 /* printk("\n"); */
1374 drop = 2;
1375 break;
1376
1377 case WLAN_FTYPE_DATA:
1378 wlandev->rx.data++;
1379 switch( fstype ) {
1380 case WLAN_FSTYPE_DATAONLY:
1381 wlandev->rx.dataonly++;
1382 break;
1383 case WLAN_FSTYPE_DATA_CFACK:
1384 wlandev->rx.data_cfack++;
1385 break;
1386 case WLAN_FSTYPE_DATA_CFPOLL:
1387 wlandev->rx.data_cfpoll++;
1388 break;
1389 case WLAN_FSTYPE_DATA_CFACK_CFPOLL:
1390 wlandev->rx.data__cfack_cfpoll++;
1391 break;
1392 case WLAN_FSTYPE_NULL:
1393 WLAN_LOG_DEBUG(3, "rx'd data:null\n");
1394 wlandev->rx.null++;
1395 break;
1396 case WLAN_FSTYPE_CFACK:
1397 WLAN_LOG_DEBUG(3, "rx'd data:cfack\n");
1398 wlandev->rx.cfack++;
1399 break;
1400 case WLAN_FSTYPE_CFPOLL:
1401 WLAN_LOG_DEBUG(3, "rx'd data:cfpoll\n");
1402 wlandev->rx.cfpoll++;
1403 break;
1404 case WLAN_FSTYPE_CFACK_CFPOLL:
1405 WLAN_LOG_DEBUG(3, "rx'd data:cfack_cfpoll\n");
1406 wlandev->rx.cfack_cfpoll++;
1407 break;
1408 default:
1409 /* printk("unknown"); */
1410 wlandev->rx.data_unknown++;
1411 break;
1412 }
1413
1414 break;
1415 }
1416 return drop;
1417}
1418
1419#ifdef CONFIG_HOTPLUG
1420/* Notify userspace when a netdevice event occurs,
1421 * by running '/sbin/hotplug net' with certain
1422 * environment variables set.
1423 */
1424int p80211_run_sbin_hotplug(wlandevice_t *wlandev, char *action)
1425{
1426 char *argv[3], *envp[7], ifname[12 + IFNAMSIZ], action_str[32];
1427 char nsdname[32], wlan_wext[32];
1428 int i;
1429
1430 if (wlandev) {
1431 sprintf(ifname, "INTERFACE=%s", wlandev->name);
1432 sprintf(nsdname, "NSDNAME=%s", wlandev->nsdname);
1433 } else {
1434 sprintf(ifname, "INTERFACE=null");
1435 sprintf(nsdname, "NSDNAME=null");
1436 }
1437
1438 sprintf(wlan_wext, "WLAN_WEXT=%s", wlan_wext_write ? "y" : "");
1439 sprintf(action_str, "ACTION=%s", action);
1440
1441 i = 0;
1442 argv[i++] = hotplug_path;
1443 argv[i++] = "wlan";
1444 argv[i] = NULL;
1445
1446 i = 0;
1447 /* minimal command environment */
1448 envp [i++] = "HOME=/";
1449 envp [i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
1450 envp [i++] = ifname;
1451 envp [i++] = action_str;
1452 envp [i++] = nsdname;
1453 envp [i++] = wlan_wext;
1454 envp [i] = NULL;
1455
1456#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,62))
1457 return call_usermodehelper(argv [0], argv, envp);
1458#else
1459 return call_usermodehelper(argv [0], argv, envp, 0);
1460#endif
1461}
1462
1463#endif
1464
1465
1466void p80211_suspend(wlandevice_t *wlandev)
1467{
1468 DBFENTER;
1469
1470#ifdef CONFIG_HOTPLUG
1471 p80211_run_sbin_hotplug(wlandev, WLAN_HOTPLUG_SUSPEND);
1472#endif
1473
1474 DBFEXIT;
1475}
1476
1477void p80211_resume(wlandevice_t *wlandev)
1478{
1479 DBFENTER;
1480
1481#ifdef CONFIG_HOTPLUG
1482 p80211_run_sbin_hotplug(wlandev, WLAN_HOTPLUG_RESUME);
1483#endif
1484
1485 DBFEXIT;
1486}
1487
1488static void p80211knetdev_tx_timeout( netdevice_t *netdev)
1489{
1490 wlandevice_t *wlandev = (wlandevice_t*)netdev->priv;
1491 DBFENTER;
1492
1493 if (wlandev->tx_timeout) {
1494 wlandev->tx_timeout(wlandev);
1495 } else {
1496 WLAN_LOG_WARNING("Implement tx_timeout for %s\n",
1497 wlandev->nsdname);
1498 p80211netdev_wake_queue(wlandev);
1499 }
1500
1501 DBFEXIT;
1502}
diff --git a/drivers/staging/wlan-ng/p80211netdev.h b/drivers/staging/wlan-ng/p80211netdev.h
new file mode 100644
index 00000000000..9b2e0cdcb44
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211netdev.h
@@ -0,0 +1,336 @@
1/* p80211netdev.h
2*
3* WLAN net device structure and functions
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares the structure type that represents each wlan
48* interface.
49*
50* --------------------------------------------------------------------
51*/
52
53#ifndef _LINUX_P80211NETDEV_H
54#define _LINUX_P80211NETDEV_H
55
56#include <linux/interrupt.h>
57#include <linux/wireless.h>
58
59/*================================================================*/
60/* Constants */
61
62#define WLAN_DEVICE_CLOSED 0
63#define WLAN_DEVICE_OPEN 1
64
65#define WLAN_MACMODE_NONE 0
66#define WLAN_MACMODE_IBSS_STA 1
67#define WLAN_MACMODE_ESS_STA 2
68#define WLAN_MACMODE_ESS_AP 3
69
70/* MSD States */
71#define WLAN_MSD_START -1
72#define WLAN_MSD_DRIVERLOADED 0
73#define WLAN_MSD_HWPRESENT_PENDING 1
74#define WLAN_MSD_HWFAIL 2
75#define WLAN_MSD_HWPRESENT 3
76#define WLAN_MSD_FWLOAD_PENDING 4
77#define WLAN_MSD_FWLOAD 5
78#define WLAN_MSD_RUNNING_PENDING 6
79#define WLAN_MSD_RUNNING 7
80
81#ifndef ETH_P_ECONET
82#define ETH_P_ECONET 0x0018 /* needed for 2.2.x kernels */
83#endif
84
85#define ETH_P_80211_RAW (ETH_P_ECONET + 1)
86
87#ifndef ARPHRD_IEEE80211
88#define ARPHRD_IEEE80211 801 /* kernel 2.4.6 */
89#endif
90
91#ifndef ARPHRD_IEEE80211_PRISM /* kernel 2.4.18 */
92#define ARPHRD_IEEE80211_PRISM 802
93#endif
94
95/*--- NSD Capabilities Flags ------------------------------*/
96#define P80211_NSDCAP_HARDWAREWEP 0x01 /* hardware wep engine */
97#define P80211_NSDCAP_TIEDWEP 0x02 /* can't decouple en/de */
98#define P80211_NSDCAP_NOHOSTWEP 0x04 /* must use hardware wep */
99#define P80211_NSDCAP_PBCC 0x08 /* hardware supports PBCC */
100#define P80211_NSDCAP_SHORT_PREAMBLE 0x10 /* hardware supports */
101#define P80211_NSDCAP_AGILITY 0x20 /* hardware supports */
102#define P80211_NSDCAP_AP_RETRANSMIT 0x40 /* nsd handles retransmits */
103#define P80211_NSDCAP_HWFRAGMENT 0x80 /* nsd handles frag/defrag */
104#define P80211_NSDCAP_AUTOJOIN 0x100 /* nsd does autojoin */
105#define P80211_NSDCAP_NOSCAN 0x200 /* nsd can scan */
106
107/*================================================================*/
108/* Macros */
109
110/*================================================================*/
111/* Types */
112
113/* Received frame statistics */
114typedef struct p80211_frmrx_t
115{
116 UINT32 mgmt;
117 UINT32 assocreq;
118 UINT32 assocresp;
119 UINT32 reassocreq;
120 UINT32 reassocresp;
121 UINT32 probereq;
122 UINT32 proberesp;
123 UINT32 beacon;
124 UINT32 atim;
125 UINT32 disassoc;
126 UINT32 authen;
127 UINT32 deauthen;
128 UINT32 mgmt_unknown;
129 UINT32 ctl;
130 UINT32 pspoll;
131 UINT32 rts;
132 UINT32 cts;
133 UINT32 ack;
134 UINT32 cfend;
135 UINT32 cfendcfack;
136 UINT32 ctl_unknown;
137 UINT32 data;
138 UINT32 dataonly;
139 UINT32 data_cfack;
140 UINT32 data_cfpoll;
141 UINT32 data__cfack_cfpoll;
142 UINT32 null;
143 UINT32 cfack;
144 UINT32 cfpoll;
145 UINT32 cfack_cfpoll;
146 UINT32 data_unknown;
147 UINT32 decrypt;
148 UINT32 decrypt_err;
149} p80211_frmrx_t;
150
151#ifdef WIRELESS_EXT
152/* called by /proc/net/wireless */
153struct iw_statistics* p80211wext_get_wireless_stats(netdevice_t *dev);
154/* wireless extensions' ioctls */
155int p80211wext_support_ioctl(netdevice_t *dev, struct ifreq *ifr, int cmd);
156#if WIRELESS_EXT > 12
157extern struct iw_handler_def p80211wext_handler_def;
158#endif
159
160int p80211wext_event_associated(struct wlandevice *wlandev, int assoc);
161
162#endif /* wireless extensions */
163
164/* WEP stuff */
165#define NUM_WEPKEYS 4
166#define MAX_KEYLEN 32
167
168#define HOSTWEP_DEFAULTKEY_MASK (BIT1|BIT0)
169#define HOSTWEP_DECRYPT BIT4
170#define HOSTWEP_ENCRYPT BIT5
171#define HOSTWEP_PRIVACYINVOKED BIT6
172#define HOSTWEP_EXCLUDEUNENCRYPTED BIT7
173
174extern int wlan_watchdog;
175extern int wlan_wext_write;
176
177/* WLAN device type */
178typedef struct wlandevice
179{
180 struct wlandevice *next; /* link for list of devices */
181 void *priv; /* private data for MSD */
182
183 /* Subsystem State */
184 char name[WLAN_DEVNAMELEN_MAX]; /* Dev name, from register_wlandev()*/
185 char *nsdname;
186
187 UINT32 state; /* Device I/F state (open/closed) */
188 UINT32 msdstate; /* state of underlying driver */
189 UINT32 hwremoved; /* Has the hw been yanked out? */
190
191 /* Hardware config */
192 UINT irq;
193 UINT iobase;
194 UINT membase;
195 UINT32 nsdcaps; /* NSD Capabilities flags */
196
197 /* Config vars */
198 UINT ethconv;
199
200 /* device methods (init by MSD, used by p80211 */
201 int (*open)(struct wlandevice *wlandev);
202 int (*close)(struct wlandevice *wlandev);
203 void (*reset)(struct wlandevice *wlandev );
204 int (*txframe)(struct wlandevice *wlandev, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);
205 int (*mlmerequest)(struct wlandevice *wlandev, p80211msg_t *msg);
206 int (*set_multicast_list)(struct wlandevice *wlandev,
207 netdevice_t *dev);
208 void (*tx_timeout)(struct wlandevice *wlandev);
209
210#ifdef CONFIG_PROC_FS
211 int (*nsd_proc_read)(char *page, char **start, off_t offset, int count, int *eof, void *data);
212#endif
213
214 /* 802.11 State */
215 UINT8 bssid[WLAN_BSSID_LEN];
216 p80211pstr32_t ssid;
217 UINT32 macmode;
218 int linkstatus;
219 int shortpreamble; /* C bool */
220
221 /* WEP State */
222 UINT8 wep_keys[NUM_WEPKEYS][MAX_KEYLEN];
223 UINT8 wep_keylens[NUM_WEPKEYS];
224 int hostwep;
225
226 /* Request/Confirm i/f state (used by p80211) */
227 unsigned long request_pending; /* flag, access atomically */
228
229 /* netlink socket */
230 /* queue for indications waiting for cmd completion */
231 /* Linux netdevice and support */
232 netdevice_t *netdev; /* ptr to linux netdevice */
233 struct net_device_stats linux_stats;
234
235#ifdef CONFIG_PROC_FS
236 /* Procfs support */
237 struct proc_dir_entry *procdir;
238 struct proc_dir_entry *procwlandev;
239#endif
240
241 /* Rx bottom half */
242 struct tasklet_struct rx_bh;
243
244 struct sk_buff_head nsd_rxq;
245
246 /* 802.11 device statistics */
247 struct p80211_frmrx_t rx;
248
249/* compatibility to wireless extensions */
250#ifdef WIRELESS_EXT
251 struct iw_statistics wstats;
252
253 /* jkriegl: iwspy fields */
254 UINT8 spy_number;
255 char spy_address[IW_MAX_SPY][ETH_ALEN];
256 struct iw_quality spy_stat[IW_MAX_SPY];
257
258#endif
259
260} wlandevice_t;
261
262/* WEP stuff */
263int wep_change_key(wlandevice_t *wlandev, int keynum, UINT8* key, int keylen);
264int wep_decrypt(wlandevice_t *wlandev, UINT8 *buf, UINT32 len, int key_override, UINT8 *iv, UINT8 *icv);
265int wep_encrypt(wlandevice_t *wlandev, UINT8 *buf, UINT8 *dst, UINT32 len, int keynum, UINT8 *iv, UINT8 *icv);
266
267/*================================================================*/
268/* Externs */
269
270/*================================================================*/
271/* Function Declarations */
272
273void p80211netdev_startup(void);
274void p80211netdev_shutdown(void);
275int wlan_setup(wlandevice_t *wlandev);
276int wlan_unsetup(wlandevice_t *wlandev);
277int register_wlandev(wlandevice_t *wlandev);
278int unregister_wlandev(wlandevice_t *wlandev);
279void p80211netdev_rx(wlandevice_t *wlandev, struct sk_buff *skb);
280void p80211netdev_hwremoved(wlandevice_t *wlandev);
281void p80211_suspend(wlandevice_t *wlandev);
282void p80211_resume(wlandevice_t *wlandev);
283
284/*================================================================*/
285/* Function Definitions */
286
287static inline void
288p80211netdev_stop_queue(wlandevice_t *wlandev)
289{
290 if ( !wlandev ) return;
291 if ( !wlandev->netdev ) return;
292#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )
293 wlandev->netdev->tbusy = 1;
294 wlandev->netdev->start = 0;
295#else
296 netif_stop_queue(wlandev->netdev);
297#endif
298}
299
300static inline void
301p80211netdev_start_queue(wlandevice_t *wlandev)
302{
303 if ( !wlandev ) return;
304 if ( !wlandev->netdev ) return;
305#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )
306 wlandev->netdev->tbusy = 0;
307 wlandev->netdev->start = 1;
308#else
309 netif_start_queue(wlandev->netdev);
310#endif
311}
312
313static inline void
314p80211netdev_wake_queue(wlandevice_t *wlandev)
315{
316 if ( !wlandev ) return;
317 if ( !wlandev->netdev ) return;
318#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) )
319 wlandev->netdev->tbusy = 0;
320 mark_bh(NET_BH);
321#else
322 netif_wake_queue(wlandev->netdev);
323#endif
324}
325
326#ifdef CONFIG_HOTPLUG
327#define WLAN_HOTPLUG_REGISTER "register"
328#define WLAN_HOTPLUG_REMOVE "remove"
329#define WLAN_HOTPLUG_STARTUP "startup"
330#define WLAN_HOTPLUG_SHUTDOWN "shutdown"
331#define WLAN_HOTPLUG_SUSPEND "suspend"
332#define WLAN_HOTPLUG_RESUME "resume"
333int p80211_run_sbin_hotplug(wlandevice_t *wlandev, char *action);
334#endif
335
336#endif
diff --git a/drivers/staging/wlan-ng/p80211req.c b/drivers/staging/wlan-ng/p80211req.c
new file mode 100644
index 00000000000..0233abeccc4
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211req.c
@@ -0,0 +1,329 @@
1/* src/p80211/p80211req.c
2*
3* Request/Indication/MacMgmt interface handling functions
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file contains the functions, types, and macros to support the
48* MLME request interface that's implemented via the device ioctls.
49*
50* --------------------------------------------------------------------
51*/
52
53/*================================================================*/
54/* System Includes */
55
56
57#include <linux/version.h>
58
59#include <linux/module.h>
60#include <linux/kernel.h>
61#include <linux/sched.h>
62#include <linux/types.h>
63#include <linux/skbuff.h>
64#include <linux/slab.h>
65#include <linux/wireless.h>
66#include <linux/netdevice.h>
67#include <linux/etherdevice.h>
68#include <net/sock.h>
69#include <linux/netlink.h>
70
71#include "version.h"
72#include "wlan_compat.h"
73
74/*================================================================*/
75/* Project Includes */
76
77#include "p80211types.h"
78#include "p80211hdr.h"
79#include "p80211mgmt.h"
80#include "p80211conv.h"
81#include "p80211msg.h"
82#include "p80211netdev.h"
83#include "p80211ioctl.h"
84#include "p80211metadef.h"
85#include "p80211metastruct.h"
86#include "p80211req.h"
87
88/*================================================================*/
89/* Local Constants */
90
91/* Maximum amount of time we'll wait for a request to complete */
92#define P80211REQ_MAXTIME 3*HZ /* 3 seconds */
93
94/*================================================================*/
95/* Local Macros */
96
97/*================================================================*/
98/* Local Types */
99
100/*================================================================*/
101/* Local Static Definitions */
102
103/*================================================================*/
104/* Local Function Declarations */
105
106static void p80211req_handlemsg( wlandevice_t *wlandev, p80211msg_t *msg);
107static int p80211req_mibset_mibget(wlandevice_t *wlandev, p80211msg_dot11req_mibget_t *mib_msg, int isget);
108
109/*================================================================*/
110/* Function Definitions */
111
112
113/*----------------------------------------------------------------
114* p80211req_dorequest
115*
116* Handles an MLME reqest/confirm message.
117*
118* Arguments:
119* wlandev WLAN device struct
120* msgbuf Buffer containing a request message
121*
122* Returns:
123* 0 on success, an errno otherwise
124*
125* Call context:
126* Potentially blocks the caller, so it's a good idea to
127* not call this function from an interrupt context.
128----------------------------------------------------------------*/
129int p80211req_dorequest( wlandevice_t *wlandev, UINT8 *msgbuf)
130{
131 int result = 0;
132 p80211msg_t *msg = (p80211msg_t*)msgbuf;
133
134 DBFENTER;
135
136 /* Check to make sure the MSD is running */
137 if (
138 !((wlandev->msdstate == WLAN_MSD_HWPRESENT &&
139 msg->msgcode == DIDmsg_lnxreq_ifstate) ||
140 wlandev->msdstate == WLAN_MSD_RUNNING ||
141 wlandev->msdstate == WLAN_MSD_FWLOAD) ) {
142 return -ENODEV;
143 }
144
145 /* Check Permissions */
146 if (!capable(CAP_NET_ADMIN) &&
147 (msg->msgcode != DIDmsg_dot11req_mibget)) {
148 WLAN_LOG_ERROR("%s: only dot11req_mibget allowed for non-root.\n", wlandev->name);
149 return -EPERM;
150 }
151
152 /* Check for busy status */
153 if ( test_and_set_bit(1, &(wlandev->request_pending))) {
154 return -EBUSY;
155 }
156
157 /* Allow p80211 to look at msg and handle if desired. */
158 /* So far, all p80211 msgs are immediate, no waitq/timer necessary */
159 /* This may change. */
160 p80211req_handlemsg(wlandev, msg);
161
162 /* Pass it down to wlandev via wlandev->mlmerequest */
163 if ( wlandev->mlmerequest != NULL )
164 wlandev->mlmerequest(wlandev, msg);
165
166 clear_bit( 1, &(wlandev->request_pending));
167 DBFEXIT;
168 return result; /* if result==0, msg->status still may contain an err */
169}
170
171/*----------------------------------------------------------------
172* p80211req_handlemsg
173*
174* p80211 message handler. Primarily looks for messages that
175* belong to p80211 and then dispatches the appropriate response.
176* TODO: we don't do anything yet. Once the linuxMIB is better
177* defined we'll need a get/set handler.
178*
179* Arguments:
180* wlandev WLAN device struct
181* msg message structure
182*
183* Returns:
184* nothing (any results are set in the status field of the msg)
185*
186* Call context:
187* Process thread
188----------------------------------------------------------------*/
189static void p80211req_handlemsg( wlandevice_t *wlandev, p80211msg_t *msg)
190{
191 DBFENTER;
192
193 switch (msg->msgcode) {
194
195 case DIDmsg_lnxreq_hostwep: {
196 p80211msg_lnxreq_hostwep_t *req = (p80211msg_lnxreq_hostwep_t*) msg;
197 wlandev->hostwep &= ~(HOSTWEP_DECRYPT|HOSTWEP_ENCRYPT);
198 if (req->decrypt.data == P80211ENUM_truth_true)
199 wlandev->hostwep |= HOSTWEP_DECRYPT;
200 if (req->encrypt.data == P80211ENUM_truth_true)
201 wlandev->hostwep |= HOSTWEP_ENCRYPT;
202
203 break;
204 }
205 case DIDmsg_dot11req_mibget:
206 case DIDmsg_dot11req_mibset: {
207 int isget = (msg->msgcode == DIDmsg_dot11req_mibget);
208 p80211msg_dot11req_mibget_t *mib_msg = (p80211msg_dot11req_mibget_t *) msg;
209 p80211req_mibset_mibget (wlandev, mib_msg, isget);
210 }
211 default:
212 // XXX do nothing!
213 ;
214 } /* switch msg->msgcode */
215
216 DBFEXIT;
217
218 return;
219}
220
221static int p80211req_mibset_mibget(wlandevice_t *wlandev,
222 p80211msg_dot11req_mibget_t *mib_msg,
223 int isget)
224{
225 p80211itemd_t *mibitem = (p80211itemd_t *) mib_msg->mibattribute.data;
226 p80211pstrd_t *pstr = (p80211pstrd_t*) mibitem->data;
227 UINT8 *key = mibitem->data + sizeof(p80211pstrd_t);
228
229 DBFENTER;
230
231 switch (mibitem->did) {
232 case DIDmib_dot11smt_p80211Table_p80211_ifstate: {
233 UINT32 *data = (UINT32 *) mibitem->data;
234 if (isget)
235 switch (wlandev->msdstate) {
236 case WLAN_MSD_HWPRESENT:
237 *data = P80211ENUM_ifstate_disable;
238 break;
239 case WLAN_MSD_FWLOAD:
240 *data = P80211ENUM_ifstate_fwload;
241 break;
242 case WLAN_MSD_RUNNING:
243 *data = P80211ENUM_ifstate_enable;
244 break;
245 default:
246 *data = P80211ENUM_ifstate_enable;
247 }
248 break;
249 }
250 case DIDmib_dot11phy_dot11PhyOperationTable_dot11ShortPreambleEnabled: {
251 UINT32 *data = (UINT32 *) mibitem->data;
252
253 if (isget)
254 *data = wlandev->shortpreamble;
255 else
256 wlandev->shortpreamble = *data;
257 break;
258 }
259 case DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0: {
260 if (!isget)
261 wep_change_key(wlandev, 0, key, pstr->len);
262 break;
263 }
264 case DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1: {
265 if (!isget)
266 wep_change_key(wlandev, 1, key, pstr->len);
267 break;
268 }
269 case DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2: {
270 if (!isget)
271 wep_change_key(wlandev, 2, key, pstr->len);
272 break;
273 }
274 case DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3: {
275 if (!isget)
276 wep_change_key(wlandev, 3, key, pstr->len);
277 break;
278 }
279 case DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID: {
280 UINT32 *data = (UINT32 *) mibitem->data;
281
282 if (isget) {
283 *data = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK;
284 } else {
285 wlandev->hostwep &= ~(HOSTWEP_DEFAULTKEY_MASK);
286
287 wlandev->hostwep |= (*data & HOSTWEP_DEFAULTKEY_MASK);
288 }
289 break;
290 }
291 case DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked: {
292 UINT32 *data = (UINT32 *) mibitem->data;
293
294 if (isget) {
295 if (wlandev->hostwep & HOSTWEP_PRIVACYINVOKED)
296 *data = P80211ENUM_truth_true;
297 else
298 *data = P80211ENUM_truth_false;
299 } else {
300 wlandev->hostwep &= ~(HOSTWEP_PRIVACYINVOKED);
301 if (*data == P80211ENUM_truth_true)
302 wlandev->hostwep |= HOSTWEP_PRIVACYINVOKED;
303 }
304 break;
305 }
306 case DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted: {
307 UINT32 *data = (UINT32 *) mibitem->data;
308
309 if (isget) {
310 if (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED)
311 *data = P80211ENUM_truth_true;
312 else
313 *data = P80211ENUM_truth_false;
314 } else {
315 wlandev->hostwep &= ~(HOSTWEP_EXCLUDEUNENCRYPTED);
316 if (*data == P80211ENUM_truth_true)
317 wlandev->hostwep |= HOSTWEP_EXCLUDEUNENCRYPTED;
318 }
319 break;
320 }
321 default:
322 // XXXX do nothing!
323 ;
324 }
325
326 DBFEXIT;
327 return 0;
328}
329
diff --git a/drivers/staging/wlan-ng/p80211req.h b/drivers/staging/wlan-ng/p80211req.h
new file mode 100644
index 00000000000..54abdceedc5
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211req.h
@@ -0,0 +1,68 @@
1/* p80211req.h
2*
3* Request handling functions
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*/
47
48#ifndef _LINUX_P80211REQ_H
49#define _LINUX_P80211REQ_H
50
51/*================================================================*/
52/* Constants */
53
54/*================================================================*/
55/* Macros */
56
57/*================================================================*/
58/* Types */
59
60/*================================================================*/
61/* Externs */
62
63/*================================================================*/
64/* Function Declarations */
65
66int p80211req_dorequest(wlandevice_t *wlandev, UINT8 *msgbuf);
67
68#endif
diff --git a/drivers/staging/wlan-ng/p80211types.h b/drivers/staging/wlan-ng/p80211types.h
new file mode 100644
index 00000000000..811b0ce39bf
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211types.h
@@ -0,0 +1,675 @@
1/* p80211types.h
2*
3* Macros, constants, types, and funcs for p80211 data types
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file declares some of the constants and types used in various
48* parts of the linux-wlan system.
49*
50* Notes:
51* - Constant values are always in HOST byte order.
52*
53* All functions and statics declared here are implemented in p80211types.c
54* --------------------------------------------------------------------
55*/
56
57#ifndef _P80211TYPES_H
58#define _P80211TYPES_H
59
60/*================================================================*/
61/* System Includes */
62/*================================================================*/
63
64/*================================================================*/
65/* Project Includes */
66/*================================================================*/
67
68#ifndef _WLAN_COMPAT_H
69#include "wlan_compat.h"
70#endif
71
72/*================================================================*/
73/* Constants */
74/*================================================================*/
75
76/*----------------------------------------------------------------*/
77/* p80211 data type codes used for MIB items and message */
78/* arguments. The various metadata structures provide additional */
79/* information about these types. */
80
81#define P80211_TYPE_OCTETSTR 1 /* pascal array of bytes */
82#define P80211_TYPE_DISPLAYSTR 2 /* pascal array of bytes containing ascii */
83#define P80211_TYPE_INT 4 /* UINT32 min and max limited by 32 bits */
84#define P80211_TYPE_ENUMINT 5 /* UINT32 holding a numeric
85 code that can be mapped
86 to a textual name */
87#define P80211_TYPE_UNKDATA 6 /* Data item containing an
88 unknown data type */
89#define P80211_TYPE_INTARRAY 7 /* Array of 32-bit integers. */
90#define P80211_TYPE_BITARRAY 8 /* Array of bits. */
91#define P80211_TYPE_MACARRAY 9 /* Array of MAC addresses. */
92
93/*----------------------------------------------------------------*/
94/* The following constants are indexes into the Mib Category List */
95/* and the Message Category List */
96
97/* Mib Category List */
98#define P80211_MIB_CAT_DOT11SMT 1
99#define P80211_MIB_CAT_DOT11MAC 2
100#define P80211_MIB_CAT_DOT11PHY 3
101
102#define P80211SEC_DOT11SMT P80211_MIB_CAT_DOT11SMT
103#define P80211SEC_DOT11MAC P80211_MIB_CAT_DOT11MAC
104#define P80211SEC_DOT11PHY P80211_MIB_CAT_DOT11PHY
105
106/* Message Category List */
107#define P80211_MSG_CAT_DOT11REQ 1
108#define P80211_MSG_CAT_DOT11IND 2
109/* #define P80211_MSG_CAT_DOT11CFM 3 (doesn't exist at this time) */
110
111#define P80211SEC_DOT11REQ P80211_MSG_CAT_DOT11REQ
112#define P80211SEC_DOT11IND P80211_MSG_CAT_DOT11IND
113/* #define P80211SEC_DOT11CFM P80211_MSG_CAT_DOT11CFM (doesn't exist at this time */
114
115
116
117/*----------------------------------------------------------------*/
118/* p80211 DID field codes that represent access type and */
119/* is_table status. */
120
121#define P80211DID_ACCESS_READ 0x10000000
122#define P80211DID_ACCESS_WRITE 0x08000000
123#define P80211DID_WRITEONLY 0x00000001
124#define P80211DID_READONLY 0x00000002
125#define P80211DID_READWRITE 0x00000003
126#define P80211DID_ISTABLE_FALSE 0
127#define P80211DID_ISTABLE_TRUE 1
128
129/*----------------------------------------------------------------*/
130/* p80211 enumeration constants. The value to text mappings for */
131/* these is in p80211types.c. These defines were generated */
132/* from the mappings. */
133
134/* error codes for lookups */
135#define P80211ENUM_BAD 0xffffffffUL
136#define P80211ENUM_BADSTR "P80211ENUM_BAD"
137
138#define P80211ENUM_truth_false 0
139#define P80211ENUM_truth_true 1
140#define P80211ENUM_ifstate_disable 0
141#define P80211ENUM_ifstate_fwload 1
142#define P80211ENUM_ifstate_enable 2
143#define P80211ENUM_powermgmt_active 1
144#define P80211ENUM_powermgmt_powersave 2
145#define P80211ENUM_bsstype_infrastructure 1
146#define P80211ENUM_bsstype_independent 2
147#define P80211ENUM_bsstype_any 3
148#define P80211ENUM_authalg_opensystem 1
149#define P80211ENUM_authalg_sharedkey 2
150#define P80211ENUM_phytype_fhss 1
151#define P80211ENUM_phytype_dsss 2
152#define P80211ENUM_phytype_irbaseband 3
153#define P80211ENUM_temptype_commercial 1
154#define P80211ENUM_temptype_industrial 2
155#define P80211ENUM_regdomain_fcc 16
156#define P80211ENUM_regdomain_doc 32
157#define P80211ENUM_regdomain_etsi 48
158#define P80211ENUM_regdomain_spain 49
159#define P80211ENUM_regdomain_france 50
160#define P80211ENUM_regdomain_mkk 64
161#define P80211ENUM_ccamode_edonly 1
162#define P80211ENUM_ccamode_csonly 2
163#define P80211ENUM_ccamode_edandcs 4
164#define P80211ENUM_ccamode_cswithtimer 8
165#define P80211ENUM_ccamode_hrcsanded 16
166#define P80211ENUM_diversity_fixedlist 1
167#define P80211ENUM_diversity_notsupported 2
168#define P80211ENUM_diversity_dynamic 3
169#define P80211ENUM_scantype_active 1
170#define P80211ENUM_scantype_passive 2
171#define P80211ENUM_scantype_both 3
172#define P80211ENUM_resultcode_success 1
173#define P80211ENUM_resultcode_invalid_parameters 2
174#define P80211ENUM_resultcode_not_supported 3
175#define P80211ENUM_resultcode_timeout 4
176#define P80211ENUM_resultcode_too_many_req 5
177#define P80211ENUM_resultcode_refused 6
178#define P80211ENUM_resultcode_bss_already 7
179#define P80211ENUM_resultcode_invalid_access 8
180#define P80211ENUM_resultcode_invalid_mibattribute 9
181#define P80211ENUM_resultcode_cant_set_readonly_mib 10
182#define P80211ENUM_resultcode_implementation_failure 11
183#define P80211ENUM_resultcode_cant_get_writeonly_mib 12
184#define P80211ENUM_reason_unspec_reason 1
185#define P80211ENUM_reason_auth_not_valid 2
186#define P80211ENUM_reason_deauth_lv_ss 3
187#define P80211ENUM_reason_inactivity 4
188#define P80211ENUM_reason_ap_overload 5
189#define P80211ENUM_reason_class23_err 6
190#define P80211ENUM_reason_class3_err 7
191#define P80211ENUM_reason_disas_lv_ss 8
192#define P80211ENUM_reason_asoc_not_auth 9
193#define P80211ENUM_status_successful 0
194#define P80211ENUM_status_unspec_failure 1
195#define P80211ENUM_status_unsup_cap 10
196#define P80211ENUM_status_reasoc_no_asoc 11
197#define P80211ENUM_status_fail_other 12
198#define P80211ENUM_status_unspt_alg 13
199#define P80211ENUM_status_auth_seq_fail 14
200#define P80211ENUM_status_chlng_fail 15
201#define P80211ENUM_status_auth_timeout 16
202#define P80211ENUM_status_ap_full 17
203#define P80211ENUM_status_unsup_rate 18
204#define P80211ENUM_status_unsup_shortpreamble 19
205#define P80211ENUM_status_unsup_pbcc 20
206#define P80211ENUM_status_unsup_agility 21
207#define P80211ENUM_msgitem_status_data_ok 0
208#define P80211ENUM_msgitem_status_no_value 1
209#define P80211ENUM_msgitem_status_invalid_itemname 2
210#define P80211ENUM_msgitem_status_invalid_itemdata 3
211#define P80211ENUM_msgitem_status_missing_itemdata 4
212#define P80211ENUM_msgitem_status_incomplete_itemdata 5
213#define P80211ENUM_msgitem_status_invalid_msg_did 6
214#define P80211ENUM_msgitem_status_invalid_mib_did 7
215#define P80211ENUM_msgitem_status_missing_conv_func 8
216#define P80211ENUM_msgitem_status_string_too_long 9
217#define P80211ENUM_msgitem_status_data_out_of_range 10
218#define P80211ENUM_msgitem_status_string_too_short 11
219#define P80211ENUM_msgitem_status_missing_valid_func 12
220#define P80211ENUM_msgitem_status_unknown 13
221#define P80211ENUM_msgitem_status_invalid_did 14
222#define P80211ENUM_msgitem_status_missing_print_func 15
223
224#define P80211ENUM_lnxroam_reason_unknown 0
225#define P80211ENUM_lnxroam_reason_beacon 1
226#define P80211ENUM_lnxroam_reason_signal 2
227#define P80211ENUM_lnxroam_reason_txretry 3
228#define P80211ENUM_lnxroam_reason_notjoined 4
229
230#define P80211ENUM_p2preamble_long 0
231#define P80211ENUM_p2preamble_short 2
232#define P80211ENUM_p2preamble_mixed 3
233
234/*----------------------------------------------------------------*/
235/* p80211 max length constants for the different pascal strings. */
236
237#define MAXLEN_PSTR6 (6) /* pascal array of 6 bytes */
238#define MAXLEN_PSTR14 (14) /* pascal array of 14 bytes */
239#define MAXLEN_PSTR32 (32) /* pascal array of 32 bytes */
240#define MAXLEN_PSTR255 (255) /* pascal array of 255 bytes */
241#define MAXLEN_MIBATTRIBUTE (392) /* maximum mibattribute */
242 /* where the size of the DATA itself */
243 /* is a DID-LEN-DATA triple */
244 /* with a max size of 4+4+384 */
245
246#define P80211_SET_INT(item, value) do { \
247 (item).data = (value); \
248 (item).status = P80211ENUM_msgitem_status_data_ok; \
249 } while(0)
250/*----------------------------------------------------------------*/
251/* string constants */
252
253#define NOT_SET "NOT_SET"
254#define NOT_SUPPORTED "NOT_SUPPORTED"
255#define UNKNOWN_DATA "UNKNOWN_DATA"
256
257
258/*--------------------------------------------------------------------*/
259/* Metadata flags */
260
261/* MSM: Do these belong in p80211meta.h? I'm not sure. */
262
263#define ISREQUIRED (0x80000000UL)
264#define ISREQUEST (0x40000000UL)
265#define ISCONFIRM (0x20000000UL)
266
267
268/*================================================================*/
269/* Macros */
270
271/*--------------------------------------------------------------------*/
272/* The following macros are used to manipulate the 'flags' field in */
273/* the metadata. These are only used when the metadata is for */
274/* command arguments to determine if the data item is required, and */
275/* whether the metadata item is for a request command, confirm */
276/* command or both. */
277/*--------------------------------------------------------------------*/
278/* MSM: Do these belong in p80211meta.h? I'm not sure */
279
280#define P80211ITEM_SETFLAGS(q, r, c) ( q | r | c )
281
282#define P80211ITEM_ISREQUIRED(flags) (((UINT32)(flags & ISREQUIRED)) >> 31 )
283#define P80211ITEM_ISREQUEST(flags) (((UINT32)(flags & ISREQUEST)) >> 30 )
284#define P80211ITEM_ISCONFIRM(flags) (((UINT32)(flags & ISCONFIRM)) >> 29 )
285
286/*----------------------------------------------------------------*/
287/* The following macro creates a name for an enum */
288
289#define MKENUMNAME(name) p80211enum_ ## name
290
291/*----------------------------------------------------------------
292* The following constants and macros are used to construct and
293* deconstruct the Data ID codes. The coding is as follows:
294*
295* ...rwtnnnnnnnniiiiiiggggggssssss s - Section
296* g - Group
297* i - Item
298* n - Index
299* t - Table flag
300* w - Write flag
301* r - Read flag
302* . - Unused
303*/
304
305#define P80211DID_INVALID 0xffffffffUL
306#define P80211DID_VALID 0x00000000UL
307
308#define P80211DID_LSB_SECTION (0)
309#define P80211DID_LSB_GROUP (6)
310#define P80211DID_LSB_ITEM (12)
311#define P80211DID_LSB_INDEX (18)
312#define P80211DID_LSB_ISTABLE (26)
313#define P80211DID_LSB_ACCESS (27)
314
315#define P80211DID_MASK_SECTION (0x0000003fUL)
316#define P80211DID_MASK_GROUP (0x0000003fUL)
317#define P80211DID_MASK_ITEM (0x0000003fUL)
318#define P80211DID_MASK_INDEX (0x000000ffUL)
319#define P80211DID_MASK_ISTABLE (0x00000001UL)
320#define P80211DID_MASK_ACCESS (0x00000003UL)
321
322
323#define P80211DID_MK(a,m,l) ((((UINT32)(a)) & (m)) << (l))
324
325#define P80211DID_MKSECTION(a) P80211DID_MK(a, \
326 P80211DID_MASK_SECTION, \
327 P80211DID_LSB_SECTION )
328#define P80211DID_MKGROUP(a) P80211DID_MK(a, \
329 P80211DID_MASK_GROUP, \
330 P80211DID_LSB_GROUP )
331#define P80211DID_MKITEM(a) P80211DID_MK(a, \
332 P80211DID_MASK_ITEM, \
333 P80211DID_LSB_ITEM )
334#define P80211DID_MKINDEX(a) P80211DID_MK(a, \
335 P80211DID_MASK_INDEX, \
336 P80211DID_LSB_INDEX )
337#define P80211DID_MKISTABLE(a) P80211DID_MK(a, \
338 P80211DID_MASK_ISTABLE, \
339 P80211DID_LSB_ISTABLE )
340
341
342#define P80211DID_MKID(s,g,i,n,t,a) (P80211DID_MKSECTION(s) | \
343 P80211DID_MKGROUP(g) | \
344 P80211DID_MKITEM(i) | \
345 P80211DID_MKINDEX(n) | \
346 P80211DID_MKISTABLE(t) | \
347 (a) )
348
349
350#define P80211DID_GET(a,m,l) ((((UINT32)(a)) >> (l)) & (m))
351
352#define P80211DID_SECTION(a) P80211DID_GET(a, \
353 P80211DID_MASK_SECTION, \
354 P80211DID_LSB_SECTION)
355#define P80211DID_GROUP(a) P80211DID_GET(a, \
356 P80211DID_MASK_GROUP, \
357 P80211DID_LSB_GROUP)
358#define P80211DID_ITEM(a) P80211DID_GET(a, \
359 P80211DID_MASK_ITEM, \
360 P80211DID_LSB_ITEM)
361#define P80211DID_INDEX(a) P80211DID_GET(a, \
362 P80211DID_MASK_INDEX, \
363 P80211DID_LSB_INDEX)
364#define P80211DID_ISTABLE(a) P80211DID_GET(a, \
365 P80211DID_MASK_ISTABLE, \
366 P80211DID_LSB_ISTABLE)
367#define P80211DID_ACCESS(a) P80211DID_GET(a, \
368 P80211DID_MASK_ACCESS, \
369 P80211DID_LSB_ACCESS)
370
371/*================================================================*/
372/* Types */
373
374/*----------------------------------------------------------------*/
375/* The following structure types are used for the represenation */
376/* of ENUMINT type metadata. */
377
378typedef struct p80211enumpair
379{
380 UINT32 val;
381 char *name;
382} p80211enumpair_t;
383
384typedef struct p80211enum
385{
386 INT nitems;
387 p80211enumpair_t *list;
388} p80211enum_t;
389
390/*----------------------------------------------------------------*/
391/* The following structure types are used to store data items in */
392/* messages. */
393
394/* Template pascal string */
395typedef struct p80211pstr
396{
397 UINT8 len;
398} __WLAN_ATTRIB_PACK__ p80211pstr_t;
399
400typedef struct p80211pstrd
401{
402 UINT8 len;
403 UINT8 data[0];
404} __WLAN_ATTRIB_PACK__ p80211pstrd_t;
405
406/* Maximum pascal string */
407typedef struct p80211pstr255
408{
409 UINT8 len;
410 UINT8 data[MAXLEN_PSTR255];
411} __WLAN_ATTRIB_PACK__ p80211pstr255_t;
412
413/* pascal string for macaddress and bssid */
414typedef struct p80211pstr6
415{
416 UINT8 len;
417 UINT8 data[MAXLEN_PSTR6];
418} __WLAN_ATTRIB_PACK__ p80211pstr6_t;
419
420/* pascal string for channel list */
421typedef struct p80211pstr14
422{
423 UINT8 len;
424 UINT8 data[MAXLEN_PSTR14];
425} __WLAN_ATTRIB_PACK__ p80211pstr14_t;
426
427/* pascal string for ssid */
428typedef struct p80211pstr32
429{
430 UINT8 len;
431 UINT8 data[MAXLEN_PSTR32];
432} __WLAN_ATTRIB_PACK__ p80211pstr32_t;
433
434/* MAC address array */
435typedef struct p80211macarray
436{
437 UINT32 cnt;
438 UINT8 data[1][MAXLEN_PSTR6];
439} __WLAN_ATTRIB_PACK__ p80211macarray_t;
440
441/* prototype template */
442typedef struct p80211item
443{
444 UINT32 did;
445 UINT16 status;
446 UINT16 len;
447} __WLAN_ATTRIB_PACK__ p80211item_t;
448
449/* prototype template w/ data item */
450typedef struct p80211itemd
451{
452 UINT32 did;
453 UINT16 status;
454 UINT16 len;
455 UINT8 data[0];
456} __WLAN_ATTRIB_PACK__ p80211itemd_t;
457
458/* message data item for INT, BOUNDEDINT, ENUMINT */
459typedef struct p80211item_uint32
460{
461 UINT32 did;
462 UINT16 status;
463 UINT16 len;
464 UINT32 data;
465} __WLAN_ATTRIB_PACK__ p80211item_uint32_t;
466
467/* message data item for OCTETSTR, DISPLAYSTR */
468typedef struct p80211item_pstr6
469{
470 UINT32 did;
471 UINT16 status;
472 UINT16 len;
473 p80211pstr6_t data;
474} __WLAN_ATTRIB_PACK__ p80211item_pstr6_t;
475
476/* message data item for OCTETSTR, DISPLAYSTR */
477typedef struct p80211item_pstr14
478{
479 UINT32 did;
480 UINT16 status;
481 UINT16 len;
482 p80211pstr14_t data;
483} __WLAN_ATTRIB_PACK__ p80211item_pstr14_t;
484
485/* message data item for OCTETSTR, DISPLAYSTR */
486typedef struct p80211item_pstr32
487{
488 UINT32 did;
489 UINT16 status;
490 UINT16 len;
491 p80211pstr32_t data;
492} __WLAN_ATTRIB_PACK__ p80211item_pstr32_t;
493
494/* message data item for OCTETSTR, DISPLAYSTR */
495typedef struct p80211item_pstr255
496{
497 UINT32 did;
498 UINT16 status;
499 UINT16 len;
500 p80211pstr255_t data;
501} __WLAN_ATTRIB_PACK__ p80211item_pstr255_t;
502
503/* message data item for UNK 392, namely mib items */
504typedef struct p80211item_unk392
505{
506 UINT32 did;
507 UINT16 status;
508 UINT16 len;
509 UINT8 data[MAXLEN_MIBATTRIBUTE];
510} __WLAN_ATTRIB_PACK__ p80211item_unk392_t;
511
512/* message data item for UNK 1025, namely p2 pdas */
513typedef struct p80211item_unk1024
514{
515 UINT32 did;
516 UINT16 status;
517 UINT16 len;
518 UINT8 data[1024];
519} __WLAN_ATTRIB_PACK__ p80211item_unk1024_t;
520
521/* message data item for UNK 4096, namely p2 download chunks */
522typedef struct p80211item_unk4096
523{
524 UINT32 did;
525 UINT16 status;
526 UINT16 len;
527 UINT8 data[4096];
528} __WLAN_ATTRIB_PACK__ p80211item_unk4096_t;
529
530struct catlistitem;
531
532/*----------------------------------------------------------------*/
533/* The following structure type is used to represent all of the */
534/* metadata items. Some components may choose to use more, */
535/* less or different metadata items. */
536
537typedef void (*p80211_totext_t)( struct catlistitem *, UINT32 did, UINT8* itembuf, char *textbuf);
538typedef void (*p80211_fromtext_t)( struct catlistitem *, UINT32 did, UINT8* itembuf, char *textbuf);
539typedef UINT32 (*p80211_valid_t)( struct catlistitem *, UINT32 did, UINT8* itembuf);
540
541
542/*================================================================*/
543/* Extern Declarations */
544
545/*----------------------------------------------------------------*/
546/* Enumeration Lists */
547/* The following are the external declarations */
548/* for all enumerations */
549
550extern p80211enum_t MKENUMNAME(truth);
551extern p80211enum_t MKENUMNAME(ifstate);
552extern p80211enum_t MKENUMNAME(powermgmt);
553extern p80211enum_t MKENUMNAME(bsstype);
554extern p80211enum_t MKENUMNAME(authalg);
555extern p80211enum_t MKENUMNAME(phytype);
556extern p80211enum_t MKENUMNAME(temptype);
557extern p80211enum_t MKENUMNAME(regdomain);
558extern p80211enum_t MKENUMNAME(ccamode);
559extern p80211enum_t MKENUMNAME(diversity);
560extern p80211enum_t MKENUMNAME(scantype);
561extern p80211enum_t MKENUMNAME(resultcode);
562extern p80211enum_t MKENUMNAME(reason);
563extern p80211enum_t MKENUMNAME(status);
564extern p80211enum_t MKENUMNAME(msgcode);
565extern p80211enum_t MKENUMNAME(msgitem_status);
566
567extern p80211enum_t MKENUMNAME(lnxroam_reason);
568
569extern p80211enum_t MKENUMNAME(p2preamble);
570
571/*================================================================*/
572/* Function Declarations */
573
574/*----------------------------------------------------------------*/
575/* The following declare some utility functions for use with the */
576/* p80211enum_t type. */
577
578UINT32 p80211enum_text2int(p80211enum_t *ep, char *text);
579UINT32 p80211enum_int2text(p80211enum_t *ep, UINT32 val, char *text);
580void p80211_error2text(int err_code, char *err_str);
581
582/*----------------------------------------------------------------*/
583/* The following declare some utility functions for use with the */
584/* p80211item_t and p80211meta_t types. */
585
586/*----------------------------------------------------------------*/
587/* The following declare functions that perform validation and */
588/* text to binary conversions based on the metadata for interface */
589/* and MIB data items. */
590/*----------------------------------------------------------------*/
591
592/*-- DISPLAYSTR ------------------------------------------------------*/
593/* pstr ==> cstr */
594void p80211_totext_displaystr( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
595
596/* cstr ==> pstr */
597void p80211_fromtext_displaystr( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
598
599/* function that checks validity of a displaystr binary value */
600UINT32 p80211_isvalid_displaystr( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
601
602/*-- OCTETSTR --------------------------------------------------------*/
603/* pstr ==> "xx:xx:...." */
604void p80211_totext_octetstr( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
605
606/* "xx:xx:...." ==> pstr */
607void p80211_fromtext_octetstr( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
608
609/* function that checks validity of an octetstr binary value */
610UINT32 p80211_isvalid_octetstr( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
611
612/*-- INT -------------------------------------------------------------*/
613/* UINT32 ==> %d */
614void p80211_totext_int( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
615
616/* %d ==> UINT32 */
617void p80211_fromtext_int( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
618
619/* function that checks validity of an int's binary value (always successful) */
620UINT32 p80211_isvalid_int( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
621
622/*-- ENUMINT ---------------------------------------------------------*/
623/* UINT32 ==> <valuename> */
624void p80211_totext_enumint( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
625
626/* <valuename> ==> UINT32 */
627void p80211_fromtext_enumint( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
628
629/* function that checks validity of an enum's binary value */
630UINT32 p80211_isvalid_enumint( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
631
632/*-- INTARRAY --------------------------------------------------------*/
633/* UINT32[] => %d,%d,%d,... */
634void p80211_totext_intarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
635
636/* %d,%d,%d,... ==> UINT32[] */
637void p80211_fromtext_intarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
638
639/* function that checks validity of an integer array's value */
640UINT32 p80211_isvalid_intarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
641
642/*-- BITARRAY --------------------------------------------------------*/
643/* UINT32 ==> %d,%d,%d,... */
644void p80211_totext_bitarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
645
646/* %d,%d,%d,... ==> UINT32 */
647void p80211_fromtext_bitarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
648
649/* function that checks validity of a bit array's value */
650UINT32 p80211_isvalid_bitarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
651
652/*-- MACARRAY --------------------------------------------------------*/
653void p80211_totext_macarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
654
655void p80211_fromtext_macarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
656
657/* function that checks validity of a MAC address array's value */
658UINT32 p80211_isvalid_macarray( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
659
660/*-- MIBATTRIUBTE ------------------------------------------------------*/
661/* <mibvalue> ==> <textual representation identified in MIB metadata> */
662void p80211_totext_getmibattribute( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
663void p80211_totext_setmibattribute( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
664
665
666/* <textual representation identified in MIB metadata> ==> <mibvalue> */
667void p80211_fromtext_getmibattribute( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
668void p80211_fromtext_setmibattribute( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf, char *textbuf );
669
670/* function that checks validity of a mibitem's binary value */
671UINT32 p80211_isvalid_getmibattribute( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
672UINT32 p80211_isvalid_setmibattribute( struct catlistitem *metalist, UINT32 did, UINT8 *itembuf );
673
674#endif /* _P80211TYPES_H */
675
diff --git a/drivers/staging/wlan-ng/p80211wep.c b/drivers/staging/wlan-ng/p80211wep.c
new file mode 100644
index 00000000000..53fe2985971
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211wep.c
@@ -0,0 +1,317 @@
1/* src/p80211/p80211wep.c
2*
3* WEP encode/decode for P80211.
4*
5* Copyright (C) 2002 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*/
47
48/*================================================================*/
49/* System Includes */
50
51
52#include <linux/version.h>
53
54#include <linux/netdevice.h>
55#include <linux/wireless.h>
56#include <linux/slab.h>
57#include <linux/random.h>
58
59#include "version.h"
60#include "wlan_compat.h"
61
62// #define WEP_DEBUG
63
64/*================================================================*/
65/* Project Includes */
66
67#include "version.h"
68#include "p80211hdr.h"
69#include "p80211types.h"
70#include "p80211msg.h"
71#include "p80211conv.h"
72#include "p80211netdev.h"
73
74/*================================================================*/
75/* Local Constants */
76
77#define SSWAP(a,b) {UINT8 tmp = s[a]; s[a] = s[b]; s[b] = tmp;}
78#define WEP_KEY(x) (((x) & 0xC0) >> 6)
79
80/*================================================================*/
81/* Local Macros */
82
83
84/*================================================================*/
85/* Local Types */
86
87
88/*================================================================*/
89/* Local Static Definitions */
90
91static const UINT32 wep_crc32_table[256] = {
92 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
93 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
94 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
95 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
96 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
97 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
98 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
99 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
100 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
101 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
102 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
103 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
104 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
105 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
106 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
107 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
108 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
109 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
110 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
111 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
112 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
113 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
114 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
115 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
116 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
117 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
118 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
119 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
120 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
121 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
122 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
123 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
124 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
125 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
126 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
127 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
128 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
129 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
130 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
131 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
132 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
133 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
134 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
135 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
136 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
137 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
138 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
139 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
140 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
141 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
142 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
143 0x2d02ef8dL
144};
145
146/*================================================================*/
147/* Local Function Declarations */
148
149/*================================================================*/
150/* Function Definitions */
151
152/* keylen in bytes! */
153
154int wep_change_key(wlandevice_t *wlandev, int keynum, UINT8* key, int keylen)
155{
156 if (keylen < 0) return -1;
157 if (keylen >= MAX_KEYLEN) return -1;
158 if (key == NULL) return -1;
159 if (keynum < 0) return -1;
160 if (keynum >= NUM_WEPKEYS) return -1;
161
162
163#ifdef WEP_DEBUG
164 printk(KERN_DEBUG "WEP key %d len %d = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n", keynum, keylen, key[0], key[1], key[2], key[3], key[4], key[5], key[6], key[7]);
165#endif
166
167 wlandev->wep_keylens[keynum] = keylen;
168 memcpy(wlandev->wep_keys[keynum], key, keylen);
169
170 return 0;
171}
172
173/*
174 4-byte IV at start of buffer, 4-byte ICV at end of buffer.
175 if successful, buf start is payload begin, length -= 8;
176 */
177int wep_decrypt(wlandevice_t *wlandev, UINT8 *buf, UINT32 len, int key_override, UINT8 *iv, UINT8 *icv)
178{
179 UINT32 i, j, k, crc, keylen;
180 UINT8 s[256], key[64], c_crc[4];
181 UINT8 keyidx;
182
183 /* Needs to be at least 8 bytes of payload */
184 if (len <= 0) return -1;
185
186 /* initialize the first bytes of the key from the IV */
187 key[0] = iv[0];
188 key[1] = iv[1];
189 key[2] = iv[2];
190 keyidx = WEP_KEY(iv[3]);
191
192 if (key_override >= 0)
193 keyidx = key_override;
194
195 if (keyidx >= NUM_WEPKEYS) return -2;
196
197 keylen = wlandev->wep_keylens[keyidx];
198
199 if (keylen == 0) return -3;
200
201 /* copy the rest of the key over from the designated key */
202 memcpy(key+3, wlandev->wep_keys[keyidx], keylen);
203
204 keylen+=3; /* add in IV bytes */
205
206#ifdef WEP_DEBUG
207 printk(KERN_DEBUG "D %d: %02x %02x %02x (%d %d) %02x:%02x:%02x:%02x:%02x\n", len, key[0], key[1], key[2], keyidx, keylen, key[3], key[4], key[5], key[6], key[7]);
208#endif
209
210 /* set up the RC4 state */
211 for (i = 0; i < 256; i++)
212 s[i] = i;
213 j = 0;
214 for (i = 0; i < 256; i++) {
215 j = (j + s[i] + key[i % keylen]) & 0xff;
216 SSWAP(i,j);
217 }
218
219 /* Apply the RC4 to the data, update the CRC32 */
220 crc = ~0;
221 i = j = 0;
222 for (k = 0; k < len; k++) {
223 i = (i+1) & 0xff;
224 j = (j+s[i]) & 0xff;
225 SSWAP(i,j);
226 buf[k] ^= s[(s[i] + s[j]) & 0xff];
227 crc = wep_crc32_table[(crc ^ buf[k]) & 0xff] ^ (crc >> 8);
228 }
229 crc = ~crc;
230
231 /* now let's check the crc */
232 c_crc[0] = crc;
233 c_crc[1] = crc >> 8;
234 c_crc[2] = crc >> 16;
235 c_crc[3] = crc >> 24;
236
237 for (k = 0; k < 4; k++) {
238 i = (i + 1) & 0xff;
239 j = (j+s[i]) & 0xff;
240 SSWAP(i,j);
241 if ((c_crc[k] ^ s[(s[i] + s[j]) & 0xff]) != icv[k])
242 return -(4 | (k << 4)) ; /* ICV mismatch */
243 }
244
245 return 0;
246}
247
248/* encrypts in-place. */
249int wep_encrypt(wlandevice_t *wlandev, UINT8 *buf, UINT8 *dst, UINT32 len, int keynum, UINT8 *iv, UINT8 *icv)
250{
251 UINT32 i, j, k, crc, keylen;
252 UINT8 s[256], key[64];
253
254 /* no point in WEPping an empty frame */
255 if (len <= 0) return -1;
256
257 /* we need to have a real key.. */
258 if (keynum >= NUM_WEPKEYS) return -2;
259 keylen = wlandev->wep_keylens[keynum];
260 if (keylen <= 0) return -3;
261
262 /* use a random IV. And skip known weak ones. */
263 get_random_bytes(iv, 3);
264 while ((iv[1] == 0xff) && (iv[0] >= 3) && (iv[0] < keylen))
265 get_random_bytes(iv, 3);
266
267 iv[3] = (keynum & 0x03) << 6;
268
269 key[0] = iv[0];
270 key[1] = iv[1];
271 key[2] = iv[2];
272
273 /* copy the rest of the key over from the designated key */
274 memcpy(key+3, wlandev->wep_keys[keynum], keylen);
275
276 keylen+=3; /* add in IV bytes */
277
278#ifdef WEP_DEBUG
279 printk(KERN_DEBUG "E %d (%d/%d %d) %02x %02x %02x %02x:%02x:%02x:%02x:%02x\n", len, iv[3], keynum, keylen, key[0], key[1], key[2], key[3], key[4], key[5], key[6], key[7]);
280#endif
281
282 /* set up the RC4 state */
283 for (i = 0; i < 256; i++)
284 s[i] = i;
285 j = 0;
286 for (i = 0; i < 256; i++) {
287 j = (j + s[i] + key[i % keylen]) & 0xff;
288 SSWAP(i,j);
289 }
290
291 /* Update CRC32 then apply RC4 to the data */
292 crc = ~0;
293 i = j = 0;
294 for (k = 0; k < len; k++) {
295 crc = wep_crc32_table[(crc ^ buf[k]) & 0xff] ^ (crc >> 8);
296 i = (i+1) & 0xff;
297 j = (j+s[i]) & 0xff;
298 SSWAP(i,j);
299 dst[k] = buf[k] ^ s[(s[i] + s[j]) & 0xff];
300 }
301 crc = ~crc;
302
303 /* now let's encrypt the crc */
304 icv[0] = crc;
305 icv[1] = crc >> 8;
306 icv[2] = crc >> 16;
307 icv[3] = crc >> 24;
308
309 for (k = 0; k < 4; k++) {
310 i = (i + 1) & 0xff;
311 j = (j+s[i]) & 0xff;
312 SSWAP(i,j);
313 icv[k] ^= s[(s[i] + s[j]) & 0xff];
314 }
315
316 return 0;
317}
diff --git a/drivers/staging/wlan-ng/p80211wext.c b/drivers/staging/wlan-ng/p80211wext.c
new file mode 100644
index 00000000000..906ba439237
--- /dev/null
+++ b/drivers/staging/wlan-ng/p80211wext.c
@@ -0,0 +1,2048 @@
1/* src/p80211/p80211wext.c
2*
3* Glue code to make linux-wlan-ng a happy wireless extension camper.
4*
5* original author: Reyk Floeter <reyk@synack.de>
6* Completely re-written by Solomon Peachy <solomon@linux-wlan.com>
7*
8* Copyright (C) 2002 AbsoluteValue Systems, Inc. All Rights Reserved.
9* --------------------------------------------------------------------
10*
11* linux-wlan
12*
13* The contents of this file are subject to the Mozilla Public
14* License Version 1.1 (the "License"); you may not use this file
15* except in compliance with the License. You may obtain a copy of
16* the License at http://www.mozilla.org/MPL/
17*
18* Software distributed under the License is distributed on an "AS
19* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
20* implied. See the License for the specific language governing
21* rights and limitations under the License.
22*
23* Alternatively, the contents of this file may be used under the
24* terms of the GNU Public License version 2 (the "GPL"), in which
25* case the provisions of the GPL are applicable instead of the
26* above. If you wish to allow the use of your version of this file
27* only under the terms of the GPL and not to allow others to use
28* your version of this file under the MPL, indicate your decision
29* by deleting the provisions above and replace them with the notice
30* and other provisions required by the GPL. If you do not delete
31* the provisions above, a recipient may use your version of this
32* file under either the MPL or the GPL.
33*
34* --------------------------------------------------------------------
35*/
36
37/*================================================================*/
38/* System Includes */
39
40
41#include <linux/version.h>
42
43#include <linux/kernel.h>
44#include <linux/sched.h>
45#include <linux/types.h>
46#include <linux/slab.h>
47#include <linux/netdevice.h>
48#include <linux/etherdevice.h>
49#include <linux/wireless.h>
50#if WIRELESS_EXT > 12
51#include <net/iw_handler.h>
52#endif
53#include <linux/if_arp.h>
54#include <asm/bitops.h>
55#include <asm/uaccess.h>
56#include <asm/byteorder.h>
57
58/*================================================================*/
59/* Project Includes */
60
61#include "version.h"
62#include "wlan_compat.h"
63
64#include "p80211types.h"
65#include "p80211hdr.h"
66#include "p80211conv.h"
67#include "p80211mgmt.h"
68#include "p80211msg.h"
69#include "p80211metastruct.h"
70#include "p80211metadef.h"
71#include "p80211netdev.h"
72#include "p80211ioctl.h"
73#include "p80211req.h"
74
75static int p80211wext_giwrate(netdevice_t *dev,
76 struct iw_request_info *info,
77 struct iw_param *rrq, char *extra);
78static int p80211wext_giwessid(netdevice_t *dev,
79 struct iw_request_info *info,
80 struct iw_point *data, char *essid);
81/* compatibility to wireless extensions */
82#ifdef WIRELESS_EXT
83
84static UINT8 p80211_mhz_to_channel(UINT16 mhz)
85{
86 if (mhz >= 5000) {
87 return ((mhz - 5000) / 5);
88 }
89
90 if (mhz == 2482)
91 return 14;
92
93 if (mhz >= 2407) {
94 return ((mhz - 2407) / 5);
95 }
96
97 return 0;
98}
99
100static UINT16 p80211_channel_to_mhz(UINT8 ch, int dot11a)
101{
102
103 if (ch == 0)
104 return 0;
105 if (ch > 200)
106 return 0;
107
108 /* 5G */
109
110 if (dot11a) {
111 return (5000 + (5 * ch));
112 }
113
114 /* 2.4G */
115
116 if (ch == 14)
117 return 2484;
118
119 if ((ch < 14) && (ch > 0)) {
120 return (2407 + (5 * ch));
121 }
122
123 return 0;
124}
125
126/* taken from orinoco.c ;-) */
127static const long p80211wext_channel_freq[] = {
128 2412, 2417, 2422, 2427, 2432, 2437, 2442,
129 2447, 2452, 2457, 2462, 2467, 2472, 2484
130};
131#define NUM_CHANNELS (sizeof(p80211wext_channel_freq) / sizeof(p80211wext_channel_freq[0]))
132
133/* steal a spare bit to store the shared/opensystems state. should default to open if not set */
134#define HOSTWEP_SHAREDKEY BIT3
135
136
137/** function declarations =============== */
138
139static int qual_as_percent(int snr ) {
140 if ( snr <= 0 )
141 return 0;
142 if ( snr <= 40 )
143 return snr*5/2;
144 return 100;
145}
146
147
148
149
150static int p80211wext_dorequest(wlandevice_t *wlandev, UINT32 did, UINT32 data)
151{
152 p80211msg_dot11req_mibset_t msg;
153 p80211item_uint32_t mibitem;
154 int result;
155
156 DBFENTER;
157
158 msg.msgcode = DIDmsg_dot11req_mibset;
159 mibitem.did = did;
160 mibitem.data = data;
161 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
162 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
163
164 DBFEXIT;
165 return result;
166}
167
168static int p80211wext_autojoin(wlandevice_t *wlandev)
169{
170 p80211msg_lnxreq_autojoin_t msg;
171 struct iw_point data;
172 char ssid[IW_ESSID_MAX_SIZE];
173
174 int result;
175 int err = 0;
176
177 DBFENTER;
178
179 /* Get ESSID */
180 result = p80211wext_giwessid(wlandev->netdev, NULL, &data, ssid);
181
182 if (result) {
183 err = -EFAULT;
184 goto exit;
185 }
186
187 if ( wlandev->hostwep & HOSTWEP_SHAREDKEY )
188 msg.authtype.data = P80211ENUM_authalg_sharedkey;
189 else
190 msg.authtype.data = P80211ENUM_authalg_opensystem;
191
192 msg.msgcode = DIDmsg_lnxreq_autojoin;
193
194 /* Trim the last '\0' to fit the SSID format */
195
196 if (data.length && ssid[data.length-1] == '\0') {
197 data.length = data.length - 1;
198 }
199
200 memcpy(msg.ssid.data.data, ssid, data.length);
201 msg.ssid.data.len = data.length;
202
203 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
204
205 if (result) {
206 err = -EFAULT;
207 goto exit;
208 }
209
210exit:
211
212 DBFEXIT;
213 return err;
214
215}
216
217/* called by /proc/net/wireless */
218struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev)
219{
220 p80211msg_lnxreq_commsquality_t quality;
221 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
222 struct iw_statistics* wstats = &wlandev->wstats;
223 int retval;
224
225 DBFENTER;
226 /* Check */
227 if ( (wlandev == NULL) || (wlandev->msdstate != WLAN_MSD_RUNNING) )
228 return NULL;
229
230 /* XXX Only valid in station mode */
231 wstats->status = 0;
232
233 /* build request message */
234 quality.msgcode = DIDmsg_lnxreq_commsquality;
235 quality.dbm.data = P80211ENUM_truth_true;
236 quality.dbm.status = P80211ENUM_msgitem_status_data_ok;
237
238 /* send message to nsd */
239 if ( wlandev->mlmerequest == NULL )
240 return NULL;
241
242 retval = wlandev->mlmerequest(wlandev, (p80211msg_t*) &quality);
243
244 wstats->qual.qual = qual_as_percent(quality.link.data); /* overall link quality */
245 wstats->qual.level = quality.level.data; /* instant signal level */
246 wstats->qual.noise = quality.noise.data; /* instant noise level */
247
248#if WIRELESS_EXT > 18
249 wstats->qual.updated = IW_QUAL_ALL_UPDATED | IW_QUAL_DBM;
250#else
251 wstats->qual.updated = 7;
252#endif
253 wstats->discard.code = wlandev->rx.decrypt_err;
254 wstats->discard.nwid = 0;
255 wstats->discard.misc = 0;
256
257#if WIRELESS_EXT > 11
258 wstats->discard.fragment = 0; // incomplete fragments
259 wstats->discard.retries = 0; // tx retries.
260 wstats->miss.beacon = 0;
261#endif
262
263 DBFEXIT;
264
265 return wstats;
266}
267
268static int p80211wext_giwname(netdevice_t *dev,
269 struct iw_request_info *info,
270 char *name, char *extra)
271{
272 struct iw_param rate;
273 int result;
274 int err = 0;
275
276 DBFENTER;
277
278 result = p80211wext_giwrate(dev, NULL, &rate, NULL);
279
280 if (result) {
281 err = -EFAULT;
282 goto exit;
283 }
284
285 switch (rate.value) {
286 case 1000000:
287 case 2000000:
288 strcpy(name, "IEEE 802.11-DS");
289 break;
290 case 5500000:
291 case 11000000:
292 strcpy(name, "IEEE 802.11-b");
293 break;
294 }
295exit:
296 DBFEXIT;
297 return err;
298}
299
300static int p80211wext_giwfreq(netdevice_t *dev,
301 struct iw_request_info *info,
302 struct iw_freq *freq, char *extra)
303{
304 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
305 p80211item_uint32_t mibitem;
306 p80211msg_dot11req_mibset_t msg;
307 int result;
308 int err = 0;
309
310 DBFENTER;
311
312 msg.msgcode = DIDmsg_dot11req_mibget;
313 mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel;
314 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
315 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
316
317 if (result) {
318 err = -EFAULT;
319 goto exit;
320 }
321
322 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
323
324 if (mibitem.data > NUM_CHANNELS) {
325 err = -EFAULT;
326 goto exit;
327 }
328
329 /* convert into frequency instead of a channel */
330 freq->e = 1;
331 freq->m = p80211_channel_to_mhz(mibitem.data, 0) * 100000;
332
333 exit:
334 DBFEXIT;
335 return err;
336}
337
338static int p80211wext_siwfreq(netdevice_t *dev,
339 struct iw_request_info *info,
340 struct iw_freq *freq, char *extra)
341{
342 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
343 p80211item_uint32_t mibitem;
344 p80211msg_dot11req_mibset_t msg;
345 int result;
346 int err = 0;
347
348 DBFENTER;
349
350 if (!wlan_wext_write) {
351 err = (-EOPNOTSUPP);
352 goto exit;
353 }
354
355 msg.msgcode = DIDmsg_dot11req_mibset;
356 mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel;
357 mibitem.status = P80211ENUM_msgitem_status_data_ok;
358
359 if ( (freq->e == 0) && (freq->m <= 1000) )
360 mibitem.data = freq->m;
361 else
362 mibitem.data = p80211_mhz_to_channel(freq->m);
363
364 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
365 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
366
367 if (result) {
368 err = -EFAULT;
369 goto exit;
370 }
371
372 exit:
373 DBFEXIT;
374 return err;
375}
376
377#if WIRELESS_EXT > 8
378
379static int p80211wext_giwmode(netdevice_t *dev,
380 struct iw_request_info *info,
381 __u32 *mode, char *extra)
382{
383 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
384
385 DBFENTER;
386
387 switch (wlandev->macmode) {
388 case WLAN_MACMODE_IBSS_STA:
389 *mode = IW_MODE_ADHOC;
390 break;
391 case WLAN_MACMODE_ESS_STA:
392 *mode = IW_MODE_INFRA;
393 break;
394 case WLAN_MACMODE_ESS_AP:
395 *mode = IW_MODE_MASTER;
396 break;
397 default:
398 /* Not set yet. */
399 *mode = IW_MODE_AUTO;
400 }
401
402 DBFEXIT;
403 return 0;
404}
405
406static int p80211wext_siwmode(netdevice_t *dev,
407 struct iw_request_info *info,
408 __u32 *mode, char *extra)
409{
410 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
411 p80211item_uint32_t mibitem;
412 p80211msg_dot11req_mibset_t msg;
413 int result;
414 int err = 0;
415
416 DBFENTER;
417
418 if (!wlan_wext_write) {
419 err = (-EOPNOTSUPP);
420 goto exit;
421 }
422
423 if (*mode != IW_MODE_ADHOC && *mode != IW_MODE_INFRA &&
424 *mode != IW_MODE_MASTER) {
425 err = (-EOPNOTSUPP);
426 goto exit;
427 }
428
429 /* Operation mode is the same with current mode */
430 if (*mode == wlandev->macmode)
431 goto exit;
432
433 switch (*mode) {
434 case IW_MODE_ADHOC:
435 wlandev->macmode = WLAN_MACMODE_IBSS_STA;
436 break;
437 case IW_MODE_INFRA:
438 wlandev->macmode = WLAN_MACMODE_ESS_STA;
439 break;
440 case IW_MODE_MASTER:
441 wlandev->macmode = WLAN_MACMODE_ESS_AP;
442 break;
443 default:
444 /* Not set yet. */
445 WLAN_LOG_INFO("Operation mode: %d not support\n", *mode);
446 return -EOPNOTSUPP;
447 }
448
449 /* Set Operation mode to the PORT TYPE RID */
450
451#warning "get rid of p2mib here"
452
453 msg.msgcode = DIDmsg_dot11req_mibset;
454 mibitem.did = DIDmib_p2_p2Static_p2CnfPortType;
455 mibitem.data = (*mode == IW_MODE_ADHOC) ? 0 : 1;
456 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
457 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
458
459 if (result)
460 err = -EFAULT;
461
462 exit:
463 DBFEXIT;
464
465 return err;
466}
467
468
469static int p80211wext_giwrange(netdevice_t *dev,
470 struct iw_request_info *info,
471 struct iw_point *data, char *extra)
472{
473 struct iw_range *range = (struct iw_range *) extra;
474 int i, val;
475
476 DBFENTER;
477
478 // for backward compatability set size & zero everything we don't understand
479 data->length = sizeof(*range);
480 memset(range,0,sizeof(*range));
481
482#if WIRELESS_EXT > 9
483 range->txpower_capa = IW_TXPOW_DBM;
484 // XXX what about min/max_pmp, min/max_pmt, etc.
485#endif
486
487#if WIRELESS_EXT > 10
488 range->we_version_compiled = WIRELESS_EXT;
489 range->we_version_source = 13;
490
491 range->retry_capa = IW_RETRY_LIMIT;
492 range->retry_flags = IW_RETRY_LIMIT;
493 range->min_retry = 0;
494 range->max_retry = 255;
495#endif /* WIRELESS_EXT > 10 */
496
497#if WIRELESS_EXT > 16
498 range->event_capa[0] = (IW_EVENT_CAPA_K_0 | //mode/freq/ssid
499 IW_EVENT_CAPA_MASK(SIOCGIWAP) |
500 IW_EVENT_CAPA_MASK(SIOCGIWSCAN));
501 range->event_capa[1] = IW_EVENT_CAPA_K_1; //encode
502 range->event_capa[4] = (IW_EVENT_CAPA_MASK(IWEVQUAL) |
503 IW_EVENT_CAPA_MASK(IWEVCUSTOM) );
504#endif
505
506 range->num_channels = NUM_CHANNELS;
507
508 /* XXX need to filter against the regulatory domain &| active set */
509 val = 0;
510 for (i = 0; i < NUM_CHANNELS ; i++) {
511 range->freq[val].i = i + 1;
512 range->freq[val].m = p80211wext_channel_freq[i] * 100000;
513 range->freq[val].e = 1;
514 val++;
515 }
516
517 range->num_frequency = val;
518
519 /* Max of /proc/net/wireless */
520 range->max_qual.qual = 100;
521 range->max_qual.level = 0;
522 range->max_qual.noise = 0;
523 range->sensitivity = 3;
524 // XXX these need to be nsd-specific!
525
526 range->min_rts = 0;
527 range->max_rts = 2347;
528 range->min_frag = 256;
529 range->max_frag = 2346;
530
531 range->max_encoding_tokens = NUM_WEPKEYS;
532 range->num_encoding_sizes = 2;
533 range->encoding_size[0] = 5;
534 range->encoding_size[1] = 13;
535
536 // XXX what about num_bitrates/throughput?
537 range->num_bitrates = 0;
538
539 /* estimated max throughput */
540 // XXX need to cap it if we're running at ~2Mbps..
541 range->throughput = 5500000;
542
543 DBFEXIT;
544 return 0;
545}
546#endif
547
548static int p80211wext_giwap(netdevice_t *dev,
549 struct iw_request_info *info,
550 struct sockaddr *ap_addr, char *extra)
551{
552
553 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
554
555 DBFENTER;
556
557 memcpy(ap_addr->sa_data, wlandev->bssid, WLAN_BSSID_LEN);
558 ap_addr->sa_family = ARPHRD_ETHER;
559
560 DBFEXIT;
561 return 0;
562}
563
564#if WIRELESS_EXT > 8
565static int p80211wext_giwencode(netdevice_t *dev,
566 struct iw_request_info *info,
567 struct iw_point *erq, char *key)
568{
569 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
570 int err = 0;
571 int i;
572
573 DBFENTER;
574
575 if (wlandev->hostwep & HOSTWEP_PRIVACYINVOKED)
576 erq->flags = IW_ENCODE_ENABLED;
577 else
578 erq->flags = IW_ENCODE_DISABLED;
579
580 if (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED)
581 erq->flags |= IW_ENCODE_RESTRICTED;
582 else
583 erq->flags |= IW_ENCODE_OPEN;
584
585 i = (erq->flags & IW_ENCODE_INDEX) - 1;
586
587 if (i == -1)
588 i = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK;
589
590 if ((i < 0) || (i >= NUM_WEPKEYS)) {
591 err = -EINVAL;
592 goto exit;
593 }
594
595 erq->flags |= i + 1;
596
597 /* copy the key from the driver cache as the keys are read-only MIBs */
598 erq->length = wlandev->wep_keylens[i];
599 memcpy(key, wlandev->wep_keys[i], erq->length);
600
601 exit:
602 DBFEXIT;
603 return err;
604}
605
606static int p80211wext_siwencode(netdevice_t *dev,
607 struct iw_request_info *info,
608 struct iw_point *erq, char *key)
609{
610 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
611 p80211msg_dot11req_mibset_t msg;
612 p80211item_pstr32_t pstr;
613
614 int err = 0;
615 int result = 0;
616 int enable = 0;
617 int i;
618
619 DBFENTER;
620 if (!wlan_wext_write) {
621 err = (-EOPNOTSUPP);
622 goto exit;
623 }
624
625 /* Check the Key index first. */
626 if((i = (erq->flags & IW_ENCODE_INDEX))) {
627
628 if ((i < 1) || (i > NUM_WEPKEYS)) {
629 err = -EINVAL;
630 goto exit;
631 }
632 else
633 i--;
634
635 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, i);
636
637 if (result) {
638 err = -EFAULT;
639 goto exit;
640 }
641 else {
642 enable = 1;
643 }
644
645 }
646 else {
647 // Do not thing when no Key Index
648 }
649
650 /* Check if there is no key information in the iwconfig request */
651 if((erq->flags & IW_ENCODE_NOKEY) == 0 && enable == 1) {
652
653 /*------------------------------------------------------------
654 * If there is WEP Key for setting, check the Key Information
655 * and then set it to the firmware.
656 -------------------------------------------------------------*/
657
658 if (erq->length > 0) {
659
660 /* copy the key from the driver cache as the keys are read-only MIBs */
661 wlandev->wep_keylens[i] = erq->length;
662 memcpy(wlandev->wep_keys[i], key, erq->length);
663
664 /* Prepare data struture for p80211req_dorequest. */
665 memcpy(pstr.data.data, key, erq->length);
666 pstr.data.len = erq->length;
667
668 switch(i)
669 {
670 case 0:
671 pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0;
672 break;
673
674 case 1:
675 pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1;
676 break;
677
678 case 2:
679 pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2;
680 break;
681
682 case 3:
683 pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3;
684 break;
685
686 default:
687 err = -EINVAL;
688 goto exit;
689 }
690
691 msg.msgcode = DIDmsg_dot11req_mibset;
692 memcpy(&msg.mibattribute.data, &pstr, sizeof(pstr));
693 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
694
695 if (result) {
696 err = -EFAULT;
697 goto exit;
698 }
699 }
700
701 }
702
703 /* Check the PrivacyInvoked flag */
704 if (erq->flags & IW_ENCODE_DISABLED) {
705 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_false);
706 }
707 else if((erq->flags & IW_ENCODE_ENABLED) || enable == 1) {
708 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_true);
709 }
710
711 if (result) {
712 err = -EFAULT;
713 goto exit;
714 }
715
716 /* Check the ExcludeUnencrypted flag */
717 if (erq->flags & IW_ENCODE_RESTRICTED) {
718 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_true);
719 }
720 else if (erq->flags & IW_ENCODE_OPEN) {
721 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_false);
722 }
723
724 if (result) {
725 err = -EFAULT;
726 goto exit;
727 }
728
729 exit:
730
731 DBFEXIT;
732 return err;
733}
734
735static int p80211wext_giwessid(netdevice_t *dev,
736 struct iw_request_info *info,
737 struct iw_point *data, char *essid)
738{
739 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
740
741 DBFENTER;
742
743 if (wlandev->ssid.len) {
744 data->length = wlandev->ssid.len;
745 data->flags = 1;
746 memcpy(essid, wlandev->ssid.data, data->length);
747 essid[data->length] = 0;
748#if (WIRELESS_EXT < 21)
749 data->length++;
750#endif
751 } else {
752 memset(essid, 0, sizeof(wlandev->ssid.data));
753 data->length = 0;
754 data->flags = 0;
755 }
756
757 DBFEXIT;
758 return 0;
759}
760
761static int p80211wext_siwessid(netdevice_t *dev,
762 struct iw_request_info *info,
763 struct iw_point *data, char *essid)
764{
765 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
766 p80211msg_lnxreq_autojoin_t msg;
767
768 int result;
769 int err = 0;
770 int length = data->length;
771
772 DBFENTER;
773
774 if (!wlan_wext_write) {
775 err = (-EOPNOTSUPP);
776 goto exit;
777 }
778
779
780 if ( wlandev->hostwep & HOSTWEP_SHAREDKEY )
781 msg.authtype.data = P80211ENUM_authalg_sharedkey;
782 else
783 msg.authtype.data = P80211ENUM_authalg_opensystem;
784
785 msg.msgcode = DIDmsg_lnxreq_autojoin;
786
787#if (WIRELESS_EXT < 21)
788 if (length) length--;
789#endif
790
791 /* Trim the last '\0' to fit the SSID format */
792
793 if (length && essid[length-1] == '\0') {
794 length--;
795 }
796
797 memcpy(msg.ssid.data.data, essid, length);
798 msg.ssid.data.len = length;
799
800 WLAN_LOG_DEBUG(1,"autojoin_ssid for %s \n",essid);
801 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
802 WLAN_LOG_DEBUG(1,"autojoin_ssid %d\n",result);
803
804 if (result) {
805 err = -EFAULT;
806 goto exit;
807 }
808
809 exit:
810 DBFEXIT;
811 return err;
812}
813
814
815static int p80211wext_siwcommit(netdevice_t *dev,
816 struct iw_request_info *info,
817 struct iw_point *data, char *essid)
818{
819 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
820 int err = 0;
821
822 DBFENTER;
823
824 if (!wlan_wext_write) {
825 err = (-EOPNOTSUPP);
826 goto exit;
827 }
828
829 /* Auto Join */
830 err = p80211wext_autojoin(wlandev);
831
832 exit:
833 DBFEXIT;
834 return err;
835}
836
837
838static int p80211wext_giwrate(netdevice_t *dev,
839 struct iw_request_info *info,
840 struct iw_param *rrq, char *extra)
841{
842 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
843 p80211item_uint32_t mibitem;
844 p80211msg_dot11req_mibset_t msg;
845 int result;
846 int err = 0;
847
848 DBFENTER;
849
850 msg.msgcode = DIDmsg_dot11req_mibget;
851 mibitem.did = DIDmib_p2_p2MAC_p2CurrentTxRate;
852 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
853 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
854
855 if (result) {
856 err = -EFAULT;
857 goto exit;
858 }
859
860 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
861
862 rrq->fixed = 0; /* can it change? */
863 rrq->disabled = 0;
864 rrq->value = 0;
865
866#define HFA384x_RATEBIT_1 ((UINT16)1)
867#define HFA384x_RATEBIT_2 ((UINT16)2)
868#define HFA384x_RATEBIT_5dot5 ((UINT16)4)
869#define HFA384x_RATEBIT_11 ((UINT16)8)
870
871 switch (mibitem.data) {
872 case HFA384x_RATEBIT_1:
873 rrq->value = 1000000;
874 break;
875 case HFA384x_RATEBIT_2:
876 rrq->value = 2000000;
877 break;
878 case HFA384x_RATEBIT_5dot5:
879 rrq->value = 5500000;
880 break;
881 case HFA384x_RATEBIT_11:
882 rrq->value = 11000000;
883 break;
884 default:
885 err = -EINVAL;
886 }
887 exit:
888 DBFEXIT;
889 return err;
890}
891
892static int p80211wext_giwrts(netdevice_t *dev,
893 struct iw_request_info *info,
894 struct iw_param *rts, char *extra)
895{
896 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
897 p80211item_uint32_t mibitem;
898 p80211msg_dot11req_mibset_t msg;
899 int result;
900 int err = 0;
901
902 DBFENTER;
903
904 msg.msgcode = DIDmsg_dot11req_mibget;
905 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold;
906 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
907 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
908
909 if (result) {
910 err = -EFAULT;
911 goto exit;
912 }
913
914 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
915
916 rts->value = mibitem.data;
917 rts->disabled = (rts->value == 2347);
918 rts->fixed = 1;
919
920 exit:
921 DBFEXIT;
922 return err;
923}
924
925
926static int p80211wext_siwrts(netdevice_t *dev,
927 struct iw_request_info *info,
928 struct iw_param *rts, char *extra)
929{
930 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
931 p80211item_uint32_t mibitem;
932 p80211msg_dot11req_mibset_t msg;
933 int result;
934 int err = 0;
935
936 DBFENTER;
937
938 if (!wlan_wext_write) {
939 err = (-EOPNOTSUPP);
940 goto exit;
941 }
942
943 msg.msgcode = DIDmsg_dot11req_mibget;
944 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold;
945 if (rts->disabled)
946 mibitem.data = 2347;
947 else
948 mibitem.data = rts->value;
949
950 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
951 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
952
953 if (result) {
954 err = -EFAULT;
955 goto exit;
956 }
957
958 exit:
959 DBFEXIT;
960 return err;
961}
962
963static int p80211wext_giwfrag(netdevice_t *dev,
964 struct iw_request_info *info,
965 struct iw_param *frag, char *extra)
966{
967 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
968 p80211item_uint32_t mibitem;
969 p80211msg_dot11req_mibset_t msg;
970 int result;
971 int err = 0;
972
973 DBFENTER;
974
975 msg.msgcode = DIDmsg_dot11req_mibget;
976 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold;
977 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
978 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
979
980 if (result) {
981 err = -EFAULT;
982 goto exit;
983 }
984
985 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
986
987 frag->value = mibitem.data;
988 frag->disabled = (frag->value == 2346);
989 frag->fixed = 1;
990
991 exit:
992 DBFEXIT;
993 return err;
994}
995
996static int p80211wext_siwfrag(netdevice_t *dev,
997 struct iw_request_info *info,
998 struct iw_param *frag, char *extra)
999{
1000 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1001 p80211item_uint32_t mibitem;
1002 p80211msg_dot11req_mibset_t msg;
1003 int result;
1004 int err = 0;
1005
1006 DBFENTER;
1007
1008 if (!wlan_wext_write) {
1009 err = (-EOPNOTSUPP);
1010 goto exit;
1011 }
1012
1013 msg.msgcode = DIDmsg_dot11req_mibset;
1014 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold;
1015
1016 if (frag->disabled)
1017 mibitem.data = 2346;
1018 else
1019 mibitem.data = frag->value;
1020
1021 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1022 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1023
1024 if (result) {
1025 err = -EFAULT;
1026 goto exit;
1027 }
1028
1029 exit:
1030 DBFEXIT;
1031 return err;
1032}
1033
1034#endif /* WIRELESS_EXT > 8 */
1035
1036#if WIRELESS_EXT > 10
1037
1038#ifndef IW_RETRY_LONG
1039#define IW_RETRY_LONG IW_RETRY_MAX
1040#endif
1041
1042#ifndef IW_RETRY_SHORT
1043#define IW_RETRY_SHORT IW_RETRY_MIN
1044#endif
1045
1046static int p80211wext_giwretry(netdevice_t *dev,
1047 struct iw_request_info *info,
1048 struct iw_param *rrq, char *extra)
1049{
1050 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1051 p80211item_uint32_t mibitem;
1052 p80211msg_dot11req_mibset_t msg;
1053 int result;
1054 int err = 0;
1055 UINT16 shortretry, longretry, lifetime;
1056
1057 DBFENTER;
1058
1059 msg.msgcode = DIDmsg_dot11req_mibget;
1060 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit;
1061
1062 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1063 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1064
1065 if (result) {
1066 err = -EFAULT;
1067 goto exit;
1068 }
1069
1070 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
1071
1072 shortretry = mibitem.data;
1073
1074 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit;
1075
1076 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1077 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1078
1079 if (result) {
1080 err = -EFAULT;
1081 goto exit;
1082 }
1083
1084 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
1085
1086 longretry = mibitem.data;
1087
1088 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime;
1089
1090 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1091 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1092
1093 if (result) {
1094 err = -EFAULT;
1095 goto exit;
1096 }
1097
1098 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
1099
1100 lifetime = mibitem.data;
1101
1102 rrq->disabled = 0;
1103
1104 if ((rrq->flags & IW_RETRY_TYPE) == IW_RETRY_LIFETIME) {
1105 rrq->flags = IW_RETRY_LIFETIME;
1106 rrq->value = lifetime * 1024;
1107 } else {
1108 if (rrq->flags & IW_RETRY_LONG) {
1109 rrq->flags = IW_RETRY_LIMIT | IW_RETRY_LONG;
1110 rrq->value = longretry;
1111 } else {
1112 rrq->flags = IW_RETRY_LIMIT;
1113 rrq->value = shortretry;
1114 if (shortretry != longretry)
1115 rrq->flags |= IW_RETRY_SHORT;
1116 }
1117 }
1118
1119 exit:
1120 DBFEXIT;
1121 return err;
1122
1123}
1124
1125static int p80211wext_siwretry(netdevice_t *dev,
1126 struct iw_request_info *info,
1127 struct iw_param *rrq, char *extra)
1128{
1129 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1130 p80211item_uint32_t mibitem;
1131 p80211msg_dot11req_mibset_t msg;
1132 int result;
1133 int err = 0;
1134
1135 DBFENTER;
1136
1137 if (!wlan_wext_write) {
1138 err = (-EOPNOTSUPP);
1139 goto exit;
1140 }
1141
1142 if (rrq->disabled) {
1143 err = -EINVAL;
1144 goto exit;
1145 }
1146
1147 msg.msgcode = DIDmsg_dot11req_mibset;
1148
1149 if ((rrq->flags & IW_RETRY_TYPE) == IW_RETRY_LIFETIME) {
1150 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime;
1151 mibitem.data = rrq->value /= 1024;
1152
1153 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1154 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1155
1156 if (result) {
1157 err = -EFAULT;
1158 goto exit;
1159 }
1160 } else {
1161 if (rrq->flags & IW_RETRY_LONG) {
1162 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit;
1163 mibitem.data = rrq->value;
1164
1165 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1166 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1167
1168 if (result) {
1169 err = -EFAULT;
1170 goto exit;
1171 }
1172 }
1173
1174 if (rrq->flags & IW_RETRY_SHORT) {
1175 mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit;
1176 mibitem.data = rrq->value;
1177
1178 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1179 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1180
1181 if (result) {
1182 err = -EFAULT;
1183 goto exit;
1184 }
1185 }
1186 }
1187
1188 exit:
1189 DBFEXIT;
1190 return err;
1191
1192}
1193
1194#endif /* WIRELESS_EXT > 10 */
1195
1196#if WIRELESS_EXT > 9
1197static int p80211wext_siwtxpow(netdevice_t *dev,
1198 struct iw_request_info *info,
1199 struct iw_param *rrq, char *extra)
1200{
1201 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1202 p80211item_uint32_t mibitem;
1203 p80211msg_dot11req_mibset_t msg;
1204 int result;
1205 int err = 0;
1206
1207 DBFENTER;
1208
1209 if (!wlan_wext_write) {
1210 err = (-EOPNOTSUPP);
1211 goto exit;
1212 }
1213
1214 msg.msgcode = DIDmsg_dot11req_mibset;
1215
1216 switch (rrq->value) {
1217
1218 case 1 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel1; break;
1219 case 2 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel2; break;
1220 case 3 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel3; break;
1221 case 4 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel4; break;
1222 case 5 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel5; break;
1223 case 6 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel6; break;
1224 case 7 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel7; break;
1225 case 8 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8; break;
1226 default: mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8; break;
1227 }
1228
1229 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1230 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1231
1232 if (result) {
1233 err = -EFAULT;
1234 goto exit;
1235 }
1236
1237 exit:
1238 DBFEXIT;
1239 return err;
1240}
1241
1242static int p80211wext_giwtxpow(netdevice_t *dev,
1243 struct iw_request_info *info,
1244 struct iw_param *rrq, char *extra)
1245{
1246 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1247 p80211item_uint32_t mibitem;
1248 p80211msg_dot11req_mibset_t msg;
1249 int result;
1250 int err = 0;
1251
1252 DBFENTER;
1253
1254 msg.msgcode = DIDmsg_dot11req_mibget;
1255 mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel;
1256
1257 memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
1258 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1259
1260 if (result) {
1261 err = -EFAULT;
1262 goto exit;
1263 }
1264
1265 memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem));
1266
1267 // XXX handle OFF by setting disabled = 1;
1268
1269 rrq->flags = 0; // IW_TXPOW_DBM;
1270 rrq->disabled = 0;
1271 rrq->fixed = 0;
1272 rrq->value = mibitem.data;
1273
1274 exit:
1275 DBFEXIT;
1276 return err;
1277}
1278#endif /* WIRELESS_EXT > 9 */
1279
1280static int p80211wext_siwspy(netdevice_t *dev,
1281 struct iw_request_info *info,
1282 struct iw_point *srq, char *extra)
1283{
1284 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1285 struct sockaddr address[IW_MAX_SPY];
1286 int number = srq->length;
1287 int i;
1288
1289 DBFENTER;
1290
1291 /* Copy the data from the input buffer */
1292 memcpy(address, extra, sizeof(struct sockaddr)*number);
1293
1294 wlandev->spy_number = 0;
1295
1296 if (number > 0) {
1297
1298 /* extract the addresses */
1299 for (i = 0; i < number; i++) {
1300
1301 memcpy(wlandev->spy_address[i], address[i].sa_data, ETH_ALEN);
1302 }
1303
1304 /* reset stats */
1305 memset(wlandev->spy_stat, 0, sizeof(struct iw_quality) * IW_MAX_SPY);
1306
1307 /* set number of addresses */
1308 wlandev->spy_number = number;
1309 }
1310
1311 DBFEXIT;
1312 return 0;
1313}
1314
1315/* jkriegl: from orinoco, modified */
1316static int p80211wext_giwspy(netdevice_t *dev,
1317 struct iw_request_info *info,
1318 struct iw_point *srq, char *extra)
1319{
1320 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1321
1322 struct sockaddr address[IW_MAX_SPY];
1323 struct iw_quality spy_stat[IW_MAX_SPY];
1324 int number;
1325 int i;
1326
1327 DBFENTER;
1328
1329 number = wlandev->spy_number;
1330
1331 if (number > 0) {
1332
1333 /* populate address and spy struct's */
1334 for (i = 0; i < number; i++) {
1335 memcpy(address[i].sa_data, wlandev->spy_address[i], ETH_ALEN);
1336 address[i].sa_family = AF_UNIX;
1337 memcpy(&spy_stat[i], &wlandev->spy_stat[i], sizeof(struct iw_quality));
1338 }
1339
1340 /* reset update flag */
1341 for (i=0; i < number; i++)
1342 wlandev->spy_stat[i].updated = 0;
1343 }
1344
1345 /* push stuff to user space */
1346 srq->length = number;
1347 memcpy(extra, address, sizeof(struct sockaddr)*number);
1348 memcpy(extra+sizeof(struct sockaddr)*number, spy_stat, sizeof(struct iw_quality)*number);
1349
1350 DBFEXIT;
1351 return 0;
1352}
1353
1354static int prism2_result2err (int prism2_result)
1355{
1356 int err = 0;
1357
1358 switch (prism2_result) {
1359 case P80211ENUM_resultcode_invalid_parameters:
1360 err = -EINVAL;
1361 break;
1362 case P80211ENUM_resultcode_implementation_failure:
1363 err = -EIO;
1364 break;
1365 case P80211ENUM_resultcode_not_supported:
1366 err = -EOPNOTSUPP;
1367 break;
1368 default:
1369 err = 0;
1370 break;
1371 }
1372
1373 return err;
1374}
1375
1376#if WIRELESS_EXT > 13
1377static int p80211wext_siwscan(netdevice_t *dev,
1378 struct iw_request_info *info,
1379 struct iw_point *srq, char *extra)
1380{
1381 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1382 p80211msg_dot11req_scan_t msg;
1383 int result;
1384 int err = 0;
1385 int i = 0;
1386
1387 DBFENTER;
1388
1389 if (wlandev->macmode == WLAN_MACMODE_ESS_AP) {
1390 WLAN_LOG_ERROR("Can't scan in AP mode\n");
1391 err = (-EOPNOTSUPP);
1392 goto exit;
1393 }
1394
1395 memset(&msg, 0x00, sizeof(p80211msg_dot11req_scan_t));
1396 msg.msgcode = DIDmsg_dot11req_scan;
1397 msg.bsstype.data = P80211ENUM_bsstype_any;
1398
1399 memset(&(msg.bssid.data), 0xFF, sizeof (p80211item_pstr6_t));
1400 msg.bssid.data.len = 6;
1401
1402 msg.scantype.data = P80211ENUM_scantype_active;
1403 msg.probedelay.data = 0;
1404
1405 for (i = 1; i <= 14; i++)
1406 msg.channellist.data.data[i-1] = i;
1407 msg.channellist.data.len = 14;
1408
1409 msg.maxchanneltime.data = 250;
1410 msg.minchanneltime.data = 200;
1411
1412 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1413 if (result)
1414 err = prism2_result2err (msg.resultcode.data);
1415
1416 exit:
1417 DBFEXIT;
1418 return err;
1419}
1420
1421
1422/* Helper to translate scan into Wireless Extensions scan results.
1423 * Inspired by the prism54 code, which was in turn inspired by the
1424 * airo driver code.
1425 */
1426static char *
1427wext_translate_bss(struct iw_request_info *info, char *current_ev,
1428 char *end_buf, p80211msg_dot11req_scan_results_t *bss)
1429{
1430 struct iw_event iwe; /* Temporary buffer */
1431
1432 /* The first entry must be the MAC address */
1433 memcpy(iwe.u.ap_addr.sa_data, bss->bssid.data.data, WLAN_BSSID_LEN);
1434 iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
1435 iwe.cmd = SIOCGIWAP;
1436 current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_ADDR_LEN);
1437
1438 /* The following entries will be displayed in the same order we give them */
1439
1440 /* The ESSID. */
1441 if (bss->ssid.data.len > 0) {
1442 char essid[IW_ESSID_MAX_SIZE + 1];
1443 int size;
1444
1445 size = wlan_min(IW_ESSID_MAX_SIZE, bss->ssid.data.len);
1446 memset(&essid, 0, sizeof (essid));
1447 memcpy(&essid, bss->ssid.data.data, size);
1448 WLAN_LOG_DEBUG(1, " essid size = %d\n", size);
1449 iwe.u.data.length = size;
1450 iwe.u.data.flags = 1;
1451 iwe.cmd = SIOCGIWESSID;
1452 current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, &essid[0]);
1453 WLAN_LOG_DEBUG(1, " essid size OK.\n");
1454 }
1455
1456 switch (bss->bsstype.data) {
1457 case P80211ENUM_bsstype_infrastructure:
1458 iwe.u.mode = IW_MODE_MASTER;
1459 break;
1460
1461 case P80211ENUM_bsstype_independent:
1462 iwe.u.mode = IW_MODE_ADHOC;
1463 break;
1464
1465 default:
1466 iwe.u.mode = 0;
1467 break;
1468 }
1469 iwe.cmd = SIOCGIWMODE;
1470 if (iwe.u.mode)
1471 current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_UINT_LEN);
1472
1473 /* Encryption capability */
1474 if (bss->privacy.data == P80211ENUM_truth_true)
1475 iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY;
1476 else
1477 iwe.u.data.flags = IW_ENCODE_DISABLED;
1478 iwe.u.data.length = 0;
1479 iwe.cmd = SIOCGIWENCODE;
1480 current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, NULL);
1481
1482 /* Add frequency. (short) bss->channel is the frequency in MHz */
1483 iwe.u.freq.m = bss->dschannel.data;
1484 iwe.u.freq.e = 0;
1485 iwe.cmd = SIOCGIWFREQ;
1486 current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_FREQ_LEN);
1487
1488 /* Add quality statistics */
1489 iwe.u.qual.level = bss->signal.data;
1490 iwe.u.qual.noise = bss->noise.data;
1491 /* do a simple SNR for quality */
1492 iwe.u.qual.qual = qual_as_percent(bss->signal.data - bss->noise.data);
1493 iwe.cmd = IWEVQUAL;
1494 current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_QUAL_LEN);
1495
1496 return current_ev;
1497}
1498
1499
1500static int p80211wext_giwscan(netdevice_t *dev,
1501 struct iw_request_info *info,
1502 struct iw_point *srq, char *extra)
1503{
1504 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1505 p80211msg_dot11req_scan_results_t msg;
1506 int result = 0;
1507 int err = 0;
1508 int i = 0;
1509 int scan_good = 0;
1510 char *current_ev = extra;
1511
1512 DBFENTER;
1513
1514 /* Since wireless tools doesn't really have a way of passing how
1515 * many scan results results there were back here, keep grabbing them
1516 * until we fail.
1517 */
1518 do {
1519 memset(&msg, 0, sizeof(msg));
1520 msg.msgcode = DIDmsg_dot11req_scan_results;
1521 msg.bssindex.data = i;
1522
1523 result = p80211req_dorequest(wlandev, (UINT8*)&msg);
1524 if ((result != 0) ||
1525 (msg.resultcode.data != P80211ENUM_resultcode_success)) {
1526 break;
1527 }
1528
1529 current_ev = wext_translate_bss(info, current_ev, extra + IW_SCAN_MAX_DATA, &msg);
1530 scan_good = 1;
1531 i++;
1532 } while (i < IW_MAX_AP);
1533
1534 srq->length = (current_ev - extra);
1535 srq->flags = 0; /* todo */
1536
1537 if (result && !scan_good)
1538 err = prism2_result2err (msg.resultcode.data);
1539
1540 DBFEXIT;
1541 return err;
1542}
1543#endif
1544
1545/*****************************************************/
1546//extra wireless extensions stuff to support NetworkManager (I hope)
1547
1548#if WIRELESS_EXT > 17
1549/* SIOCSIWENCODEEXT */
1550static int p80211wext_set_encodeext(struct net_device *dev,
1551 struct iw_request_info *info,
1552 union iwreq_data *wrqu, char *extra)
1553{
1554 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1555 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
1556 p80211msg_dot11req_mibset_t msg;
1557 p80211item_pstr32_t *pstr;
1558
1559 int result = 0;
1560 struct iw_point *encoding = &wrqu->encoding;
1561 int idx = encoding->flags & IW_ENCODE_INDEX;
1562
1563 WLAN_LOG_DEBUG(1,"set_encode_ext flags[%d] alg[%d] keylen[%d]\n",ext->ext_flags,(int)ext->alg,(int)ext->key_len);
1564
1565
1566 if ( ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY ) {
1567 // set default key ? I'm not sure if this the the correct thing to do here
1568
1569 if ( idx ) {
1570 if (idx < 1 || idx > NUM_WEPKEYS) {
1571 return -EINVAL;
1572 } else
1573 idx--;
1574 }
1575 WLAN_LOG_DEBUG(1,"setting default key (%d)\n",idx);
1576 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, idx);
1577 if ( result )
1578 return -EFAULT;
1579 }
1580
1581
1582 if ( ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY ) {
1583 if ( ! ext->alg & IW_ENCODE_ALG_WEP) {
1584 WLAN_LOG_DEBUG(1,"asked to set a non wep key :(");
1585 return -EINVAL;
1586 }
1587 if (idx) {
1588 if (idx <1 || idx > NUM_WEPKEYS)
1589 return -EINVAL;
1590 else
1591 idx--;
1592 }
1593 WLAN_LOG_DEBUG(1,"Set WEP key (%d)\n",idx);
1594 wlandev->wep_keylens[idx] = ext->key_len;
1595 memcpy(wlandev->wep_keys[idx], ext->key, ext->key_len);
1596
1597 memset( &msg,0,sizeof(msg));
1598 pstr = (p80211item_pstr32_t*)&msg.mibattribute.data;
1599 memcpy(pstr->data.data, ext->key,ext->key_len);
1600 pstr->data.len = ext->key_len;
1601 switch (idx) {
1602 case 0:
1603 pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0;
1604 break;
1605 case 1:
1606 pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1;
1607 break;
1608 case 2:
1609 pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2;
1610 break;
1611 case 3:
1612 pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3;
1613 break;
1614 default:
1615 break;
1616 }
1617 msg.msgcode = DIDmsg_dot11req_mibset;
1618 result = p80211req_dorequest(wlandev,(UINT8*)&msg);
1619 WLAN_LOG_DEBUG(1,"result (%d)\n",result);
1620 }
1621 return result;
1622}
1623
1624/* SIOCGIWENCODEEXT */
1625static int p80211wext_get_encodeext(struct net_device *dev,
1626 struct iw_request_info *info,
1627 union iwreq_data *wrqu, char *extra)
1628
1629{
1630 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1631 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
1632
1633 struct iw_point *encoding = &wrqu->encoding;
1634 int result = 0;
1635 int max_len;
1636 int idx;
1637
1638 DBFENTER;
1639
1640 WLAN_LOG_DEBUG(1,"get_encode_ext flags[%d] alg[%d] keylen[%d]\n",ext->ext_flags,(int)ext->alg,(int)ext->key_len);
1641
1642
1643 max_len = encoding->length - sizeof(*ext);
1644 if ( max_len <= 0) {
1645 WLAN_LOG_DEBUG(1,"get_encodeext max_len [%d] invalid\n",max_len);
1646 result = -EINVAL;
1647 goto exit;
1648 }
1649 idx = encoding->flags & IW_ENCODE_INDEX;
1650
1651 WLAN_LOG_DEBUG(1,"get_encode_ext index [%d]\n",idx);
1652
1653 if (idx) {
1654 if (idx < 1 || idx > NUM_WEPKEYS ) {
1655 WLAN_LOG_DEBUG(1,"get_encode_ext invalid key index [%d]\n",idx);
1656 result = -EINVAL;
1657 goto exit;
1658 }
1659 idx--;
1660 } else {
1661 /* default key ? not sure what to do */
1662 /* will just use key[0] for now ! FIX ME */
1663 }
1664
1665 encoding->flags = idx + 1;
1666 memset(ext,0,sizeof(*ext));
1667
1668 ext->alg = IW_ENCODE_ALG_WEP;
1669 ext->key_len = wlandev->wep_keylens[idx];
1670 memcpy( ext->key, wlandev->wep_keys[idx] , ext->key_len );
1671
1672 encoding->flags |= IW_ENCODE_ENABLED;
1673exit:
1674 DBFEXIT;
1675
1676 return result;
1677}
1678
1679
1680/* SIOCSIWAUTH */
1681static int p80211_wext_set_iwauth (struct net_device *dev,
1682 struct iw_request_info *info,
1683 union iwreq_data *wrqu, char *extra)
1684{
1685 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1686 struct iw_param *param = &wrqu->param;
1687 int result =0;
1688
1689 WLAN_LOG_DEBUG(1,"set_iwauth flags[%d]\n",(int)param->flags & IW_AUTH_INDEX );
1690
1691 switch (param->flags & IW_AUTH_INDEX) {
1692 case IW_AUTH_DROP_UNENCRYPTED:
1693 WLAN_LOG_DEBUG(1,"drop_unencrypted %d\n",param->value);
1694 if (param->value)
1695 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_true);
1696 else
1697 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_false);
1698 break;
1699
1700 case IW_AUTH_PRIVACY_INVOKED:
1701 WLAN_LOG_DEBUG(1,"privacy invoked %d\n",param->value);
1702 if ( param->value)
1703 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_true);
1704 else
1705 result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_false);
1706
1707 break;
1708
1709 case IW_AUTH_80211_AUTH_ALG:
1710 if ( param->value & IW_AUTH_ALG_OPEN_SYSTEM ) {
1711 WLAN_LOG_DEBUG(1,"set open_system\n");
1712 wlandev->hostwep &= ~HOSTWEP_SHAREDKEY;
1713 } else if ( param->value & IW_AUTH_ALG_SHARED_KEY) {
1714 WLAN_LOG_DEBUG(1,"set shared key\n");
1715 wlandev->hostwep |= HOSTWEP_SHAREDKEY;
1716 } else {
1717 /* don't know what to do know :( */
1718 WLAN_LOG_DEBUG(1,"unknown AUTH_ALG (%d)\n",param->value);
1719 result = -EINVAL;
1720 }
1721 break;
1722
1723 default:
1724 break;
1725 }
1726
1727
1728
1729 return result;
1730}
1731
1732/* SIOCSIWAUTH */
1733static int p80211_wext_get_iwauth (struct net_device *dev,
1734 struct iw_request_info *info,
1735 union iwreq_data *wrqu, char *extra)
1736{
1737 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1738 struct iw_param *param = &wrqu->param;
1739 int result =0;
1740
1741 WLAN_LOG_DEBUG(1,"get_iwauth flags[%d]\n",(int)param->flags & IW_AUTH_INDEX );
1742
1743 switch (param->flags & IW_AUTH_INDEX) {
1744 case IW_AUTH_DROP_UNENCRYPTED:
1745 param->value = wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED?1:0;
1746 break;
1747
1748 case IW_AUTH_PRIVACY_INVOKED:
1749 param->value = wlandev->hostwep & HOSTWEP_PRIVACYINVOKED?1:0;
1750 break;
1751
1752 case IW_AUTH_80211_AUTH_ALG:
1753 param->value = wlandev->hostwep & HOSTWEP_SHAREDKEY?IW_AUTH_ALG_SHARED_KEY:IW_AUTH_ALG_OPEN_SYSTEM;
1754 break;
1755
1756
1757 default:
1758 break;
1759 }
1760
1761
1762
1763 return result;
1764}
1765
1766
1767#endif
1768
1769
1770
1771
1772
1773
1774/*****************************************************/
1775
1776
1777
1778
1779
1780/*
1781typedef int (*iw_handler)(netdevice_t *dev, struct iw_request_info *info,
1782 union iwreq_data *wrqu, char *extra);
1783*/
1784
1785#if WIRELESS_EXT > 12
1786static iw_handler p80211wext_handlers[] = {
1787 (iw_handler) p80211wext_siwcommit, /* SIOCSIWCOMMIT */
1788 (iw_handler) p80211wext_giwname, /* SIOCGIWNAME */
1789 (iw_handler) NULL, /* SIOCSIWNWID */
1790 (iw_handler) NULL, /* SIOCGIWNWID */
1791 (iw_handler) p80211wext_siwfreq, /* SIOCSIWFREQ */
1792 (iw_handler) p80211wext_giwfreq, /* SIOCGIWFREQ */
1793 (iw_handler) p80211wext_siwmode, /* SIOCSIWMODE */
1794 (iw_handler) p80211wext_giwmode, /* SIOCGIWMODE */
1795 (iw_handler) NULL, /* SIOCSIWSENS */
1796 (iw_handler) NULL, /* SIOCGIWSENS */
1797 (iw_handler) NULL, /* not used */ /* SIOCSIWRANGE */
1798 (iw_handler) p80211wext_giwrange, /* SIOCGIWRANGE */
1799 (iw_handler) NULL, /* not used */ /* SIOCSIWPRIV */
1800 (iw_handler) NULL, /* kernel code */ /* SIOCGIWPRIV */
1801 (iw_handler) NULL, /* not used */ /* SIOCSIWSTATS */
1802 (iw_handler) NULL, /* kernel code */ /* SIOCGIWSTATS */
1803 (iw_handler) p80211wext_siwspy, /* SIOCSIWSPY */
1804 (iw_handler) p80211wext_giwspy, /* SIOCGIWSPY */
1805 (iw_handler) NULL, /* -- hole -- */
1806 (iw_handler) NULL, /* -- hole -- */
1807 (iw_handler) NULL, /* SIOCSIWAP */
1808 (iw_handler) p80211wext_giwap, /* SIOCGIWAP */
1809 (iw_handler) NULL, /* -- hole -- */
1810 (iw_handler) NULL, /* SIOCGIWAPLIST */
1811#if WIRELESS_EXT > 13
1812 (iw_handler) p80211wext_siwscan, /* SIOCSIWSCAN */
1813 (iw_handler) p80211wext_giwscan, /* SIOCGIWSCAN */
1814#else /* WIRELESS_EXT > 13 */
1815 (iw_handler) NULL, /* null */ /* SIOCSIWSCAN */
1816 (iw_handler) NULL, /* null */ /* SIOCGIWSCAN */
1817#endif /* WIRELESS_EXT > 13 */
1818 (iw_handler) p80211wext_siwessid, /* SIOCSIWESSID */
1819 (iw_handler) p80211wext_giwessid, /* SIOCGIWESSID */
1820 (iw_handler) NULL, /* SIOCSIWNICKN */
1821 (iw_handler) p80211wext_giwessid, /* SIOCGIWNICKN */
1822 (iw_handler) NULL, /* -- hole -- */
1823 (iw_handler) NULL, /* -- hole -- */
1824 (iw_handler) NULL, /* SIOCSIWRATE */
1825 (iw_handler) p80211wext_giwrate, /* SIOCGIWRATE */
1826 (iw_handler) p80211wext_siwrts, /* SIOCSIWRTS */
1827 (iw_handler) p80211wext_giwrts, /* SIOCGIWRTS */
1828 (iw_handler) p80211wext_siwfrag, /* SIOCSIWFRAG */
1829 (iw_handler) p80211wext_giwfrag, /* SIOCGIWFRAG */
1830 (iw_handler) p80211wext_siwtxpow, /* SIOCSIWTXPOW */
1831 (iw_handler) p80211wext_giwtxpow, /* SIOCGIWTXPOW */
1832 (iw_handler) p80211wext_siwretry, /* SIOCSIWRETRY */
1833 (iw_handler) p80211wext_giwretry, /* SIOCGIWRETRY */
1834 (iw_handler) p80211wext_siwencode, /* SIOCSIWENCODE */
1835 (iw_handler) p80211wext_giwencode, /* SIOCGIWENCODE */
1836 (iw_handler) NULL, /* SIOCSIWPOWER */
1837 (iw_handler) NULL, /* SIOCGIWPOWER */
1838#if WIRELESS_EXT > 17
1839/* WPA operations */
1840
1841 (iw_handler) NULL, /* -- hole -- */
1842 (iw_handler) NULL, /* -- hole -- */
1843 (iw_handler) NULL, /* SIOCSIWGENIE set generic IE */
1844 (iw_handler) NULL, /* SIOCGIWGENIE get generic IE */
1845 (iw_handler) p80211_wext_set_iwauth, /* SIOCSIWAUTH set authentication mode params */
1846 (iw_handler) p80211_wext_get_iwauth, /* SIOCGIWAUTH get authentication mode params */
1847
1848 (iw_handler) p80211wext_set_encodeext, /* SIOCSIWENCODEEXT set encoding token & mode */
1849 (iw_handler) p80211wext_get_encodeext, /* SIOCGIWENCODEEXT get encoding token & mode */
1850 (iw_handler) NULL, /* SIOCSIWPMKSA PMKSA cache operation */
1851#endif
1852};
1853
1854struct iw_handler_def p80211wext_handler_def = {
1855 .num_standard = sizeof(p80211wext_handlers) / sizeof(iw_handler),
1856 .num_private = 0,
1857 .num_private_args = 0,
1858 .standard = p80211wext_handlers,
1859 .private = NULL,
1860 .private_args = NULL,
1861#if WIRELESS_EXT > 16
1862 .get_wireless_stats = p80211wext_get_wireless_stats
1863#endif
1864};
1865
1866#endif
1867
1868/* wireless extensions' ioctls */
1869int p80211wext_support_ioctl(netdevice_t *dev, struct ifreq *ifr, int cmd)
1870{
1871 wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
1872
1873#if WIRELESS_EXT < 13
1874 struct iwreq *iwr = (struct iwreq*)ifr;
1875#endif
1876
1877 p80211item_uint32_t mibitem;
1878 int err = 0;
1879
1880 DBFENTER;
1881
1882 mibitem.status = P80211ENUM_msgitem_status_data_ok;
1883
1884 if ( wlandev->msdstate != WLAN_MSD_RUNNING ) {
1885 err = -ENODEV;
1886 goto exit;
1887 }
1888
1889 WLAN_LOG_DEBUG(1, "Received wireless extension ioctl #%d.\n", cmd);
1890
1891 switch (cmd) {
1892#if WIRELESS_EXT < 13
1893 case SIOCSIWNAME: /* unused */
1894 err = (-EOPNOTSUPP);
1895 break;
1896 case SIOCGIWNAME: /* get name == wireless protocol */
1897 err = p80211wext_giwname(dev, NULL, (char *) &iwr->u, NULL);
1898 break;
1899 case SIOCSIWNWID:
1900 case SIOCGIWNWID:
1901 err = (-EOPNOTSUPP);
1902 break;
1903 case SIOCSIWFREQ: /* set channel */
1904 err = p80211wext_siwfreq(dev, NULL, &(iwr->u.freq), NULL);
1905 break;
1906 case SIOCGIWFREQ: /* get channel */
1907 err = p80211wext_giwfreq(dev, NULL, &(iwr->u.freq), NULL);
1908 break;
1909 case SIOCSIWRANGE:
1910 case SIOCSIWPRIV:
1911 case SIOCSIWAP: /* set access point MAC addresses (BSSID) */
1912 err = (-EOPNOTSUPP);
1913 break;
1914
1915 case SIOCGIWAP: /* get access point MAC addresses (BSSID) */
1916 err = p80211wext_giwap(dev, NULL, &(iwr->u.ap_addr), NULL);
1917 break;
1918
1919#if WIRELESS_EXT > 8
1920 case SIOCSIWMODE: /* set operation mode */
1921 case SIOCSIWESSID: /* set SSID (network name) */
1922 case SIOCSIWRATE: /* set default bit rate (bps) */
1923 err = (-EOPNOTSUPP);
1924 break;
1925
1926 case SIOCGIWMODE: /* get operation mode */
1927 err = p80211wext_giwmode(dev, NULL, &iwr->u.mode, NULL);
1928
1929 break;
1930 case SIOCGIWNICKN: /* get node name/nickname */
1931 case SIOCGIWESSID: /* get SSID */
1932 if(iwr->u.essid.pointer) {
1933 char ssid[IW_ESSID_MAX_SIZE+1];
1934 memset(ssid, 0, sizeof(ssid));
1935
1936 err = p80211wext_giwessid(dev, NULL, &iwr->u.essid, ssid);
1937 if(copy_to_user(iwr->u.essid.pointer, ssid, sizeof(ssid)))
1938 err = (-EFAULT);
1939 }
1940 break;
1941 case SIOCGIWRATE:
1942 err = p80211wext_giwrate(dev, NULL, &iwr->u.bitrate, NULL);
1943 break;
1944 case SIOCGIWRTS:
1945 err = p80211wext_giwrts(dev, NULL, &iwr->u.rts, NULL);
1946 break;
1947 case SIOCGIWFRAG:
1948 err = p80211wext_giwfrag(dev, NULL, &iwr->u.rts, NULL);
1949 break;
1950 case SIOCGIWENCODE:
1951 if (!capable(CAP_NET_ADMIN))
1952 err = -EPERM;
1953 else if (iwr->u.encoding.pointer) {
1954 char keybuf[MAX_KEYLEN];
1955 err = p80211wext_giwencode(dev, NULL,
1956 &iwr->u.encoding, keybuf);
1957 if (copy_to_user(iwr->u.encoding.pointer, keybuf,
1958 iwr->u.encoding.length))
1959 err = -EFAULT;
1960 }
1961 break;
1962 case SIOCGIWAPLIST:
1963 case SIOCSIWRTS:
1964 case SIOCSIWFRAG:
1965 case SIOCSIWSENS:
1966 case SIOCGIWSENS:
1967 case SIOCSIWNICKN: /* set node name/nickname */
1968 case SIOCSIWENCODE: /* set encoding token & mode */
1969 case SIOCSIWSPY:
1970 case SIOCGIWSPY:
1971 case SIOCSIWPOWER:
1972 case SIOCGIWPOWER:
1973 case SIOCGIWPRIV:
1974 err = (-EOPNOTSUPP);
1975 break;
1976 case SIOCGIWRANGE:
1977 if(iwr->u.data.pointer != NULL) {
1978 struct iw_range range;
1979 err = p80211wext_giwrange(dev, NULL, &iwr->u.data,
1980 (char *) &range);
1981 /* Push that up to the caller */
1982 if (copy_to_user(iwr->u.data.pointer, &range, sizeof(range)))
1983 err = -EFAULT;
1984 }
1985 break;
1986#endif /* WIRELESS_EXT > 8 */
1987#if WIRELESS_EXT > 9
1988 case SIOCSIWTXPOW:
1989 err = (-EOPNOTSUPP);
1990 break;
1991 case SIOCGIWTXPOW:
1992 err = p80211wext_giwtxpow(dev, NULL, &iwr->u.txpower, NULL);
1993 break;
1994#endif /* WIRELESS_EXT > 9 */
1995#if WIRELESS_EXT > 10
1996 case SIOCSIWRETRY:
1997 err = (-EOPNOTSUPP);
1998 break;
1999 case SIOCGIWRETRY:
2000 err = p80211wext_giwretry(dev, NULL, &iwr->u.retry, NULL);
2001 break;
2002#endif /* WIRELESS_EXT > 10 */
2003
2004#endif /* WIRELESS_EXT <= 12 */
2005
2006 default:
2007 err = (-EOPNOTSUPP);
2008 break;
2009 }
2010
2011 exit:
2012 DBFEXIT;
2013 return (err);
2014}
2015
2016int p80211wext_event_associated(wlandevice_t *wlandev, int assoc)
2017{
2018 union iwreq_data data;
2019
2020 DBFENTER;
2021
2022#if WIRELESS_EXT > 13
2023 /* Send the association state first */
2024 data.ap_addr.sa_family = ARPHRD_ETHER;
2025 if (assoc) {
2026 memcpy(data.ap_addr.sa_data, wlandev->bssid, WLAN_ADDR_LEN);
2027 } else {
2028 memset(data.ap_addr.sa_data, 0, WLAN_ADDR_LEN);
2029 }
2030
2031 if (wlan_wext_write)
2032 wireless_send_event(wlandev->netdev, SIOCGIWAP, &data, NULL);
2033
2034 if (!assoc) goto done;
2035
2036 // XXX send association data, like IEs, etc etc.
2037#endif
2038 done:
2039 DBFEXIT;
2040 return 0;
2041}
2042
2043
2044#endif /* compatibility to wireless extensions */
2045
2046
2047
2048
diff --git a/drivers/staging/wlan-ng/prism2_cs.c b/drivers/staging/wlan-ng/prism2_cs.c
new file mode 100644
index 00000000000..63ce5659f21
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2_cs.c
@@ -0,0 +1,1487 @@
1#define WLAN_HOSTIF WLAN_PCMCIA
2#include "hfa384x.c"
3#include "prism2mgmt.c"
4#include "prism2mib.c"
5#include "prism2sta.c"
6
7#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,21) )
8#if (WLAN_CPU_FAMILY == WLAN_Ix86)
9#ifndef CONFIG_ISA
10#warning "You may need to enable ISA support in your kernel."
11#endif
12#endif
13#endif
14
15#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) )
16static u_int irq_mask = 0xdeb8; /* Interrupt mask */
17static int irq_list[4] = { -1 }; /* Interrupt list */
18#endif
19static u_int prism2_ignorevcc=1; /* Boolean, if set, we
20 * ignore what the Vcc
21 * is set to and what the CIS
22 * says.
23 */
24module_param( prism2_ignorevcc, int, 0644);
25
26#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) )
27#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,9))
28static int numlist = 4;
29module_param_array(irq_list, int, numlist, 0444);
30#else
31module_param_array(irq_list, int, NULL, 0444);
32#endif
33module_param( irq_mask, int, 0644);
34#endif
35
36#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
37static int prism2_cs_suspend(struct pcmcia_device *pdev);
38static int prism2_cs_resume(struct pcmcia_device *pdev);
39static void prism2_cs_remove(struct pcmcia_device *pdev);
40static int prism2_cs_probe(struct pcmcia_device *pdev);
41#else
42dev_link_t *prism2sta_attach(void);
43static void prism2sta_detach(dev_link_t *link);
44static void prism2sta_config(dev_link_t *link);
45static void prism2sta_release(u_long arg);
46static int prism2sta_event (event_t event, int priority, event_callback_args_t *args);
47
48static dev_link_t *dev_list = NULL; /* head of instance list */
49#endif
50
51#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68))
52/*----------------------------------------------------------------
53* cs_error
54*
55* Utility function to print card services error messages.
56*
57* Arguments:
58* handle client handle identifying this CS client
59* func CS function number that generated the error
60* ret CS function return code
61*
62* Returns:
63* nothing
64* Side effects:
65*
66* Call context:
67* process thread
68* interrupt
69----------------------------------------------------------------*/
70static void cs_error(client_handle_t handle, int func, int ret)
71{
72#if (defined(CS_RELEASE_CODE) && (CS_RELEASE_CODE < 0x2911))
73 CardServices(ReportError, dev_info, (void *)func, (void *)ret);
74#else
75 error_info_t err = { func, ret };
76 pcmcia_report_error(handle, &err);
77#endif
78}
79#else // kernel_version
80
81#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
82static struct pcmcia_device_id prism2_cs_ids[] = {
83 PCMCIA_DEVICE_PROD_ID12("INTERSIL", "HFA384x/IEEE", 0x74c5e40d, 0xdb472a18), // Intersil PRISM2 Reference Design 11Mb/s 802.11b WLAN Card
84 PCMCIA_DEVICE_MANF_CARD(0x0138, 0x0002), // Compaq WL100/200 11Mb/s 802.11b WLAN Card
85 PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0002), // Compaq iPaq HNW-100 11Mb/s 802.11b WLAN Card
86 PCMCIA_DEVICE_MANF_CARD(0x0250, 0x0002), // Samsung SWL2000-N 11Mb/s 802.11b WLAN Card
87 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002), // Z-Com XI300 11Mb/s 802.11b WLAN Card
88 PCMCIA_DEVICE_PROD_ID12("ZoomAir 11Mbps High", "Rate wireless Networking", 0x273fe3db, 0x32a1eaee), // ZoomAir 4100 11Mb/s 802.11b WLAN Card
89 PCMCIA_DEVICE_PROD_ID123("Instant Wireless ", " Network PC CARD", "Version 01.02", 0x11d901af, 0x6e9bd926, 0x4b74baa0), // Linksys WPC11 11Mbps 802.11b WLAN Card
90 PCMCIA_DEVICE_PROD_ID123("Addtron", "AWP-100 Wireless PCMCIA", "Version 01.02", 0xe6ec52ce, 0x8649af2, 0x4b74baa0), // Addtron AWP-100 11Mbps 802.11b WLAN Card
91 PCMCIA_DEVICE_PROD_ID123("D", "Link DWL-650 11Mbps WLAN Card", "Version 01.02", 0x71b18589, 0xb6f1b0ab, 0x4b74baa0), // D-Link DWL-650 11Mbps 802.11b WLAN Card
92 PCMCIA_DEVICE_PROD_ID123("SMC", "SMC2632W", "Version 01.02", 0xc4f8b18b, 0x474a1f2a, 0x4b74baa0), // SMC 2632W 11Mbps 802.11b WLAN Card
93 PCMCIA_DEVICE_PROD_ID1234("Intersil", "PRISM 2_5 PCMCIA ADAPTER", "ISL37300P", "Eval-RevA", 0x4b801a17, 0x6345a0bf, 0xc9049a39, 0xc23adc0e), // BroMax Freeport 11Mbps 802.11b WLAN Card (Prism 2.5)
94 PCMCIA_DEVICE_PROD_ID123("U.S. Robotics", "IEEE 802.11b PC-CARD", "Version 01.02", 0xc7b8df9d, 0x1700d087, 0x4b74baa0), // U.S. Robotics IEEE 802.11b PC-CARD
95 PCMCIA_DEVICE_PROD_ID12("Digital Data Communications", "WPC-0100", 0xfdd73470, 0xe0b6f146), // Level-One WPC-0100
96 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1612), // Bromax OEM 11Mbps 802.11b WLAN Card (Prism 2.5)
97 PCMCIA_DEVICE_MANF_CARD(0x0274, 0x1613), // Bromax OEM 11Mbps 802.11b WLAN Card (Prism 3)
98 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCC-11", 0x5261440f, 0xa6405584), // corega K.K. Wireless LAN PCC-11
99 PCMCIA_DEVICE_PROD_ID12("corega K.K.", "Wireless LAN PCCA-11", 0x5261440f, 0xdf6115f9), // corega K.K. Wireless LAN PCCA-11
100 PCMCIA_DEVICE_MANF_CARD(0xc001, 0x0008), // CONTEC FLEXSCAN/FX-DDS110-PCC
101 PCMCIA_DEVICE_PROD_ID12("PLANEX", "GeoWave/GW-NS110", 0x209f40ab, 0x46263178), // PLANEX GeoWave/GW-NS110
102 PCMCIA_DEVICE_PROD_ID123("OEM", "PRISM2 IEEE 802.11 PC-Card", "Version 01.02", 0xfea54c90, 0x48f2bdd6, 0x4b74baa0), // Ambicom WL1100 11Mbps 802.11b WLAN Card
103 PCMCIA_DEVICE_PROD_ID123("LeArtery", "SYNCBYAIR 11Mbps Wireless LAN PC Card", "Version 01.02", 0x7e3b326a, 0x49893e92, 0x4b74baa0), // LeArtery SYNCBYAIR 11Mbps 802.11b WLAN Card
104PCMCIA_DEVICE_MANF_CARD(0x01ff, 0x0008), // Intermec MobileLAN 11Mbps 802.11b WLAN Card
105 PCMCIA_DEVICE_PROD_ID123("NETGEAR MA401 Wireless PC", "Card", "Version 01.00", 0xa37434e9, 0x9762e8f1, 0xa57adb8c), // NETGEAR MA401 11Mbps 802.11 WLAN Card
106 PCMCIA_DEVICE_PROD_ID1234("Intersil", "PRISM Freedom PCMCIA Adapter", "ISL37100P", "Eval-RevA", 0x4b801a17, 0xf222ec2d, 0x630d52b2, 0xc23adc0e), // Intersil PRISM Freedom 11mbps 802.11 WLAN Card
107 PCMCIA_DEVICE_PROD_ID123("OTC", "Wireless AirEZY 2411-PCC WLAN Card", "Version 01.02", 0x4ac44287, 0x235a6bed, 0x4b74baa0), // OTC Wireless AirEZY 2411-PCC 11Mbps 802.11 WLAN Card
108 PCMCIA_DEVICE_PROD_ID1234("802.11", "11Mbps Wireless LAN Card", "v08C1", "" , 0xb67a610e, 0x655aa7b7, 0x264b451a, 0x0), // Dynalink L11HDT 11Mbps 802.11 WLAN Card
109 PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002), // Dynalink L11HDT 11Mbps 802.11 WLAN Card
110 PCMCIA_DEVICE_PROD_ID12("PROXIM", "RangeLAN-DS/LAN PC CARD", 0xc6536a5e, 0x3f35797d), // PROXIM RangeLAN-DS/LAN PC CARD
111 PCMCIA_DEVICE_PROD_ID1234("ACTIONTEC", "PRISM Wireless LAN PC Card", "0381", "RevA", 0x393089da, 0xa71e69d5, 0x90471fa9, 0x57a66194), // ACTIONTEC PRISM Wireless LAN PC Card
112 PCMCIA_DEVICE_MANF_CARD(0x1668, 0x0101), // ACTIONTEC PRISM Wireless LAN PC Card
113 PCMCIA_DEVICE_PROD_ID12("3Com", "3CRWE737A AirConnect Wireless LAN PC Card", 0x41240e5b, 0x56010af3), // 3Com AirConnect 3CRWE737A
114 PCMCIA_DEVICE_PROD_ID12("3Com", "3CRWE777A AirConnect Wireless LAN PCI Card" , 0x41240e5b, 0xafc7c33e), // 3Com AirConnect 3CRWE777A
115 PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11b_PC_CARD_25", 0x78fc06ee, 0xdb9aa842), // ASUS WL-100 802.11b WLAN PC Card
116 PCMCIA_DEVICE_PROD_ID12("ASUS", "802_11B_CF_CARD_25", 0x78fc06ee, 0x45a50c1e), // ASUS WL-110 802.11b WLAN CF Card
117 PCMCIA_DEVICE_PROD_ID12("BUFFALO", "WLI-CF-S11G", 0x2decece3, 0x82067c18), // BUFFALO WLI-CF-S11G 802.11b WLAN Card
118 PCMCIA_DEVICE_PROD_ID1234("The Linksys Group, Inc.", "Wireless Network CF Card", "ISL37300P", "RevA", 0xa5f472c2, 0x9c05598d, 0xc9049a39, 0x57a66194), // Linksys WCF11 11Mbps 802.11b WLAN Card (Prism 2.5)
119 PCMCIA_DEVICE_PROD_ID1234("Linksys", "Wireless CompactFlash Card", "", "", 0x733cc81, 0xc52f395, 0x0, 0x0), // Linksys WCF12 11Mbps 802.11b WLAN Card (Prism 3)
120 PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), // Linksys WCF12 11Mbps 802.11b WLAN Card (Prism 3)
121 PCMCIA_DEVICE_PROD_ID1234("NETGEAR MA401RA Wireless PC", "Card", "ISL37300P", "Eval-RevA", 0x306467f, 0x9762e8f1, 0xc9049a39, 0xc23adc0e), // NETGEAR MA401RA 11Mbps 802.11 WLAN Card
122 PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005), // D-Link DCF-660W 11Mbps 802.11b WLAN Card
123 PCMCIA_DEVICE_MANF_CARD(0x02d2, 0x0001), // Microsoft Wireless Notebook Adapter MN-520
124 PCMCIA_DEVICE_MANF_CARD(0x0089, 0x0002), // AnyPoint(TM) Wireless II PC Card
125 PCMCIA_DEVICE_PROD_ID1234("D", "Link DRC-650 11Mbps WLAN Card", "Version 01.02", "" , 0x71b18589, 0xf144e3ac, 0x4b74baa0, 0x0), // D-Link DRC-650 802.11b WLAN Card
126 PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), // Adaptec AWN-8030
127 PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7110), // D-Link DWL-650 rev P 802.11b WLAN card
128 // PCMCIA_DEVICE_PROD_ID1234("D-Link", "DWL-650 Wireless PC Card RevP", "ISL37101P-10", "A3", 0x1a424a1c, 0x6ea57632, 0xdd97a26b, 0x56b21f52), // D-Link DWL-650 rev P 802.11b WLAN card
129 PCMCIA_DEVICE_PROD_ID123("INTERSIL", "I-GATE 11M PC Card / PC Card plus", "Version 01.02", 0x74c5e40d, 0x8304ff77, 0x4b74baa0), // I-Gate 11M PC Card
130 PCMCIA_DEVICE_PROD_ID1234("BENQ", "AWL100 PCMCIA ADAPTER", "ISL37300P", "Eval-RevA", 0x35dadc74, 0x1f7fedb, 0xc9049a39, 0xc23adc0e), // benQ AWL100 802.11b WLAN Card
131 PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), // benQ AWL100 802.11b WLAN Card
132 // PCMCIA_DEVICE_PROD_ID1("INTERSIL", 0x74c5e40d), // Intersil Prism 2 card
133 // PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), // Intersil Prism 2 card
134
135 PCMCIA_DEVICE_NULL
136};
137
138MODULE_DEVICE_TABLE(pcmcia, prism2_cs_ids);
139#endif
140
141static struct pcmcia_driver prism2_cs_driver = {
142 .drv = {
143 .name = "prism2_cs",
144 },
145 .owner = THIS_MODULE,
146#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
147 .suspend = prism2_cs_suspend,
148 .resume = prism2_cs_resume,
149 .remove = prism2_cs_remove,
150 .probe = prism2_cs_probe,
151 .id_table = prism2_cs_ids,
152#else
153 .attach = prism2sta_attach,
154 .detach = prism2sta_detach,
155#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12)
156 .id_table = prism2_cs_ids,
157 .event = prism2sta_event,
158#endif // > 2.6.12
159#endif // <= 2.6.15
160};
161#endif /* kernel_version */
162
163#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
164#define CS_CHECK(fn, ret) \
165do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
166
167#define CFG_CHECK(fn, retf) \
168do { int ret = (retf); \
169if (ret != 0) { \
170 WLAN_LOG_DEBUG(1, "CardServices(" #fn ") returned %d\n", ret); \
171 cs_error(pdev, fn, ret); \
172 goto next_entry; \
173} \
174} while (0)
175
176static void prism2_cs_remove(struct pcmcia_device *pdev)
177{
178 struct wlandevice *wlandev;
179
180#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
181 dev_link_t *link = dev_to_instance(pdev);
182#endif
183
184 DBFENTER;
185
186#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
187 wlandev = pdev->priv;
188#else
189 wlandev = link->priv;
190#endif
191
192 if (wlandev) {
193 p80211netdev_hwremoved(wlandev);
194 unregister_wlandev(wlandev);
195 wlan_unsetup(wlandev);
196 if (wlandev->priv) {
197 hfa384x_t *hw = wlandev->priv;
198 wlandev->priv = NULL;
199 if (hw) {
200 hfa384x_destroy(hw);
201 kfree(hw);
202 }
203 }
204 kfree(wlandev);
205 }
206
207#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
208 pdev->priv = NULL;
209 pcmcia_disable_device(pdev);
210#else
211 if (link->state & DEV_CONFIG) {
212 if (link->win)
213 pcmcia_release_window(link->win);
214 pcmcia_release_configuration(link->handle);
215 if (link->io.NumPorts1)
216 pcmcia_release_io(link->handle, &link->io);
217 if (link->irq.AssignedIRQ)
218 pcmcia_release_irq(link->handle, &link->irq);
219
220 link->state &= ~DEV_CONFIG;
221 }
222
223 link->priv = NULL;
224 kfree(link);
225#endif
226
227 DBFEXIT;
228 return;
229}
230
231static int prism2_cs_suspend(struct pcmcia_device *pdev)
232{
233 struct wlandevice *wlandev;
234
235#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
236 dev_link_t *link = dev_to_instance(pdev);
237#endif
238
239 DBFENTER;
240
241#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
242 wlandev = pdev->priv;
243 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
244#else
245 wlandev = link->priv;
246
247 link->state |= DEV_SUSPEND;
248 if (link->state & DEV_CONFIG) {
249 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
250 pcmcia_release_configuration(link->handle);
251 }
252#endif
253
254 DBFEXIT;
255
256 return 0;
257}
258
259static int prism2_cs_resume(struct pcmcia_device *pdev)
260{
261 struct wlandevice *wlandev;
262
263#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
264 dev_link_t *link = dev_to_instance(pdev);
265#endif
266
267 DBFENTER;
268
269#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
270 wlandev = pdev->priv;
271 // XXX do something here?
272#else
273 wlandev = link->priv;
274 link->state &= ~DEV_SUSPEND;
275 if (link->state & DEV_CONFIG) {
276 pcmcia_request_configuration(link->handle, &link->conf);
277 // XXX do something here?
278 }
279#endif
280
281
282 DBFEXIT;
283
284 return 0;
285}
286
287static int prism2_cs_probe(struct pcmcia_device *pdev)
288{
289 int rval = 0;
290 struct wlandevice *wlandev = NULL;
291 hfa384x_t *hw = NULL;
292
293 config_info_t socketconf;
294 cisparse_t *parse = NULL;
295 tuple_t tuple;
296 uint8_t buf[64];
297 int last_fn, last_ret;
298 cistpl_cftable_entry_t dflt = { 0 };
299
300#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
301 dev_link_t *link;
302#endif
303
304 DBFENTER;
305
306#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
307 /* Set up interrupt type */
308 pdev->conf.IntType = INT_MEMORY_AND_IO;
309#else
310 link = kmalloc(sizeof(dev_link_t), GFP_KERNEL);
311 if (link == NULL)
312 return -ENOMEM;
313 memset(link, 0, sizeof(dev_link_t));
314
315 link->conf.Vcc = 33;
316 link->conf.IntType = INT_MEMORY_AND_IO;
317
318 link->handle = pdev;
319 pdev->instance = link;
320 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
321
322#endif
323
324 // VCC crap?
325 parse = kmalloc(sizeof(cisparse_t), GFP_KERNEL);
326
327 wlandev = create_wlan();
328 if (!wlandev || !parse) {
329 WLAN_LOG_ERROR("%s: Memory allocation failure.\n", dev_info);
330 rval = -EIO;
331 goto failed;
332 }
333 hw = wlandev->priv;
334
335 if ( wlan_setup(wlandev) != 0 ) {
336 WLAN_LOG_ERROR("%s: wlan_setup() failed.\n", dev_info);
337 rval = -EIO;
338 goto failed;
339 }
340
341 /* Initialize the hw struct for now */
342 hfa384x_create(hw, 0, 0, NULL);
343 hw->wlandev = wlandev;
344
345#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
346 hw->pdev = pdev;
347 pdev->priv = wlandev;
348#else
349 hw->link = link;
350 link->priv = wlandev;
351#endif
352
353 tuple.DesiredTuple = CISTPL_CONFIG;
354 tuple.Attributes = 0;
355 tuple.TupleData = buf;
356 tuple.TupleDataMax = sizeof(buf);
357 tuple.TupleOffset = 0;
358 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(pdev, &tuple));
359 CS_CHECK(GetTupleData, pcmcia_get_tuple_data(pdev, &tuple));
360 CS_CHECK(ParseTuple, pcmcia_parse_tuple(pdev, &tuple, parse));
361#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
362 pdev->conf.ConfigBase = parse->config.base;
363 pdev->conf.Present = parse->config.rmask[0];
364#else
365 link->conf.ConfigBase = parse->config.base;
366 link->conf.Present = parse->config.rmask[0];
367
368 link->conf.Vcc = socketconf.Vcc;
369#endif
370 CS_CHECK(GetConfigurationInfo,
371 pcmcia_get_configuration_info(pdev, &socketconf));
372
373 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
374 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(pdev, &tuple));
375 for (;;) {
376 cistpl_cftable_entry_t *cfg = &(parse->cftable_entry);
377 CFG_CHECK(GetTupleData,
378 pcmcia_get_tuple_data(pdev, &tuple));
379 CFG_CHECK(ParseTuple,
380 pcmcia_parse_tuple(pdev, &tuple, parse));
381
382 if (cfg->flags & CISTPL_CFTABLE_DEFAULT)
383 dflt = *cfg;
384 if (cfg->index == 0)
385 goto next_entry;
386#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
387 pdev->conf.ConfigIndex = cfg->index;
388#else
389 link->conf.ConfigIndex = cfg->index;
390#endif
391
392 /* Does this card need audio output? */
393 if (cfg->flags & CISTPL_CFTABLE_AUDIO) {
394#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
395 pdev->conf.Attributes |= CONF_ENABLE_SPKR;
396 pdev->conf.Status = CCSR_AUDIO_ENA;
397#else
398 link->conf.Attributes |= CONF_ENABLE_SPKR;
399 link->conf.Status = CCSR_AUDIO_ENA;
400#endif
401 }
402
403 /* Use power settings for Vcc and Vpp if present */
404 /* Note that the CIS values need to be rescaled */
405 if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) {
406 if (socketconf.Vcc != cfg->vcc.param[CISTPL_POWER_VNOM] /
407 10000 && !prism2_ignorevcc) {
408 WLAN_LOG_DEBUG(1, " Vcc mismatch - skipping"
409 " this entry\n");
410 goto next_entry;
411 }
412 } else if (dflt.vcc.present & (1 << CISTPL_POWER_VNOM)) {
413 if (socketconf.Vcc != dflt.vcc.param[CISTPL_POWER_VNOM] /
414 10000 && !prism2_ignorevcc) {
415 WLAN_LOG_DEBUG(1, " Vcc (default) mismatch "
416 "- skipping this entry\n");
417 goto next_entry;
418 }
419 }
420
421 if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) {
422#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
423 pdev->conf.Vpp =
424 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
425#else
426 link->conf.Vpp1 = link->conf.Vpp2 =
427 cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000;
428#endif
429 } else if (dflt.vpp1.present & (1 << CISTPL_POWER_VNOM)) {
430#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
431 pdev->conf.Vpp =
432 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
433#else
434 link->conf.Vpp1 = link->conf.Vpp2 =
435 dflt.vpp1.param[CISTPL_POWER_VNOM] / 10000;
436#endif
437 }
438
439 /* Do we need to allocate an interrupt? */
440 /* HACK: due to a bad CIS....we ALWAYS need an interrupt */
441 /* if (cfg->irq.IRQInfo1 || dflt.irq.IRQInfo1) */
442#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
443 pdev->conf.Attributes |= CONF_ENABLE_IRQ;
444#else
445 link->conf.Attributes |= CONF_ENABLE_IRQ;
446#endif
447
448 /* IO window settings */
449#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
450 pdev->io.NumPorts1 = pdev->io.NumPorts2 = 0;
451 if ((cfg->io.nwin > 0) || (dflt.io.nwin > 0)) {
452 cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt.io;
453 pdev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
454 if (!(io->flags & CISTPL_IO_8BIT))
455 pdev->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
456 if (!(io->flags & CISTPL_IO_16BIT))
457 pdev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
458 pdev->io.BasePort1 = io->win[0].base;
459 if ( pdev->io.BasePort1 != 0 ) {
460 WLAN_LOG_WARNING(
461 "Brain damaged CIS: hard coded iobase="
462 "0x%x, try letting pcmcia_cs decide...\n",
463 pdev->io.BasePort1 );
464 pdev->io.BasePort1 = 0;
465 }
466 pdev->io.NumPorts1 = io->win[0].len;
467 if (io->nwin > 1) {
468 pdev->io.Attributes2 = pdev->io.Attributes1;
469 pdev->io.BasePort2 = io->win[1].base;
470 pdev->io.NumPorts2 = io->win[1].len;
471 }
472 }
473 /* This reserves IO space but doesn't actually enable it */
474 CFG_CHECK(RequestIO, pcmcia_request_io(pdev, &pdev->io));
475#else
476 link->io.NumPorts1 = link->io.NumPorts2 = 0;
477 if ((cfg->io.nwin > 0) || (dflt.io.nwin > 0)) {
478 cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt.io;
479 link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
480 if (!(io->flags & CISTPL_IO_8BIT))
481 link->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
482 if (!(io->flags & CISTPL_IO_16BIT))
483 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
484 link->io.BasePort1 = io->win[0].base;
485 if ( link->io.BasePort1 != 0 ) {
486 WLAN_LOG_WARNING(
487 "Brain damaged CIS: hard coded iobase="
488 "0x%x, try letting pcmcia_cs decide...\n",
489 link->io.BasePort1 );
490 link->io.BasePort1 = 0;
491 }
492 link->io.NumPorts1 = io->win[0].len;
493 if (io->nwin > 1) {
494 link->io.Attributes2 = link->io.Attributes1;
495 link->io.BasePort2 = io->win[1].base;
496 link->io.NumPorts2 = io->win[1].len;
497 }
498 }
499 /* This reserves IO space but doesn't actually enable it */
500 CFG_CHECK(RequestIO, pcmcia_request_io(pdev, &link->io));
501#endif
502 /* If we got this far, we're cool! */
503 break;
504
505 next_entry:
506 if (cfg->flags & CISTPL_CFTABLE_DEFAULT)
507 dflt = *cfg;
508 CS_CHECK(GetNextTuple, pcmcia_get_next_tuple(pdev, &tuple));
509
510 }
511
512 /* Let pcmcia know the device name */
513#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
514 pdev->dev_node = &hw->node;
515#else
516 link->dev = &hw->node;
517#endif
518
519 /* Register the network device and get assigned a name */
520 SET_MODULE_OWNER(wlandev->netdev);
521 SET_NETDEV_DEV(wlandev->netdev, &handle_to_dev(pdev));
522 if (register_wlandev(wlandev) != 0) {
523 WLAN_LOG_NOTICE("prism2sta_cs: register_wlandev() failed.\n");
524 goto failed;
525 }
526
527 strcpy(hw->node.dev_name, wlandev->name);
528
529 /* Allocate an interrupt line. Note that this does not assign a */
530 /* handler to the interrupt, unless the 'Handler' member of the */
531 /* irq structure is initialized. */
532#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
533 if (pdev->conf.Attributes & CONF_ENABLE_IRQ) {
534 pdev->irq.IRQInfo1 = IRQ_LEVEL_ID;
535 pdev->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
536 pdev->irq.Handler = hfa384x_interrupt;
537 pdev->irq.Instance = wlandev;
538 CS_CHECK(RequestIRQ, pcmcia_request_irq(pdev, &pdev->irq));
539 }
540#else
541 if (link->conf.Attributes & CONF_ENABLE_IRQ) {
542 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
543 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
544 link->irq.Handler = hfa384x_interrupt;
545 link->irq.Instance = wlandev;
546 CS_CHECK(RequestIRQ, pcmcia_request_irq(pdev, &link->irq));
547 }
548#endif
549
550 /* This actually configures the PCMCIA socket -- setting up */
551 /* the I/O windows and the interrupt mapping, and putting the */
552 /* card and host interface into "Memory and IO" mode. */
553#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
554 CS_CHECK(RequestConfiguration, pcmcia_request_configuration(pdev, &pdev->conf));
555#else
556 CS_CHECK(RequestConfiguration, pcmcia_request_configuration(pdev, &link->conf));
557#endif
558
559 /* Fill the netdevice with this info */
560#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
561 wlandev->netdev->irq = pdev->irq.AssignedIRQ;
562 wlandev->netdev->base_addr = pdev->io.BasePort1;
563#else
564 wlandev->netdev->irq = link->irq.AssignedIRQ;
565 wlandev->netdev->base_addr = link->io.BasePort1;
566#endif
567
568 /* And the rest of the hw structure */
569 hw->irq = wlandev->netdev->irq;
570 hw->iobase = wlandev->netdev->base_addr;
571
572#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
573 link->state |= DEV_CONFIG;
574 link->state &= ~DEV_CONFIG_PENDING;
575#endif
576
577 /* And now we're done! */
578 wlandev->msdstate = WLAN_MSD_HWPRESENT;
579
580 goto done;
581
582 cs_failed:
583 cs_error(pdev, last_fn, last_ret);
584
585failed:
586 // wlandev, hw, etc etc..
587#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
588 pdev->priv = NULL;
589#else
590 pdev->instance = NULL;
591 if (link) {
592 link->priv = NULL;
593 kfree(link);
594 }
595#endif
596 if (wlandev) {
597 wlan_unsetup(wlandev);
598 if (wlandev->priv) {
599 hw = wlandev->priv;
600 wlandev->priv = NULL;
601 if (hw) {
602 hfa384x_destroy(hw);
603 kfree(hw);
604 }
605 }
606 kfree(wlandev);
607 }
608
609done:
610 if (parse) kfree(parse);
611
612 DBFEXIT;
613 return rval;
614}
615#else // <= 2.6.15
616#define CS_CHECK(fn, ret) \
617do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
618
619#define CFG_CHECK(fn, retf) \
620do { int ret = (retf); \
621if (ret != 0) { \
622 WLAN_LOG_DEBUG(1, "CardServices(" #fn ") returned %d\n", ret); \
623 cs_error(link->handle, fn, ret); \
624 goto next_entry; \
625} \
626} while (0)
627
628/*----------------------------------------------------------------
629* prism2sta_attach
630*
631* Half of the attach/detach pair. Creates and registers a device
632* instance with Card Services. In this case, it also creates the
633* wlandev structure and device private structure. These are
634* linked to the device instance via its priv member.
635*
636* Arguments:
637* none
638*
639* Returns:
640* A valid ptr to dev_link_t on success, NULL otherwise
641*
642* Side effects:
643*
644*
645* Call context:
646* process thread (insmod/init_module/register_pccard_driver)
647----------------------------------------------------------------*/
648dev_link_t *prism2sta_attach(void)
649{
650 client_reg_t client_reg;
651 int result;
652 dev_link_t *link = NULL;
653 wlandevice_t *wlandev = NULL;
654 hfa384x_t *hw = NULL;
655
656 DBFENTER;
657
658 /* Alloc our structures */
659 link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL);
660
661 if (!link || ((wlandev = create_wlan()) == NULL)) {
662 WLAN_LOG_ERROR("%s: Memory allocation failure.\n", dev_info);
663 result = -EIO;
664 goto failed;
665 }
666 hw = wlandev->priv;
667
668 /* Clear all the structs */
669 memset(link, 0, sizeof(struct dev_link_t));
670
671 if ( wlan_setup(wlandev) != 0 ) {
672 WLAN_LOG_ERROR("%s: wlan_setup() failed.\n", dev_info);
673 result = -EIO;
674 goto failed;
675 }
676
677 /* Initialize the hw struct for now */
678 hfa384x_create(hw, 0, 0, NULL);
679 hw->wlandev = wlandev;
680
681 /* Initialize the PC card device object. */
682#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
683 init_timer(&link->release);
684 link->release.function = &prism2sta_release;
685 link->release.data = (u_long)link;
686#endif
687 link->conf.IntType = INT_MEMORY_AND_IO;
688 link->priv = wlandev;
689#if (defined(CS_RELEASE_CODE) && (CS_RELEASE_CODE < 0x2911))
690 link->irq.Instance = wlandev;
691#endif
692
693 /* Link in to the list of devices managed by this driver */
694 link->next = dev_list;
695 dev_list = link;
696
697 /* Register with Card Services */
698 client_reg.dev_info = &dev_info;
699#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) )
700 client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE;
701#endif
702
703#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) )
704 client_reg.EventMask =
705 CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL |
706 CS_EVENT_RESET_REQUEST |
707 CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET |
708 CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME;
709 client_reg.event_handler = &prism2sta_event;
710#endif
711
712 client_reg.Version = 0x0210;
713 client_reg.event_callback_args.client_data = link;
714
715 result = pcmcia_register_client(&link->handle, &client_reg);
716 if (result != 0) {
717 cs_error(link->handle, RegisterClient, result);
718 prism2sta_detach(link);
719 return NULL;
720 }
721
722 goto done;
723
724 failed:
725 if (link) kfree(link);
726 if (wlandev) kfree(wlandev);
727 if (hw) kfree(hw);
728 link = NULL;
729
730 done:
731 DBFEXIT;
732 return link;
733}
734
735
736/*----------------------------------------------------------------
737* prism2sta_detach
738*
739* Remove one of the device instances managed by this driver.
740* Search the list for the given instance,
741* check our flags for a waiting timer'd release call
742* call release
743* Deregister the instance with Card Services
744* (netdevice) unregister the network device.
745* unlink the instance from the list
746* free the link, priv, and priv->priv memory
747* Note: the dev_list variable is a driver scoped static used to
748* maintain a list of device instances managed by this
749* driver.
750*
751* Arguments:
752* link ptr to the instance to detach
753*
754* Returns:
755* nothing
756*
757* Side effects:
758* the link structure is gone, the netdevice is gone
759*
760* Call context:
761* Might be interrupt, don't block.
762----------------------------------------------------------------*/
763void prism2sta_detach(dev_link_t *link)
764{
765 dev_link_t **linkp;
766 wlandevice_t *wlandev;
767 hfa384x_t *hw;
768
769 DBFENTER;
770
771 /* Locate prev device structure */
772 for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) {
773 if (*linkp == link) break;
774 }
775
776 if (*linkp != NULL) {
777#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
778 unsigned long flags;
779 /* Get rid of any timer'd release call */
780 save_flags(flags);
781 cli();
782#endif
783
784#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
785 if (link->state & DEV_RELEASE_PENDING) {
786 del_timer_sync(&link->release);
787 link->state &= ~DEV_RELEASE_PENDING;
788 }
789#endif
790
791#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
792 restore_flags(flags);
793#endif
794
795 /* If link says we're still config'd, call release */
796 if (link->state & DEV_CONFIG) {
797 prism2sta_release((u_long)link);
798 if (link->state & DEV_STALE_CONFIG) {
799 link->state |= DEV_STALE_LINK;
800 return;
801 }
802 }
803
804 /* Tell Card Services we're not around any more */
805 if (link->handle) {
806 pcmcia_deregister_client(link->handle);
807 }
808
809 /* Unlink device structure, free bits */
810 *linkp = link->next;
811 if ( link->priv != NULL ) {
812 wlandev = (wlandevice_t*)link->priv;
813 p80211netdev_hwremoved(wlandev);
814 if (link->dev != NULL) {
815 unregister_wlandev(wlandev);
816 }
817 wlan_unsetup(wlandev);
818 if (wlandev->priv) {
819 hw = wlandev->priv;
820 wlandev->priv = NULL;
821 if (hw) {
822 hfa384x_destroy(hw);
823 kfree(hw);
824 }
825 }
826 link->priv = NULL;
827 kfree(wlandev);
828 }
829 kfree(link);
830 }
831
832 DBFEXIT;
833 return;
834}
835
836/*----------------------------------------------------------------
837* prism2sta_config
838*
839* Half of the config/release pair. Usually called in response to
840* a card insertion event. At this point, we _know_ there's some
841* physical device present. That means we can start poking around
842* at the CIS and at any device specific config data we want.
843*
844* Note the gotos and the macros. I recoded this once without
845* them, and it got incredibly ugly. It's actually simpler with
846* them.
847*
848* Arguments:
849* link the dev_link_t structure created in attach that
850* represents this device instance.
851*
852* Returns:
853* nothing
854*
855* Side effects:
856* Resources (irq, io, mem) are allocated
857* The pcmcia dev_link->node->name is set
858* (For netcards) The device structure is finished and,
859* most importantly, registered. This means that there
860* is now a _named_ device that can be configured from
861* userland.
862*
863* Call context:
864* May be called from a timer. Don't block!
865----------------------------------------------------------------*/
866#define CS_CHECK(fn, ret) \
867do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
868
869#define CFG_CHECK(fn, retf) \
870do { int ret = (retf); \
871if (ret != 0) { \
872 WLAN_LOG_DEBUG(1, "CardServices(" #fn ") returned %d\n", ret); \
873 cs_error(link->handle, fn, ret); \
874 goto next_entry; \
875} \
876} while (0)
877
878void prism2sta_config(dev_link_t *link)
879{
880 client_handle_t handle;
881 wlandevice_t *wlandev;
882 hfa384x_t *hw;
883 int last_fn;
884 int last_ret;
885 tuple_t tuple;
886 cisparse_t parse;
887 config_info_t socketconf;
888 UINT8 buf[64];
889 int minVcc = 0;
890 int maxVcc = 0;
891 cistpl_cftable_entry_t dflt = { 0 };
892
893 DBFENTER;
894
895 handle = link->handle;
896 wlandev = (wlandevice_t*)link->priv;
897 hw = wlandev->priv;
898
899 /* Collect the config register info */
900 tuple.DesiredTuple = CISTPL_CONFIG;
901 tuple.Attributes = 0;
902 tuple.TupleData = buf;
903 tuple.TupleDataMax = sizeof(buf);
904 tuple.TupleOffset = 0;
905 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
906 CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple));
907 CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse));
908
909 link->conf.ConfigBase = parse.config.base;
910 link->conf.Present = parse.config.rmask[0];
911
912 /* Configure card */
913 link->state |= DEV_CONFIG;
914
915 /* Acquire the current socket config (need Vcc setting) */
916 CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &socketconf));
917
918 /* Loop through the config table entries until we find one that works */
919 /* Assumes a complete and valid CIS */
920 tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
921 CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));
922 while (1) {
923 cistpl_cftable_entry_t *cfg = &(parse.cftable_entry);
924 CFG_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple));
925 CFG_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse));
926
927 if (cfg->index == 0) goto next_entry;
928 link->conf.ConfigIndex = cfg->index;
929
930 /* Lets print out the Vcc that the controller+pcmcia-cs set
931 * for us, cause that's what we're going to use.
932 */
933 WLAN_LOG_DEBUG(1,"Initial Vcc=%d/10v\n", socketconf.Vcc);
934 if (prism2_ignorevcc) {
935 link->conf.Vcc = socketconf.Vcc;
936 goto skipvcc;
937 }
938
939 /* Use power settings for Vcc and Vpp if present */
940 /* Note that the CIS values need to be rescaled */
941 if (cfg->vcc.present & (1<<CISTPL_POWER_VNOM)) {
942 WLAN_LOG_DEBUG(1, "Vcc obtained from curtupl.VNOM\n");
943 minVcc = maxVcc =
944 cfg->vcc.param[CISTPL_POWER_VNOM]/10000;
945 } else if (dflt.vcc.present & (1<<CISTPL_POWER_VNOM)) {
946 WLAN_LOG_DEBUG(1, "Vcc set from dflt.VNOM\n");
947 minVcc = maxVcc =
948 dflt.vcc.param[CISTPL_POWER_VNOM]/10000;
949 } else if ((cfg->vcc.present & (1<<CISTPL_POWER_VMAX)) &&
950 (cfg->vcc.present & (1<<CISTPL_POWER_VMIN)) ) {
951 WLAN_LOG_DEBUG(1, "Vcc set from curtupl(VMIN,VMAX)\n"); minVcc = cfg->vcc.param[CISTPL_POWER_VMIN]/10000;
952 maxVcc = cfg->vcc.param[CISTPL_POWER_VMAX]/10000;
953 } else if ((dflt.vcc.present & (1<<CISTPL_POWER_VMAX)) &&
954 (dflt.vcc.present & (1<<CISTPL_POWER_VMIN)) ) {
955 WLAN_LOG_DEBUG(1, "Vcc set from dflt(VMIN,VMAX)\n");
956 minVcc = dflt.vcc.param[CISTPL_POWER_VMIN]/10000;
957 maxVcc = dflt.vcc.param[CISTPL_POWER_VMAX]/10000;
958 }
959
960 if ( socketconf.Vcc >= minVcc && socketconf.Vcc <= maxVcc) {
961 link->conf.Vcc = socketconf.Vcc;
962 } else {
963 /* [MSM]: Note that I've given up trying to change
964 * the Vcc if a change is indicated. It seems the
965 * system&socketcontroller&card vendors can't seem
966 * to get it right, so I'm tired of trying to hack
967 * my way around it. pcmcia-cs does its best using
968 * the voltage sense pins but sometimes the controller
969 * lies. Then, even if we have a good read on the VS
970 * pins, some system designs will silently ignore our
971 * requests to set the voltage. Additionally, some
972 * vendors have 3.3v indicated on their sense pins,
973 * but 5v specified in the CIS or vice-versa. I've
974 * had it. My only recommendation is "let the buyer
975 * beware". Your system might supply 5v to a 3v card
976 * (possibly causing damage) or a 3v capable system
977 * might supply 5v to a 3v capable card (wasting
978 * precious battery life).
979 * My only recommendation (if you care) is to get
980 * yourself an extender card (I don't know where, I
981 * have only one myself) and a meter and test it for
982 * yourself.
983 */
984 goto next_entry;
985 }
986skipvcc:
987 WLAN_LOG_DEBUG(1, "link->conf.Vcc=%d\n", link->conf.Vcc);
988
989 /* Do we need to allocate an interrupt? */
990 /* HACK: due to a bad CIS....we ALWAYS need an interrupt */
991 /* if (cfg->irq.IRQInfo1 || dflt.irq.IRQInfo1) */
992 link->conf.Attributes |= CONF_ENABLE_IRQ;
993
994 /* IO window settings */
995 link->io.NumPorts1 = link->io.NumPorts2 = 0;
996 if ((cfg->io.nwin > 0) || (dflt.io.nwin > 0)) {
997 cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt.io;
998 link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
999 if (!(io->flags & CISTPL_IO_8BIT))
1000 link->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
1001 if (!(io->flags & CISTPL_IO_16BIT))
1002 link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
1003 link->io.BasePort1 = io->win[0].base;
1004 if ( link->io.BasePort1 != 0 ) {
1005 WLAN_LOG_WARNING(
1006 "Brain damaged CIS: hard coded iobase="
1007 "0x%x, try letting pcmcia_cs decide...\n",
1008 link->io.BasePort1 );
1009 link->io.BasePort1 = 0;
1010 }
1011 link->io.NumPorts1 = io->win[0].len;
1012 if (io->nwin > 1) {
1013 link->io.Attributes2 = link->io.Attributes1;
1014 link->io.BasePort2 = io->win[1].base;
1015 link->io.NumPorts2 = io->win[1].len;
1016 }
1017 }
1018
1019 /* This reserves IO space but doesn't actually enable it */
1020 CFG_CHECK(RequestIO, pcmcia_request_io(link->handle, &link->io));
1021
1022 /* If we got this far, we're cool! */
1023 break;
1024
1025next_entry:
1026 if (cfg->flags & CISTPL_CFTABLE_DEFAULT)
1027 dflt = *cfg;
1028 CS_CHECK(GetNextTuple,
1029 pcmcia_get_next_tuple(handle, &tuple));
1030 }
1031
1032 /* Allocate an interrupt line. Note that this does not assign a */
1033 /* handler to the interrupt, unless the 'Handler' member of the */
1034 /* irq structure is initialized. */
1035 if (link->conf.Attributes & CONF_ENABLE_IRQ)
1036 {
1037#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11) )
1038 int i;
1039 link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID;
1040 if (irq_list[0] == -1)
1041 link->irq.IRQInfo2 = irq_mask;
1042 else
1043 for (i=0; i<4; i++)
1044 link->irq.IRQInfo2 |= 1 << irq_list[i];
1045#else
1046 link->irq.IRQInfo1 = IRQ_LEVEL_ID;
1047#endif
1048 link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT;
1049 link->irq.Handler = hfa384x_interrupt;
1050 link->irq.Instance = wlandev;
1051 CS_CHECK(RequestIRQ, pcmcia_request_irq(link->handle, &link->irq));
1052 }
1053
1054 /* This actually configures the PCMCIA socket -- setting up */
1055 /* the I/O windows and the interrupt mapping, and putting the */
1056 /* card and host interface into "Memory and IO" mode. */
1057 CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf));
1058
1059 /* Fill the netdevice with this info */
1060 wlandev->netdev->irq = link->irq.AssignedIRQ;
1061 wlandev->netdev->base_addr = link->io.BasePort1;
1062
1063 /* Report what we've done */
1064 WLAN_LOG_INFO("%s: index 0x%02x: Vcc %d.%d",
1065 dev_info, link->conf.ConfigIndex,
1066 link->conf.Vcc/10, link->conf.Vcc%10);
1067 if (link->conf.Vpp1)
1068 printk(", Vpp %d.%d", link->conf.Vpp1/10, link->conf.Vpp1%10);
1069 if (link->conf.Attributes & CONF_ENABLE_IRQ)
1070 printk(", irq %d", link->irq.AssignedIRQ);
1071 if (link->io.NumPorts1)
1072 printk(", io 0x%04x-0x%04x", link->io.BasePort1, link->io.BasePort1+link->io.NumPorts1-1);
1073 if (link->io.NumPorts2)
1074 printk(" & 0x%04x-0x%04x", link->io.BasePort2, link->io.BasePort2+link->io.NumPorts2-1);
1075 printk("\n");
1076
1077 link->state &= ~DEV_CONFIG_PENDING;
1078
1079 /* Let pcmcia know the device name */
1080 link->dev = &hw->node;
1081
1082 /* Register the network device and get assigned a name */
1083 SET_MODULE_OWNER(wlandev->netdev);
1084#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11) )
1085 SET_NETDEV_DEV(wlandev->netdev, &handle_to_dev(link->handle));
1086#endif
1087 if (register_wlandev(wlandev) != 0) {
1088 WLAN_LOG_NOTICE("prism2sta_cs: register_wlandev() failed.\n");
1089 goto failed;
1090 }
1091
1092 strcpy(hw->node.dev_name, wlandev->name);
1093
1094 /* Any device custom config/query stuff should be done here */
1095 /* For a netdevice, we should at least grab the mac address */
1096
1097 return;
1098cs_failed:
1099 cs_error(link->handle, last_fn, last_ret);
1100 WLAN_LOG_ERROR("NextTuple failure? It's probably a Vcc mismatch.\n");
1101
1102failed:
1103 prism2sta_release((u_long)link);
1104 return;
1105}
1106
1107/*----------------------------------------------------------------
1108* prism2sta_release
1109*
1110* Half of the config/release pair. Usually called in response to
1111* a card ejection event. Checks to make sure no higher layers
1112* are still (or think they are) using the card via the link->open
1113* field.
1114*
1115* NOTE: Don't forget to increment the link->open variable in the
1116* device_open method, and decrement it in the device_close
1117* method.
1118*
1119* Arguments:
1120* arg a generic 32 bit variable. It's the value that
1121* we assigned to link->release.data in sta_attach().
1122*
1123* Returns:
1124* nothing
1125*
1126* Side effects:
1127* All resources should be released after this function
1128* executes and finds the device !open.
1129*
1130* Call context:
1131* Possibly in a timer context. Don't do anything that'll
1132* block.
1133----------------------------------------------------------------*/
1134void prism2sta_release(u_long arg)
1135{
1136 dev_link_t *link = (dev_link_t *)arg;
1137
1138 DBFENTER;
1139
1140 /* First thing we should do is get the MSD back to the
1141 * HWPRESENT state. I.e. everything quiescent.
1142 */
1143 prism2sta_ifstate(link->priv, P80211ENUM_ifstate_disable);
1144
1145 if (link->open) {
1146 /* TODO: I don't think we're even using this bit of code
1147 * and I don't think it's hurting us at the moment.
1148 */
1149 WLAN_LOG_DEBUG(1,
1150 "prism2sta_cs: release postponed, '%s' still open\n",
1151 link->dev->dev_name);
1152 link->state |= DEV_STALE_CONFIG;
1153 return;
1154 }
1155
1156 pcmcia_release_configuration(link->handle);
1157 pcmcia_release_io(link->handle, &link->io);
1158 pcmcia_release_irq(link->handle, &link->irq);
1159
1160 link->state &= ~(DEV_CONFIG | DEV_RELEASE_PENDING);
1161
1162 DBFEXIT;
1163}
1164
1165/*----------------------------------------------------------------
1166* prism2sta_event
1167*
1168* Handler for card services events.
1169*
1170* Arguments:
1171* event The event code
1172* priority hi/low - REMOVAL is the only hi
1173* args ptr to card services struct containing info about
1174* pcmcia status
1175*
1176* Returns:
1177* Zero on success, non-zero otherwise
1178*
1179* Side effects:
1180*
1181*
1182* Call context:
1183* Both interrupt and process thread, depends on the event.
1184----------------------------------------------------------------*/
1185static int
1186prism2sta_event (
1187 event_t event,
1188 int priority,
1189 event_callback_args_t *args)
1190{
1191 int result = 0;
1192 dev_link_t *link = (dev_link_t *) args->client_data;
1193 wlandevice_t *wlandev = (wlandevice_t*)link->priv;
1194 hfa384x_t *hw = NULL;
1195
1196 DBFENTER;
1197
1198 if (wlandev) hw = wlandev->priv;
1199
1200 switch (event)
1201 {
1202 case CS_EVENT_CARD_INSERTION:
1203 WLAN_LOG_DEBUG(5,"event is INSERTION\n");
1204 link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
1205 prism2sta_config(link);
1206 if (!(link->state & DEV_CONFIG)) {
1207 wlandev->netdev->irq = 0;
1208 WLAN_LOG_ERROR(
1209 "%s: Initialization failed!\n", dev_info);
1210 wlandev->msdstate = WLAN_MSD_HWFAIL;
1211 break;
1212 }
1213
1214 /* Fill in the rest of the hw struct */
1215 hw->irq = wlandev->netdev->irq;
1216 hw->iobase = wlandev->netdev->base_addr;
1217 hw->link = link;
1218
1219 if (prism2_doreset) {
1220 result = hfa384x_corereset(hw,
1221 prism2_reset_holdtime,
1222 prism2_reset_settletime, 0);
1223 if ( result ) {
1224 WLAN_LOG_ERROR(
1225 "corereset() failed, result=%d.\n",
1226 result);
1227 wlandev->msdstate = WLAN_MSD_HWFAIL;
1228 break;
1229 }
1230 }
1231
1232#if 0
1233 /*
1234 * TODO: test_hostif() not implemented yet.
1235 */
1236 result = hfa384x_test_hostif(hw);
1237 if (result) {
1238 WLAN_LOG_ERROR(
1239 "test_hostif() failed, result=%d.\n", result);
1240 wlandev->msdstate = WLAN_MSD_HWFAIL;
1241 break;
1242 }
1243#endif
1244 wlandev->msdstate = WLAN_MSD_HWPRESENT;
1245 break;
1246
1247 case CS_EVENT_CARD_REMOVAL:
1248 WLAN_LOG_DEBUG(5,"event is REMOVAL\n");
1249 link->state &= ~DEV_PRESENT;
1250
1251 if (wlandev) {
1252 p80211netdev_hwremoved(wlandev);
1253 }
1254
1255#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
1256 if (link->state & DEV_CONFIG)
1257 {
1258 link->release.expires = jiffies + (HZ/20);
1259 add_timer(&link->release);
1260 }
1261#endif
1262 break;
1263 case CS_EVENT_RESET_REQUEST:
1264 WLAN_LOG_DEBUG(5,"event is RESET_REQUEST\n");
1265 WLAN_LOG_NOTICE(
1266 "prism2 card reset not supported "
1267 "due to post-reset user mode configuration "
1268 "requirements.\n");
1269 WLAN_LOG_NOTICE(
1270 " From user mode, use "
1271 "'cardctl suspend;cardctl resume' "
1272 "instead.\n");
1273 break;
1274 case CS_EVENT_RESET_PHYSICAL:
1275 case CS_EVENT_CARD_RESET:
1276 WLAN_LOG_WARNING("Rx'd CS_EVENT_RESET_xxx, should not "
1277 "be possible since RESET_REQUEST was denied.\n");
1278 break;
1279
1280 case CS_EVENT_PM_SUSPEND:
1281 WLAN_LOG_DEBUG(5,"event is SUSPEND\n");
1282 link->state |= DEV_SUSPEND;
1283 if (link->state & DEV_CONFIG)
1284 {
1285 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
1286 pcmcia_release_configuration(link->handle);
1287 }
1288 break;
1289
1290 case CS_EVENT_PM_RESUME:
1291 WLAN_LOG_DEBUG(5,"event is RESUME\n");
1292 link->state &= ~DEV_SUSPEND;
1293 if (link->state & DEV_CONFIG) {
1294 pcmcia_request_configuration(link->handle, &link->conf);
1295 }
1296 break;
1297 }
1298
1299 DBFEXIT;
1300 return 0; /* noone else does anthing with the return value */
1301}
1302#endif // <= 2.6.15
1303
1304
1305
1306int hfa384x_corereset(hfa384x_t *hw, int holdtime, int settletime, int genesis)
1307{
1308 int result = 0;
1309 conf_reg_t reg;
1310 UINT8 corsave;
1311 DBFENTER;
1312
1313 WLAN_LOG_DEBUG(3, "Doing reset via CardServices().\n");
1314
1315 /* Collect COR */
1316 reg.Function = 0;
1317 reg.Action = CS_READ;
1318 reg.Offset = CISREG_COR;
1319#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
1320 result = pcmcia_access_configuration_register(hw->pdev, &reg);
1321#else
1322 result = pcmcia_access_configuration_register(
1323 hw->link->handle,
1324 &reg);
1325#endif
1326 if (result != CS_SUCCESS ) {
1327 WLAN_LOG_ERROR(
1328 ":0: AccessConfigurationRegister(CS_READ) failed,"
1329 "result=%d.\n", result);
1330 result = -EIO;
1331 }
1332 corsave = reg.Value;
1333
1334 /* Write reset bit (BIT7) */
1335 reg.Value |= BIT7;
1336 reg.Action = CS_WRITE;
1337 reg.Offset = CISREG_COR;
1338#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
1339 result = pcmcia_access_configuration_register(hw->pdev, &reg);
1340#else
1341 result = pcmcia_access_configuration_register(
1342 hw->link->handle,
1343 &reg);
1344#endif
1345 if (result != CS_SUCCESS ) {
1346 WLAN_LOG_ERROR(
1347 ":1: AccessConfigurationRegister(CS_WRITE) failed,"
1348 "result=%d.\n", result);
1349 result = -EIO;
1350 }
1351
1352 /* Hold for holdtime */
1353 mdelay(holdtime);
1354
1355 if (genesis) {
1356 reg.Value = genesis;
1357 reg.Action = CS_WRITE;
1358 reg.Offset = CISREG_CCSR;
1359#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
1360 result = pcmcia_access_configuration_register(hw->pdev, &reg);
1361#else
1362 result = pcmcia_access_configuration_register(
1363 hw->link->handle,
1364 &reg);
1365#endif
1366 if (result != CS_SUCCESS ) {
1367 WLAN_LOG_ERROR(
1368 ":1: AccessConfigurationRegister(CS_WRITE) failed,"
1369 "result=%d.\n", result);
1370 result = -EIO;
1371 }
1372 }
1373
1374 /* Hold for holdtime */
1375 mdelay(holdtime);
1376
1377 /* Clear reset bit */
1378 reg.Value &= ~BIT7;
1379 reg.Action = CS_WRITE;
1380 reg.Offset = CISREG_COR;
1381#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
1382 result = pcmcia_access_configuration_register(hw->pdev, &reg);
1383#else
1384 result = pcmcia_access_configuration_register(
1385 hw->link->handle,
1386 &reg);
1387#endif
1388 if (result != CS_SUCCESS ) {
1389 WLAN_LOG_ERROR(
1390 ":2: AccessConfigurationRegister(CS_WRITE) failed,"
1391 "result=%d.\n", result);
1392 result = -EIO;
1393 goto done;
1394 }
1395
1396 /* Wait for settletime */
1397 mdelay(settletime);
1398
1399 /* Set non-reset bits back what they were */
1400 reg.Value = corsave;
1401 reg.Action = CS_WRITE;
1402 reg.Offset = CISREG_COR;
1403#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
1404 result = pcmcia_access_configuration_register(hw->pdev, &reg);
1405#else
1406 result = pcmcia_access_configuration_register(
1407 hw->link->handle,
1408 &reg);
1409#endif
1410 if (result != CS_SUCCESS ) {
1411 WLAN_LOG_ERROR(
1412 ":2: AccessConfigurationRegister(CS_WRITE) failed,"
1413 "result=%d.\n", result);
1414 result = -EIO;
1415 goto done;
1416 }
1417
1418done:
1419 DBFEXIT;
1420 return result;
1421}
1422
1423#ifdef MODULE
1424
1425static int __init prism2cs_init(void)
1426{
1427#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68))
1428 servinfo_t serv;
1429#endif
1430
1431 DBFENTER;
1432
1433 WLAN_LOG_NOTICE("%s Loaded\n", version);
1434 WLAN_LOG_NOTICE("dev_info is: %s\n", dev_info);
1435
1436#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68))
1437 pcmcia_get_card_services_info(&serv);
1438 if ( serv.Revision != CS_RELEASE_CODE )
1439 {
1440 printk(KERN_NOTICE"%s: CardServices release does not match!\n", dev_info);
1441 return -1;
1442 }
1443
1444 /* This call will result in a call to prism2sta_attach */
1445 /* and eventually prism2sta_detach */
1446 register_pccard_driver( &dev_info, &prism2sta_attach, &prism2sta_detach);
1447#else
1448 pcmcia_register_driver(&prism2_cs_driver);
1449#endif
1450
1451 DBFEXIT;
1452 return 0;
1453}
1454
1455static void __exit prism2cs_cleanup(void)
1456{
1457#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68))
1458 dev_link_t *link = dev_list;
1459 dev_link_t *nlink;
1460 DBFENTER;
1461
1462#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) )
1463 for (link=dev_list; link != NULL; link = nlink) {
1464 nlink = link->next;
1465 if ( link->state & DEV_CONFIG ) {
1466 prism2sta_release((u_long)link);
1467 }
1468 prism2sta_detach(link); /* remember detach() frees link */
1469 }
1470#endif
1471
1472 unregister_pccard_driver( &dev_info);
1473#else
1474 pcmcia_unregister_driver(&prism2_cs_driver);
1475#endif
1476
1477 printk(KERN_NOTICE "%s Unloaded\n", version);
1478
1479 DBFEXIT;
1480 return;
1481}
1482
1483module_init(prism2cs_init);
1484module_exit(prism2cs_cleanup);
1485
1486#endif // MODULE
1487
diff --git a/drivers/staging/wlan-ng/prism2_pci.c b/drivers/staging/wlan-ng/prism2_pci.c
new file mode 100644
index 00000000000..afe32dfbf6b
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2_pci.c
@@ -0,0 +1,332 @@
1#define WLAN_HOSTIF WLAN_PCI
2#include "hfa384x.c"
3#include "prism2mgmt.c"
4#include "prism2mib.c"
5#include "prism2sta.c"
6
7#define PCI_SIZE 0x1000 /* Memory size - 4K bytes */
8
9/* ISL3874A 11Mb/s WLAN controller */
10#define PCIVENDOR_INTERSIL 0x1260UL
11#define PCIDEVICE_ISL3874 0x3873UL /* [MSM] yeah I know...the ID says
12 3873. Trust me, it's a 3874. */
13
14/* Samsung SWL-2210P 11Mb/s WLAN controller (uses ISL3874A) */
15#define PCIVENDOR_SAMSUNG 0x167dUL
16#define PCIDEVICE_SWL_2210P 0xa000UL
17
18#define PCIVENDOR_NETGEAR 0x1385UL /* for MA311 */
19
20/* PCI Class & Sub-Class code, Network-'Other controller' */
21#define PCI_CLASS_NETWORK_OTHERS 0x280
22
23
24/*----------------------------------------------------------------
25* prism2sta_probe_pci
26*
27* Probe routine called when a PCI device w/ matching ID is found.
28* The ISL3874 implementation uses the following map:
29* BAR0: Prism2.x registers memory mapped, size=4k
30* Here's the sequence:
31* - Allocate the PCI resources.
32* - Read the PCMCIA attribute memory to make sure we have a WLAN card
33* - Reset the MAC
34* - Initialize the netdev and wlan data
35* - Initialize the MAC
36*
37* Arguments:
38* pdev ptr to pci device structure containing info about
39* pci configuration.
40* id ptr to the device id entry that matched this device.
41*
42* Returns:
43* zero - success
44* negative - failed
45*
46* Side effects:
47*
48*
49* Call context:
50* process thread
51*
52----------------------------------------------------------------*/
53static int __devinit
54prism2sta_probe_pci(
55 struct pci_dev *pdev,
56 const struct pci_device_id *id)
57{
58 int result;
59 phys_t phymem = 0;
60 void __iomem *mem = NULL;
61 wlandevice_t *wlandev = NULL;
62 hfa384x_t *hw = NULL;
63
64 DBFENTER;
65
66 /* Enable the pci device */
67 if (pci_enable_device(pdev)) {
68 WLAN_LOG_ERROR("%s: pci_enable_device() failed.\n", dev_info);
69 result = -EIO;
70 goto fail;
71 }
72
73 /* Figure out our resources */
74 phymem = pci_resource_start(pdev, 0);
75
76 if (!request_mem_region(phymem, pci_resource_len(pdev, 0), "Prism2")) {
77 printk(KERN_ERR "prism2: Cannot reserve PCI memory region\n");
78 result = -EIO;
79 goto fail;
80 }
81
82 mem = ioremap(phymem, PCI_SIZE);
83 if ( mem == 0 ) {
84 WLAN_LOG_ERROR("%s: ioremap() failed.\n", dev_info);
85 result = -EIO;
86 goto fail;
87 }
88
89 /* Log the device */
90 WLAN_LOG_INFO("A Prism2.5 PCI device found, "
91 "phymem:0x%llx, irq:%d, mem:0x%p\n",
92 (unsigned long long)phymem, pdev->irq, mem);
93
94 if ((wlandev = create_wlan()) == NULL) {
95 WLAN_LOG_ERROR("%s: Memory allocation failure.\n", dev_info);
96 result = -EIO;
97 goto fail;
98 }
99 hw = wlandev->priv;
100
101 if ( wlan_setup(wlandev) != 0 ) {
102 WLAN_LOG_ERROR("%s: wlan_setup() failed.\n", dev_info);
103 result = -EIO;
104 goto fail;
105 }
106
107 /* Setup netdevice's ability to report resources
108 * Note: the netdevice was allocated by wlan_setup()
109 */
110 wlandev->netdev->irq = pdev->irq;
111 wlandev->netdev->mem_start = (unsigned long) mem;
112 wlandev->netdev->mem_end = wlandev->netdev->mem_start +
113 pci_resource_len(pdev, 0);
114
115 /* Initialize the hw data */
116 hfa384x_create(hw, wlandev->netdev->irq, 0, mem);
117 hw->wlandev = wlandev;
118
119 /* Register the wlandev, this gets us a name and registers the
120 * linux netdevice.
121 */
122 SET_MODULE_OWNER(wlandev->netdev);
123#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
124 SET_NETDEV_DEV(wlandev->netdev, &(pdev->dev));
125#endif
126 if ( register_wlandev(wlandev) != 0 ) {
127 WLAN_LOG_ERROR("%s: register_wlandev() failed.\n", dev_info);
128 result = -EIO;
129 goto fail;
130 }
131
132#if 0
133 /* TODO: Move this and an irq test into an hfa384x_testif() routine.
134 */
135 outw(PRISM2STA_MAGIC, HFA384x_SWSUPPORT(wlandev->netdev->base_addr));
136 reg=inw( HFA384x_SWSUPPORT(wlandev->netdev->base_addr));
137 if ( reg != PRISM2STA_MAGIC ) {
138 WLAN_LOG_ERROR("MAC register access test failed!\n");
139 result = -EIO;
140 goto fail;
141 }
142#endif
143
144 /* Do a chip-level reset on the MAC */
145 if (prism2_doreset) {
146 result = hfa384x_corereset(hw,
147 prism2_reset_holdtime,
148 prism2_reset_settletime, 0);
149 if (result != 0) {
150 WLAN_LOG_ERROR(
151 "%s: hfa384x_corereset() failed.\n",
152 dev_info);
153 unregister_wlandev(wlandev);
154 hfa384x_destroy(hw);
155 result = -EIO;
156 goto fail;
157 }
158 }
159
160 pci_set_drvdata(pdev, wlandev);
161
162 /* Shouldn't actually hook up the IRQ until we
163 * _know_ things are alright. A test routine would help.
164 */
165 request_irq(wlandev->netdev->irq, hfa384x_interrupt,
166 SA_SHIRQ, wlandev->name, wlandev);
167
168 wlandev->msdstate = WLAN_MSD_HWPRESENT;
169
170 result = 0;
171 goto done;
172
173 fail:
174 pci_set_drvdata(pdev, NULL);
175 if (wlandev) kfree(wlandev);
176 if (hw) kfree(hw);
177 if (mem) iounmap(mem);
178 pci_release_regions(pdev);
179 pci_disable_device(pdev);
180
181 done:
182 DBFEXIT;
183 return result;
184}
185
186static void __devexit prism2sta_remove_pci(struct pci_dev *pdev)
187{
188 wlandevice_t *wlandev;
189 hfa384x_t *hw;
190
191 wlandev = (wlandevice_t *) pci_get_drvdata(pdev);
192 hw = wlandev->priv;
193
194 p80211netdev_hwremoved(wlandev);
195
196 /* reset hardware */
197 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
198
199 if (pdev->irq)
200 free_irq(pdev->irq, wlandev);
201
202 unregister_wlandev(wlandev);
203
204 /* free local stuff */
205 if (hw) {
206 hfa384x_destroy(hw);
207 kfree(hw);
208 }
209
210 iounmap((void __iomem *)wlandev->netdev->mem_start);
211 wlan_unsetup(wlandev);
212
213 pci_release_regions(pdev);
214 pci_disable_device(pdev);
215 pci_set_drvdata(pdev, NULL);
216
217 kfree(wlandev);
218}
219
220
221static struct pci_device_id pci_id_tbl[] = {
222 {
223 PCIVENDOR_INTERSIL, PCIDEVICE_ISL3874,
224 PCI_ANY_ID, PCI_ANY_ID,
225 0, 0,
226 /* Driver data, we just put the name here */
227 (unsigned long)"Intersil Prism2.5 ISL3874 11Mb/s WLAN Controller"
228 },
229 {
230 PCIVENDOR_INTERSIL, 0x3872,
231 PCI_ANY_ID, PCI_ANY_ID,
232 0, 0,
233 /* Driver data, we just put the name here */
234 (unsigned long)"Intersil Prism2.5 ISL3872 11Mb/s WLAN Controller"
235 },
236 {
237 PCIVENDOR_SAMSUNG, PCIDEVICE_SWL_2210P,
238 PCI_ANY_ID, PCI_ANY_ID,
239 0, 0,
240 /* Driver data, we just put the name here */
241 (unsigned long)"Samsung MagicLAN SWL-2210P 11Mb/s WLAN Controller"
242 },
243 { /* for NetGear MA311 */
244 PCIVENDOR_NETGEAR, 0x3872,
245 PCI_ANY_ID, PCI_ANY_ID,
246 0, 0,
247 /* Driver data, we just put the name here */
248 (unsigned long)"Netgear MA311 WLAN Controller"
249 },
250 {
251 0, 0, 0, 0, 0, 0, 0
252 }
253};
254
255MODULE_DEVICE_TABLE(pci, pci_id_tbl);
256
257/* Function declared here because of ptr reference below */
258static int __devinit prism2sta_probe_pci(struct pci_dev *pdev,
259 const struct pci_device_id *id);
260static void __devexit prism2sta_remove_pci(struct pci_dev *pdev);
261
262static struct pci_driver prism2_pci_drv_id = {
263 .name = "prism2_pci",
264 .id_table = pci_id_tbl,
265 .probe = prism2sta_probe_pci,
266 .remove = prism2sta_remove_pci,
267#ifdef CONFIG_PM
268 .suspend = prism2sta_suspend_pci,
269 .resume = prism2sta_resume_pci,
270#endif
271};
272
273#ifdef MODULE
274
275static int __init prism2pci_init(void)
276{
277 WLAN_LOG_NOTICE("%s Loaded\n", version);
278 return pci_module_init(&prism2_pci_drv_id);
279};
280
281static void __exit prism2pci_cleanup(void)
282{
283 pci_unregister_driver(&prism2_pci_drv_id);
284};
285
286module_init(prism2pci_init);
287module_exit(prism2pci_cleanup);
288
289#endif
290
291int hfa384x_corereset(hfa384x_t *hw, int holdtime, int settletime, int genesis)
292{
293 int result = 0;
294 unsigned long timeout;
295 UINT16 reg;
296 DBFENTER;
297
298 /* Assert reset and wait awhile
299 * (note: these delays are _really_ long, but they appear to be
300 * necessary.)
301 */
302 hfa384x_setreg(hw, 0xc5, HFA384x_PCICOR);
303 timeout = jiffies + HZ/4;
304 while(time_before(jiffies, timeout)) udelay(5);
305
306 if (genesis) {
307 hfa384x_setreg(hw, genesis, HFA384x_PCIHCR);
308 timeout = jiffies + HZ/4;
309 while(time_before(jiffies, timeout)) udelay(5);
310 }
311
312 /* Clear the reset and wait some more
313 */
314 hfa384x_setreg(hw, 0x45, HFA384x_PCICOR);
315 timeout = jiffies + HZ/2;
316 while(time_before(jiffies, timeout)) udelay(5);
317
318 /* Wait for f/w to complete initialization (CMD:BUSY == 0)
319 */
320 timeout = jiffies + 2*HZ;
321 reg = hfa384x_getreg(hw, HFA384x_CMD);
322 while ( HFA384x_CMD_ISBUSY(reg) && time_before( jiffies, timeout) ) {
323 reg = hfa384x_getreg(hw, HFA384x_CMD);
324 udelay(10);
325 }
326 if (HFA384x_CMD_ISBUSY(reg)) {
327 WLAN_LOG_WARNING("corereset: Timed out waiting for cmd register.\n");
328 result=1;
329 }
330 DBFEXIT;
331 return result;
332}
diff --git a/drivers/staging/wlan-ng/prism2_plx.c b/drivers/staging/wlan-ng/prism2_plx.c
new file mode 100644
index 00000000000..320443f37a8
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2_plx.c
@@ -0,0 +1,472 @@
1#define WLAN_HOSTIF WLAN_PLX
2#include "hfa384x.c"
3#include "prism2mgmt.c"
4#include "prism2mib.c"
5#include "prism2sta.c"
6
7#define PLX_ATTR_SIZE 0x1000 /* Attribute memory size - 4K bytes */
8#define COR_OFFSET 0x3e0 /* COR attribute offset of Prism2 PC card */
9#define COR_VALUE 0x41 /* Enable PC card with irq in level trigger */
10#define PLX_INTCSR 0x4c /* Interrupt Control and Status Register */
11#define PLX_INTCSR_INTEN (1<<6) /* Interrupt Enable bit */
12#define PLX_MIN_ATTR_LEN 512 /* at least 2 x 256 is needed for CIS */
13
14/* 3Com 3CRW777A (PLX) board ID */
15#define PCIVENDOR_3COM 0x10B7
16#define PCIDEVICE_AIRCONNECT 0x7770
17
18/* Eumitcom PCI WL11000 PCI Adapter (PLX) board device+vendor ID */
19#define PCIVENDOR_EUMITCOM 0x1638UL
20#define PCIDEVICE_WL11000 0x1100UL
21
22/* Global Sun Tech GL24110P PCI Adapter (PLX) board device+vendor ID */
23#define PCIVENDOR_GLOBALSUN 0x16abUL
24#define PCIDEVICE_GL24110P 0x1101UL
25#define PCIDEVICE_GL24110P_ALT 0x1102UL
26
27/* Netgear MA301 PCI Adapter (PLX) board device+vendor ID */
28#define PCIVENDOR_NETGEAR 0x1385UL
29#define PCIDEVICE_MA301 0x4100UL
30
31/* US Robotics USR2410 PCI Adapter (PLX) board device+vendor ID */
32#define PCIVENDOR_USROBOTICS 0x16ecUL
33#define PCIDEVICE_USR2410 0x3685UL
34
35/* Linksys WPC11 card with the WDT11 adapter (PLX) board device+vendor ID */
36#define PCIVENDOR_Linksys 0x16abUL
37#define PCIDEVICE_Wpc11Wdt11 0x1102UL
38
39/* National Datacomm Corp SOHOware Netblaster II PCI */
40#define PCIVENDOR_NDC 0x15e8UL
41#define PCIDEVICE_NCP130_PLX 0x0130UL
42#define PCIDEVICE_NCP130_ASIC 0x0131UL
43
44/* NDC NCP130_PLX is also sold by Corega. Their name is CGWLPCIA11 */
45#define PCIVENDOR_COREGA PCIVENDOR_NDC
46#define PCIDEVICE_CGWLPCIA11 PCIDEVICE_NCP130_PLX
47
48/* PCI Class & Sub-Class code, Network-'Other controller' */
49#define PCI_CLASS_NETWORK_OTHERS 0x280
50
51/*----------------------------------------------------------------
52* prism2sta_probe_plx
53*
54* Probe routine called when a PCI device w/ matching ID is found.
55* This PLX implementation uses the following map:
56* BAR0: Unused
57* BAR1: ????
58* BAR2: PCMCIA attribute memory
59* BAR3: PCMCIA i/o space
60* Here's the sequence:
61* - Allocate the PCI resources.
62* - Read the PCMCIA attribute memory to make sure we have a WLAN card
63* - Reset the MAC using the PCMCIA COR
64* - Initialize the netdev and wlan data
65* - Initialize the MAC
66*
67* Arguments:
68* pdev ptr to pci device structure containing info about
69* pci configuration.
70* id ptr to the device id entry that matched this device.
71*
72* Returns:
73* zero - success
74* negative - failed
75*
76* Side effects:
77*
78*
79* Call context:
80* process thread
81*
82----------------------------------------------------------------*/
83static int __devinit
84prism2sta_probe_plx(
85 struct pci_dev *pdev,
86 const struct pci_device_id *id)
87{
88 int result;
89 phys_t pccard_ioaddr;
90 phys_t pccard_attr_mem;
91 unsigned int pccard_attr_len;
92 void __iomem *attr_mem = NULL;
93 UINT32 plx_addr;
94 wlandevice_t *wlandev = NULL;
95 hfa384x_t *hw = NULL;
96 int reg;
97 u32 regic;
98
99 if (pci_enable_device(pdev))
100 return -EIO;
101
102 /* TMC7160 boards are special */
103 if ((pdev->vendor == PCIVENDOR_NDC) &&
104 (pdev->device == PCIDEVICE_NCP130_ASIC)) {
105 unsigned long delay;
106
107 pccard_attr_mem = 0;
108 pccard_ioaddr = pci_resource_start(pdev, 1);
109
110 outb(0x45, pccard_ioaddr);
111 delay = jiffies + 1*HZ;
112 while (time_before(jiffies, delay));
113
114 if (inb(pccard_ioaddr) != 0x45) {
115 WLAN_LOG_ERROR("Initialize the TMC7160 failed. (0x%x)\n", inb(pccard_ioaddr));
116 return -EIO;
117 }
118
119 pccard_ioaddr = pci_resource_start(pdev, 2);
120 prism2_doreset = 0;
121
122 WLAN_LOG_INFO("NDC NCP130 with TMC716(ASIC) PCI interface device found at io:0x%x, irq:%d\n", pccard_ioaddr, pdev->irq);
123 goto init;
124 }
125
126 /* Collect the resource requirements */
127 pccard_attr_mem = pci_resource_start(pdev, 2);
128 pccard_attr_len = pci_resource_len(pdev, 2);
129 if (pccard_attr_len < PLX_MIN_ATTR_LEN)
130 return -EIO;
131
132 pccard_ioaddr = pci_resource_start(pdev, 3);
133
134 /* bjoern: We need to tell the card to enable interrupts, in
135 * case the serial eprom didn't do this already. See the
136 * PLX9052 data book, p8-1 and 8-24 for reference.
137 * [MSM]: This bit of code came from the orinoco_cs driver.
138 */
139 plx_addr = pci_resource_start(pdev, 1);
140
141 regic = 0;
142 regic = inl(plx_addr+PLX_INTCSR);
143 if(regic & PLX_INTCSR_INTEN) {
144 WLAN_LOG_DEBUG(1,
145 "%s: Local Interrupt already enabled\n", dev_info);
146 } else {
147 regic |= PLX_INTCSR_INTEN;
148 outl(regic, plx_addr+PLX_INTCSR);
149 regic = inl(plx_addr+PLX_INTCSR);
150 if(!(regic & PLX_INTCSR_INTEN)) {
151 WLAN_LOG_ERROR(
152 "%s: Couldn't enable Local Interrupts\n",
153 dev_info);
154 return -EIO;
155 }
156 }
157
158 /* These assignments are here in case of future mappings for
159 * io space and irq that might be similar to ioremap
160 */
161 if (!request_mem_region(pccard_attr_mem, pci_resource_len(pdev, 2), "Prism2")) {
162 WLAN_LOG_ERROR("%s: Couldn't reserve PCI memory region\n", dev_info);
163 return -EIO;
164 }
165
166 attr_mem = ioremap(pccard_attr_mem, pccard_attr_len);
167
168 WLAN_LOG_INFO("A PLX PCI/PCMCIA interface device found, "
169 "phymem:0x%llx, phyio=0x%x, irq:%d, "
170 "mem: 0x%lx\n",
171 (unsigned long long)pccard_attr_mem, pccard_ioaddr, pdev->irq,
172 (unsigned long)attr_mem);
173
174 /* Verify whether PC card is present.
175 * [MSM] This needs improvement, the right thing to do is
176 * probably to walk the CIS looking for the vendor and product
177 * IDs. It would be nice if this could be tied in with the
178 * etc/pcmcia/wlan-ng.conf file. Any volunteers? ;-)
179 */
180 if (
181 readb(attr_mem + 0) != 0x01 || readb(attr_mem + 2) != 0x03 ||
182 readb(attr_mem + 4) != 0x00 || readb(attr_mem + 6) != 0x00 ||
183 readb(attr_mem + 8) != 0xFF || readb(attr_mem + 10) != 0x17 ||
184 readb(attr_mem + 12) != 0x04 || readb(attr_mem + 14) != 0x67) {
185 WLAN_LOG_ERROR("Prism2 PC card CIS is invalid.\n");
186 return -EIO;
187 }
188 WLAN_LOG_INFO("A PCMCIA WLAN adapter was found.\n");
189
190 /* Write COR to enable PC card */
191 writeb(COR_VALUE, attr_mem + COR_OFFSET);
192 reg = readb(attr_mem + COR_OFFSET);
193
194 init:
195
196 /*
197 * Now do everything the same as a PCI device
198 * [MSM] TODO: We could probably factor this out of pcmcia/pci/plx
199 * and perhaps usb. Perhaps a task for another day.......
200 */
201
202 if ((wlandev = create_wlan()) == NULL) {
203 WLAN_LOG_ERROR("%s: Memory allocation failure.\n", dev_info);
204 result = -EIO;
205 goto failed;
206 }
207
208 hw = wlandev->priv;
209
210 if ( wlan_setup(wlandev) != 0 ) {
211 WLAN_LOG_ERROR("%s: wlan_setup() failed.\n", dev_info);
212 result = -EIO;
213 goto failed;
214 }
215
216 /* Setup netdevice's ability to report resources
217 * Note: the netdevice was allocated by wlan_setup()
218 */
219 wlandev->netdev->irq = pdev->irq;
220 wlandev->netdev->base_addr = pccard_ioaddr;
221 wlandev->netdev->mem_start = (unsigned long)attr_mem;
222 wlandev->netdev->mem_end = (unsigned long)attr_mem + pci_resource_len(pdev, 0);
223
224 /* Initialize the hw data */
225 hfa384x_create(hw, wlandev->netdev->irq, pccard_ioaddr, attr_mem);
226 hw->wlandev = wlandev;
227
228 /* Register the wlandev, this gets us a name and registers the
229 * linux netdevice.
230 */
231 SET_MODULE_OWNER(wlandev->netdev);
232#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
233 SET_NETDEV_DEV(wlandev->netdev, &(pdev->dev));
234#endif
235 if ( register_wlandev(wlandev) != 0 ) {
236 WLAN_LOG_ERROR("%s: register_wlandev() failed.\n", dev_info);
237 result = -EIO;
238 goto failed;
239 }
240
241#if 0
242 /* TODO: Move this and an irq test into an hfa384x_testif() routine.
243 */
244 outw(PRISM2STA_MAGIC, HFA384x_SWSUPPORT(wlandev->netdev->base_addr));
245 reg=inw( HFA384x_SWSUPPORT(wlandev->netdev->base_addr));
246 if ( reg != PRISM2STA_MAGIC ) {
247 WLAN_LOG_ERROR("MAC register access test failed!\n");
248 result = -EIO;
249 goto failed;
250 }
251#endif
252
253 /* Do a chip-level reset on the MAC */
254 if (prism2_doreset) {
255 result = hfa384x_corereset(hw,
256 prism2_reset_holdtime,
257 prism2_reset_settletime, 0);
258 if (result != 0) {
259 unregister_wlandev(wlandev);
260 hfa384x_destroy(hw);
261 WLAN_LOG_ERROR(
262 "%s: hfa384x_corereset() failed.\n",
263 dev_info);
264 result = -EIO;
265 goto failed;
266 }
267 }
268
269 pci_set_drvdata(pdev, wlandev);
270
271 /* Shouldn't actually hook up the IRQ until we
272 * _know_ things are alright. A test routine would help.
273 */
274 request_irq(wlandev->netdev->irq, hfa384x_interrupt,
275 SA_SHIRQ, wlandev->name, wlandev);
276
277 wlandev->msdstate = WLAN_MSD_HWPRESENT;
278
279 result = 0;
280
281 goto done;
282
283 failed:
284
285 pci_set_drvdata(pdev, NULL);
286 if (wlandev) kfree(wlandev);
287 if (hw) kfree(hw);
288 if (attr_mem) iounmap(attr_mem);
289 pci_release_regions(pdev);
290 pci_disable_device(pdev);
291
292 done:
293 DBFEXIT;
294 return result;
295}
296
297static void __devexit prism2sta_remove_plx(struct pci_dev *pdev)
298{
299 wlandevice_t *wlandev;
300 hfa384x_t *hw;
301
302 wlandev = (wlandevice_t *) pci_get_drvdata(pdev);
303 hw = wlandev->priv;
304
305 p80211netdev_hwremoved(wlandev);
306
307 /* reset hardware */
308 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
309
310 if (pdev->irq)
311 free_irq(pdev->irq, wlandev);
312
313 unregister_wlandev(wlandev);
314
315 /* free local stuff */
316 if (hw) {
317 hfa384x_destroy(hw);
318 kfree(hw);
319 }
320
321 iounmap((void __iomem *)wlandev->netdev->mem_start);
322 wlan_unsetup(wlandev);
323
324 pci_release_regions(pdev);
325 pci_disable_device(pdev);
326 pci_set_drvdata(pdev, NULL);
327
328 kfree(wlandev);
329}
330
331static struct pci_device_id plx_id_tbl[] = {
332 {
333 PCIVENDOR_EUMITCOM, PCIDEVICE_WL11000,
334 PCI_ANY_ID, PCI_ANY_ID,
335 0, 0,
336 /* Driver data, we just put the name here */
337 (unsigned long)"Eumitcom WL11000 PCI(PLX) card"
338 },
339 {
340 PCIVENDOR_GLOBALSUN, PCIDEVICE_GL24110P,
341 PCI_ANY_ID, PCI_ANY_ID,
342 0, 0,
343 /* Driver data, we just put the name here */
344 (unsigned long)"Global Sun Tech GL24110P PCI(PLX) card"
345 },
346 {
347 PCIVENDOR_GLOBALSUN, PCIDEVICE_GL24110P_ALT,
348 PCI_ANY_ID, PCI_ANY_ID,
349 0, 0,
350 /* Driver data, we just put the name here */
351 (unsigned long)"Global Sun Tech GL24110P PCI(PLX) card"
352 },
353 {
354 PCIVENDOR_NETGEAR, PCIDEVICE_MA301,
355 PCI_ANY_ID, PCI_ANY_ID,
356 0, 0,
357 /* Driver data, we just put the name here */
358 (unsigned long)"Global Sun Tech GL24110P PCI(PLX) card"
359 },
360 {
361 PCIVENDOR_USROBOTICS, PCIDEVICE_USR2410,
362 PCI_ANY_ID, PCI_ANY_ID,
363 0, 0,
364 /* Driver data, we just put the name here */
365 (unsigned long)"US Robotics USR2410 PCI(PLX) card"
366 },
367 {
368 PCIVENDOR_Linksys, PCIDEVICE_Wpc11Wdt11,
369 PCI_ANY_ID, PCI_ANY_ID,
370 0, 0,
371 /* Driver data, we just put the name here */
372 (unsigned long)"Linksys WPC11 with WDT11 PCI(PLX) adapter"
373 },
374 {
375 PCIVENDOR_NDC, PCIDEVICE_NCP130_PLX,
376 PCI_ANY_ID, PCI_ANY_ID,
377 0, 0,
378 /* Driver data, we just put the name here */
379 (unsigned long)"NDC Netblaster II PCI(PLX)"
380 },
381 {
382 PCIVENDOR_NDC, PCIDEVICE_NCP130_ASIC,
383 PCI_ANY_ID, PCI_ANY_ID,
384 0, 0,
385 /* Driver data, we just put the name here */
386 (unsigned long)"NDC Netblaster II PCI(TMC7160)"
387 },
388 {
389 PCIVENDOR_3COM, PCIDEVICE_AIRCONNECT,
390 PCI_ANY_ID, PCI_ANY_ID,
391 0, 0,
392 /* Driver data, we just put the name here */
393 (unsigned long)"3Com AirConnect PCI 802.11b 11Mb/s WLAN Controller"
394 },
395 {
396 0, 0, 0, 0, 0, 0, 0
397 }
398};
399
400MODULE_DEVICE_TABLE(pci, plx_id_tbl);
401
402/* Function declared here because of ptr reference below */
403static int __devinit prism2sta_probe_plx(struct pci_dev *pdev,
404 const struct pci_device_id *);
405static void __devexit prism2sta_remove_plx(struct pci_dev *pdev);
406
407static struct pci_driver prism2_plx_drv_id = {
408 .name = "prism2_plx",
409 .id_table = plx_id_tbl,
410 .probe = prism2sta_probe_plx,
411 .remove = prism2sta_remove_plx,
412#ifdef CONFIG_PM
413 .suspend = prism2sta_suspend_pci,
414 .resume = prism2sta_resume_pci,
415#endif
416};
417
418#ifdef MODULE
419
420static int __init prism2plx_init(void)
421{
422 WLAN_LOG_NOTICE("%s Loaded\n", version);
423 return pci_module_init(&prism2_plx_drv_id);
424};
425
426static void __exit prism2plx_cleanup(void)
427{
428 pci_unregister_driver(&prism2_plx_drv_id);
429};
430
431module_init(prism2plx_init);
432module_exit(prism2plx_cleanup);
433
434#endif // MODULE
435
436
437int hfa384x_corereset(hfa384x_t *hw, int holdtime, int settletime, int genesis)
438{
439 int result = 0;
440
441#define COR_OFFSET 0x3e0 /* COR attribute offset of Prism2 PC card */
442#define COR_VALUE 0x41 /* Enable PC card with irq in level trigger */
443
444#define HCR_OFFSET 0x3e2 /* HCR attribute offset of Prism2 PC card */
445
446 UINT8 corsave;
447 DBFENTER;
448
449 WLAN_LOG_DEBUG(3, "Doing reset via direct COR access.\n");
450
451 /* Collect COR */
452 corsave = readb(hw->membase + COR_OFFSET);
453 /* Write reset bit (BIT7) */
454 writeb(corsave | BIT7, hw->membase + COR_OFFSET);
455 /* Hold for holdtime */
456 mdelay(holdtime);
457
458 if (genesis) {
459 writeb(genesis, hw->membase + HCR_OFFSET);
460 /* Hold for holdtime */
461 mdelay(holdtime);
462 }
463
464 /* Clear reset bit */
465 writeb(corsave & ~BIT7, hw->membase + COR_OFFSET);
466 /* Wait for settletime */
467 mdelay(settletime);
468 /* Set non-reset bits back what they were */
469 writeb(corsave, hw->membase + COR_OFFSET);
470 DBFEXIT;
471 return result;
472}
diff --git a/drivers/staging/wlan-ng/prism2_usb.c b/drivers/staging/wlan-ng/prism2_usb.c
new file mode 100644
index 00000000000..e45be237450
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2_usb.c
@@ -0,0 +1,361 @@
1#define WLAN_HOSTIF WLAN_USB
2#include "hfa384x_usb.c"
3#include "prism2mgmt.c"
4#include "prism2mib.c"
5#include "prism2sta.c"
6
7#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
8#error "prism2_usb requires at least a 2.4.x kernel!"
9#endif
10
11#define PRISM_USB_DEVICE(vid, pid, name) \
12 USB_DEVICE(vid, pid), \
13 .driver_info = (unsigned long) name
14
15static struct usb_device_id usb_prism_tbl[] = {
16 {PRISM_USB_DEVICE(0x04bb, 0x0922, "IOData AirPort WN-B11/USBS")},
17 {PRISM_USB_DEVICE(0x07aa, 0x0012, "Corega Wireless LAN USB Stick-11")},
18 {PRISM_USB_DEVICE(0x09aa, 0x3642, "Prism2.x 11Mbps WLAN USB Adapter")},
19 {PRISM_USB_DEVICE(0x1668, 0x0408, "Actiontec Prism2.5 11Mbps WLAN USB Adapter")},
20 {PRISM_USB_DEVICE(0x1668, 0x0421, "Actiontec Prism2.5 11Mbps WLAN USB Adapter")},
21 {PRISM_USB_DEVICE(0x1915, 0x2236, "Linksys WUSB11v3.0 11Mbps WLAN USB Adapter")},
22 {PRISM_USB_DEVICE(0x066b, 0x2212, "Linksys WUSB11v2.5 11Mbps WLAN USB Adapter")},
23 {PRISM_USB_DEVICE(0x066b, 0x2213, "Linksys WUSB12v1.1 11Mbps WLAN USB Adapter")},
24 {PRISM_USB_DEVICE(0x067c, 0x1022, "Siemens SpeedStream 1022 11Mbps WLAN USB Adapter")},
25 {PRISM_USB_DEVICE(0x049f, 0x0033, "Compaq/Intel W100 PRO/Wireless 11Mbps multiport WLAN Adapter")},
26 {PRISM_USB_DEVICE(0x0411, 0x0016, "Melco WLI-USB-S11 11Mbps WLAN Adapter")},
27 {PRISM_USB_DEVICE(0x08de, 0x7a01, "PRISM25 IEEE 802.11 Mini USB Adapter")},
28 {PRISM_USB_DEVICE(0x8086, 0x1111, "Intel PRO/Wireless 2011B LAN USB Adapter")},
29 {PRISM_USB_DEVICE(0x0d8e, 0x7a01, "PRISM25 IEEE 802.11 Mini USB Adapter")},
30 {PRISM_USB_DEVICE(0x045e, 0x006e, "Microsoft MN510 Wireless USB Adapter")},
31 {PRISM_USB_DEVICE(0x0967, 0x0204, "Acer Warplink USB Adapter")},
32 {PRISM_USB_DEVICE(0x0cde, 0x0002, "Z-Com 725/726 Prism2.5 USB/USB Integrated")},
33 {PRISM_USB_DEVICE(0x0cde, 0x0005, "Z-Com Xl735 Wireless 802.11b USB Adapter")},
34 {PRISM_USB_DEVICE(0x413c, 0x8100, "Dell TrueMobile 1180 Wireless USB Adapter")},
35 {PRISM_USB_DEVICE(0x0b3b, 0x1601, "ALLNET 0193 11Mbps WLAN USB Adapter")},
36 {PRISM_USB_DEVICE(0x0b3b, 0x1602, "ZyXEL ZyAIR B200 Wireless USB Adapter")},
37 {PRISM_USB_DEVICE(0x0baf, 0x00eb, "USRobotics USR1120 Wireless USB Adapter")},
38 {PRISM_USB_DEVICE(0x0411, 0x0027, "Melco WLI-USB-KS11G 11Mbps WLAN Adapter")},
39 {PRISM_USB_DEVICE(0x04f1, 0x3009, "JVC MP-XP7250 Builtin USB WLAN Adapter")},
40 {PRISM_USB_DEVICE(0x0846, 0x4110, "NetGear MA111")},
41 {PRISM_USB_DEVICE(0x03f3, 0x0020, "Adaptec AWN-8020 USB WLAN Adapter")},
42// {PRISM_USB_DEVICE(0x0ace, 0x1201, "ZyDAS ZD1201 Wireless USB Adapter")},
43 {PRISM_USB_DEVICE(0x2821, 0x3300, "ASUS-WL140 Wireless USB Adapter")},
44 {PRISM_USB_DEVICE(0x2001, 0x3700, "DWL-122 Wireless USB Adapter")},
45 {PRISM_USB_DEVICE(0x2001, 0x3702, "DWL-120 Rev F Wireless USB Adapter")},
46 {PRISM_USB_DEVICE(0x50c2, 0x4013, "Averatec USB WLAN Adapter")},
47 {PRISM_USB_DEVICE(0x2c02, 0x14ea, "Planex GW-US11H WLAN USB Adapter")},
48 {PRISM_USB_DEVICE(0x124a, 0x168b, "Airvast PRISM3 WLAN USB Adapter")},
49 {PRISM_USB_DEVICE(0x083a, 0x3503, "T-Sinus 111 USB WLAN Adapter")},
50 {PRISM_USB_DEVICE(0x2821, 0x3300, "Hawking HighDB USB Adapter")},
51 {PRISM_USB_DEVICE(0x0411, 0x0044, "Melco WLI-USB-KB11 11Mbps WLAN Adapter")},
52 {PRISM_USB_DEVICE(0x1668, 0x6106, "ROPEX FreeLan 802.11b USB Adapter")},
53 {PRISM_USB_DEVICE(0x124a, 0x4017, "Pheenet WL-503IA 802.11b USB Adapter")},
54 {PRISM_USB_DEVICE(0x0bb2, 0x0302, "Ambit Microsystems Corp.")},
55 {PRISM_USB_DEVICE(0x9016, 0x182d, "Sitecom WL-022 802.11b USB Adapter")},
56 {PRISM_USB_DEVICE(0x0543, 0x0f01, "ViewSonic Airsync USB Adapter 11Mbps (Prism2.5)")},
57 { /* terminator */ }
58};
59
60MODULE_DEVICE_TABLE(usb, usb_prism_tbl);
61
62/*----------------------------------------------------------------
63* prism2sta_probe_usb
64*
65* Probe routine called by the USB subsystem.
66*
67* Arguments:
68* dev ptr to the usb_device struct
69* ifnum interface number being offered
70*
71* Returns:
72* NULL - we're not claiming the device+interface
73* non-NULL - we are claiming the device+interface and
74* this is a ptr to the data we want back
75* when disconnect is called.
76*
77* Side effects:
78*
79* Call context:
80* I'm not sure, assume it's interrupt.
81*
82----------------------------------------------------------------*/
83#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
84static void __devinit *prism2sta_probe_usb(
85 struct usb_device *dev,
86 unsigned int ifnum,
87 const struct usb_device_id *id)
88#else
89static int prism2sta_probe_usb(
90 struct usb_interface *interface,
91 const struct usb_device_id *id)
92#endif
93{
94
95#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
96 struct usb_interface *interface;
97#else
98 struct usb_device *dev;
99#endif
100
101 wlandevice_t *wlandev = NULL;
102 hfa384x_t *hw = NULL;
103 int result = 0;
104
105 DBFENTER;
106
107#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
108 interface = &dev->actconfig->interface[ifnum];
109#else
110 dev = interface_to_usbdev(interface);
111#endif
112
113
114 if ((wlandev = create_wlan()) == NULL) {
115 WLAN_LOG_ERROR("%s: Memory allocation failure.\n", dev_info);
116 result = -EIO;
117 goto failed;
118 }
119 hw = wlandev->priv;
120
121 if ( wlan_setup(wlandev) != 0 ) {
122 WLAN_LOG_ERROR("%s: wlan_setup() failed.\n", dev_info);
123 result = -EIO;
124 goto failed;
125 }
126
127 /* Initialize the hw data */
128 hfa384x_create(hw, dev);
129 hw->wlandev = wlandev;
130
131 /* Register the wlandev, this gets us a name and registers the
132 * linux netdevice.
133 */
134#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
135 SET_NETDEV_DEV(wlandev->netdev, &(interface->dev));
136#endif
137 if ( register_wlandev(wlandev) != 0 ) {
138 WLAN_LOG_ERROR("%s: register_wlandev() failed.\n", dev_info);
139 result = -EIO;
140 goto failed;
141 }
142
143 /* Do a chip-level reset on the MAC */
144 if (prism2_doreset) {
145 result = hfa384x_corereset(hw,
146 prism2_reset_holdtime,
147 prism2_reset_settletime, 0);
148 if (result != 0) {
149 unregister_wlandev(wlandev);
150 hfa384x_destroy(hw);
151 result = -EIO;
152 WLAN_LOG_ERROR(
153 "%s: hfa384x_corereset() failed.\n",
154 dev_info);
155 goto failed;
156 }
157 }
158
159#ifndef NEW_MODULE_CODE
160 usb_inc_dev_use(dev);
161#endif
162#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15))
163 usb_get_dev(dev);
164#endif
165
166 wlandev->msdstate = WLAN_MSD_HWPRESENT;
167
168 goto done;
169
170 failed:
171 if (wlandev) kfree(wlandev);
172 if (hw) kfree(hw);
173 wlandev = NULL;
174
175 done:
176 DBFEXIT;
177
178#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
179 return wlandev;
180#else
181 usb_set_intfdata(interface, wlandev);
182 return result;
183#endif
184}
185
186
187/*----------------------------------------------------------------
188* prism2sta_disconnect_usb
189*
190* Called when a device previously claimed by probe is removed
191* from the USB.
192*
193* Arguments:
194* dev ptr to the usb_device struct
195* ptr ptr returned by probe() when the device
196* was claimed.
197*
198* Returns:
199* Nothing
200*
201* Side effects:
202*
203* Call context:
204* process
205----------------------------------------------------------------*/
206#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
207static void __devexit
208prism2sta_disconnect_usb(struct usb_device *dev, void *ptr)
209#else
210static void
211prism2sta_disconnect_usb(struct usb_interface *interface)
212#endif
213{
214#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
215 wlandevice_t *wlandev;
216#else
217 wlandevice_t *wlandev = (wlandevice_t*)ptr;
218#endif
219
220 DBFENTER;
221
222#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
223 wlandev = (wlandevice_t *) usb_get_intfdata(interface);
224#endif
225
226 if ( wlandev != NULL ) {
227 LIST_HEAD(cleanlist);
228 struct list_head *entry;
229 struct list_head *temp;
230 unsigned long flags;
231
232 hfa384x_t *hw = wlandev->priv;
233
234 if (!hw)
235 goto exit;
236
237 spin_lock_irqsave(&hw->ctlxq.lock, flags);
238
239 p80211netdev_hwremoved(wlandev);
240 list_splice_init(&hw->ctlxq.reapable, &cleanlist);
241 list_splice_init(&hw->ctlxq.completing, &cleanlist);
242 list_splice_init(&hw->ctlxq.pending, &cleanlist);
243 list_splice_init(&hw->ctlxq.active, &cleanlist);
244
245 spin_unlock_irqrestore(&hw->ctlxq.lock, flags);
246
247 /* There's no hardware to shutdown, but the driver
248 * might have some tasks or tasklets that must be
249 * stopped before we can tear everything down.
250 */
251 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
252
253 del_singleshot_timer_sync(&hw->throttle);
254 del_singleshot_timer_sync(&hw->reqtimer);
255 del_singleshot_timer_sync(&hw->resptimer);
256
257 /* Unlink all the URBs. This "removes the wheels"
258 * from the entire CTLX handling mechanism.
259 */
260 usb_kill_urb(&hw->rx_urb);
261 usb_kill_urb(&hw->tx_urb);
262 usb_kill_urb(&hw->ctlx_urb);
263
264 tasklet_kill(&hw->completion_bh);
265 tasklet_kill(&hw->reaper_bh);
266
267 flush_scheduled_work();
268
269 /* Now we complete any outstanding commands
270 * and tell everyone who is waiting for their
271 * responses that we have shut down.
272 */
273 list_for_each(entry, &cleanlist) {
274 hfa384x_usbctlx_t *ctlx;
275
276 ctlx = list_entry(entry, hfa384x_usbctlx_t, list);
277 complete(&ctlx->done);
278 }
279
280 /* Give any outstanding synchronous commands
281 * a chance to complete. All they need to do
282 * is "wake up", so that's easy.
283 * (I'd like a better way to do this, really.)
284 */
285 msleep(100);
286
287 /* Now delete the CTLXs, because no-one else can now. */
288 list_for_each_safe(entry, temp, &cleanlist) {
289 hfa384x_usbctlx_t *ctlx;
290
291 ctlx = list_entry(entry, hfa384x_usbctlx_t, list);
292 kfree(ctlx);
293 }
294
295 /* Unhook the wlandev */
296 unregister_wlandev(wlandev);
297 wlan_unsetup(wlandev);
298
299#ifndef NEW_MODULE_CODE
300 usb_dec_dev_use(hw->usb);
301#endif
302#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15))
303 usb_put_dev(hw->usb);
304#endif
305
306 hfa384x_destroy(hw);
307 kfree(hw);
308
309 kfree(wlandev);
310 }
311
312 exit:
313
314#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
315 usb_set_intfdata(interface, NULL);
316#endif
317 DBFEXIT;
318}
319
320
321static struct usb_driver prism2_usb_driver = {
322#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,19)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16))
323 .owner = THIS_MODULE,
324#endif
325 .name = "prism2_usb",
326 .probe = prism2sta_probe_usb,
327 .disconnect = prism2sta_disconnect_usb,
328 .id_table = usb_prism_tbl,
329 /* fops, minor? */
330};
331
332#ifdef MODULE
333
334static int __init prism2usb_init(void)
335{
336 DBFENTER;
337
338 WLAN_LOG_NOTICE("%s Loaded\n", version);
339 WLAN_LOG_NOTICE("dev_info is: %s\n", dev_info);
340
341 /* This call will result in calls to prism2sta_probe_usb. */
342 return usb_register(&prism2_usb_driver);
343
344 DBFEXIT;
345};
346
347static void __exit prism2usb_cleanup(void)
348{
349 DBFENTER;
350
351 usb_deregister(&prism2_usb_driver);
352
353 printk(KERN_NOTICE "%s Unloaded\n", version);
354
355 DBFEXIT;
356};
357
358module_init(prism2usb_init);
359module_exit(prism2usb_cleanup);
360
361#endif // module
diff --git a/drivers/staging/wlan-ng/prism2mgmt.c b/drivers/staging/wlan-ng/prism2mgmt.c
new file mode 100644
index 00000000000..c975025b6ae
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2mgmt.c
@@ -0,0 +1,2956 @@
1/* src/prism2/driver/prism2mgmt.c
2*
3* Management request handler functions.
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* The functions in this file handle management requests sent from
48* user mode.
49*
50* Most of these functions have two separate blocks of code that are
51* conditional on whether this is a station or an AP. This is used
52* to separate out the STA and AP responses to these management primitives.
53* It's a choice (good, bad, indifferent?) to have the code in the same
54* place so it's clear that the same primitive is implemented in both
55* cases but has different behavior.
56*
57* --------------------------------------------------------------------
58*/
59
60/*================================================================*/
61/* System Includes */
62#define WLAN_DBVAR prism2_debug
63
64#include "version.h"
65
66
67#include <linux/version.h>
68
69#include <linux/if_arp.h>
70#include <linux/module.h>
71#include <linux/kernel.h>
72#include <linux/wait.h>
73#include <linux/sched.h>
74#include <linux/types.h>
75#include <linux/slab.h>
76#include <linux/wireless.h>
77#include <linux/netdevice.h>
78#include <linux/delay.h>
79#include <asm/io.h>
80#include <asm/byteorder.h>
81#include <linux/random.h>
82
83#if (WLAN_HOSTIF == WLAN_USB)
84#include <linux/usb.h>
85#endif
86
87#if (WLAN_HOSTIF == WLAN_PCMCIA)
88#include <pcmcia/version.h>
89#include <pcmcia/cs_types.h>
90#include <pcmcia/cs.h>
91#include <pcmcia/cistpl.h>
92#include <pcmcia/ds.h>
93#include <pcmcia/cisreg.h>
94#endif
95
96#include "wlan_compat.h"
97
98/*================================================================*/
99/* Project Includes */
100
101#include "p80211types.h"
102#include "p80211hdr.h"
103#include "p80211mgmt.h"
104#include "p80211conv.h"
105#include "p80211msg.h"
106#include "p80211netdev.h"
107#include "p80211metadef.h"
108#include "p80211metastruct.h"
109#include "hfa384x.h"
110#include "prism2mgmt.h"
111
112/*================================================================*/
113/* Local Constants */
114
115
116/*================================================================*/
117/* Local Macros */
118
119/* Converts 802.11 format rate specifications to prism2 */
120#define p80211rate_to_p2bit(n) ((((n)&~BIT7) == 2) ? BIT0 : \
121 (((n)&~BIT7) == 4) ? BIT1 : \
122 (((n)&~BIT7) == 11) ? BIT2 : \
123 (((n)&~BIT7) == 22) ? BIT3 : 0)
124
125/*================================================================*/
126/* Local Types */
127
128
129/*================================================================*/
130/* Local Static Definitions */
131
132
133/*================================================================*/
134/* Local Function Declarations */
135
136
137/*================================================================*/
138/* Function Definitions */
139
140
141/*----------------------------------------------------------------
142* prism2mgmt_powermgmt
143*
144* Set the power management state of this station's MAC.
145*
146* Arguments:
147* wlandev wlan device structure
148* msgp ptr to msg buffer
149*
150* Returns:
151* 0 success and done
152* <0 success, but we're waiting for something to finish.
153* >0 an error occurred while handling the message.
154* Side effects:
155*
156* Call context:
157* process thread (usually)
158* interrupt
159----------------------------------------------------------------*/
160int prism2mgmt_powermgmt(wlandevice_t *wlandev, void *msgp)
161{
162 int result = 0;
163 hfa384x_t *hw = wlandev->priv;
164 p80211msg_dot11req_powermgmt_t *msg = msgp;
165
166 DBFENTER;
167
168 if (!hw->ap) {
169
170 /*** STATION ***/
171
172 /*
173 * Set CNFPMENABLED (on or off)
174 * Set CNFMULTICASTRX (if PM on, otherwise clear)
175 * Spout a notice stating that SleepDuration and
176 * HoldoverDuration and PMEPS also have an impact.
177 */
178 /* Powermgmt is currently unsupported for STA */
179 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
180 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
181 } else {
182
183 /*** ACCESS POINT ***/
184
185 /* Powermgmt is never supported for AP */
186 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
187 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
188 }
189
190 DBFEXIT;
191 return result;
192}
193
194
195/*----------------------------------------------------------------
196* prism2mgmt_scan
197*
198* Initiate a scan for BSSs.
199*
200* This function corresponds to MLME-scan.request and part of
201* MLME-scan.confirm. As far as I can tell in the standard, there
202* are no restrictions on when a scan.request may be issued. We have
203* to handle in whatever state the driver/MAC happen to be.
204*
205* Arguments:
206* wlandev wlan device structure
207* msgp ptr to msg buffer
208*
209* Returns:
210* 0 success and done
211* <0 success, but we're waiting for something to finish.
212* >0 an error occurred while handling the message.
213* Side effects:
214*
215* Call context:
216* process thread (usually)
217* interrupt
218----------------------------------------------------------------*/
219int prism2mgmt_scan(wlandevice_t *wlandev, void *msgp)
220{
221 int result = 0;
222 hfa384x_t *hw = wlandev->priv;
223 p80211msg_dot11req_scan_t *msg = msgp;
224 UINT16 roamingmode, word;
225 int i, timeout;
226 int istmpenable = 0;
227
228 hfa384x_HostScanRequest_data_t scanreq;
229
230 DBFENTER;
231
232 if (hw->ap) {
233 WLAN_LOG_ERROR("Prism2 in AP mode cannot perform scans.\n");
234 result = 1;
235 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
236 goto exit;
237 }
238
239 /* gatekeeper check */
240 if (HFA384x_FIRMWARE_VERSION(hw->ident_sta_fw.major,
241 hw->ident_sta_fw.minor,
242 hw->ident_sta_fw.variant) <
243 HFA384x_FIRMWARE_VERSION(1,3,2)) {
244 WLAN_LOG_ERROR("HostScan not supported with current firmware (<1.3.2).\n");
245 result = 1;
246 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
247 goto exit;
248 }
249
250 memset(&scanreq, 0, sizeof(scanreq));
251
252 /* save current roaming mode */
253 result = hfa384x_drvr_getconfig16(hw,
254 HFA384x_RID_CNFROAMINGMODE, &roamingmode);
255 if ( result ) {
256 WLAN_LOG_ERROR("getconfig(ROAMMODE) failed. result=%d\n",
257 result);
258 msg->resultcode.data =
259 P80211ENUM_resultcode_implementation_failure;
260 goto exit;
261 }
262
263 /* drop into mode 3 for the scan */
264 result = hfa384x_drvr_setconfig16(hw,
265 HFA384x_RID_CNFROAMINGMODE,
266 HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM);
267 if ( result ) {
268 WLAN_LOG_ERROR("setconfig(ROAMINGMODE) failed. result=%d\n",
269 result);
270 msg->resultcode.data =
271 P80211ENUM_resultcode_implementation_failure;
272 goto exit;
273 }
274
275 /* active or passive? */
276 if (HFA384x_FIRMWARE_VERSION(hw->ident_sta_fw.major,
277 hw->ident_sta_fw.minor,
278 hw->ident_sta_fw.variant) >
279 HFA384x_FIRMWARE_VERSION(1,5,0)) {
280 if (msg->scantype.data != P80211ENUM_scantype_active) {
281 word = host2hfa384x_16(msg->maxchanneltime.data);
282 } else {
283 word = 0;
284 }
285 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFPASSIVESCANCTRL, word);
286 if ( result ) {
287 WLAN_LOG_WARNING("Passive scan not supported with "
288 "current firmware. (<1.5.1)\n");
289 }
290 }
291
292 /* set up the txrate to be 2MBPS. Should be fastest basicrate... */
293 word = HFA384x_RATEBIT_2;
294 scanreq.txRate = host2hfa384x_16(word);
295
296 /* set up the channel list */
297 word = 0;
298 for (i = 0; i < msg->channellist.data.len; i++) {
299 UINT8 channel = msg->channellist.data.data[i];
300 if (channel > 14) continue;
301 /* channel 1 is BIT0 ... channel 14 is BIT13 */
302 word |= (1 << (channel-1));
303 }
304 scanreq.channelList = host2hfa384x_16(word);
305
306 /* set up the ssid, if present. */
307 scanreq.ssid.len = host2hfa384x_16(msg->ssid.data.len);
308 memcpy(scanreq.ssid.data, msg->ssid.data.data, msg->ssid.data.len);
309
310 /* Enable the MAC port if it's not already enabled */
311 result = hfa384x_drvr_getconfig16(hw, HFA384x_RID_PORTSTATUS, &word);
312 if ( result ) {
313 WLAN_LOG_ERROR("getconfig(PORTSTATUS) failed. "
314 "result=%d\n", result);
315 msg->resultcode.data =
316 P80211ENUM_resultcode_implementation_failure;
317 goto exit;
318 }
319 if (word == HFA384x_PORTSTATUS_DISABLED) {
320 UINT16 wordbuf[17];
321
322 result = hfa384x_drvr_setconfig16(hw,
323 HFA384x_RID_CNFROAMINGMODE,
324 HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM);
325 if ( result ) {
326 WLAN_LOG_ERROR("setconfig(ROAMINGMODE) failed. result=%d\n", result);
327 msg->resultcode.data =
328 P80211ENUM_resultcode_implementation_failure;
329 goto exit;
330 }
331 /* Construct a bogus SSID and assign it to OwnSSID and
332 * DesiredSSID
333 */
334 wordbuf[0] = host2hfa384x_16(WLAN_SSID_MAXLEN);
335 get_random_bytes(&wordbuf[1], WLAN_SSID_MAXLEN);
336 result = hfa384x_drvr_setconfig( hw, HFA384x_RID_CNFOWNSSID,
337 wordbuf, HFA384x_RID_CNFOWNSSID_LEN);
338 if ( result ) {
339 WLAN_LOG_ERROR("Failed to set OwnSSID.\n");
340 msg->resultcode.data =
341 P80211ENUM_resultcode_implementation_failure;
342 goto exit;
343 }
344 result = hfa384x_drvr_setconfig( hw, HFA384x_RID_CNFDESIREDSSID,
345 wordbuf, HFA384x_RID_CNFDESIREDSSID_LEN);
346 if ( result ) {
347 WLAN_LOG_ERROR("Failed to set DesiredSSID.\n");
348 msg->resultcode.data =
349 P80211ENUM_resultcode_implementation_failure;
350 goto exit;
351 }
352 /* bsstype */
353 result = hfa384x_drvr_setconfig16(hw,
354 HFA384x_RID_CNFPORTTYPE,
355 HFA384x_PORTTYPE_IBSS);
356 if ( result ) {
357 WLAN_LOG_ERROR("Failed to set CNFPORTTYPE.\n");
358 msg->resultcode.data =
359 P80211ENUM_resultcode_implementation_failure;
360 goto exit;
361 }
362 /* ibss options */
363 result = hfa384x_drvr_setconfig16(hw,
364 HFA384x_RID_CREATEIBSS,
365 HFA384x_CREATEIBSS_JOINCREATEIBSS);
366 if ( result ) {
367 WLAN_LOG_ERROR("Failed to set CREATEIBSS.\n");
368 msg->resultcode.data =
369 P80211ENUM_resultcode_implementation_failure;
370 goto exit;
371 }
372 result = hfa384x_drvr_enable(hw, 0);
373 if ( result ) {
374 WLAN_LOG_ERROR("drvr_enable(0) failed. "
375 "result=%d\n", result);
376 msg->resultcode.data =
377 P80211ENUM_resultcode_implementation_failure;
378 goto exit;
379 }
380 istmpenable = 1;
381 }
382
383 /* Figure out our timeout first Kus, then HZ */
384 timeout = msg->channellist.data.len * msg->maxchanneltime.data;
385 timeout = (timeout * HZ)/1000;
386
387 /* Issue the scan request */
388 hw->scanflag = 0;
389
390 WLAN_HEX_DUMP(5,"hscanreq", &scanreq, sizeof(scanreq));
391
392 result = hfa384x_drvr_setconfig( hw,
393 HFA384x_RID_HOSTSCAN, &scanreq,
394 sizeof(hfa384x_HostScanRequest_data_t));
395 if ( result ) {
396 WLAN_LOG_ERROR("setconfig(SCANREQUEST) failed. result=%d\n",
397 result);
398 msg->resultcode.data =
399 P80211ENUM_resultcode_implementation_failure;
400 goto exit;
401 }
402
403 /* sleep until info frame arrives */
404 wait_event_interruptible_timeout(hw->cmdq, hw->scanflag, timeout);
405
406 msg->numbss.status = P80211ENUM_msgitem_status_data_ok;
407 if (hw->scanflag == -1)
408 hw->scanflag = 0;
409
410 msg->numbss.data = hw->scanflag;
411
412 hw->scanflag = 0;
413
414 /* Disable port if we temporarily enabled it. */
415 if (istmpenable) {
416 result = hfa384x_drvr_disable(hw, 0);
417 if ( result ) {
418 WLAN_LOG_ERROR("drvr_disable(0) failed. "
419 "result=%d\n", result);
420 msg->resultcode.data =
421 P80211ENUM_resultcode_implementation_failure;
422 goto exit;
423 }
424 }
425
426 /* restore original roaming mode */
427 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFROAMINGMODE,
428 roamingmode);
429 if ( result ) {
430 WLAN_LOG_ERROR("setconfig(ROAMMODE) failed. result=%d\n",
431 result);
432 msg->resultcode.data =
433 P80211ENUM_resultcode_implementation_failure;
434 goto exit;
435 }
436
437 result = 0;
438 msg->resultcode.data = P80211ENUM_resultcode_success;
439
440 exit:
441 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
442
443 DBFEXIT;
444 return result;
445}
446
447
448/*----------------------------------------------------------------
449* prism2mgmt_scan_results
450*
451* Retrieve the BSS description for one of the BSSs identified in
452* a scan.
453*
454* Arguments:
455* wlandev wlan device structure
456* msgp ptr to msg buffer
457*
458* Returns:
459* 0 success and done
460* <0 success, but we're waiting for something to finish.
461* >0 an error occurred while handling the message.
462* Side effects:
463*
464* Call context:
465* process thread (usually)
466* interrupt
467----------------------------------------------------------------*/
468int prism2mgmt_scan_results(wlandevice_t *wlandev, void *msgp)
469{
470 int result = 0;
471 p80211msg_dot11req_scan_results_t *req;
472 hfa384x_t *hw = wlandev->priv;
473 hfa384x_HScanResultSub_t *item = NULL;
474
475 int count;
476
477 DBFENTER;
478
479 req = (p80211msg_dot11req_scan_results_t *) msgp;
480
481 req->resultcode.status = P80211ENUM_msgitem_status_data_ok;
482
483 if (hw->ap) {
484 result = 1;
485 req->resultcode.data = P80211ENUM_resultcode_not_supported;
486 goto exit;
487 }
488
489 if (! hw->scanresults) {
490 WLAN_LOG_ERROR("dot11req_scan_results can only be used after a successful dot11req_scan.\n");
491 result = 2;
492 req->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
493 goto exit;
494 }
495
496 count = (hw->scanresults->framelen - 3) / 32;
497 if (count > 32) count = 32;
498
499 if (req->bssindex.data >= count) {
500 WLAN_LOG_DEBUG(0, "requested index (%d) out of range (%d)\n",
501 req->bssindex.data, count);
502 result = 2;
503 req->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
504 goto exit;
505 }
506
507 item = &(hw->scanresults->info.hscanresult.result[req->bssindex.data]);
508 /* signal and noise */
509 req->signal.status = P80211ENUM_msgitem_status_data_ok;
510 req->noise.status = P80211ENUM_msgitem_status_data_ok;
511 req->signal.data = hfa384x2host_16(item->sl);
512 req->noise.data = hfa384x2host_16(item->anl);
513
514 /* BSSID */
515 req->bssid.status = P80211ENUM_msgitem_status_data_ok;
516 req->bssid.data.len = WLAN_BSSID_LEN;
517 memcpy(req->bssid.data.data, item->bssid, WLAN_BSSID_LEN);
518
519 /* SSID */
520 req->ssid.status = P80211ENUM_msgitem_status_data_ok;
521 req->ssid.data.len = hfa384x2host_16(item->ssid.len);
522 memcpy(req->ssid.data.data, item->ssid.data, req->ssid.data.len);
523
524 /* supported rates */
525 for (count = 0; count < 10 ; count++)
526 if (item->supprates[count] == 0)
527 break;
528
529#define REQBASICRATE(N) \
530 if ((count >= N) && DOT11_RATE5_ISBASIC_GET(item->supprates[(N)-1])) { \
531 req->basicrate ## N .data = item->supprates[(N)-1]; \
532 req->basicrate ## N .status = P80211ENUM_msgitem_status_data_ok; \
533 }
534
535 REQBASICRATE(1);
536 REQBASICRATE(2);
537 REQBASICRATE(3);
538 REQBASICRATE(4);
539 REQBASICRATE(5);
540 REQBASICRATE(6);
541 REQBASICRATE(7);
542 REQBASICRATE(8);
543
544#define REQSUPPRATE(N) \
545 if (count >= N) { \
546 req->supprate ## N .data = item->supprates[(N)-1]; \
547 req->supprate ## N .status = P80211ENUM_msgitem_status_data_ok; \
548 }
549
550 REQSUPPRATE(1);
551 REQSUPPRATE(2);
552 REQSUPPRATE(3);
553 REQSUPPRATE(4);
554 REQSUPPRATE(5);
555 REQSUPPRATE(6);
556 REQSUPPRATE(7);
557 REQSUPPRATE(8);
558
559 /* beacon period */
560 req->beaconperiod.status = P80211ENUM_msgitem_status_data_ok;
561 req->beaconperiod.data = hfa384x2host_16(item->bcnint);
562
563 /* timestamps */
564 req->timestamp.status = P80211ENUM_msgitem_status_data_ok;
565 req->timestamp.data = jiffies;
566 req->localtime.status = P80211ENUM_msgitem_status_data_ok;
567 req->localtime.data = jiffies;
568
569 /* atim window */
570 req->ibssatimwindow.status = P80211ENUM_msgitem_status_data_ok;
571 req->ibssatimwindow.data = hfa384x2host_16(item->atim);
572
573 /* Channel */
574 req->dschannel.status = P80211ENUM_msgitem_status_data_ok;
575 req->dschannel.data = hfa384x2host_16(item->chid);
576
577 /* capinfo bits */
578 count = hfa384x2host_16(item->capinfo);
579
580 /* privacy flag */
581 req->privacy.status = P80211ENUM_msgitem_status_data_ok;
582 req->privacy.data = WLAN_GET_MGMT_CAP_INFO_PRIVACY(count);
583
584 /* cfpollable */
585 req->cfpollable.status = P80211ENUM_msgitem_status_data_ok;
586 req->cfpollable.data = WLAN_GET_MGMT_CAP_INFO_CFPOLLABLE(count);
587
588 /* cfpollreq */
589 req->cfpollreq.status = P80211ENUM_msgitem_status_data_ok;
590 req->cfpollreq.data = WLAN_GET_MGMT_CAP_INFO_CFPOLLREQ(count);
591
592 /* bsstype */
593 req->bsstype.status = P80211ENUM_msgitem_status_data_ok;
594 req->bsstype.data = (WLAN_GET_MGMT_CAP_INFO_ESS(count)) ?
595 P80211ENUM_bsstype_infrastructure :
596 P80211ENUM_bsstype_independent;
597
598 // item->proberesp_rate
599/*
600 req->fhdwelltime
601 req->fhhopset
602 req->fhhoppattern
603 req->fhhopindex
604 req->cfpdurremaining
605*/
606
607 result = 0;
608 req->resultcode.data = P80211ENUM_resultcode_success;
609
610 exit:
611 DBFEXIT;
612 return result;
613}
614
615
616/*----------------------------------------------------------------
617* prism2mgmt_join
618*
619* Join a BSS whose BSS description was previously obtained with
620* a scan.
621*
622* Arguments:
623* wlandev wlan device structure
624* msgp ptr to msg buffer
625*
626* Returns:
627* 0 success and done
628* <0 success, but we're waiting for something to finish.
629* >0 an error occurred while handling the message.
630* Side effects:
631*
632* Call context:
633* process thread (usually)
634* interrupt
635----------------------------------------------------------------*/
636int prism2mgmt_join(wlandevice_t *wlandev, void *msgp)
637{
638 int result = 0;
639 hfa384x_t *hw = wlandev->priv;
640 p80211msg_dot11req_join_t *msg = msgp;
641 DBFENTER;
642
643 if (!hw->ap) {
644
645 /*** STATION ***/
646
647 /* TODO: Implement after scan */
648 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
649 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
650 } else {
651
652 /*** ACCESS POINT ***/
653
654 /* Never supported by APs */
655 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
656 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
657 }
658
659 DBFEXIT;
660 return result;
661}
662
663
664/*----------------------------------------------------------------
665* prism2mgmt_p2_join
666*
667* Join a specific BSS
668*
669* Arguments:
670* wlandev wlan device structure
671* msgp ptr to msg buffer
672*
673* Returns:
674* 0 success and done
675* <0 success, but we're waiting for something to finish.
676* >0 an error occurred while handling the message.
677* Side effects:
678*
679* Call context:
680* process thread (usually)
681* interrupt
682----------------------------------------------------------------*/
683int prism2mgmt_p2_join(wlandevice_t *wlandev, void *msgp)
684{
685 int result = 0;
686 hfa384x_t *hw = wlandev->priv;
687 p80211msg_p2req_join_t *msg = msgp;
688 UINT16 reg;
689 p80211pstrd_t *pstr;
690 UINT8 bytebuf[256];
691 hfa384x_bytestr_t *p2bytestr = (hfa384x_bytestr_t*)bytebuf;
692 hfa384x_JoinRequest_data_t joinreq;
693 DBFENTER;
694
695 if (!hw->ap) {
696
697 wlandev->macmode = WLAN_MACMODE_NONE;
698
699 /*** STATION ***/
700 /* Set the PortType */
701 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
702 msg->resultcode.data = P80211ENUM_resultcode_success;
703
704 /* ess port */
705 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFPORTTYPE, 1);
706 if ( result ) {
707 WLAN_LOG_ERROR("Failed to set Port Type\n");
708 goto failed;
709 }
710
711 /* Set the auth type */
712 if ( msg->authtype.data == P80211ENUM_authalg_sharedkey ) {
713 reg = HFA384x_CNFAUTHENTICATION_SHAREDKEY;
714 } else {
715 reg = HFA384x_CNFAUTHENTICATION_OPENSYSTEM;
716 }
717 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFAUTHENTICATION, reg);
718 if ( result ) {
719 WLAN_LOG_ERROR("Failed to set Authentication\n");
720 goto failed;
721 }
722
723 /* Turn off all roaming */
724 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFROAMINGMODE, 3);
725 if ( result ) {
726 WLAN_LOG_ERROR("Failed to Turn off Roaming\n");
727 goto failed;
728 }
729
730 /* Basic rates */
731 reg = 0;
732 if ( msg->basicrate1.status == P80211ENUM_msgitem_status_data_ok ) {
733 reg = p80211rate_to_p2bit(msg->basicrate1.data);
734 }
735 if ( msg->basicrate2.status == P80211ENUM_msgitem_status_data_ok ) {
736 reg |= p80211rate_to_p2bit(msg->basicrate2.data);
737 }
738 if ( msg->basicrate3.status == P80211ENUM_msgitem_status_data_ok ) {
739 reg |= p80211rate_to_p2bit(msg->basicrate3.data);
740 }
741 if ( msg->basicrate4.status == P80211ENUM_msgitem_status_data_ok ) {
742 reg |= p80211rate_to_p2bit(msg->basicrate4.data);
743 }
744 if ( msg->basicrate5.status == P80211ENUM_msgitem_status_data_ok ) {
745 reg |= p80211rate_to_p2bit(msg->basicrate5.data);
746 }
747 if ( msg->basicrate6.status == P80211ENUM_msgitem_status_data_ok ) {
748 reg |= p80211rate_to_p2bit(msg->basicrate6.data);
749 }
750 if ( msg->basicrate7.status == P80211ENUM_msgitem_status_data_ok ) {
751 reg |= p80211rate_to_p2bit(msg->basicrate7.data);
752 }
753 if ( msg->basicrate8.status == P80211ENUM_msgitem_status_data_ok ) {
754 reg |= p80211rate_to_p2bit(msg->basicrate8.data);
755 }
756 if( reg == 0)
757 reg = 0x03;
758 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFBASICRATES, reg);
759 if ( result ) {
760 WLAN_LOG_ERROR("Failed to set basicrates=%d.\n", reg);
761 goto failed;
762 }
763
764 /* Operational rates (supprates and txratecontrol) */
765 reg = 0;
766 if ( msg->operationalrate1.status == P80211ENUM_msgitem_status_data_ok ) {
767 reg = p80211rate_to_p2bit(msg->operationalrate1.data);
768 }
769 if ( msg->operationalrate2.status == P80211ENUM_msgitem_status_data_ok ) {
770 reg |= p80211rate_to_p2bit(msg->operationalrate2.data);
771 }
772 if ( msg->operationalrate3.status == P80211ENUM_msgitem_status_data_ok ) {
773 reg |= p80211rate_to_p2bit(msg->operationalrate3.data);
774 }
775 if ( msg->operationalrate4.status == P80211ENUM_msgitem_status_data_ok ) {
776 reg |= p80211rate_to_p2bit(msg->operationalrate4.data);
777 }
778 if ( msg->operationalrate5.status == P80211ENUM_msgitem_status_data_ok ) {
779 reg |= p80211rate_to_p2bit(msg->operationalrate5.data);
780 }
781 if ( msg->operationalrate6.status == P80211ENUM_msgitem_status_data_ok ) {
782 reg |= p80211rate_to_p2bit(msg->operationalrate6.data);
783 }
784 if ( msg->operationalrate7.status == P80211ENUM_msgitem_status_data_ok ) {
785 reg |= p80211rate_to_p2bit(msg->operationalrate7.data);
786 }
787 if ( msg->operationalrate8.status == P80211ENUM_msgitem_status_data_ok ) {
788 reg |= p80211rate_to_p2bit(msg->operationalrate8.data);
789 }
790 if( reg == 0)
791 reg = 0x0f;
792 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, reg);
793 if ( result ) {
794 WLAN_LOG_ERROR("Failed to set supprates=%d.\n", reg);
795 goto failed;
796 }
797
798 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_TXRATECNTL, reg);
799 if ( result ) {
800 WLAN_LOG_ERROR("Failed to set txrates=%d.\n", reg);
801 goto failed;
802 }
803
804 /* Set the ssid */
805 memset(bytebuf, 0, 256);
806 pstr = (p80211pstrd_t*)&(msg->ssid.data);
807 prism2mgmt_pstr2bytestr(p2bytestr, pstr);
808 result = hfa384x_drvr_setconfig(
809 hw, HFA384x_RID_CNFDESIREDSSID,
810 bytebuf, HFA384x_RID_CNFDESIREDSSID_LEN);
811 if ( result ) {
812 WLAN_LOG_ERROR("Failed to set SSID\n");
813 goto failed;
814 }
815
816 /* Enable the Port */
817 result = hfa384x_cmd_enable(hw, 0);
818 if ( result ) {
819 WLAN_LOG_ERROR("Enable macport failed, result=%d.\n", result);
820 goto failed;
821 }
822
823 /* Fill in the join request */
824 joinreq.channel = msg->channel.data;
825 memcpy( joinreq.bssid, ((unsigned char *) &msg->bssid.data) + 1, WLAN_BSSID_LEN);
826 hw->joinreq = joinreq;
827 hw->join_ap = 1;
828
829 /* Send the join request */
830 result = hfa384x_drvr_setconfig( hw,
831 HFA384x_RID_JOINREQUEST,
832 &joinreq, HFA384x_RID_JOINREQUEST_LEN);
833 if(result != 0) {
834 WLAN_LOG_ERROR("Join request failed, result=%d.\n", result);
835 goto failed;
836 }
837
838 } else {
839
840 /*** ACCESS POINT ***/
841
842 /* Never supported by APs */
843 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
844 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
845 }
846
847 goto done;
848failed:
849 WLAN_LOG_DEBUG(1, "Failed to set a config option, result=%d\n", result);
850 msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
851
852done:
853 result = 0;
854
855 DBFEXIT;
856 return result;
857}
858
859
860/*----------------------------------------------------------------
861* prism2mgmt_authenticate
862*
863* Station should be begin an authentication exchange.
864*
865* Arguments:
866* wlandev wlan device structure
867* msgp ptr to msg buffer
868*
869* Returns:
870* 0 success and done
871* <0 success, but we're waiting for something to finish.
872* >0 an error occurred while handling the message.
873* Side effects:
874*
875* Call context:
876* process thread (usually)
877* interrupt
878----------------------------------------------------------------*/
879int prism2mgmt_authenticate(wlandevice_t *wlandev, void *msgp)
880{
881 int result = 0;
882 hfa384x_t *hw = wlandev->priv;
883 p80211msg_dot11req_authenticate_t *msg = msgp;
884 DBFENTER;
885
886 if (!hw->ap) {
887
888 /*** STATION ***/
889
890 /* TODO: Decide how we're going to handle this one w/ Prism2 */
891 /* It could be entertaining since Prism2 doesn't have */
892 /* an explicit way to control this */
893 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
894 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
895 } else {
896
897 /*** ACCESS POINT ***/
898
899 /* Never supported by APs */
900 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
901 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
902 }
903
904 DBFEXIT;
905 return result;
906}
907
908
909/*----------------------------------------------------------------
910* prism2mgmt_deauthenticate
911*
912* Send a deauthenticate notification.
913*
914* Arguments:
915* wlandev wlan device structure
916* msgp ptr to msg buffer
917*
918* Returns:
919* 0 success and done
920* <0 success, but we're waiting for something to finish.
921* >0 an error occurred while handling the message.
922* Side effects:
923*
924* Call context:
925* process thread (usually)
926* interrupt
927----------------------------------------------------------------*/
928int prism2mgmt_deauthenticate(wlandevice_t *wlandev, void *msgp)
929{
930 int result = 0;
931 hfa384x_t *hw = wlandev->priv;
932 p80211msg_dot11req_deauthenticate_t *msg = msgp;
933 DBFENTER;
934
935 if (!hw->ap) {
936
937 /*** STATION ***/
938
939 /* TODO: Decide how we're going to handle this one w/ Prism2 */
940 /* It could be entertaining since Prism2 doesn't have */
941 /* an explicit way to control this */
942 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
943 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
944 } else {
945
946 /*** ACCESS POINT ***/
947 hfa384x_drvr_handover(hw, msg->peerstaaddress.data.data);
948 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
949 msg->resultcode.data = P80211ENUM_resultcode_success;
950 }
951
952 DBFEXIT;
953 return result;
954}
955
956
957/*----------------------------------------------------------------
958* prism2mgmt_associate
959*
960* Associate with an ESS.
961*
962* Arguments:
963* wlandev wlan device structure
964* msgp ptr to msg buffer
965*
966* Returns:
967* 0 success and done
968* <0 success, but we're waiting for something to finish.
969* >0 an error occurred while handling the message.
970* Side effects:
971*
972* Call context:
973* process thread (usually)
974* interrupt
975----------------------------------------------------------------*/
976int prism2mgmt_associate(wlandevice_t *wlandev, void *msgp)
977{
978 hfa384x_t *hw = wlandev->priv;
979 int result = 0;
980 p80211msg_dot11req_associate_t *msg = msgp;
981 DBFENTER;
982
983 if (!hw->ap) {
984
985 /*** STATION ***/
986
987#if 0
988 /* Set the TxRates */
989 reg = 0x000f;
990 hfa384x_drvr_setconfig16(hw, HFA384x_RID_TXRATECNTL, reg);
991#endif
992
993 /* Set the PortType */
994 /* ess port */
995 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFPORTTYPE, 1);
996
997 /* Enable the Port */
998 hfa384x_drvr_enable(hw, 0);
999
1000 /* Set the resultcode */
1001 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1002 msg->resultcode.data = P80211ENUM_resultcode_success;
1003
1004 } else {
1005
1006 /*** ACCESS POINT ***/
1007
1008 /* Never supported on AP */
1009 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1010 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1011 }
1012
1013 DBFEXIT;
1014 return result;
1015}
1016
1017
1018/*----------------------------------------------------------------
1019* prism2mgmt_reassociate
1020*
1021* Renew association because of a BSS change.
1022*
1023* Arguments:
1024* wlandev wlan device structure
1025* msgp ptr to msg buffer
1026*
1027* Returns:
1028* 0 success and done
1029* <0 success, but we're waiting for something to finish.
1030* >0 an error occurred while handling the message.
1031* Side effects:
1032*
1033* Call context:
1034* process thread (usually)
1035* interrupt
1036----------------------------------------------------------------*/
1037int prism2mgmt_reassociate(wlandevice_t *wlandev, void *msgp)
1038{
1039 int result = 0;
1040 hfa384x_t *hw = wlandev->priv;
1041 p80211msg_dot11req_reassociate_t *msg = msgp;
1042 DBFENTER;
1043
1044 if (!hw->ap) {
1045
1046 /*** STATION ***/
1047
1048 /* TODO: Not supported yet...not sure how we're going to do it */
1049 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1050 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1051 } else {
1052
1053 /*** ACCESS POINT ***/
1054
1055 /* Never supported on AP */
1056 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1057 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1058 }
1059
1060 DBFEXIT;
1061 return result;
1062}
1063
1064
1065/*----------------------------------------------------------------
1066* prism2mgmt_disassociate
1067*
1068* Send a disassociation notification.
1069*
1070* Arguments:
1071* wlandev wlan device structure
1072* msgp ptr to msg buffer
1073*
1074* Returns:
1075* 0 success and done
1076* <0 success, but we're waiting for something to finish.
1077* >0 an error occurred while handling the message.
1078* Side effects:
1079*
1080* Call context:
1081* process thread (usually)
1082* interrupt
1083----------------------------------------------------------------*/
1084int prism2mgmt_disassociate(wlandevice_t *wlandev, void *msgp)
1085{
1086 int result = 0;
1087 hfa384x_t *hw = wlandev->priv;
1088 p80211msg_dot11req_disassociate_t *msg = msgp;
1089 DBFENTER;
1090
1091 if (!hw->ap) {
1092
1093 /*** STATION ***/
1094
1095 /* TODO: Not supported yet...not sure how to do it */
1096 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1097 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1098 } else {
1099
1100 /*** ACCESS POINT ***/
1101 hfa384x_drvr_handover(hw, msg->peerstaaddress.data.data);
1102 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1103 msg->resultcode.data = P80211ENUM_resultcode_success;
1104 }
1105
1106 DBFEXIT;
1107 return result;
1108}
1109
1110
1111/*----------------------------------------------------------------
1112* prism2mgmt_reset
1113*
1114* Reset the MAC and MSD. The p80211 layer has it's own handling
1115* that should be done before and after this function.
1116* Procedure:
1117* - disable system interrupts ??
1118* - disable MAC interrupts
1119* - restore system interrupts
1120* - issue the MAC initialize command
1121* - clear any MSD level state (including timers, queued events,
1122* etc.). Note that if we're removing timer'd/queue events, we may
1123* need to have remained in the system interrupt disabled state.
1124* We should be left in the same state that we're in following
1125* driver initialization.
1126*
1127* Arguments:
1128* wlandev wlan device structure
1129* msgp ptr to msg buffer, MAY BE NULL! for a driver local
1130* call.
1131*
1132* Returns:
1133* 0 success and done
1134* <0 success, but we're waiting for something to finish.
1135* >0 an error occurred while handling the message.
1136* Side effects:
1137*
1138* Call context:
1139* process thread, commonly wlanctl, but might be rmmod/pci_close.
1140----------------------------------------------------------------*/
1141int prism2mgmt_reset(wlandevice_t *wlandev, void *msgp)
1142{
1143 int result = 0;
1144 hfa384x_t *hw = wlandev->priv;
1145 p80211msg_dot11req_reset_t *msg = msgp;
1146 DBFENTER;
1147
1148 /*
1149 * This is supported on both AP and STA and it's not allowed
1150 * to fail.
1151 */
1152 if ( msgp ) {
1153 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1154 msg->resultcode.data = P80211ENUM_resultcode_success;
1155 WLAN_LOG_INFO("dot11req_reset: the macaddress and "
1156 "setdefaultmib arguments are currently unsupported.\n");
1157 }
1158
1159 /*
1160 * If we got this far, the MSD must be in the MSDRUNNING state
1161 * therefore, we must stop and then restart the hw/MAC combo.
1162 */
1163 hfa384x_drvr_stop(hw);
1164 result = hfa384x_drvr_start(hw);
1165 if (result != 0) {
1166 WLAN_LOG_ERROR("dot11req_reset: Initialize command failed,"
1167 " bad things will happen from here.\n");
1168 return 0;
1169 }
1170
1171 DBFEXIT;
1172 return 0;
1173}
1174
1175
1176/*----------------------------------------------------------------
1177* prism2mgmt_start
1178*
1179* Start a BSS. Any station can do this for IBSS, only AP for ESS.
1180*
1181* Arguments:
1182* wlandev wlan device structure
1183* msgp ptr to msg buffer
1184*
1185* Returns:
1186* 0 success and done
1187* <0 success, but we're waiting for something to finish.
1188* >0 an error occurred while handling the message.
1189* Side effects:
1190*
1191* Call context:
1192* process thread (usually)
1193* interrupt
1194----------------------------------------------------------------*/
1195int prism2mgmt_start(wlandevice_t *wlandev, void *msgp)
1196{
1197 int result = 0;
1198 hfa384x_t *hw = wlandev->priv;
1199 p80211msg_dot11req_start_t *msg = msgp;
1200
1201 p80211pstrd_t *pstr;
1202 UINT8 bytebuf[80];
1203 hfa384x_bytestr_t *p2bytestr = (hfa384x_bytestr_t*)bytebuf;
1204 hfa384x_PCFInfo_data_t *pcfinfo = (hfa384x_PCFInfo_data_t*)bytebuf;
1205 UINT16 word;
1206 DBFENTER;
1207
1208 wlandev->macmode = WLAN_MACMODE_NONE;
1209
1210 /* Set the SSID */
1211 memcpy(&wlandev->ssid, &msg->ssid.data, sizeof(msg->ssid.data));
1212
1213 if (!hw->ap) {
1214 /*** ADHOC IBSS ***/
1215 /* see if current f/w is less than 8c3 */
1216 if (HFA384x_FIRMWARE_VERSION(hw->ident_sta_fw.major,
1217 hw->ident_sta_fw.minor,
1218 hw->ident_sta_fw.variant) <
1219 HFA384x_FIRMWARE_VERSION(0,8,3)) {
1220 /* Ad-Hoc not quite supported on Prism2 */
1221 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1222 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1223 goto done;
1224 }
1225
1226 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1227
1228 /*** STATION ***/
1229 /* Set the REQUIRED config items */
1230 /* SSID */
1231 pstr = (p80211pstrd_t*)&(msg->ssid.data);
1232 prism2mgmt_pstr2bytestr(p2bytestr, pstr);
1233 result = hfa384x_drvr_setconfig( hw, HFA384x_RID_CNFOWNSSID,
1234 bytebuf, HFA384x_RID_CNFOWNSSID_LEN);
1235 if ( result ) {
1236 WLAN_LOG_ERROR("Failed to set CnfOwnSSID\n");
1237 goto failed;
1238 }
1239 result = hfa384x_drvr_setconfig( hw, HFA384x_RID_CNFDESIREDSSID,
1240 bytebuf, HFA384x_RID_CNFDESIREDSSID_LEN);
1241 if ( result ) {
1242 WLAN_LOG_ERROR("Failed to set CnfDesiredSSID\n");
1243 goto failed;
1244 }
1245
1246 /* bsstype - we use the default in the ap firmware */
1247 /* IBSS port */
1248 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFPORTTYPE, 0);
1249
1250 /* beacon period */
1251 word = msg->beaconperiod.data;
1252 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFAPBCNINT, word);
1253 if ( result ) {
1254 WLAN_LOG_ERROR("Failed to set beacon period=%d.\n", word);
1255 goto failed;
1256 }
1257
1258 /* dschannel */
1259 word = msg->dschannel.data;
1260 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFOWNCHANNEL, word);
1261 if ( result ) {
1262 WLAN_LOG_ERROR("Failed to set channel=%d.\n", word);
1263 goto failed;
1264 }
1265 /* Basic rates */
1266 word = p80211rate_to_p2bit(msg->basicrate1.data);
1267 if ( msg->basicrate2.status == P80211ENUM_msgitem_status_data_ok ) {
1268 word |= p80211rate_to_p2bit(msg->basicrate2.data);
1269 }
1270 if ( msg->basicrate3.status == P80211ENUM_msgitem_status_data_ok ) {
1271 word |= p80211rate_to_p2bit(msg->basicrate3.data);
1272 }
1273 if ( msg->basicrate4.status == P80211ENUM_msgitem_status_data_ok ) {
1274 word |= p80211rate_to_p2bit(msg->basicrate4.data);
1275 }
1276 if ( msg->basicrate5.status == P80211ENUM_msgitem_status_data_ok ) {
1277 word |= p80211rate_to_p2bit(msg->basicrate5.data);
1278 }
1279 if ( msg->basicrate6.status == P80211ENUM_msgitem_status_data_ok ) {
1280 word |= p80211rate_to_p2bit(msg->basicrate6.data);
1281 }
1282 if ( msg->basicrate7.status == P80211ENUM_msgitem_status_data_ok ) {
1283 word |= p80211rate_to_p2bit(msg->basicrate7.data);
1284 }
1285 if ( msg->basicrate8.status == P80211ENUM_msgitem_status_data_ok ) {
1286 word |= p80211rate_to_p2bit(msg->basicrate8.data);
1287 }
1288 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFBASICRATES, word);
1289 if ( result ) {
1290 WLAN_LOG_ERROR("Failed to set basicrates=%d.\n", word);
1291 goto failed;
1292 }
1293
1294 /* Operational rates (supprates and txratecontrol) */
1295 word = p80211rate_to_p2bit(msg->operationalrate1.data);
1296 if ( msg->operationalrate2.status == P80211ENUM_msgitem_status_data_ok ) {
1297 word |= p80211rate_to_p2bit(msg->operationalrate2.data);
1298 }
1299 if ( msg->operationalrate3.status == P80211ENUM_msgitem_status_data_ok ) {
1300 word |= p80211rate_to_p2bit(msg->operationalrate3.data);
1301 }
1302 if ( msg->operationalrate4.status == P80211ENUM_msgitem_status_data_ok ) {
1303 word |= p80211rate_to_p2bit(msg->operationalrate4.data);
1304 }
1305 if ( msg->operationalrate5.status == P80211ENUM_msgitem_status_data_ok ) {
1306 word |= p80211rate_to_p2bit(msg->operationalrate5.data);
1307 }
1308 if ( msg->operationalrate6.status == P80211ENUM_msgitem_status_data_ok ) {
1309 word |= p80211rate_to_p2bit(msg->operationalrate6.data);
1310 }
1311 if ( msg->operationalrate7.status == P80211ENUM_msgitem_status_data_ok ) {
1312 word |= p80211rate_to_p2bit(msg->operationalrate7.data);
1313 }
1314 if ( msg->operationalrate8.status == P80211ENUM_msgitem_status_data_ok ) {
1315 word |= p80211rate_to_p2bit(msg->operationalrate8.data);
1316 }
1317 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, word);
1318 if ( result ) {
1319 WLAN_LOG_ERROR("Failed to set supprates=%d.\n", word);
1320 goto failed;
1321 }
1322
1323 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_TXRATECNTL, word);
1324 if ( result ) {
1325 WLAN_LOG_ERROR("Failed to set txrates=%d.\n", word);
1326 goto failed;
1327 }
1328
1329 /* Set the macmode so the frame setup code knows what to do */
1330 if ( msg->bsstype.data == P80211ENUM_bsstype_independent ) {
1331 wlandev->macmode = WLAN_MACMODE_IBSS_STA;
1332 /* lets extend the data length a bit */
1333 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFMAXDATALEN, 2304);
1334 }
1335
1336 /* Enable the Port */
1337 result = hfa384x_drvr_enable(hw, 0);
1338 if ( result ) {
1339 WLAN_LOG_ERROR("Enable macport failed, result=%d.\n", result);
1340 goto failed;
1341 }
1342
1343 msg->resultcode.data = P80211ENUM_resultcode_success;
1344
1345 goto done;
1346 }
1347
1348 /*** ACCESS POINT ***/
1349
1350 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1351
1352 /* Validate the command, if BSStype=infra is the tertiary loaded? */
1353 if ( msg->bsstype.data == P80211ENUM_bsstype_independent ) {
1354 WLAN_LOG_ERROR("AP driver cannot create IBSS.\n");
1355 goto failed;
1356 } else if ( hw->cap_sup_sta.id != 5) {
1357 WLAN_LOG_ERROR("AP driver failed to detect AP firmware.\n");
1358 goto failed;
1359 }
1360
1361 /* Set the REQUIRED config items */
1362 /* SSID */
1363 pstr = (p80211pstrd_t*)&(msg->ssid.data);
1364 prism2mgmt_pstr2bytestr(p2bytestr, pstr);
1365 result = hfa384x_drvr_setconfig( hw, HFA384x_RID_CNFOWNSSID,
1366 bytebuf, HFA384x_RID_CNFOWNSSID_LEN);
1367 if ( result ) {
1368 WLAN_LOG_ERROR("Failed to set SSID, result=0x%04x\n", result);
1369 goto failed;
1370 }
1371
1372 /* bsstype - we use the default in the ap firmware */
1373
1374 /* beacon period */
1375 word = msg->beaconperiod.data;
1376 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFAPBCNINT, word);
1377 if ( result ) {
1378 WLAN_LOG_ERROR("Failed to set beacon period=%d.\n", word);
1379 goto failed;
1380 }
1381
1382 /* dschannel */
1383 word = msg->dschannel.data;
1384 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFOWNCHANNEL, word);
1385 if ( result ) {
1386 WLAN_LOG_ERROR("Failed to set channel=%d.\n", word);
1387 goto failed;
1388 }
1389 /* Basic rates */
1390 word = p80211rate_to_p2bit(msg->basicrate1.data);
1391 if ( msg->basicrate2.status == P80211ENUM_msgitem_status_data_ok ) {
1392 word |= p80211rate_to_p2bit(msg->basicrate2.data);
1393 }
1394 if ( msg->basicrate3.status == P80211ENUM_msgitem_status_data_ok ) {
1395 word |= p80211rate_to_p2bit(msg->basicrate3.data);
1396 }
1397 if ( msg->basicrate4.status == P80211ENUM_msgitem_status_data_ok ) {
1398 word |= p80211rate_to_p2bit(msg->basicrate4.data);
1399 }
1400 if ( msg->basicrate5.status == P80211ENUM_msgitem_status_data_ok ) {
1401 word |= p80211rate_to_p2bit(msg->basicrate5.data);
1402 }
1403 if ( msg->basicrate6.status == P80211ENUM_msgitem_status_data_ok ) {
1404 word |= p80211rate_to_p2bit(msg->basicrate6.data);
1405 }
1406 if ( msg->basicrate7.status == P80211ENUM_msgitem_status_data_ok ) {
1407 word |= p80211rate_to_p2bit(msg->basicrate7.data);
1408 }
1409 if ( msg->basicrate8.status == P80211ENUM_msgitem_status_data_ok ) {
1410 word |= p80211rate_to_p2bit(msg->basicrate8.data);
1411 }
1412 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFBASICRATES, word);
1413 if ( result ) {
1414 WLAN_LOG_ERROR("Failed to set basicrates=%d.\n", word);
1415 goto failed;
1416 }
1417
1418 /* Operational rates (supprates and txratecontrol) */
1419 word = p80211rate_to_p2bit(msg->operationalrate1.data);
1420 if ( msg->operationalrate2.status == P80211ENUM_msgitem_status_data_ok ) {
1421 word |= p80211rate_to_p2bit(msg->operationalrate2.data);
1422 }
1423 if ( msg->operationalrate3.status == P80211ENUM_msgitem_status_data_ok ) {
1424 word |= p80211rate_to_p2bit(msg->operationalrate3.data);
1425 }
1426 if ( msg->operationalrate4.status == P80211ENUM_msgitem_status_data_ok ) {
1427 word |= p80211rate_to_p2bit(msg->operationalrate4.data);
1428 }
1429 if ( msg->operationalrate5.status == P80211ENUM_msgitem_status_data_ok ) {
1430 word |= p80211rate_to_p2bit(msg->operationalrate5.data);
1431 }
1432 if ( msg->operationalrate6.status == P80211ENUM_msgitem_status_data_ok ) {
1433 word |= p80211rate_to_p2bit(msg->operationalrate6.data);
1434 }
1435 if ( msg->operationalrate7.status == P80211ENUM_msgitem_status_data_ok ) {
1436 word |= p80211rate_to_p2bit(msg->operationalrate7.data);
1437 }
1438 if ( msg->operationalrate8.status == P80211ENUM_msgitem_status_data_ok ) {
1439 word |= p80211rate_to_p2bit(msg->operationalrate8.data);
1440 }
1441 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, word);
1442 if ( result ) {
1443 WLAN_LOG_ERROR("Failed to set supprates=%d.\n", word);
1444 goto failed;
1445 }
1446 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_TXRATECNTL0, word);
1447 if ( result ) {
1448 WLAN_LOG_ERROR("Failed to set txrates=%d.\n", word);
1449 goto failed;
1450 }
1451
1452 /* ibssatimwindow */
1453 if (msg->ibssatimwindow.status == P80211ENUM_msgitem_status_data_ok) {
1454 WLAN_LOG_INFO("prism2mgmt_start: atimwindow not used in "
1455 "Infrastructure mode, ignored.\n");
1456 }
1457
1458 /* DTIM period */
1459 word = msg->dtimperiod.data;
1460 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFOWNDTIMPER, word);
1461 if ( result ) {
1462 WLAN_LOG_ERROR("Failed to set dtim period=%d.\n", word);
1463 goto failed;
1464 }
1465
1466 /* probedelay */
1467 if (msg->probedelay.status == P80211ENUM_msgitem_status_data_ok) {
1468 WLAN_LOG_INFO("prism2mgmt_start: probedelay not "
1469 "supported in prism2, ignored.\n");
1470 }
1471
1472 /* cfpollable, cfpollreq, cfpperiod, cfpmaxduration */
1473 if (msg->cfpollable.data == P80211ENUM_truth_true &&
1474 msg->cfpollreq.data == P80211ENUM_truth_true ) {
1475 WLAN_LOG_ERROR("cfpollable=cfpollreq=true is illegal.\n");
1476 result = -1;
1477 goto failed;
1478 }
1479
1480 /* read the PCFInfo and update */
1481 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_CNFAPPCFINFO,
1482 pcfinfo, HFA384x_RID_CNFAPPCFINFO_LEN);
1483 if ( result ) {
1484 WLAN_LOG_INFO("prism2mgmt_start: read(pcfinfo) failed, "
1485 "assume it's "
1486 "not supported, pcf settings ignored.\n");
1487 goto pcf_skip;
1488 }
1489 if ((msg->cfpollable.data == P80211ENUM_truth_false &&
1490 msg->cfpollreq.data == P80211ENUM_truth_false) ) {
1491 pcfinfo->MediumOccupancyLimit = 0;
1492 pcfinfo->CFPPeriod = 0;
1493 pcfinfo->CFPMaxDuration = 0;
1494 pcfinfo->CFPFlags &= host2hfa384x_16((UINT16)~BIT0);
1495
1496 if ( msg->cfpperiod.status == P80211ENUM_msgitem_status_data_ok ||
1497 msg->cfpmaxduration.status == P80211ENUM_msgitem_status_data_ok ) {
1498 WLAN_LOG_WARNING(
1499 "Setting cfpperiod or cfpmaxduration when "
1500 "cfpollable and cfreq are false is pointless.\n");
1501 }
1502 }
1503 if ((msg->cfpollable.data == P80211ENUM_truth_true ||
1504 msg->cfpollreq.data == P80211ENUM_truth_true) ) {
1505 if ( msg->cfpollable.data == P80211ENUM_truth_true) {
1506 pcfinfo->CFPFlags |= host2hfa384x_16((UINT16)BIT0);
1507 }
1508
1509 if ( msg->cfpperiod.status == P80211ENUM_msgitem_status_data_ok) {
1510 pcfinfo->CFPPeriod = msg->cfpperiod.data;
1511 pcfinfo->CFPPeriod = host2hfa384x_16(pcfinfo->CFPPeriod);
1512 }
1513
1514 if ( msg->cfpmaxduration.status == P80211ENUM_msgitem_status_data_ok) {
1515 pcfinfo->CFPMaxDuration = msg->cfpmaxduration.data;
1516 pcfinfo->CFPMaxDuration = host2hfa384x_16(pcfinfo->CFPMaxDuration);
1517 pcfinfo->MediumOccupancyLimit = pcfinfo->CFPMaxDuration;
1518 }
1519 }
1520 result = hfa384x_drvr_setconfig(hw, HFA384x_RID_CNFAPPCFINFO,
1521 pcfinfo, HFA384x_RID_CNFAPPCFINFO_LEN);
1522 if ( result ) {
1523 WLAN_LOG_ERROR("write(pcfinfo) failed.\n");
1524 goto failed;
1525 }
1526
1527pcf_skip:
1528 /* Set the macmode so the frame setup code knows what to do */
1529 if ( msg->bsstype.data == P80211ENUM_bsstype_infrastructure ) {
1530 wlandev->macmode = WLAN_MACMODE_ESS_AP;
1531 /* lets extend the data length a bit */
1532 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFMAXDATALEN, 2304);
1533 }
1534
1535 /* Set the BSSID to the same as our MAC */
1536 memcpy( wlandev->bssid, wlandev->netdev->dev_addr, WLAN_BSSID_LEN);
1537
1538 /* Enable the Port */
1539 result = hfa384x_drvr_enable(hw, 0);
1540 if ( result ) {
1541 WLAN_LOG_ERROR("Enable macport failed, result=%d.\n", result);
1542 goto failed;
1543 }
1544
1545 msg->resultcode.data = P80211ENUM_resultcode_success;
1546
1547 goto done;
1548failed:
1549 WLAN_LOG_DEBUG(1, "Failed to set a config option, result=%d\n", result);
1550 msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
1551
1552done:
1553 result = 0;
1554
1555 DBFEXIT;
1556 return result;
1557}
1558
1559
1560/*----------------------------------------------------------------
1561* prism2mgmt_enable
1562*
1563* Start a BSS. Any station can do this for IBSS, only AP for ESS.
1564*
1565* Arguments:
1566* wlandev wlan device structure
1567* msgp ptr to msg buffer
1568*
1569* Returns:
1570* 0 success and done
1571* <0 success, but we're waiting for something to finish.
1572* >0 an error occurred while handling the message.
1573* Side effects:
1574*
1575* Call context:
1576* process thread (usually)
1577* interrupt
1578----------------------------------------------------------------*/
1579int prism2mgmt_enable(wlandevice_t *wlandev, void *msgp)
1580{
1581 int result = 0;
1582 hfa384x_t *hw = wlandev->priv;
1583 p80211msg_p2req_enable_t *msg = msgp;
1584 DBFENTER;
1585
1586 if (!hw->ap) {
1587
1588 /*** STATION ***/
1589
1590 /* Ad-Hoc not quite supported on Prism2 */
1591 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1592 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1593 goto done;
1594 }
1595
1596 /*** ACCESS POINT ***/
1597
1598 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1599
1600 /* Is the tertiary loaded? */
1601 if ( hw->cap_sup_sta.id != 5) {
1602 WLAN_LOG_ERROR("AP driver failed to detect AP firmware.\n");
1603 goto failed;
1604 }
1605
1606 /* Set the macmode so the frame setup code knows what to do */
1607 wlandev->macmode = WLAN_MACMODE_ESS_AP;
1608
1609 /* Set the BSSID to the same as our MAC */
1610 memcpy( wlandev->bssid, wlandev->netdev->dev_addr, WLAN_BSSID_LEN);
1611
1612 /* Enable the Port */
1613 result = hfa384x_drvr_enable(hw, 0);
1614 if ( result ) {
1615 WLAN_LOG_ERROR("Enable macport failed, result=%d.\n", result);
1616 goto failed;
1617 }
1618
1619 msg->resultcode.data = P80211ENUM_resultcode_success;
1620
1621 goto done;
1622failed:
1623 msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
1624
1625done:
1626 result = 0;
1627
1628 DBFEXIT;
1629 return result;
1630}
1631
1632
1633/*----------------------------------------------------------------
1634* prism2mgmt_readpda
1635*
1636* Collect the PDA data and put it in the message.
1637*
1638* Arguments:
1639* wlandev wlan device structure
1640* msgp ptr to msg buffer
1641*
1642* Returns:
1643* 0 success and done
1644* <0 success, but we're waiting for something to finish.
1645* >0 an error occurred while handling the message.
1646* Side effects:
1647*
1648* Call context:
1649* process thread (usually)
1650----------------------------------------------------------------*/
1651int prism2mgmt_readpda(wlandevice_t *wlandev, void *msgp)
1652{
1653 hfa384x_t *hw = wlandev->priv;
1654 p80211msg_p2req_readpda_t *msg = msgp;
1655 int result;
1656 DBFENTER;
1657
1658 /* We only support collecting the PDA when in the FWLOAD
1659 * state.
1660 */
1661 if (wlandev->msdstate != WLAN_MSD_FWLOAD) {
1662 WLAN_LOG_ERROR(
1663 "PDA may only be read "
1664 "in the fwload state.\n");
1665 msg->resultcode.data =
1666 P80211ENUM_resultcode_implementation_failure;
1667 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1668 } else {
1669 /* Call drvr_readpda(), it handles the auxport enable
1670 * and validating the returned PDA.
1671 */
1672 result = hfa384x_drvr_readpda(
1673 hw,
1674 msg->pda.data,
1675 HFA384x_PDA_LEN_MAX);
1676 if (result) {
1677 WLAN_LOG_ERROR(
1678 "hfa384x_drvr_readpda() failed, "
1679 "result=%d\n",
1680 result);
1681
1682 msg->resultcode.data =
1683 P80211ENUM_resultcode_implementation_failure;
1684 msg->resultcode.status =
1685 P80211ENUM_msgitem_status_data_ok;
1686 DBFEXIT;
1687 return 0;
1688 }
1689 msg->pda.status = P80211ENUM_msgitem_status_data_ok;
1690 msg->resultcode.data = P80211ENUM_resultcode_success;
1691 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1692 }
1693
1694 DBFEXIT;
1695 return 0;
1696}
1697
1698/*----------------------------------------------------------------
1699* prism2mgmt_readcis
1700*
1701* Collect the CIS data and put it in the message.
1702*
1703* Arguments:
1704* wlandev wlan device structure
1705* msgp ptr to msg buffer
1706*
1707* Returns:
1708* 0 success and done
1709* <0 success, but we're waiting for something to finish.
1710* >0 an error occurred while handling the message.
1711* Side effects:
1712*
1713* Call context:
1714* process thread (usually)
1715----------------------------------------------------------------*/
1716int prism2mgmt_readcis(wlandevice_t *wlandev, void *msgp)
1717{
1718 int result;
1719 hfa384x_t *hw = wlandev->priv;
1720 p80211msg_p2req_readcis_t *msg = msgp;
1721
1722 DBFENTER;
1723
1724 memset(msg->cis.data, 0, sizeof(msg->cis.data));
1725
1726 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_CIS,
1727 msg->cis.data, HFA384x_RID_CIS_LEN);
1728 if ( result ) {
1729 WLAN_LOG_INFO("prism2mgmt_readcis: read(cis) failed.\n");
1730 msg->cis.status = P80211ENUM_msgitem_status_no_value;
1731 msg->resultcode.data = P80211ENUM_resultcode_implementation_failure;
1732
1733 }
1734 else {
1735 msg->cis.status = P80211ENUM_msgitem_status_data_ok;
1736 msg->resultcode.data = P80211ENUM_resultcode_success;
1737 }
1738
1739 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1740
1741 DBFEXIT;
1742 return 0;
1743}
1744
1745/*----------------------------------------------------------------
1746* prism2mgmt_auxport_state
1747*
1748* Enables/Disables the card's auxiliary port. Should be called
1749* before and after a sequence of auxport_read()/auxport_write()
1750* calls.
1751*
1752* Arguments:
1753* wlandev wlan device structure
1754* msgp ptr to msg buffer
1755*
1756* Returns:
1757* 0 success and done
1758* <0 success, but we're waiting for something to finish.
1759* >0 an error occurred while handling the message.
1760* Side effects:
1761*
1762* Call context:
1763* process thread (usually)
1764----------------------------------------------------------------*/
1765int prism2mgmt_auxport_state(wlandevice_t *wlandev, void *msgp)
1766{
1767 p80211msg_p2req_auxport_state_t *msg = msgp;
1768
1769#if (WLAN_HOSTIF != WLAN_USB)
1770 hfa384x_t *hw = wlandev->priv;
1771 DBFENTER;
1772
1773 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1774 if (msg->enable.data == P80211ENUM_truth_true) {
1775 if ( hfa384x_cmd_aux_enable(hw, 0) ) {
1776 msg->resultcode.data = P80211ENUM_resultcode_implementation_failure;
1777 } else {
1778 msg->resultcode.data = P80211ENUM_resultcode_success;
1779 }
1780 } else {
1781 hfa384x_cmd_aux_disable(hw);
1782 msg->resultcode.data = P80211ENUM_resultcode_success;
1783 }
1784
1785#else /* !USB */
1786 DBFENTER;
1787
1788 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1789 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1790
1791#endif /* WLAN_HOSTIF != WLAN_USB */
1792
1793 DBFEXIT;
1794 return 0;
1795}
1796
1797
1798/*----------------------------------------------------------------
1799* prism2mgmt_auxport_read
1800*
1801* Copies data from the card using the auxport. The auxport must
1802* have previously been enabled. Note: this is not the way to
1803* do downloads, see the [ram|flash]dl functions.
1804*
1805* Arguments:
1806* wlandev wlan device structure
1807* msgp ptr to msg buffer
1808*
1809* Returns:
1810* 0 success and done
1811* <0 success, but we're waiting for something to finish.
1812* >0 an error occurred while handling the message.
1813* Side effects:
1814*
1815* Call context:
1816* process thread (usually)
1817----------------------------------------------------------------*/
1818int prism2mgmt_auxport_read(wlandevice_t *wlandev, void *msgp)
1819{
1820#if (WLAN_HOSTIF != WLAN_USB)
1821 hfa384x_t *hw = wlandev->priv;
1822 p80211msg_p2req_auxport_read_t *msg = msgp;
1823 UINT32 addr;
1824 UINT32 len;
1825 UINT8* buf;
1826 UINT32 maxlen = sizeof(msg->data.data);
1827 DBFENTER;
1828
1829 if ( hw->auxen ) {
1830 addr = msg->addr.data;
1831 len = msg->len.data;
1832 buf = msg->data.data;
1833 if ( len <= maxlen ) { /* max read/write size */
1834 hfa384x_copy_from_aux(hw, addr, HFA384x_AUX_CTL_EXTDS, buf, len);
1835 msg->resultcode.data = P80211ENUM_resultcode_success;
1836 } else {
1837 WLAN_LOG_DEBUG(1,"Attempt to read > maxlen from auxport.\n");
1838 msg->resultcode.data = P80211ENUM_resultcode_refused;
1839 }
1840
1841 } else {
1842 msg->resultcode.data = P80211ENUM_resultcode_refused;
1843 }
1844 msg->data.status = P80211ENUM_msgitem_status_data_ok;
1845 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1846
1847 DBFEXIT;
1848 return 0;
1849#else
1850 DBFENTER;
1851
1852 WLAN_LOG_ERROR("prism2mgmt_auxport_read: Not supported on USB.\n");
1853
1854 DBFEXIT;
1855 return 0;
1856#endif
1857}
1858
1859
1860/*----------------------------------------------------------------
1861* prism2mgmt_auxport_write
1862*
1863* Copies data to the card using the auxport. The auxport must
1864* have previously been enabled. Note: this is not the way to
1865* do downloads, see the [ram|flash]dl functions.
1866*
1867* Arguments:
1868* wlandev wlan device structure
1869* msgp ptr to msg buffer
1870*
1871* Returns:
1872* 0 success and done
1873* <0 success, but we're waiting for something to finish.
1874* >0 an error occurred while handling the message.
1875* Side effects:
1876*
1877* Call context:
1878* process thread (usually)
1879----------------------------------------------------------------*/
1880int prism2mgmt_auxport_write(wlandevice_t *wlandev, void *msgp)
1881{
1882#if (WLAN_HOSTIF != WLAN_USB)
1883 hfa384x_t *hw = wlandev->priv;
1884 p80211msg_p2req_auxport_write_t *msg = msgp;
1885 UINT32 addr;
1886 UINT32 len;
1887 UINT8* buf;
1888 UINT32 maxlen = sizeof(msg->data.data);
1889 DBFENTER;
1890
1891 if ( hw->auxen ) {
1892 addr = msg->addr.data;
1893 len = msg->len.data;
1894 buf = msg->data.data;
1895 if ( len <= maxlen ) { /* max read/write size */
1896 hfa384x_copy_to_aux(hw, addr, HFA384x_AUX_CTL_EXTDS, buf, len);
1897 } else {
1898 WLAN_LOG_DEBUG(1,"Attempt to write > maxlen from auxport.\n");
1899 msg->resultcode.data = P80211ENUM_resultcode_refused;
1900 }
1901
1902 } else {
1903 msg->resultcode.data = P80211ENUM_resultcode_refused;
1904 }
1905 msg->data.status = P80211ENUM_msgitem_status_data_ok;
1906 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1907
1908 DBFEXIT;
1909 return 0;
1910#else
1911 DBFENTER;
1912 WLAN_LOG_ERROR("prism2mgmt_auxport_read: Not supported on USB.\n");
1913 DBFEXIT;
1914 return 0;
1915#endif
1916}
1917
1918/*----------------------------------------------------------------
1919* prism2mgmt_low_level
1920*
1921* Puts the card into the desired test mode.
1922*
1923* Arguments:
1924* wlandev wlan device structure
1925* msgp ptr to msg buffer
1926*
1927* Returns:
1928* 0 success and done
1929* <0 success, but we're waiting for something to finish.
1930* >0 an error occurred while handling the message.
1931* Side effects:
1932*
1933* Call context:
1934* process thread (usually)
1935----------------------------------------------------------------*/
1936int prism2mgmt_low_level(wlandevice_t *wlandev, void *msgp)
1937{
1938 hfa384x_t *hw = wlandev->priv;
1939 p80211msg_p2req_low_level_t *msg = msgp;
1940 hfa384x_metacmd_t cmd;
1941 DBFENTER;
1942
1943 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1944
1945 /* call some routine to execute the test command */
1946 cmd.cmd = (UINT16) msg->command.data;
1947 cmd.parm0 = (UINT16) msg->param0.data;
1948 cmd.parm1 = (UINT16) msg->param1.data;
1949 cmd.parm2 = (UINT16) msg->param2.data;
1950
1951 hfa384x_drvr_low_level(hw,&cmd);
1952
1953 msg->resp0.data = (UINT32) cmd.result.resp0;
1954 msg->resp1.data = (UINT32) cmd.result.resp1;
1955 msg->resp2.data = (UINT32) cmd.result.resp2;
1956
1957 msg->resultcode.data = P80211ENUM_resultcode_success;
1958
1959 DBFEXIT;
1960 return 0;
1961}
1962
1963/*----------------------------------------------------------------
1964* prism2mgmt_test_command
1965*
1966* Puts the card into the desired test mode.
1967*
1968* Arguments:
1969* wlandev wlan device structure
1970* msgp ptr to msg buffer
1971*
1972* Returns:
1973* 0 success and done
1974* <0 success, but we're waiting for something to finish.
1975* >0 an error occurred while handling the message.
1976* Side effects:
1977*
1978* Call context:
1979* process thread (usually)
1980----------------------------------------------------------------*/
1981int prism2mgmt_test_command(wlandevice_t *wlandev, void *msgp)
1982{
1983 hfa384x_t *hw = wlandev->priv;
1984 p80211msg_p2req_test_command_t *msg = msgp;
1985 hfa384x_metacmd_t cmd;
1986
1987 DBFENTER;
1988
1989 cmd.cmd = ((UINT16) msg->testcode.data) << 8 | 0x38;
1990 cmd.parm0 = (UINT16) msg->testparam.data;
1991 cmd.parm1 = 0;
1992 cmd.parm2 = 0;
1993
1994 /* call some routine to execute the test command */
1995
1996 hfa384x_drvr_low_level(hw,&cmd);
1997
1998 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1999 msg->resultcode.data = P80211ENUM_resultcode_success;
2000
2001 msg->status.status = P80211ENUM_msgitem_status_data_ok;
2002 msg->status.data = cmd.result.status;
2003 msg->resp0.status = P80211ENUM_msgitem_status_data_ok;
2004 msg->resp0.data = cmd.result.resp0;
2005 msg->resp1.status = P80211ENUM_msgitem_status_data_ok;
2006 msg->resp1.data = cmd.result.resp1;
2007 msg->resp2.status = P80211ENUM_msgitem_status_data_ok;
2008 msg->resp2.data = cmd.result.resp2;
2009
2010 DBFEXIT;
2011 return 0;
2012}
2013
2014
2015/*----------------------------------------------------------------
2016* prism2mgmt_mmi_read
2017*
2018* Read from one of the MMI registers.
2019*
2020* Arguments:
2021* wlandev wlan device structure
2022* msgp ptr to msg buffer
2023*
2024* Returns:
2025* 0 success and done
2026* <0 success, but we're waiting for something to finish.
2027* >0 an error occurred while handling the message.
2028* Side effects:
2029*
2030* Call context:
2031* process thread (usually)
2032----------------------------------------------------------------*/
2033int prism2mgmt_mmi_read(wlandevice_t *wlandev, void *msgp)
2034{
2035 hfa384x_t *hw = wlandev->priv;
2036 p80211msg_p2req_mmi_read_t *msg = msgp;
2037 UINT32 resp = 0;
2038
2039 DBFENTER;
2040
2041 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2042
2043 /* call some routine to execute the test command */
2044
2045 hfa384x_drvr_mmi_read(hw, msg->addr.data, &resp);
2046
2047 /* I'm not sure if this is "architecturally" correct, but it
2048 is expedient. */
2049
2050 msg->value.status = P80211ENUM_msgitem_status_data_ok;
2051 msg->value.data = resp;
2052 msg->resultcode.data = P80211ENUM_resultcode_success;
2053
2054 DBFEXIT;
2055 return 0;
2056}
2057
2058/*----------------------------------------------------------------
2059* prism2mgmt_mmi_write
2060*
2061* Write a data value to one of the MMI registers.
2062*
2063* Arguments:
2064* wlandev wlan device structure
2065* msgp ptr to msg buffer
2066*
2067* Returns:
2068* 0 success and done
2069* <0 success, but we're waiting for something to finish.
2070* >0 an error occurred while handling the message.
2071* Side effects:
2072*
2073* Call context:
2074* process thread (usually)
2075----------------------------------------------------------------*/
2076int prism2mgmt_mmi_write(wlandevice_t *wlandev, void *msgp)
2077{
2078 hfa384x_t *hw = wlandev->priv;
2079 p80211msg_p2req_mmi_write_t *msg = msgp;
2080 DBFENTER;
2081
2082 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2083
2084 /* call some routine to execute the test command */
2085
2086 hfa384x_drvr_mmi_write(hw, msg->addr.data, msg->data.data);
2087
2088 msg->resultcode.data = P80211ENUM_resultcode_success;
2089
2090 DBFEXIT;
2091 return 0;
2092}
2093
2094/*----------------------------------------------------------------
2095* prism2mgmt_ramdl_state
2096*
2097* Establishes the beginning/end of a card RAM download session.
2098*
2099* It is expected that the ramdl_write() function will be called
2100* one or more times between the 'enable' and 'disable' calls to
2101* this function.
2102*
2103* Note: This function should not be called when a mac comm port
2104* is active.
2105*
2106* Arguments:
2107* wlandev wlan device structure
2108* msgp ptr to msg buffer
2109*
2110* Returns:
2111* 0 success and done
2112* <0 success, but we're waiting for something to finish.
2113* >0 an error occurred while handling the message.
2114* Side effects:
2115*
2116* Call context:
2117* process thread (usually)
2118----------------------------------------------------------------*/
2119int prism2mgmt_ramdl_state(wlandevice_t *wlandev, void *msgp)
2120{
2121 hfa384x_t *hw = wlandev->priv;
2122 p80211msg_p2req_ramdl_state_t *msg = msgp;
2123 DBFENTER;
2124
2125 if (wlandev->msdstate != WLAN_MSD_FWLOAD) {
2126 WLAN_LOG_ERROR(
2127 "ramdl_state(): may only be called "
2128 "in the fwload state.\n");
2129 msg->resultcode.data =
2130 P80211ENUM_resultcode_implementation_failure;
2131 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2132 DBFEXIT;
2133 return 0;
2134 }
2135
2136 /*
2137 ** Note: Interrupts are locked out if this is an AP and are NOT
2138 ** locked out if this is a station.
2139 */
2140
2141 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2142 if ( msg->enable.data == P80211ENUM_truth_true ) {
2143 if ( hfa384x_drvr_ramdl_enable(hw, msg->exeaddr.data) ) {
2144 msg->resultcode.data = P80211ENUM_resultcode_implementation_failure;
2145 } else {
2146 msg->resultcode.data = P80211ENUM_resultcode_success;
2147 }
2148 } else {
2149 hfa384x_drvr_ramdl_disable(hw);
2150 msg->resultcode.data = P80211ENUM_resultcode_success;
2151 }
2152
2153 DBFEXIT;
2154 return 0;
2155}
2156
2157
2158/*----------------------------------------------------------------
2159* prism2mgmt_ramdl_write
2160*
2161* Writes a buffer to the card RAM using the download state. This
2162* is for writing code to card RAM. To just read or write raw data
2163* use the aux functions.
2164*
2165* Arguments:
2166* wlandev wlan device structure
2167* msgp ptr to msg buffer
2168*
2169* Returns:
2170* 0 success and done
2171* <0 success, but we're waiting for something to finish.
2172* >0 an error occurred while handling the message.
2173* Side effects:
2174*
2175* Call context:
2176* process thread (usually)
2177----------------------------------------------------------------*/
2178int prism2mgmt_ramdl_write(wlandevice_t *wlandev, void *msgp)
2179{
2180 hfa384x_t *hw = wlandev->priv;
2181 p80211msg_p2req_ramdl_write_t *msg = msgp;
2182 UINT32 addr;
2183 UINT32 len;
2184 UINT8 *buf;
2185 DBFENTER;
2186
2187 if (wlandev->msdstate != WLAN_MSD_FWLOAD) {
2188 WLAN_LOG_ERROR(
2189 "ramdl_write(): may only be called "
2190 "in the fwload state.\n");
2191 msg->resultcode.data =
2192 P80211ENUM_resultcode_implementation_failure;
2193 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2194 DBFEXIT;
2195 return 0;
2196 }
2197
2198 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2199 /* first validate the length */
2200 if ( msg->len.data > sizeof(msg->data.data) ) {
2201 msg->resultcode.status = P80211ENUM_resultcode_invalid_parameters;
2202 return 0;
2203 }
2204 /* call the hfa384x function to do the write */
2205 addr = msg->addr.data;
2206 len = msg->len.data;
2207 buf = msg->data.data;
2208 if ( hfa384x_drvr_ramdl_write(hw, addr, buf, len) ) {
2209 msg->resultcode.data = P80211ENUM_resultcode_refused;
2210
2211 }
2212 msg->resultcode.data = P80211ENUM_resultcode_success;
2213
2214 DBFEXIT;
2215 return 0;
2216}
2217
2218
2219/*----------------------------------------------------------------
2220* prism2mgmt_flashdl_state
2221*
2222* Establishes the beginning/end of a card Flash download session.
2223*
2224* It is expected that the flashdl_write() function will be called
2225* one or more times between the 'enable' and 'disable' calls to
2226* this function.
2227*
2228* Note: This function should not be called when a mac comm port
2229* is active.
2230*
2231* Arguments:
2232* wlandev wlan device structure
2233* msgp ptr to msg buffer
2234*
2235* Returns:
2236* 0 success and done
2237* <0 success, but we're waiting for something to finish.
2238* >0 an error occurred while handling the message.
2239* Side effects:
2240*
2241* Call context:
2242* process thread (usually)
2243----------------------------------------------------------------*/
2244int prism2mgmt_flashdl_state(wlandevice_t *wlandev, void *msgp)
2245{
2246 int result = 0;
2247 hfa384x_t *hw = wlandev->priv;
2248 p80211msg_p2req_flashdl_state_t *msg = msgp;
2249 DBFENTER;
2250
2251 if (wlandev->msdstate != WLAN_MSD_FWLOAD) {
2252 WLAN_LOG_ERROR(
2253 "flashdl_state(): may only be called "
2254 "in the fwload state.\n");
2255 msg->resultcode.data =
2256 P80211ENUM_resultcode_implementation_failure;
2257 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2258 DBFEXIT;
2259 return 0;
2260 }
2261
2262 /*
2263 ** Note: Interrupts are locked out if this is an AP and are NOT
2264 ** locked out if this is a station.
2265 */
2266
2267 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2268 if ( msg->enable.data == P80211ENUM_truth_true ) {
2269 if ( hfa384x_drvr_flashdl_enable(hw) ) {
2270 msg->resultcode.data = P80211ENUM_resultcode_implementation_failure;
2271 } else {
2272 msg->resultcode.data = P80211ENUM_resultcode_success;
2273 }
2274 } else {
2275 hfa384x_drvr_flashdl_disable(hw);
2276 msg->resultcode.data = P80211ENUM_resultcode_success;
2277 /* NOTE: At this point, the MAC is in the post-reset
2278 * state and the driver is in the fwload state.
2279 * We need to get the MAC back into the fwload
2280 * state. To do this, we set the nsdstate to HWPRESENT
2281 * and then call the ifstate function to redo everything
2282 * that got us into the fwload state.
2283 */
2284 wlandev->msdstate = WLAN_MSD_HWPRESENT;
2285 result = prism2sta_ifstate(wlandev, P80211ENUM_ifstate_fwload);
2286 if (result != P80211ENUM_resultcode_success) {
2287 WLAN_LOG_ERROR("prism2sta_ifstate(fwload) failed,"
2288 "P80211ENUM_resultcode=%d\n", result);
2289 msg->resultcode.data =
2290 P80211ENUM_resultcode_implementation_failure;
2291 result = -1;
2292 }
2293 }
2294
2295 DBFEXIT;
2296 return 0;
2297}
2298
2299
2300/*----------------------------------------------------------------
2301* prism2mgmt_flashdl_write
2302*
2303*
2304*
2305* Arguments:
2306* wlandev wlan device structure
2307* msgp ptr to msg buffer
2308*
2309* Returns:
2310* 0 success and done
2311* <0 success, but we're waiting for something to finish.
2312* >0 an error occurred while handling the message.
2313* Side effects:
2314*
2315* Call context:
2316* process thread (usually)
2317----------------------------------------------------------------*/
2318int prism2mgmt_flashdl_write(wlandevice_t *wlandev, void *msgp)
2319{
2320 hfa384x_t *hw = wlandev->priv;
2321 p80211msg_p2req_flashdl_write_t *msg = msgp;
2322 UINT32 addr;
2323 UINT32 len;
2324 UINT8 *buf;
2325 DBFENTER;
2326
2327 if (wlandev->msdstate != WLAN_MSD_FWLOAD) {
2328 WLAN_LOG_ERROR(
2329 "flashdl_write(): may only be called "
2330 "in the fwload state.\n");
2331 msg->resultcode.data =
2332 P80211ENUM_resultcode_implementation_failure;
2333 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2334 DBFEXIT;
2335 return 0;
2336 }
2337
2338 /*
2339 ** Note: Interrupts are locked out if this is an AP and are NOT
2340 ** locked out if this is a station.
2341 */
2342
2343 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2344 /* first validate the length */
2345 if ( msg->len.data > sizeof(msg->data.data) ) {
2346 msg->resultcode.status =
2347 P80211ENUM_resultcode_invalid_parameters;
2348 return 0;
2349 }
2350 /* call the hfa384x function to do the write */
2351 addr = msg->addr.data;
2352 len = msg->len.data;
2353 buf = msg->data.data;
2354 if ( hfa384x_drvr_flashdl_write(hw, addr, buf, len) ) {
2355 msg->resultcode.data = P80211ENUM_resultcode_refused;
2356
2357 }
2358 msg->resultcode.data = P80211ENUM_resultcode_success;
2359
2360 DBFEXIT;
2361 return 0;
2362}
2363
2364
2365/*----------------------------------------------------------------
2366* prism2mgmt_dump_state
2367*
2368* Dumps the driver's and hardware's current state via the kernel
2369* log at KERN_NOTICE level.
2370*
2371* Arguments:
2372* wlandev wlan device structure
2373* msgp ptr to msg buffer
2374*
2375* Returns:
2376* 0 success and done
2377* <0 success, but we're waiting for something to finish.
2378* >0 an error occurred while handling the message.
2379* Side effects:
2380*
2381* Call context:
2382* process thread (usually)
2383----------------------------------------------------------------*/
2384int prism2mgmt_dump_state(wlandevice_t *wlandev, void *msgp)
2385{
2386 p80211msg_p2req_dump_state_t *msg = msgp;
2387 int result = 0;
2388
2389#if (WLAN_HOSTIF != WLAN_USB)
2390 hfa384x_t *hw = wlandev->priv;
2391 UINT16 auxbuf[15];
2392 DBFENTER;
2393
2394 WLAN_LOG_NOTICE("prism2 driver and hardware state:\n");
2395 if ( (result = hfa384x_cmd_aux_enable(hw, 0)) ) {
2396 WLAN_LOG_ERROR("aux_enable failed, result=%d\n", result);
2397 goto failed;
2398 }
2399 hfa384x_copy_from_aux(hw,
2400 0x01e2,
2401 HFA384x_AUX_CTL_EXTDS,
2402 auxbuf,
2403 sizeof(auxbuf));
2404 hfa384x_cmd_aux_disable(hw);
2405 WLAN_LOG_NOTICE(" cmac: FreeBlocks=%d\n", auxbuf[5]);
2406 WLAN_LOG_NOTICE(" cmac: IntEn=0x%02x EvStat=0x%02x\n",
2407 hfa384x_getreg(hw, HFA384x_INTEN),
2408 hfa384x_getreg(hw, HFA384x_EVSTAT));
2409
2410 #ifdef USE_FID_STACK
2411 WLAN_LOG_NOTICE(" drvr: txfid_top=%d stacksize=%d\n",
2412 hw->txfid_top,HFA384x_DRVR_FIDSTACKLEN_MAX);
2413 #else
2414 WLAN_LOG_NOTICE(" drvr: txfid_head=%d txfid_tail=%d txfid_N=%d\n",
2415 hw->txfid_head, hw->txfid_tail, hw->txfid_N);
2416 #endif
2417
2418 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2419 msg->resultcode.data = P80211ENUM_resultcode_success;
2420
2421#else /* (WLAN_HOSTIF == WLAN_USB) */
2422
2423 DBFENTER;
2424
2425 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2426 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2427 goto failed;
2428
2429#endif /* (WLAN_HOSTIF != WLAN_USB) */
2430
2431failed:
2432 DBFEXIT;
2433 return result;
2434}
2435
2436/*----------------------------------------------------------------
2437* prism2mgmt_channel_info
2438*
2439* Issues a ChannelInfoRequest.
2440*
2441* Arguments:
2442* wlandev wlan device structure
2443* msgp ptr to msg buffer
2444*
2445* Returns:
2446* 0 success and done
2447* <0 success, but we're waiting for something to finish.
2448* >0 an error occurred while handling the message.
2449* Side effects:
2450*
2451* Call context:
2452* process thread (usually)
2453----------------------------------------------------------------*/
2454int prism2mgmt_channel_info(wlandevice_t *wlandev, void *msgp)
2455{
2456 p80211msg_p2req_channel_info_t *msg=msgp;
2457 hfa384x_t *hw = wlandev->priv;
2458 int result, i, n=0;
2459 UINT16 channel_mask=0;
2460 hfa384x_ChannelInfoRequest_data_t chinforeq;
2461 // unsigned long now;
2462
2463 DBFENTER;
2464
2465 if (!hw->ap) {
2466
2467 /*** STATION ***/
2468
2469 /* Not supported in STA f/w */
2470 P80211_SET_INT(msg->resultcode, P80211ENUM_resultcode_not_supported);
2471 goto done;
2472 }
2473
2474 /*** ACCESS POINT ***/
2475
2476#define CHINFO_TIMEOUT 2
2477
2478 P80211_SET_INT(msg->resultcode, P80211ENUM_resultcode_success);
2479
2480 /* setting default value for channellist = all channels */
2481 if (!msg->channellist.data) {
2482 P80211_SET_INT(msg->channellist, 0x00007FFE);
2483 }
2484 /* setting default value for channeldwelltime = 100 ms */
2485 if (!msg->channeldwelltime.data) {
2486 P80211_SET_INT(msg->channeldwelltime, 100);
2487 }
2488 channel_mask = (UINT16) (msg->channellist.data >> 1);
2489 for (i=0, n=0; i < 14; i++) {
2490 if (channel_mask & (1<<i)) {
2491 n++;
2492 }
2493 }
2494 P80211_SET_INT(msg->numchinfo, n);
2495 chinforeq.channelList = host2hfa384x_16(channel_mask);
2496 chinforeq.channelDwellTime = host2hfa384x_16(msg->channeldwelltime.data);
2497
2498 atomic_set(&hw->channel_info.done, 1);
2499
2500 result = hfa384x_drvr_setconfig( hw, HFA384x_RID_CHANNELINFOREQUEST,
2501 &chinforeq, HFA384x_RID_CHANNELINFOREQUEST_LEN);
2502 if ( result ) {
2503 WLAN_LOG_ERROR("setconfig(CHANNELINFOREQUEST) failed. result=%d\n",
2504 result);
2505 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2506 goto done;
2507 }
2508 /*
2509 now = jiffies;
2510 while (atomic_read(&hw->channel_info.done) != 1) {
2511 if ((jiffies - now) > CHINFO_TIMEOUT*HZ) {
2512 WLAN_LOG_NOTICE("ChannelInfo results not received in %d seconds, aborting.\n",
2513 CHINFO_TIMEOUT);
2514 msg->resultcode.data = P80211ENUM_resultcode_timeout;
2515 goto done;
2516 }
2517 current->state = TASK_INTERRUPTIBLE;
2518 schedule_timeout(HZ/4);
2519 current->state = TASK_RUNNING;
2520 }
2521 */
2522
2523done:
2524
2525 DBFEXIT;
2526 return 0;
2527}
2528
2529/*----------------------------------------------------------------
2530* prism2mgmt_channel_info_results
2531*
2532* Returns required ChannelInfo result.
2533*
2534* Arguments:
2535* wlandev wlan device structure
2536* msgp ptr to msg buffer
2537*
2538* Returns:
2539* 0 success and done
2540* <0 success, but we're waiting for something to finish.
2541* >0 an error occurred while handling the message.
2542* Side effects:
2543*
2544* Call context:
2545* process thread (usually)
2546----------------------------------------------------------------*/
2547int prism2mgmt_channel_info_results(wlandevice_t *wlandev, void *msgp)
2548{
2549 hfa384x_t *hw = wlandev->priv;
2550
2551 p80211msg_p2req_channel_info_results_t *msg=msgp;
2552 int result=0;
2553 int channel;
2554
2555 DBFENTER;
2556
2557 if (!hw->ap) {
2558
2559 /*** STATION ***/
2560
2561 /* Not supported in STA f/w */
2562 P80211_SET_INT(msg->resultcode, P80211ENUM_resultcode_not_supported);
2563 goto done;
2564 }
2565
2566 /*** ACCESS POINT ***/
2567
2568 switch (atomic_read(&hw->channel_info.done)) {
2569 case 0: msg->resultcode.status = P80211ENUM_msgitem_status_no_value;
2570 goto done;
2571 case 1: msg->resultcode.status = P80211ENUM_msgitem_status_incomplete_itemdata;
2572 goto done;
2573 }
2574
2575 P80211_SET_INT(msg->resultcode, P80211ENUM_resultcode_success);
2576 channel=msg->channel.data-1;
2577
2578 if (channel < 0 || ! (hw->channel_info.results.scanchannels & 1<<channel) ) {
2579 msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
2580 goto done;
2581 }
2582 WLAN_LOG_DEBUG(2, "chinfo_results: channel %d, avg/peak level=%d/%d dB, active=%d\n",
2583 channel+1,
2584 hw->channel_info.results.result[channel].anl,
2585 hw->channel_info.results.result[channel].pnl,
2586 hw->channel_info.results.result[channel].active
2587 );
2588 P80211_SET_INT(msg->avgnoiselevel, hw->channel_info.results.result[channel].anl);
2589 P80211_SET_INT(msg->peaknoiselevel, hw->channel_info.results.result[channel].pnl);
2590 P80211_SET_INT(msg->bssactive, hw->channel_info.results.result[channel].active &
2591 HFA384x_CHINFORESULT_BSSACTIVE
2592 ? P80211ENUM_truth_true
2593 : P80211ENUM_truth_false) ;
2594 P80211_SET_INT(msg->pcfactive, hw->channel_info.results.result[channel].active &
2595 HFA384x_CHINFORESULT_PCFACTIVE
2596 ? P80211ENUM_truth_true
2597 : P80211ENUM_truth_false) ;
2598
2599done:
2600 DBFEXIT;
2601 return result;
2602}
2603
2604
2605/*----------------------------------------------------------------
2606* prism2mgmt_autojoin
2607*
2608* Associate with an ESS.
2609*
2610* Arguments:
2611* wlandev wlan device structure
2612* msgp ptr to msg buffer
2613*
2614* Returns:
2615* 0 success and done
2616* <0 success, but we're waiting for something to finish.
2617* >0 an error occurred while handling the message.
2618* Side effects:
2619*
2620* Call context:
2621* process thread (usually)
2622* interrupt
2623----------------------------------------------------------------*/
2624int prism2mgmt_autojoin(wlandevice_t *wlandev, void *msgp)
2625{
2626 hfa384x_t *hw = wlandev->priv;
2627 int result = 0;
2628 UINT16 reg;
2629 UINT16 port_type;
2630 p80211msg_lnxreq_autojoin_t *msg = msgp;
2631 p80211pstrd_t *pstr;
2632 UINT8 bytebuf[256];
2633 hfa384x_bytestr_t *p2bytestr = (hfa384x_bytestr_t*)bytebuf;
2634 DBFENTER;
2635
2636 wlandev->macmode = WLAN_MACMODE_NONE;
2637
2638 /* Set the SSID */
2639 memcpy(&wlandev->ssid, &msg->ssid.data, sizeof(msg->ssid.data));
2640
2641 if (hw->ap) {
2642
2643 /*** ACCESS POINT ***/
2644
2645 /* Never supported on AP */
2646 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2647 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2648 goto done;
2649 }
2650
2651 /* Disable the Port */
2652 hfa384x_drvr_disable(hw, 0);
2653
2654 /*** STATION ***/
2655 /* Set the TxRates */
2656 hfa384x_drvr_setconfig16(hw, HFA384x_RID_TXRATECNTL, 0x000f);
2657
2658 /* Set the auth type */
2659 if ( msg->authtype.data == P80211ENUM_authalg_sharedkey ) {
2660 reg = HFA384x_CNFAUTHENTICATION_SHAREDKEY;
2661 } else {
2662 reg = HFA384x_CNFAUTHENTICATION_OPENSYSTEM;
2663 }
2664 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFAUTHENTICATION, reg);
2665
2666 /* Set the ssid */
2667 memset(bytebuf, 0, 256);
2668 pstr = (p80211pstrd_t*)&(msg->ssid.data);
2669 prism2mgmt_pstr2bytestr(p2bytestr, pstr);
2670 result = hfa384x_drvr_setconfig(
2671 hw, HFA384x_RID_CNFDESIREDSSID,
2672 bytebuf, HFA384x_RID_CNFDESIREDSSID_LEN);
2673#if 0
2674 /* we can use the new-fangled auto-unknown mode if the firmware
2675 is 1.3.3 or newer */
2676 if (HFA384x_FIRMARE_VERSION(hw->ident_sta_fw.major,
2677 hw->ident_sta_fw.minor,
2678 hw->ident_sta_fw.variant) >=
2679 HFA384x_FIRMWARE_VERSION(1,3,3)) {
2680 /* Set up the IBSS options */
2681 reg = HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS;
2682 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CREATEIBSS, reg);
2683
2684 /* Set the PortType */
2685 port_type = HFA384x_PORTTYPE_IBSS;
2686 } else {
2687 port_type = HFA384x_PORTTYPE_BSS;
2688 }
2689#else
2690 port_type = HFA384x_PORTTYPE_BSS;
2691#endif
2692 /* Set the PortType */
2693 hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFPORTTYPE, port_type);
2694
2695 /* Enable the Port */
2696 hfa384x_drvr_enable(hw, 0);
2697
2698 /* Set the resultcode */
2699 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2700 msg->resultcode.data = P80211ENUM_resultcode_success;
2701
2702done:
2703 DBFEXIT;
2704 return result;
2705}
2706
2707
2708/*----------------------------------------------------------------
2709* prism2mgmt_wlansniff
2710*
2711* Start or stop sniffing.
2712*
2713* Arguments:
2714* wlandev wlan device structure
2715* msgp ptr to msg buffer
2716*
2717* Returns:
2718* 0 success and done
2719* <0 success, but we're waiting for something to finish.
2720* >0 an error occurred while handling the message.
2721* Side effects:
2722*
2723* Call context:
2724* process thread (usually)
2725* interrupt
2726----------------------------------------------------------------*/
2727int prism2mgmt_wlansniff(wlandevice_t *wlandev, void *msgp)
2728{
2729 int result = 0;
2730 p80211msg_lnxreq_wlansniff_t *msg = msgp;
2731
2732 hfa384x_t *hw = wlandev->priv;
2733 UINT16 word;
2734
2735 DBFENTER;
2736
2737 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
2738 switch (msg->enable.data)
2739 {
2740 case P80211ENUM_truth_false:
2741 /* Confirm that we're in monitor mode */
2742 if ( wlandev->netdev->type == ARPHRD_ETHER ) {
2743 msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
2744 result = 0;
2745 goto exit;
2746 }
2747 /* Disable monitor mode */
2748 result = hfa384x_cmd_monitor(hw, HFA384x_MONITOR_DISABLE);
2749 if ( result ) {
2750 WLAN_LOG_DEBUG(1,
2751 "failed to disable monitor mode, result=%d\n",
2752 result);
2753 goto failed;
2754 }
2755 /* Disable port 0 */
2756 result = hfa384x_drvr_disable(hw, 0);
2757 if ( result ) {
2758 WLAN_LOG_DEBUG(1,
2759 "failed to disable port 0 after sniffing, result=%d\n",
2760 result);
2761 goto failed;
2762 }
2763 /* Clear the driver state */
2764 wlandev->netdev->type = ARPHRD_ETHER;
2765
2766 /* Restore the wepflags */
2767 result = hfa384x_drvr_setconfig16(hw,
2768 HFA384x_RID_CNFWEPFLAGS,
2769 hw->presniff_wepflags);
2770 if ( result ) {
2771 WLAN_LOG_DEBUG(1,
2772 "failed to restore wepflags=0x%04x, result=%d\n",
2773 hw->presniff_wepflags,
2774 result);
2775 goto failed;
2776 }
2777
2778 /* Set the port to its prior type and enable (if necessary) */
2779 if (hw->presniff_port_type != 0 ) {
2780 word = hw->presniff_port_type;
2781 result = hfa384x_drvr_setconfig16(hw,
2782 HFA384x_RID_CNFPORTTYPE, word);
2783 if ( result ) {
2784 WLAN_LOG_DEBUG(1,
2785 "failed to restore porttype, result=%d\n",
2786 result);
2787 goto failed;
2788 }
2789
2790 /* Enable the port */
2791 result = hfa384x_drvr_enable(hw, 0);
2792 if ( result ) {
2793 WLAN_LOG_DEBUG(1, "failed to enable port to presniff setting, result=%d\n", result);
2794 goto failed;
2795 }
2796 } else {
2797 result = hfa384x_drvr_disable(hw, 0);
2798
2799 }
2800
2801 WLAN_LOG_INFO("monitor mode disabled\n");
2802 msg->resultcode.data = P80211ENUM_resultcode_success;
2803 result = 0;
2804 goto exit;
2805 break;
2806 case P80211ENUM_truth_true:
2807 /* Disable the port (if enabled), only check Port 0 */
2808 if ( hw->port_enabled[0]) {
2809 if (wlandev->netdev->type == ARPHRD_ETHER) {
2810 /* Save macport 0 state */
2811 result = hfa384x_drvr_getconfig16(hw,
2812 HFA384x_RID_CNFPORTTYPE,
2813 &(hw->presniff_port_type));
2814 if ( result ) {
2815 WLAN_LOG_DEBUG(1,"failed to read porttype, result=%d\n", result);
2816 goto failed;
2817 }
2818 /* Save the wepflags state */
2819 result = hfa384x_drvr_getconfig16(hw,
2820 HFA384x_RID_CNFWEPFLAGS,
2821 &(hw->presniff_wepflags));
2822 if ( result ) {
2823 WLAN_LOG_DEBUG(1,"failed to read wepflags, result=%d\n", result);
2824 goto failed;
2825 }
2826 hfa384x_drvr_stop(hw);
2827 result = hfa384x_drvr_start(hw);
2828 if ( result ) {
2829 WLAN_LOG_DEBUG(1,
2830 "failed to restart the card for sniffing, result=%d\n",
2831 result);
2832 goto failed;
2833 }
2834 } else {
2835 /* Disable the port */
2836 result = hfa384x_drvr_disable(hw, 0);
2837 if ( result ) {
2838 WLAN_LOG_DEBUG(1,
2839 "failed to enable port for sniffing, result=%d\n",
2840 result);
2841 goto failed;
2842 }
2843 }
2844 } else {
2845 hw->presniff_port_type = 0;
2846 }
2847
2848 /* Set the channel we wish to sniff */
2849 word = msg->channel.data;
2850 result = hfa384x_drvr_setconfig16(hw,
2851 HFA384x_RID_CNFOWNCHANNEL, word);
2852 hw->sniff_channel=word;
2853
2854 if ( result ) {
2855 WLAN_LOG_DEBUG(1,
2856 "failed to set channel %d, result=%d\n",
2857 word,
2858 result);
2859 goto failed;
2860 }
2861
2862 /* Now if we're already sniffing, we can skip the rest */
2863 if (wlandev->netdev->type != ARPHRD_ETHER) {
2864 /* Set the port type to pIbss */
2865 word = HFA384x_PORTTYPE_PSUEDOIBSS;
2866 result = hfa384x_drvr_setconfig16(hw,
2867 HFA384x_RID_CNFPORTTYPE, word);
2868 if ( result ) {
2869 WLAN_LOG_DEBUG(1,
2870 "failed to set porttype %d, result=%d\n",
2871 word,
2872 result);
2873 goto failed;
2874 }
2875 if ((msg->keepwepflags.status == P80211ENUM_msgitem_status_data_ok) && (msg->keepwepflags.data != P80211ENUM_truth_true)) {
2876 /* Set the wepflags for no decryption */
2877 word = HFA384x_WEPFLAGS_DISABLE_TXCRYPT |
2878 HFA384x_WEPFLAGS_DISABLE_RXCRYPT;
2879 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFWEPFLAGS, word);
2880 }
2881
2882 if ( result ) {
2883 WLAN_LOG_DEBUG(1,
2884 "failed to set wepflags=0x%04x, result=%d\n",
2885 word,
2886 result);
2887 goto failed;
2888 }
2889 }
2890
2891 /* Do we want to strip the FCS in monitor mode? */
2892 if ((msg->stripfcs.status == P80211ENUM_msgitem_status_data_ok) && (msg->stripfcs.data == P80211ENUM_truth_true)) {
2893 hw->sniff_fcs = 0;
2894 } else {
2895 hw->sniff_fcs = 1;
2896 }
2897
2898 /* Do we want to truncate the packets? */
2899 if (msg->packet_trunc.status == P80211ENUM_msgitem_status_data_ok) {
2900 hw->sniff_truncate = msg->packet_trunc.data;
2901 } else {
2902 hw->sniff_truncate = 0;
2903 }
2904
2905 /* Enable the port */
2906 result = hfa384x_drvr_enable(hw, 0);
2907 if ( result ) {
2908 WLAN_LOG_DEBUG(1,
2909 "failed to enable port for sniffing, result=%d\n",
2910 result);
2911 goto failed;
2912 }
2913 /* Enable monitor mode */
2914 result = hfa384x_cmd_monitor(hw, HFA384x_MONITOR_ENABLE);
2915 if ( result ) {
2916 WLAN_LOG_DEBUG(1,
2917 "failed to enable monitor mode, result=%d\n",
2918 result);
2919 goto failed;
2920 }
2921
2922 if (wlandev->netdev->type == ARPHRD_ETHER) {
2923 WLAN_LOG_INFO("monitor mode enabled\n");
2924 }
2925
2926 /* Set the driver state */
2927 /* Do we want the prism2 header? */
2928 if ((msg->prismheader.status == P80211ENUM_msgitem_status_data_ok) && (msg->prismheader.data == P80211ENUM_truth_true)) {
2929 hw->sniffhdr = 0;
2930 wlandev->netdev->type = ARPHRD_IEEE80211_PRISM;
2931 } else if ((msg->wlanheader.status == P80211ENUM_msgitem_status_data_ok) && (msg->wlanheader.data == P80211ENUM_truth_true)) {
2932 hw->sniffhdr = 1;
2933 wlandev->netdev->type = ARPHRD_IEEE80211_PRISM;
2934 } else {
2935 wlandev->netdev->type = ARPHRD_IEEE80211;
2936 }
2937
2938 msg->resultcode.data = P80211ENUM_resultcode_success;
2939 result = 0;
2940 goto exit;
2941 break;
2942 default:
2943 msg->resultcode.data = P80211ENUM_resultcode_invalid_parameters;
2944 result = 0;
2945 goto exit;
2946 break;
2947 }
2948
2949failed:
2950 msg->resultcode.data = P80211ENUM_resultcode_refused;
2951 result = 0;
2952exit:
2953
2954 DBFEXIT;
2955 return result;
2956}
diff --git a/drivers/staging/wlan-ng/prism2mgmt.h b/drivers/staging/wlan-ng/prism2mgmt.h
new file mode 100644
index 00000000000..733fd999c92
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2mgmt.h
@@ -0,0 +1,182 @@
1/* prism2mgmt.h
2*
3* Declares the mgmt command handler functions
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file contains the constants and data structures for interaction
48* with the hfa384x Wireless LAN (WLAN) Media Access Contoller (MAC).
49* The hfa384x is a portion of the Harris PRISM(tm) WLAN chipset.
50*
51* [Implementation and usage notes]
52*
53* [References]
54* CW10 Programmer's Manual v1.5
55* IEEE 802.11 D10.0
56*
57* --------------------------------------------------------------------
58*/
59
60#ifndef _PRISM2MGMT_H
61#define _PRISM2MGMT_H
62
63
64/*=============================================================*/
65/*------ Constants --------------------------------------------*/
66
67/*=============================================================*/
68/*------ Macros -----------------------------------------------*/
69
70/*=============================================================*/
71/*------ Types and their related constants --------------------*/
72
73/*=============================================================*/
74/*------ Static variable externs ------------------------------*/
75
76#if (WLAN_HOSTIF != WLAN_USB)
77extern int prism2_bap_timeout;
78extern int prism2_irq_evread_max;
79#endif
80extern int prism2_debug;
81extern int prism2_reset_holdtime;
82extern int prism2_reset_settletime;
83/*=============================================================*/
84/*--- Function Declarations -----------------------------------*/
85/*=============================================================*/
86
87UINT32
88prism2sta_ifstate(wlandevice_t *wlandev, UINT32 ifstate);
89
90void
91prism2sta_ev_dtim(wlandevice_t *wlandev);
92void
93prism2sta_ev_infdrop(wlandevice_t *wlandev);
94void
95prism2sta_ev_info(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
96void
97prism2sta_ev_txexc(wlandevice_t *wlandev, UINT16 status);
98void
99prism2sta_ev_tx(wlandevice_t *wlandev, UINT16 status);
100void
101prism2sta_ev_rx(wlandevice_t *wlandev, struct sk_buff *skb);
102void
103prism2sta_ev_alloc(wlandevice_t *wlandev);
104
105
106int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp);
107int prism2mgmt_powermgmt(wlandevice_t *wlandev, void *msgp);
108int prism2mgmt_scan(wlandevice_t *wlandev, void *msgp);
109int prism2mgmt_scan_results(wlandevice_t *wlandev, void *msgp);
110int prism2mgmt_join(wlandevice_t *wlandev, void *msgp);
111int prism2mgmt_p2_join(wlandevice_t *wlandev, void *msgp);
112int prism2mgmt_authenticate(wlandevice_t *wlandev, void *msgp);
113int prism2mgmt_deauthenticate(wlandevice_t *wlandev, void *msgp);
114int prism2mgmt_associate(wlandevice_t *wlandev, void *msgp);
115int prism2mgmt_reassociate(wlandevice_t *wlandev, void *msgp);
116int prism2mgmt_disassociate(wlandevice_t *wlandev, void *msgp);
117int prism2mgmt_reset(wlandevice_t *wlandev, void *msgp);
118int prism2mgmt_start(wlandevice_t *wlandev, void *msgp);
119int prism2mgmt_wlansniff(wlandevice_t *wlandev, void *msgp);
120int prism2mgmt_readpda(wlandevice_t *wlandev, void *msgp);
121int prism2mgmt_readcis(wlandevice_t *wlandev, void *msgp);
122int prism2mgmt_auxport_state(wlandevice_t *wlandev, void *msgp);
123int prism2mgmt_auxport_read(wlandevice_t *wlandev, void *msgp);
124int prism2mgmt_auxport_write(wlandevice_t *wlandev, void *msgp);
125int prism2mgmt_low_level(wlandevice_t *wlandev, void *msgp);
126int prism2mgmt_test_command(wlandevice_t *wlandev, void *msgp);
127int prism2mgmt_mmi_read(wlandevice_t *wlandev, void *msgp);
128int prism2mgmt_mmi_write(wlandevice_t *wlandev, void *msgp);
129int prism2mgmt_ramdl_state(wlandevice_t *wlandev, void *msgp);
130int prism2mgmt_ramdl_write(wlandevice_t *wlandev, void *msgp);
131int prism2mgmt_flashdl_state(wlandevice_t *wlandev, void *msgp);
132int prism2mgmt_flashdl_write(wlandevice_t *wlandev, void *msgp);
133int prism2mgmt_mm_state(wlandevice_t *wlandev, void *msgp);
134int prism2mgmt_dump_state(wlandevice_t *wlandev, void *msgp);
135int prism2mgmt_enable(wlandevice_t *wlandev, void *msgp);
136int prism2mgmt_channel_info(wlandevice_t *wlandev, void *msgp);
137int prism2mgmt_channel_info_results(wlandevice_t *wlandev, void *msgp);
138int prism2mgmt_autojoin(wlandevice_t *wlandev, void *msgp);
139
140/*---------------------------------------------------------------
141* conversion functions going between wlan message data types and
142* Prism2 data types
143---------------------------------------------------------------*/
144/* byte area conversion functions*/
145void prism2mgmt_pstr2bytearea(UINT8 *bytearea, p80211pstrd_t *pstr);
146void prism2mgmt_bytearea2pstr(UINT8 *bytearea, p80211pstrd_t *pstr, int len);
147
148/* byte string conversion functions*/
149void prism2mgmt_pstr2bytestr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr);
150void prism2mgmt_bytestr2pstr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr);
151
152/* integer conversion functions */
153void prism2mgmt_prism2int2p80211int(UINT16 *prism2int, UINT32 *wlanint);
154void prism2mgmt_p80211int2prism2int(UINT16 *prism2int, UINT32 *wlanint);
155
156/* enumerated integer conversion functions */
157void prism2mgmt_prism2enum2p80211enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT16 rid);
158void prism2mgmt_p80211enum2prism2enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT16 rid);
159
160/* functions to convert a bit area to/from an Operational Rate Set */
161void prism2mgmt_get_oprateset(UINT16 *rate, p80211pstrd_t *pstr);
162void prism2mgmt_set_oprateset(UINT16 *rate, p80211pstrd_t *pstr);
163
164/* functions to convert Group Addresses */
165void prism2mgmt_get_grpaddr(UINT32 did,
166 p80211pstrd_t *pstr, hfa384x_t *priv );
167int prism2mgmt_set_grpaddr(UINT32 did,
168 UINT8 *prism2buf, p80211pstrd_t *pstr, hfa384x_t *priv );
169int prism2mgmt_get_grpaddr_index( UINT32 did );
170
171void prism2sta_processing_defer(struct work_struct *data);
172
173void prism2sta_commsqual_defer(struct work_struct *data);
174void prism2sta_commsqual_timer(unsigned long data);
175
176/*=============================================================*/
177/*--- Inline Function Definitions (if supported) --------------*/
178/*=============================================================*/
179
180
181
182#endif
diff --git a/drivers/staging/wlan-ng/prism2mib.c b/drivers/staging/wlan-ng/prism2mib.c
new file mode 100644
index 00000000000..268fd9bba1e
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2mib.c
@@ -0,0 +1,3799 @@
1/* src/prism2/driver/prism2mib.c
2*
3* Management request for mibset/mibget
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* The functions in this file handle the mibset/mibget management
48* functions.
49*
50* --------------------------------------------------------------------
51*/
52
53/*================================================================*/
54/* System Includes */
55#define WLAN_DBVAR prism2_debug
56
57#include "version.h"
58
59
60#include <linux/version.h>
61
62#include <linux/module.h>
63#include <linux/kernel.h>
64#include <linux/sched.h>
65#include <linux/types.h>
66#include <linux/slab.h>
67#include <linux/wireless.h>
68#include <linux/netdevice.h>
69#include <asm/io.h>
70#include <linux/delay.h>
71#include <asm/byteorder.h>
72
73#include "wlan_compat.h"
74
75//#if (WLAN_HOSTIF == WLAN_PCMCIA)
76//#include <pcmcia/version.h>
77//#include <pcmcia/cs_types.h>
78//#include <pcmcia/cs.h>
79//#include <pcmcia/cistpl.h>
80//#include <pcmcia/ds.h>
81//#include <pcmcia/cisreg.h>
82//#endif
83//
84//#if ((WLAN_HOSTIF == WLAN_PLX) || (WLAN_HOSTIF == WLAN_PCI))
85//#include <linux/ioport.h>
86//#include <linux/pci.h>
87//endif
88
89//#if (WLAN_HOSTIF == WLAN_USB)
90#include <linux/usb.h>
91//#endif
92
93#include "wlan_compat.h"
94
95/*================================================================*/
96/* Project Includes */
97
98#include "p80211types.h"
99#include "p80211hdr.h"
100#include "p80211mgmt.h"
101#include "p80211conv.h"
102#include "p80211msg.h"
103#include "p80211netdev.h"
104#include "p80211metadef.h"
105#include "p80211metastruct.h"
106#include "hfa384x.h"
107#include "prism2mgmt.h"
108
109/*================================================================*/
110/* Local Constants */
111
112#define MIB_TMP_MAXLEN 200 /* Max length of RID record (in bytes). */
113
114/*================================================================*/
115/* Local Types */
116
117#define F_AP 0x1 /* MIB is supported on Access Points. */
118#define F_STA 0x2 /* MIB is supported on stations. */
119#define F_READ 0x4 /* MIB may be read. */
120#define F_WRITE 0x8 /* MIB may be written. */
121
122typedef struct mibrec
123{
124 UINT32 did;
125 UINT16 flag;
126 UINT16 parm1;
127 UINT16 parm2;
128 UINT16 parm3;
129 int (*func)(struct mibrec *mib,
130 int isget,
131 wlandevice_t *wlandev,
132 hfa384x_t *hw,
133 p80211msg_dot11req_mibset_t *msg,
134 void *data);
135} mibrec_t;
136
137/*================================================================*/
138/* Local Function Declarations */
139
140static int prism2mib_bytestr2pstr(
141mibrec_t *mib,
142int isget,
143wlandevice_t *wlandev,
144hfa384x_t *hw,
145p80211msg_dot11req_mibset_t *msg,
146void *data);
147
148static int prism2mib_bytearea2pstr(
149mibrec_t *mib,
150int isget,
151wlandevice_t *wlandev,
152hfa384x_t *hw,
153p80211msg_dot11req_mibset_t *msg,
154void *data);
155
156static int prism2mib_uint32(
157mibrec_t *mib,
158int isget,
159wlandevice_t *wlandev,
160hfa384x_t *hw,
161p80211msg_dot11req_mibset_t *msg,
162void *data);
163
164static int prism2mib_uint32array(
165mibrec_t *mib,
166int isget,
167wlandevice_t *wlandev,
168hfa384x_t *hw,
169p80211msg_dot11req_mibset_t *msg,
170void *data);
171
172static int prism2mib_uint32offset(
173mibrec_t *mib,
174int isget,
175wlandevice_t *wlandev,
176hfa384x_t *hw,
177p80211msg_dot11req_mibset_t *msg,
178void *data);
179
180static int prism2mib_truth(
181mibrec_t *mib,
182int isget,
183wlandevice_t *wlandev,
184hfa384x_t *hw,
185p80211msg_dot11req_mibset_t *msg,
186void *data);
187
188static int prism2mib_preamble(
189mibrec_t *mib,
190int isget,
191wlandevice_t *wlandev,
192hfa384x_t *hw,
193p80211msg_dot11req_mibset_t *msg,
194void *data);
195
196static int prism2mib_flag(
197mibrec_t *mib,
198int isget,
199wlandevice_t *wlandev,
200hfa384x_t *hw,
201p80211msg_dot11req_mibset_t *msg,
202void *data);
203
204static int prism2mib_appcfinfoflag(
205mibrec_t *mib,
206int isget,
207wlandevice_t *wlandev,
208hfa384x_t *hw,
209p80211msg_dot11req_mibset_t *msg,
210void *data);
211
212static int prism2mib_regulatorydomains(
213mibrec_t *mib,
214int isget,
215wlandevice_t *wlandev,
216hfa384x_t *hw,
217p80211msg_dot11req_mibset_t *msg,
218void *data);
219
220static int prism2mib_wepdefaultkey(
221mibrec_t *mib,
222int isget,
223wlandevice_t *wlandev,
224hfa384x_t *hw,
225p80211msg_dot11req_mibset_t *msg,
226void *data);
227
228static int prism2mib_powermanagement(
229mibrec_t *mib,
230int isget,
231wlandevice_t *wlandev,
232hfa384x_t *hw,
233p80211msg_dot11req_mibset_t *msg,
234void *data);
235
236static int prism2mib_privacyinvoked(
237mibrec_t *mib,
238int isget,
239wlandevice_t *wlandev,
240hfa384x_t *hw,
241p80211msg_dot11req_mibset_t *msg,
242void *data);
243
244static int prism2mib_excludeunencrypted(
245mibrec_t *mib,
246int isget,
247wlandevice_t *wlandev,
248hfa384x_t *hw,
249p80211msg_dot11req_mibset_t *msg,
250void *data);
251
252static int prism2mib_fragmentationthreshold(
253mibrec_t *mib,
254int isget,
255wlandevice_t *wlandev,
256hfa384x_t *hw,
257p80211msg_dot11req_mibset_t *msg,
258void *data);
259
260static int prism2mib_operationalrateset(
261mibrec_t *mib,
262int isget,
263wlandevice_t *wlandev,
264hfa384x_t *hw,
265p80211msg_dot11req_mibset_t *msg,
266void *data);
267
268static int prism2mib_groupaddress(
269mibrec_t *mib,
270int isget,
271wlandevice_t *wlandev,
272hfa384x_t *hw,
273p80211msg_dot11req_mibset_t *msg,
274void *data);
275
276static int prism2mib_fwid(
277mibrec_t *mib,
278int isget,
279wlandevice_t *wlandev,
280hfa384x_t *hw,
281p80211msg_dot11req_mibset_t *msg,
282void *data);
283
284static int prism2mib_authalg(
285mibrec_t *mib,
286int isget,
287wlandevice_t *wlandev,
288hfa384x_t *hw,
289p80211msg_dot11req_mibset_t *msg,
290void *data);
291
292static int prism2mib_authalgenable(
293mibrec_t *mib,
294int isget,
295wlandevice_t *wlandev,
296hfa384x_t *hw,
297p80211msg_dot11req_mibset_t *msg,
298void *data);
299
300static int prism2mib_priv(
301mibrec_t *mib,
302int isget,
303wlandevice_t *wlandev,
304hfa384x_t *hw,
305p80211msg_dot11req_mibset_t *msg,
306void *data);
307
308static void prism2mib_priv_authlist(
309hfa384x_t *hw,
310prism2sta_authlist_t *list);
311
312static void prism2mib_priv_accessmode(
313hfa384x_t *hw,
314UINT32 mode);
315
316static void prism2mib_priv_accessallow(
317hfa384x_t *hw,
318p80211macarray_t *macarray);
319
320static void prism2mib_priv_accessdeny(
321hfa384x_t *hw,
322p80211macarray_t *macarray);
323
324static void prism2mib_priv_deauthenticate(
325hfa384x_t *hw,
326UINT8 *addr);
327
328/*================================================================*/
329/* Local Static Definitions */
330
331static mibrec_t mibtab[] = {
332
333 /* dot11smt MIB's */
334
335 { DIDmib_dot11smt_dot11StationConfigTable_dot11StationID,
336 F_AP | F_STA | F_READ | F_WRITE,
337 HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
338 prism2mib_bytearea2pstr },
339 { DIDmib_dot11smt_dot11StationConfigTable_dot11MediumOccupancyLimit,
340 F_AP | F_READ | F_WRITE,
341 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 0,
342 prism2mib_uint32offset },
343 { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPollable,
344 F_STA | F_READ,
345 HFA384x_RID_CFPOLLABLE, 0, 0,
346 prism2mib_uint32 },
347 { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPPeriod,
348 F_AP | F_READ | F_WRITE,
349 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 1,
350 prism2mib_uint32offset },
351 { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPMaxDuration,
352 F_AP | F_READ | F_WRITE,
353 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 2,
354 prism2mib_uint32offset },
355 { DIDmib_dot11smt_dot11StationConfigTable_dot11AuthenticationResponseTimeOut,
356 F_STA | F_READ | F_WRITE,
357 HFA384x_RID_CNFAUTHRSPTIMEOUT, 0, 0,
358 prism2mib_uint32 },
359 { DIDmib_dot11smt_dot11StationConfigTable_dot11PrivacyOptionImplemented,
360 F_AP | F_STA | F_READ,
361 HFA384x_RID_PRIVACYOPTIMP, 0, 0,
362 prism2mib_uint32 },
363 { DIDmib_dot11smt_dot11StationConfigTable_dot11PowerManagementMode,
364 F_STA | F_READ | F_WRITE,
365 HFA384x_RID_CNFPMENABLED, 0, 0,
366 prism2mib_powermanagement },
367 { DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredSSID,
368 F_STA | F_READ | F_WRITE,
369 HFA384x_RID_CNFDESIREDSSID, HFA384x_RID_CNFDESIREDSSID_LEN, 0,
370 prism2mib_bytestr2pstr },
371 { DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredBSSType,
372 F_STA | F_READ | F_WRITE,
373 0, 0, 0,
374 prism2mib_priv },
375 { DIDmib_dot11smt_dot11StationConfigTable_dot11OperationalRateSet,
376 F_STA | F_READ | F_WRITE,
377 HFA384x_RID_TXRATECNTL, 0, 0,
378 prism2mib_operationalrateset },
379 { DIDmib_dot11smt_dot11StationConfigTable_dot11OperationalRateSet,
380 F_AP | F_READ | F_WRITE,
381 HFA384x_RID_TXRATECNTL0, 0, 0,
382 prism2mib_operationalrateset },
383 { DIDmib_dot11smt_dot11StationConfigTable_dot11BeaconPeriod,
384 F_AP | F_READ | F_WRITE,
385 HFA384x_RID_CNFAPBCNINT, 0, 0,
386 prism2mib_uint32 },
387 { DIDmib_dot11smt_dot11StationConfigTable_dot11DTIMPeriod,
388 F_AP | F_STA | F_READ | F_WRITE,
389 HFA384x_RID_CNFOWNDTIMPER, 0, 0,
390 prism2mib_uint32 },
391 { DIDmib_dot11smt_dot11StationConfigTable_dot11AssociationResponseTimeOut,
392 F_AP | F_STA | F_READ,
393 HFA384x_RID_PROTOCOLRSPTIME, 0, 0,
394 prism2mib_uint32 },
395 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm1,
396 F_AP | F_STA | F_READ,
397 1, 0, 0,
398 prism2mib_authalg },
399 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm2,
400 F_AP | F_STA | F_READ,
401 2, 0, 0,
402 prism2mib_authalg },
403 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm3,
404 F_AP | F_STA | F_READ,
405 3, 0, 0,
406 prism2mib_authalg },
407 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm4,
408 F_AP | F_STA | F_READ,
409 4, 0, 0,
410 prism2mib_authalg },
411 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm5,
412 F_AP | F_STA | F_READ,
413 5, 0, 0,
414 prism2mib_authalg },
415 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm6,
416 F_AP | F_STA | F_READ,
417 6, 0, 0,
418 prism2mib_authalg },
419 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable1,
420 F_AP | F_STA | F_READ | F_WRITE,
421 1, 0, 0,
422 prism2mib_authalgenable },
423 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable2,
424 F_AP | F_STA | F_READ | F_WRITE,
425 2, 0, 0,
426 prism2mib_authalgenable },
427 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable3,
428 F_AP | F_STA | F_READ | F_WRITE,
429 3, 0, 0,
430 prism2mib_authalgenable },
431 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable4,
432 F_AP | F_STA | F_READ | F_WRITE,
433 4, 0, 0,
434 prism2mib_authalgenable },
435 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable5,
436 F_AP | F_STA | F_READ | F_WRITE,
437 5, 0, 0,
438 prism2mib_authalgenable },
439 { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable6,
440 F_AP | F_STA | F_READ | F_WRITE,
441 6, 0, 0,
442 prism2mib_authalgenable },
443 { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0,
444 F_AP | F_STA | F_WRITE,
445 HFA384x_RID_CNFWEPDEFAULTKEY0, 0, 0,
446 prism2mib_wepdefaultkey },
447 { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1,
448 F_AP | F_STA | F_WRITE,
449 HFA384x_RID_CNFWEPDEFAULTKEY1, 0, 0,
450 prism2mib_wepdefaultkey },
451 { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2,
452 F_AP | F_STA | F_WRITE,
453 HFA384x_RID_CNFWEPDEFAULTKEY2, 0, 0,
454 prism2mib_wepdefaultkey },
455 { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3,
456 F_AP | F_STA | F_WRITE,
457 HFA384x_RID_CNFWEPDEFAULTKEY3, 0, 0,
458 prism2mib_wepdefaultkey },
459 { DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked,
460 F_AP | F_STA | F_READ | F_WRITE,
461 HFA384x_RID_CNFWEPFLAGS, HFA384x_WEPFLAGS_PRIVINVOKED, 0,
462 prism2mib_privacyinvoked },
463 { DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID,
464 F_AP | F_STA | F_READ | F_WRITE,
465 HFA384x_RID_CNFWEPDEFAULTKEYID, 0, 0,
466 prism2mib_uint32 },
467 { DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted,
468 F_AP | F_STA | F_READ | F_WRITE,
469 HFA384x_RID_CNFWEPFLAGS, HFA384x_WEPFLAGS_EXCLUDE, 0,
470 prism2mib_excludeunencrypted },
471 { DIDmib_dot11phy_dot11PhyOperationTable_dot11ShortPreambleEnabled,
472 F_AP | F_STA | F_READ | F_WRITE,
473 HFA384x_RID_CNFSHORTPREAMBLE, 0, 0,
474 prism2mib_preamble },
475
476 /* dot11mac MIB's */
477
478 { DIDmib_dot11mac_dot11OperationTable_dot11MACAddress,
479 F_AP | F_STA | F_READ | F_WRITE,
480 HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
481 prism2mib_bytearea2pstr },
482 { DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold,
483 F_STA | F_READ | F_WRITE,
484 HFA384x_RID_RTSTHRESH, 0, 0,
485 prism2mib_uint32 },
486 { DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold,
487 F_AP | F_READ | F_WRITE,
488 HFA384x_RID_RTSTHRESH0, 0, 0,
489 prism2mib_uint32 },
490 { DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit,
491 F_AP | F_STA | F_READ,
492 HFA384x_RID_SHORTRETRYLIMIT, 0, 0,
493 prism2mib_uint32 },
494 { DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit,
495 F_AP | F_STA | F_READ,
496 HFA384x_RID_LONGRETRYLIMIT, 0, 0,
497 prism2mib_uint32 },
498 { DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold,
499 F_STA | F_READ | F_WRITE,
500 HFA384x_RID_FRAGTHRESH, 0, 0,
501 prism2mib_fragmentationthreshold },
502 { DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold,
503 F_AP | F_READ | F_WRITE,
504 HFA384x_RID_FRAGTHRESH0, 0, 0,
505 prism2mib_fragmentationthreshold },
506 { DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime,
507 F_AP | F_STA | F_READ,
508 HFA384x_RID_MAXTXLIFETIME, 0, 0,
509 prism2mib_uint32 },
510 { DIDmib_dot11mac_dot11OperationTable_dot11MaxReceiveLifetime,
511 F_AP | F_STA | F_READ,
512 HFA384x_RID_MAXRXLIFETIME, 0, 0,
513 prism2mib_uint32 },
514 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address1,
515 F_STA | F_READ | F_WRITE,
516 0, 0, 0,
517 prism2mib_groupaddress },
518 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address2,
519 F_STA | F_READ | F_WRITE,
520 0, 0, 0,
521 prism2mib_groupaddress },
522 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address3,
523 F_STA | F_READ | F_WRITE,
524 0, 0, 0,
525 prism2mib_groupaddress },
526 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address4,
527 F_STA | F_READ | F_WRITE,
528 0, 0, 0,
529 prism2mib_groupaddress },
530 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address5,
531 F_STA | F_READ | F_WRITE,
532 0, 0, 0,
533 prism2mib_groupaddress },
534 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address6,
535 F_STA | F_READ | F_WRITE,
536 0, 0, 0,
537 prism2mib_groupaddress },
538 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address7,
539 F_STA | F_READ | F_WRITE,
540 0, 0, 0,
541 prism2mib_groupaddress },
542 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address8,
543 F_STA | F_READ | F_WRITE,
544 0, 0, 0,
545 prism2mib_groupaddress },
546 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address9,
547 F_STA | F_READ | F_WRITE,
548 0, 0, 0,
549 prism2mib_groupaddress },
550 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address10,
551 F_STA | F_READ | F_WRITE,
552 0, 0, 0,
553 prism2mib_groupaddress },
554 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address11,
555 F_STA | F_READ | F_WRITE,
556 0, 0, 0,
557 prism2mib_groupaddress },
558 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address12,
559 F_STA | F_READ | F_WRITE,
560 0, 0, 0,
561 prism2mib_groupaddress },
562 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address13,
563 F_STA | F_READ | F_WRITE,
564 0, 0, 0,
565 prism2mib_groupaddress },
566 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address14,
567 F_STA | F_READ | F_WRITE,
568 0, 0, 0,
569 prism2mib_groupaddress },
570 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address15,
571 F_STA | F_READ | F_WRITE,
572 0, 0, 0,
573 prism2mib_groupaddress },
574 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address16,
575 F_STA | F_READ | F_WRITE,
576 0, 0, 0,
577 prism2mib_groupaddress },
578 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address17,
579 F_STA | F_READ | F_WRITE,
580 0, 0, 0,
581 prism2mib_groupaddress },
582 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address18,
583 F_STA | F_READ | F_WRITE,
584 0, 0, 0,
585 prism2mib_groupaddress },
586 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address19,
587 F_STA | F_READ | F_WRITE,
588 0, 0, 0,
589 prism2mib_groupaddress },
590 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address20,
591 F_STA | F_READ | F_WRITE,
592 0, 0, 0,
593 prism2mib_groupaddress },
594 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address21,
595 F_STA | F_READ | F_WRITE,
596 0, 0, 0,
597 prism2mib_groupaddress },
598 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address22,
599 F_STA | F_READ | F_WRITE,
600 0, 0, 0,
601 prism2mib_groupaddress },
602 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address23,
603 F_STA | F_READ | F_WRITE,
604 0, 0, 0,
605 prism2mib_groupaddress },
606 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address24,
607 F_STA | F_READ | F_WRITE,
608 0, 0, 0,
609 prism2mib_groupaddress },
610 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address25,
611 F_STA | F_READ | F_WRITE,
612 0, 0, 0,
613 prism2mib_groupaddress },
614 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address26,
615 F_STA | F_READ | F_WRITE,
616 0, 0, 0,
617 prism2mib_groupaddress },
618 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address27,
619 F_STA | F_READ | F_WRITE,
620 0, 0, 0,
621 prism2mib_groupaddress },
622 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address28,
623 F_STA | F_READ | F_WRITE,
624 0, 0, 0,
625 prism2mib_groupaddress },
626 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address29,
627 F_STA | F_READ | F_WRITE,
628 0, 0, 0,
629 prism2mib_groupaddress },
630 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address30,
631 F_STA | F_READ | F_WRITE,
632 0, 0, 0,
633 prism2mib_groupaddress },
634 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address31,
635 F_STA | F_READ | F_WRITE,
636 0, 0, 0,
637 prism2mib_groupaddress },
638 { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address32,
639 F_STA | F_READ | F_WRITE,
640 0, 0, 0,
641 prism2mib_groupaddress },
642
643 /* dot11phy MIB's */
644
645 { DIDmib_dot11phy_dot11PhyOperationTable_dot11PHYType,
646 F_AP | F_STA | F_READ,
647 HFA384x_RID_PHYTYPE, 0, 0,
648 prism2mib_uint32 },
649 { DIDmib_dot11phy_dot11PhyOperationTable_dot11TempType,
650 F_AP | F_STA | F_READ,
651 HFA384x_RID_TEMPTYPE, 0, 0,
652 prism2mib_uint32 },
653 { DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel,
654 F_STA | F_READ,
655 HFA384x_RID_CURRENTCHANNEL, 0, 0,
656 prism2mib_uint32 },
657 { DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel,
658 F_AP | F_READ,
659 HFA384x_RID_CNFOWNCHANNEL, 0, 0,
660 prism2mib_uint32 },
661 { DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentCCAMode,
662 F_AP | F_STA | F_READ,
663 HFA384x_RID_CCAMODE, 0, 0,
664 prism2mib_uint32 },
665
666 /* p2Table MIB's */
667
668 { DIDmib_p2_p2Table_p2MMTx,
669 F_AP | F_STA | F_READ | F_WRITE,
670 0, 0, 0,
671 prism2mib_priv },
672 { DIDmib_p2_p2Table_p2EarlyBeacon,
673 F_AP | F_READ | F_WRITE,
674 BIT7, 0, 0,
675 prism2mib_appcfinfoflag },
676 { DIDmib_p2_p2Table_p2ReceivedFrameStatistics,
677 F_AP | F_STA | F_READ,
678 0, 0, 0,
679 prism2mib_priv },
680 { DIDmib_p2_p2Table_p2CommunicationTallies,
681 F_AP | F_STA | F_READ,
682 0, 0, 0,
683 prism2mib_priv },
684 { DIDmib_p2_p2Table_p2Authenticated,
685 F_AP | F_READ,
686 0, 0, 0,
687 prism2mib_priv },
688 { DIDmib_p2_p2Table_p2Associated,
689 F_AP | F_READ,
690 0, 0, 0,
691 prism2mib_priv },
692 { DIDmib_p2_p2Table_p2PowerSaveUserCount,
693 F_AP | F_READ,
694 0, 0, 0,
695 prism2mib_priv },
696 { DIDmib_p2_p2Table_p2Comment,
697 F_AP | F_STA | F_READ | F_WRITE,
698 0, 0, 0,
699 prism2mib_priv },
700 { DIDmib_p2_p2Table_p2AccessMode,
701 F_AP | F_READ | F_WRITE,
702 0, 0, 0,
703 prism2mib_priv },
704 { DIDmib_p2_p2Table_p2AccessAllow,
705 F_AP | F_READ | F_WRITE,
706 0, 0, 0,
707 prism2mib_priv },
708 { DIDmib_p2_p2Table_p2AccessDeny,
709 F_AP | F_READ | F_WRITE,
710 0, 0, 0,
711 prism2mib_priv },
712 { DIDmib_p2_p2Table_p2ChannelInfoResults,
713 F_AP | F_READ,
714 0, 0, 0,
715 prism2mib_priv },
716
717 /* p2Static MIB's */
718
719 { DIDmib_p2_p2Static_p2CnfPortType,
720 F_STA | F_READ | F_WRITE,
721 HFA384x_RID_CNFPORTTYPE, 0, 0,
722 prism2mib_uint32 },
723 { DIDmib_p2_p2Static_p2CnfOwnMACAddress,
724 F_AP | F_STA | F_READ | F_WRITE,
725 HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
726 prism2mib_bytearea2pstr },
727 { DIDmib_p2_p2Static_p2CnfDesiredSSID,
728 F_STA | F_READ | F_WRITE,
729 HFA384x_RID_CNFDESIREDSSID, HFA384x_RID_CNFDESIREDSSID_LEN, 0,
730 prism2mib_bytestr2pstr },
731 { DIDmib_p2_p2Static_p2CnfOwnChannel,
732 F_AP | F_STA | F_READ | F_WRITE,
733 HFA384x_RID_CNFOWNCHANNEL, 0, 0,
734 prism2mib_uint32 },
735 { DIDmib_p2_p2Static_p2CnfOwnSSID,
736 F_AP | F_STA | F_READ | F_WRITE,
737 HFA384x_RID_CNFOWNSSID, HFA384x_RID_CNFOWNSSID_LEN, 0,
738 prism2mib_bytestr2pstr },
739 { DIDmib_p2_p2Static_p2CnfOwnATIMWindow,
740 F_STA | F_READ | F_WRITE,
741 HFA384x_RID_CNFOWNATIMWIN, 0, 0,
742 prism2mib_uint32 },
743 { DIDmib_p2_p2Static_p2CnfSystemScale,
744 F_AP | F_STA | F_READ | F_WRITE,
745 HFA384x_RID_CNFSYSSCALE, 0, 0,
746 prism2mib_uint32 },
747 { DIDmib_p2_p2Static_p2CnfMaxDataLength,
748 F_AP | F_STA | F_READ | F_WRITE,
749 HFA384x_RID_CNFMAXDATALEN, 0, 0,
750 prism2mib_uint32 },
751 { DIDmib_p2_p2Static_p2CnfWDSAddress,
752 F_STA | F_READ | F_WRITE,
753 HFA384x_RID_CNFWDSADDR, HFA384x_RID_CNFWDSADDR_LEN, 0,
754 prism2mib_bytearea2pstr },
755 { DIDmib_p2_p2Static_p2CnfPMEnabled,
756 F_STA | F_READ | F_WRITE,
757 HFA384x_RID_CNFPMENABLED, 0, 0,
758 prism2mib_truth },
759 { DIDmib_p2_p2Static_p2CnfPMEPS,
760 F_STA | F_READ | F_WRITE,
761 HFA384x_RID_CNFPMEPS, 0, 0,
762 prism2mib_truth },
763 { DIDmib_p2_p2Static_p2CnfMulticastReceive,
764 F_STA | F_READ | F_WRITE,
765 HFA384x_RID_CNFMULTICASTRX, 0, 0,
766 prism2mib_truth },
767 { DIDmib_p2_p2Static_p2CnfMaxSleepDuration,
768 F_STA | F_READ | F_WRITE,
769 HFA384x_RID_CNFMAXSLEEPDUR, 0, 0,
770 prism2mib_uint32 },
771 { DIDmib_p2_p2Static_p2CnfPMHoldoverDuration,
772 F_STA | F_READ | F_WRITE,
773 HFA384x_RID_CNFPMHOLDDUR, 0, 0,
774 prism2mib_uint32 },
775 { DIDmib_p2_p2Static_p2CnfOwnName,
776 F_AP | F_STA | F_READ | F_WRITE,
777 HFA384x_RID_CNFOWNNAME, HFA384x_RID_CNFOWNNAME_LEN, 0,
778 prism2mib_bytestr2pstr },
779 { DIDmib_p2_p2Static_p2CnfOwnDTIMPeriod,
780 F_AP | F_STA | F_READ | F_WRITE,
781 HFA384x_RID_CNFOWNDTIMPER, 0, 0,
782 prism2mib_uint32 },
783 { DIDmib_p2_p2Static_p2CnfWDSAddress1,
784 F_AP | F_READ | F_WRITE,
785 HFA384x_RID_CNFWDSADDR1, HFA384x_RID_CNFWDSADDR1_LEN, 0,
786 prism2mib_bytearea2pstr },
787 { DIDmib_p2_p2Static_p2CnfWDSAddress2,
788 F_AP | F_READ | F_WRITE,
789 HFA384x_RID_CNFWDSADDR2, HFA384x_RID_CNFWDSADDR2_LEN, 0,
790 prism2mib_bytearea2pstr },
791 { DIDmib_p2_p2Static_p2CnfWDSAddress3,
792 F_AP | F_READ | F_WRITE,
793 HFA384x_RID_CNFWDSADDR3, HFA384x_RID_CNFWDSADDR3_LEN, 0,
794 prism2mib_bytearea2pstr },
795 { DIDmib_p2_p2Static_p2CnfWDSAddress4,
796 F_AP | F_READ | F_WRITE,
797 HFA384x_RID_CNFWDSADDR4, HFA384x_RID_CNFWDSADDR4_LEN, 0,
798 prism2mib_bytearea2pstr },
799 { DIDmib_p2_p2Static_p2CnfWDSAddress5,
800 F_AP | F_READ | F_WRITE,
801 HFA384x_RID_CNFWDSADDR5, HFA384x_RID_CNFWDSADDR5_LEN, 0,
802 prism2mib_bytearea2pstr },
803 { DIDmib_p2_p2Static_p2CnfWDSAddress6,
804 F_AP | F_READ | F_WRITE,
805 HFA384x_RID_CNFWDSADDR6, HFA384x_RID_CNFWDSADDR6_LEN, 0,
806 prism2mib_bytearea2pstr },
807 { DIDmib_p2_p2Static_p2CnfMulticastPMBuffering,
808 F_AP | F_READ | F_WRITE,
809 HFA384x_RID_CNFMCASTPMBUFF, 0, 0,
810 prism2mib_truth },
811 { DIDmib_p2_p2Static_p2CnfWEPDefaultKeyID,
812 F_AP | F_STA | F_READ | F_WRITE,
813 HFA384x_RID_CNFWEPDEFAULTKEYID, 0, 0,
814 prism2mib_uint32 },
815 { DIDmib_p2_p2Static_p2CnfWEPDefaultKey0,
816 F_AP | F_STA | F_WRITE,
817 HFA384x_RID_CNFWEPDEFAULTKEY0, 0, 0,
818 prism2mib_wepdefaultkey },
819 { DIDmib_p2_p2Static_p2CnfWEPDefaultKey1,
820 F_AP | F_STA | F_WRITE,
821 HFA384x_RID_CNFWEPDEFAULTKEY1, 0, 0,
822 prism2mib_wepdefaultkey },
823 { DIDmib_p2_p2Static_p2CnfWEPDefaultKey2,
824 F_AP | F_STA | F_WRITE,
825 HFA384x_RID_CNFWEPDEFAULTKEY2, 0, 0,
826 prism2mib_wepdefaultkey },
827 { DIDmib_p2_p2Static_p2CnfWEPDefaultKey3,
828 F_AP | F_STA | F_WRITE,
829 HFA384x_RID_CNFWEPDEFAULTKEY3, 0, 0,
830 prism2mib_wepdefaultkey },
831 { DIDmib_p2_p2Static_p2CnfWEPFlags,
832 F_AP | F_STA | F_READ | F_WRITE,
833 HFA384x_RID_CNFWEPFLAGS, 0, 0,
834 prism2mib_uint32 },
835 { DIDmib_p2_p2Static_p2CnfAuthentication,
836 F_AP | F_STA | F_READ | F_WRITE,
837 HFA384x_RID_CNFAUTHENTICATION, 0, 0,
838 prism2mib_uint32 },
839 { DIDmib_p2_p2Static_p2CnfMaxAssociatedStations,
840 F_AP | F_READ | F_WRITE,
841 HFA384x_RID_CNFMAXASSOCSTATIONS, 0, 0,
842 prism2mib_uint32 },
843 { DIDmib_p2_p2Static_p2CnfTxControl,
844 F_AP | F_STA | F_READ | F_WRITE,
845 HFA384x_RID_CNFTXCONTROL, 0, 0,
846 prism2mib_uint32 },
847 { DIDmib_p2_p2Static_p2CnfRoamingMode,
848 F_STA | F_READ | F_WRITE,
849 HFA384x_RID_CNFROAMINGMODE, 0, 0,
850 prism2mib_uint32 },
851 { DIDmib_p2_p2Static_p2CnfHostAuthentication,
852 F_AP | F_READ | F_WRITE,
853 HFA384x_RID_CNFHOSTAUTHASSOC, 0, 0,
854 prism2mib_truth },
855 { DIDmib_p2_p2Static_p2CnfRcvCrcError,
856 F_AP | F_STA | F_READ | F_WRITE,
857 HFA384x_RID_CNFRCVCRCERROR, 0, 0,
858 prism2mib_uint32 },
859 { DIDmib_p2_p2Static_p2CnfAltRetryCount,
860 F_AP | F_STA | F_READ | F_WRITE,
861 HFA384x_RID_CNFALTRETRYCNT, 0, 0,
862 prism2mib_uint32 },
863 { DIDmib_p2_p2Static_p2CnfBeaconInterval,
864 F_AP | F_READ | F_WRITE,
865 HFA384x_RID_CNFAPBCNINT, 0, 0,
866 prism2mib_uint32 },
867 { DIDmib_p2_p2Static_p2CnfMediumOccupancyLimit,
868 F_AP | F_READ | F_WRITE,
869 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 0,
870 prism2mib_uint32offset },
871 { DIDmib_p2_p2Static_p2CnfCFPPeriod,
872 F_AP | F_READ | F_WRITE,
873 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 1,
874 prism2mib_uint32offset },
875 { DIDmib_p2_p2Static_p2CnfCFPMaxDuration,
876 F_AP | F_READ | F_WRITE,
877 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 2,
878 prism2mib_uint32offset },
879 { DIDmib_p2_p2Static_p2CnfCFPFlags,
880 F_AP | F_READ | F_WRITE,
881 HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 3,
882 prism2mib_uint32offset },
883 { DIDmib_p2_p2Static_p2CnfSTAPCFInfo,
884 F_STA | F_READ | F_WRITE,
885 HFA384x_RID_CNFSTAPCFINFO, 0, 0,
886 prism2mib_uint32 },
887 { DIDmib_p2_p2Static_p2CnfPriorityQUsage,
888 F_AP | F_STA | F_READ | F_WRITE,
889 HFA384x_RID_CNFPRIORITYQUSAGE, HFA384x_RID_CNFPRIOQUSAGE_LEN, 0,
890 prism2mib_uint32array },
891 { DIDmib_p2_p2Static_p2CnfTIMCtrl,
892 F_AP | F_STA | F_READ | F_WRITE,
893 HFA384x_RID_CNFTIMCTRL, 0, 0,
894 prism2mib_uint32 },
895 { DIDmib_p2_p2Static_p2CnfThirty2Tally,
896 F_AP | F_STA | F_READ | F_WRITE,
897 HFA384x_RID_CNFTHIRTY2TALLY, 0, 0,
898 prism2mib_truth },
899 { DIDmib_p2_p2Static_p2CnfEnhSecurity,
900 F_AP | F_READ | F_WRITE,
901 HFA384x_RID_CNFENHSECURITY, 0, 0,
902 prism2mib_uint32 },
903 { DIDmib_p2_p2Static_p2CnfShortPreamble,
904 F_AP | F_STA | F_READ | F_WRITE,
905 HFA384x_RID_CNFSHORTPREAMBLE, 0, 0,
906 prism2mib_preamble },
907 { DIDmib_p2_p2Static_p2CnfExcludeLongPreamble,
908 F_AP | F_READ | F_WRITE,
909 HFA384x_RID_CNFEXCLONGPREAMBLE, 0, 0,
910 prism2mib_truth },
911 { DIDmib_p2_p2Static_p2CnfAuthenticationRspTO,
912 F_STA | F_READ | F_WRITE,
913 HFA384x_RID_CNFAUTHRSPTIMEOUT, 0, 0,
914 prism2mib_uint32 },
915 { DIDmib_p2_p2Static_p2CnfBasicRates,
916 F_AP | F_STA | F_READ | F_WRITE,
917 HFA384x_RID_CNFBASICRATES, 0, 0,
918 prism2mib_uint32 },
919 { DIDmib_p2_p2Static_p2CnfSupportedRates,
920 F_AP | F_STA | F_READ | F_WRITE,
921 HFA384x_RID_CNFSUPPRATES, 0, 0,
922 prism2mib_uint32 },
923
924 /* p2Dynamic MIB's */
925
926 { DIDmib_p2_p2Dynamic_p2CreateIBSS,
927 F_STA | F_READ | F_WRITE,
928 HFA384x_RID_CREATEIBSS, 0, 0,
929 prism2mib_truth },
930 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold,
931 F_STA | F_READ | F_WRITE,
932 HFA384x_RID_FRAGTHRESH, 0, 0,
933 prism2mib_fragmentationthreshold },
934 { DIDmib_p2_p2Dynamic_p2RTSThreshold,
935 F_STA | F_READ | F_WRITE,
936 HFA384x_RID_RTSTHRESH, 0, 0,
937 prism2mib_uint32 },
938 { DIDmib_p2_p2Dynamic_p2TxRateControl,
939 F_STA | F_READ | F_WRITE,
940 HFA384x_RID_TXRATECNTL, 0, 0,
941 prism2mib_uint32 },
942 { DIDmib_p2_p2Dynamic_p2PromiscuousMode,
943 F_STA | F_READ | F_WRITE,
944 HFA384x_RID_PROMISCMODE, 0, 0,
945 prism2mib_truth },
946 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold0,
947 F_AP | F_READ | F_WRITE,
948 HFA384x_RID_FRAGTHRESH0, 0, 0,
949 prism2mib_fragmentationthreshold },
950 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold1,
951 F_AP | F_READ | F_WRITE,
952 HFA384x_RID_FRAGTHRESH1, 0, 0,
953 prism2mib_fragmentationthreshold },
954 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold2,
955 F_AP | F_READ | F_WRITE,
956 HFA384x_RID_FRAGTHRESH2, 0, 0,
957 prism2mib_fragmentationthreshold },
958 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold3,
959 F_AP | F_READ | F_WRITE,
960 HFA384x_RID_FRAGTHRESH3, 0, 0,
961 prism2mib_fragmentationthreshold },
962 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold4,
963 F_AP | F_READ | F_WRITE,
964 HFA384x_RID_FRAGTHRESH4, 0, 0,
965 prism2mib_fragmentationthreshold },
966 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold5,
967 F_AP | F_READ | F_WRITE,
968 HFA384x_RID_FRAGTHRESH5, 0, 0,
969 prism2mib_fragmentationthreshold },
970 { DIDmib_p2_p2Dynamic_p2FragmentationThreshold6,
971 F_AP | F_READ | F_WRITE,
972 HFA384x_RID_FRAGTHRESH6, 0, 0,
973 prism2mib_fragmentationthreshold },
974 { DIDmib_p2_p2Dynamic_p2RTSThreshold0,
975 F_AP | F_READ | F_WRITE,
976 HFA384x_RID_RTSTHRESH0, 0, 0,
977 prism2mib_uint32 },
978 { DIDmib_p2_p2Dynamic_p2RTSThreshold1,
979 F_AP | F_READ | F_WRITE,
980 HFA384x_RID_RTSTHRESH1, 0, 0,
981 prism2mib_uint32 },
982 { DIDmib_p2_p2Dynamic_p2RTSThreshold2,
983 F_AP | F_READ | F_WRITE,
984 HFA384x_RID_RTSTHRESH2, 0, 0,
985 prism2mib_uint32 },
986 { DIDmib_p2_p2Dynamic_p2RTSThreshold3,
987 F_AP | F_READ | F_WRITE,
988 HFA384x_RID_RTSTHRESH3, 0, 0,
989 prism2mib_uint32 },
990 { DIDmib_p2_p2Dynamic_p2RTSThreshold4,
991 F_AP | F_READ | F_WRITE,
992 HFA384x_RID_RTSTHRESH4, 0, 0,
993 prism2mib_uint32 },
994 { DIDmib_p2_p2Dynamic_p2RTSThreshold5,
995 F_AP | F_READ | F_WRITE,
996 HFA384x_RID_RTSTHRESH5, 0, 0,
997 prism2mib_uint32 },
998 { DIDmib_p2_p2Dynamic_p2RTSThreshold6,
999 F_AP | F_READ | F_WRITE,
1000 HFA384x_RID_RTSTHRESH6, 0, 0,
1001 prism2mib_uint32 },
1002 { DIDmib_p2_p2Dynamic_p2TxRateControl0,
1003 F_AP | F_READ | F_WRITE,
1004 HFA384x_RID_TXRATECNTL0, 0, 0,
1005 prism2mib_uint32 },
1006 { DIDmib_p2_p2Dynamic_p2TxRateControl1,
1007 F_AP | F_READ | F_WRITE,
1008 HFA384x_RID_TXRATECNTL1, 0, 0,
1009 prism2mib_uint32 },
1010 { DIDmib_p2_p2Dynamic_p2TxRateControl2,
1011 F_AP | F_READ | F_WRITE,
1012 HFA384x_RID_TXRATECNTL2, 0, 0,
1013 prism2mib_uint32 },
1014 { DIDmib_p2_p2Dynamic_p2TxRateControl3,
1015 F_AP | F_READ | F_WRITE,
1016 HFA384x_RID_TXRATECNTL3, 0, 0,
1017 prism2mib_uint32 },
1018 { DIDmib_p2_p2Dynamic_p2TxRateControl4,
1019 F_AP | F_READ | F_WRITE,
1020 HFA384x_RID_TXRATECNTL4, 0, 0,
1021 prism2mib_uint32 },
1022 { DIDmib_p2_p2Dynamic_p2TxRateControl5,
1023 F_AP | F_READ | F_WRITE,
1024 HFA384x_RID_TXRATECNTL5, 0, 0,
1025 prism2mib_uint32 },
1026 { DIDmib_p2_p2Dynamic_p2TxRateControl6,
1027 F_AP | F_READ | F_WRITE,
1028 HFA384x_RID_TXRATECNTL6, 0, 0,
1029 prism2mib_uint32 },
1030
1031 /* p2Behavior MIB's */
1032
1033 { DIDmib_p2_p2Behavior_p2TickTime,
1034 F_AP | F_STA | F_READ | F_WRITE,
1035 HFA384x_RID_ITICKTIME, 0, 0,
1036 prism2mib_uint32 },
1037
1038 /* p2NIC MIB's */
1039
1040 { DIDmib_p2_p2NIC_p2MaxLoadTime,
1041 F_AP | F_STA | F_READ,
1042 HFA384x_RID_MAXLOADTIME, 0, 0,
1043 prism2mib_uint32 },
1044 { DIDmib_p2_p2NIC_p2DLBufferPage,
1045 F_AP | F_STA | F_READ,
1046 HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 0,
1047 prism2mib_uint32offset },
1048 { DIDmib_p2_p2NIC_p2DLBufferOffset,
1049 F_AP | F_STA | F_READ,
1050 HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 1,
1051 prism2mib_uint32offset },
1052 { DIDmib_p2_p2NIC_p2DLBufferLength,
1053 F_AP | F_STA | F_READ,
1054 HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 2,
1055 prism2mib_uint32offset },
1056 { DIDmib_p2_p2NIC_p2PRIIdentity,
1057 F_AP | F_STA | F_READ,
1058 HFA384x_RID_PRIIDENTITY, HFA384x_RID_PRIIDENTITY_LEN, 0,
1059 prism2mib_uint32array },
1060 { DIDmib_p2_p2NIC_p2PRISupRange,
1061 F_AP | F_STA | F_READ,
1062 HFA384x_RID_PRISUPRANGE, HFA384x_RID_PRISUPRANGE_LEN, 0,
1063 prism2mib_uint32array },
1064 { DIDmib_p2_p2NIC_p2CFIActRanges,
1065 F_AP | F_STA | F_READ,
1066 HFA384x_RID_PRI_CFIACTRANGES, HFA384x_RID_CFIACTRANGES_LEN, 0,
1067 prism2mib_uint32array },
1068 { DIDmib_p2_p2NIC_p2BuildSequence,
1069 F_AP | F_STA | F_READ,
1070 HFA384x_RID_BUILDSEQ, HFA384x_RID_BUILDSEQ_LEN, 0,
1071 prism2mib_uint32array },
1072 { DIDmib_p2_p2NIC_p2PrimaryFWID,
1073 F_AP | F_STA | F_READ,
1074 0, 0, 0,
1075 prism2mib_fwid },
1076 { DIDmib_p2_p2NIC_p2SecondaryFWID,
1077 F_AP | F_STA | F_READ,
1078 0, 0, 0,
1079 prism2mib_fwid },
1080 { DIDmib_p2_p2NIC_p2TertiaryFWID,
1081 F_AP | F_READ,
1082 0, 0, 0,
1083 prism2mib_fwid },
1084 { DIDmib_p2_p2NIC_p2NICSerialNumber,
1085 F_AP | F_STA | F_READ,
1086 HFA384x_RID_NICSERIALNUMBER, HFA384x_RID_NICSERIALNUMBER_LEN, 0,
1087 prism2mib_bytearea2pstr },
1088 { DIDmib_p2_p2NIC_p2NICIdentity,
1089 F_AP | F_STA | F_READ,
1090 HFA384x_RID_NICIDENTITY, HFA384x_RID_NICIDENTITY_LEN, 0,
1091 prism2mib_uint32array },
1092 { DIDmib_p2_p2NIC_p2MFISupRange,
1093 F_AP | F_STA | F_READ,
1094 HFA384x_RID_MFISUPRANGE, HFA384x_RID_MFISUPRANGE_LEN, 0,
1095 prism2mib_uint32array },
1096 { DIDmib_p2_p2NIC_p2CFISupRange,
1097 F_AP | F_STA | F_READ,
1098 HFA384x_RID_CFISUPRANGE, HFA384x_RID_CFISUPRANGE_LEN, 0,
1099 prism2mib_uint32array },
1100 { DIDmib_p2_p2NIC_p2ChannelList,
1101 F_AP | F_STA | F_READ,
1102 HFA384x_RID_CHANNELLIST, 0, 0,
1103 prism2mib_uint32 },
1104 { DIDmib_p2_p2NIC_p2RegulatoryDomains,
1105 F_AP | F_STA | F_READ,
1106 HFA384x_RID_REGULATORYDOMAINS, HFA384x_RID_REGULATORYDOMAINS_LEN, 0,
1107 prism2mib_regulatorydomains },
1108 { DIDmib_p2_p2NIC_p2TempType,
1109 F_AP | F_STA | F_READ,
1110 HFA384x_RID_TEMPTYPE, 0, 0,
1111 prism2mib_uint32 },
1112 { DIDmib_p2_p2NIC_p2STAIdentity,
1113 F_AP | F_STA | F_READ,
1114 HFA384x_RID_STAIDENTITY, HFA384x_RID_STAIDENTITY_LEN, 0,
1115 prism2mib_uint32array },
1116 { DIDmib_p2_p2NIC_p2STASupRange,
1117 F_AP | F_STA | F_READ,
1118 HFA384x_RID_STASUPRANGE, HFA384x_RID_STASUPRANGE_LEN, 0,
1119 prism2mib_uint32array },
1120 { DIDmib_p2_p2NIC_p2MFIActRanges,
1121 F_AP | F_STA | F_READ,
1122 HFA384x_RID_STA_MFIACTRANGES, HFA384x_RID_MFIACTRANGES_LEN, 0,
1123 prism2mib_uint32array },
1124 { DIDmib_p2_p2NIC_p2STACFIActRanges,
1125 F_AP | F_STA | F_READ,
1126 HFA384x_RID_STA_CFIACTRANGES, HFA384x_RID_CFIACTRANGES2_LEN, 0,
1127 prism2mib_uint32array },
1128
1129 /* p2MAC MIB's */
1130
1131 { DIDmib_p2_p2MAC_p2PortStatus,
1132 F_STA | F_READ,
1133 HFA384x_RID_PORTSTATUS, 0, 0,
1134 prism2mib_uint32 },
1135 { DIDmib_p2_p2MAC_p2CurrentSSID,
1136 F_STA | F_READ,
1137 HFA384x_RID_CURRENTSSID, HFA384x_RID_CURRENTSSID_LEN, 0,
1138 prism2mib_bytestr2pstr },
1139 { DIDmib_p2_p2MAC_p2CurrentBSSID,
1140 F_STA | F_READ,
1141 HFA384x_RID_CURRENTBSSID, HFA384x_RID_CURRENTBSSID_LEN, 0,
1142 prism2mib_bytearea2pstr },
1143 { DIDmib_p2_p2MAC_p2CommsQuality,
1144 F_STA | F_READ,
1145 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 0,
1146 prism2mib_uint32array },
1147 { DIDmib_p2_p2MAC_p2CommsQualityCQ,
1148 F_STA | F_READ,
1149 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 0,
1150 prism2mib_uint32offset },
1151 { DIDmib_p2_p2MAC_p2CommsQualityASL,
1152 F_STA | F_READ,
1153 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 1,
1154 prism2mib_uint32offset },
1155 { DIDmib_p2_p2MAC_p2CommsQualityANL,
1156 F_STA | F_READ,
1157 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 2,
1158 prism2mib_uint32offset },
1159 { DIDmib_p2_p2MAC_p2dbmCommsQuality,
1160 F_STA | F_READ,
1161 HFA384x_RID_DBMCOMMSQUALITY, HFA384x_RID_DBMCOMMSQUALITY_LEN, 0,
1162 prism2mib_uint32array },
1163 { DIDmib_p2_p2MAC_p2dbmCommsQualityCQ,
1164 F_STA | F_READ,
1165 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 0,
1166 prism2mib_uint32offset },
1167 { DIDmib_p2_p2MAC_p2dbmCommsQualityASL,
1168 F_STA | F_READ,
1169 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 1,
1170 prism2mib_uint32offset },
1171 { DIDmib_p2_p2MAC_p2dbmCommsQualityANL,
1172 F_STA | F_READ,
1173 HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 2,
1174 prism2mib_uint32offset },
1175 { DIDmib_p2_p2MAC_p2CurrentTxRate,
1176 F_STA | F_READ,
1177 HFA384x_RID_CURRENTTXRATE, 0, 0,
1178 prism2mib_uint32 },
1179 { DIDmib_p2_p2MAC_p2CurrentBeaconInterval,
1180 F_AP | F_STA | F_READ,
1181 HFA384x_RID_CURRENTBCNINT, 0, 0,
1182 prism2mib_uint32 },
1183 { DIDmib_p2_p2MAC_p2StaCurrentScaleThresholds,
1184 F_STA | F_READ,
1185 HFA384x_RID_CURRENTSCALETHRESH, HFA384x_RID_STACURSCALETHRESH_LEN, 0,
1186 prism2mib_uint32array },
1187 { DIDmib_p2_p2MAC_p2APCurrentScaleThresholds,
1188 F_AP | F_READ,
1189 HFA384x_RID_CURRENTSCALETHRESH, HFA384x_RID_APCURSCALETHRESH_LEN, 0,
1190 prism2mib_uint32array },
1191 { DIDmib_p2_p2MAC_p2ProtocolRspTime,
1192 F_AP | F_STA | F_READ,
1193 HFA384x_RID_PROTOCOLRSPTIME, 0, 0,
1194 prism2mib_uint32 },
1195 { DIDmib_p2_p2MAC_p2ShortRetryLimit,
1196 F_AP | F_STA | F_READ,
1197 HFA384x_RID_SHORTRETRYLIMIT, 0, 0,
1198 prism2mib_uint32 },
1199 { DIDmib_p2_p2MAC_p2LongRetryLimit,
1200 F_AP | F_STA | F_READ,
1201 HFA384x_RID_LONGRETRYLIMIT, 0, 0,
1202 prism2mib_uint32 },
1203 { DIDmib_p2_p2MAC_p2MaxTransmitLifetime,
1204 F_AP | F_STA | F_READ,
1205 HFA384x_RID_MAXTXLIFETIME, 0, 0,
1206 prism2mib_uint32 },
1207 { DIDmib_p2_p2MAC_p2MaxReceiveLifetime,
1208 F_AP | F_STA | F_READ,
1209 HFA384x_RID_MAXRXLIFETIME, 0, 0,
1210 prism2mib_uint32 },
1211 { DIDmib_p2_p2MAC_p2CFPollable,
1212 F_STA | F_READ,
1213 HFA384x_RID_CFPOLLABLE, 0, 0,
1214 prism2mib_uint32 },
1215 { DIDmib_p2_p2MAC_p2AuthenticationAlgorithms,
1216 F_AP | F_STA | F_READ,
1217 HFA384x_RID_AUTHALGORITHMS, HFA384x_RID_AUTHALGORITHMS_LEN, 0,
1218 prism2mib_uint32array },
1219 { DIDmib_p2_p2MAC_p2PrivacyOptionImplemented,
1220 F_AP | F_STA | F_READ,
1221 HFA384x_RID_PRIVACYOPTIMP, 0, 0,
1222 prism2mib_uint32 },
1223 { DIDmib_p2_p2MAC_p2CurrentTxRate1,
1224 F_AP | F_READ,
1225 HFA384x_RID_CURRENTTXRATE1, 0, 0,
1226 prism2mib_uint32 },
1227 { DIDmib_p2_p2MAC_p2CurrentTxRate2,
1228 F_AP | F_READ,
1229 HFA384x_RID_CURRENTTXRATE2, 0, 0,
1230 prism2mib_uint32 },
1231 { DIDmib_p2_p2MAC_p2CurrentTxRate3,
1232 F_AP | F_READ,
1233 HFA384x_RID_CURRENTTXRATE3, 0, 0,
1234 prism2mib_uint32 },
1235 { DIDmib_p2_p2MAC_p2CurrentTxRate4,
1236 F_AP | F_READ,
1237 HFA384x_RID_CURRENTTXRATE4, 0, 0,
1238 prism2mib_uint32 },
1239 { DIDmib_p2_p2MAC_p2CurrentTxRate5,
1240 F_AP | F_READ,
1241 HFA384x_RID_CURRENTTXRATE5, 0, 0,
1242 prism2mib_uint32 },
1243 { DIDmib_p2_p2MAC_p2CurrentTxRate6,
1244 F_AP | F_READ,
1245 HFA384x_RID_CURRENTTXRATE6, 0, 0,
1246 prism2mib_uint32 },
1247 { DIDmib_p2_p2MAC_p2OwnMACAddress,
1248 F_AP | F_READ,
1249 HFA384x_RID_OWNMACADDRESS, HFA384x_RID_OWNMACADDRESS_LEN, 0,
1250 prism2mib_bytearea2pstr },
1251
1252 /* p2Modem MIB's */
1253
1254 { DIDmib_p2_p2Modem_p2PHYType,
1255 F_AP | F_STA | F_READ,
1256 HFA384x_RID_PHYTYPE, 0, 0,
1257 prism2mib_uint32 },
1258 { DIDmib_p2_p2Modem_p2CurrentChannel,
1259 F_AP | F_STA | F_READ,
1260 HFA384x_RID_CURRENTCHANNEL, 0, 0,
1261 prism2mib_uint32 },
1262 { DIDmib_p2_p2Modem_p2CurrentPowerState,
1263 F_AP | F_STA | F_READ,
1264 HFA384x_RID_CURRENTPOWERSTATE, 0, 0,
1265 prism2mib_uint32 },
1266 { DIDmib_p2_p2Modem_p2CCAMode,
1267 F_AP | F_STA | F_READ,
1268 HFA384x_RID_CCAMODE, 0, 0,
1269 prism2mib_uint32 },
1270 { DIDmib_p2_p2Modem_p2TxPowerMax,
1271 F_AP | F_STA | F_READ | F_WRITE,
1272 HFA384x_RID_TXPOWERMAX, 0, 0,
1273 prism2mib_uint32 },
1274 { DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel,
1275 F_AP | F_STA | F_READ | F_WRITE,
1276 HFA384x_RID_TXPOWERMAX, 0, 0,
1277 prism2mib_uint32 },
1278 { DIDmib_p2_p2Modem_p2SupportedDataRates,
1279 F_AP | F_STA | F_READ,
1280 HFA384x_RID_SUPPORTEDDATARATES, HFA384x_RID_SUPPORTEDDATARATES_LEN, 0,
1281 prism2mib_bytestr2pstr },
1282
1283 /* And finally, lnx mibs */
1284 { DIDmib_lnx_lnxConfigTable_lnxRSNAIE,
1285 F_STA | F_READ | F_WRITE,
1286 HFA384x_RID_CNFWPADATA, 0, 0,
1287 prism2mib_priv },
1288 { 0, 0, 0, 0, 0, NULL}};
1289
1290/*----------------------------------------------------------------
1291These MIB's are not supported at this time:
1292
1293DIDmib_dot11phy_dot11PhyOperationTable_dot11ChannelAgilityPresent
1294DIDmib_dot11phy_dot11PhyOperationTable_dot11ChannelAgilityEnabled
1295DIDmib_dot11phy_dot11PhyDSSSTable_dot11PBCCOptionImplemented
1296DIDmib_dot11phy_dot11RegDomainsSupportedTable_dot11RegDomainsSupportIndex
1297DIDmib_dot11phy_dot11SupportedDataRatesTxTable_dot11SupportedDataRatesTxIndex
1298DIDmib_dot11phy_dot11SupportedDataRatesTxTable_dot11SupportedDataRatesTxValue
1299DIDmib_dot11phy_dot11SupportedDataRatesRxTable_dot11SupportedDataRatesRxIndex
1300DIDmib_dot11phy_dot11SupportedDataRatesRxTable_dot11SupportedDataRatesRxValue
1301
1302DIDmib_dot11phy_dot11RegDomainsSupportedTable_dot11RegDomainsSupportValue
1303TODO: need to investigate why wlan has this as enumerated and Prism2 has this
1304 as btye str.
1305
1306DIDmib_dot11phy_dot11PhyDSSSTable_dot11ShortPreambleOptionImplemented
1307TODO: Find out the firmware version number(s) for identifying
1308 whether the firmware is capable of short preamble. TRUE or FALSE
1309 will be returned based on the version of the firmware.
1310
1311WEP Key mappings aren't supported in the f/w.
1312DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingIndex
1313DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingAddress
1314DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingWEPOn
1315DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingValue
1316DIDmib_dot11smt_dot11PrivacyTable_dot11WEPKeyMappingLength
1317
1318TODO: implement counters.
1319DIDmib_dot11smt_dot11PrivacyTable_dot11WEPICVErrorCount
1320DIDmib_dot11smt_dot11PrivacyTable_dot11WEPExcludedCount
1321DIDmib_dot11mac_dot11CountersTable_dot11TransmittedFragmentCount
1322DIDmib_dot11mac_dot11CountersTable_dot11MulticastTransmittedFrameCount
1323DIDmib_dot11mac_dot11CountersTable_dot11FailedCount
1324DIDmib_dot11mac_dot11CountersTable_dot11RetryCount
1325DIDmib_dot11mac_dot11CountersTable_dot11MultipleRetryCount
1326DIDmib_dot11mac_dot11CountersTable_dot11FrameDuplicateCount
1327DIDmib_dot11mac_dot11CountersTable_dot11RTSSuccessCount
1328DIDmib_dot11mac_dot11CountersTable_dot11RTSFailureCount
1329DIDmib_dot11mac_dot11CountersTable_dot11ACKFailureCount
1330DIDmib_dot11mac_dot11CountersTable_dot11ReceivedFragmentCount
1331DIDmib_dot11mac_dot11CountersTable_dot11MulticastReceivedFrameCount
1332DIDmib_dot11mac_dot11CountersTable_dot11FCSErrorCount
1333DIDmib_dot11mac_dot11CountersTable_dot11TransmittedFrameCount
1334DIDmib_dot11mac_dot11CountersTable_dot11WEPUndecryptableCount
1335
1336TODO: implement sane values for these.
1337DIDmib_dot11mac_dot11OperationTable_dot11ManufacturerID
1338DIDmib_dot11mac_dot11OperationTable_dot11ProductID
1339
1340Not too worried about these at the moment.
1341DIDmib_dot11phy_dot11PhyAntennaTable_dot11CurrentTxAntenna
1342DIDmib_dot11phy_dot11PhyAntennaTable_dot11DiversitySupport
1343DIDmib_dot11phy_dot11PhyAntennaTable_dot11CurrentRxAntenna
1344DIDmib_dot11phy_dot11PhyTxPowerTable_dot11NumberSupportedPowerLevels
1345DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel1
1346DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel2
1347DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel3
1348DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel4
1349DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel5
1350DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel6
1351DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel7
1352DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8
1353DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel
1354
1355Ummm, FH and IR don't apply
1356DIDmib_dot11phy_dot11PhyFHSSTable_dot11HopTime
1357DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentChannelNumber
1358DIDmib_dot11phy_dot11PhyFHSSTable_dot11MaxDwellTime
1359DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentDwellTime
1360DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentSet
1361DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentPattern
1362DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentIndex
1363DIDmib_dot11phy_dot11PhyDSSSTable_dot11CCAModeSupported
1364DIDmib_dot11phy_dot11PhyDSSSTable_dot11EDThreshold
1365DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogTimerMax
1366DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogCountMax
1367DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogTimerMin
1368DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogCountMin
1369
1370We just don't have enough antennas right now to worry about this.
1371DIDmib_dot11phy_dot11AntennasListTable_dot11AntennaListIndex
1372DIDmib_dot11phy_dot11AntennasListTable_dot11SupportedTxAntenna
1373DIDmib_dot11phy_dot11AntennasListTable_dot11SupportedRxAntenna
1374DIDmib_dot11phy_dot11AntennasListTable_dot11DiversitySelectionRx
1375
1376------------------------------------------------------------------*/
1377
1378/*================================================================*/
1379/* Function Definitions */
1380
1381/*----------------------------------------------------------------
1382* prism2mgmt_mibset_mibget
1383*
1384* Set the value of a mib item.
1385*
1386* Arguments:
1387* wlandev wlan device structure
1388* msgp ptr to msg buffer
1389*
1390* Returns:
1391* 0 success and done
1392* <0 success, but we're waiting for something to finish.
1393* >0 an error occurred while handling the message.
1394* Side effects:
1395*
1396* Call context:
1397* process thread (usually)
1398* interrupt
1399----------------------------------------------------------------*/
1400
1401int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp)
1402{
1403 hfa384x_t *hw = wlandev->priv;
1404 int result, isget;
1405 mibrec_t *mib;
1406 UINT16 which;
1407
1408 p80211msg_dot11req_mibset_t *msg = msgp;
1409 p80211itemd_t *mibitem;
1410
1411 DBFENTER;
1412
1413 msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
1414 msg->resultcode.data = P80211ENUM_resultcode_success;
1415
1416 /*
1417 ** Determine if this is an Access Point or a station.
1418 */
1419
1420 which = hw->ap ? F_AP : F_STA;
1421
1422 /*
1423 ** Find the MIB in the MIB table. Note that a MIB may be in the
1424 ** table twice...once for an AP and once for a station. Make sure
1425 ** to get the correct one. Note that DID=0 marks the end of the
1426 ** MIB table.
1427 */
1428
1429 mibitem = (p80211itemd_t *) msg->mibattribute.data;
1430
1431 for (mib = mibtab; mib->did != 0; mib++)
1432 if (mib->did == mibitem->did && (mib->flag & which))
1433 break;
1434
1435 if (mib->did == 0) {
1436 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
1437 goto done;
1438 }
1439
1440 /*
1441 ** Determine if this is a "mibget" or a "mibset". If this is a
1442 ** "mibget", then make sure that the MIB may be read. Otherwise,
1443 ** this is a "mibset" so make make sure that the MIB may be written.
1444 */
1445
1446 isget = (msg->msgcode == DIDmsg_dot11req_mibget);
1447
1448 if (isget) {
1449 if (!(mib->flag & F_READ)) {
1450 msg->resultcode.data =
1451 P80211ENUM_resultcode_cant_get_writeonly_mib;
1452 goto done;
1453 }
1454 } else {
1455 if (!(mib->flag & F_WRITE)) {
1456 msg->resultcode.data =
1457 P80211ENUM_resultcode_cant_set_readonly_mib;
1458 goto done;
1459 }
1460 }
1461
1462 /*
1463 ** Execute the MIB function. If things worked okay, then make
1464 ** sure that the MIB function also worked okay. If so, and this
1465 ** is a "mibget", then the status value must be set for both the
1466 ** "mibattribute" parameter and the mib item within the data
1467 ** portion of the "mibattribute".
1468 */
1469
1470 result = mib->func(mib, isget, wlandev, hw, msg,
1471 (void *) mibitem->data);
1472
1473 if (msg->resultcode.data == P80211ENUM_resultcode_success) {
1474 if (result != 0) {
1475 WLAN_LOG_DEBUG(1, "get/set failure, result=%d\n",
1476 result);
1477 msg->resultcode.data =
1478 P80211ENUM_resultcode_implementation_failure;
1479 } else {
1480 if (isget) {
1481 msg->mibattribute.status =
1482 P80211ENUM_msgitem_status_data_ok;
1483 mibitem->status =
1484 P80211ENUM_msgitem_status_data_ok;
1485 }
1486 }
1487 }
1488
1489done:
1490 DBFEXIT;
1491
1492 return(0);
1493}
1494
1495/*----------------------------------------------------------------
1496* prism2mib_bytestr2pstr
1497*
1498* Get/set pstr data to/from a byte string.
1499*
1500* MIB record parameters:
1501* parm1 Prism2 RID value.
1502* parm2 Number of bytes of RID data.
1503* parm3 Not used.
1504*
1505* Arguments:
1506* mib MIB record.
1507* isget MIBGET/MIBSET flag.
1508* wlandev wlan device structure.
1509* priv "priv" structure.
1510* hw "hw" structure.
1511* msg Message structure.
1512* data Data buffer.
1513*
1514* Returns:
1515* 0 - Success.
1516* ~0 - Error.
1517*
1518----------------------------------------------------------------*/
1519
1520static int prism2mib_bytestr2pstr(
1521mibrec_t *mib,
1522int isget,
1523wlandevice_t *wlandev,
1524hfa384x_t *hw,
1525p80211msg_dot11req_mibset_t *msg,
1526void *data)
1527{
1528 int result;
1529 p80211pstrd_t *pstr = (p80211pstrd_t*) data;
1530 UINT8 bytebuf[MIB_TMP_MAXLEN];
1531 hfa384x_bytestr_t *p2bytestr = (hfa384x_bytestr_t*) bytebuf;
1532
1533 DBFENTER;
1534
1535 if (isget) {
1536 result = hfa384x_drvr_getconfig(hw, mib->parm1, bytebuf, mib->parm2);
1537 prism2mgmt_bytestr2pstr(p2bytestr, pstr);
1538 } else {
1539 memset(bytebuf, 0, mib->parm2);
1540 prism2mgmt_pstr2bytestr(p2bytestr, pstr);
1541 result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, mib->parm2);
1542 }
1543
1544 DBFEXIT;
1545 return(result);
1546}
1547
1548/*----------------------------------------------------------------
1549* prism2mib_bytearea2pstr
1550*
1551* Get/set pstr data to/from a byte area.
1552*
1553* MIB record parameters:
1554* parm1 Prism2 RID value.
1555* parm2 Number of bytes of RID data.
1556* parm3 Not used.
1557*
1558* Arguments:
1559* mib MIB record.
1560* isget MIBGET/MIBSET flag.
1561* wlandev wlan device structure.
1562* priv "priv" structure.
1563* hw "hw" structure.
1564* msg Message structure.
1565* data Data buffer.
1566*
1567* Returns:
1568* 0 - Success.
1569* ~0 - Error.
1570*
1571----------------------------------------------------------------*/
1572
1573static int prism2mib_bytearea2pstr(
1574mibrec_t *mib,
1575int isget,
1576wlandevice_t *wlandev,
1577hfa384x_t *hw,
1578p80211msg_dot11req_mibset_t *msg,
1579void *data)
1580{
1581 int result;
1582 p80211pstrd_t *pstr = (p80211pstrd_t*) data;
1583 UINT8 bytebuf[MIB_TMP_MAXLEN];
1584
1585 DBFENTER;
1586
1587 if (isget) {
1588 result = hfa384x_drvr_getconfig(hw, mib->parm1, bytebuf, mib->parm2);
1589 prism2mgmt_bytearea2pstr(bytebuf, pstr, mib->parm2);
1590 } else {
1591 memset(bytebuf, 0, mib->parm2);
1592 prism2mgmt_pstr2bytearea(bytebuf, pstr);
1593 result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, mib->parm2);
1594 }
1595
1596 DBFEXIT;
1597 return(result);
1598}
1599
1600/*----------------------------------------------------------------
1601* prism2mib_uint32
1602*
1603* Get/set uint32 data.
1604*
1605* MIB record parameters:
1606* parm1 Prism2 RID value.
1607* parm2 Not used.
1608* parm3 Not used.
1609*
1610* Arguments:
1611* mib MIB record.
1612* isget MIBGET/MIBSET flag.
1613* wlandev wlan device structure.
1614* priv "priv" structure.
1615* hw "hw" structure.
1616* msg Message structure.
1617* data Data buffer.
1618*
1619* Returns:
1620* 0 - Success.
1621* ~0 - Error.
1622*
1623----------------------------------------------------------------*/
1624
1625static int prism2mib_uint32(
1626mibrec_t *mib,
1627int isget,
1628wlandevice_t *wlandev,
1629hfa384x_t *hw,
1630p80211msg_dot11req_mibset_t *msg,
1631void *data)
1632{
1633 int result;
1634 UINT32 *uint32 = (UINT32*) data;
1635 UINT8 bytebuf[MIB_TMP_MAXLEN];
1636 UINT16 *wordbuf = (UINT16*) bytebuf;
1637
1638 DBFENTER;
1639
1640 if (isget) {
1641 result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
1642 *uint32 = *wordbuf;
1643 /* [MSM] Removed, getconfig16 returns the value in host order.
1644 * prism2mgmt_prism2int2p80211int(wordbuf, uint32);
1645 */
1646 } else {
1647 /* [MSM] Removed, setconfig16 expects host order.
1648 * prism2mgmt_p80211int2prism2int(wordbuf, uint32);
1649 */
1650 *wordbuf = *uint32;
1651 result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
1652 }
1653
1654 DBFEXIT;
1655 return(result);
1656}
1657
1658/*----------------------------------------------------------------
1659* prism2mib_uint32array
1660*
1661* Get/set an array of uint32 data.
1662*
1663* MIB record parameters:
1664* parm1 Prism2 RID value.
1665* parm2 Number of bytes of RID data.
1666* parm3 Not used.
1667*
1668* Arguments:
1669* mib MIB record.
1670* isget MIBGET/MIBSET flag.
1671* wlandev wlan device structure.
1672* priv "priv" structure.
1673* hw "hw" structure.
1674* msg Message structure.
1675* data Data buffer.
1676*
1677* Returns:
1678* 0 - Success.
1679* ~0 - Error.
1680*
1681----------------------------------------------------------------*/
1682
1683static int prism2mib_uint32array(
1684mibrec_t *mib,
1685int isget,
1686wlandevice_t *wlandev,
1687hfa384x_t *hw,
1688p80211msg_dot11req_mibset_t *msg,
1689void *data)
1690{
1691 int result;
1692 UINT32 *uint32 = (UINT32 *) data;
1693 UINT8 bytebuf[MIB_TMP_MAXLEN];
1694 UINT16 *wordbuf = (UINT16*) bytebuf;
1695 int i, cnt;
1696
1697 DBFENTER;
1698
1699 cnt = mib->parm2 / sizeof(UINT16);
1700
1701 if (isget) {
1702 result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
1703 for (i = 0; i < cnt; i++)
1704 prism2mgmt_prism2int2p80211int(wordbuf+i, uint32+i);
1705 } else {
1706 for (i = 0; i < cnt; i++)
1707 prism2mgmt_p80211int2prism2int(wordbuf+i, uint32+i);
1708 result = hfa384x_drvr_setconfig(hw, mib->parm1, wordbuf, mib->parm2);
1709 }
1710
1711 DBFEXIT;
1712 return(result);
1713}
1714
1715/*----------------------------------------------------------------
1716* prism2mib_uint32offset
1717*
1718* Get/set a single element in an array of uint32 data.
1719*
1720* MIB record parameters:
1721* parm1 Prism2 RID value.
1722* parm2 Number of bytes of RID data.
1723* parm3 Element index.
1724*
1725* Arguments:
1726* mib MIB record.
1727* isget MIBGET/MIBSET flag.
1728* wlandev wlan device structure.
1729* priv "priv" structure.
1730* hw "hw" structure.
1731* msg Message structure.
1732* data Data buffer.
1733*
1734* Returns:
1735* 0 - Success.
1736* ~0 - Error.
1737*
1738----------------------------------------------------------------*/
1739
1740static int prism2mib_uint32offset(
1741mibrec_t *mib,
1742int isget,
1743wlandevice_t *wlandev,
1744hfa384x_t *hw,
1745p80211msg_dot11req_mibset_t *msg,
1746void *data)
1747{
1748 int result;
1749 UINT32 *uint32 = (UINT32*) data;
1750 UINT8 bytebuf[MIB_TMP_MAXLEN];
1751 UINT16 *wordbuf = (UINT16*) bytebuf;
1752 UINT16 cnt;
1753
1754 DBFENTER;
1755
1756 cnt = mib->parm2 / sizeof(UINT16);
1757
1758 result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
1759 if (result == 0) {
1760 if (isget) {
1761 if (mib->parm3 < cnt)
1762 prism2mgmt_prism2int2p80211int(wordbuf+mib->parm3, uint32);
1763 else
1764 *uint32 = 0;
1765 } else {
1766 if (mib->parm3 < cnt) {
1767 prism2mgmt_p80211int2prism2int(wordbuf+mib->parm3, uint32);
1768 result = hfa384x_drvr_setconfig(hw, mib->parm1, wordbuf, mib->parm2);
1769 }
1770 }
1771 }
1772
1773 DBFEXIT;
1774 return(result);
1775}
1776
1777/*----------------------------------------------------------------
1778* prism2mib_truth
1779*
1780* Get/set truth data.
1781*
1782* MIB record parameters:
1783* parm1 Prism2 RID value.
1784* parm2 Not used.
1785* parm3 Not used.
1786*
1787* Arguments:
1788* mib MIB record.
1789* isget MIBGET/MIBSET flag.
1790* wlandev wlan device structure.
1791* priv "priv" structure.
1792* hw "hw" structure.
1793* msg Message structure.
1794* data Data buffer.
1795*
1796* Returns:
1797* 0 - Success.
1798* ~0 - Error.
1799*
1800----------------------------------------------------------------*/
1801
1802static int prism2mib_truth(
1803mibrec_t *mib,
1804int isget,
1805wlandevice_t *wlandev,
1806hfa384x_t *hw,
1807p80211msg_dot11req_mibset_t *msg,
1808void *data)
1809{
1810 int result;
1811 UINT32 *uint32 = (UINT32*) data;
1812 UINT8 bytebuf[MIB_TMP_MAXLEN];
1813 UINT16 *wordbuf = (UINT16*) bytebuf;
1814
1815 DBFENTER;
1816
1817 if (isget) {
1818 result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
1819 *uint32 = (*wordbuf) ?
1820 P80211ENUM_truth_true : P80211ENUM_truth_false;
1821 } else {
1822 *wordbuf = ((*uint32) == P80211ENUM_truth_true) ? 1 : 0;
1823 result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
1824 }
1825
1826 DBFEXIT;
1827 return(result);
1828}
1829
1830/*----------------------------------------------------------------
1831* prism2mib_flag
1832*
1833* Get/set a flag.
1834*
1835* MIB record parameters:
1836* parm1 Prism2 RID value.
1837* parm2 Bit to get/set.
1838* parm3 Not used.
1839*
1840* Arguments:
1841* mib MIB record.
1842* isget MIBGET/MIBSET flag.
1843* wlandev wlan device structure.
1844* priv "priv" structure.
1845* hw "hw" structure.
1846* msg Message structure.
1847* data Data buffer.
1848*
1849* Returns:
1850* 0 - Success.
1851* ~0 - Error.
1852*
1853----------------------------------------------------------------*/
1854
1855static int prism2mib_flag(
1856mibrec_t *mib,
1857int isget,
1858wlandevice_t *wlandev,
1859hfa384x_t *hw,
1860p80211msg_dot11req_mibset_t *msg,
1861void *data)
1862{
1863 int result;
1864 UINT32 *uint32 = (UINT32*) data;
1865 UINT8 bytebuf[MIB_TMP_MAXLEN];
1866 UINT16 *wordbuf = (UINT16*) bytebuf;
1867 UINT32 flags;
1868
1869 DBFENTER;
1870
1871 result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
1872 if (result == 0) {
1873 /* [MSM] Removed, getconfig16 returns the value in host order.
1874 * prism2mgmt_prism2int2p80211int(wordbuf, &flags);
1875 */
1876 flags = *wordbuf;
1877 if (isget) {
1878 *uint32 = (flags & mib->parm2) ?
1879 P80211ENUM_truth_true : P80211ENUM_truth_false;
1880 } else {
1881 if ((*uint32) == P80211ENUM_truth_true)
1882 flags |= mib->parm2;
1883 else
1884 flags &= ~mib->parm2;
1885 /* [MSM] Removed, setconfig16 expects host order.
1886 * prism2mgmt_p80211int2prism2int(wordbuf, &flags);
1887 */
1888 *wordbuf = flags;
1889 result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
1890 }
1891 }
1892
1893 DBFEXIT;
1894 return(result);
1895}
1896
1897/*----------------------------------------------------------------
1898* prism2mib_appcfinfoflag
1899*
1900* Get/set a single flag in the APPCFINFO record.
1901*
1902* MIB record parameters:
1903* parm1 Bit to get/set.
1904* parm2 Not used.
1905* parm3 Not used.
1906*
1907* Arguments:
1908* mib MIB record.
1909* isget MIBGET/MIBSET flag.
1910* wlandev wlan device structure.
1911* priv "priv" structure.
1912* hw "hw" structure.
1913* msg Message structure.
1914* data Data buffer.
1915*
1916* Returns:
1917* 0 - Success.
1918* ~0 - Error.
1919*
1920----------------------------------------------------------------*/
1921
1922static int prism2mib_appcfinfoflag(
1923mibrec_t *mib,
1924int isget,
1925wlandevice_t *wlandev,
1926hfa384x_t *hw,
1927p80211msg_dot11req_mibset_t *msg,
1928void *data)
1929{
1930 int result;
1931 UINT32 *uint32 = (UINT32*) data;
1932 UINT8 bytebuf[MIB_TMP_MAXLEN];
1933 UINT16 *wordbuf = (UINT16*) bytebuf;
1934 UINT16 word;
1935
1936 DBFENTER;
1937
1938 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_CNFAPPCFINFO,
1939 bytebuf, HFA384x_RID_CNFAPPCFINFO_LEN);
1940 if (result == 0) {
1941 if (isget) {
1942 *uint32 = (hfa384x2host_16(wordbuf[3]) & mib->parm1) ?
1943 P80211ENUM_truth_true : P80211ENUM_truth_false;
1944 } else {
1945 word = hfa384x2host_16(wordbuf[3]);
1946 word = ((*uint32) == P80211ENUM_truth_true) ?
1947 (word | mib->parm1) : (word & ~mib->parm1);
1948 wordbuf[3] = host2hfa384x_16(word);
1949 result = hfa384x_drvr_setconfig(hw, HFA384x_RID_CNFAPPCFINFO,
1950 bytebuf, HFA384x_RID_CNFAPPCFINFO_LEN);
1951 }
1952 }
1953
1954 DBFEXIT;
1955 return(result);
1956}
1957
1958/*----------------------------------------------------------------
1959* prism2mib_regulatorydomains
1960*
1961* Get regulatory domain data.
1962*
1963* MIB record parameters:
1964* parm1 Prism2 RID value.
1965* parm2 Number of bytes of RID data.
1966* parm3 Not used.
1967*
1968* Arguments:
1969* mib MIB record.
1970* isget MIBGET/MIBSET flag.
1971* wlandev wlan device structure.
1972* priv "priv" structure.
1973* hw "hw" structure.
1974* msg Message structure.
1975* data Data buffer.
1976*
1977* Returns:
1978* 0 - Success.
1979* ~0 - Error.
1980*
1981----------------------------------------------------------------*/
1982
1983static int prism2mib_regulatorydomains(
1984mibrec_t *mib,
1985int isget,
1986wlandevice_t *wlandev,
1987hfa384x_t *hw,
1988p80211msg_dot11req_mibset_t *msg,
1989void *data)
1990{
1991 int result;
1992 UINT32 cnt;
1993 p80211pstrd_t *pstr = (p80211pstrd_t*) data;
1994 UINT8 bytebuf[MIB_TMP_MAXLEN];
1995 UINT16 *wordbuf = (UINT16*) bytebuf;
1996
1997 DBFENTER;
1998
1999 result = 0;
2000
2001 if (isget) {
2002 result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
2003 prism2mgmt_prism2int2p80211int(wordbuf, &cnt);
2004 pstr->len = (UINT8) cnt;
2005 memcpy(pstr->data, &wordbuf[1], pstr->len);
2006 }
2007
2008 DBFEXIT;
2009 return(result);
2010}
2011
2012/*----------------------------------------------------------------
2013* prism2mib_wepdefaultkey
2014*
2015* Get/set WEP default keys.
2016*
2017* MIB record parameters:
2018* parm1 Prism2 RID value.
2019* parm2 Number of bytes of RID data.
2020* parm3 Not used.
2021*
2022* Arguments:
2023* mib MIB record.
2024* isget MIBGET/MIBSET flag.
2025* wlandev wlan device structure.
2026* priv "priv" structure.
2027* hw "hw" structure.
2028* msg Message structure.
2029* data Data buffer.
2030*
2031* Returns:
2032* 0 - Success.
2033* ~0 - Error.
2034*
2035----------------------------------------------------------------*/
2036
2037static int prism2mib_wepdefaultkey(
2038mibrec_t *mib,
2039int isget,
2040wlandevice_t *wlandev,
2041hfa384x_t *hw,
2042p80211msg_dot11req_mibset_t *msg,
2043void *data)
2044{
2045 int result;
2046 p80211pstrd_t *pstr = (p80211pstrd_t*) data;
2047 UINT8 bytebuf[MIB_TMP_MAXLEN];
2048 UINT16 len;
2049
2050 DBFENTER;
2051
2052 if (isget) {
2053 result = 0; /* Should never happen. */
2054 } else {
2055 len = (pstr->len > 5) ? HFA384x_RID_CNFWEP128DEFAULTKEY_LEN :
2056 HFA384x_RID_CNFWEPDEFAULTKEY_LEN;
2057 memset(bytebuf, 0, len);
2058 prism2mgmt_pstr2bytearea(bytebuf, pstr);
2059 result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, len);
2060 }
2061
2062 DBFEXIT;
2063 return(result);
2064}
2065
2066/*----------------------------------------------------------------
2067* prism2mib_powermanagement
2068*
2069* Get/set 802.11 power management value. Note that this is defined differently
2070* by 802.11 and Prism2:
2071*
2072* Meaning 802.11 Prism2
2073* active 1 false
2074* powersave 2 true
2075*
2076* MIB record parameters:
2077* parm1 Prism2 RID value.
2078* parm2 Not used.
2079* parm3 Not used.
2080*
2081* Arguments:
2082* mib MIB record.
2083* isget MIBGET/MIBSET flag.
2084* wlandev wlan device structure.
2085* priv "priv" structure.
2086* hw "hw" structure.
2087* msg Message structure.
2088* data Data buffer.
2089*
2090* Returns:
2091* 0 - Success.
2092* ~0 - Error.
2093*
2094----------------------------------------------------------------*/
2095
2096static int prism2mib_powermanagement(
2097mibrec_t *mib,
2098int isget,
2099wlandevice_t *wlandev,
2100hfa384x_t *hw,
2101p80211msg_dot11req_mibset_t *msg,
2102void *data)
2103{
2104 int result;
2105 UINT32 *uint32 = (UINT32*) data;
2106 UINT32 value;
2107
2108 DBFENTER;
2109
2110 if (isget) {
2111 result = prism2mib_uint32(mib, isget, wlandev, hw, msg, &value);
2112 *uint32 = (value == 0) ? 1 : 2;
2113 } else {
2114 value = ((*uint32) == 1) ? 0 : 1;
2115 result = prism2mib_uint32(mib, isget, wlandev, hw, msg, &value);
2116 }
2117
2118 DBFEXIT;
2119 return(result);
2120}
2121
2122/*----------------------------------------------------------------
2123* prism2mib_preamble
2124*
2125* Get/set Prism2 short preamble
2126*
2127* MIB record parameters:
2128* parm1 Prism2 RID value.
2129* parm2 Not used.
2130* parm3 Not used.
2131*
2132* Arguments:
2133* mib MIB record.
2134* isget MIBGET/MIBSET flag.
2135* wlandev wlan device structure.
2136* priv "priv" structure.
2137* hw "hw" structure.
2138* msg Message structure.
2139* data Data buffer.
2140*
2141* Returns:
2142* 0 - Success.
2143* ~0 - Error.
2144*
2145----------------------------------------------------------------*/
2146
2147static int prism2mib_preamble(
2148mibrec_t *mib,
2149int isget,
2150wlandevice_t *wlandev,
2151hfa384x_t *hw,
2152p80211msg_dot11req_mibset_t *msg,
2153void *data)
2154{
2155 int result;
2156 UINT32 *uint32 = (UINT32*) data;
2157 UINT8 bytebuf[MIB_TMP_MAXLEN];
2158 UINT16 *wordbuf = (UINT16*) bytebuf;
2159
2160 DBFENTER;
2161
2162 if (isget) {
2163 result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
2164 *uint32 = *wordbuf;
2165 } else {
2166 *wordbuf = *uint32;
2167 result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
2168 }
2169
2170 DBFEXIT;
2171 return(result);
2172}
2173
2174/*----------------------------------------------------------------
2175* prism2mib_privacyinvoked
2176*
2177* Get/set the dot11PrivacyInvoked value.
2178*
2179* MIB record parameters:
2180* parm1 Prism2 RID value.
2181* parm2 Bit value for PrivacyInvoked flag.
2182* parm3 Not used.
2183*
2184* Arguments:
2185* mib MIB record.
2186* isget MIBGET/MIBSET flag.
2187* wlandev wlan device structure.
2188* priv "priv" structure.
2189* hw "hw" structure.
2190* msg Message structure.
2191* data Data buffer.
2192*
2193* Returns:
2194* 0 - Success.
2195* ~0 - Error.
2196*
2197----------------------------------------------------------------*/
2198
2199static int prism2mib_privacyinvoked(
2200mibrec_t *mib,
2201int isget,
2202wlandevice_t *wlandev,
2203hfa384x_t *hw,
2204p80211msg_dot11req_mibset_t *msg,
2205void *data)
2206{
2207 int result;
2208
2209 DBFENTER;
2210
2211 if (wlandev->hostwep & HOSTWEP_DECRYPT) {
2212 if (wlandev->hostwep & HOSTWEP_DECRYPT)
2213 mib->parm2 |= HFA384x_WEPFLAGS_DISABLE_RXCRYPT;
2214 if (wlandev->hostwep & HOSTWEP_ENCRYPT)
2215 mib->parm2 |= HFA384x_WEPFLAGS_DISABLE_TXCRYPT;
2216 }
2217
2218 result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
2219
2220 DBFEXIT;
2221 return(result);
2222}
2223
2224/*----------------------------------------------------------------
2225* prism2mib_excludeunencrypted
2226*
2227* Get/set the dot11ExcludeUnencrypted value.
2228*
2229* MIB record parameters:
2230* parm1 Prism2 RID value.
2231* parm2 Bit value for ExcludeUnencrypted flag.
2232* parm3 Not used.
2233*
2234* Arguments:
2235* mib MIB record.
2236* isget MIBGET/MIBSET flag.
2237* wlandev wlan device structure.
2238* priv "priv" structure.
2239* hw "hw" structure.
2240* msg Message structure.
2241* data Data buffer.
2242*
2243* Returns:
2244* 0 - Success.
2245* ~0 - Error.
2246*
2247----------------------------------------------------------------*/
2248
2249static int prism2mib_excludeunencrypted(
2250mibrec_t *mib,
2251int isget,
2252wlandevice_t *wlandev,
2253hfa384x_t *hw,
2254p80211msg_dot11req_mibset_t *msg,
2255void *data)
2256{
2257 int result;
2258
2259 DBFENTER;
2260
2261 result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
2262
2263 DBFEXIT;
2264 return(result);
2265}
2266
2267/*----------------------------------------------------------------
2268* prism2mib_fragmentationthreshold
2269*
2270* Get/set the fragmentation threshold.
2271*
2272* MIB record parameters:
2273* parm1 Prism2 RID value.
2274* parm2 Not used.
2275* parm3 Not used.
2276*
2277* Arguments:
2278* mib MIB record.
2279* isget MIBGET/MIBSET flag.
2280* wlandev wlan device structure.
2281* priv "priv" structure.
2282* hw "hw" structure.
2283* msg Message structure.
2284* data Data buffer.
2285*
2286* Returns:
2287* 0 - Success.
2288* ~0 - Error.
2289*
2290----------------------------------------------------------------*/
2291
2292static int prism2mib_fragmentationthreshold(
2293mibrec_t *mib,
2294int isget,
2295wlandevice_t *wlandev,
2296hfa384x_t *hw,
2297p80211msg_dot11req_mibset_t *msg,
2298void *data)
2299{
2300 int result;
2301 UINT32 *uint32 = (UINT32*) data;
2302
2303 DBFENTER;
2304
2305 if (!isget)
2306 if ((*uint32) % 2) {
2307 WLAN_LOG_WARNING("Attempt to set odd number "
2308 "FragmentationThreshold\n");
2309 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2310 return(0);
2311 }
2312
2313 result = prism2mib_uint32(mib, isget, wlandev, hw, msg, data);
2314
2315 DBFEXIT;
2316 return(result);
2317}
2318
2319/*----------------------------------------------------------------
2320* prism2mib_operationalrateset
2321*
2322* Get/set the operational rate set.
2323*
2324* MIB record parameters:
2325* parm1 Prism2 RID value.
2326* parm2 Not used.
2327* parm3 Not used.
2328*
2329* Arguments:
2330* mib MIB record.
2331* isget MIBGET/MIBSET flag.
2332* wlandev wlan device structure.
2333* priv "priv" structure.
2334* hw "hw" structure.
2335* msg Message structure.
2336* data Data buffer.
2337*
2338* Returns:
2339* 0 - Success.
2340* ~0 - Error.
2341*
2342----------------------------------------------------------------*/
2343
2344static int prism2mib_operationalrateset(
2345mibrec_t *mib,
2346int isget,
2347wlandevice_t *wlandev,
2348hfa384x_t *hw,
2349p80211msg_dot11req_mibset_t *msg,
2350void *data)
2351{
2352 int result;
2353 p80211pstrd_t *pstr = (p80211pstrd_t *) data;
2354 UINT8 bytebuf[MIB_TMP_MAXLEN];
2355 UINT16 *wordbuf = (UINT16*) bytebuf;
2356
2357 DBFENTER;
2358
2359 if (isget) {
2360 result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
2361 prism2mgmt_get_oprateset(wordbuf, pstr);
2362 } else {
2363 prism2mgmt_set_oprateset(wordbuf, pstr);
2364 result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
2365 result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, *wordbuf);
2366 }
2367
2368 DBFEXIT;
2369 return(result);
2370}
2371
2372/*----------------------------------------------------------------
2373* prism2mib_groupaddress
2374*
2375* Get/set the dot11GroupAddressesTable.
2376*
2377* MIB record parameters:
2378* parm1 Not used.
2379* parm2 Not used.
2380* parm3 Not used.
2381*
2382* Arguments:
2383* mib MIB record.
2384* isget MIBGET/MIBSET flag.
2385* wlandev wlan device structure.
2386* priv "priv" structure.
2387* hw "hw" structure.
2388* msg Message structure.
2389* data Data buffer.
2390*
2391* Returns:
2392* 0 - Success.
2393* ~0 - Error.
2394*
2395----------------------------------------------------------------*/
2396
2397static int prism2mib_groupaddress(
2398mibrec_t *mib,
2399int isget,
2400wlandevice_t *wlandev,
2401hfa384x_t *hw,
2402p80211msg_dot11req_mibset_t *msg,
2403void *data)
2404{
2405 int result;
2406 p80211pstrd_t *pstr = (p80211pstrd_t *) data;
2407 UINT8 bytebuf[MIB_TMP_MAXLEN];
2408 UINT16 len;
2409
2410 DBFENTER;
2411
2412 /* TODO: fix this. f/w doesn't support mcast filters */
2413
2414 if (isget) {
2415 prism2mgmt_get_grpaddr(mib->did, pstr, hw);
2416 return(0);
2417 }
2418
2419 result = prism2mgmt_set_grpaddr(mib->did, bytebuf, pstr, hw);
2420 if (result != 0) {
2421 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2422 return(result);
2423 }
2424
2425 if (hw->dot11_grpcnt <= MAX_PRISM2_GRP_ADDR) {
2426 len = hw->dot11_grpcnt * WLAN_ADDR_LEN;
2427 memcpy(bytebuf, hw->dot11_grp_addr[0], len);
2428 result = hfa384x_drvr_setconfig(hw, HFA384x_RID_GROUPADDR, bytebuf, len);
2429
2430 /*
2431 ** Turn off promiscuous mode if count is equal to MAX. We may
2432 ** have been at a higher count in promiscuous mode and need to
2433 ** turn it off.
2434 */
2435
2436 /* but only if we're not already in promisc mode. :) */
2437 if ((hw->dot11_grpcnt == MAX_PRISM2_GRP_ADDR) &&
2438 !( wlandev->netdev->flags & IFF_PROMISC)) {
2439 result = hfa384x_drvr_setconfig16(hw,
2440 HFA384x_RID_PROMISCMODE, 0);
2441 }
2442 } else {
2443
2444 /*
2445 ** Clear group addresses in card and set to promiscuous mode.
2446 */
2447
2448 memset(bytebuf, 0, sizeof(bytebuf));
2449 result = hfa384x_drvr_setconfig(hw, HFA384x_RID_GROUPADDR,
2450 bytebuf, 0);
2451 if (result == 0) {
2452 result = hfa384x_drvr_setconfig16(hw,
2453 HFA384x_RID_PROMISCMODE, 1);
2454 }
2455 }
2456
2457 DBFEXIT;
2458 return(result);
2459}
2460
2461/*----------------------------------------------------------------
2462* prism2mib_fwid
2463*
2464* Get the firmware ID.
2465*
2466* MIB record parameters:
2467* parm1 Not used.
2468* parm2 Not used.
2469* parm3 Not used.
2470*
2471* Arguments:
2472* mib MIB record.
2473* isget MIBGET/MIBSET flag.
2474* wlandev wlan device structure.
2475* priv "priv" structure.
2476* hw "hw" structure.
2477* msg Message structure.
2478* data Data buffer.
2479*
2480* Returns:
2481* 0 - Success.
2482* ~0 - Error.
2483*
2484----------------------------------------------------------------*/
2485
2486static int prism2mib_fwid(
2487mibrec_t *mib,
2488int isget,
2489wlandevice_t *wlandev,
2490hfa384x_t *hw,
2491p80211msg_dot11req_mibset_t *msg,
2492void *data)
2493{
2494 int result;
2495 p80211pstrd_t *pstr = (p80211pstrd_t *) data;
2496 hfa384x_FWID_t fwid;
2497
2498 DBFENTER;
2499
2500 if (isget) {
2501 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_FWID,
2502 &fwid, HFA384x_RID_FWID_LEN);
2503 if (mib->did == DIDmib_p2_p2NIC_p2PrimaryFWID) {
2504 fwid.primary[HFA384x_FWID_LEN - 1] = '\0';
2505 pstr->len = strlen(fwid.primary);
2506 memcpy(pstr->data, fwid.primary, pstr->len);
2507 } else {
2508 fwid.secondary[HFA384x_FWID_LEN - 1] = '\0';
2509 pstr->len = strlen(fwid.secondary);
2510 memcpy(pstr->data, fwid.secondary, pstr->len);
2511 }
2512 } else
2513 result = 0; /* Should never happen. */
2514
2515 DBFEXIT;
2516 return(result);
2517}
2518
2519/*----------------------------------------------------------------
2520* prism2mib_authalg
2521*
2522* Get values from the AuhtenticationAlgorithmsTable.
2523*
2524* MIB record parameters:
2525* parm1 Table index (1-6).
2526* parm2 Not used.
2527* parm3 Not used.
2528*
2529* Arguments:
2530* mib MIB record.
2531* isget MIBGET/MIBSET flag.
2532* wlandev wlan device structure.
2533* priv "priv" structure.
2534* hw "hw" structure.
2535* msg Message structure.
2536* data Data buffer.
2537*
2538* Returns:
2539* 0 - Success.
2540* ~0 - Error.
2541*
2542----------------------------------------------------------------*/
2543
2544static int prism2mib_authalg(
2545mibrec_t *mib,
2546int isget,
2547wlandevice_t *wlandev,
2548hfa384x_t *hw,
2549p80211msg_dot11req_mibset_t *msg,
2550void *data)
2551{
2552 UINT32 *uint32 = (UINT32*) data;
2553
2554 DBFENTER;
2555
2556 /* MSM: pkx supplied code that code queries RID FD4D....but the f/w's
2557 * results are bogus. Therefore, we have to simulate the appropriate
2558 * results here in the driver based on our knowledge of existing MAC
2559 * features. That's the whole point behind this ugly function.
2560 */
2561
2562 if (isget) {
2563 msg->resultcode.data = P80211ENUM_resultcode_success;
2564 switch (mib->parm1) {
2565 case 1: /* Open System */
2566 *uint32 = P80211ENUM_authalg_opensystem;
2567 break;
2568 case 2: /* SharedKey */
2569 *uint32 = P80211ENUM_authalg_sharedkey;
2570 break;
2571 default:
2572 *uint32 = 0;
2573 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2574 break;
2575 }
2576 }
2577
2578 DBFEXIT;
2579 return(0);
2580}
2581
2582/*----------------------------------------------------------------
2583* prism2mib_authalgenable
2584*
2585* Get/set the enable values from the AuhtenticationAlgorithmsTable.
2586*
2587* MIB record parameters:
2588* parm1 Table index (1-6).
2589* parm2 Not used.
2590* parm3 Not used.
2591*
2592* Arguments:
2593* mib MIB record.
2594* isget MIBGET/MIBSET flag.
2595* wlandev wlan device structure.
2596* priv "priv" structure.
2597* hw "hw" structure.
2598* msg Message structure.
2599* data Data buffer.
2600*
2601* Returns:
2602* 0 - Success.
2603* ~0 - Error.
2604*
2605----------------------------------------------------------------*/
2606
2607static int prism2mib_authalgenable(
2608mibrec_t *mib,
2609int isget,
2610wlandevice_t *wlandev,
2611hfa384x_t *hw,
2612p80211msg_dot11req_mibset_t *msg,
2613void *data)
2614{
2615 int result;
2616 UINT32 *uint32 = (UINT32*) data;
2617
2618 int index;
2619 UINT16 cnf_auth;
2620 UINT16 mask;
2621
2622 DBFENTER;
2623
2624 index = mib->parm1 - 1;
2625
2626 result = hfa384x_drvr_getconfig16( hw,
2627 HFA384x_RID_CNFAUTHENTICATION, &cnf_auth);
2628 WLAN_LOG_DEBUG(2,"cnfAuthentication0=%d, index=%d\n", cnf_auth, index);
2629
2630 if (isget) {
2631 if ( index == 0 || index == 1 ) {
2632 *uint32 = (cnf_auth & (1<<index)) ?
2633 P80211ENUM_truth_true: P80211ENUM_truth_false;
2634 } else {
2635 *uint32 = P80211ENUM_truth_false;
2636 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2637 }
2638 } else {
2639 if ( index == 0 || index == 1 ) {
2640 mask = 1 << index;
2641 if (*uint32==P80211ENUM_truth_true ) {
2642 cnf_auth |= mask;
2643 } else {
2644 cnf_auth &= ~mask;
2645 }
2646 result = hfa384x_drvr_setconfig16( hw,
2647 HFA384x_RID_CNFAUTHENTICATION, cnf_auth);
2648 WLAN_LOG_DEBUG(2,"cnfAuthentication:=%d\n", cnf_auth);
2649 if ( result ) {
2650 WLAN_LOG_DEBUG(1,"Unable to set p2cnfAuthentication to %d\n", cnf_auth);
2651 msg->resultcode.data = P80211ENUM_resultcode_implementation_failure;
2652 }
2653 } else {
2654 msg->resultcode.data = P80211ENUM_resultcode_not_supported;
2655 }
2656 }
2657
2658 DBFEXIT;
2659 return(result);
2660}
2661
2662/*----------------------------------------------------------------
2663* prism2mib_priv
2664*
2665* Get/set values in the "priv" data structure.
2666*
2667* MIB record parameters:
2668* parm1 Not used.
2669* parm2 Not used.
2670* parm3 Not used.
2671*
2672* Arguments:
2673* mib MIB record.
2674* isget MIBGET/MIBSET flag.
2675* wlandev wlan device structure.
2676* priv "priv" structure.
2677* hw "hw" structure.
2678* msg Message structure.
2679* data Data buffer.
2680*
2681* Returns:
2682* 0 - Success.
2683* ~0 - Error.
2684*
2685----------------------------------------------------------------*/
2686
2687static int prism2mib_priv(
2688mibrec_t *mib,
2689int isget,
2690wlandevice_t *wlandev,
2691hfa384x_t *hw,
2692p80211msg_dot11req_mibset_t *msg,
2693void *data)
2694{
2695 UINT32 *uint32 = (UINT32*) data;
2696 p80211pstrd_t *pstr = (p80211pstrd_t*) data;
2697 p80211macarray_t *macarray = (p80211macarray_t *) data;
2698
2699 int i, cnt, result, done;
2700
2701 prism2sta_authlist_t old;
2702
2703 /*
2704 ** "test" is a lot longer than necessary but who cares? ...as long as
2705 ** it is long enough!
2706 */
2707
2708 UINT8 test[sizeof(wlandev->rx) + sizeof(hw->tallies)];
2709
2710 DBFENTER;
2711
2712 switch (mib->did) {
2713 case DIDmib_p2_p2Table_p2ReceivedFrameStatistics:
2714
2715 /*
2716 ** Note: The values in this record are changed by the
2717 ** interrupt handler and therefore cannot be guaranteed
2718 ** to be stable while they are being copied. However,
2719 ** the interrupt handler will take priority over this
2720 ** code. Hence, if the same values are copied twice,
2721 ** then we are ensured that the values have not been
2722 ** changed. If they have, then just try again. Don't
2723 ** try more than 10 times...if we still haven't got it,
2724 ** then the values we do have are probably good enough.
2725 ** This scheme for copying values is used in order to
2726 ** prevent having to block the interrupt handler while
2727 ** we copy the values.
2728 */
2729
2730 if (isget)
2731 for (i = 0; i < 10; i++) {
2732 memcpy(data, &wlandev->rx, sizeof(wlandev->rx));
2733 memcpy(test, &wlandev->rx, sizeof(wlandev->rx));
2734 if (memcmp(data, test, sizeof(wlandev->rx)) == 0) break;
2735 }
2736
2737 break;
2738
2739 case DIDmib_p2_p2Table_p2CommunicationTallies:
2740
2741 /*
2742 ** Note: The values in this record are changed by the
2743 ** interrupt handler and therefore cannot be guaranteed
2744 ** to be stable while they are being copied. See the
2745 ** note above about copying values.
2746 */
2747
2748 if (isget) {
2749 result = hfa384x_drvr_commtallies(hw);
2750
2751 /* ?????? We need to wait a bit here for the */
2752 /* tallies to get updated. ?????? */
2753 /* MSM: TODO: The right way to do this is to
2754 * add a "commtallie" wait queue to the
2755 * priv structure that gets run every time
2756 * we receive a commtally info frame.
2757 * This process would sleep on that
2758 * queue and get awakened when the
2759 * the requested info frame arrives.
2760 * Don't have time to do and test this
2761 * right now.
2762 */
2763
2764 /* Ugh, this is nasty. */
2765 for (i = 0; i < 10; i++) {
2766 memcpy(data,
2767 &hw->tallies,
2768 sizeof(hw->tallies));
2769 memcpy(test,
2770 &hw->tallies,
2771 sizeof(hw->tallies));
2772 if ( memcmp(data,
2773 test,
2774 sizeof(hw->tallies)) == 0)
2775 break;
2776 }
2777 }
2778
2779 break;
2780
2781 case DIDmib_p2_p2Table_p2Authenticated:
2782
2783 if (isget) {
2784 prism2mib_priv_authlist(hw, &old);
2785
2786 macarray->cnt = 0;
2787 for (i = 0; i < old.cnt; i++) {
2788 if (!old.assoc[i]) {
2789 memcpy(macarray->data[macarray->cnt], old.addr[i], WLAN_ADDR_LEN);
2790 macarray->cnt++;
2791 }
2792 }
2793 }
2794
2795 break;
2796
2797 case DIDmib_p2_p2Table_p2Associated:
2798
2799 if (isget) {
2800 prism2mib_priv_authlist(hw, &old);
2801
2802 macarray->cnt = 0;
2803 for (i = 0; i < old.cnt; i++) {
2804 if (old.assoc[i]) {
2805 memcpy(macarray->data[macarray->cnt], old.addr[i], WLAN_ADDR_LEN);
2806 macarray->cnt++;
2807 }
2808 }
2809 }
2810
2811 break;
2812
2813 case DIDmib_p2_p2Table_p2PowerSaveUserCount:
2814
2815 if (isget)
2816 *uint32 = hw->psusercount;
2817
2818 break;
2819
2820 case DIDmib_p2_p2Table_p2Comment:
2821
2822 if (isget) {
2823 pstr->len = strlen(hw->comment);
2824 memcpy(pstr->data, hw->comment, pstr->len);
2825 } else {
2826 cnt = pstr->len;
2827 if (cnt < 0) cnt = 0;
2828 if (cnt >= sizeof(hw->comment))
2829 cnt = sizeof(hw->comment)-1;
2830 memcpy(hw->comment, pstr->data, cnt);
2831 pstr->data[cnt] = '\0';
2832 }
2833
2834 break;
2835
2836 case DIDmib_p2_p2Table_p2AccessMode:
2837
2838 if (isget)
2839 *uint32 = hw->accessmode;
2840 else
2841 prism2mib_priv_accessmode(hw, *uint32);
2842
2843 break;
2844
2845 case DIDmib_p2_p2Table_p2AccessAllow:
2846
2847 if (isget) {
2848 macarray->cnt = hw->allow.cnt;
2849 memcpy(macarray->data, hw->allow.addr,
2850 macarray->cnt*WLAN_ADDR_LEN);
2851 } else {
2852 prism2mib_priv_accessallow(hw, macarray);
2853 }
2854
2855 break;
2856
2857 case DIDmib_p2_p2Table_p2AccessDeny:
2858
2859 if (isget) {
2860 macarray->cnt = hw->deny.cnt;
2861 memcpy(macarray->data, hw->deny.addr,
2862 macarray->cnt*WLAN_ADDR_LEN);
2863 } else {
2864 prism2mib_priv_accessdeny(hw, macarray);
2865 }
2866
2867 break;
2868
2869 case DIDmib_p2_p2Table_p2ChannelInfoResults:
2870
2871 if (isget) {
2872 done = atomic_read(&hw->channel_info.done);
2873 if (done == 0) {
2874 msg->resultcode.status = P80211ENUM_msgitem_status_no_value;
2875 break;
2876 }
2877 if (done == 1) {
2878 msg->resultcode.status = P80211ENUM_msgitem_status_incomplete_itemdata;
2879 break;
2880 }
2881
2882 for (i = 0; i < 14; i++, uint32 += 5) {
2883 uint32[0] = i+1;
2884 uint32[1] = hw->channel_info.results.result[i].anl;
2885 uint32[2] = hw->channel_info.results.result[i].pnl;
2886 uint32[3] = (hw->channel_info.results.result[i].active & HFA384x_CHINFORESULT_BSSACTIVE) ? 1 : 0;
2887 uint32[4] = (hw->channel_info.results.result[i].active & HFA384x_CHINFORESULT_PCFACTIVE) ? 1 : 0;
2888 }
2889 }
2890
2891 break;
2892
2893 case DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredBSSType:
2894
2895 if (isget)
2896 *uint32 = hw->dot11_desired_bss_type;
2897 else
2898 hw->dot11_desired_bss_type = *uint32;
2899
2900 break;
2901
2902 case DIDmib_lnx_lnxConfigTable_lnxRSNAIE: {
2903 hfa384x_WPAData_t wpa;
2904 if (isget) {
2905 hfa384x_drvr_getconfig( hw, HFA384x_RID_CNFWPADATA,
2906 (UINT8 *) &wpa, sizeof(wpa));
2907 pstr->len = hfa384x2host_16(wpa.datalen);
2908 memcpy(pstr->data, wpa.data, pstr->len);
2909 } else {
2910 wpa.datalen = host2hfa384x_16(pstr->len);
2911 memcpy(wpa.data, pstr->data, pstr->len);
2912
2913 result = hfa384x_drvr_setconfig(hw, HFA384x_RID_CNFWPADATA,
2914 (UINT8 *) &wpa, sizeof(wpa));
2915 }
2916 break;
2917 }
2918 default:
2919 WLAN_LOG_ERROR("Unhandled DID 0x%08x\n", mib->did);
2920 }
2921
2922 DBFEXIT;
2923 return(0);
2924}
2925
2926/*----------------------------------------------------------------
2927* prism2mib_priv_authlist
2928*
2929* Get a copy of the list of authenticated stations.
2930*
2931* Arguments:
2932* priv "priv" structure.
2933* list List of authenticated stations.
2934*
2935* Returns:
2936* Nothing
2937*
2938----------------------------------------------------------------*/
2939
2940static void prism2mib_priv_authlist(
2941hfa384x_t *hw,
2942prism2sta_authlist_t *list)
2943{
2944 prism2sta_authlist_t test;
2945 int i;
2946
2947 DBFENTER;
2948
2949 /*
2950 ** Note: The values in this record are changed by the interrupt
2951 ** handler and therefore cannot be guaranteed to be stable while
2952 ** they are being copied. However, the interrupt handler will
2953 ** take priority over this code. Hence, if the same values are
2954 ** copied twice, then we are ensured that the values have not
2955 ** been changed. If they have, then just try again. Don't try
2956 ** more than 10 times...the list of authenticated stations is
2957 ** unlikely to be changing frequently enough that we can't get
2958 ** a snapshot in 10 tries. Don't try more than this so that we
2959 ** don't risk locking-up for long periods of time. If we still
2960 ** haven't got the snapshot, then generate an error message and
2961 ** return an empty list (since this is the only valid list that
2962 ** we can guarentee). This scheme for copying values is used in
2963 ** order to prevent having to block the interrupt handler while
2964 ** we copy the values.
2965 */
2966
2967 for (i = 0; i < 10; i++) {
2968 memcpy(list, &hw->authlist, sizeof(prism2sta_authlist_t));
2969 memcpy(&test, &hw->authlist, sizeof(prism2sta_authlist_t));
2970 if (memcmp(list, &test, sizeof(prism2sta_authlist_t)) == 0)
2971 break;
2972 }
2973
2974 if (i >= 10) {
2975 list->cnt = 0;
2976 WLAN_LOG_ERROR("Could not obtain snapshot of authenticated stations.\n");
2977 }
2978
2979 DBFEXIT;
2980 return;
2981}
2982
2983/*----------------------------------------------------------------
2984* prism2mib_priv_accessmode
2985*
2986* Set the Access Mode.
2987*
2988* Arguments:
2989* priv "priv" structure.
2990* hw "hw" structure.
2991* mode New access mode.
2992*
2993* Returns:
2994* Nothing
2995*
2996----------------------------------------------------------------*/
2997
2998static void prism2mib_priv_accessmode(
2999hfa384x_t *hw,
3000UINT32 mode)
3001{
3002 prism2sta_authlist_t old;
3003 int i, j, deauth;
3004 UINT8 *addr;
3005
3006 DBFENTER;
3007
3008 /*
3009 ** If the mode is not changing or it is changing to "All", then it's
3010 ** okay to go ahead without a lot of messing around. Otherwise, the
3011 ** access mode is changing in a way that may leave some stations
3012 ** authenticated which should not be authenticated. It will be
3013 ** necessary to de-authenticate these stations.
3014 */
3015
3016 if (mode == WLAN_ACCESS_ALL || mode == hw->accessmode) {
3017 hw->accessmode = mode;
3018 return;
3019 }
3020
3021 /*
3022 ** Switch to the new access mode. Once this is done, then the interrupt
3023 ** handler (which uses this value) will be prevented from authenticating
3024 ** ADDITIONAL stations which should not be authenticated. Then get a
3025 ** copy of the current list of authenticated stations.
3026 */
3027
3028 hw->accessmode = mode;
3029
3030 prism2mib_priv_authlist(hw, &old);
3031
3032 /*
3033 ** Now go through the list of previously authenticated stations (some
3034 ** of which might de-authenticate themselves while we are processing it
3035 ** but that is okay). Any station which no longer matches the access
3036 ** mode, must be de-authenticated.
3037 */
3038
3039 for (i = 0; i < old.cnt; i++) {
3040 addr = old.addr[i];
3041
3042 if (mode == WLAN_ACCESS_NONE)
3043 deauth = 1;
3044 else {
3045 if (mode == WLAN_ACCESS_ALLOW) {
3046 for (j = 0; j < hw->allow.cnt; j++)
3047 if (memcmp(addr, hw->allow.addr[j],
3048 WLAN_ADDR_LEN) == 0)
3049 break;
3050 deauth = (j >= hw->allow.cnt);
3051 } else {
3052 for (j = 0; j < hw->deny.cnt; j++)
3053 if (memcmp(addr, hw->deny.addr[j],
3054 WLAN_ADDR_LEN) == 0)
3055 break;
3056 deauth = (j < hw->deny.cnt);
3057 }
3058 }
3059
3060 if (deauth) prism2mib_priv_deauthenticate(hw, addr);
3061 }
3062
3063 DBFEXIT;
3064 return;
3065}
3066
3067/*----------------------------------------------------------------
3068* prism2mib_priv_accessallow
3069*
3070* Change the list of allowed MAC addresses.
3071*
3072* Arguments:
3073* priv "priv" structure.
3074* hw "hw" structure.
3075* macarray New array of MAC addresses.
3076*
3077* Returns:
3078* Nothing
3079*
3080----------------------------------------------------------------*/
3081
3082static void prism2mib_priv_accessallow(
3083hfa384x_t *hw,
3084p80211macarray_t *macarray)
3085{
3086 prism2sta_authlist_t old;
3087 int i, j;
3088
3089 DBFENTER;
3090
3091 /*
3092 ** Change the access list. Note that the interrupt handler may be in
3093 ** the middle of using the access list!!! Since the interrupt handler
3094 ** will always have priority over this process and this is the only
3095 ** process that will modify the list, this problem can be handled as
3096 ** follows:
3097 **
3098 ** 1. Set the "modify" flag.
3099 ** 2. Change the first copy of the list.
3100 ** 3. Clear the "modify" flag.
3101 ** 4. Change the backup copy of the list.
3102 **
3103 ** The interrupt handler will check the "modify" flag. If NOT set, then
3104 ** the first copy of the list is valid and may be used. Otherwise, the
3105 ** first copy is being changed but the backup copy is valid and may be
3106 ** used. Doing things this way prevents having to have the interrupt
3107 ** handler block while the list is being updated.
3108 */
3109
3110 hw->allow.modify = 1;
3111
3112 hw->allow.cnt = macarray->cnt;
3113 memcpy(hw->allow.addr, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
3114
3115 hw->allow.modify = 0;
3116
3117 hw->allow.cnt1 = macarray->cnt;
3118 memcpy(hw->allow.addr1, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
3119
3120 /*
3121 ** If the current access mode is "Allow", then changing the access
3122 ** list may leave some stations authenticated which should not be
3123 ** authenticated. It will be necessary to de-authenticate these
3124 ** stations. Otherwise, the list can be changed without a lot of fuss.
3125 */
3126
3127 if (hw->accessmode == WLAN_ACCESS_ALLOW) {
3128
3129 /*
3130 ** Go through the list of authenticated stations (some of
3131 ** which might de-authenticate themselves while we are
3132 ** processing it but that is okay). Any station which is
3133 ** no longer in the list of allowed stations, must be
3134 ** de-authenticated.
3135 */
3136
3137 prism2mib_priv_authlist(hw, &old);
3138
3139 for (i = 0; i < old.cnt; i++) {
3140 for (j = 0; j < hw->allow.cnt; j++)
3141 if (memcmp(old.addr[i], hw->allow.addr[j],
3142 WLAN_ADDR_LEN) == 0)
3143 break;
3144 if (j >= hw->allow.cnt)
3145 prism2mib_priv_deauthenticate(hw, old.addr[i]);
3146 }
3147 }
3148
3149 DBFEXIT;
3150 return;
3151}
3152
3153/*----------------------------------------------------------------
3154* prism2mib_priv_accessdeny
3155*
3156* Change the list of denied MAC addresses.
3157*
3158* Arguments:
3159* priv "priv" structure.
3160* hw "hw" structure.
3161* macarray New array of MAC addresses.
3162*
3163* Returns:
3164* Nothing
3165*
3166----------------------------------------------------------------*/
3167
3168static void prism2mib_priv_accessdeny(
3169hfa384x_t *hw,
3170p80211macarray_t *macarray)
3171{
3172 prism2sta_authlist_t old;
3173 int i, j;
3174
3175 DBFENTER;
3176
3177 /*
3178 ** Change the access list. Note that the interrupt handler may be in
3179 ** the middle of using the access list!!! Since the interrupt handler
3180 ** will always have priority over this process and this is the only
3181 ** process that will modify the list, this problem can be handled as
3182 ** follows:
3183 **
3184 ** 1. Set the "modify" flag.
3185 ** 2. Change the first copy of the list.
3186 ** 3. Clear the "modify" flag.
3187 ** 4. Change the backup copy of the list.
3188 **
3189 ** The interrupt handler will check the "modify" flag. If NOT set, then
3190 ** the first copy of the list is valid and may be used. Otherwise, the
3191 ** first copy is being changed but the backup copy is valid and may be
3192 ** used. Doing things this way prevents having to have the interrupt
3193 ** handler block while the list is being updated.
3194 */
3195
3196 hw->deny.modify = 1;
3197
3198 hw->deny.cnt = macarray->cnt;
3199 memcpy(hw->deny.addr, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
3200
3201 hw->deny.modify = 0;
3202
3203 hw->deny.cnt1 = macarray->cnt;
3204 memcpy(hw->deny.addr1, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
3205
3206 /*
3207 ** If the current access mode is "Deny", then changing the access
3208 ** list may leave some stations authenticated which should not be
3209 ** authenticated. It will be necessary to de-authenticate these
3210 ** stations. Otherwise, the list can be changed without a lot of fuss.
3211 */
3212
3213 if (hw->accessmode == WLAN_ACCESS_DENY) {
3214
3215 /*
3216 ** Go through the list of authenticated stations (some of
3217 ** which might de-authenticate themselves while we are
3218 ** processing it but that is okay). Any station which is
3219 ** now in the list of denied stations, must be de-authenticated.
3220 */
3221
3222 prism2mib_priv_authlist(hw, &old);
3223
3224 for (i = 0; i < old.cnt; i++)
3225 for (j = 0; j < hw->deny.cnt; j++)
3226 if (memcmp(old.addr[i], hw->deny.addr[j],
3227 WLAN_ADDR_LEN) == 0) {
3228 prism2mib_priv_deauthenticate(hw, old.addr[i]);
3229 break;
3230 }
3231 }
3232
3233 DBFEXIT;
3234 return;
3235}
3236
3237/*----------------------------------------------------------------
3238* prism2mib_priv_deauthenticate
3239*
3240* De-authenticate a station. This is done by sending a HandoverAddress
3241* information frame to the firmware. This should work, according to
3242* Intersil.
3243*
3244* Arguments:
3245* priv "priv" structure.
3246* hw "hw" structure.
3247* addr MAC address of station to be de-authenticated.
3248*
3249* Returns:
3250* Nothing
3251*
3252----------------------------------------------------------------*/
3253
3254static void prism2mib_priv_deauthenticate(
3255hfa384x_t *hw,
3256UINT8 *addr)
3257{
3258 DBFENTER;
3259 hfa384x_drvr_handover(hw, addr);
3260 DBFEXIT;
3261 return;
3262}
3263
3264
3265/*----------------------------------------------------------------
3266* prism2mgmt_pstr2bytestr
3267*
3268* Convert the pstr data in the WLAN message structure into an hfa384x
3269* byte string format.
3270*
3271* Arguments:
3272* bytestr hfa384x byte string data type
3273* pstr wlan message data
3274*
3275* Returns:
3276* Nothing
3277*
3278----------------------------------------------------------------*/
3279
3280void prism2mgmt_pstr2bytestr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
3281{
3282 DBFENTER;
3283
3284 bytestr->len = host2hfa384x_16((UINT16)(pstr->len));
3285 memcpy(bytestr->data, pstr->data, pstr->len);
3286 DBFEXIT;
3287}
3288
3289
3290/*----------------------------------------------------------------
3291* prism2mgmt_pstr2bytearea
3292*
3293* Convert the pstr data in the WLAN message structure into an hfa384x
3294* byte area format.
3295*
3296* Arguments:
3297* bytearea hfa384x byte area data type
3298* pstr wlan message data
3299*
3300* Returns:
3301* Nothing
3302*
3303----------------------------------------------------------------*/
3304
3305void prism2mgmt_pstr2bytearea(UINT8 *bytearea, p80211pstrd_t *pstr)
3306{
3307 DBFENTER;
3308
3309 memcpy(bytearea, pstr->data, pstr->len);
3310 DBFEXIT;
3311}
3312
3313
3314/*----------------------------------------------------------------
3315* prism2mgmt_bytestr2pstr
3316*
3317* Convert the data in an hfa384x byte string format into a
3318* pstr in the WLAN message.
3319*
3320* Arguments:
3321* bytestr hfa384x byte string data type
3322* msg wlan message
3323*
3324* Returns:
3325* Nothing
3326*
3327----------------------------------------------------------------*/
3328
3329void prism2mgmt_bytestr2pstr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
3330{
3331 DBFENTER;
3332
3333 pstr->len = (UINT8)(hfa384x2host_16((UINT16)(bytestr->len)));
3334 memcpy(pstr->data, bytestr->data, pstr->len);
3335 DBFEXIT;
3336}
3337
3338
3339/*----------------------------------------------------------------
3340* prism2mgmt_bytearea2pstr
3341*
3342* Convert the data in an hfa384x byte area format into a pstr
3343* in the WLAN message.
3344*
3345* Arguments:
3346* bytearea hfa384x byte area data type
3347* msg wlan message
3348*
3349* Returns:
3350* Nothing
3351*
3352----------------------------------------------------------------*/
3353
3354void prism2mgmt_bytearea2pstr(UINT8 *bytearea, p80211pstrd_t *pstr, int len)
3355{
3356 DBFENTER;
3357
3358 pstr->len = (UINT8)len;
3359 memcpy(pstr->data, bytearea, len);
3360 DBFEXIT;
3361}
3362
3363
3364/*----------------------------------------------------------------
3365* prism2mgmt_prism2int2p80211int
3366*
3367* Convert an hfa384x integer into a wlan integer
3368*
3369* Arguments:
3370* prism2enum pointer to hfa384x integer
3371* wlanenum pointer to p80211 integer
3372*
3373* Returns:
3374* Nothing
3375*
3376----------------------------------------------------------------*/
3377
3378void prism2mgmt_prism2int2p80211int(UINT16 *prism2int, UINT32 *wlanint)
3379{
3380 DBFENTER;
3381
3382 *wlanint = (UINT32)hfa384x2host_16(*prism2int);
3383 DBFEXIT;
3384}
3385
3386
3387/*----------------------------------------------------------------
3388* prism2mgmt_p80211int2prism2int
3389*
3390* Convert a wlan integer into an hfa384x integer
3391*
3392* Arguments:
3393* prism2enum pointer to hfa384x integer
3394* wlanenum pointer to p80211 integer
3395*
3396* Returns:
3397* Nothing
3398*
3399----------------------------------------------------------------*/
3400
3401void prism2mgmt_p80211int2prism2int(UINT16 *prism2int, UINT32 *wlanint)
3402{
3403 DBFENTER;
3404
3405 *prism2int = host2hfa384x_16((UINT16)(*wlanint));
3406 DBFEXIT;
3407}
3408
3409
3410/*----------------------------------------------------------------
3411* prism2mgmt_prism2enum2p80211enum
3412*
3413* Convert the hfa384x enumerated int into a p80211 enumerated int
3414*
3415* Arguments:
3416* prism2enum pointer to hfa384x integer
3417* wlanenum pointer to p80211 integer
3418* rid hfa384x record id
3419*
3420* Returns:
3421* Nothing
3422*
3423----------------------------------------------------------------*/
3424void prism2mgmt_prism2enum2p80211enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT16 rid)
3425{
3426 DBFENTER;
3427
3428 /* At the moment, the need for this functionality hasn't
3429 presented itself. All the wlan enumerated values are
3430 a 1-to-1 match against the Prism2 enumerated values*/
3431 DBFEXIT;
3432 return;
3433}
3434
3435
3436/*----------------------------------------------------------------
3437* prism2mgmt_p80211enum2prism2enum
3438*
3439* Convert the p80211 enumerated int into an hfa384x enumerated int
3440*
3441* Arguments:
3442* prism2enum pointer to hfa384x integer
3443* wlanenum pointer to p80211 integer
3444* rid hfa384x record id
3445*
3446* Returns:
3447* Nothing
3448*
3449----------------------------------------------------------------*/
3450void prism2mgmt_p80211enum2prism2enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT16 rid)
3451{
3452 DBFENTER;
3453
3454 /* At the moment, the need for this functionality hasn't
3455 presented itself. All the wlan enumerated values are
3456 a 1-to-1 match against the Prism2 enumerated values*/
3457 DBFEXIT;
3458 return;
3459}
3460
3461
3462
3463/*----------------------------------------------------------------
3464* prism2mgmt_get_oprateset
3465*
3466* Convert the hfa384x bit area into a wlan octet string.
3467*
3468* Arguments:
3469* rate Prism2 bit area
3470* pstr wlan octet string
3471*
3472* Returns:
3473* Nothing
3474*
3475----------------------------------------------------------------*/
3476void prism2mgmt_get_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
3477{
3478 UINT8 len;
3479 UINT8 *datarate;
3480
3481 DBFENTER;
3482
3483 len = 0;
3484 datarate = pstr->data;
3485
3486 /* 1 Mbps */
3487 if ( BIT0 & (*rate) ) {
3488 len += (UINT8)1;
3489 *datarate = (UINT8)2;
3490 datarate++;
3491 }
3492
3493 /* 2 Mbps */
3494 if ( BIT1 & (*rate) ) {
3495 len += (UINT8)1;
3496 *datarate = (UINT8)4;
3497 datarate++;
3498 }
3499
3500 /* 5.5 Mbps */
3501 if ( BIT2 & (*rate) ) {
3502 len += (UINT8)1;
3503 *datarate = (UINT8)11;
3504 datarate++;
3505 }
3506
3507 /* 11 Mbps */
3508 if ( BIT3 & (*rate) ) {
3509 len += (UINT8)1;
3510 *datarate = (UINT8)22;
3511 datarate++;
3512 }
3513
3514 pstr->len = len;
3515
3516 DBFEXIT;
3517 return;
3518}
3519
3520
3521
3522/*----------------------------------------------------------------
3523* prism2mgmt_set_oprateset
3524*
3525* Convert the wlan octet string into an hfa384x bit area.
3526*
3527* Arguments:
3528* rate Prism2 bit area
3529* pstr wlan octet string
3530*
3531* Returns:
3532* Nothing
3533*
3534----------------------------------------------------------------*/
3535void prism2mgmt_set_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
3536{
3537 UINT8 *datarate;
3538 int i;
3539
3540 DBFENTER;
3541
3542 *rate = 0;
3543
3544 datarate = pstr->data;
3545
3546 for ( i=0; i < pstr->len; i++, datarate++ ) {
3547 switch (*datarate) {
3548 case 2: /* 1 Mbps */
3549 *rate |= BIT0;
3550 break;
3551 case 4: /* 2 Mbps */
3552 *rate |= BIT1;
3553 break;
3554 case 11: /* 5.5 Mbps */
3555 *rate |= BIT2;
3556 break;
3557 case 22: /* 11 Mbps */
3558 *rate |= BIT3;
3559 break;
3560 default:
3561 WLAN_LOG_DEBUG(1, "Unrecoginzed Rate of %d\n",
3562 *datarate);
3563 break;
3564 }
3565 }
3566
3567 DBFEXIT;
3568 return;
3569}
3570
3571
3572
3573/*----------------------------------------------------------------
3574* prism2mgmt_get_grpaddr
3575*
3576* Retrieves a particular group address from the list of
3577* group addresses.
3578*
3579* Arguments:
3580* did mibitem did
3581* pstr wlan octet string
3582* priv prism2 driver private data structure
3583*
3584* Returns:
3585* Nothing
3586*
3587----------------------------------------------------------------*/
3588void prism2mgmt_get_grpaddr(UINT32 did, p80211pstrd_t *pstr,
3589 hfa384x_t *hw )
3590{
3591 int index;
3592
3593 DBFENTER;
3594
3595 index = prism2mgmt_get_grpaddr_index(did);
3596
3597 if ( index >= 0 ) {
3598 pstr->len = WLAN_ADDR_LEN;
3599 memcpy(pstr->data, hw->dot11_grp_addr[index],
3600 WLAN_ADDR_LEN);
3601 }
3602
3603 DBFEXIT;
3604 return;
3605}
3606
3607
3608
3609/*----------------------------------------------------------------
3610* prism2mgmt_set_grpaddr
3611*
3612* Convert the wlan octet string into an hfa384x bit area.
3613*
3614* Arguments:
3615* did mibitem did
3616* buf
3617* groups
3618*
3619* Returns:
3620* 0 Success
3621* !0 Error
3622*
3623----------------------------------------------------------------*/
3624int prism2mgmt_set_grpaddr(UINT32 did, UINT8 *prism2buf,
3625 p80211pstrd_t *pstr, hfa384x_t *hw )
3626{
3627 UINT8 no_addr[WLAN_ADDR_LEN];
3628 int index;
3629
3630 DBFENTER;
3631
3632 memset(no_addr, 0, WLAN_ADDR_LEN);
3633 if (memcmp(no_addr, pstr->data, WLAN_ADDR_LEN) != 0) {
3634
3635 /*
3636 ** The address is NOT 0 so we are "adding" an address to the
3637 ** group address list. Check to make sure we aren't trying
3638 ** to add more than the maximum allowed number of group
3639 ** addresses in the list. The new address is added to the
3640 ** end of the list regardless of the DID used to add the
3641 ** address.
3642 */
3643
3644 if (hw->dot11_grpcnt >= MAX_GRP_ADDR) return(-1);
3645
3646 memcpy(hw->dot11_grp_addr[hw->dot11_grpcnt], pstr->data,
3647 WLAN_ADDR_LEN);
3648 hw->dot11_grpcnt += 1;
3649 } else {
3650
3651 /*
3652 ** The address is 0. Interpret this as "deleting" an address
3653 ** from the group address list. Get the address index from
3654 ** the DID. If this is within the range of used addresses,
3655 ** then delete the specified address by shifting all following
3656 ** addresses down. Then clear the last address (which should
3657 ** now be unused). If the address index is NOT within the
3658 ** range of used addresses, then just ignore the address.
3659 */
3660
3661 index = prism2mgmt_get_grpaddr_index(did);
3662 if (index >= 0 && index < hw->dot11_grpcnt) {
3663 hw->dot11_grpcnt -= 1;
3664 memmove(hw->dot11_grp_addr[index],
3665 hw->dot11_grp_addr[index + 1],
3666 ((hw->dot11_grpcnt)-index) * WLAN_ADDR_LEN);
3667 memset(hw->dot11_grp_addr[hw->dot11_grpcnt], 0,
3668 WLAN_ADDR_LEN);
3669 }
3670 }
3671
3672 DBFEXIT;
3673 return(0);
3674}
3675
3676
3677/*----------------------------------------------------------------
3678* prism2mgmt_get_grpaddr_index
3679*
3680* Gets the index in the group address list based on the did.
3681*
3682* Arguments:
3683* did mibitem did
3684*
3685* Returns:
3686* >= 0 If valid did
3687* < 0 If not valid did
3688*
3689----------------------------------------------------------------*/
3690int prism2mgmt_get_grpaddr_index( UINT32 did )
3691{
3692 int index;
3693
3694 DBFENTER;
3695
3696 index = -1;
3697
3698 switch (did) {
3699 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address1:
3700 index = 0;
3701 break;
3702 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address2:
3703 index = 1;
3704 break;
3705 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address3:
3706 index = 2;
3707 break;
3708 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address4:
3709 index = 3;
3710 break;
3711 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address5:
3712 index = 4;
3713 break;
3714 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address6:
3715 index = 5;
3716 break;
3717 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address7:
3718 index = 6;
3719 break;
3720 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address8:
3721 index = 7;
3722 break;
3723 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address9:
3724 index = 8;
3725 break;
3726 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address10:
3727 index = 9;
3728 break;
3729 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address11:
3730 index = 10;
3731 break;
3732 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address12:
3733 index = 11;
3734 break;
3735 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address13:
3736 index = 12;
3737 break;
3738 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address14:
3739 index = 13;
3740 break;
3741 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address15:
3742 index = 14;
3743 break;
3744 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address16:
3745 index = 15;
3746 break;
3747 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address17:
3748 index = 16;
3749 break;
3750 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address18:
3751 index = 17;
3752 break;
3753 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address19:
3754 index = 18;
3755 break;
3756 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address20:
3757 index = 19;
3758 break;
3759 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address21:
3760 index = 20;
3761 break;
3762 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address22:
3763 index = 21;
3764 break;
3765 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address23:
3766 index = 22;
3767 break;
3768 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address24:
3769 index = 23;
3770 break;
3771 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address25:
3772 index = 24;
3773 break;
3774 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address26:
3775 index = 25;
3776 break;
3777 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address27:
3778 index = 26;
3779 break;
3780 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address28:
3781 index = 27;
3782 break;
3783 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address29:
3784 index = 28;
3785 break;
3786 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address30:
3787 index = 29;
3788 break;
3789 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address31:
3790 index = 30;
3791 break;
3792 case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address32:
3793 index = 31;
3794 break;
3795 }
3796
3797 DBFEXIT;
3798 return index;
3799}
diff --git a/drivers/staging/wlan-ng/prism2sta.c b/drivers/staging/wlan-ng/prism2sta.c
new file mode 100644
index 00000000000..18aa15f9e41
--- /dev/null
+++ b/drivers/staging/wlan-ng/prism2sta.c
@@ -0,0 +1,2502 @@
1/* src/prism2/driver/prism2sta.c
2*
3* Implements the station functionality for prism2
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*
47* This file implements the module and linux pcmcia routines for the
48* prism2 driver.
49*
50* --------------------------------------------------------------------
51*/
52
53/*================================================================*/
54/* System Includes */
55#define WLAN_DBVAR prism2_debug
56
57#include "version.h"
58
59
60#include <linux/version.h>
61
62#include <linux/module.h>
63#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,25))
64#include <linux/moduleparam.h>
65#endif
66
67#include <linux/kernel.h>
68#include <linux/sched.h>
69#include <linux/types.h>
70#include <linux/init.h>
71#include <linux/slab.h>
72#include <linux/wireless.h>
73#include <linux/netdevice.h>
74
75#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
76#include <linux/tqueue.h>
77#else
78#include <linux/workqueue.h>
79#endif
80
81#include <asm/io.h>
82#include <linux/delay.h>
83#include <asm/byteorder.h>
84#include <linux/if_arp.h>
85
86#if (WLAN_HOSTIF == WLAN_PCMCIA)
87#include <pcmcia/version.h>
88#include <pcmcia/cs_types.h>
89#include <pcmcia/cs.h>
90#include <pcmcia/cistpl.h>
91#include <pcmcia/ds.h>
92#include <pcmcia/cisreg.h>
93#endif
94
95#include "wlan_compat.h"
96
97#if ((WLAN_HOSTIF == WLAN_PLX) || (WLAN_HOSTIF == WLAN_PCI))
98#include <linux/ioport.h>
99#include <linux/pci.h>
100#endif
101
102/*================================================================*/
103/* Project Includes */
104
105#include "p80211types.h"
106#include "p80211hdr.h"
107#include "p80211mgmt.h"
108#include "p80211conv.h"
109#include "p80211msg.h"
110#include "p80211netdev.h"
111#include "p80211req.h"
112#include "p80211metadef.h"
113#include "p80211metastruct.h"
114#include "hfa384x.h"
115#include "prism2mgmt.h"
116
117/*================================================================*/
118/* Local Constants */
119
120/*================================================================*/
121/* Local Macros */
122
123/*================================================================*/
124/* Local Types */
125
126/*================================================================*/
127/* Local Static Definitions */
128
129#if (WLAN_HOSTIF == WLAN_PCMCIA)
130#define DRIVER_SUFFIX "_cs"
131#elif (WLAN_HOSTIF == WLAN_PLX)
132#define DRIVER_SUFFIX "_plx"
133typedef char* dev_info_t;
134#elif (WLAN_HOSTIF == WLAN_PCI)
135#define DRIVER_SUFFIX "_pci"
136typedef char* dev_info_t;
137#elif (WLAN_HOSTIF == WLAN_USB)
138#define DRIVER_SUFFIX "_usb"
139typedef char* dev_info_t;
140#else
141#error "HOSTIF unsupported or undefined!"
142#endif
143
144static char *version = "prism2" DRIVER_SUFFIX ".o: " WLAN_RELEASE;
145static dev_info_t dev_info = "prism2" DRIVER_SUFFIX;
146
147#if (WLAN_HOSTIF == WLAN_PLX || WLAN_HOSTIF == WLAN_PCI)
148#ifdef CONFIG_PM
149static int prism2sta_suspend_pci(struct pci_dev *pdev, pm_message_t state);
150static int prism2sta_resume_pci(struct pci_dev *pdev);
151#endif
152#endif
153
154#if (WLAN_HOSTIF == WLAN_PCI)
155
156#endif /* WLAN_PCI */
157
158static wlandevice_t *create_wlan(void);
159
160/*----------------------------------------------------------------*/
161/* --Module Parameters */
162
163int prism2_reset_holdtime=30; /* Reset hold time in ms */
164int prism2_reset_settletime=100; /* Reset settle time in ms */
165
166#if (WLAN_HOSTIF == WLAN_USB)
167static int prism2_doreset=0; /* Do a reset at init? */
168#else
169static int prism2_doreset=1; /* Do a reset at init? */
170int prism2_bap_timeout=1000; /* BAP timeout */
171int prism2_irq_evread_max=20; /* Maximum number of
172 * ev_reads (loops)
173 * in irq handler
174 */
175#endif
176
177#ifdef WLAN_INCLUDE_DEBUG
178int prism2_debug=0;
179module_param( prism2_debug, int, 0644);
180MODULE_PARM_DESC(prism2_debug, "prism2 debugging");
181#endif
182
183module_param( prism2_doreset, int, 0644);
184MODULE_PARM_DESC(prism2_doreset, "Issue a reset on initialization");
185
186module_param( prism2_reset_holdtime, int, 0644);
187MODULE_PARM_DESC( prism2_reset_holdtime, "reset hold time in ms");
188module_param( prism2_reset_settletime, int, 0644);
189MODULE_PARM_DESC( prism2_reset_settletime, "reset settle time in ms");
190
191#if (WLAN_HOSTIF != WLAN_USB)
192module_param( prism2_bap_timeout, int, 0644);
193MODULE_PARM_DESC(prism2_bap_timeout, "BufferAccessPath Timeout in 10*n us");
194module_param( prism2_irq_evread_max, int, 0644);
195MODULE_PARM_DESC( prism2_irq_evread_max, "Maximim number of event reads in interrupt handler");
196#endif
197
198MODULE_LICENSE("Dual MPL/GPL");
199
200/*================================================================*/
201/* Local Function Declarations */
202
203static int prism2sta_open(wlandevice_t *wlandev);
204static int prism2sta_close(wlandevice_t *wlandev);
205static void prism2sta_reset(wlandevice_t *wlandev );
206static int prism2sta_txframe(wlandevice_t *wlandev, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep);
207static int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg);
208static int prism2sta_getcardinfo(wlandevice_t *wlandev);
209static int prism2sta_globalsetup(wlandevice_t *wlandev);
210static int prism2sta_setmulticast(wlandevice_t *wlandev,
211 netdevice_t *dev);
212
213static void prism2sta_inf_handover(
214 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
215static void prism2sta_inf_tallies(
216 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
217static void prism2sta_inf_hostscanresults(
218 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
219static void prism2sta_inf_scanresults(
220 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
221static void prism2sta_inf_chinforesults(
222 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
223static void prism2sta_inf_linkstatus(
224 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
225static void prism2sta_inf_assocstatus(
226 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
227static void prism2sta_inf_authreq(
228 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
229static void prism2sta_inf_authreq_defer(
230 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
231static void prism2sta_inf_psusercnt(
232 wlandevice_t *wlandev, hfa384x_InfFrame_t *inf);
233
234#ifdef CONFIG_PROC_FS
235static int
236prism2sta_proc_read(
237 char *page,
238 char **start,
239 off_t offset,
240 int count,
241 int *eof,
242 void *data);
243#endif
244
245/*================================================================*/
246/* Function Definitions */
247
248/*----------------------------------------------------------------
249* dmpmem
250*
251* Debug utility function to dump memory to the kernel debug log.
252*
253* Arguments:
254* buf ptr data we want dumped
255* len length of data
256*
257* Returns:
258* nothing
259* Side effects:
260*
261* Call context:
262* process thread
263* interrupt
264----------------------------------------------------------------*/
265inline void dmpmem(void *buf, int n)
266{
267 int c;
268 for ( c= 0; c < n; c++) {
269 if ( (c % 16) == 0 ) printk(KERN_DEBUG"dmp[%d]: ", c);
270 printk("%02x ", ((UINT8*)buf)[c]);
271 if ( (c % 16) == 15 ) printk("\n");
272 }
273 if ( (c % 16) != 0 ) printk("\n");
274}
275
276
277/*----------------------------------------------------------------
278* prism2sta_open
279*
280* WLAN device open method. Called from p80211netdev when kernel
281* device open (start) method is called in response to the
282* SIOCSIIFFLAGS ioctl changing the flags bit IFF_UP
283* from clear to set.
284*
285* Arguments:
286* wlandev wlan device structure
287*
288* Returns:
289* 0 success
290* >0 f/w reported error
291* <0 driver reported error
292*
293* Side effects:
294*
295* Call context:
296* process thread
297----------------------------------------------------------------*/
298static int prism2sta_open(wlandevice_t *wlandev)
299{
300 DBFENTER;
301
302#ifdef ANCIENT_MODULE_CODE
303 MOD_INC_USE_COUNT;
304#endif
305
306 /* We don't currently have to do anything else.
307 * The setup of the MAC should be subsequently completed via
308 * the mlme commands.
309 * Higher layers know we're ready from dev->start==1 and
310 * dev->tbusy==0. Our rx path knows to pass up received/
311 * frames because of dev->flags&IFF_UP is true.
312 */
313
314 DBFEXIT;
315 return 0;
316}
317
318
319/*----------------------------------------------------------------
320* prism2sta_close
321*
322* WLAN device close method. Called from p80211netdev when kernel
323* device close method is called in response to the
324* SIOCSIIFFLAGS ioctl changing the flags bit IFF_UP
325* from set to clear.
326*
327* Arguments:
328* wlandev wlan device structure
329*
330* Returns:
331* 0 success
332* >0 f/w reported error
333* <0 driver reported error
334*
335* Side effects:
336*
337* Call context:
338* process thread
339----------------------------------------------------------------*/
340static int prism2sta_close(wlandevice_t *wlandev)
341{
342 DBFENTER;
343
344#ifdef ANCIENT_MODULE_CODE
345 MOD_DEC_USE_COUNT;
346#endif
347
348 /* We don't currently have to do anything else.
349 * Higher layers know we're not ready from dev->start==0 and
350 * dev->tbusy==1. Our rx path knows to not pass up received
351 * frames because of dev->flags&IFF_UP is false.
352 */
353
354 DBFEXIT;
355 return 0;
356}
357
358
359/*----------------------------------------------------------------
360* prism2sta_reset
361*
362* Not currently implented.
363*
364* Arguments:
365* wlandev wlan device structure
366* none
367*
368* Returns:
369* nothing
370*
371* Side effects:
372*
373* Call context:
374* process thread
375----------------------------------------------------------------*/
376static void prism2sta_reset(wlandevice_t *wlandev )
377{
378 DBFENTER;
379 DBFEXIT;
380 return;
381}
382
383
384/*----------------------------------------------------------------
385* prism2sta_txframe
386*
387* Takes a frame from p80211 and queues it for transmission.
388*
389* Arguments:
390* wlandev wlan device structure
391* pb packet buffer struct. Contains an 802.11
392* data frame.
393* p80211_hdr points to the 802.11 header for the packet.
394* Returns:
395* 0 Success and more buffs available
396* 1 Success but no more buffs
397* 2 Allocation failure
398* 4 Buffer full or queue busy
399*
400* Side effects:
401*
402* Call context:
403* process thread
404----------------------------------------------------------------*/
405static int prism2sta_txframe(wlandevice_t *wlandev, struct sk_buff *skb,
406 p80211_hdr_t *p80211_hdr,
407 p80211_metawep_t *p80211_wep)
408{
409 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
410 int result;
411 DBFENTER;
412
413 /* If necessary, set the 802.11 WEP bit */
414 if ((wlandev->hostwep & (HOSTWEP_PRIVACYINVOKED | HOSTWEP_ENCRYPT)) == HOSTWEP_PRIVACYINVOKED) {
415 p80211_hdr->a3.fc |= host2ieee16(WLAN_SET_FC_ISWEP(1));
416 }
417
418 result = hfa384x_drvr_txframe(hw, skb, p80211_hdr, p80211_wep);
419
420 DBFEXIT;
421 return result;
422}
423
424
425/*----------------------------------------------------------------
426* prism2sta_mlmerequest
427*
428* wlan command message handler. All we do here is pass the message
429* over to the prism2sta_mgmt_handler.
430*
431* Arguments:
432* wlandev wlan device structure
433* msg wlan command message
434* Returns:
435* 0 success
436* <0 successful acceptance of message, but we're
437* waiting for an async process to finish before
438* we're done with the msg. When the asynch
439* process is done, we'll call the p80211
440* function p80211req_confirm() .
441* >0 An error occurred while we were handling
442* the message.
443*
444* Side effects:
445*
446* Call context:
447* process thread
448----------------------------------------------------------------*/
449static int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg)
450{
451 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
452
453 int result = 0;
454 DBFENTER;
455
456 switch( msg->msgcode )
457 {
458 case DIDmsg_dot11req_mibget :
459 WLAN_LOG_DEBUG(2,"Received mibget request\n");
460 result = prism2mgmt_mibset_mibget(wlandev, msg);
461 break;
462 case DIDmsg_dot11req_mibset :
463 WLAN_LOG_DEBUG(2,"Received mibset request\n");
464 result = prism2mgmt_mibset_mibget(wlandev, msg);
465 break;
466 case DIDmsg_dot11req_powermgmt :
467 WLAN_LOG_DEBUG(2,"Received powermgmt request\n");
468 result = prism2mgmt_powermgmt(wlandev, msg);
469 break;
470 case DIDmsg_dot11req_scan :
471 WLAN_LOG_DEBUG(2,"Received scan request\n");
472 result = prism2mgmt_scan(wlandev, msg);
473 break;
474 case DIDmsg_dot11req_scan_results :
475 WLAN_LOG_DEBUG(2,"Received scan_results request\n");
476 result = prism2mgmt_scan_results(wlandev, msg);
477 break;
478 case DIDmsg_dot11req_join :
479 WLAN_LOG_DEBUG(2,"Received join request\n");
480 result = prism2mgmt_join(wlandev, msg);
481 break;
482 case DIDmsg_dot11req_authenticate :
483 WLAN_LOG_DEBUG(2,"Received authenticate request\n");
484 result = prism2mgmt_authenticate(wlandev, msg);
485 break;
486 case DIDmsg_dot11req_deauthenticate :
487 WLAN_LOG_DEBUG(2,"Received mlme deauthenticate request\n");
488 result = prism2mgmt_deauthenticate(wlandev, msg);
489 break;
490 case DIDmsg_dot11req_associate :
491 WLAN_LOG_DEBUG(2,"Received mlme associate request\n");
492 result = prism2mgmt_associate(wlandev, msg);
493 break;
494 case DIDmsg_dot11req_reassociate :
495 WLAN_LOG_DEBUG(2,"Received mlme reassociate request\n");
496 result = prism2mgmt_reassociate(wlandev, msg);
497 break;
498 case DIDmsg_dot11req_disassociate :
499 WLAN_LOG_DEBUG(2,"Received mlme disassociate request\n");
500 result = prism2mgmt_disassociate(wlandev, msg);
501 break;
502 case DIDmsg_dot11req_reset :
503 WLAN_LOG_DEBUG(2,"Received mlme reset request\n");
504 result = prism2mgmt_reset(wlandev, msg);
505 break;
506 case DIDmsg_dot11req_start :
507 WLAN_LOG_DEBUG(2,"Received mlme start request\n");
508 result = prism2mgmt_start(wlandev, msg);
509 break;
510 /*
511 * Prism2 specific messages
512 */
513 case DIDmsg_p2req_join :
514 WLAN_LOG_DEBUG(2,"Received p2 join request\n");
515 result = prism2mgmt_p2_join(wlandev, msg);
516 break;
517 case DIDmsg_p2req_readpda :
518 WLAN_LOG_DEBUG(2,"Received mlme readpda request\n");
519 result = prism2mgmt_readpda(wlandev, msg);
520 break;
521 case DIDmsg_p2req_readcis :
522 WLAN_LOG_DEBUG(2,"Received mlme readcis request\n");
523 result = prism2mgmt_readcis(wlandev, msg);
524 break;
525 case DIDmsg_p2req_auxport_state :
526 WLAN_LOG_DEBUG(2,"Received mlme auxport_state request\n");
527 result = prism2mgmt_auxport_state(wlandev, msg);
528 break;
529 case DIDmsg_p2req_auxport_read :
530 WLAN_LOG_DEBUG(2,"Received mlme auxport_read request\n");
531 result = prism2mgmt_auxport_read(wlandev, msg);
532 break;
533 case DIDmsg_p2req_auxport_write :
534 WLAN_LOG_DEBUG(2,"Received mlme auxport_write request\n");
535 result = prism2mgmt_auxport_write(wlandev, msg);
536 break;
537 case DIDmsg_p2req_low_level :
538 WLAN_LOG_DEBUG(2,"Received mlme low_level request\n");
539 result = prism2mgmt_low_level(wlandev, msg);
540 break;
541 case DIDmsg_p2req_test_command :
542 WLAN_LOG_DEBUG(2,"Received mlme test_command request\n");
543 result = prism2mgmt_test_command(wlandev, msg);
544 break;
545 case DIDmsg_p2req_mmi_read :
546 WLAN_LOG_DEBUG(2,"Received mlme mmi_read request\n");
547 result = prism2mgmt_mmi_read(wlandev, msg);
548 break;
549 case DIDmsg_p2req_mmi_write :
550 WLAN_LOG_DEBUG(2,"Received mlme mmi_write request\n");
551 result = prism2mgmt_mmi_write(wlandev, msg);
552 break;
553 case DIDmsg_p2req_ramdl_state :
554 WLAN_LOG_DEBUG(2,"Received mlme ramdl_state request\n");
555 result = prism2mgmt_ramdl_state(wlandev, msg);
556 break;
557 case DIDmsg_p2req_ramdl_write :
558 WLAN_LOG_DEBUG(2,"Received mlme ramdl_write request\n");
559 result = prism2mgmt_ramdl_write(wlandev, msg);
560 break;
561 case DIDmsg_p2req_flashdl_state :
562 WLAN_LOG_DEBUG(2,"Received mlme flashdl_state request\n");
563 result = prism2mgmt_flashdl_state(wlandev, msg);
564 break;
565 case DIDmsg_p2req_flashdl_write :
566 WLAN_LOG_DEBUG(2,"Received mlme flashdl_write request\n");
567 result = prism2mgmt_flashdl_write(wlandev, msg);
568 break;
569 case DIDmsg_p2req_dump_state :
570 WLAN_LOG_DEBUG(2,"Received mlme dump_state request\n");
571 result = prism2mgmt_dump_state(wlandev, msg);
572 break;
573 case DIDmsg_p2req_channel_info :
574 WLAN_LOG_DEBUG(2,"Received mlme channel_info request\n");
575 result = prism2mgmt_channel_info(wlandev, msg);
576 break;
577 case DIDmsg_p2req_channel_info_results :
578 WLAN_LOG_DEBUG(2,"Received mlme channel_info_results request\n");
579 result = prism2mgmt_channel_info_results(wlandev, msg);
580 break;
581 /*
582 * Linux specific messages
583 */
584 case DIDmsg_lnxreq_hostwep :
585 break; // ignore me.
586 case DIDmsg_lnxreq_ifstate :
587 {
588 p80211msg_lnxreq_ifstate_t *ifstatemsg;
589 WLAN_LOG_DEBUG(2,"Received mlme ifstate request\n");
590 ifstatemsg = (p80211msg_lnxreq_ifstate_t*)msg;
591 result = prism2sta_ifstate(wlandev, ifstatemsg->ifstate.data);
592 ifstatemsg->resultcode.status =
593 P80211ENUM_msgitem_status_data_ok;
594 ifstatemsg->resultcode.data = result;
595 result = 0;
596 }
597 break;
598 case DIDmsg_lnxreq_wlansniff :
599 WLAN_LOG_DEBUG(2,"Received mlme wlansniff request\n");
600 result = prism2mgmt_wlansniff(wlandev, msg);
601 break;
602 case DIDmsg_lnxreq_autojoin :
603 WLAN_LOG_DEBUG(2,"Received mlme autojoin request\n");
604 result = prism2mgmt_autojoin(wlandev, msg);
605 break;
606 case DIDmsg_p2req_enable :
607 WLAN_LOG_DEBUG(2,"Received mlme enable request\n");
608 result = prism2mgmt_enable(wlandev, msg);
609 break;
610 case DIDmsg_lnxreq_commsquality: {
611 p80211msg_lnxreq_commsquality_t *qualmsg;
612
613 WLAN_LOG_DEBUG(2,"Received commsquality request\n");
614
615 if (hw->ap)
616 break;
617
618 qualmsg = (p80211msg_lnxreq_commsquality_t*) msg;
619
620 qualmsg->link.status = P80211ENUM_msgitem_status_data_ok;
621 qualmsg->level.status = P80211ENUM_msgitem_status_data_ok;
622 qualmsg->noise.status = P80211ENUM_msgitem_status_data_ok;
623
624
625 qualmsg->link.data = hfa384x2host_16(hw->qual.CQ_currBSS);
626 qualmsg->level.data = hfa384x2host_16(hw->qual.ASL_currBSS);
627 qualmsg->noise.data = hfa384x2host_16(hw->qual.ANL_currFC);
628
629 break;
630 }
631 default:
632 WLAN_LOG_WARNING("Unknown mgmt request message 0x%08x", msg->msgcode);
633 break;
634 }
635
636 DBFEXIT;
637 return result;
638}
639
640
641/*----------------------------------------------------------------
642* prism2sta_ifstate
643*
644* Interface state. This is the primary WLAN interface enable/disable
645* handler. Following the driver/load/deviceprobe sequence, this
646* function must be called with a state of "enable" before any other
647* commands will be accepted.
648*
649* Arguments:
650* wlandev wlan device structure
651* msgp ptr to msg buffer
652*
653* Returns:
654* A p80211 message resultcode value.
655*
656* Side effects:
657*
658* Call context:
659* process thread (usually)
660* interrupt
661----------------------------------------------------------------*/
662UINT32 prism2sta_ifstate(wlandevice_t *wlandev, UINT32 ifstate)
663{
664 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
665 UINT32 result;
666 DBFENTER;
667
668 result = P80211ENUM_resultcode_implementation_failure;
669
670 WLAN_LOG_DEBUG(2, "Current MSD state(%d), requesting(%d)\n",
671 wlandev->msdstate, ifstate);
672 switch (ifstate)
673 {
674 case P80211ENUM_ifstate_fwload:
675 switch (wlandev->msdstate) {
676 case WLAN_MSD_HWPRESENT:
677 wlandev->msdstate = WLAN_MSD_FWLOAD_PENDING;
678 /*
679 * Initialize the device+driver sufficiently
680 * for firmware loading.
681 */
682#if (WLAN_HOSTIF != WLAN_USB)
683 result=hfa384x_cmd_initialize(hw);
684#else
685 if ((result=hfa384x_drvr_start(hw))) {
686 WLAN_LOG_ERROR(
687 "hfa384x_drvr_start() failed,"
688 "result=%d\n", (int)result);
689 result =
690 P80211ENUM_resultcode_implementation_failure;
691 wlandev->msdstate = WLAN_MSD_HWPRESENT;
692 break;
693 }
694#endif
695 wlandev->msdstate = WLAN_MSD_FWLOAD;
696 result = P80211ENUM_resultcode_success;
697 break;
698 case WLAN_MSD_FWLOAD:
699 hfa384x_cmd_initialize(hw);
700 result = P80211ENUM_resultcode_success;
701 break;
702 case WLAN_MSD_RUNNING:
703 WLAN_LOG_WARNING(
704 "Cannot enter fwload state from enable state,"
705 "you must disable first.\n");
706 result = P80211ENUM_resultcode_invalid_parameters;
707 break;
708 case WLAN_MSD_HWFAIL:
709 default:
710 /* probe() had a problem or the msdstate contains
711 * an unrecognized value, there's nothing we can do.
712 */
713 result = P80211ENUM_resultcode_implementation_failure;
714 break;
715 }
716 break;
717 case P80211ENUM_ifstate_enable:
718 switch (wlandev->msdstate) {
719 case WLAN_MSD_HWPRESENT:
720 case WLAN_MSD_FWLOAD:
721 wlandev->msdstate = WLAN_MSD_RUNNING_PENDING;
722 /* Initialize the device+driver for full
723 * operation. Note that this might me an FWLOAD to
724 * to RUNNING transition so we must not do a chip
725 * or board level reset. Note that on failure,
726 * the MSD state is set to HWPRESENT because we
727 * can't make any assumptions about the state
728 * of the hardware or a previous firmware load.
729 */
730 if ((result=hfa384x_drvr_start(hw))) {
731 WLAN_LOG_ERROR(
732 "hfa384x_drvr_start() failed,"
733 "result=%d\n", (int)result);
734 result =
735 P80211ENUM_resultcode_implementation_failure;
736 wlandev->msdstate = WLAN_MSD_HWPRESENT;
737 break;
738 }
739
740 if ((result=prism2sta_getcardinfo(wlandev))) {
741 WLAN_LOG_ERROR(
742 "prism2sta_getcardinfo() failed,"
743 "result=%d\n", (int)result);
744 result =
745 P80211ENUM_resultcode_implementation_failure;
746 hfa384x_drvr_stop(hw);
747 wlandev->msdstate = WLAN_MSD_HWPRESENT;
748 break;
749 }
750 if ((result=prism2sta_globalsetup(wlandev))) {
751 WLAN_LOG_ERROR(
752 "prism2sta_globalsetup() failed,"
753 "result=%d\n", (int)result);
754 result =
755 P80211ENUM_resultcode_implementation_failure;
756 hfa384x_drvr_stop(hw);
757 wlandev->msdstate = WLAN_MSD_HWPRESENT;
758 break;
759 }
760 wlandev->msdstate = WLAN_MSD_RUNNING;
761 hw->join_ap = 0;
762 hw->join_retries = 60;
763 result = P80211ENUM_resultcode_success;
764 break;
765 case WLAN_MSD_RUNNING:
766 /* Do nothing, we're already in this state.*/
767 result = P80211ENUM_resultcode_success;
768 break;
769 case WLAN_MSD_HWFAIL:
770 default:
771 /* probe() had a problem or the msdstate contains
772 * an unrecognized value, there's nothing we can do.
773 */
774 result = P80211ENUM_resultcode_implementation_failure;
775 break;
776 }
777 break;
778 case P80211ENUM_ifstate_disable:
779 switch (wlandev->msdstate) {
780 case WLAN_MSD_HWPRESENT:
781 /* Do nothing, we're already in this state.*/
782 result = P80211ENUM_resultcode_success;
783 break;
784 case WLAN_MSD_FWLOAD:
785 case WLAN_MSD_RUNNING:
786 wlandev->msdstate = WLAN_MSD_HWPRESENT_PENDING;
787 /*
788 * TODO: Shut down the MAC completely. Here a chip
789 * or board level reset is probably called for.
790 * After a "disable" _all_ results are lost, even
791 * those from a fwload.
792 */
793 if (!wlandev->hwremoved)
794 netif_carrier_off(wlandev->netdev);
795
796 hfa384x_drvr_stop(hw);
797
798 wlandev->macmode = WLAN_MACMODE_NONE;
799 wlandev->msdstate = WLAN_MSD_HWPRESENT;
800 result = P80211ENUM_resultcode_success;
801 break;
802 case WLAN_MSD_HWFAIL:
803 default:
804 /* probe() had a problem or the msdstate contains
805 * an unrecognized value, there's nothing we can do.
806 */
807 result = P80211ENUM_resultcode_implementation_failure;
808 break;
809 }
810 break;
811 default:
812 result = P80211ENUM_resultcode_invalid_parameters;
813 break;
814 }
815
816 DBFEXIT;
817 return result;
818}
819
820
821/*----------------------------------------------------------------
822* prism2sta_getcardinfo
823*
824* Collect the NICID, firmware version and any other identifiers
825* we'd like to have in host-side data structures.
826*
827* Arguments:
828* wlandev wlan device structure
829*
830* Returns:
831* 0 success
832* >0 f/w reported error
833* <0 driver reported error
834*
835* Side effects:
836*
837* Call context:
838* Either.
839----------------------------------------------------------------*/
840static int prism2sta_getcardinfo(wlandevice_t *wlandev)
841{
842 int result = 0;
843 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
844 UINT16 temp;
845 UINT8 snum[HFA384x_RID_NICSERIALNUMBER_LEN];
846 char pstr[(HFA384x_RID_NICSERIALNUMBER_LEN * 4) + 1];
847
848 DBFENTER;
849
850 /* Collect version and compatibility info */
851 /* Some are critical, some are not */
852 /* NIC identity */
853 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_NICIDENTITY,
854 &hw->ident_nic, sizeof(hfa384x_compident_t));
855 if ( result ) {
856 WLAN_LOG_ERROR("Failed to retrieve NICIDENTITY\n");
857 goto failed;
858 }
859
860 /* get all the nic id fields in host byte order */
861 hw->ident_nic.id = hfa384x2host_16(hw->ident_nic.id);
862 hw->ident_nic.variant = hfa384x2host_16(hw->ident_nic.variant);
863 hw->ident_nic.major = hfa384x2host_16(hw->ident_nic.major);
864 hw->ident_nic.minor = hfa384x2host_16(hw->ident_nic.minor);
865
866 WLAN_LOG_INFO( "ident: nic h/w: id=0x%02x %d.%d.%d\n",
867 hw->ident_nic.id, hw->ident_nic.major,
868 hw->ident_nic.minor, hw->ident_nic.variant);
869
870 /* Primary f/w identity */
871 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_PRIIDENTITY,
872 &hw->ident_pri_fw, sizeof(hfa384x_compident_t));
873 if ( result ) {
874 WLAN_LOG_ERROR("Failed to retrieve PRIIDENTITY\n");
875 goto failed;
876 }
877
878 /* get all the private fw id fields in host byte order */
879 hw->ident_pri_fw.id = hfa384x2host_16(hw->ident_pri_fw.id);
880 hw->ident_pri_fw.variant = hfa384x2host_16(hw->ident_pri_fw.variant);
881 hw->ident_pri_fw.major = hfa384x2host_16(hw->ident_pri_fw.major);
882 hw->ident_pri_fw.minor = hfa384x2host_16(hw->ident_pri_fw.minor);
883
884 WLAN_LOG_INFO( "ident: pri f/w: id=0x%02x %d.%d.%d\n",
885 hw->ident_pri_fw.id, hw->ident_pri_fw.major,
886 hw->ident_pri_fw.minor, hw->ident_pri_fw.variant);
887
888 /* Station (Secondary?) f/w identity */
889 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_STAIDENTITY,
890 &hw->ident_sta_fw, sizeof(hfa384x_compident_t));
891 if ( result ) {
892 WLAN_LOG_ERROR("Failed to retrieve STAIDENTITY\n");
893 goto failed;
894 }
895
896 if (hw->ident_nic.id < 0x8000) {
897 WLAN_LOG_ERROR("FATAL: Card is not an Intersil Prism2/2.5/3\n");
898 result = -1;
899 goto failed;
900 }
901
902 /* get all the station fw id fields in host byte order */
903 hw->ident_sta_fw.id = hfa384x2host_16(hw->ident_sta_fw.id);
904 hw->ident_sta_fw.variant = hfa384x2host_16(hw->ident_sta_fw.variant);
905 hw->ident_sta_fw.major = hfa384x2host_16(hw->ident_sta_fw.major);
906 hw->ident_sta_fw.minor = hfa384x2host_16(hw->ident_sta_fw.minor);
907
908 /* strip out the 'special' variant bits */
909 hw->mm_mods = hw->ident_sta_fw.variant & (BIT14 | BIT15);
910 hw->ident_sta_fw.variant &= ~((UINT16)(BIT14 | BIT15));
911
912 if ( hw->ident_sta_fw.id == 0x1f ) {
913 hw->ap = 0;
914 WLAN_LOG_INFO(
915 "ident: sta f/w: id=0x%02x %d.%d.%d\n",
916 hw->ident_sta_fw.id, hw->ident_sta_fw.major,
917 hw->ident_sta_fw.minor, hw->ident_sta_fw.variant);
918 } else {
919 hw->ap = 1;
920 WLAN_LOG_INFO(
921 "ident: ap f/w: id=0x%02x %d.%d.%d\n",
922 hw->ident_sta_fw.id, hw->ident_sta_fw.major,
923 hw->ident_sta_fw.minor, hw->ident_sta_fw.variant);
924 }
925
926 /* Compatibility range, Modem supplier */
927 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_MFISUPRANGE,
928 &hw->cap_sup_mfi, sizeof(hfa384x_caplevel_t));
929 if ( result ) {
930 WLAN_LOG_ERROR("Failed to retrieve MFISUPRANGE\n");
931 goto failed;
932 }
933
934 /* get all the Compatibility range, modem interface supplier
935 fields in byte order */
936 hw->cap_sup_mfi.role = hfa384x2host_16(hw->cap_sup_mfi.role);
937 hw->cap_sup_mfi.id = hfa384x2host_16(hw->cap_sup_mfi.id);
938 hw->cap_sup_mfi.variant = hfa384x2host_16(hw->cap_sup_mfi.variant);
939 hw->cap_sup_mfi.bottom = hfa384x2host_16(hw->cap_sup_mfi.bottom);
940 hw->cap_sup_mfi.top = hfa384x2host_16(hw->cap_sup_mfi.top);
941
942 WLAN_LOG_INFO(
943 "MFI:SUP:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
944 hw->cap_sup_mfi.role, hw->cap_sup_mfi.id,
945 hw->cap_sup_mfi.variant, hw->cap_sup_mfi.bottom,
946 hw->cap_sup_mfi.top);
947
948 /* Compatibility range, Controller supplier */
949 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_CFISUPRANGE,
950 &hw->cap_sup_cfi, sizeof(hfa384x_caplevel_t));
951 if ( result ) {
952 WLAN_LOG_ERROR("Failed to retrieve CFISUPRANGE\n");
953 goto failed;
954 }
955
956 /* get all the Compatibility range, controller interface supplier
957 fields in byte order */
958 hw->cap_sup_cfi.role = hfa384x2host_16(hw->cap_sup_cfi.role);
959 hw->cap_sup_cfi.id = hfa384x2host_16(hw->cap_sup_cfi.id);
960 hw->cap_sup_cfi.variant = hfa384x2host_16(hw->cap_sup_cfi.variant);
961 hw->cap_sup_cfi.bottom = hfa384x2host_16(hw->cap_sup_cfi.bottom);
962 hw->cap_sup_cfi.top = hfa384x2host_16(hw->cap_sup_cfi.top);
963
964 WLAN_LOG_INFO(
965 "CFI:SUP:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
966 hw->cap_sup_cfi.role, hw->cap_sup_cfi.id,
967 hw->cap_sup_cfi.variant, hw->cap_sup_cfi.bottom,
968 hw->cap_sup_cfi.top);
969
970 /* Compatibility range, Primary f/w supplier */
971 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_PRISUPRANGE,
972 &hw->cap_sup_pri, sizeof(hfa384x_caplevel_t));
973 if ( result ) {
974 WLAN_LOG_ERROR("Failed to retrieve PRISUPRANGE\n");
975 goto failed;
976 }
977
978 /* get all the Compatibility range, primary firmware supplier
979 fields in byte order */
980 hw->cap_sup_pri.role = hfa384x2host_16(hw->cap_sup_pri.role);
981 hw->cap_sup_pri.id = hfa384x2host_16(hw->cap_sup_pri.id);
982 hw->cap_sup_pri.variant = hfa384x2host_16(hw->cap_sup_pri.variant);
983 hw->cap_sup_pri.bottom = hfa384x2host_16(hw->cap_sup_pri.bottom);
984 hw->cap_sup_pri.top = hfa384x2host_16(hw->cap_sup_pri.top);
985
986 WLAN_LOG_INFO(
987 "PRI:SUP:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
988 hw->cap_sup_pri.role, hw->cap_sup_pri.id,
989 hw->cap_sup_pri.variant, hw->cap_sup_pri.bottom,
990 hw->cap_sup_pri.top);
991
992 /* Compatibility range, Station f/w supplier */
993 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_STASUPRANGE,
994 &hw->cap_sup_sta, sizeof(hfa384x_caplevel_t));
995 if ( result ) {
996 WLAN_LOG_ERROR("Failed to retrieve STASUPRANGE\n");
997 goto failed;
998 }
999
1000 /* get all the Compatibility range, station firmware supplier
1001 fields in byte order */
1002 hw->cap_sup_sta.role = hfa384x2host_16(hw->cap_sup_sta.role);
1003 hw->cap_sup_sta.id = hfa384x2host_16(hw->cap_sup_sta.id);
1004 hw->cap_sup_sta.variant = hfa384x2host_16(hw->cap_sup_sta.variant);
1005 hw->cap_sup_sta.bottom = hfa384x2host_16(hw->cap_sup_sta.bottom);
1006 hw->cap_sup_sta.top = hfa384x2host_16(hw->cap_sup_sta.top);
1007
1008 if ( hw->cap_sup_sta.id == 0x04 ) {
1009 WLAN_LOG_INFO(
1010 "STA:SUP:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
1011 hw->cap_sup_sta.role, hw->cap_sup_sta.id,
1012 hw->cap_sup_sta.variant, hw->cap_sup_sta.bottom,
1013 hw->cap_sup_sta.top);
1014 } else {
1015 WLAN_LOG_INFO(
1016 "AP:SUP:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
1017 hw->cap_sup_sta.role, hw->cap_sup_sta.id,
1018 hw->cap_sup_sta.variant, hw->cap_sup_sta.bottom,
1019 hw->cap_sup_sta.top);
1020 }
1021
1022 /* Compatibility range, primary f/w actor, CFI supplier */
1023 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_PRI_CFIACTRANGES,
1024 &hw->cap_act_pri_cfi, sizeof(hfa384x_caplevel_t));
1025 if ( result ) {
1026 WLAN_LOG_ERROR("Failed to retrieve PRI_CFIACTRANGES\n");
1027 goto failed;
1028 }
1029
1030 /* get all the Compatibility range, primary f/w actor, CFI supplier
1031 fields in byte order */
1032 hw->cap_act_pri_cfi.role = hfa384x2host_16(hw->cap_act_pri_cfi.role);
1033 hw->cap_act_pri_cfi.id = hfa384x2host_16(hw->cap_act_pri_cfi.id);
1034 hw->cap_act_pri_cfi.variant = hfa384x2host_16(hw->cap_act_pri_cfi.variant);
1035 hw->cap_act_pri_cfi.bottom = hfa384x2host_16(hw->cap_act_pri_cfi.bottom);
1036 hw->cap_act_pri_cfi.top = hfa384x2host_16(hw->cap_act_pri_cfi.top);
1037
1038 WLAN_LOG_INFO(
1039 "PRI-CFI:ACT:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
1040 hw->cap_act_pri_cfi.role, hw->cap_act_pri_cfi.id,
1041 hw->cap_act_pri_cfi.variant, hw->cap_act_pri_cfi.bottom,
1042 hw->cap_act_pri_cfi.top);
1043
1044 /* Compatibility range, sta f/w actor, CFI supplier */
1045 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_STA_CFIACTRANGES,
1046 &hw->cap_act_sta_cfi, sizeof(hfa384x_caplevel_t));
1047 if ( result ) {
1048 WLAN_LOG_ERROR("Failed to retrieve STA_CFIACTRANGES\n");
1049 goto failed;
1050 }
1051
1052 /* get all the Compatibility range, station f/w actor, CFI supplier
1053 fields in byte order */
1054 hw->cap_act_sta_cfi.role = hfa384x2host_16(hw->cap_act_sta_cfi.role);
1055 hw->cap_act_sta_cfi.id = hfa384x2host_16(hw->cap_act_sta_cfi.id);
1056 hw->cap_act_sta_cfi.variant = hfa384x2host_16(hw->cap_act_sta_cfi.variant);
1057 hw->cap_act_sta_cfi.bottom = hfa384x2host_16(hw->cap_act_sta_cfi.bottom);
1058 hw->cap_act_sta_cfi.top = hfa384x2host_16(hw->cap_act_sta_cfi.top);
1059
1060 WLAN_LOG_INFO(
1061 "STA-CFI:ACT:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
1062 hw->cap_act_sta_cfi.role, hw->cap_act_sta_cfi.id,
1063 hw->cap_act_sta_cfi.variant, hw->cap_act_sta_cfi.bottom,
1064 hw->cap_act_sta_cfi.top);
1065
1066 /* Compatibility range, sta f/w actor, MFI supplier */
1067 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_STA_MFIACTRANGES,
1068 &hw->cap_act_sta_mfi, sizeof(hfa384x_caplevel_t));
1069 if ( result ) {
1070 WLAN_LOG_ERROR("Failed to retrieve STA_MFIACTRANGES\n");
1071 goto failed;
1072 }
1073
1074 /* get all the Compatibility range, station f/w actor, MFI supplier
1075 fields in byte order */
1076 hw->cap_act_sta_mfi.role = hfa384x2host_16(hw->cap_act_sta_mfi.role);
1077 hw->cap_act_sta_mfi.id = hfa384x2host_16(hw->cap_act_sta_mfi.id);
1078 hw->cap_act_sta_mfi.variant = hfa384x2host_16(hw->cap_act_sta_mfi.variant);
1079 hw->cap_act_sta_mfi.bottom = hfa384x2host_16(hw->cap_act_sta_mfi.bottom);
1080 hw->cap_act_sta_mfi.top = hfa384x2host_16(hw->cap_act_sta_mfi.top);
1081
1082 WLAN_LOG_INFO(
1083 "STA-MFI:ACT:role=0x%02x:id=0x%02x:var=0x%02x:b/t=%d/%d\n",
1084 hw->cap_act_sta_mfi.role, hw->cap_act_sta_mfi.id,
1085 hw->cap_act_sta_mfi.variant, hw->cap_act_sta_mfi.bottom,
1086 hw->cap_act_sta_mfi.top);
1087
1088 /* Serial Number */
1089 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_NICSERIALNUMBER,
1090 snum, HFA384x_RID_NICSERIALNUMBER_LEN);
1091 if ( !result ) {
1092 wlan_mkprintstr(snum, HFA384x_RID_NICSERIALNUMBER_LEN,
1093 pstr, sizeof(pstr));
1094 WLAN_LOG_INFO("Prism2 card SN: %s\n", pstr);
1095 } else {
1096 WLAN_LOG_ERROR("Failed to retrieve Prism2 Card SN\n");
1097 goto failed;
1098 }
1099
1100 /* Collect the MAC address */
1101 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_CNFOWNMACADDR,
1102 wlandev->netdev->dev_addr, WLAN_ADDR_LEN);
1103 if ( result != 0 ) {
1104 WLAN_LOG_ERROR("Failed to retrieve mac address\n");
1105 goto failed;
1106 }
1107
1108 /* short preamble is always implemented */
1109 wlandev->nsdcaps |= P80211_NSDCAP_SHORT_PREAMBLE;
1110
1111 /* find out if hardware wep is implemented */
1112 hfa384x_drvr_getconfig16(hw, HFA384x_RID_PRIVACYOPTIMP, &temp);
1113 if (temp)
1114 wlandev->nsdcaps |= P80211_NSDCAP_HARDWAREWEP;
1115
1116 /* get the dBm Scaling constant */
1117 hfa384x_drvr_getconfig16(hw, HFA384x_RID_CNFDBMADJUST, &temp);
1118 hw->dbmadjust = temp;
1119
1120 /* Only enable scan by default on newer firmware */
1121 if (HFA384x_FIRMWARE_VERSION(hw->ident_sta_fw.major,
1122 hw->ident_sta_fw.minor,
1123 hw->ident_sta_fw.variant) <
1124 HFA384x_FIRMWARE_VERSION(1,5,5)) {
1125 wlandev->nsdcaps |= P80211_NSDCAP_NOSCAN;
1126 }
1127
1128 /* TODO: Set any internally managed config items */
1129
1130 goto done;
1131failed:
1132 WLAN_LOG_ERROR("Failed, result=%d\n", result);
1133done:
1134 DBFEXIT;
1135 return result;
1136}
1137
1138
1139/*----------------------------------------------------------------
1140* prism2sta_globalsetup
1141*
1142* Set any global RIDs that we want to set at device activation.
1143*
1144* Arguments:
1145* wlandev wlan device structure
1146*
1147* Returns:
1148* 0 success
1149* >0 f/w reported error
1150* <0 driver reported error
1151*
1152* Side effects:
1153*
1154* Call context:
1155* process thread
1156----------------------------------------------------------------*/
1157static int prism2sta_globalsetup(wlandevice_t *wlandev)
1158{
1159 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1160
1161 /* Set the maximum frame size */
1162 return hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFMAXDATALEN,
1163 WLAN_DATA_MAXLEN);
1164}
1165
1166static int prism2sta_setmulticast(wlandevice_t *wlandev, netdevice_t *dev)
1167{
1168 int result = 0;
1169 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1170
1171 UINT16 promisc;
1172
1173 DBFENTER;
1174
1175 /* If we're not ready, what's the point? */
1176 if ( hw->state != HFA384x_STATE_RUNNING )
1177 goto exit;
1178
1179 /* If we're an AP, do nothing here */
1180 if (hw->ap)
1181 goto exit;
1182
1183 if ( (dev->flags & (IFF_PROMISC | IFF_ALLMULTI)) != 0 )
1184 promisc = P80211ENUM_truth_true;
1185 else
1186 promisc = P80211ENUM_truth_false;
1187
1188 result = hfa384x_drvr_setconfig16_async(hw, HFA384x_RID_PROMISCMODE, promisc);
1189
1190 /* XXX TODO: configure the multicast list */
1191 // CLEAR_HW_MULTICAST_LIST
1192 // struct dev_mc_list element = dev->mc_list;
1193 // while (element != null) {
1194 // HW_ADD_MULTICAST_ADDR(element->dmi_addr, dmi_addrlen)
1195 // element = element->next;
1196 // }
1197
1198 exit:
1199 DBFEXIT;
1200 return result;
1201}
1202
1203/*----------------------------------------------------------------
1204* prism2sta_inf_handover
1205*
1206* Handles the receipt of a Handover info frame. Should only be present
1207* in APs only.
1208*
1209* Arguments:
1210* wlandev wlan device structure
1211* inf ptr to info frame (contents in hfa384x order)
1212*
1213* Returns:
1214* nothing
1215*
1216* Side effects:
1217*
1218* Call context:
1219* interrupt
1220----------------------------------------------------------------*/
1221static void prism2sta_inf_handover(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf)
1222{
1223 DBFENTER;
1224 WLAN_LOG_DEBUG(2,"received infoframe:HANDOVER (unhandled)\n");
1225 DBFEXIT;
1226 return;
1227}
1228
1229
1230/*----------------------------------------------------------------
1231* prism2sta_inf_tallies
1232*
1233* Handles the receipt of a CommTallies info frame.
1234*
1235* Arguments:
1236* wlandev wlan device structure
1237* inf ptr to info frame (contents in hfa384x order)
1238*
1239* Returns:
1240* nothing
1241*
1242* Side effects:
1243*
1244* Call context:
1245* interrupt
1246----------------------------------------------------------------*/
1247static void prism2sta_inf_tallies(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf)
1248{
1249 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1250 UINT16 *src16;
1251 UINT32 *dst;
1252 UINT32 *src32;
1253 int i;
1254 int cnt;
1255
1256 DBFENTER;
1257
1258 /*
1259 ** Determine if these are 16-bit or 32-bit tallies, based on the
1260 ** record length of the info record.
1261 */
1262
1263 cnt = sizeof(hfa384x_CommTallies32_t) / sizeof(UINT32);
1264 if (inf->framelen > 22) {
1265 dst = (UINT32 *) &hw->tallies;
1266 src32 = (UINT32 *) &inf->info.commtallies32;
1267 for (i = 0; i < cnt; i++, dst++, src32++)
1268 *dst += hfa384x2host_32(*src32);
1269 } else {
1270 dst = (UINT32 *) &hw->tallies;
1271 src16 = (UINT16 *) &inf->info.commtallies16;
1272 for (i = 0; i < cnt; i++, dst++, src16++)
1273 *dst += hfa384x2host_16(*src16);
1274 }
1275
1276 DBFEXIT;
1277
1278 return;
1279}
1280
1281/*----------------------------------------------------------------
1282* prism2sta_inf_scanresults
1283*
1284* Handles the receipt of a Scan Results info frame.
1285*
1286* Arguments:
1287* wlandev wlan device structure
1288* inf ptr to info frame (contents in hfa384x order)
1289*
1290* Returns:
1291* nothing
1292*
1293* Side effects:
1294*
1295* Call context:
1296* interrupt
1297----------------------------------------------------------------*/
1298static void prism2sta_inf_scanresults(wlandevice_t *wlandev,
1299 hfa384x_InfFrame_t *inf)
1300{
1301
1302 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1303 int nbss;
1304 hfa384x_ScanResult_t *sr = &(inf->info.scanresult);
1305 int i;
1306 hfa384x_JoinRequest_data_t joinreq;
1307 int result;
1308 DBFENTER;
1309
1310 /* Get the number of results, first in bytes, then in results */
1311 nbss = (inf->framelen * sizeof(UINT16)) -
1312 sizeof(inf->infotype) -
1313 sizeof(inf->info.scanresult.scanreason);
1314 nbss /= sizeof(hfa384x_ScanResultSub_t);
1315
1316 /* Print em */
1317 WLAN_LOG_DEBUG(1,"rx scanresults, reason=%d, nbss=%d:\n",
1318 inf->info.scanresult.scanreason, nbss);
1319 for ( i = 0; i < nbss; i++) {
1320 WLAN_LOG_DEBUG(1, "chid=%d anl=%d sl=%d bcnint=%d\n",
1321 sr->result[i].chid,
1322 sr->result[i].anl,
1323 sr->result[i].sl,
1324 sr->result[i].bcnint);
1325 WLAN_LOG_DEBUG(1, " capinfo=0x%04x proberesp_rate=%d\n",
1326 sr->result[i].capinfo,
1327 sr->result[i].proberesp_rate);
1328 }
1329 /* issue a join request */
1330 joinreq.channel = sr->result[0].chid;
1331 memcpy( joinreq.bssid, sr->result[0].bssid, WLAN_BSSID_LEN);
1332 result = hfa384x_drvr_setconfig( hw,
1333 HFA384x_RID_JOINREQUEST,
1334 &joinreq, HFA384x_RID_JOINREQUEST_LEN);
1335 if (result) {
1336 WLAN_LOG_ERROR("setconfig(joinreq) failed, result=%d\n", result);
1337 }
1338
1339 DBFEXIT;
1340 return;
1341}
1342
1343/*----------------------------------------------------------------
1344* prism2sta_inf_hostscanresults
1345*
1346* Handles the receipt of a Scan Results info frame.
1347*
1348* Arguments:
1349* wlandev wlan device structure
1350* inf ptr to info frame (contents in hfa384x order)
1351*
1352* Returns:
1353* nothing
1354*
1355* Side effects:
1356*
1357* Call context:
1358* interrupt
1359----------------------------------------------------------------*/
1360static void prism2sta_inf_hostscanresults(wlandevice_t *wlandev,
1361 hfa384x_InfFrame_t *inf)
1362{
1363 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1364 int nbss;
1365 DBFENTER;
1366
1367 nbss = (inf->framelen - 3) / 32;
1368 WLAN_LOG_DEBUG(1, "Received %d hostscan results\n", nbss);
1369
1370 if (nbss > 32)
1371 nbss = 32;
1372
1373 if (hw->scanresults)
1374 kfree(hw->scanresults);
1375
1376 hw->scanresults = kmalloc(sizeof(hfa384x_InfFrame_t), GFP_ATOMIC);
1377 memcpy(hw->scanresults, inf, sizeof(hfa384x_InfFrame_t));
1378
1379 if (nbss == 0)
1380 nbss = -1;
1381
1382 /* Notify/wake the sleeping caller. */
1383 hw->scanflag = nbss;
1384 wake_up_interruptible(&hw->cmdq);
1385
1386 DBFEXIT;
1387};
1388
1389/*----------------------------------------------------------------
1390* prism2sta_inf_chinforesults
1391*
1392* Handles the receipt of a Channel Info Results info frame.
1393*
1394* Arguments:
1395* wlandev wlan device structure
1396* inf ptr to info frame (contents in hfa384x order)
1397*
1398* Returns:
1399* nothing
1400*
1401* Side effects:
1402*
1403* Call context:
1404* interrupt
1405----------------------------------------------------------------*/
1406static void prism2sta_inf_chinforesults(wlandevice_t *wlandev,
1407 hfa384x_InfFrame_t *inf)
1408{
1409 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1410 unsigned int i, n;
1411
1412 DBFENTER;
1413 hw->channel_info.results.scanchannels =
1414 hfa384x2host_16(inf->info.chinforesult.scanchannels);
1415#if 0
1416 memcpy(&inf->info.chinforesult, &hw->channel_info.results, sizeof(hfa384x_ChInfoResult_t));
1417#endif
1418
1419 for (i=0, n=0; i<HFA384x_CHINFORESULT_MAX; i++) {
1420 if (hw->channel_info.results.scanchannels & (1<<i)) {
1421 int channel=hfa384x2host_16(inf->info.chinforesult.result[n].chid)-1;
1422 hfa384x_ChInfoResultSub_t *chinforesult=&hw->channel_info.results.result[channel];
1423 chinforesult->chid = channel;
1424 chinforesult->anl = hfa384x2host_16(inf->info.chinforesult.result[n].anl);
1425 chinforesult->pnl = hfa384x2host_16(inf->info.chinforesult.result[n].pnl);
1426 chinforesult->active = hfa384x2host_16(inf->info.chinforesult.result[n].active);
1427 WLAN_LOG_DEBUG(2, "chinfo: channel %d, %s level (avg/peak)=%d/%d dB, pcf %d\n",
1428 channel+1,
1429 chinforesult->active &
1430 HFA384x_CHINFORESULT_BSSACTIVE ? "signal" : "noise",
1431 chinforesult->anl, chinforesult->pnl,
1432 chinforesult->active & HFA384x_CHINFORESULT_PCFACTIVE ? 1 : 0
1433 );
1434 n++;
1435 }
1436 }
1437 atomic_set(&hw->channel_info.done, 2);
1438
1439 hw->channel_info.count = n;
1440 DBFEXIT;
1441 return;
1442}
1443
1444void prism2sta_processing_defer(struct work_struct *data)
1445{
1446 hfa384x_t *hw = container_of(data, struct hfa384x, link_bh);
1447 wlandevice_t *wlandev = hw->wlandev;
1448 hfa384x_bytestr32_t ssid;
1449 int result;
1450
1451 DBFENTER;
1452 /* First let's process the auth frames */
1453 {
1454 struct sk_buff *skb;
1455 hfa384x_InfFrame_t *inf;
1456
1457 while ( (skb = skb_dequeue(&hw->authq)) ) {
1458 inf = (hfa384x_InfFrame_t *) skb->data;
1459 prism2sta_inf_authreq_defer(wlandev, inf);
1460 }
1461
1462 }
1463
1464 /* Now let's handle the linkstatus stuff */
1465 if (hw->link_status == hw->link_status_new)
1466 goto failed;
1467
1468 hw->link_status = hw->link_status_new;
1469
1470 switch(hw->link_status) {
1471 case HFA384x_LINK_NOTCONNECTED:
1472 /* I'm currently assuming that this is the initial link
1473 * state. It should only be possible immediately
1474 * following an Enable command.
1475 * Response:
1476 * Block Transmits, Ignore receives of data frames
1477 */
1478 netif_carrier_off(wlandev->netdev);
1479
1480 WLAN_LOG_INFO("linkstatus=NOTCONNECTED (unhandled)\n");
1481 break;
1482
1483 case HFA384x_LINK_CONNECTED:
1484 /* This one indicates a successful scan/join/auth/assoc.
1485 * When we have the full MLME complement, this event will
1486 * signify successful completion of both mlme_authenticate
1487 * and mlme_associate. State management will get a little
1488 * ugly here.
1489 * Response:
1490 * Indicate authentication and/or association
1491 * Enable Transmits, Receives and pass up data frames
1492 */
1493
1494 netif_carrier_on(wlandev->netdev);
1495
1496 /* If we are joining a specific AP, set our state and reset retries */
1497 if(hw->join_ap == 1)
1498 hw->join_ap = 2;
1499 hw->join_retries = 60;
1500
1501 /* Don't call this in monitor mode */
1502 if ( wlandev->netdev->type == ARPHRD_ETHER ) {
1503 UINT16 portstatus;
1504
1505 WLAN_LOG_INFO("linkstatus=CONNECTED\n");
1506
1507 /* For non-usb devices, we can use the sync versions */
1508 /* Collect the BSSID, and set state to allow tx */
1509
1510 result = hfa384x_drvr_getconfig(hw,
1511 HFA384x_RID_CURRENTBSSID,
1512 wlandev->bssid, WLAN_BSSID_LEN);
1513 if ( result ) {
1514 WLAN_LOG_DEBUG(1,
1515 "getconfig(0x%02x) failed, result = %d\n",
1516 HFA384x_RID_CURRENTBSSID, result);
1517 goto failed;
1518 }
1519
1520 result = hfa384x_drvr_getconfig(hw,
1521 HFA384x_RID_CURRENTSSID,
1522 &ssid, sizeof(ssid));
1523 if ( result ) {
1524 WLAN_LOG_DEBUG(1,
1525 "getconfig(0x%02x) failed, result = %d\n",
1526 HFA384x_RID_CURRENTSSID, result);
1527 goto failed;
1528 }
1529 prism2mgmt_bytestr2pstr((hfa384x_bytestr_t *)&ssid,
1530 (p80211pstrd_t *) &wlandev->ssid);
1531
1532 /* Collect the port status */
1533 result = hfa384x_drvr_getconfig16(hw,
1534 HFA384x_RID_PORTSTATUS, &portstatus);
1535 if ( result ) {
1536 WLAN_LOG_DEBUG(1,
1537 "getconfig(0x%02x) failed, result = %d\n",
1538 HFA384x_RID_PORTSTATUS, result);
1539 goto failed;
1540 }
1541 wlandev->macmode =
1542 (portstatus == HFA384x_PSTATUS_CONN_IBSS) ?
1543 WLAN_MACMODE_IBSS_STA : WLAN_MACMODE_ESS_STA;
1544
1545 /* Get the ball rolling on the comms quality stuff */
1546 prism2sta_commsqual_defer(&hw->commsqual_bh);
1547 }
1548 break;
1549
1550 case HFA384x_LINK_DISCONNECTED:
1551 /* This one indicates that our association is gone. We've
1552 * lost connection with the AP and/or been disassociated.
1553 * This indicates that the MAC has completely cleared it's
1554 * associated state. We * should send a deauth indication
1555 * (implying disassoc) up * to the MLME.
1556 * Response:
1557 * Indicate Deauthentication
1558 * Block Transmits, Ignore receives of data frames
1559 */
1560 if(hw->join_ap == 2)
1561 {
1562 hfa384x_JoinRequest_data_t joinreq;
1563 joinreq = hw->joinreq;
1564 /* Send the join request */
1565 hfa384x_drvr_setconfig( hw,
1566 HFA384x_RID_JOINREQUEST,
1567 &joinreq, HFA384x_RID_JOINREQUEST_LEN);
1568 WLAN_LOG_INFO("linkstatus=DISCONNECTED (re-submitting join)\n");
1569 } else {
1570 if (wlandev->netdev->type == ARPHRD_ETHER)
1571 WLAN_LOG_INFO("linkstatus=DISCONNECTED (unhandled)\n");
1572 }
1573 wlandev->macmode = WLAN_MACMODE_NONE;
1574
1575 netif_carrier_off(wlandev->netdev);
1576
1577 break;
1578
1579 case HFA384x_LINK_AP_CHANGE:
1580 /* This one indicates that the MAC has decided to and
1581 * successfully completed a change to another AP. We
1582 * should probably implement a reassociation indication
1583 * in response to this one. I'm thinking that the the
1584 * p80211 layer needs to be notified in case of
1585 * buffering/queueing issues. User mode also needs to be
1586 * notified so that any BSS dependent elements can be
1587 * updated.
1588 * associated state. We * should send a deauth indication
1589 * (implying disassoc) up * to the MLME.
1590 * Response:
1591 * Indicate Reassociation
1592 * Enable Transmits, Receives and pass up data frames
1593 */
1594 WLAN_LOG_INFO("linkstatus=AP_CHANGE\n");
1595
1596 result = hfa384x_drvr_getconfig(hw,
1597 HFA384x_RID_CURRENTBSSID,
1598 wlandev->bssid, WLAN_BSSID_LEN);
1599 if ( result ) {
1600 WLAN_LOG_DEBUG(1,
1601 "getconfig(0x%02x) failed, result = %d\n",
1602 HFA384x_RID_CURRENTBSSID, result);
1603 goto failed;
1604 }
1605
1606 result = hfa384x_drvr_getconfig(hw,
1607 HFA384x_RID_CURRENTSSID,
1608 &ssid, sizeof(ssid));
1609 if ( result ) {
1610 WLAN_LOG_DEBUG(1,
1611 "getconfig(0x%02x) failed, result = %d\n",
1612 HFA384x_RID_CURRENTSSID, result);
1613 goto failed;
1614 }
1615 prism2mgmt_bytestr2pstr((hfa384x_bytestr_t *)&ssid,
1616 (p80211pstrd_t *) &wlandev->ssid);
1617
1618
1619 hw->link_status = HFA384x_LINK_CONNECTED;
1620 netif_carrier_on(wlandev->netdev);
1621
1622 break;
1623
1624 case HFA384x_LINK_AP_OUTOFRANGE:
1625 /* This one indicates that the MAC has decided that the
1626 * AP is out of range, but hasn't found a better candidate
1627 * so the MAC maintains its "associated" state in case
1628 * we get back in range. We should block transmits and
1629 * receives in this state. Do we need an indication here?
1630 * Probably not since a polling user-mode element would
1631 * get this status from from p2PortStatus(FD40). What about
1632 * p80211?
1633 * Response:
1634 * Block Transmits, Ignore receives of data frames
1635 */
1636 WLAN_LOG_INFO("linkstatus=AP_OUTOFRANGE (unhandled)\n");
1637
1638 netif_carrier_off(wlandev->netdev);
1639
1640 break;
1641
1642 case HFA384x_LINK_AP_INRANGE:
1643 /* This one indicates that the MAC has decided that the
1644 * AP is back in range. We continue working with our
1645 * existing association.
1646 * Response:
1647 * Enable Transmits, Receives and pass up data frames
1648 */
1649 WLAN_LOG_INFO("linkstatus=AP_INRANGE\n");
1650
1651 hw->link_status = HFA384x_LINK_CONNECTED;
1652 netif_carrier_on(wlandev->netdev);
1653
1654 break;
1655
1656 case HFA384x_LINK_ASSOCFAIL:
1657 /* This one is actually a peer to CONNECTED. We've
1658 * requested a join for a given SSID and optionally BSSID.
1659 * We can use this one to indicate authentication and
1660 * association failures. The trick is going to be
1661 * 1) identifying the failure, and 2) state management.
1662 * Response:
1663 * Disable Transmits, Ignore receives of data frames
1664 */
1665 if(hw->join_ap && --hw->join_retries > 0)
1666 {
1667 hfa384x_JoinRequest_data_t joinreq;
1668 joinreq = hw->joinreq;
1669 /* Send the join request */
1670 hfa384x_drvr_setconfig( hw,
1671 HFA384x_RID_JOINREQUEST,
1672 &joinreq, HFA384x_RID_JOINREQUEST_LEN);
1673 WLAN_LOG_INFO("linkstatus=ASSOCFAIL (re-submitting join)\n");
1674 } else {
1675 WLAN_LOG_INFO("linkstatus=ASSOCFAIL (unhandled)\n");
1676 }
1677
1678 netif_carrier_off(wlandev->netdev);
1679
1680 break;
1681
1682 default:
1683 /* This is bad, IO port problems? */
1684 WLAN_LOG_WARNING(
1685 "unknown linkstatus=0x%02x\n", hw->link_status);
1686 goto failed;
1687 break;
1688 }
1689
1690 wlandev->linkstatus = (hw->link_status == HFA384x_LINK_CONNECTED);
1691#ifdef WIRELESS_EXT
1692 p80211wext_event_associated(wlandev, wlandev->linkstatus);
1693#endif
1694
1695 failed:
1696 DBFEXIT;
1697}
1698
1699/*----------------------------------------------------------------
1700* prism2sta_inf_linkstatus
1701*
1702* Handles the receipt of a Link Status info frame.
1703*
1704* Arguments:
1705* wlandev wlan device structure
1706* inf ptr to info frame (contents in hfa384x order)
1707*
1708* Returns:
1709* nothing
1710*
1711* Side effects:
1712*
1713* Call context:
1714* interrupt
1715----------------------------------------------------------------*/
1716static void prism2sta_inf_linkstatus(wlandevice_t *wlandev,
1717 hfa384x_InfFrame_t *inf)
1718{
1719 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1720
1721 DBFENTER;
1722
1723 hw->link_status_new = hfa384x2host_16(inf->info.linkstatus.linkstatus);
1724
1725 schedule_work(&hw->link_bh);
1726
1727 DBFEXIT;
1728 return;
1729}
1730
1731/*----------------------------------------------------------------
1732* prism2sta_inf_assocstatus
1733*
1734* Handles the receipt of an Association Status info frame. Should
1735* be present in APs only.
1736*
1737* Arguments:
1738* wlandev wlan device structure
1739* inf ptr to info frame (contents in hfa384x order)
1740*
1741* Returns:
1742* nothing
1743*
1744* Side effects:
1745*
1746* Call context:
1747* interrupt
1748----------------------------------------------------------------*/
1749static void prism2sta_inf_assocstatus(wlandevice_t *wlandev,
1750 hfa384x_InfFrame_t *inf)
1751{
1752 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1753 hfa384x_AssocStatus_t rec;
1754 int i;
1755
1756 DBFENTER;
1757
1758 memcpy(&rec, &inf->info.assocstatus, sizeof(rec));
1759 rec.assocstatus = hfa384x2host_16(rec.assocstatus);
1760 rec.reason = hfa384x2host_16(rec.reason);
1761
1762 /*
1763 ** Find the address in the list of authenticated stations. If it wasn't
1764 ** found, then this address has not been previously authenticated and
1765 ** something weird has happened if this is anything other than an
1766 ** "authentication failed" message. If the address was found, then
1767 ** set the "associated" flag for that station, based on whether the
1768 ** station is associating or losing its association. Something weird
1769 ** has also happened if we find the address in the list of authenticated
1770 ** stations but we are getting an "authentication failed" message.
1771 */
1772
1773 for (i = 0; i < hw->authlist.cnt; i++)
1774 if (memcmp(rec.sta_addr, hw->authlist.addr[i], WLAN_ADDR_LEN) == 0)
1775 break;
1776
1777 if (i >= hw->authlist.cnt) {
1778 if (rec.assocstatus != HFA384x_ASSOCSTATUS_AUTHFAIL)
1779 WLAN_LOG_WARNING("assocstatus info frame received for non-authenticated station.\n");
1780 } else {
1781 hw->authlist.assoc[i] =
1782 (rec.assocstatus == HFA384x_ASSOCSTATUS_STAASSOC ||
1783 rec.assocstatus == HFA384x_ASSOCSTATUS_REASSOC);
1784
1785 if (rec.assocstatus == HFA384x_ASSOCSTATUS_AUTHFAIL)
1786 WLAN_LOG_WARNING("authfail assocstatus info frame received for authenticated station.\n");
1787 }
1788
1789 DBFEXIT;
1790
1791 return;
1792}
1793
1794/*----------------------------------------------------------------
1795* prism2sta_inf_authreq
1796*
1797* Handles the receipt of an Authentication Request info frame. Should
1798* be present in APs only.
1799*
1800* Arguments:
1801* wlandev wlan device structure
1802* inf ptr to info frame (contents in hfa384x order)
1803*
1804* Returns:
1805* nothing
1806*
1807* Side effects:
1808*
1809* Call context:
1810* interrupt
1811*
1812----------------------------------------------------------------*/
1813static void prism2sta_inf_authreq(wlandevice_t *wlandev,
1814 hfa384x_InfFrame_t *inf)
1815{
1816 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1817 struct sk_buff *skb;
1818
1819 DBFENTER;
1820
1821 skb = dev_alloc_skb(sizeof(*inf));
1822 if (skb) {
1823 skb_put(skb, sizeof(*inf));
1824 memcpy(skb->data, inf, sizeof(*inf));
1825 skb_queue_tail(&hw->authq, skb);
1826 schedule_work(&hw->link_bh);
1827 }
1828
1829 DBFEXIT;
1830}
1831
1832static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev,
1833 hfa384x_InfFrame_t *inf)
1834{
1835 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
1836 hfa384x_authenticateStation_data_t rec;
1837
1838 int i, added, result, cnt;
1839 UINT8 *addr;
1840
1841 DBFENTER;
1842
1843 /*
1844 ** Build the AuthenticateStation record. Initialize it for denying
1845 ** authentication.
1846 */
1847
1848 memcpy(rec.address, inf->info.authreq.sta_addr, WLAN_ADDR_LEN);
1849 rec.status = P80211ENUM_status_unspec_failure;
1850
1851 /*
1852 ** Authenticate based on the access mode.
1853 */
1854
1855 switch (hw->accessmode) {
1856 case WLAN_ACCESS_NONE:
1857
1858 /*
1859 ** Deny all new authentications. However, if a station
1860 ** is ALREADY authenticated, then accept it.
1861 */
1862
1863 for (i = 0; i < hw->authlist.cnt; i++)
1864 if (memcmp(rec.address, hw->authlist.addr[i],
1865 WLAN_ADDR_LEN) == 0) {
1866 rec.status = P80211ENUM_status_successful;
1867 break;
1868 }
1869
1870 break;
1871
1872 case WLAN_ACCESS_ALL:
1873
1874 /*
1875 ** Allow all authentications.
1876 */
1877
1878 rec.status = P80211ENUM_status_successful;
1879 break;
1880
1881 case WLAN_ACCESS_ALLOW:
1882
1883 /*
1884 ** Only allow the authentication if the MAC address
1885 ** is in the list of allowed addresses.
1886 **
1887 ** Since this is the interrupt handler, we may be here
1888 ** while the access list is in the middle of being
1889 ** updated. Choose the list which is currently okay.
1890 ** See "prism2mib_priv_accessallow()" for details.
1891 */
1892
1893 if (hw->allow.modify == 0) {
1894 cnt = hw->allow.cnt;
1895 addr = hw->allow.addr[0];
1896 } else {
1897 cnt = hw->allow.cnt1;
1898 addr = hw->allow.addr1[0];
1899 }
1900
1901 for (i = 0; i < cnt; i++, addr += WLAN_ADDR_LEN)
1902 if (memcmp(rec.address, addr, WLAN_ADDR_LEN) == 0) {
1903 rec.status = P80211ENUM_status_successful;
1904 break;
1905 }
1906
1907 break;
1908
1909 case WLAN_ACCESS_DENY:
1910
1911 /*
1912 ** Allow the authentication UNLESS the MAC address is
1913 ** in the list of denied addresses.
1914 **
1915 ** Since this is the interrupt handler, we may be here
1916 ** while the access list is in the middle of being
1917 ** updated. Choose the list which is currently okay.
1918 ** See "prism2mib_priv_accessdeny()" for details.
1919 */
1920
1921 if (hw->deny.modify == 0) {
1922 cnt = hw->deny.cnt;
1923 addr = hw->deny.addr[0];
1924 } else {
1925 cnt = hw->deny.cnt1;
1926 addr = hw->deny.addr1[0];
1927 }
1928
1929 rec.status = P80211ENUM_status_successful;
1930
1931 for (i = 0; i < cnt; i++, addr += WLAN_ADDR_LEN)
1932 if (memcmp(rec.address, addr, WLAN_ADDR_LEN) == 0) {
1933 rec.status = P80211ENUM_status_unspec_failure;
1934 break;
1935 }
1936
1937 break;
1938 }
1939
1940 /*
1941 ** If the authentication is okay, then add the MAC address to the list
1942 ** of authenticated stations. Don't add the address if it is already in
1943 ** the list. (802.11b does not seem to disallow a station from issuing
1944 ** an authentication request when the station is already authenticated.
1945 ** Does this sort of thing ever happen? We might as well do the check
1946 ** just in case.)
1947 */
1948
1949 added = 0;
1950
1951 if (rec.status == P80211ENUM_status_successful) {
1952 for (i = 0; i < hw->authlist.cnt; i++)
1953 if (memcmp(rec.address, hw->authlist.addr[i], WLAN_ADDR_LEN) == 0)
1954 break;
1955
1956 if (i >= hw->authlist.cnt) {
1957 if (hw->authlist.cnt >= WLAN_AUTH_MAX) {
1958 rec.status = P80211ENUM_status_ap_full;
1959 } else {
1960 memcpy(hw->authlist.addr[hw->authlist.cnt],
1961 rec.address, WLAN_ADDR_LEN);
1962 hw->authlist.cnt++;
1963 added = 1;
1964 }
1965 }
1966 }
1967
1968 /*
1969 ** Send back the results of the authentication. If this doesn't work,
1970 ** then make sure to remove the address from the authenticated list if
1971 ** it was added.
1972 */
1973
1974 rec.status = host2hfa384x_16(rec.status);
1975 rec.algorithm = inf->info.authreq.algorithm;
1976
1977 result = hfa384x_drvr_setconfig(hw, HFA384x_RID_AUTHENTICATESTA,
1978 &rec, sizeof(rec));
1979 if (result) {
1980 if (added) hw->authlist.cnt--;
1981 WLAN_LOG_ERROR("setconfig(authenticatestation) failed, result=%d\n", result);
1982 }
1983
1984 DBFEXIT;
1985
1986 return;
1987}
1988
1989
1990/*----------------------------------------------------------------
1991* prism2sta_inf_psusercnt
1992*
1993* Handles the receipt of a PowerSaveUserCount info frame. Should
1994* be present in APs only.
1995*
1996* Arguments:
1997* wlandev wlan device structure
1998* inf ptr to info frame (contents in hfa384x order)
1999*
2000* Returns:
2001* nothing
2002*
2003* Side effects:
2004*
2005* Call context:
2006* interrupt
2007----------------------------------------------------------------*/
2008static void prism2sta_inf_psusercnt(wlandevice_t *wlandev,
2009 hfa384x_InfFrame_t *inf)
2010{
2011 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
2012
2013 DBFENTER;
2014
2015 hw->psusercount = hfa384x2host_16(inf->info.psusercnt.usercnt);
2016
2017 DBFEXIT;
2018
2019 return;
2020}
2021
2022/*----------------------------------------------------------------
2023* prism2sta_ev_dtim
2024*
2025* Handles the DTIM early warning event.
2026*
2027* Arguments:
2028* wlandev wlan device structure
2029*
2030* Returns:
2031* nothing
2032*
2033* Side effects:
2034*
2035* Call context:
2036* interrupt
2037----------------------------------------------------------------*/
2038void prism2sta_ev_dtim(wlandevice_t *wlandev)
2039{
2040#if 0
2041 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
2042#endif
2043 DBFENTER;
2044 WLAN_LOG_DEBUG(3, "DTIM event, currently unhandled.\n");
2045 DBFEXIT;
2046 return;
2047}
2048
2049
2050/*----------------------------------------------------------------
2051* prism2sta_ev_infdrop
2052*
2053* Handles the InfDrop event.
2054*
2055* Arguments:
2056* wlandev wlan device structure
2057*
2058* Returns:
2059* nothing
2060*
2061* Side effects:
2062*
2063* Call context:
2064* interrupt
2065----------------------------------------------------------------*/
2066void prism2sta_ev_infdrop(wlandevice_t *wlandev)
2067{
2068#if 0
2069 hfa384x_t *hw = (hfa384x_t *)wlandev->priv;
2070#endif
2071 DBFENTER;
2072 WLAN_LOG_DEBUG(3, "Info frame dropped due to card mem low.\n");
2073 DBFEXIT;
2074 return;
2075}
2076
2077
2078/*----------------------------------------------------------------
2079* prism2sta_ev_info
2080*
2081* Handles the Info event.
2082*
2083* Arguments:
2084* wlandev wlan device structure
2085* inf ptr to a generic info frame
2086*
2087* Returns:
2088* nothing
2089*
2090* Side effects:
2091*
2092* Call context:
2093* interrupt
2094----------------------------------------------------------------*/
2095void prism2sta_ev_info(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf)
2096{
2097 DBFENTER;
2098 inf->infotype = hfa384x2host_16(inf->infotype);
2099 /* Dispatch */
2100 switch ( inf->infotype ) {
2101 case HFA384x_IT_HANDOVERADDR:
2102 prism2sta_inf_handover(wlandev, inf);
2103 break;
2104 case HFA384x_IT_COMMTALLIES:
2105 prism2sta_inf_tallies(wlandev, inf);
2106 break;
2107 case HFA384x_IT_HOSTSCANRESULTS:
2108 prism2sta_inf_hostscanresults(wlandev, inf);
2109 break;
2110 case HFA384x_IT_SCANRESULTS:
2111 prism2sta_inf_scanresults(wlandev, inf);
2112 break;
2113 case HFA384x_IT_CHINFORESULTS:
2114 prism2sta_inf_chinforesults(wlandev, inf);
2115 break;
2116 case HFA384x_IT_LINKSTATUS:
2117 prism2sta_inf_linkstatus(wlandev, inf);
2118 break;
2119 case HFA384x_IT_ASSOCSTATUS:
2120 prism2sta_inf_assocstatus(wlandev, inf);
2121 break;
2122 case HFA384x_IT_AUTHREQ:
2123 prism2sta_inf_authreq(wlandev, inf);
2124 break;
2125 case HFA384x_IT_PSUSERCNT:
2126 prism2sta_inf_psusercnt(wlandev, inf);
2127 break;
2128 case HFA384x_IT_KEYIDCHANGED:
2129 WLAN_LOG_WARNING("Unhandled IT_KEYIDCHANGED\n");
2130 break;
2131 case HFA384x_IT_ASSOCREQ:
2132 WLAN_LOG_WARNING("Unhandled IT_ASSOCREQ\n");
2133 break;
2134 case HFA384x_IT_MICFAILURE:
2135 WLAN_LOG_WARNING("Unhandled IT_MICFAILURE\n");
2136 break;
2137 default:
2138 WLAN_LOG_WARNING(
2139 "Unknown info type=0x%02x\n", inf->infotype);
2140 break;
2141 }
2142 DBFEXIT;
2143 return;
2144}
2145
2146
2147/*----------------------------------------------------------------
2148* prism2sta_ev_txexc
2149*
2150* Handles the TxExc event. A Transmit Exception event indicates
2151* that the MAC's TX process was unsuccessful - so the packet did
2152* not get transmitted.
2153*
2154* Arguments:
2155* wlandev wlan device structure
2156* status tx frame status word
2157*
2158* Returns:
2159* nothing
2160*
2161* Side effects:
2162*
2163* Call context:
2164* interrupt
2165----------------------------------------------------------------*/
2166void prism2sta_ev_txexc(wlandevice_t *wlandev, UINT16 status)
2167{
2168 DBFENTER;
2169
2170 WLAN_LOG_DEBUG(3, "TxExc status=0x%x.\n", status);
2171
2172 DBFEXIT;
2173 return;
2174}
2175
2176
2177/*----------------------------------------------------------------
2178* prism2sta_ev_tx
2179*
2180* Handles the Tx event.
2181*
2182* Arguments:
2183* wlandev wlan device structure
2184* status tx frame status word
2185* Returns:
2186* nothing
2187*
2188* Side effects:
2189*
2190* Call context:
2191* interrupt
2192----------------------------------------------------------------*/
2193void prism2sta_ev_tx(wlandevice_t *wlandev, UINT16 status)
2194{
2195 DBFENTER;
2196 WLAN_LOG_DEBUG(4, "Tx Complete, status=0x%04x\n", status);
2197 /* update linux network stats */
2198 wlandev->linux_stats.tx_packets++;
2199 DBFEXIT;
2200 return;
2201}
2202
2203
2204/*----------------------------------------------------------------
2205* prism2sta_ev_rx
2206*
2207* Handles the Rx event.
2208*
2209* Arguments:
2210* wlandev wlan device structure
2211*
2212* Returns:
2213* nothing
2214*
2215* Side effects:
2216*
2217* Call context:
2218* interrupt
2219----------------------------------------------------------------*/
2220void prism2sta_ev_rx(wlandevice_t *wlandev, struct sk_buff *skb)
2221{
2222 DBFENTER;
2223
2224 p80211netdev_rx(wlandev, skb);
2225
2226 DBFEXIT;
2227 return;
2228}
2229
2230/*----------------------------------------------------------------
2231* prism2sta_ev_alloc
2232*
2233* Handles the Alloc event.
2234*
2235* Arguments:
2236* wlandev wlan device structure
2237*
2238* Returns:
2239* nothing
2240*
2241* Side effects:
2242*
2243* Call context:
2244* interrupt
2245----------------------------------------------------------------*/
2246void prism2sta_ev_alloc(wlandevice_t *wlandev)
2247{
2248 DBFENTER;
2249
2250 p80211netdev_wake_queue(wlandev);
2251
2252 DBFEXIT;
2253 return;
2254}
2255
2256#if (WLAN_HOSTIF == WLAN_PLX || WLAN_HOSTIF == WLAN_PCI)
2257#ifdef CONFIG_PM
2258static int prism2sta_suspend_pci(struct pci_dev *pdev, pm_message_t state)
2259{
2260 wlandevice_t *wlandev;
2261
2262 wlandev = (wlandevice_t *) pci_get_drvdata(pdev);
2263
2264 /* reset hardware */
2265 if (wlandev) {
2266 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
2267 p80211_suspend(wlandev);
2268 }
2269
2270 // call a netif_device_detach(wlandev->netdev) ?
2271
2272 return 0;
2273}
2274
2275static int prism2sta_resume_pci (struct pci_dev *pdev)
2276{
2277 wlandevice_t *wlandev;
2278
2279 wlandev = (wlandevice_t *) pci_get_drvdata(pdev);
2280
2281 if (wlandev) {
2282 prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable);
2283 p80211_resume(wlandev);
2284 }
2285
2286 return 0;
2287}
2288#endif
2289#endif
2290
2291/*----------------------------------------------------------------
2292* create_wlan
2293*
2294* Called at module init time. This creates the wlandevice_t structure
2295* and initializes it with relevant bits.
2296*
2297* Arguments:
2298* none
2299*
2300* Returns:
2301* the created wlandevice_t structure.
2302*
2303* Side effects:
2304* also allocates the priv/hw structures.
2305*
2306* Call context:
2307* process thread
2308*
2309----------------------------------------------------------------*/
2310static wlandevice_t *create_wlan(void)
2311{
2312 wlandevice_t *wlandev = NULL;
2313 hfa384x_t *hw = NULL;
2314
2315 /* Alloc our structures */
2316 wlandev = kmalloc(sizeof(wlandevice_t), GFP_KERNEL);
2317 hw = kmalloc(sizeof(hfa384x_t), GFP_KERNEL);
2318
2319 if (!wlandev || !hw) {
2320 WLAN_LOG_ERROR("%s: Memory allocation failure.\n", dev_info);
2321 if (wlandev) kfree(wlandev);
2322 if (hw) kfree(hw);
2323 return NULL;
2324 }
2325
2326 /* Clear all the structs */
2327 memset(wlandev, 0, sizeof(wlandevice_t));
2328 memset(hw, 0, sizeof(hfa384x_t));
2329
2330 /* Initialize the network device object. */
2331 wlandev->nsdname = dev_info;
2332 wlandev->msdstate = WLAN_MSD_HWPRESENT_PENDING;
2333 wlandev->priv = hw;
2334 wlandev->open = prism2sta_open;
2335 wlandev->close = prism2sta_close;
2336 wlandev->reset = prism2sta_reset;
2337#ifdef CONFIG_PROC_FS
2338 wlandev->nsd_proc_read = prism2sta_proc_read;
2339#endif
2340 wlandev->txframe = prism2sta_txframe;
2341 wlandev->mlmerequest = prism2sta_mlmerequest;
2342 wlandev->set_multicast_list = prism2sta_setmulticast;
2343 wlandev->tx_timeout = hfa384x_tx_timeout;
2344
2345 wlandev->nsdcaps = P80211_NSDCAP_HWFRAGMENT |
2346 P80211_NSDCAP_AUTOJOIN;
2347
2348 /* Initialize the device private data stucture. */
2349 hw->dot11_desired_bss_type = 1;
2350
2351 return wlandev;
2352}
2353
2354#ifdef CONFIG_PROC_FS
2355static int
2356prism2sta_proc_read(
2357 char *page,
2358 char **start,
2359 off_t offset,
2360 int count,
2361 int *eof,
2362 void *data)
2363{
2364 char *p = page;
2365 wlandevice_t *wlandev = (wlandevice_t *) data;
2366 hfa384x_t *hw = (hfa384x_t *) wlandev->priv;
2367
2368 UINT16 hwtype = 0;
2369
2370 DBFENTER;
2371 if (offset != 0) {
2372 *eof = 1;
2373 goto exit;
2374 }
2375
2376 // XXX 0x0001 for prism2.5/3, 0x0000 for prism2.
2377 hwtype = BIT0;
2378
2379#if (WLAN_HOSTIF != WLAN_USB)
2380 if (hw->isram16)
2381 hwtype |= BIT1;
2382#endif
2383
2384#if (WLAN_HOSTIF == WLAN_PCI)
2385 hwtype |= BIT2;
2386#endif
2387
2388#define PRISM2_CVS_ID "$Id: prism2sta.c 1826 2007-03-19 15:37:00Z pizza $"
2389
2390 p += sprintf(p, "# %s version %s (%s) '%s'\n\n",
2391 dev_info,
2392 WLAN_RELEASE, WLAN_BUILD_DATE, PRISM2_CVS_ID);
2393
2394 p += sprintf(p, "# nic h/w: id=0x%02x %d.%d.%d\n",
2395 hw->ident_nic.id, hw->ident_nic.major,
2396 hw->ident_nic.minor, hw->ident_nic.variant);
2397
2398 p += sprintf(p, "# pri f/w: id=0x%02x %d.%d.%d\n",
2399 hw->ident_pri_fw.id, hw->ident_pri_fw.major,
2400 hw->ident_pri_fw.minor, hw->ident_pri_fw.variant);
2401
2402 if (hw->ident_sta_fw.id == 0x1f) {
2403 p += sprintf(p, "# sta f/w: id=0x%02x %d.%d.%d\n",
2404 hw->ident_sta_fw.id, hw->ident_sta_fw.major,
2405 hw->ident_sta_fw.minor, hw->ident_sta_fw.variant);
2406 } else {
2407 p += sprintf(p, "# ap f/w: id=0x%02x %d.%d.%d\n",
2408 hw->ident_sta_fw.id, hw->ident_sta_fw.major,
2409 hw->ident_sta_fw.minor, hw->ident_sta_fw.variant);
2410 }
2411
2412#if (WLAN_HOSTIF != WLAN_USB)
2413 p += sprintf(p, "# initial nic hw type, needed for SSF ramdl\n");
2414 p += sprintf(p, "initnichw=%04x\n", hwtype);
2415#endif
2416
2417 exit:
2418 DBFEXIT;
2419 return (p - page);
2420}
2421#endif
2422
2423void prism2sta_commsqual_defer(struct work_struct *data)
2424{
2425 hfa384x_t *hw = container_of(data, struct hfa384x, commsqual_bh);
2426 wlandevice_t *wlandev = hw->wlandev;
2427 hfa384x_bytestr32_t ssid;
2428 int result = 0;
2429
2430 DBFENTER;
2431
2432 if (hw->wlandev->hwremoved)
2433 goto done;
2434
2435 /* we don't care if we're in AP mode */
2436 if ((wlandev->macmode == WLAN_MACMODE_NONE) ||
2437 (wlandev->macmode == WLAN_MACMODE_ESS_AP)) {
2438 goto done;
2439 }
2440
2441 /* It only makes sense to poll these in non-IBSS */
2442 if (wlandev->macmode != WLAN_MACMODE_IBSS_STA) {
2443 result = hfa384x_drvr_getconfig(hw, HFA384x_RID_DBMCOMMSQUALITY,
2444 &hw->qual,
2445 HFA384x_RID_DBMCOMMSQUALITY_LEN);
2446
2447 if (result) {
2448 WLAN_LOG_ERROR("error fetching commsqual\n");
2449 goto done;
2450 }
2451
2452 // qual.CQ_currBSS; // link
2453 // ASL_currBSS; // level
2454 // qual.ANL_currFC; // noise
2455
2456 WLAN_LOG_DEBUG(3, "commsqual %d %d %d\n",
2457 hfa384x2host_16(hw->qual.CQ_currBSS),
2458 hfa384x2host_16(hw->qual.ASL_currBSS),
2459 hfa384x2host_16(hw->qual.ANL_currFC));
2460 }
2461
2462 /* Lastly, we need to make sure the BSSID didn't change on us */
2463 result = hfa384x_drvr_getconfig(hw,
2464 HFA384x_RID_CURRENTBSSID,
2465 wlandev->bssid, WLAN_BSSID_LEN);
2466 if ( result ) {
2467 WLAN_LOG_DEBUG(1,
2468 "getconfig(0x%02x) failed, result = %d\n",
2469 HFA384x_RID_CURRENTBSSID, result);
2470 goto done;
2471 }
2472
2473 result = hfa384x_drvr_getconfig(hw,
2474 HFA384x_RID_CURRENTSSID,
2475 &ssid, sizeof(ssid));
2476 if ( result ) {
2477 WLAN_LOG_DEBUG(1,
2478 "getconfig(0x%02x) failed, result = %d\n",
2479 HFA384x_RID_CURRENTSSID, result);
2480 goto done;
2481 }
2482 prism2mgmt_bytestr2pstr((hfa384x_bytestr_t *)&ssid,
2483 (p80211pstrd_t *) &wlandev->ssid);
2484
2485
2486 /* Reschedule timer */
2487 mod_timer(&hw->commsqual_timer, jiffies + HZ);
2488
2489 done:
2490 DBFEXIT;
2491}
2492
2493void prism2sta_commsqual_timer(unsigned long data)
2494{
2495 hfa384x_t *hw = (hfa384x_t *) data;
2496
2497 DBFENTER;
2498
2499 schedule_work(&hw->commsqual_bh);
2500
2501 DBFEXIT;
2502}
diff --git a/drivers/staging/wlan-ng/version.h b/drivers/staging/wlan-ng/version.h
new file mode 100644
index 00000000000..305f8823944
--- /dev/null
+++ b/drivers/staging/wlan-ng/version.h
@@ -0,0 +1,64 @@
1/* src/include/wlan/version.h
2*
3*
4* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
5* --------------------------------------------------------------------
6*
7* linux-wlan
8*
9* The contents of this file are subject to the Mozilla Public
10* License Version 1.1 (the "License"); you may not use this file
11* except in compliance with the License. You may obtain a copy of
12* the License at http://www.mozilla.org/MPL/
13*
14* Software distributed under the License is distributed on an "AS
15* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
16* implied. See the License for the specific language governing
17* rights and limitations under the License.
18*
19* Alternatively, the contents of this file may be used under the
20* terms of the GNU Public License version 2 (the "GPL"), in which
21* case the provisions of the GPL are applicable instead of the
22* above. If you wish to allow the use of your version of this file
23* only under the terms of the GPL and not to allow others to use
24* your version of this file under the MPL, indicate your decision
25* by deleting the provisions above and replace them with the notice
26* and other provisions required by the GPL. If you do not delete
27* the provisions above, a recipient may use your version of this
28* file under either the MPL or the GPL.
29*
30* --------------------------------------------------------------------
31*
32* Inquiries regarding the linux-wlan Open Source project can be
33* made directly to:
34*
35* AbsoluteValue Systems Inc.
36* info@linux-wlan.com
37* http://www.linux-wlan.com
38*
39* --------------------------------------------------------------------
40*
41* Portions of the development of this software were funded by
42* Intersil Corporation as part of PRISM(R) chipset product development.
43*
44* --------------------------------------------------------------------
45*/
46#ifndef _WLAN_VERSION_H
47#define _WLAN_VERSION_H
48#ifndef KERNEL_VERSION
49#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
50#endif
51
52/* WLAN_HOSTIF (generally set on the command line, not detected) */
53#define WLAN_NONE 0
54#define WLAN_PCMCIA 1
55#define WLAN_ISA 2
56#define WLAN_PCI 3
57#define WLAN_USB 4
58#define WLAN_PLX 5
59#define WLAN_SLAVE 6
60#define WLAN_RELEASE "0.2.8"
61#define WLAN_RELEASE_CODE 0x000208
62#define WLAN_BUILD_DATE "Thu Oct 2 11:04:42 PDT 2008"
63
64#endif
diff --git a/drivers/staging/wlan-ng/wlan_compat.h b/drivers/staging/wlan-ng/wlan_compat.h
new file mode 100644
index 00000000000..17026570708
--- /dev/null
+++ b/drivers/staging/wlan-ng/wlan_compat.h
@@ -0,0 +1,757 @@
1/* wlan_compat.h
2*
3* Types and macros to aid in portability
4*
5* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved.
6* --------------------------------------------------------------------
7*
8* linux-wlan
9*
10* The contents of this file are subject to the Mozilla Public
11* License Version 1.1 (the "License"); you may not use this file
12* except in compliance with the License. You may obtain a copy of
13* the License at http://www.mozilla.org/MPL/
14*
15* Software distributed under the License is distributed on an "AS
16* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17* implied. See the License for the specific language governing
18* rights and limitations under the License.
19*
20* Alternatively, the contents of this file may be used under the
21* terms of the GNU Public License version 2 (the "GPL"), in which
22* case the provisions of the GPL are applicable instead of the
23* above. If you wish to allow the use of your version of this file
24* only under the terms of the GPL and not to allow others to use
25* your version of this file under the MPL, indicate your decision
26* by deleting the provisions above and replace them with the notice
27* and other provisions required by the GPL. If you do not delete
28* the provisions above, a recipient may use your version of this
29* file under either the MPL or the GPL.
30*
31* --------------------------------------------------------------------
32*
33* Inquiries regarding the linux-wlan Open Source project can be
34* made directly to:
35*
36* AbsoluteValue Systems Inc.
37* info@linux-wlan.com
38* http://www.linux-wlan.com
39*
40* --------------------------------------------------------------------
41*
42* Portions of the development of this software were funded by
43* Intersil Corporation as part of PRISM(R) chipset product development.
44*
45* --------------------------------------------------------------------
46*/
47
48#ifndef _WLAN_COMPAT_H
49#define _WLAN_COMPAT_H
50
51/*=============================================================*/
52/*------ Establish Platform Identity --------------------------*/
53/*=============================================================*/
54/* Key macros: */
55/* WLAN_CPU_FAMILY */
56 #define WLAN_Ix86 1
57 #define WLAN_PPC 2
58 #define WLAN_Ix96 3
59 #define WLAN_ARM 4
60 #define WLAN_ALPHA 5
61 #define WLAN_MIPS 6
62 #define WLAN_HPPA 7
63 #define WLAN_SPARC 8
64 #define WLAN_SH 9
65 #define WLAN_x86_64 10
66/* WLAN_SYSARCH */
67 #define WLAN_PCAT 1
68 #define WLAN_MBX 2
69 #define WLAN_RPX 3
70 #define WLAN_LWARCH 4
71 #define WLAN_PMAC 5
72 #define WLAN_SKIFF 6
73 #define WLAN_BITSY 7
74 #define WLAN_ALPHAARCH 7
75 #define WLAN_MIPSARCH 9
76 #define WLAN_HPPAARCH 10
77 #define WLAN_SPARCARCH 11
78 #define WLAN_SHARCH 12
79
80/* Note: the PLX HOSTIF above refers to some vendors implementations for */
81/* PCI. It's a PLX chip that is a PCI to PCMCIA adapter, but it */
82/* isn't a real PCMCIA host interface adapter providing all the */
83/* card&socket services. */
84
85#if (defined(CONFIG_PPC) || defined(CONFIG_8xx) || defined(__powerpc__))
86#ifndef __ppc__
87#define __ppc__
88#endif
89#endif
90
91#if defined(__KERNEL__)
92
93#ifndef AUTOCONF_INCLUDED
94#include <linux/config.h>
95#endif
96
97#if defined(__x86_64__)
98 #define WLAN_CPU_FAMILY WLAN_x86_64
99 #define WLAN_SYSARCH WLAN_PCAT
100#elif defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__)
101 #define WLAN_CPU_FAMILY WLAN_Ix86
102 #define WLAN_SYSARCH WLAN_PCAT
103#elif defined(__ppc__)
104 #define WLAN_CPU_FAMILY WLAN_PPC
105 #if defined(CONFIG_MBX)
106 #define WLAN_SYSARCH WLAN_MBX
107 #elif defined(CONFIG_RPXLITE)
108 #define WLAN_SYSARCH WLAN_RPX
109 #elif defined(CONFIG_RPXCLASSIC)
110 #define WLAN_SYSARCH WLAN_RPX
111 #else
112 #define WLAN_SYSARCH WLAN_PMAC
113 #endif
114#elif defined(__arm__)
115 #define WLAN_CPU_FAMILY WLAN_ARM
116 #define WLAN_SYSARCH WLAN_SKIFF
117#elif defined(__alpha__)
118 #define WLAN_CPU_FAMILY WLAN_ALPHA
119 #define WLAN_SYSARCH WLAN_ALPHAARCH
120#elif defined(__mips__)
121 #define WLAN_CPU_FAMILY WLAN_MIPS
122 #define WLAN_SYSARCH WLAN_MIPSARCH
123#elif defined(__hppa__)
124 #define WLAN_CPU_FAMILY WLAN_HPPA
125 #define WLAN_SYSARCH WLAN_HPPAARCH
126#elif defined(__sparc__)
127 #define WLAN_CPU_FAMILY WLAN_SPARC
128 #define WLAN_SYSARCH WLAN_SPARC
129#elif defined(__sh__)
130 #define WLAN_CPU_FAMILY WLAN_SH
131 #define WLAN_SYSARCH WLAN_SHARCH
132 #ifndef __LITTLE_ENDIAN__
133 #define __LITTLE_ENDIAN__
134 #endif
135#else
136 #error "No CPU identified!"
137#endif
138#endif /* __KERNEL__ */
139
140/*
141 Some big endian machines implicitly do all I/O in little endian mode.
142
143 In particular:
144 Linux/PPC on PowerMacs (PCI)
145 Arm/Intel Xscale (PCI)
146
147 This may also affect PLX boards and other BE &| PPC platforms;
148 as new ones are discovered, add them below.
149*/
150
151#if defined(WLAN_HOSTIF)
152#if ((WLAN_HOSTIF == WLAN_PCI) || (WLAN_HOSTIF == WLAN_PLX))
153#if ((WLAN_SYSARCH == WLAN_SKIFF) || (WLAN_SYSARCH == WLAN_PMAC) || (WLAN_SYSARCH == WLAN_SPARC))
154#define REVERSE_ENDIAN
155#endif
156#endif
157#endif
158
159/*=============================================================*/
160/*------ Bit settings -----------------------------------------*/
161/*=============================================================*/
162
163#define BIT0 0x00000001
164#define BIT1 0x00000002
165#define BIT2 0x00000004
166#define BIT3 0x00000008
167#define BIT4 0x00000010
168#define BIT5 0x00000020
169#define BIT6 0x00000040
170#define BIT7 0x00000080
171#define BIT8 0x00000100
172#define BIT9 0x00000200
173#define BIT10 0x00000400
174#define BIT11 0x00000800
175#define BIT12 0x00001000
176#define BIT13 0x00002000
177#define BIT14 0x00004000
178#define BIT15 0x00008000
179#define BIT16 0x00010000
180#define BIT17 0x00020000
181#define BIT18 0x00040000
182#define BIT19 0x00080000
183#define BIT20 0x00100000
184#define BIT21 0x00200000
185#define BIT22 0x00400000
186#define BIT23 0x00800000
187#define BIT24 0x01000000
188#define BIT25 0x02000000
189#define BIT26 0x04000000
190#define BIT27 0x08000000
191#define BIT28 0x10000000
192#define BIT29 0x20000000
193#define BIT30 0x40000000
194#define BIT31 0x80000000
195
196#include <linux/types.h>
197
198typedef u_int8_t UINT8;
199typedef u_int16_t UINT16;
200typedef u_int32_t UINT32;
201
202typedef int8_t INT8;
203typedef int16_t INT16;
204typedef int32_t INT32;
205
206typedef unsigned int UINT;
207typedef signed int INT;
208
209typedef u_int64_t UINT64;
210typedef int64_t INT64;
211
212#define UINT8_MAX (0xffUL)
213#define UINT16_MAX (0xffffUL)
214#define UINT32_MAX (0xffffffffUL)
215
216#define INT8_MAX (0x7fL)
217#define INT16_MAX (0x7fffL)
218#define INT32_MAX (0x7fffffffL)
219
220/*=============================================================*/
221/*------ Compiler Portability Macros --------------------------*/
222/*=============================================================*/
223#define __WLAN_ATTRIB_PACK__ __attribute__ ((packed))
224
225/*=============================================================*/
226/*------ OS Portability Macros --------------------------------*/
227/*=============================================================*/
228
229#ifndef WLAN_DBVAR
230#define WLAN_DBVAR wlan_debug
231#endif
232
233#ifndef KERNEL_VERSION
234#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
235#endif
236
237#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
238# if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,8))
239# include <linux/hardirq.h>
240# else
241# include <asm/hardirq.h>
242# endif
243#elif defined(__KERNEL__)
244# define PREEMPT_MASK (0x000000FFUL)
245# define preempt_count() (0UL)
246#endif
247
248#define WLAN_LOG_ERROR(x,args...) printk(KERN_ERR "%s: " x , __FUNCTION__ , ##args);
249
250#define WLAN_LOG_WARNING(x,args...) printk(KERN_WARNING "%s: " x , __FUNCTION__ , ##args);
251
252#define WLAN_LOG_NOTICE(x,args...) printk(KERN_NOTICE "%s: " x , __FUNCTION__ , ##args);
253
254#define WLAN_LOG_INFO(args... ) printk(KERN_INFO args)
255
256#if defined(WLAN_INCLUDE_DEBUG)
257 #define WLAN_ASSERT(c) if ((!(c)) && WLAN_DBVAR >= 1) { \
258 WLAN_LOG_DEBUG(1, "Assertion failure!\n"); }
259 #define WLAN_HEX_DUMP( l, x, p, n) if( WLAN_DBVAR >= (l) ){ \
260 int __i__; \
261 printk(KERN_DEBUG x ":"); \
262 for( __i__=0; __i__ < (n); __i__++) \
263 printk( " %02x", ((UINT8*)(p))[__i__]); \
264 printk("\n"); }
265 #define DBFENTER { if ( WLAN_DBVAR >= 5 ){ WLAN_LOG_DEBUG(3,"---->\n"); } }
266 #define DBFEXIT { if ( WLAN_DBVAR >= 5 ){ WLAN_LOG_DEBUG(3,"<----\n"); } }
267
268 #define WLAN_LOG_DEBUG(l,x,args...) if ( WLAN_DBVAR >= (l)) printk(KERN_DEBUG "%s(%lu): " x , __FUNCTION__, (preempt_count() & PREEMPT_MASK), ##args );
269#else
270 #define WLAN_ASSERT(c)
271 #define WLAN_HEX_DUMP( l, s, p, n)
272 #define DBFENTER
273 #define DBFEXIT
274
275 #define WLAN_LOG_DEBUG(l, s, args...)
276#endif
277
278#ifdef CONFIG_SMP
279#define __SMP__ 1
280#endif
281
282#if defined(__KERNEL__)
283
284#if ((LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)))
285#define URB_ONLY_CALLBACK
286#endif
287
288#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19))
289#define PT_REGS , struct pt_regs *regs
290#else
291#define PT_REGS
292#endif
293
294#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,7))
295# define del_singleshot_timer_sync(a) del_timer_sync(a)
296#endif
297
298#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,17))
299#define CONFIG_NETLINK 1
300#endif
301
302#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0))
303#define kfree_s(a, b) kfree((a))
304#endif
305
306#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,18))
307#ifndef init_waitqueue_head
308#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,16))
309#define init_waitqueue_head(p) (*(p) = NULL)
310#else
311#define init_waitqueue_head(p) init_waitqueue(p)
312#endif
313typedef struct wait_queue *wait_queue_head_t;
314typedef struct wait_queue wait_queue_t;
315#define set_current_state(b) { current->state = (b); mb(); }
316#define init_waitqueue_entry(a, b) { (a)->task = current; }
317#endif
318#endif
319
320#ifndef wait_event_interruptible_timeout
321// retval == 0; signal met; we're good.
322// retval < 0; interrupted by signal.
323// retval > 0; timed out.
324
325#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)) // fixme?
326
327#define __wait_event_interruptible_timeout(wq, condition, ret) \
328do { \
329 wait_queue_t __wait; \
330 init_waitqueue_entry(&__wait, current); \
331 \
332 add_wait_queue(&wq, &__wait); \
333 for (;;) { \
334 set_current_state(TASK_INTERRUPTIBLE); \
335 if (condition) \
336 break; \
337 if (!signal_pending(current)) { \
338 ret = schedule_timeout(ret) ; \
339 if (!ret) \
340 break; \
341 continue; \
342 } \
343 ret = -ERESTARTSYS; \
344 break; \
345 } \
346 set_current_state(TASK_RUNNING); \
347 remove_wait_queue(&wq, &__wait); \
348} while (0)
349
350#else // 2.2
351
352
353#define __wait_event_interruptible_timeout(wq, condition, ret) \
354do { \
355 struct wait_queue __wait; \
356 \
357 __wait.task = current; \
358 add_wait_queue(&wq, &__wait); \
359 for (;;) { \
360 current->state = TASK_INTERRUPTIBLE; \
361 if (condition) \
362 break; \
363 if (!signal_pending(current)) { \
364 ret = schedule_timeout(ret); \
365 if (!ret) \
366 break; \
367 continue; \
368 } \
369 ret = -ERESTARTSYS; \
370 break; \
371 } \
372 current->state = TASK_RUNNING; \
373 remove_wait_queue(&wq, &__wait); \
374} while (0)
375
376#endif // version >= 2.4
377
378#define wait_event_interruptible_timeout(wq, condition, timeout) \
379({ \
380 long __ret = timeout; \
381 if (!(condition)) \
382 __wait_event_interruptible_timeout(wq, condition, __ret); \
383 __ret; \
384})
385
386#endif
387
388#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20))
389#ifdef _LINUX_LIST_H
390
391static inline void list_move_tail(struct list_head *list,
392 struct list_head *head)
393{
394 __list_del(list->prev, list->next);
395 list_add_tail(list, head);
396}
397
398static inline void __list_splice(struct list_head *list,
399 struct list_head *head)
400{
401 struct list_head *first = list->next;
402 struct list_head *last = list->prev;
403 struct list_head *at = head->next;
404
405 first->prev = head;
406 head->next = first;
407
408 last->next = at;
409 at->prev = last;
410}
411
412static inline void list_move(struct list_head *list, struct list_head *head)
413{
414 __list_del(list->prev, list->next);
415 list_add(list, head);
416}
417
418static inline void list_splice_init(struct list_head *list,
419 struct list_head *head)
420{
421 if (!list_empty(list)) {
422 __list_splice(list, head);
423 INIT_LIST_HEAD(list);
424 }
425}
426
427
428#endif // LIST_H
429#endif
430
431#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,90))
432#define spin_lock(l) do { } while (0)
433#define spin_unlock(l) do { } while (0)
434#define spin_lock_irqsave(l,f) do { save_flags(f); cli(); } while (0)
435#define spin_unlock_irqrestore(l,f) do { restore_flags(f); } while (0)
436#define spin_lock_init(s) do { } while (0)
437#define spin_trylock(l) (1)
438typedef int spinlock_t;
439#endif
440
441#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) // XXX ???
442#define spin_lock_bh spin_lock
443#endif
444
445#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
446#ifdef CONFIG_SMP
447#define spin_is_locked(x) (*(volatile char *)(&(x)->lock) <= 0)
448#else
449#define spin_is_locked(l) (0)
450#endif
451#endif
452
453#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,28))
454#define __user
455#define __iomem
456#endif
457
458#ifdef _LINUX_PROC_FS_H
459#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,25))
460
461extern inline struct proc_dir_entry *
462create_proc_read_entry(const char *name, mode_t mode,
463 struct proc_dir_entry *base,
464 read_proc_t *read_proc, void *data)
465{
466 struct proc_dir_entry *res = create_proc_entry(name, mode, base);
467 if (res) {
468 res->read_proc = read_proc;
469 res->data = data;
470 }
471 return res;
472}
473#endif
474
475#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,29))
476#ifndef proc_mkdir
477#define proc_mkdir(name, root) create_proc_entry(name, S_IFDIR, root)
478#endif
479#endif
480#endif /* _LINUX_PROC_FS_H */
481
482#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
483#ifndef INIT_TQUEUE
484#define PREPARE_TQUEUE(_tq, _routine, _data) \
485 do { \
486 (_tq)->routine = _routine; \
487 (_tq)->data = _data; \
488 } while (0)
489#define INIT_TQUEUE(_tq, _routine, _data) \
490 do { \
491 INIT_LIST_HEAD(&(_tq)->list); \
492 (_tq)->sync = 0; \
493 PREPARE_TQUEUE((_tq), (_routine), (_data)); \
494 } while (0)
495#endif
496
497#ifndef container_of
498#define container_of(ptr, type, member) ({ \
499 const typeof( ((type *)0)->member ) *__mptr = (ptr); \
500 (type *)( (char *)__mptr - offsetof(type,member) );})
501#endif
502
503#ifndef INIT_WORK
504#define work_struct tq_struct
505
506#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
507#define schedule_work(a) queue_task(a, &tq_scheduler)
508#else
509#define schedule_work(a) schedule_task(a)
510#endif
511
512#define flush_scheduled_work flush_scheduled_tasks
513#define INIT_WORK2(_wq, _routine) INIT_TQUEUE(_wq, (void (*)(void *))_routine, _wq)
514#endif
515
516#else // >= 2.5 kernel
517
518#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
519#define INIT_WORK2(_wq, _routine) INIT_WORK(_wq, (void (*)(void *))_routine, _wq)
520#else
521#define INIT_WORK2(_wq, _routine) INIT_WORK(_wq, _routine)
522#endif
523
524#endif // >= 2.5 kernel
525
526#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38))
527typedef struct device netdevice_t;
528#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,4))
529typedef struct net_device netdevice_t;
530#else
531#undef netdevice_t
532typedef struct net_device netdevice_t;
533#endif
534
535#ifdef WIRELESS_EXT
536#if (WIRELESS_EXT < 13)
537struct iw_request_info
538{
539 __u16 cmd; /* Wireless Extension command */
540 __u16 flags; /* More to come ;-) */
541};
542#endif
543#endif
544
545
546#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,18))
547#define MODULE_PARM(a,b) extern int __bogus_decl
548#define MODULE_AUTHOR(a) extern int __bogus_decl
549#define MODULE_DESCRIPTION(a) extern int __bogus_decl
550#define MODULE_SUPPORTED_DEVICE(a) extern int __bogus_decl
551#undef GET_USE_COUNT
552#define GET_USE_COUNT(m) mod_use_count_
553#endif
554
555#ifndef MODULE_OWNER
556#define MODULE_OWNER(a) extern int __bogus_decl
557#define ANCIENT_MODULE_CODE
558#endif
559
560#ifndef MODULE_LICENSE
561#define MODULE_LICENSE(m) extern int __bogus_decl
562#endif
563
564/* TODO: Do we care about this? */
565#ifndef MODULE_DEVICE_TABLE
566#define MODULE_DEVICE_TABLE(foo,bar)
567#endif
568
569#define wlan_minutes2ticks(a) ((a)*(wlan_ticks_per_sec * 60))
570#define wlan_seconds2ticks(a) ((a)*(wlan_ticks_per_sec))
571
572#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,47))
573#define NEW_MODULE_CODE
574#ifdef ANCIENT_MODULE_CODE
575#undef ANCIENT_MODULE_CODE
576#endif
577#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,25))
578#define module_param(name, type, perm) \
579 static inline void *__check_existence_##name(void) { return &name; } \
580 MODULE_PARM(name, _MODULE_PARM_STRING_ ## type)
581
582#define _MODULE_PARM_STRING_byte "b"
583#define _MODULE_PARM_STRING_short "h"
584#define _MODULE_PARM_STRING_ushort "h"
585#define _MODULE_PARM_STRING_int "i"
586#define _MODULE_PARM_STRING_uint "i"
587#define _MODULE_PARM_STRING_long "l"
588#define _MODULE_PARM_STRING_ulong "l"
589#define _MODULE_PARM_STRING_bool "i"
590#endif
591
592/* linux < 2.5.69 */
593#ifndef IRQ_NONE
594typedef void irqreturn_t;
595#define IRQ_NONE
596#define IRQ_HANDLED
597#define IRQ_RETVAL(x)
598#endif
599
600#ifndef in_atomic
601#define in_atomic() 0
602#endif
603
604#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13))
605#define URB_ASYNC_UNLINK 0
606#endif
607
608#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,7))
609#define URB_ASYNC_UNLINK USB_ASYNC_UNLINK
610#define usb_fill_bulk_urb FILL_BULK_URB
611#define usb_kill_urb usb_unlink_urb
612#else
613#define USB_QUEUE_BULK 0
614#endif
615
616#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,11))
617typedef u32 pm_message_t;
618#endif
619
620#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9))
621#define hotplug_path "/etc/hotplug/wlan.agent"
622#endif
623
624#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
625#define free_netdev(x) kfree(x)
626#endif
627
628#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9))
629#define eth_hdr(x) (x)->mac.ethernet
630#endif
631
632#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
633#define del_timer_sync(a) del_timer(a)
634#endif
635
636#ifndef might_sleep
637#define might_sleep(a) do { } while (0)
638#endif
639
640/* Apparently 2.4.2 ethtool is quite different, maybe newer too? */
641#if (defined(SIOETHTOOL) && !defined(ETHTOOL_GDRVINFO))
642#undef SIOETHTOOL
643#endif
644
645// pcmcia-cs stuff
646#if ((LINUX_VERSION_CODE < KERNEL_VERSION(2,5,68)) && \
647 !defined(pcmcia_access_configuration_register))
648#define pcmcia_access_configuration_register(handle, reg) \
649 CardServices(AccessConfigurationRegister, handle, reg)
650#define pcmcia_register_client(handle, reg) \
651 CardServices(RegisterClient, handle, reg)
652#define pcmcia_deregister_client(handle) \
653 CardServices(DeregisterClient, handle)
654#define pcmcia_get_first_tuple(handle, tuple) \
655 CardServices(GetFirstTuple, handle, tuple)
656#define pcmcia_get_next_tuple(handle, tuple) \
657 CardServices(GetNextTuple, handle, tuple)
658#define pcmcia_get_tuple_data(handle, tuple) \
659 CardServices(GetTupleData, handle, tuple)
660#define pcmcia_parse_tuple(handle, tuple, parse) \
661 CardServices(ParseTuple, handle, tuple, parse)
662#define pcmcia_get_configuration_info(handle, config) \
663 CardServices(GetConfigurationInfo, handle, config)
664#define pcmcia_request_io(handle, req) \
665 CardServices(RequestIO, handle, req)
666#define pcmcia_request_irq(handle, req) \
667 CardServices(RequestIRQ, handle, req)
668#define pcmcia_request_configuration(handle, req) \
669 CardServices(RequestConfiguration, handle, req)
670#define pcmcia_release_configuration(handle) \
671 CardServices(ReleaseConfiguration, handle)
672#define pcmcia_release_io(handle, req) \
673 CardServices(ReleaseIO, handle, req)
674#define pcmcia_release_irq(handle, req) \
675 CardServices(ReleaseIRQ, handle, req)
676#define pcmcia_release_window(win) \
677 CardServices(ReleaseWindow, win)
678#define pcmcia_get_card_services_info(info) \
679 CardServices(GetCardServicesInfo, info)
680#define pcmcia_report_error(handle, err) \
681 CardServices(ReportError, handle, err)
682#endif
683
684#endif /* __KERNEL__ */
685
686/*=============================================================*/
687/*------ Hardware Portability Macros --------------------------*/
688/*=============================================================*/
689
690#define ieee2host16(n) __le16_to_cpu(n)
691#define ieee2host32(n) __le32_to_cpu(n)
692#define host2ieee16(n) __cpu_to_le16(n)
693#define host2ieee32(n) __cpu_to_le32(n)
694
695#if (WLAN_CPU_FAMILY != WLAN_MIPS)
696typedef UINT32 phys_t;
697#endif
698
699#if (WLAN_CPU_FAMILY == WLAN_PPC)
700 #define wlan_inw(a) in_be16((unsigned short *)((a)+_IO_BASE))
701 #define wlan_inw_le16_to_cpu(a) inw((a))
702 #define wlan_outw(v,a) out_be16((unsigned short *)((a)+_IO_BASE), (v))
703 #define wlan_outw_cpu_to_le16(v,a) outw((v),(a))
704#else
705 #define wlan_inw(a) inw((a))
706 #define wlan_inw_le16_to_cpu(a) __cpu_to_le16(inw((a)))
707 #define wlan_outw(v,a) outw((v),(a))
708 #define wlan_outw_cpu_to_le16(v,a) outw(__cpu_to_le16((v)),(a))
709#endif
710
711/*=============================================================*/
712/*--- General Macros ------------------------------------------*/
713/*=============================================================*/
714
715#define wlan_max(a, b) (((a) > (b)) ? (a) : (b))
716#define wlan_min(a, b) (((a) < (b)) ? (a) : (b))
717
718#define wlan_isprint(c) (((c) > (0x19)) && ((c) < (0x7f)))
719
720#define wlan_hexchar(x) (((x) < 0x0a) ? ('0' + (x)) : ('a' + ((x) - 0x0a)))
721
722/* Create a string of printable chars from something that might not be */
723/* It's recommended that the str be 4*len + 1 bytes long */
724#define wlan_mkprintstr(buf, buflen, str, strlen) \
725{ \
726 int i = 0; \
727 int j = 0; \
728 memset(str, 0, (strlen)); \
729 for (i = 0; i < (buflen); i++) { \
730 if ( wlan_isprint((buf)[i]) ) { \
731 (str)[j] = (buf)[i]; \
732 j++; \
733 } else { \
734 (str)[j] = '\\'; \
735 (str)[j+1] = 'x'; \
736 (str)[j+2] = wlan_hexchar(((buf)[i] & 0xf0) >> 4); \
737 (str)[j+3] = wlan_hexchar(((buf)[i] & 0x0f)); \
738 j += 4; \
739 } \
740 } \
741}
742
743/*=============================================================*/
744/*--- Variables -----------------------------------------------*/
745/*=============================================================*/
746
747#ifdef WLAN_INCLUDE_DEBUG
748extern int wlan_debug;
749#endif
750
751extern int wlan_ethconv; /* What's the default ethconv? */
752
753/*=============================================================*/
754/*--- Functions -----------------------------------------------*/
755/*=============================================================*/
756#endif /* _WLAN_COMPAT_H */
757
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 6803318fa2e..5a566b705ca 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -265,6 +265,7 @@ extern enum system_states {
265#define TAINT_DIE 7 265#define TAINT_DIE 7
266#define TAINT_OVERRIDDEN_ACPI_TABLE 8 266#define TAINT_OVERRIDDEN_ACPI_TABLE 8
267#define TAINT_WARN 9 267#define TAINT_WARN 9
268#define TAINT_CRAP 10
268 269
269extern void dump_stack(void) __cold; 270extern void dump_stack(void) __cold;
270 271
diff --git a/kernel/module.c b/kernel/module.c
index b7205f67cfa..25bc9ac9e22 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1834,6 +1834,7 @@ static noinline struct module *load_module(void __user *umod,
1834 Elf_Ehdr *hdr; 1834 Elf_Ehdr *hdr;
1835 Elf_Shdr *sechdrs; 1835 Elf_Shdr *sechdrs;
1836 char *secstrings, *args, *modmagic, *strtab = NULL; 1836 char *secstrings, *args, *modmagic, *strtab = NULL;
1837 char *staging;
1837 unsigned int i; 1838 unsigned int i;
1838 unsigned int symindex = 0; 1839 unsigned int symindex = 0;
1839 unsigned int strindex = 0; 1840 unsigned int strindex = 0;
@@ -1989,6 +1990,14 @@ static noinline struct module *load_module(void __user *umod,
1989 goto free_hdr; 1990 goto free_hdr;
1990 } 1991 }
1991 1992
1993 staging = get_modinfo(sechdrs, infoindex, "staging");
1994 if (staging) {
1995 add_taint_module(mod, TAINT_CRAP);
1996 printk(KERN_WARNING "%s: module is from the staging directory,"
1997 " the quality is unknown, you have been warned.\n",
1998 mod->name);
1999 }
2000
1992 /* Now copy in args */ 2001 /* Now copy in args */
1993 args = strndup_user(uargs, ~0UL >> 1); 2002 args = strndup_user(uargs, ~0UL >> 1);
1994 if (IS_ERR(args)) { 2003 if (IS_ERR(args)) {
@@ -2587,6 +2596,8 @@ static char *module_flags(struct module *mod, char *buf)
2587 buf[bx++] = 'P'; 2596 buf[bx++] = 'P';
2588 if (mod->taints & (1 << TAINT_FORCED_MODULE)) 2597 if (mod->taints & (1 << TAINT_FORCED_MODULE))
2589 buf[bx++] = 'F'; 2598 buf[bx++] = 'F';
2599 if (mod->taints & (1 << TAINT_CRAP))
2600 buf[bx++] = 'C';
2590 /* 2601 /*
2591 * TAINT_FORCED_RMMOD: could be added. 2602 * TAINT_FORCED_RMMOD: could be added.
2592 * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't 2603 * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't
diff --git a/kernel/panic.c b/kernel/panic.c
index f290e8e866f..bda561ef3cd 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -161,6 +161,7 @@ static const struct tnt tnts[] = {
161 { TAINT_DIE, 'D', ' ' }, 161 { TAINT_DIE, 'D', ' ' },
162 { TAINT_OVERRIDDEN_ACPI_TABLE, 'A', ' ' }, 162 { TAINT_OVERRIDDEN_ACPI_TABLE, 'A', ' ' },
163 { TAINT_WARN, 'W', ' ' }, 163 { TAINT_WARN, 'W', ' ' },
164 { TAINT_CRAP, 'C', ' ' },
164}; 165};
165 166
166/** 167/**
@@ -175,6 +176,7 @@ static const struct tnt tnts[] = {
175 * 'U' - Userspace-defined naughtiness. 176 * 'U' - Userspace-defined naughtiness.
176 * 'A' - ACPI table overridden. 177 * 'A' - ACPI table overridden.
177 * 'W' - Taint on warning. 178 * 'W' - Taint on warning.
179 * 'C' - modules from drivers/staging are loaded.
178 * 180 *
179 * The string is overwritten by the next call to print_taint(). 181 * The string is overwritten by the next call to print_taint().
180 */ 182 */
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 8e0de6a5e18..88921611b22 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1726,6 +1726,14 @@ static void add_header(struct buffer *b, struct module *mod)
1726 buf_printf(b, "};\n"); 1726 buf_printf(b, "};\n");
1727} 1727}
1728 1728
1729void add_staging_flag(struct buffer *b, const char *name)
1730{
1731 static const char *staging_dir = "drivers/staging";
1732
1733 if (strncmp(staging_dir, name, strlen(staging_dir)) == 0)
1734 buf_printf(b, "\nMODULE_INFO(staging, \"Y\");\n");
1735}
1736
1729/** 1737/**
1730 * Record CRCs for unresolved symbols 1738 * Record CRCs for unresolved symbols
1731 **/ 1739 **/
@@ -2135,6 +2143,7 @@ int main(int argc, char **argv)
2135 buf.pos = 0; 2143 buf.pos = 0;
2136 2144
2137 add_header(&buf, mod); 2145 add_header(&buf, mod);
2146 add_staging_flag(&buf, mod->name);
2138 err |= add_versions(&buf, mod); 2147 err |= add_versions(&buf, mod);
2139 add_depends(&buf, mod, modules); 2148 add_depends(&buf, mod, modules);
2140 add_moddevtable(&buf, mod); 2149 add_moddevtable(&buf, mod);